| Makale Tarihi : 16 Temmuz 2000
Yazan:Can Kaynak |
|
Tablo Kayıtlarını İsteğe Uygun Dizmek
Makale dizimizin bu bölümünde table kayıtlarını dizmek için kullanılan
yöntemlere göz atacağız. Çalışma anında indeksleri değiştirerek
sıralamaları nasıl ayarlayacağımıza değineceğiz. Indeks kullanımının püf
noktalarını gözden geçireceğiz. Ayrıca Table öğesinin SetRange yordamları ile
bazı kayıtları özgün bir şekilde nasıl gösterebileceğimize ve
filitreleyebileceğimize değineceğiz.
Tablo kayıtlarınızı isteğe uygun dizmek için indeks
kullanmalısınız. Tanımladığınız Indeks tablo kayıtlarınızın nasıl ve hangi
sırada görüneceğini belirler. Örneğin eğer AD sahası SOYAD sahasından önce
geliyorsa varsayılan görünümde AD, SOYAD sahasının solunda yer alır. Fakat bu
dizilimi değiştirmek istiyorsanız soyadın addan önce tanımlandığı bir indeks
tanımlayıp bunu Table öğesinin indexname özelliğine
atamalısınız. Böylece görünümde AD sahası SOYAD sahasının sağında yer alır.
Aynı şekilde eğer TARIH adlı bir sahanız varsa ve bu sahanın içerdiği tarih
bilgilerini büyükten küçüğe dizmek istiyorsanız bu sahayı kullanarak bir indeks
tanımlamalı ve indekse DESCENDANT değerini vermelisiniz.
Indexname özelliği varsayılan indeks adını tutar.
Eğer Indexname özelliğine tabloda tanımlı başka bir indeks adını atarsak o
indekste tanımlı olan kurala göre veriler yeniden dizilir ve tablonun varsayılan
indeksi atadığımız indeks olur.
Table1.IndexName:='Idx_Soyad_ad';
Not:Bir tablo bir seferde sadece bir indeks kullanabilir.
Indeksleri kullanmanın en büyük faydası da tablo sahalarında arama
yaparken yada tablo değerlerini filitrelerken ortaya çıkar. Eğer filitrelediğiniz
yada aradığınız saha daha önce oluşturduğumuz indeks tanımında mevcutsa indeksiz
arama yada filitreleme işlemlerinden çok daha hızlı uygulanır.
Indeksleme işlemi tabloları dizmek için çok iyi bir yöntemdir ama yeterli
değildir. Eğer tablodaki verileri belli aralıklar içinde görüntülemek istiyorsak ve
o aralık dışındaki verileri görmek istemiyorsak Range yordamlarını
kullanmalıyız.
SetRange:SetRange yordamı sadece ındekslenmiş sahalarda
çalışır.Bu yordam tabloya uygulanacak olan aralığı belirler. Eğer daha öncedende
bir aralık belirtilmişse tüm bu değerleri sıfırlayıp yeniden bir aralık
belirler.İki adet değer dizisi içerir bunlar StartValues ,EndValues.
StartValues: Aralığın başlangıç değerlerini içeren dizidir.
EndValues: aralığın bitiş değerlerini içeren dizidir.
StartValues ve EndValues dizilerinde birden fazla saha için başlangıç ve bitiş
değerleri tanımlayabiliriz. Fakat tanımlama sırası her zaman indeksin tanımlama
sırası ile aynı olmalıdır.
Örnek:
.........
with table1 do
begin
DatabaseName:='DBDEMOS';
TableName:='Customer.db';
Active:=TRUE;
IndexName:='IDX_CustnoCompany';
SetRange([1001,FELIX],[2545,MOROKO]);
end;
.........
SetRange yordamından başka eğer isterseniz bir aralığı belirtmek için SetRangeStart,
SetRangeEnd yordamlarını birlikte kullanabilirsiniz. Böylece program
yazımında aralık değerlerini hangi sahaya atadığınızı görebilme imkanına
sahip olursunuz.
SetRangeStart yordamı belirteceğiniz aralığın başlangıç
değerinin girileceğini BDE'ye haber verir. SetrangeStart yordamı kullanıldıktan sonra
SetRangeEnd yada ApplyRange yordamına kadar kullanılan tüm field atamaları aralık
başlangıç değeri ataması olarak işlenir.
SetRangeEnd yordamı belirteceğiniz aralığın başlangıç
değerinin girileceğini BDE'ye haber verir. Tıpkı SetrangeStart yordamında olduğu
gibi ardından tanımlanan field atamaları aralık son değeri ataması olarak işlenir.
SetRangeStart ve SetRangeEnd tanımlamalarından sonra mutlaka aralığın aktif
olması için ApplyRange yordamı kullanılmalıdır.
Örnek:
.........
with table1 do
begin
DatabaseName:='DBDEMOS';
TableName:='Customer.db';
Active:=TRUE;
IndexName:='IDX_CustnoCompany';
SetRangeStart;
Fieldbyname('Custno').AsInteger:=1001;
Fieldbyname('Company').AsString:='FELIX';
SetRangeEnd;
Fieldbyname('Custno').AsInteger:=2545;
Fieldbyname('Company').AsString:='MOROKO';
ApplyRange;
end;
.........
Eğer daha önceden SetRangeStart ve SetRangeEnd yordamları ile bir aralık
tanımladıysanız aynı sahalarla başka bir aralık tanımlamak için EditRangeStart,
EditRangeEnd yordamlarını kullanabilirsiniz.kullanımı tıpkı SetRangeStart
ve SetRangeEnd yordamları gibidir.
Örnek:
.........
with table1 do
begin
DatabaseName:='DBDEMOS';
TableName:='Customer.db';
Active:=TRUE;
IndexName:='IDX_CustnoCompany';
EditRangeStart;
Fieldbyname('Custno').AsInteger:=1001;
Fieldbyname('Company').AsString:='FELIX';
EditRangeEnd;
Fieldbyname('Custno').AsInteger:=2545;
Fieldbyname('Company').AsString:='MOROKO';
ApplyRange;
end;
.........
CancelRange yordamını kullanarak tüm aralık tanımlamalarını
iptal edebilirsiniz. Böylece tablonun tüm verilerine tekrar ulaşabilme imkanına sahip
olursunuz.
Eğer Bu çalışmalarımı
desteklemek istiyorsanız lütfen aşağıdaki Linke tıklayıp üye olun. Tamamen
ücretsiz olan bu site;size 25 MB yer veriyor.Bana da 1$ veriyor. Böylece daha fazla
yazma şevki oluşacak ve size daha kaliteli bilgi verebileceğim.Unutmayın Ben
Size yardım için hep buradayım ve burada olacağım.

|