SQL cümlesini Query'e eklemek

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7586
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

SQL cümlesini Query'e eklemek

Mesaj gönderen mussimsek »

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.
shadowmann
Üye
Mesajlar: 508
Kayıt: 30 Oca 2004 10:49

Mesaj gönderen shadowmann »

çok teşekkürler.
sen
Üye
Mesajlar: 34
Kayıt: 04 Tem 2003 01:33
Konum: Ankara

Mesaj gönderen sen »

tırnak için #39 de kullanabiliriz. Belki biraz daha okanaklı olabilir.

Query1.SQL.Add('........ TARIH>'+#39+'01.01.2003'+#39);
name
Kıdemli Üye
Mesajlar: 243
Kayıt: 09 Ağu 2003 02:11
Konum: İstanbul

Mesaj gönderen name »

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']));
....
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam.

- Anlatılanlar çok doğru ve ben de bu şekillerde kullanıyorum.

- Bazen delphi'nin bize sunduğu string fonksiyonlarından QuotedStr(String) fonksiyonu da kurtarıcı olabiliyor.

- Bu fonksiyon string ifadenin başına ve sonuna tek tırnak işareti ' koyuyor.

- Ek bilgi olsun diye yazayım istedim.
Resim
Resim ....Resim
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7586
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Delphi'yi bu yönünü çok seviyorum. Bir işi yapmanın bir sürü yolu var. Seç beğen al :)

iyi günler.
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: SQL cümlesini Query'e eklemek

Mesaj gönderen ozcank »

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();
Cevapla