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:
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.
güzel bir nokta bir raporda bu yöntemi kullandım özellikle raporlarda çok esneklik sağlayabileceğini düşünüyorum teşkkürler.
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:)
Evet haklısın. Ax2012′de mantık değişti. Oan uygun bir örnek yapıp burayı güncelleyeceğim.
Teşekkürler hatırlatma için.