SQL Filitreleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

SQL Filitreleme

Mesaj gönderen ozcank »

Arkadaşlar Merhaba ; Bir konuda yardımınıza ihtiyacım var şöyle ki;

Ön sorgulama alanım var

Stok Kodu
Grup Kodu
Kod1
Kod2
Kod3
Kod4
Kod5

bu alanlardan hangisini yazarsa veya boş bırakırsa filtre etmesini istiyorum,

Kod: Tümünü seç

IF (Edit1.Text='')  OR (Edit2.Text='')  OR (Edit3.Text='')  OR (Edit4.Text='')  OR (Edit5.Text='') OR (Edit6.Text='') OR (Edit7.Text='')  AND
   (Edit1.Text<>'') OR (Edit2.Text='')  OR (Edit3.Text='')  OR (Edit4.Text='')  OR (Edit5.Text='') OR (Edit6.Text='') OR (Edit7.Text='')  AND
   (Edit1.Text='')  OR (Edit2.Text<>'') OR (Edit3.Text='')  OR (Edit4.Text='')  OR (Edit5.Text='') OR (Edit6.Text='') OR (Edit7.Text='')  AND
   (Edit1.Text='')  OR (Edit2.Text='')  OR (Edit3.Text<>'') OR (Edit4.Text='')  OR (Edit5.Text='') OR (Edit6.Text='') OR (Edit7.Text='')  AND
   (Edit1.Text='')  OR (Edit2.Text='')  OR (Edit3.Text='')  OR (Edit4.Text<>'') OR (Edit5.Text='') OR (Edit6.Text='') OR (Edit7.Text='')  AND
   (Edit1.Text='')  OR (Edit2.Text='')  OR (Edit3.Text='')  OR (Edit4.Text='')  OR (Edit5.Text<>'') OR (Edit6.Text='') OR (Edit7.Text='') AND
   (Edit1.Text='')  OR (Edit2.Text='')  OR (Edit3.Text='')  OR (Edit4.Text='')  OR (Edit5.Text<>'') OR (Edit6.Text='') OR (Edit7.Text='') AND
   THEN
Begin
Form26.StokSabit.Close;
Form26.StokSabit.SQL.Clear;
Form26.StokSabit.SQL.Text:='SELECT STOK_KODU,STOK_ADI,GRUP_KODU,SATIS_FIAT1,SATIS_FIAT2,SATIS_FIAT3,SATIS_FIAT4 FROM TBLSTSABIT  ' +
                                            'WHERE STOK_KODU='+#39+''+Edit1.Text+''+#39+' OR GRUP_KODU='+#39+''+Edit2.Text+''+#39+' OR                                     KOD_1='+#39+''+Edit3.Text+''+#39+' OR KOD_2='+#39+''+Edit4.Text+''+#39+' OR KOD_3='+#39+''+Edit5.Text+''+#39+' OR KOD_4='+#39+''+Edit6.Text+''+#39+' OR KOD_5='+#39+''+Edit7.Text+''+#39+'';
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7586
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Re: SQL Filitreleme

Mesaj gönderen mussimsek »

1. Bu tarz kod yazımlarında Edit1, Edit2 gibi bırakmayın. Mutlaka isim verin, EdtStokKodu, EdtGrupKodu gibi.

2. Mantığı biraz ters kurmuşsunuz. Zaten hepsinin boş olması durumunda da kod çalışsın istiyorsunuz. Biz bu tarz durumlarda şöyle yapıyoruz.

Kod: Tümünü seç

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select ... from TBL... where 1=1');
if EdtStokKodu.Text<>'' then
  Query1.SQL.Add('and stok_kod='+ QuotedStr(EdtStokKodu.Text));
if EdtGrupKodu.Text<>'' then
  Query1.SQL.Add('and grup_kod='+ QuotedStr(EdtGrupKodu.Text));
...
Kolay gelsin.
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: SQL Filitreleme

Mesaj gönderen ozcank »

Abi Çok teşekkür ederim yüreğine sağlık. Sizin dediğiniz gibi şu şekilde Yaptım;

Kod: Tümünü seç

[/
Form26.StokSabit.Close;
Form26.StokSabit.SQL.Clear;
Form26.StokSabit.SQL.Add('SELECT STOK_KODU,STOK_ADI,GRUP_KODU,SATIS_FIAT1,SATIS_FIAT2,SATIS_FIAT3,SATIS_FIAT4 FROM TBLSTSABIT WHERE 1=1');
if Edit1.Text<>'' then
   Form26.StokSabit.SQL.Add('And Stok_Kodu='+ QuotedStr(Edit1.Text));
if Edit2.Text<>'' then
   Form26.StokSabit.SQL.Add('And Grup_Kodu='+ QuotedStr(Edit2.Text));
if Edit3.Text<>'' then
   Form26.StokSabit.SQL.Add('And Kod_1='+ QuotedStr(Edit3.Text));
if Edit4.Text<>'' then
   Form26.StokSabit.SQL.Add('And Kod_2='+ QuotedStr(Edit4.Text));
if Edit5.Text<>'' then
   Form26.StokSabit.SQL.Add('And Kod_3='+ QuotedStr(Edit5.Text));
if Edit6.Text<>'' then
   Form26.StokSabit.SQL.Add('And Kod_4='+ QuotedStr(Edit6.Text));
if Edit7.Text<>'' then
   Form26.StokSabit.SQL.Add('And Kod_5='+ QuotedStr(Edit7.Text));
if Edit8.Text<>'' then
   Form26.StokSabit.SQL.Add('And Depo_Kodu='+ QuotedStr(Edit8.Text));
if Edit9.Text<>'' then
   Form26.StokSabit.SQL.Add('And Sube_Kodu='+ QuotedStr(Edit9.Text));
Form26.StokSabit.Open;
Form25.Hide;
Form26.Show;
code]
Cevapla