Blog Listem

28 Kasım 2013 Perşembe

AXAPTA - Formdaki container tablo fieldına resmi sürükle-bırak yapmak

public void dropFile(str _FileName)
{
    BinData p = new BinData();
    ;
    super(_FileName);
    p.loadFile(_FileName);
    PRTSecondHandTractorStock.Picture = p.getData();
    element.redraw();
}

21 Kasım 2013 Perşembe

AXAPTA - Bir tablo alanını cross-company çalışacak hale getirmek


Bir forumdan öğrendiğim bu yöntemle tüm yapmanız gereken yukarıdaki gibi bir relation ve extended data tipine dikkat etmek. Bundan sonra formlarda lookup veya validation method yazmadan ilgili alanınız cross-company çalışacak. Bu özellik AX 2009 ile çalışıyor, 2012 ile deneme şansım olmadı.

AXAP - Cross company lookup

public void lookup(FormControl _formControl, str _filterStr)
{

      CustTable   custTable;    
      Query                   Query  = new Query();
      QueryBuildDataSource    qbds;
      SysTableLookup          SysTableLookup  =      
            SysTableLookup::newParameters(TableNum(CustTable), _formControl);
    ;
    super(_formcontrol,_filterstr);

    Query.allowCrossCompany(true);      
    Query.addCompanyRange(myTable.Company);
    qbds           = Query.addDataSource(TableNum(CustTable));
    SysTableLookup.addLookupfield(FieldNum(CustTable, AccountNum), true);      

    SysTableLookup.addLookupfield(FieldNum(CustTable, Name));
    SysTableLookup.parmQuery(Query)

    SysTableLookup.performFormLookup();
}


Kontrolün validate metodunu ezmeyi unutmayın!..

18 Kasım 2013 Pazartesi

AXAPTA - Combobox enum kullanırken bazı elementleri atlamak

Çözümünü bir forumda buldum:

Form kontrolünün Enter metodunun super sonrasına yazılacak:

    this.delete(enum2str(DTSSHOperationLineType::Part));
    this.delete(enum2str(DTSSHOperationLineType::ExternalPart));


Eğer kontrol bir grup altındaysa AutoDataGroup = No yapmayı unutmayın.

14 Kasım 2013 Perşembe

AXAPTA - Gridde hızlı kayıt bulma

Bu işi için sakın find metodunu kullanmayın, büyük tablolarda çok yavaş çalışır. Axapta'nın kendi formlarında kullandığı yöntem bu:

element.args().lookupField(fieldnum(SMAServiceOrderTable, ServiceOrderId));
element.args().lookupValue(_myServiceOrderId);
SMAServiceOrderTable_ds.executeQuery();

5 Kasım 2013 Salı

AXAPTA - Tabloda password field

Bu konuyu yazarken Greg on Dynamics AX blogundan yararlandım.

Öncelikle tablomuzda tipi container olan bir password field açıyor ve extended data tipini CryptoBlob olarak seçiyoruz.

Password alanı için edit metodumuz:

edit Password edtPassword(boolean _set = false, Password _pwd = '')
{
    CryptoBlob cryptoBlob = connull();
    ;
    if (_set)
    {
        this.Password = WinapiServer::cryptProtectData(str2cryptoblob(_pwd));
    }
    return (this.Password == connull()) ? '' : 'xxxxxxxx';
}


Kodla passwordü okumak için metodumuz:
Password getPassword()
{
    CryptoBlob cryptoBlob;
    ;
    cryptoBlob = this.Password;
    return (cryptoBlob == connull()) ? '' :
        cryptoblob2str(WinapiServer::cryptUnProtectData(cryptoBlob));
}


Kodla passwordü yazmak için metodumuz:

void setPassword(Password _pwd = '')
{
    CryptoBlob cryptoBlob = connull();
    ;
    this.Password = WinapiServer::cryptProtectData(str2cryptoblob(_pwd));
}

Ekranda okuturken ilgili kontrolün PasswordStyle değerini Yes yapmayı unutmayın.