run-time da alanları ekleme nasıl yapılıyor ?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
sinnini
Üye
Mesajlar: 3
Kayıt: 15 Nis 2006 04:12

run-time da alanları ekleme nasıl yapılıyor ?

Mesaj gönderen sinnini »

Herkese Merhaba,

IBQuery nesnesine designtime da SQLini yazıp örnek: "Select * from Xtablosu" sonra active etmeden üzerinde çift tıklayıp istediğimiz field ları ekleyebiliyoruz ancak benim sorunum bu işlemi runtime da yaptırmak,
yani program içinde bu nesnenin SQL sorgusu değişiyor ve bu değişime göre fieldları da eklemem gerekiyor.

Bu arada bunu istememin nedeni normalinde integer olan bir fielddi duruma göre calculated field ekleyerek bunu kullanıcıya farklı bir değer olarak vermek. normalinde her tablo için ayrı bir query nesnesi kullansam olacak ama kullanıcı kendi oluşturacağı bir raporu alacak ve aynı kodları her bir query için yazmak pek mantıklı gelmiyor.

Yardımcı olabileceklerin mesajlarını bekliyorum şimdiden herkese teşekkür ediyorum
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Kod: Tümünü seç

  Deger := IBQuery.FieldByName('ALAN_ADI').AsString; // alan adı biliniyorsa.
  Deger := IBQuery.FieldValues['ALAN_ADI']; // sonuc variant.
  for i := 0 to IBQuery.FieldCount - 1 do
    Deger[i] := IBQuery.Fields[0].AsString; // alan adları bilinmiyorsa.
// ...
şeklinden birisi ile SELECT * FROM TABLO ile belli olmayan alanlara ulaşabilirsin.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
sinnini
Üye
Mesajlar: 3
Kayıt: 15 Nis 2006 04:12

Soru Yalnış Anlaşılmış.

Mesaj gönderen sinnini »

Benim ulaşmak istediğim alanların bilgilri değil anaların isimleridir.

Yani SQL olarak 'select DURUMU,ADI,SOYADI FROM TabloADI' dediğimiz de 3 adet fieldimiz olacak ancak ben bunlara programdan 4. bir field(calculated) STRDURUMU ekliyorum ve normalinde Integer olan DURUMU fieldine gore STRDURUMU string degerini querynin oncalcfields olayında alıyor.

SQL kodu programda değişiyor yani farklı tablolardan farklı şeyler alınıyor ve gerektiğinde de değişik calculated fieldler ekleniyor. sonundada bunlar printere veya ekrana(DBGrid) e gonderılıyor.

Normalinde sorun yok ancak calc field eklendiğinde bu sefer SQL ile secilen fieldleri DBGrid goremediğinden yani Query1.Fields.count 4 yerine sadece1 oluyor ve hata oluşuyor.

Bu konuyu bilen varsa pls cevap yazsın selamlar
sinnini
Üye
Mesajlar: 3
Kayıt: 15 Nis 2006 04:12

Ek bilgi

Mesaj gönderen sinnini »

Bu arada IBQuery1.FieldDefList ten sellect ile seçilen fieldlere ulaşabiliyorum ama bu seferde kendim eklediğim yani calculatedfieldlere ulaşamıyorum.

Tabii IBQuery1.FieldDefList ile sadece listesini alabiliyorum onları DBgrid ustunde gosteremiyorum.

Uzun lafın kısası

Design Time ( program calımadan once) formun ustune query nesnesi ekleyip SQL ini yazdıktan sonra ustune çift tıklanınca add available fields menusu geliyor ve aynı zamanda add new fieldsten calculated fields eklenebiliyor. ben bunları porgramın içinden yani run time olarak yaptırmak istiyorum asıl sorun bu...

ilgilenecek arkadaşlaa şimdiden teşekkürler
Kullanıcı avatarı
kara_kule06
Üye
Mesajlar: 150
Kayıt: 18 Nis 2006 02:15
Konum: ankara/polatlı
İletişim:

Mesaj gönderen kara_kule06 »

slm arkadaşlar sonunda bu konuyu aradım ve buldum ama istenilen cevabı bulamadım. benimde sorunum programın çalışması aşamasında tablo nesnesine alan eklemekle ilgili. mesela Alter Table kullanarak veritabanımdaki dosyaya yeni alanlar ekledim ve bu eklediğim alanların veritabanındaki o tabloyu tutan Table(ZmySqlTable) nesnesine de program çalışırken eklenmesini istiyorum.

Kod: Tümünü seç

ZMySqlTable1.AddTableFields 
diye bir komut var ama nasıl kullanılacağını bilmiyorum. Bu konuda bilgisi ve önerisi olan arkadaşlardan rica ediyorum.

Kolay Gelsin...
İlim öğrenmek akıntıya karşı yüzmek gibidir. Ara verildiği zaman gerilenir...
Cevapla