Skip links

Prompt ekranından girilen kriterleri başka bir query’e aktarmak


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
Prompt ekranından girilen kriterleri başka bir query’e aktarmak

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:
[sourcecode language=”csharp”]
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 ));
}
}
}
[/sourcecode]
Selamlar.

Opinions

  1. Post comment

    güzel bir nokta bir raporda bu yöntemi kullandım özellikle raporlarda çok esneklik sağlayabileceğini düşünüyorum teşkkürler.

    Permalink
  2. Post comment

    Ellerine sağlık Fatih Hocam.
    Fakat bir eksiğimiz var gibi.
    Filter’lar 2012 ‘de yeni geldiği için gözden kaçmış olabilir.
    Filter nesneleri range count ile gelmiyor ve değerlerine range ile ulaşamıyoruz.
    Küçük bir hatırlatma:)

    Permalink

Join the Discussion