Merhaba,
sorulan sorularda genelde SQL cümlesi olarak cevaplar yazılır. Bu cümleyi bildikten sonra, bunu Query'e eklemek basit bir olaydır. Dikkat edilmesi gereken birkaç husus var, bunlar:
1. Delphi'de bir stringe tek tırnak (') eklemek için kodda iki tane tek tırnak koymanız lazım. Mesela Tarihlerde TARIH>'01.01.2003' diyecekseniz, kodda :
Query1.SQL.Add('........ TARIH>''01.01.2003'');
şeklinde yazmanız lazım.
2. Stringleri + ile birbirine bağlıyoruz. Diyelimki yukardaki örnekteki Tarih'i, Edit1'den almak istiyorsunuz; bu durumda tek tırnaklara da dikkat ederek
Query1.SQL.Add('........ TARIH>''' + Edit1.Text + '''');
* TARIH> den sonra 3 tane tek tırnak var, bunlardan ikisi tarihten önceki tek tırnak için, sonuncusu ise o stringin bitiş tırnağı.
* en sonda 4 tane tek tırnak var. ilki stringin açış tırnağı, sonraki ikisi tarihi kapatmak için tek tırnak, en sonuncusu da stringin bitiş tırnağı.
3. En son cümlenizi kontrol etmek istiyorsanız, Query'i açmadan önce aşağıdaki komutla, eklediğiniz SQL cümlesini görüp nerde yanlış yaptığını anlayabilirsiniz.
ShowMessage(Query1.SQL.Text);
Kolay gelsin.
SQL cümlesini Query'e eklemek
Yukarıdaki anlatılanlara alternatif aşağıdaki kodda kullanılabilir.
Kod: Tümünü seç
var
strsql:string='select AD,SOYAD from FIRMA where AD like :P1 order by %s';
....
IBQuery1.SQL.Add(Format(strsql,['AD']));
....
//yada
var
strsql:string='select ID,ACK,GIRIS from KASA where ID=:P1 and TARIH>''%s''';
....
IBQuery1.SQL.Add(Format(strsql,['01.01.2003']));
....
Re: SQL cümlesini Query'e eklemek
Merhaba
Bu şekilde kullandım hata veriyor yardımcı olabilir misiniz?
ESILRapor.sql.clear;
ESILRapor.sql:='SELECT ESTOK_KODU,ESTOK_ADI,EOLCU_BR1,EFISNO,ECARI_ISIM,;
SUM(CASE WHEN EGCTIP='G' then ESTHAR_GCMIK else 0 end) [Giren Mik.],
SUM(CASE WHEN EGCTIP='C' then ESTHAR_GCMIK else 0 end) [Çıkan Mik.],
SUM((CASE WHEN EGCTIP='G' then ESTHAR_GCMIK else 0 end)-(CASE WHEN EGCTIP='C' then ESTHAR_GCMIK else 0 end)) [Kalan Mik.]
FROM TBLEMANET GROUP BY ESTOK_KODU,ESTOK_ADI,EOLCU_BR1,EFISNO,ECARI_ISIM
HAVING SUM((CASE WHEN EGCTIP='G' then ESTHAR_GCMIK else 0 end)-(CASE WHEN EGCTIP='C' then ESTHAR_GCMIK else 0 end)) <= 0';
ESILRapor.Close();
ESILRapor.Prepare();
ESILRapor.Open();
Bu şekilde kullandım hata veriyor yardımcı olabilir misiniz?
ESILRapor.sql.clear;
ESILRapor.sql:='SELECT ESTOK_KODU,ESTOK_ADI,EOLCU_BR1,EFISNO,ECARI_ISIM,;
SUM(CASE WHEN EGCTIP='G' then ESTHAR_GCMIK else 0 end) [Giren Mik.],
SUM(CASE WHEN EGCTIP='C' then ESTHAR_GCMIK else 0 end) [Çıkan Mik.],
SUM((CASE WHEN EGCTIP='G' then ESTHAR_GCMIK else 0 end)-(CASE WHEN EGCTIP='C' then ESTHAR_GCMIK else 0 end)) [Kalan Mik.]
FROM TBLEMANET GROUP BY ESTOK_KODU,ESTOK_ADI,EOLCU_BR1,EFISNO,ECARI_ISIM
HAVING SUM((CASE WHEN EGCTIP='G' then ESTHAR_GCMIK else 0 end)-(CASE WHEN EGCTIP='C' then ESTHAR_GCMIK else 0 end)) <= 0';
ESILRapor.Close();
ESILRapor.Prepare();
ESILRapor.Open();