comboboxla sql sorgulama yaptırmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
gercek_16
Üye
Mesajlar: 108
Kayıt: 19 Haz 2005 02:42
Konum: mersin

comboboxla sql sorgulama yaptırmak

Mesaj gönderen gercek_16 »

Kod: Tümünü seç

  DataModule3.IBQuery1.Close;
  DataModule3.IBQuery1.open;
  DataModule3.IBQuery1.sql.Clear;

 sql:='select * from DONANIM where 1=1 ';
 if edit13.text<>'' then sql:=sql+ 'and  MARKA like '+#39+formtyaz(edit13.text)+'%'+#39;
 if edit14.text<>'' then sql:=sql+ 'and  MODEL like '+#39+formtyaz(edit14.text)+'%'+#39;
 if edit15.text<>'' then sql:=sql+ 'and  SERI_NO like '+#39+formtyaz(edit15.text)+'%'+#39;

  if ComboBox1.ItemIndex=0 then sql:=sql+' and DONANIM_TURU= ''Sistem''';  //burda comboboxtan aldığı değeri sorguluyor.
  if ComboBox1.ItemIndex=1 then sql:=sql+' and DONANIM_TURU= ''Monitör''';
  if ComboBox1.ItemIndex=2 then sql:=sql+' and DONANIM_TURU= ''Yazıcı''';
  if ComboBox1.ItemIndex=3 then sql:=sql+' and DONANIM_TURU= ''Tarayıcı''';
  if ComboBox1.ItemIndex=4 then sql:=sql+' and DONANIM_TURU= ''Fotokopi Makinası''';
  if ComboBox1.ItemIndex=5 then sql:=sql+' and DONANIM_TURU= ''Modem'''; 
 DataModule3.IBQuery1.sql.add(sql);
  DataModule3.IBQuery1.open;
bu kod problemsiz olarak çalışıyor. ancak ben bu sorgulamayı dinamik bir hale getirmek istiyorum. programda kullanıcı istediği kadar DONANIM_TURU ekleyebiliyor,
bu kodun combobox kısmını nasıl düzeltmeliyim. aşağıdaki gibi bir kod denedim ama olmadı bir türlü çıkamadım içinden. :(


Kod: Tümünü seç

datamodule3.donanim_turu.First;
   i:=-1;
   while  not datamodule3.donanim_turu.Eof do
   begin
    i:=i+1;
    a:= (DataModule3.donanim_turu.FieldByName('Donanim_turu').asstring);
    dizi[i] :='a';
    // combobox1.items.add(DataModule3.donanim_turu.FieldByName('Donanim_turu').asstring);
    if ComboBox1.ItemIndex=i then sql:=sql+' and DONANIM_TURU= +dizi[i]';
     form4.Caption:=dizi[i];
     DataModule3.donanim_turu.next;
   end;
bu kod Empty SQL statement hatası veriyor sorgulama yaptırdığımda.
Kullanıcı avatarı
tuna
Üye
Mesajlar: 300
Kayıt: 07 Tem 2008 04:39
Konum: İstanbul

Re: comboboxla sql sorgulama yaptırmak

Mesaj gönderen tuna »

Yukarıda yazdığın yapıyı neden öyle yaptığını anlayamadım ama istersen şöyle yap

Form her create edildiğinde combobox ların içinin doldurucağını düşünerek yazıyorum.

Kod: Tümünü seç

//FORMCREATE Yordamına yazılacak...

var
i:integer;
begin
datamodule3.donanim_turu.First;
for i=0 to datamodule3.donanim_turu.recordcount -1 do
  begin
     combobox1.items.add(DataModule3.donanim_turu.FieldByName('Donanim_turu').asstring);
     datamodule3.donanim_turu.next;
   end;
end; 
dizi neden kullanıyorsun çözemedim açıkçası.


combobox tan her seçim yapıldığı zaman sorgulama yapması için ise aşağıdaki kodu kullan

Kod: Tümünü seç

//combobox'un onchange veya onclick yordamına ekleyebilirsin bu kodu.. yada sorgula butonun varsa onun altına

sql=sql+' and DONANIM_TURU='''+combobox1.text+'''';
Kolay gelsin
gercek_16
Üye
Mesajlar: 108
Kayıt: 19 Haz 2005 02:42
Konum: mersin

Re: comboboxla sql sorgulama yaptırmak

Mesaj gönderen gercek_16 »

evet
sql=sql+' and DONANIM_TURU='''+combobox1.text+'''';
kod çalıştı dizi gibi mecralara kaymamın sebebi sqli yeterince bilmemem yani bu şekilde kullanabileceğimi bilmiyordm, çok teşekkürler.
önerebileceğiniz sql le ilgili bir kaynak olursa sevinirim.
Birde çok önemli değil ama önceki kodda comboboxtan boş satırı seçince bütün kayıtları getiriyordu, bunda getirmiyor, bunu sağlamanın yolu varmı.
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: comboboxla sql sorgulama yaptırmak

Mesaj gönderen conari »

Cobobox ı kontrol et.
if then else
boş ise sorguya ekleme olsun bitsin.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
tuna
Üye
Mesajlar: 300
Kayıt: 07 Tem 2008 04:39
Konum: İstanbul

Re: comboboxla sql sorgulama yaptırmak

Mesaj gönderen tuna »

conari nin dediği gibi yapabilirsin.

Sorgulamaya başlamadan önce bir if koyup sorgulamaya karar verebilirsin.

Sql kaynağı için ise internette çok sayıda kaynak var. Hemen hemen bir çok problemine çözüm bula bilirsin. Belli başlı önerebileceğim bi yer yok.

Kolay gelsin.
Cevapla