İki Query ile fatch örneği

Bir fatch örneği paylaşıyorum.
FDInventTransDim tablosu datasourcta group by yapılmış şekilde mevcut
Fatch metodumuza bakalım
public boolean fetch()
{
boolean                                        ret;
Query                                            q;
QueryRun                                    qRun;
FDInventTransDim                 fDInventTransDim;
FDInventTransDim                 tmpFDInventTransDim;
QueryBuildDataSource          qBd,qbdsTmp;
QueryBuildRange                     qBr,qbrTmp;
Query                                            qTmp;
QueryRun                                    qRunTmp;
;
ret = true;  //super();
q = element.query();
qTmp = new Query(q);
qbdsTmp = qTmp.dataSourceTable(tablenum(FDInventTransDim));
qbdsTmp.addSelectionField(fieldnum(FDInventTransDim,Qty),SelectionField::Sum);
//ikinci bir qyery oluşturuyoruz çünki datasourctan gelen kriterleri ona atamak istiyoruz
qbd = q.dataSourceTable(tablenum(FDInventTransDim));
qBr = qBd.addRange(fieldnum(FDInventTransDim,DatePhysical));
qBr.value(queryRange(startDate,endDate));
// başlangıç ve bitiş tarihlerine göre kriter veriyoruz
qRun = new QueryRun(q);
while(qRun.next())
{
FDInventTransDim = qRun.get(tablenum(FDInventTransDim));
//  findOrCreateRange ile birinci quetydeki 4 alanın değeri ikinci query e atıyoruz
SysQuery::findOrCreateRange(qbdsTmp,fieldnum(FDInventTransDim,ItemId)).value(SysQuery::value(FDInventTransDim.ItemId));
SysQuery::findOrCreateRange(qbdsTmp,fieldnum(FDInventTransDim,InventSiteId)).value(SysQuery::value(FDInventTransDim.InventSiteId));
SysQuery::findOrCreateRange(qbdsTmp,fieldnum(FDInventTransDim,InventBatchId)).value(SysQuery::value(FDInventTransDim.InventBatchId));
SysQuery::findOrCreateRange(qbdsTmp,fieldnum(FDInventTransDim,InventLocationId)).value(SysQuery::value(FDInventTransDim.InventLocationId));
qbrTmp = SysQuery::findOrCreateRange(qbdsTmp,fieldnum(FDInventTransDim,DatePhysical));
// tarihten önceki toplamı buluyoruz
qbrTmp.value(SysQuery::valueUnlimited());
qbrTmp.value(strfmt(‘(DatePhysical < %1)’ , Date2StrXpp(FDInventTransDim.DatePhysical)));
qRunTmp = new QueryRun(qTmp);
onhand = 0;
while(qRunTmp.next())
{
tmpFDInventTransDim = qruntmp.get(tablenum(FDInventTransDim));
onhand +=tmpFDInventTransDim.Qty;
}
/ tarihteki toplamı buluyoruz
qbrTmp.value(SysQuery::valueUnlimited());
qbrTmp.value(queryValue(FDInventTransDim.DatePhysical));
qRunTmp = new QueryRun(qTmp);
outputQty = 0;
inputQty = 0;
while(qRunTmp.next())
{
tmpFDInventTransDim = qruntmp.get(tablenum(FDInventTransDim));
if(tmpFDInventTransDim.Qty <0)
outputQty +=tmpFDInventTransDim.Qty;
else
inputqty = tmpFDInventTransDim.Qty;
}
// Genel toplamı buluyoruz
total = onhand + inputqty + outputQty;
//En son satırımızı yazdırıyoruz.
element.send(FDInventTransDim);
}
return ret;
}
biraz karışık ancak çok  işe yarayabilecek bir örnek olduğunu düşünüyorum.
Selamlar.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Dijital Dönüşümünüzü AI İle Hızlandırın

Dynamics 365 ve AI destekli çözümlerle iş süreçlerinizi optimize edin, verinizi anlamlı içgörülere dönüştürün ve büyümenizi sürdürülebilir hale getirin.

AI-Ready Enterprise Partner

Microsoft Dynamics 365 ERP, CRM, Power Platform, Azure, Power BI ve yapay zekâ çözümlerini bir araya getirerek kurumsal sistemlerinizi güçlendirir, operasyonel karmaşıklığı azaltır ve geleceğe hazır bir dijital mimari tasarlarız.

DMR olarak Microsoft ekosisteminde Business Applications, Digital & App Innovation ve Data & AI alanlarındaki yetkinliklerimizle; ERP’den CRM’e, bulut çözümlerinden yapay zekâ uygulamalarına kadar uçtan uca dijital dönüşüm hizmetleri sunuyoruz.

Dynamics 365 Finance ve Supply Chain specialization uzmanlığımızı, Tier 1 CSP gücümüzle birleştirerek müşterilerimize danışmanlık, uygulama, lisanslama ve destek süreçlerinde bütünleşik bir hizmet modeli sağlıyoruz.

DMR Göztepe Merkez Ofis

Eğitim Mah. Hızırbey Cad. No:118/5 D:1 Kadıköy İstanbul

Marmara Üniversitesi Göztepe Kampüsü Teknopark

Tel: +90 216 470 79 49

E-posta: info@dmrbt.com

DMR Başıbüyük Ofis

Başıbüyük Mahallesi Süreyyapaşa Başıbüyük Yolu Sk. No: 4/7 Maltepe İstanbul

Marmara Üniversitesi Başıbüyük Kampüsü Teknopark

Tel: +90 216 470 79 49

E-posta: info@dmrbt.com