Fatih hocamın da dediği gibi Ax’ta kod yazmayı bilmektense kodun nereye yazılacağını bilmek daha önemlidir.
Koda ait gerçekler;
- Form:SalesTable > Datasources:SalesLine > ETGInventDimCombinationName (eklenmiş yeni alan) alanına yazıldı.
- Bu kod “InventDimCombination” madde boyutu birleşimleri tablosunu gösteren bir lookup açar.
- // DRT MK G240 20111020 bu şekilde notlar yazmanız daha sonra kodu hatırlamanız için çok faydalı olacaktır. DRT:firma MK:kodu yazan G240:geliştirme no ve tarih.
- sysTableLookup.addLookupfield(fieldnum(InventDimCombination, RecId), true); Bu koddaki “true” ifadesi seçim sonrası dönecek değeri belirtmek için kullanılır.
public void lookup(FormControl _formControl, str _filterStr) { Query query = new Query(); QueryBuildDataSource queryBuildDataSource; QueryBuildRange queryBuildRange; SysTableLookup sysTableLookup; ; //super(_formControl, _filterStr); sysTableLookup = SysTableLookup::newParameters(tablenum(InventDimCombination), _formControl); sysTableLookup.addLookupfield(fieldnum(InventDimCombination, Name)); sysTableLookup.addLookupfield(fieldnum(InventDimCombination, ItemId)); sysTableLookup.addLookupfield(fieldnum(InventDimCombination, ConfigId)); sysTableLookup.addLookupfield(fieldnum(InventDimCombination, InventSizeId)); // DRT MK G240 20111020 { sysTableLookup.addLookupMethod(tablemethodstr(InventDimCombination, inventSizeName)); // DRT MK } sysTableLookup.addLookupfield(fieldnum(InventDimCombination, InventColorId)); sysTableLookup.addLookupfield(fieldnum(InventDimCombination, RecId), true); queryBuildDataSource = query.addDataSource(tablenum(InventDimCombination)); if(_filterStr) if(!InventDimCombination::findName(_filterStr)) queryBuildDataSource.addRange(fieldnum(InventDimCombination, Name)).value(_filterStr); if(SalesLine.ItemId) { queryBuildRange = queryBuildDataSource.addRange(fieldnum(InventDimCombination, ItemId)); queryBuildRange.value(SalesLine.ItemId); } sysTableLookup.parmQuery(query); sysTableLookup.performFormLookup(); }
Bu kod ne yapar?
// DRT MK G240 20111020 { sysTableLookup.addLookupMethod(tablemethodstr(InventDimCombination, inventSizeName)); // DRT MK }
Lookup’a bir metod eklemek için kullanılır. Marka adını almak için kullandığımız display metod;
display Name inventSizeName() { return InventSize::find(this.InventSizeId, this.ItemId).Name; }
Bu kod ne yapar?
if(_filterStr) if(!InventDimCombination::findName(_filterStr)) queryBuildDataSource.addRange(fieldnum(InventDimCombination, Name)).value(_filterStr);
Bu kod ise alan girilen değeri filtre olarak eklemek kullanılır. Mesela MKP* yazıldığında bu değere göre lookup filterenmiş olarak açılır. İkinci “if” bloğu ise; seçimden sonra tekrar lookup’ı açtığında tek satır gelmesini engelliyor.