tabloda coklu sorgu calistirabilmek

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
fuchserdar
Üye
Mesajlar: 4
Kayıt: 03 Tem 2009 04:31

tabloda coklu sorgu calistirabilmek

Mesaj gönderen fuchserdar »

sql := 'SELECT * FROM TABLO WHERE ' ;

if Length(editAdı.Text) > 0 then
sql := sql + 'ADI = ' + QuotedStr(editAdı.Text) ;
if Length(editSoyAdı.Text) > 0 then
sql := sql + ' AND SOYADI = ' + QuotedStr(editSoyAdı.Text) ;
if Length(editDogumYeri.Text) > 0 then
sql := sql + ' AND DOGUM_YERI = ' + QuotedStr(editDogumYeri.Text) ;
if Length(editDogumTarihi.Text) > 0 then
sql := sql + ' AND DOGUM_TARIHI = ' + QuotedStr(editDogumTarihi.Text) ;



ARKADASLAR yukarıdaki kodu MSSQL SERVERDA NASIL YAZARIM ACABA (asagidakine benzer bir sekilde)
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from deneme Where ADI Like'+#39'%'+edit1.Text+'%'+#39);
ADOQUERY1.Open;

MESELA 4 TANE Sütunum var ve ben bir tane buton ile 4 tane edit kutusunda sorgu yapmak istiyorum yukarıdaki gibi
Kullanıcı avatarı
Rew33
Üye
Mesajlar: 70
Kayıt: 10 Tem 2009 02:28

Re: tabloda coklu sorgu calistirabilmek

Mesaj gönderen Rew33 »

belki tam istediğin değil ama sqli koşulsuz olarak aç sonra queryin filtreleme özelliğini kullanarak istediğin şartlara göre filitrele...
Kimseye hiçbir şey öğretemem, sadece onların düşünmelerini sağlayabilirim.
SOKRATES
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Re: tabloda coklu sorgu calistirabilmek

Mesaj gönderen Kuri_YJ »

Selamlar,

Rew arkadaşımızın tavsiyesi, kısıtlı kayıt sayısındaki tablolarda verimli olabilir ama kayıt sayısı yüksek tablolarda performansınızı mahveder.

Şimdi gelelim sorunuza,

Öncelikle, Query'lerin ParamByName gibi parametrelerini set edebilirsiniz. Bunu neden söylüyorum. Tarih, saat, float alan, string alan gibi sorgulamada Where şartınıza eklediğiniz bilgileri aktarırken Windows'un Locale settingsleri nedeniyle başınız ağrımaz.

Şöyle örnekleyelim,

Kod: Tümünü seç

  SELECT *
  FROM TBL_STOK_HAREKET
  WHERE STK_TARIH >= :DT_TARIH1 
    AND STK_TARIH <= :DT_TARIH2
Bu kodu,

Kod: Tümünü seç

  AdoQuery1.Close ;
  AdoQuery1.SQL.Text := 'SELECT * '
  +'FROM TBL_STOK_HAREKET '
  +'WHERE STK_TARIH >= :DT_TARIH1  '
   +' AND STK_TARIH <= :DT_TARIH2 ';
  AdoQuery1.ParamByName('DT_TARIH1').AsDateTime := edtTarih1.DateTime ;
  AdoQuery1.ParamByName('DT_TARIH2').AsDateTime := edtTarih2.DateTime ;
  AdoQuery1.Open ;
Şimdi bu tarz kullanımlarda sıkıntı çekmeden, tarih saat formatı ne olursa olsun sorgulama çekebilirsiniz. Aynı şeyi string veya float alanlarda da uygulayabilirisiniz.

Kolay Gelsin.

Not : Sanırım AdoQuery'de ParamByName özelliği sanki bir başka propertynin altındaydı galiba ona dikkat edin. Şu anda hatırlayamadım.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Cevapla