SQL de sorgulamada seçme problemi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

SQL de sorgulamada seçme problemi

Mesaj gönderen tayipk »

merhaba arkadaşlar hepinize kolay gelsin. benim sorunum şöyledir ki sql de yazmış olduğum sorguda seçme yaptırmak istiyorum örneğin bir rapor ekranı düşünün sadece KDV si 18 olan yada ürün grubu DENEME olan yada KDV yi seçmedim sadece Urun Grubu DENEME olan lar gelsin gibi şimdi

Kod: Tümünü seç

set dateformat dmy select Urun_adi,tstok.satis_fiyati,Stok_gurup,'
                   +'tstokhar.KDV,sum(Giren) as giriş,SUM(Cikan) as çıkan,SUM(Alıis_tutari)'
                   +' as alıştoplam,(SUM(giren)-SUM(Cikan)) as miktar,ROUND((SUM(Alıis_tutari)'
                   +'/NULLIF(SUM(Giren),0)),4) as bmaliyet,ROUND((SUM(Alıis_tutari)/NULLIF(SUM(Giren)'
                   +',0)*(SUM(Giren)-SUM(Cikan))),4) toplam from TStokhar right join TStok on'
                   +' TStokhar.Urun_id=tstok.Stok_id where Fatura_Tarihi between '''+DateToStr(maliyettarihi)+''''
                   +' and '''+DateToStr(tarih2.Date)+''' and Islem_tipi in (''A'',''S'',''HS'',''PS'',''PVS'') and'
                   +' isnull(tstokhar.KDV,'''')='''+KDV.Text+''' and isnull(tstokhar.stok_gurup,'''')='''+urungrubu.Text+'''  group by Urun_adi,'
                   +'Stok_gurup,tstokhar.KDV,tstok.satis_fiyati HAVING (SUM(Giren)-SUM(Cikan))>0';
yukarıdaki kodda bir envanter raporu oluşturmaya çalışıyorum fakat kullanıcı sadece KDV si 18 olanları isteyebilir yada Sadece Ürün grubu DENEME olanları isteyebilir böyle bir durumda benim seçim yaptırdığım combolardan 1 ve ya 2 si boş kalacak.

Kod: Tümünü seç

isnull(tstokhar.KDV,'''') LIKE ''%'+KDV.Text+'%'' and isnull(tstokhar.stok_gurup,'''') LIKE ''%'+urungrubu.Text+'%''
şeklinde düzenleyince iki combo boşken istediğim raporu veriyor herşeyi döküyor ama KDV 18 diye seçince bu sefer Hem KDV 18 ler Hemde KDV 8 olanlar rapora dökülüyor benim derdim KDV 18 diye seçtim KDV=18 bütün ürünler sorgulansın Ama KDV seçmezsemde tümü sorgulansın. Umarım sorunumu siz değerli arkadaşlarıma anlatabilmişimdir. yardımlarınız için şimdiden teşekkürederim.
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
xxxjedixxx
Üye
Mesajlar: 216
Kayıt: 10 Ara 2013 03:50

Re: SQL de sorgulamada seçme problemi

Mesaj gönderen xxxjedixxx »

Merhaba,

Çözüm için şöyle bir yol izlesen daha kolay olmaz mı? Örnek veriyorum;

Query.SQl.Text := ' select .... from tablo .... Where tarih between .... and islemtipi in (''A'', ....''PVS'')'; // sadece sabit olan şartlara kadar yaz

if KDV.Text <> '' then
Query.SQL.Text := Query.SQL.Text + ' and tstokhar.kdv = ''' + KDV.Text + '''';

if urungrubu.text <> '' then
Query.SQL.Text := Query.SQL.Text + ' and tstokhar.stokgurup = ''' + KDV.Text + '''';

Query.SQL.Text := Query.SQL.Text + ' group by .... having ....';

Anlayacağın üzere dinamik bir SQL metni yapmış oluyoruz. Bu şekilde her durum için çalışır bir sorgun olur.
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: SQL de sorgulamada seçme problemi

Mesaj gönderen tayipk »

xxxjedixxx hocam gösterdiğin yöntem için çok teşekkürederim işimi ziyadesiyle gördü , işimi gördüğüyle beraber bana yeni bir bilgi göstermiş,öğretmiş oldun emeğine sağlık çok teşekkürederim.
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
Cevapla