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: 7449
Kayıt: 09 Haz 2003 11:26
Konum: İstanbul
İletişim:

SQL cümlesini Query'e eklemek

Mesaj gönderen mussimsek » 18 Ağu 2003 08:31

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 » 30 Oca 2004 12:58

çok teşekkürler.

sen
Üye
Mesajlar: 34
Kayıt: 04 Tem 2003 12:33
Konum: Ankara

Mesaj gönderen sen » 03 Şub 2004 08:27

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 01:11
Konum: İstanbul

Mesaj gönderen name » 03 Şub 2004 11:22

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: 4717
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Mesaj gönderen mrmarman » 04 Şub 2004 07:17

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

Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7449
Kayıt: 09 Haz 2003 11:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek » 04 Şub 2004 08:32

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: 791
Kayıt: 28 Nis 2005 04:29

Re: SQL cümlesini Query'e eklemek

Mesaj gönderen ozcank » 28 Eyl 2016 11:29

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