24 Ağustos 2011 Çarşamba

AXAPTA Çoklu tablo ile lookup

SysTableLookup sınıfını kullanarak Axapta'nın kendi lookupunu ezip kendimize özel lookup yazabiliyoruz ve iki tabloyu birleştirebiliyoruz. Peki lookup ekranında 2. tablodan bir field göstermek istersek? Axapta standart SysTableLookup sınıfı bunu sağlamıyor. Ancak SysTableLookup'tan türetilmiş ve bunu sağlayan bir class var: SysMultiTableLookup.

Verdiğim linkten indirip kolayca kullanabilirsiniz. Aşağıda bir örnek kullanmını da verdim:


public void Agreementlookup(FormControl _formControl, str _filterStr)
{
SMAAgreementTable SMAagreementTable;
Query query = new Query();
SysMultiTableLookup sysTableLookup;
QueryBuildDataSource queryBuildDataSource = query.addDataSource(tablenum(SMAAgreementTable));
QueryBuildDataSource qbds2;
QueryBuildRange qbr;
;

qbds2=queryBuildDataSource.addDataSource(tablenum(B_AgreementCustomerTable));
qbds2.relations(true);

qbr=qbds2.addRange(fieldnum(B_AgreementCustomerTable, num));

qbr.value(strfmt('((Num == "%1") && (AccountCode == TableGroupAll::Table)) || (AccountCode == TableGroupAll::All)',
QueryValue(salesTable.CustAccount)));

sysTableLookup = SysMultiTableLookup::newParameters(_formControl,query);
sysTableLookup.addLookupfield(fieldnum(SMAAgreementTable, AgreementId),1);
sysTableLookup.addLookupfield(fieldnum(SMAAgreementTable, AgreementDescription),1);
sysTableLookup.addLookupfield(fieldnum(SMAAgreementTable, ProjId),1);
sysTableLookup.addLookupfield(fieldnum(B_AgreementCustomerTable, AccountCode),2);
sysTableLookup.addLookupfield(fieldnum(B_AgreementCustomerTable, Num),2);

sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}

Hiç yorum yok:

Yorum Gönder