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.

 
  • Trackback are closed
  • Comments (2)
    • gl00mie
    • Ağustos 29th, 2010 12:37pm

    extended range uses X++ syntax, not SQL, so the range should be
    ‘((ExchangeNoteDocType != %1) && (ExchangeNoteDocType != %2))’