Skip links

Lookup’ta join ile query yazmak


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
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.

Opinions

  1. Post comment

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

    Permalink

Join the Discussion