Merhaba sayın delphici kardeşlerim. Hepimizin de bildiği gibi bir Table, ADOTable veya ADOQuery nesnelerine veri tabanındaki alanların isimlerini ekleyerek kod içerisinde bu alanları kullanabiliyoruz. Bunuda Table nesnesinin "fields editor" penceresine tıklayarak "add all fields" seçeneğini seçerek bağlantılı veritabanındaki mevcut tüm alanların isimlerini ekleyebiliyoruz.
Benim veritabanın sorguyla oluştuğu için daha doğrusu çapraz sorguyla oluştuğu için bu alanlar herzaman değişebiliyor. Runtime da add all fields diyemiyeceğimize göre bu işlemi kodla nasıl yaptırabilirim.
Kısacası; Table nesnesinde Add All Fields (Crtl+F) işini nasıl kodla yaparım!
s.a.
o iş biraz zor gibi. eklesen bile direk tabloadialanadi.value şeklinde kullanabileceğini sanmıyorum. tabloadi.fielddeflist ve tabloadi.fields i biraz araştır.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Mrb; eğer programcı alan editöründen alan tanımlamamışsa zaten tüm alanlar .Open (.Active:=True) işleminden sonra .Fields özelliği olarak otomatik olarak oluşur. Bu alanlara erişmek için değişik metotlar bulunmaktadır.
var VariantDeger:Variant; Alan:TField;
begin
VariantDeger:=Table1['AlanAdi'];
Alan:=Table.FindField('AlanAdi');//alan yoksa nil değer verir
Alan:=Table.FieldByName('AlanAdi');//alan yoksa hata (istisna) çıkarır.
Alan:=Table.Fields[2];
end;
bu arada bu alan tiplerine göre değişik alan nesneleri otomatik olarak oluşur. Mesela alan tipi integer ise o alan .Fields[?]'ın tipi de TIntegerField olacaktır. Kısacası alan tanımı oluşturmazsan sana pek fazla bir yük düşmüyor. Herşey otomatik olarak oluşturuluyor. Kolay gelsin.
Şaban Şahin AKMAN
_________________ Derin olan kuyu değil kısa olan iptir. - .