18 Eylül 2014 Perşembe

Select Cümleleri ve Table Buffer Kavramı : Giriş

Dynamics AX’ta veri tabanına erişmenin ilk ve en kolay yolu select cümlecikleri yazmaktır. Ax içinde kullanılmakta olan X++ dili SQL cümleciklerinin pek çoğunu destekler. Bu bağlamda LinQ benzeri bir yapı sunar. Aslında X++, LinQ’dan daha eskidir.

Pek çok enterprise uygulamada bir veri erişimkatmanı (Data Access Layer , DAL) yazmak gerekir. Dynamics AX’ta bir data access layer yazmak gerekmez, zira veri tabanındaki tüm metadata (Tablolar, Viewlar, tipler vs.) kod içerisinden direk kullanılabilir.

Alttaki gibi bir SQL cümleciği yazarak SQL Server’da çalıştırırsanız tablodaki tüm veriler gösterilirken,Dynamics AX’ta tek satır (indekse göre ilk satır) veri gösterilir.
SELECT * FROM INVENTTABLE


Table Buffer ise tablo adı ile tanımlanmış bir değişkendir. Aslında bir class’ın (xRecord) nesnesi olmakla birlikte, new metoduna gereksinim duymadan kullanılır. Table Buffer bir tablodaki tek satırlık veriyi tutabilir ve select cümlecikleri ile veri tabanından okunan veri ile doldurulabilir.





CustTable custTable; //Bu bir table bufferdır.
;
select * from custTable where custTable.AccountNum == "M0001";
// bu ifade ile alttaki aynı anlama gelir. 
//Ax'ta  özellikle field belirtilmeyecekse * from demeye gerek yoktur.
select custTable where custTable.AccountNum == "M0001";
Elbette kod içerisinden atama yapmak da mümkündür. Yapılan değişiklikler ya da düzenlemeler veri tabanına anında aksetmez. Değişkliklerin veri tabanına yazılması için update() metodu kullanılmalıdır. Veri modifikasyonuna daha sonra değineceğim.




CustTable custTable; //Bu bir table bufferdır
;
select custTable where custTable.AccountNum == "M0001";
custTable.Name = "emre"; //Bu değişiklik sadece bellekte yapıldı.
Özetle Ax içinden select cümlecikleri yazılarak veri tabanına direk erişilir. Veri tabanından alınan veri table bufferda tutulur. Bir table buffer tek seferde sadece bir satır veri tutabilir. Table buffer üzerinde değişiklik yapılabilir ama özellikle veri tabanında update (insert, delete)  işlemi yapılmazsa kendiliğinden bir update (insert, delete) söz konusu değildir. Örnekte görüldüğü üzere where cümleciği ile kriter ya da kriterler belirtilebilir. Kriterler ve (&&) ya da veya(||) operatörleri ile birleştirilirler. Son olarak kriterlerin eşitliğinde çift eşittir (==) kullanılır.
Ali Güç - 2014

Hiç yorum yok:

Yorum Gönder