19 Şubat 2014 Çarşamba

Delphi XE5- ClientDataSet Filtreleme İşlemleri


    ClientDataSet'in güzelliklerinden biride filter özelliğidir. Tabi bütün veritabani yöneticilerinde mevcut bir özellik sadece cliente özel değil. Bu yazıda filter özelliğinin ne kadar önemli ve uygulamayı kullanacaklar için ne kadar kolaylaştırıcı bir araç olduğunu göreceğiz. ClientDataSet oluşturma ve yönetme yazısında okuyup öğrendiğiniz için direk hazır herşey oluşturulmuş olarak anlatacağım.

    Öncelikle bu yazı için küçük bir uygulama tasarladım. Bu uygulamaya adi,soyadi, okulu,sinifi, şehir gibi değişkenler oluşturdum. Sizde kendiniz filter özelliğini kullanmak adina küçük bir uygulama geliştirebilirsiniz. Birçok uygulamada kişisel bilgileri kaydetmek için veritabanları kullanılır ve Clientdataset küçük veriler için pahabiçilmezdir.


 Bileşenleri ekledikten ve gerekli bağlantıları yaptıktan sonra artık filtreleme özelliğini yapabiliriz. Öncelikle filtreleme mantığının SQL sorgu mantığından çok bir farkı olmadığını bilmek gerek. Örneğin eğer adi kolonunda bir filtreleme yapmak istiyorsak bul tuşuna tıklayarak şu kodları yazmamız yeterli olacaktır. Burda sorulması gereken soru içinde geçen kelimelerimi filtrelesin yoksa direk kelimenin kendisinimi filtrelesin.

Eğer sadece içinde geçen kelimeleri filtrelemek istiyosak:

procedure TForm1.Button1Click(Sender: TObject);
begin
ClientDataSet1.Filtered:=true;
ClientDataSet1.Filter:='adi Like ''%'+Edit1.Text+'%''';
end;

button1 burda bul tuşudur.


 Filter özelliğini kullanmadan önce dikkat etmemiz gereken bir husus ta filteri başlattıktan sonra eski haline döndürmek için tekrar kapatmamız gerekmesidir. Yoksa filtre yapıldıktan sonra sadece filtre olan ekran veritabanında görünür. O yüzdende sıfırla butonunda filtreyi kapatma özelliğini atadık.

procedure TForm1.Button2Click(Sender: TObject);
begin
ClientDataSet1.Filtered := false;
end;






   Görüldüğü gibi içinde hakan geçen bütün verileri getirdi karşımıza. Aranılan kelimenin içinde geçtiği değilde sadece aranılan kelimenin başında olduğu veriler gelsin istersek yazmamız gereken kodlar ise:

procedure TForm1.Button1Click(Sender: TObject);
begin
ClientDataSet1.Filtered:=true;
ClientDataSet1.Filter:='adi Like '+QuotedStr(Edit1.Text+'%');
end;




 Görüldüğü gibi sadece başında hakan olan veriler geldi. Uygulayı biraz daha kullanışlı yapmak için arama özelliğini bul ve sıfırdan kurtararak edit bileşenine yazdığımız anda gösterebiliriz. Bunu yapmak içinde ilk önce editin change olayına şu kodu yazarak bul olayını otomatikleştirmiş oluruz.

procedure TForm1.Edit1Change(Sender: TObject);
begin
ClientDataSet1.Filtered := true;
ClientDataSet1.Filter := 'adi like'+ QuotedStr(edit1.Text+'%');
end;

 Edit nesnemiz değiştiği anda artık filtreleme işlemi anlık olmaktadır ve edit'te yazı olmadığı zamanda filtreyi tekrar kapatmak gibi bir sorunumuz olmayacaktır. Çünkü ClientDataSet bunu otomatikmen yapacaktır.

 Uygulamanın başka bilgisayarlarda düzgün çalışması için uses kısmına midaslab eklemeyi unutmayın.

Okuduğunuz İçin Teşekkür Ederim
Hakan UÇAR
İstatistikçi ve Amatör Programcı
İçerikler Tamamen Ücretsiz ve Özgün Anlatımdır Paylaşırken Kaynak Belirtiniz Lütfen.

Uygulamayı Yandex Diskimden indirebilirsiniz.

 ClientDataSet Kaynak Uygulama


0 yorum:

Yorum Gönder