Skip links

İki Query ile fatch örneği


Notice: Trying to access array offset on value of type bool in /var/www/vhosts/dmrbt.com/httpdocs/wp-content/themes/boo/rella/extensions/aq_resizer/aq_resizer.php on line 117

Notice: Trying to access array offset on value of type bool in /var/www/vhosts/dmrbt.com/httpdocs/wp-content/themes/boo/rella/extensions/aq_resizer/aq_resizer.php on line 118

Notice: Trying to access array offset on value of type bool in /var/www/vhosts/dmrbt.com/httpdocs/wp-content/themes/boo/rella/extensions/aq_resizer/aq_resizer.php on line 117

Notice: Trying to access array offset on value of type bool in /var/www/vhosts/dmrbt.com/httpdocs/wp-content/themes/boo/rella/extensions/aq_resizer/aq_resizer.php on line 118
İ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.

Join the Discussion