How long have you been using Microsoft Dynamics Ax?

Toplam Sayfa Görüntüleme Sayısı

Popular Posts

Translate

Bu Blogda Ara

Dynamics AX 2009 etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Dynamics AX 2009 etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

17 Ocak 2013 Perşembe

Pack / Unpack Form Query

Hi All,

When we need to restore previous query ranges after executeQuery() we can use this code example below.


Container con;
con = InventSum_qr.query().pack();
InventSum_q =  new Query(con);
InventSum_ds.executeQuery();

Have a nice coding.

31 Ağustos 2012 Cuma

Edit method ile çoklu kayıt seçimi


Merhaba,

Grid üzerinde bulunan kayıtları işlem yapmak için seçmenin çeşitli yolları mevcut. Yollardan biri grid'e bir checkbox ekleyip seçilen kayıtları bir map ile yönetmek.

Form üzerinde değeri değiştirilebilen display alanların arkasında çalışan method tipi edit methoddur edit methodlar 3 adet parametre alırlar bunlardan ilki alanın değerinin değiştirilmek için seçilip seçilmediği set değişkeni, ikincisi gönderilen kayıt bilgisi ve son değer ise kayıt bilgisinin seçilmek üzere mi yoksa seçiminin kaldırılması için mi tıklandığı bilgisi mark değişkeni.

edit NoYes MarkRecords(boolean set,tabloAdi tabloDegiskeni,NoYes _mark)
{

    if (set)
    {
        MarkMap.insert( tabloDegiskeni .RecId , tabloDegiskeni.stringAlan);
        MarkMap.valueSet();
    }
    else
    {
        if (MarkMap.exists(PackingSlip.RecId))
        {
           _mark = MarkMap.lookup(PackingSlip.RecId);
        }
    }

    return _mark;
}

classDecleration da MarkMap değişkenini tanımlıyoruz.

init() methodunda MarkMap değişkeninin Map tipini belirliyoruz

MarkMap = new Map(Types::Int64,Types::string) gibi

sonrasında istenilen yerde mapEnumerator ile MarkMap değişkenindeki değerleri listeliyoruz.

Bol AX lı günler,
Alper.



24 Temmuz 2012 Salı

Coloring grid lines or cells from code / Grid alan veya satırlarını kod ile renklendirme

Hi,

We can color up grid lines by using displayOption. On forms datasource expand methods click right mouse ,select overwirte function and select displayOption.

For code example open tuttorial_Form_displayOptions form


public void displayOption(Common _common, FormRowDisplayOption _options)
{
    // here's the logic which derteminates the color for this row
    // In this case it will random color the lines
    if (_common.recId mod 3 ==0)
    {
        _options.backColor( WinAPI::RGB2int( 255,0,0 ));
    }
    super(_common,_options);
}

With this code example if recId's mod  is equal to 3 it will paint the entire row to red. But if we want to paint only one cell individually we will use

_options.affectedElementsByControl(CustTable_Name.id());

As you can see we used affectedElementsByControl method to paint only sellected control.


Happy Axing.
Alper.


////////////////////////////////////////////////////////////////////


Merhabalar,

Form üzerindeki gridlerde istenilen koşula göre renklendirme yapmak istediğimizde form veri kaynağı üzerinde bulunan displayOption methodunu ezeceğiz.

Methodu ezmek için form un altında yer alan veri kaynağının methodlarını genişletip yöntemi geçersiz kıl ı seçtikten sonra açılan listeden displayOption ı seçiyoruz.

Örnek kod olarak  tuttorial_Form_displayOptions formunu kullabiliriz.


public void displayOption(Common _common, FormRowDisplayOption _options)
{
    // here's the logic which derteminates the color for this row
    // In this case it will random color the lines
    if (_common.recId mod 3 ==0)
    {
        _options.backColor( WinAPI::RGB2int( 255,0,0 ));
    }
    super(_common,_options);
}

Bu örnekte custtable ın RecId alanının değerinin mod 3 e göre değeri 0 olduğunda kayıdın bulunduğu satırı tümüyle kırmızıya boyuyor.

Eğer tüm satırı değilde sadece tek bir alanı boyamak istersek koda alttaki satırı eklememiz yeterli.

_options.affectedElementsByControl(CustTable_Name.id());

Bu şekilde affectedElementsByControl methodunu çağırarak boyama işleminin sadece parametre olarak gönderdiğimiz  CustTable_Name.id() konrolü için geçerli olduğunu belirtiyoruz.


Mutlu AXlar,


Alper.



1 Haziran 2012 Cuma

Working with Enum values / Enum değerleri arasında gezinmek



Hi,

To work with enum values you need to use DictEnum class. After you get the count you can do whatever you want.

Have a nice AX day,
Alper.

   
    EnumId   enumId   = enumNum(SalesStatus);
    DictEnum dictEnum = new DictEnum(enumId);
    int      count  = dictEnum.values();
    int      counter 

    for(counter = 0; counter < count; counter ++)
    {
        // You can use the number of method exposed by DictEnum class
        // dictEnum.name(counter)
        // dictEnum.index2Value(counter)
        // dictEnum.index2Symbol(counter)             
        // dictEnum.index2Label(counter)
    }



28 Mayıs 2012 Pazartesi

Write methodu ile insert ve update

Merhabalar,

AX geliştirmelerinde kimi zaman eldeki verinin ilgili tabloda olup olmadığı bilgisini bilemediğimiz durumlar oluşabilir, bu tip durumlarda tablonun write() methodu kullanılabilir.

Write() methodu gelen kayıt tabloda var ise kayıdı verilen değerler ile günceller eğer yok ise tabloya kayıdı ekler.

TabloAdi tabloDegiskeni;
;
ttsbegin;
select forupdate tabloDegiskeni where tabloDegiskeni.primaryKeyfield1 == 123;
tabloDegiskeni.primaryKeyfield1 = 123;
tabloDegiskeni.field2                   = "abc";
tabloDegiskeni.write();
ttscommit;

Böylelikle kayıt var mı yok mu diye koşullar yazmaya kodu uzatmaya gerek kalmadı.

Bol AX'lı günler,
Alper.

Working with RecordInsertList / RecordInsertList ile çalışmak


Hi,

When we need to insert multiple records to the database in one trip, for performance or something else we sholud use RecordInsertList class.

In example below we declare a RecordInsertList variable with table number and use add() method to add new record to the array list by using tableVariable.

After we finisheded to add new records to the RecordInsertList we call insertDatabase() method to insert record list to the database with one trip.

Have a nice coding,
Alper.

-------------------------------------

RecordInsertList ril = new RecordInsertList(tablenum(TableName));
TableName tableVariable;
;
tableVariable.field1 = "abc";
tableVariable.field2 = 123;
ril.add(tableVariable);
ril.insertDatabase();

-------------------------------------

Merhabalar,

RecordInsertList sınıfını çoklu kayıt girişlerinde her seferinde veri tabanına gidip gelinmesinin önüne geçmek ve performans kazanmak için bir liste oluşturmak için kullanıyoruz.

Bu liste sayesinde kayıtlarımızı add methodu ile listeye ekliyor ve işlemler bittikten sonra insertDatabase ile tek seferde sunucuya gönderebiliyoruz.

Bol AX' lı günler
Alper.