Lookup’ta join ile query yazmak
Merhaba
Axapta formlarında bir alanın lookup metodunu ezmek zorunda kalabilirsiniz.
Örneğimizde bir lookup metedu var. join ile query yazılıp kriter veriliyor.
static client void lookupPortfolioPromissory(FormStringControl _ctrl, CurrencyCode _filterStr)// para birimine göre farklı gelsin
{
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tablenum(BankAccountTable),_ctrl);
Query query = new Query();
QueryBuildDataSource queryBuildDataSource = query.addDataSource(tablenum(BankAccountTable)); // birinci tablomuz
QueryBuildDataSource qdbs;
;
sysTableLookup.addLookupfield(fieldnum(BankAccountTable,AccountId)); / lookup ta görünecek alanlar
sysTableLookup.addLookupfield(fieldnum(BankAccountTable,Name));
qdbs = queryBuildDataSource.addDataSource(tablenum(BankTransType)); // join edilecek tablomuz
qdbs.addLink(fieldnum(BankAccountTable , AssignedBankTransType ),fieldnum(BankTransType , BankTransType )); // burası aslında inner joini otomatik yapar
qdbs.joinMode(joinmode::InnerJoin); // burda farklı join tiplerini secebileceğinizi göstermek için yazdım
// strfmt ile query ye range vermek ile ilgili bir çok örnek mevcut burda enumda bulunan iki değerin dışında kalanlar gelsin demek istiyoruz
qdbs.addRange(fieldnum(BankTransType,ExchangeNoteDocType)).value(strFmt(‘ ((ExchangeNoteDocType != %1) &&(ExchangeNoteDocType != “%2″))’,
any2int( ExchangeNoteDocType::Cheque),any2int(ExchangeNoteDocType::PromissoryNotes )));
queryBuildDataSource.addRange(fieldnum(BankAccountTable,CurrencyCode)).value(_filterStr); // gönderilen para birimine göre kriter ekliyoruz
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}
Tabiki bu metodu tabloya yazdım formun ilgili alanının lookup metodunu ezip bu metodu çağırmanız gerek.
Selamlar.
extended range uses X++ syntax, not SQL, so the range should be
‘((ExchangeNoteDocType != %1) && (ExchangeNoteDocType != %2))’
thank you i changed the code.