Posts Tagged ‘ lookup

How to modify MainAccount Lookup in Segmented Entry Control

Hi

One of my friend asked me  “How can i modify MainAccount lookup in Segmented entry control?”. I did not know how to do that. After some research i found LedgerDimensionAccountController class which controls Segmented Entry Control.  After some working i found a method named restrictQueryForMainAccounts() .


public static void restrictQueryForMainAccounts(QueryBuildDataSource
                                             _queryBuildDataSource)
{
    QueryBuildRange qbr;
    //--> FD
    QueryBuildRange qbrFD;
    // <-- FD

    str evalCriteria = strFmt('(%1.Type != %2)',
        _queryBuildDataSource.name(),
        queryValue(enum2int(DimensionLedgerAccountType::Reporting)));
    ;

    qbr = _queryBuildDataSource.addRange(fieldNum(DimAttributeMainAccount, Type));
    qbr.value(evalCriteria);
    qbr.status(RangeStatus::Hidden);

    //--> FD
    qbrFD = _queryBuildDataSource.addRange(fieldNum(DimAttributeMainAccount, value));
    qbrFD.value("3*");
    // <-- FD
}

If you open segmented entry control and lookup mainAccount before modification of this method you can see all MainAccounts .

If you modify the method you can see only data starts with “3″ as you can see blow image.

It may not be the correct way to do this but it works. I dont recommend to do such a modification at framework classes. If you have to, be very careful.

Until next time.

AX 2012 ‘de lookup’ta çoklu kayıt seçimi nasıl yapılır

Merhaba

Ax 2012 ‘yi  incelerken  SysLookupMultiSelectCtrl isminde bir sınıfla karşılaştım . Bu sınıf sayesinde lookuplarda  çoklu kayıt seçilebiliyor.

Öncelikle lookupta görmek istediğiniz veri için bir query hazırlamalısınız. AOT de ki query düğümünü kullanarak yapabileceğiniz gibi kodla da oluşturabilirsiniz.

Biz CustTable için bir query hazırlayalım. Ayrıca tasarımında sadece stringEdit (adı CustAccount olsun ) bir alan olan form yapalım.

Bu aşamadan sonra forma kod yazmamız gerekiyor. Eklememiz gereken kodlar :

Read more

ExistsJoin ve NotExistJoin ile Lookup yazmak

Merhaba

Şöyle bir istek olsun.  Seçilecek vergi numarası ne müşteri nede satıcı tablosunda kullanılmış olsun. Bu gibi bir istekte notexistjoin kullanabiliriz. Eğer müşteride veya satıcıda  kullanılanlar listelensin denseydi existjoin kullanacaktık.

client static void lookupETGVATNum (FormStringControl ctrl, Common common)
{
    SysTableLookup          sysTableLookup = SysTableLookup::newParameters(tablenum(TaxVATNumTable), ctrl);
    Query                   query = new Query();
    QueryBuildDataSource    queryBuildDataSource = query.addDataSource(tablenum(TaxVATNumTable));
    QueryBuildRange         queryBuildRange = queryBuildDataSource.addRange(fieldnum(TaxVATNumTable, CountryRegionId));
    QueryBuildDataSource    qdbs;
    ;

// CustTable müşteri tablosunda olmayanları getiriyoruz
    qdbs  = queryBuildDataSource.addDataSource(tablenum(CustTable));
    qdbs.addLink(fieldnum(TaxVATNumTable , vatNum ),fieldnum(CustTable , vatNum ));
    qdbs.joinMode(joinmode::NoExistsJoin);

Read more

Query ile yapamadığınız bir join’i nasıl yapabilirsiniz?

Merhaba

BankAccountTable’ı lookup da açtırmak istiyoruz. Kriterlerimiz şöyle.

Lookupta  BankAccountTable.AssignedBankTransType alanı boş olanlar ve BankTransType.BankTransType   <>  BankAccountTable.AssignedBankTransType

İlişkisiyle  BankTransType’ın BankTransType.ExchangeNoteDocType’ı Çek ve senetten farklı olan kayıtlar isteniyor.

Query’de   bu join’in nasıl yapılacağını bulamadım.  Bu sebepten  temp tablo kullanmaya  karar verdim.  while select kullanarak temptabloyu doldurup.

Sonra lookup için query’ı yazdım.

Axaptada joinlerle ilgili bir makaleyi ilerki zamanlarda yayınlayacağım.

Örenk metod şöyledir.

 

static client void lookupPortfolioPromissory(FormStringControl _ctrl, CurrencyCode _filterStr)
{
    SysTableLookup                sysTableLookup = SysTableLookup::newParameters(tablenum(tmpBankAccountTable),_ctrl);
    Query                                     query = new Query();

Read more

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

Read more