Makale dizimizin bu bölümünde Tablo Kayıtları üzerinde yapılabilecek işlemleri anlatacağız. Tabloya DBNavigator yada DBGrid kullanmadan nasıl kayıt ekleyeceğimizi,kayıtları nasıl değiştirebileceğimizi ve nasıl sileceğimizi anlatacağız. Ayrıca Table öğesinin Filter özelliğine de değineceğiz. Table öğesinin Filter özelliği ile tablomuzdaki kayıtları nasıl filitreleyeceğimizi antatacağız.Bu bölümü tüm Delphi programcılarının bir kez daha gözden geçirmelerini tavsiye ederim.
Tablonun Kayıtları İle Çalışmak:
Standart olarak bir tabloya kayıt eklemek için DBGrid bileşeninde ya insert tuşuna basıyor yada son kayıda gidip tab tuşuna basıyorduk. Silmek içinse Ctrl+Del duşuna basıyorduk.Bunu DBGrid olmadan diğer DBComponent bileşenlerinde DBNavigator bileşeninni edit,insert,ve delete tuşları ile yapabiliriz. Ama bunlardan hiç birini kullanmak içimize gelmiyorsa Table bileşeninin bu iş için ayırdığı yordamları kullanabiliriz.
Bir tabloya kayıt eklemek için Table bileşeninin Insert yordamını kullanmalıyız. Insert bileşenini kullandıktan sonra verilerimizi table nesnemizin Fields özelliğini kullanarak ilgili sahalara girmeliyiz. Daha sonra veirlerimizin kalıcı olması için ApplyRange yordamını kullanmalıyız.Eğer bir kaydı değiştirmek istiyorsak o kaydın üzerine konumlanıp Edit yordamını kullanmalıyız tıpkı Insert yordamındaki gibi ilgili sahalara verilerimizi girip bu verileri ApplyRange yordamı ile kalıcı kılmalıyız. Eğer bir veriyi silmek istiyorsak yapacağımız tek şey ilgili kaydın üzerine konumlanıp Delete yodamını kullanmaktır.
Fields sahalarına veri girmek için Object Pascal'ın güçlü yönlerinden biri olan atanan sahaların tiplerinin birbiri ile aynı olma kuralına uymamız gerekir.Fields öğesi sahalara veri atamak için her veri tipine ayrı bir yordam sağlar.Bunlar:
AsString: String veri tiplerini atamak için kullanılır.
AsInteger:Integer veri tiplerini atamak için kullanılır.
AsBoolean:Boolean veri tiplerini atamak için kullanılır.
AsCurrency:Currency veri tiplerini atamak için kullanılır.
AsDateTime:TDateTime tipinden verileri atamak için kullanılır.
AsFloat:Float tipinden verileri atamak için kullanılır.
AsVariant:Variant olarak tanımlanmış verileri atamak için kullanılır.
AsInteger:Integer veri tiplerini atamak için kullanılır.
AsBoolean:Boolean veri tiplerini atamak için kullanılır.
AsCurrency:Currency veri tiplerini atamak için kullanılır.
AsDateTime:TDateTime tipinden verileri atamak için kullanılır.
AsFloat:Float tipinden verileri atamak için kullanılır.
AsVariant:Variant olarak tanımlanmış verileri atamak için kullanılır.
Aşağıda tabloya veri ekleme, verileri değiştirme ve silme ile ilgili bir örnek göreceksiniz. Daha önceki konumuzda veriler arasında nasıl dolaşacabileceğimizi anlattığımız için ben biraz işin kolayına gidip bu yordamlar yerine Action tanımladım. Tabi siz isterseniz önceki makaledeki örnekle bu örneği birleştirebilirsiniz.
Burada bir Grid eklememin sebebi bir kayıdı değiştirken yada yeni bi kayıt eklerken DBGrid'in otomatik olarak edit yada insert moduna geçmesini görmenizi istemem. Normalde ihtiyaç olmadıkça kesinlikle tüm kayıtları göstermek için DBGrid kullanmayın.
Kayıtları Filitrelemek:
Bir tablonun belirli sahalarının görülmesi için bir sorgu yaratmamız gerekir. Fakat bu sorgulamayı sadece bir tablonun üzerinde yapıyorsak Table öğesinin Filter özelliğini kullanabiliriz. Filter özelliği bir String değişkendir. Buraya SQL tanımlı karşılaştırma ifadeleri yazabiliriz. Fakat bu SQL ifadeleri Select ve where gibi tanımlamalar yerine IS NOT OR AND gibi SQL terimleri içerecektir. Bir örnek vermek gerekirse
Custno>1000
Dediğimizde tablo sadece 1000'den büyük müşteri numarasına sahip olan kayıtları gösterecektir.Örneğimizi daha da genişletirsek:
(Custno>1000) AND (company='Kauai Dive Shoppe')
Şimdi hem 1000'den büyük hemde şirket adı Kauai Dive Shoppe olan kayıtları göstercektir.
Tabiki bu kayıtlarda sadece K ile başlayan Şirketleri görüntülemek isteseydik sorgumuzu şu şekilde yazacaktık:
Company='K*'
Bu sorgu ile tüm K ile başlayan Şirket isimlerini filitreleyebiliriz. Eğer sadece büyük K ile başlayan şirket kayıtları listelemek isteseydik Table'ın FilterOptions özelliğinde bulunan foCaseInsensitive özelliğini TRUE yapmamız gerekirdi.
Eğer sorgumuzda * karakterini gerçek bir karakter gibi kullanmak istiyorsak Aynı şekilde Table'ın FilterOptions özelliğinde bulunan foNoPartitialCompare özelliğini TRUE yapmaız gerekir.
Tabi bu yaptığımız işlemler Table öğesinin Filtered özelliğinin TRUE olması sonucunda aktif duruma gelir.Filtered özelliğini tıpkı bir şarter gibi kullanarak Filter özelliğindeki girdileri silmeden filitrelemeyi kaldırabilir yada aktif duruma getirebilirsiniz.