Veritabanı işlemlerinde ki bir diğer can alıcı noktada sıralamadır. Verilerin karman çorban bir şekilde olmasını istemeyiz sonuçta. Bu işlemi yapabilmek için ClientDataSette indexler mevcuttur. İndexleme yaparak verisetimizi sıralayabiliriz.
Buna örnek verebilmek için yine eski ClientDataSet yazılarında kullandığım uygulamadan yararlanacağım.
DataClientSetin Kurulumu ve Yönetimini eski yazımdan ayrıntılı bir şekilde öğrenebilirsiniz.
Şimdi gel gelelim sıralama yani indexlemeyi nasıl yapıcaz. Tamamı sadece bir kaç satırlık kod bunlara örnek ve resim ekleyerek hızlı hızlı geçeceğim. Yaptığım eski programın görseli aşağıda. Bu uygulamaya komutlara girerek görselleri vereceğim.
ClientDataSet indexleme komutu İndexFieldNames 'dir. Tek yapmanız gereken bu komutun sonuna sıralama yaptırmak istediğiniz kolonun ismini yazmak. Örneğin adi kolonuna indexleme yaparsam
procedure TForm1.FormCreate(Sender: TObject);
begin
ClientDataSet1.FileName:=ExtractFilePath(Application.ExeName )+'aramadb.cds';
ClientDataSet1.Active:=true;
ClientDataSet1.IndexFieldNames := 'adi';
end;
Adi kolonu alfabetik sıraya göre küçükten büyüğe sıralanmış bir şekilde görünecektir.
Yada sinifi kolonunu küçükten büyüğe sıralatırsam
procedure TForm1.FormCreate(Sender: TObject);
begin
ClientDataSet1.FileName:=ExtractFilePath(Application.ExeName )+'aramadb.cds';
ClientDataSet1.Active:=true;
ClientDataSet1.IndexFieldNames := 'sinifi';
end;
şeklinde görükecektir. Peki çoklu sıralatma yapmak istiyosam. Yani örneğin önce isme sonra sinifa göre sıralatmak isitiyosam. Bu durumda önce isme göre sıralanacak sonrada ismi ayni olanların siniflari küçükten büyüğe sıralanacaktır. Bunu yapmak için gerekli kod:
procedure TForm1.FormCreate(Sender: TObject);
begin
ClientDataSet1.FileName:=ExtractFilePath(Application.ExeName )+'aramadb.cds';
ClientDataSet1.Active:=true;
ClientDataSet1.IndexFieldNames := ('adi;sinifi');
end;
Başka kolonlarıda çoklu sıralamaya katabilirim. Burada kolon sırası önemlidir. Önce hangi kolonu yazarsanız ilk o kolon sıralanacaktır.
Diğer kolonlarıda bu şekilde sıralatabilirsiniz. Şimdi gel gelelim iki değer arasındaki değerleri göstermeye. Bunun için kullanılacak komut SetRange 'dir. Bu komutla istediğimiz aralıktaki değerleri rahatca veritabanında gösterebiliriz.
Örneğin adi kolonunda belli bir harf aralığındaki isimleri almak istiyosam
procedure TForm1.FormCreate(Sender: TObject);
begin
ClientDataSet1.FileName:=ExtractFilePath(Application.ExeName )+'aramadb.cds';
ClientDataSet1.Active:=true;
ClientDataSet1.IndexFieldNames := 'adi';
ClientDataSet1.SetRange(['a'], ['m']);
end;
yazarak a 'dan başlayarak m ' ye kadar ki isimleri gösterecektir.
yada sadece 1 ve 3 üncü sınıflar arasını almak istiyosam
procedure TForm1.FormCreate(Sender: TObject);
begin
ClientDataSet1.FileName:=ExtractFilePath(Application.ExeName )+'aramadb.cds';
ClientDataSet1.Active:=true;
ClientDataSet1.IndexFieldNames := 'sinifi';
ClientDataSet1.SetRange([1],[3]);
end;
yazmam yeterli olacaktır. Eğer veri setiniz çok büyükse en sonraki değer için [maxint] de diyebilirsiniz.
procedure TForm1.FormCreate(Sender: TObject);
begin
ClientDataSet1.FileName:=ExtractFilePath(Application.ExeName )+'aramadb.cds';
ClientDataSet1.Active:=true;
ClientDataSet1.IndexFieldNames := 'sinifi';
ClientDataSet1.SetRange([1], [MaxInt])
end;
Okuduğunuz İçin Teşekkür Ederim
Hakan UÇAR
İstatistikçi ve Amatör Programcı
İçerikler Tamamen Ücretsiz Olup Özgün Anlatımdır Paylaşırken Kaynak Belirtiniz Lütfen.
Uygulamayı Yandex Diskimden indirebilirsiniz.
20 Şubat 2014 Perşembe
Kaydol:
Kayıt Yorumları (Atom)
0 yorum:
Yorum Gönder