Tablo Kayıtlarını İsteğe Uygun Dizmek
Makale dizimizin bu bölümünde table kayıtlarını dizmek için kullanıyasak kelime 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ıyasak kelime 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ıyasak kelime 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ıyasak kelime 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ıyasak kelime 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.