本文发布的目的是想跟大家分享下在k3cloud中怎么通过方法查询自己想要的数据集合,废话少说,直接看方法:
第一种方法: 通过调用系统方法,也就是你把条件给它,剩下的事不用自己搞定,系统帮你搞了!
获取被选择的单据行的数据;
单据标识
主键
public DynamicObjectCollection GetQuerDate(string formid,string fid)
{
QueryBuilderParemeter par1 = new QueryBuilderParemeter();
par1.FormId=formid;
par1.FilterClauseWihtKey = " fid=" + fid ;
par1.SelectItems = SelectorItemInfo.CreateItems("FSERIALID", "FMATERIALID", "FENTRYID");
QueryBuilderParemeter par2 = par1;
return QueryServiceHelper.GetDynamicObjectCollection(this.Context, par2);
}
第二种方法:方法跟第一种类似
private DynamicObject[] Getquerydata(string formid, string fid)
{
FormMetadata metdata = (FormMetadata)MetaDataServiceHelper.Load(Context, formid, true);
QueryBuilderParemeter par2 = new QueryBuilderParemeter();
par2.FormId = metdata.BusinessInfo.GetForm().Id;
par2.FilterClauseWihtKey = " fid=" + fid;
QueryBuilderParemeter par = par2;
return BusinessDataServiceHelper.Load(Context, metdata.BusinessInfo.GetDynamicObjectType(), par);
}
第三种方法:这种需要自己拼接条件得到自己想要的结果集合;
public DynamicObjectCollection Getdata(string fmaterid,string fserialid)
{
StringBuilder str1 = new StringBuilder("/*dialect*/");
str1.AppendFormat(@"select top 1 FACCTGPRICE from ( select top 1 FBILLID,b.FBILLDATE,b.FBILLNO,b.FBILLFROMID,b.FACCTGPRICE,b.FQTY,b.FORDERNUMBER,STOCKDIM.FMATERIALID,lot.FNUMBER,tce.FNUMBER FCH,
row_number()over(partition by FMASTERID,tce.FNUMBER order by fbilldate desc) px,b.FBILLENTRYID,FMASTERID
from (select FACCTGID,FBILLDATE,FBILLNO,FBILLFROMID,FACCTGPRICE,FORDERNUMBER,FQTY,FDimeEntryId,FBILLENTRYID,FBILLID from V_HS_OutInStockSeq where FACCTGID>1) b
inner join (select FENTRYID,FMATERIALID,FLOT from T_HS_InivStockDimension where FENTRYID>1) STOCKDIM on b.FDimeEntryId = STOCKDIM.FENTRYID
left join (select FLOTID,isnull(FNUMBER,'') FNUMBER from T_BD_LOTMASTER where FLOTID>1) LOT on STOCKDIM.FLOT = LOT.FLOTID
left join (select FBILLENTRYID,FLOTID,FBILLFORMID,fbillno from T_BD_LOTMASTERBILLTRACE where FBILLENTRYID>1) tre on tre.FLOTID=STOCKDIM.FLOT and b.FBILLENTRYID=tre.FBILLENTRYID and b.FBILLFROMID=tre.FBILLFORMID and tre.fbillno=b.FBILLNO
left join ( select FBILLFORMID,FBILLENTRYID,fbillno,a.FSERIALID,ter.FNUMBER from T_BD_SERIALBILLTRACE a
left join T_BD_SERIALBILLTRACE_e b on a.FBILLTRACEID=b.FBILLTRACEID
left join (select FSERIALID,isnull(FNUMBER,'') FNUMBER from T_BD_SERIALMASTER where FSERIALID>1) ter on b.FSERIALID=ter.FSERIALID ) tce on tre.FBILLFORMID=tre.FBILLFORMID and tce.FBILLENTRYID=tre.FBILLENTRYID and tre.fbillno=tce.FBILLNO
left join T_BD_MATERIAL t on t.FMATERIALID=STOCKDIM.FMATERIALID
where b.FACCTGPRICE<>0 and t.FMASTERID={0} and tce.FSERIALID={1}) a where a.px=1", fmaterid, fserialid);
return DBUtils.ExecuteDynamicObject(this.Context, str1.ToString());
}