Şu SQL sorgularına bir bakarmısın?,beceremedim bir türlü...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Şu SQL sorgularına bir bakarmısın?,beceremedim bir türlü...

Mesaj gönderen serkan »

selam arkadaşlar program içerisinde kullandığım şöyle bir sql kodu var:

Kod: Tümünü seç

Stokkartrpr.Close;
Stokkartrpr.SelectSQL.Clear;
Stokkartrpr.SelectSQL.Add('select stokkodu,stokadi,sum(giris),sum(cikis) from STOKHRKT where stokkodu is not null ');
Stokkartrpr.SelectSQL.Add('and tarih<='+#39+datetostr(T1.date)+#39);
Stokkartrpr.SelectSQL.Add('and CINSI=''FATURA'' or CINSI=''ÜRETİM'' or CINSI=''İRSALİYE'' or CINSI=''ÜRETİM HAR.''or CINSI=''SARF ÇIKIŞI''');
if e1.Text<>'' then Stokkartrpr.SelectSQL.Add('and stokkodu>='+Quotedstr(''+E1.Text+''));
if e5.Text<>'' then Stokkartrpr.SelectSQL.Add('and stokkodu<='+Quotedstr(''+E5.Text+''));
if e2.Text<>'' then Stokkartrpr.SelectSQL.Add('and stokadi>='+Quotedstr(''+E2.Text+''));
if e6.Text<>'' then Stokkartrpr.SelectSQL.Add('and stokadi<='+Quotedstr(''+E6.Text+''));
Stokkartrpr.SelectSQL.Add('group by stokkodu,stokadi');
Stokkartrpr.SelectSQL.Add('order by stokkodu');
Stokkartrpr.Open;
yukarıda sonuç döndürüyor ama örneğin E1.text ile E5.Text de yazan stokkodu aralığını getir dediğimde laf dinlemiyor,yine tüm stokları gösteriyor yani stokkodu veya stokadı alanına göre aralık veremedim bir türlü..
otorun
Üye
Mesajlar: 59
Kayıt: 31 Eki 2005 05:04
Konum: izmir

Mesaj gönderen otorun »

arkadaşım veritabanı olarak ne kullanıyorsun ve sadece stokkodu ve stok alanına göre mi srogulama yapacaksın ?Eğer veritabanın türkçe karakterler kullanmaya müsade ediyorsa doğru ama türkçe karakter kullanmna müsade etmiyorsa onlara dikkat et derim geri kalanı bence doğru eğer yanlışı gören varsa söylerse bizde öğreniriz iyi olur kolay gelsin
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

verdiğin stok aralığı acabı kıstasa uyuyormu ayrıca neden Between kullanmıyorsunuz..
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

Firebird ve IBX kullanıyorum.Amacım verilen tarihten önceki stok hareketlerinde girenler ile çıkanları toplayıp onuda calculated olarak birbirinden çıkarıp verilen tarihteki bakiyeyi bulmak geriye dönük depo durumu yani.verdiğim aralıklar uyuyor uymasada zaten yine tüm kayıtları getiriyor yani kıstas verdiğimde boş getirse anlarım kıstasta versem hepsini getiriyor..
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Her zaman Mustafa Hocanın değiği gibi Oluşan Sql cümlesini Bence bir Memo ya aktarıp IBconsol dan çalıştır. İsteğin veri geliyormu.

Kod: Tümünü seç

Stokkartrpr.SelectSQL.Add('and CINSI=''FATURA'' or CINSI=''ÜRETİM'' or CINSI=''İRSALİYE'' or CINSI=''ÜRETİM HAR.''or CINSI=''SARF ÇIKIŞI'''); 
Burda da OR yerine IN kullanabilirsin sanıyorum Firebird de olaması lazım dı..galiba..
doganzorlu
Kıdemli Üye
Mesajlar: 395
Kayıt: 22 Tem 2004 09:15
Konum: İzmir
İletişim:

Mesaj gönderen doganzorlu »

Selam,

x and y and (t or f or) and dd < 22

gibi or olanları parantez içine almalısınız.
Doğan Zorlu, İzmir

------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

OR demek birinden biri sağlanıyorsa demek. Eğer aynı koşul içersinde AND ler var ise aralarında OR olanlar parantez içerisine alınmalı... Doğan hoca ufak bir el sürçmesi ile cevaplamış gerçi ama ...

Kod: Tümünü seç

x and y and (t or f or g) and dd < 22

Kod: Tümünü seç

Stokkartrpr.Close;
Stokkartrpr.SelectSQL.Clear;
Stokkartrpr.SelectSQL.Add('select stokkodu,stokadi,sum(giris),sum(cikis) from STOKHRKT where stokkodu is not null ');
Stokkartrpr.SelectSQL.Add(' and tarih<='+#39+datetostr(T1.date)+#39);
Stokkartrpr.SelectSQL.Add(' and ( CINSI=''FATURA'' or CINSI=''ÜRETİM'' or CINSI=''İRSALİYE'' or CINSI=''ÜRETİM HAR.'' or CINSI=''SARF ÇIKIŞI''' ) );
if e1.Text<>'' then Stokkartrpr.SelectSQL.Add(' and stokkodu>='+Quotedstr(''+E1.Text+''));
if e5.Text<>'' then Stokkartrpr.SelectSQL.Add(' and stokkodu<='+Quotedstr(''+E5.Text+''));
if e2.Text<>'' then Stokkartrpr.SelectSQL.Add(' and stokadi>='+Quotedstr(''+E2.Text+''));
if e6.Text<>'' then Stokkartrpr.SelectSQL.Add(' and stokadi<='+Quotedstr(''+E6.Text+''));
Stokkartrpr.SelectSQL.Add('group by stokkodu,stokadi');
Stokkartrpr.SelectSQL.Add('order by stokkodu');
Stokkartrpr.Open; 
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla