May 9, 2014 - X++    3 Yorumlar

Insert, Delete, Update İşlemleri – Axapta

Dynamics Ax üzerinde tablolardaki verilere bazen kod üzerinden ekleme(insert), silme(delete), güncelleme(update) gibi işlemler yapmak gerekir. Bunun için X++ dilinde bazı yapılar mevcut bu yapılardan biraz bahsetmeye çalışacağım.

Bu işlemleri job,class, form, datasource, tablo method gibi bir çok yerde kullanabilirsiniz. Her işlem methodunun birde do yazılarak kullanılabilir hali(doinsert(),dodetele(),doupdate() gibi) mevcuttur. Do ile kullanılan işlemler de bir sonraki işlem tetiklenmez. Yani bazı durumlarda bir tabloya bir kayıt eklendiğinde onun tetiklenmesiyle başka tablolara da kayıtlar atılabilecek bir yapı olabilir veya tablo altındaki insert methodu override edilerek altına başka bir işlem eklenmiş olabilir. DoInsert ile yapılan işlemde bu işlemler gerçekleştirilmeyecektir.

**Bu işlemleri yaparken direk veriye müdahele edileceğinden dikkatli olmak gereklidir. Dikkat edilmediği taktirde Axapta üzerindeki canlı datada sorunlara yol açabilir. Ayrıca Do methodları bilinçli kullanılmadığı durumlarda veri tutarsızlığına yol açabilirler.

Bu işlemler yapılırken mutlaka transactions( ttsBegin – ttsCommit) arasına yazılmalıdır.

İnsert işlemi;

Tablolara kayıt eklemek için insert methodu kullanılır. Alanlara istenilen değerler atandıktan sonra insert methodu ile işlem tamamlanır.

    ttsBegin;

    tabloAdi.alanAdi1 = atanacakDeger1;
    tabloAdi.alanAdi2 = atanacakDeger2;
    tabloAdi.alanAdi3 = atanacakDeger3;
    tabloAdi.insert();

    ttsCommit;

Örn :

 static void TestTableInsert(Args _args)
{
    CustTable  custTable;

    ttsBegin;

    custTable.AccountNum = "M000025";
    custTable.Currency   = "TL";
    custTable.CustGroup  = "01";
    custTable.InvoiceAddress = InvoiceOrderAccount::InvoiceAccount;
    custTable.insert();

    ttsCommit;
}

Update işlemi

Bu method tablodaki istenilen kayıt bulunduktan sonra istenilen alan veya alanların güncellenmesini sağlamak için kullanılır. Bulunan kayıdın update edilebilmesi için “forupdate” ile kayıt update işlemine açılması gerekmektedir. Forupdate işlemini birden fazla şekilde yapabilirsiniz.

Bunlar;

-  Find methodundan forupdate parametresine “true” değeri yollamak
-  Select işleminde forupdate uygulamak(select forupdate tabloadı)
-  Tabloadı.selectForUpdate(true) methoduyla

    ttsBegin;
    select firstOnly forUpdate tabloAdı
    where şart; //update edilecek kayıdı bulmak için şartlar belirtilir.
    if(tabloAdı)
    {
        tabloAdı.AlanAdı = YeniDeger;
        tabloAdı.update();
    }
    ttsCommit;
}

Örn:

static void TestTableUpdate(Args _args)
{
    CustTable  custTable;

    ttsBegin;
    select firstOnly forUpdate custTable
    where custTable.AccountNum == "M000025"; //update edilecek kayıdı bulmak için şartlar belirtilir.
    if(custTable)
    {
        custTable.Currency = "EUR";
        custTable.update();
    }
    ttsCommit;
}

Delete işlemi

Axapta tablodan şarta bağlı olarak bir veya birden fazla kaydı silmek için delete methodu kullanılır. Aynı zamanda bir tablo üzerindeki bütün kayıtları temizlemek içinde “delete_from” kullanılabilir.

    ttsBegin;
    select firstOnly tabloAdı
    where şart; //delete edilecek kayıdı bulmak için şartlar belirtilir.
    if(tabloAdı)
    {
        tabloAdı.delete();
    }
    ttsCommit;

Örn:

static void TestTableDelete(Args _args)
{
    CustTable  custTable;

    ttsBegin;
    select firstOnly custTable
    where custTable.AccountNum == "M000025"; //update edilecek kayıdı bulmak için şartlar belirtilir.
    if(custTable)
    {
        custTable.delete();
    }
    ttsCommit;
}

Tablodaki bütün kayıtları silmek için;


delete_from custTable;

Erkan OĞUZ

Önceki Konu->

<- Sonraki Konu

Benzer yazılar

3 Yorumlar

  • Sanırım AX kullanırken en çok lazım edecek kodlar….

  • Merhaba, proje oluşturarak formlar üzerinde insert,delete, update işlemi yapmak için örnek vrmıdır ?

    • Merhaba Halil Bey,

      İstediğiniz şeyi tam anlayamadım. Form üzerinde derken formun gridinde seçilen bir kayıt için mi işlem yapmak istiyorsunuz.

Yorum Yazın...