Merhaba
Prompt ekranı bir query için kriter girme, sıralama ve gruplama gibi farklı işlemleri yapabileceğiniz çok esnek bir uygulamadır. Özellikle rapor ve formlarda çok kullanılan bu ekranı her ax kullanıcısının çok iyi bilmesi gerekir. Bizim bu yazıdaki konumuz Prompt ekranında herhangi bir veri kaynağı için dinamik olarak girilen kriterleri tespit edip başka bir query’e aktarmaktır.
Bunu şöyle bir jobta deneyebiliriz:
static void GetQueryPromtRangeValues(Args _args)
{
CustTable CustTable;
CustTable CustTable2;
int counter;
Query q;
QueryRun qRun;
QueryBuildRange qbr;
QueryBuildDataSource qbds;
Query q2;
QueryRun qRun2;
QueryBuildDataSource qbds2;
QueryBuildRange qbrGet;
QueryBuildDataSource qbdsGet;
;
// Birinci Query
q = new Query();
qbds = q.addDataSource(TableNum(CustTable));
qRun = new QueryRun(q);
// İkinci Query
q2 = new Query();
qbds2 = q2.addDataSource(TableNum(CustTable));
if(qRun.prompt())
{
// CustTable veri kaynağı için girilen kriterleri buluyoruz
qbdsGet = qRun.query().dataSourceTable(TableNum(CustTable));
counter = qbdsGet.rangeCount(); // Kaç adet kriter girilmiş tespit ettik
// Girilen kriterleri bir döngü kullanarak ikinci query ye ekliyoruz
while(counter >0)
{
qbrGet = qbdsGet.range(counter);
info(strfmt("%1 : %2 ",counter , qbrGet.value() ));
qbds2.addRange(qbrGet.field()).value(qbrGet.value());
counter--;
}
setPrefix("Asıl Query ile ");
while(qRun.next())
{
CustTable = qRun.get(TableNum(CustTable));
info(strfmt("%1 : %2 ", CustTable.AccountNum,CustTable.Name ));
}
}
// ikinci query için QueryRun oluşturuyoruz.
// Aynı kriterlerin eklendiğini promt ekranında görebiliyoruz
qRun2 = new QueryRun(q2);
setPrefix("İkinci Query ile ");
if(qRun2.prompt())
{
while(qRun2.next())
{
CustTable2 = qRun2.get(TableNum(CustTable));
info(strfmt("%1 : %2 ", CustTable2.AccountNum,CustTable2.Name ));
}
}
}
Selamlar.