Tablo Kayitlarini Istege Uygun Dizme


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çinEditRangeStart, 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.

Yorum Gönder

xxxxxx