Показать сообщение отдельно
Старый 28.08.2010, 23:06   #1  
Blog bot is offline
Blog bot
Участник
 
25,643 / 848 (80) +++++++
Регистрация: 28.10.2006
fatihdemirci: Lookup’ta join ile query yazmak
Источник: http://www.fatihdemirci.net/index.ph...-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.

X++:
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 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

//dikkat edilmesi gereken bir kaç husus var  mesela Sql tek “=” karakteri kullanır eşit değil  için “<>” 

//  ve bunun gibi farkları gözönünde bulundurun yoksa bu kod niye çalışmıyor diye tırmalar durusunuz benim gibi
   

 qdbs.addRange(fieldnum(BankTransType,ExchangeNoteDocType)).value(strFmt( ((ExchangeNoteDocType <> %1) OR (ExchangeNoteDocType <> %)),
                                                       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.

Источник: http://www.fatihdemirci.net/index.ph...-query-yazmak/
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.