Makale Özeti

Önceki yazımızda Dynamic Ax'ta temel veritabanı işlemlerinden Select sorgusunun nasıl kullanılabileceğini gördük. Bu yazımızda ise verilerle çalışırken bu veriler üzerinde modifikasyon işlemlerini (ekleme, silme, güncelleme) nasıl yapabileceğimizi göreceğiz.

Makale

X++'da veritabanı üzerinde yapılacak olan değişiklik işlemleri için transaction'lar kullanılır. Kısaca tts komutu olarak da kullanılan bu komutlar arasında veritabanı üzerinde modifikasyon yapacak olan kod blokları çalıştırılır. Üç tane tts komutu vardır :

a) ttsbegin    : Transaction'ın başladığını belirten komuttur.
b) ttscommit : Transaction'ın başarılı bir şekilde sonlandığını belirten komuttur.
c) ttsabort    : Transaction'ı başarısız şekilde sonlandırarak, üzerinde işlem yapılan kayıtları transaction başlamadan önceki orjinal konumlarına döndürür.

INSERT

Veritabanındaki bir tabloya kayıt ekleme işlemini gerçekleştiren, bunu yaparken de mutlaka tts komutlarını kullanarak eksik veya hatalı işlem yapılmasını önler.

// CustTable tablosuna bir tane kayıt ekleme işlemine yarar.
CustTable customerTable;
ttsbegin;
    select customerTable;
              customerTable.Name            = 'John Woe';
              customerTable.AccountNum = '4099';
    customerTable.insert();
ttscommit;

UPDATE

Veritabanındaki bir tablodan çekilen herhangi bir kaydı güncelleme işlemini gerçekleştirir bunu yaparken de tts komutlarını kullanarak eksik veya hatalı işlem yapılmasını önler. Bu işlem yapılırken  güncelleme işlemi yapılacak olan kayıt veritabanından çekilirken güncelleme işlemi yapılacağı belirtilerek çekilir.

// SalesTable tablosundan CustAccount sahası 4009 olan kayıtlar döngü
// halinde çekilip, ilgili kayıtların SalesName sahası sıra ile güncelleniyor.
SalesTable salesTable;
ttsbegin;
     while select forupdate salesTable
             where salesTable.CustAccount  =  '4009';
    {
              salesTable.SalesName = 'Yeni Satıcı Adı'
              salesTable.update();
    }
ttscommit;

DELETE

Veritabanındaki bir tablodan çekilen herhangi bir kaydı silme işlemini gerçekleştirir bunu yaparken de tts komutlarını kullanarak eksik veya hatalı işlem yapılmasını önler. Bu işlem yapılırken  silme işlemi yapılacak olan kayıt veritabanından çekilirken güncelleme işlemi yapılacağı belirtilerek çekilir.

// SalesTable tablosundan CustAccount sahası 4018 olan kayıt
// çekilip, siliniyor.
SalesTable salesTable;
ttsbegin;
     select forupdate salesTable
             where salesTable.CustAccount  =  '4018';
              salesTable.delete();
   
ttscommit;

Eğer silinecek veya güncellenecek kayıt sayısı fazlaysa o zaman bunları tek işlemle de yapabiliriz :

UPDATE_RECORDSET

tts bloklarına gerek kalmadan verilen kriteri sağlayan kayıtlar tek bir seferde güncellenir.

// SalesTable tablosundan CustAccount sahası 4009 olan kayıtların
// tek seferde SalesName sahası güncelleniyor.
SalesTable salesTable;

update_recordset salesTable
            salesTable.SalesName = 'Yeni Satıcı Adı'
             where salesTable.CustAccount  =  '4009';
                      
DELETE_FROM

tts bloklarına gerek kalmadan verilen kriteri sağlayan kayıtlar tek bir seferde silinir.

// SalesTable tablosundan CustAccount sahası 4018 olan kayıtlar
// tek seferde siliniyor.
SalesTable salesTable;

delete_from salesTable
            where salesTable.CustAccount  =  '4018';

Bu yazımızda veri güncelleme, veri silme ve veri kaydetme sorgularını nasıl yazabildiğimizi gördük. X++ ile temel veritabanı işlemlerini yapabilir duruma gelmiş olduk. Bundan sonraki makalemizde istisna yakalama işlemlerini göreceğiz. Buraya kadar aklınıza takılan veya anlaşılmayan kısımlar için e-mail adresim : aytac.ozay@msakademik.net

Aytaç ÖZAY

Bilgisayar Yüksek Mühendisi