Kas 10, 2014 - Formlar (Forms), X++    Yorum Yok

DataSource Metodları

Bu konumuzda form datasource metodlarından en sık kullanılanlarından bahsedeceğiz. Gerek datasource daki veriyi form üzerinde görmek için güncellemek için kullandığımız gerekse gridlerde ki veriye filitre vermek için override ettiğimiz metodların tam olarak ne anlama geldiğini açıklamaya çalışacağım.

Bu metodlardan hangisinin (veya hangilerinin birlikte) hangi durumlarda kullanılması gerektiğine doğru karar verilmesi gereklidir. Doğru kullanımlarda işlemler düzgün çalışacağı istenilen sonuçları vereceği gibi yanlış kullanımlarda form üzerinde yavaşlıklar veya hatalı sonuçlarla karşılaşabilirsiniz.

Refresh : Form üzerinde bulunan datasourcedaki tablonun sadece üzerinde bulunduğu satırının önbellekteki halini gride yükler. Yani griddeki bütün satırları güncellemek için Refresh kullanılmaz. Yüklemeyi cache(önbellekten) yapacağı için başka bi kullanıcının yapacağı değişiklik forma yansımaz. Refresh metodu veri tabanından okuma yapmaz.

SalesLine_ds.refresh();

RefreshEx : Refresh tek bir satırı güncellerken RefreshEx ile birden fazla satırı güncelleyebilirsiniz. RefreshEx güncelleme yapabilmek için parametre değeri alabilir. Bu parametrelerden -1 parametresi bütün satırların güncellenmesini sağlarken -2 parametresi gridde seçili olan kayıtların güncellenmesini sağlar. RefreshEx in refresh metoduna göre bir dezavantajıda vardır. RefreshEx sadece gridlerde üzerinde çalışır gridde bulunmayan alanlar güncel olmayan hallerini korurlar. Bu yüzden bu iki metod birbirinin yerine kullanılmaz.

SalesLine_ds.refreshEx(-1);

Reread : Reread komutu ile datasoucedaki verileri veri tabanından tekrar okuyarak önbelleğe alınmasını sağlar. Ancak griddeki verileri güncellemek için tek başına kullanılmaz. Refresh metodlarından biri ile birlikte kullanılmalıdır. Önce Reread kullanılarak önbellek güncellenir daha sonra Refresh veya RefreshEx kullanılarak veriler önbellekten gride yansıtılır.

SalesLine_ds.reread();
SalesLine_ds.refresh();
//ya da
SalesLine_ds.reread();
SalesLine_ds.refreshEx(-1);

Research : Form üzerindeki datasourcedaki yapılan bütün değişikleri (değiştirme, ekleme, silme vb.) veri tabanından okuyarak formda gösterir. Bu işlem sırasında kullanıcı tarafından yapılmış sıralama veya filitreleme gibi işlemler aynen korunur. Parametresi true gönderilirse kursör bulunduğu yerine geri döner.

SalesLine_ds.research();
//ya da
SalesLine_ds.research(true);

ExecuteQuery : Datasource metodları içinde en çok kullanılan metoddur. Tüm kayıtlar veri tabanından çekilerek formda görüntülenir. Form üzerinde kullanıcı tarafından yapılan filitreleme sıralama gibi işlemler kaybolur. Kursöründe bulunduğu yeri kaybederek başa döner. Kursörün yerinin korunabilmesi için FindRecord metodu ile birlikte kullanılması gerekmektedir. İhtiyaca göre datasource üzerinde ExecuteQuery metodu override edilerek form filitreleme gibi işlemlerde bu metod içerisinde gerçekleştirilebilir.

SalesLine_ds.executeQuery();

FindRecord : FindRecord metodu kursörün pozisyonun tekrar bulunması için kullanılan metoddur. ExecuteQuery de kursör pozisyonu kaybolduğu için sıkça birlikte kullanılırlar. Kullanım şekli ilgili datasourceun tablosu bir table buffer tanımlanarak executeQuery den önce pozisyonu buraya atanır. ExecuteQuery metodu kullanıldıktan sonra table buffer FindRecord metoduna parametre olarak gönderilecek ile kursörün eski pozisyonu bulunmuştur.

SalesLine   salesLineLocal;
//işlemler
salesLineLocal  = SalesLine;//Kursör pozisyonunu table buffer'a atıyoruz

SalesLine_ds.executeQuery();

SalesLine_ds.findRecord(salesLineLocal);//Kursör pozisyonunu parametre vererek tekrar elde ediyoruz

DataSource içerisinde daha bir çok metodu barındırmaktadır. Ben veri güncelleme ile alakalı olanlara değinmeye çalıştım. Zamanı geldikçe farklı makalelerde diğer metodlardan da bahsediyor olacağım.

Erkan OĞUZ

Önceki Konu->

<- Sonraki Konu

Benzer yazılar

Yorum Yazın...