iki tarih arası sorgu ve toplam alamıyorum
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 2
- Kayıt: 11 Eki 2015 10:26
iki tarih arası sorgu ve toplam alamıyorum
ama delphi de bi türlü dogru çalışmıyor
aşagıdaki kodla iki tarih arası listeliyorum
istedigim şey satırların tutar alanını alt alta toplasın bunun için 'select sum (tutar) as toplam from sat' böyle bi kod yazıyorum yine olmuyor
sizce nasıl yapmalıyım
qryRapor.Active:=False;
qryRapor.Close;
qryRapor.SQL.Clear;
qryRapor.SQL.Text:= 'select * from sat ' + 'where TARIH>=' + ''''+DateToStr(DateTimePicker1.Date)+''''+ ' AND ' + ' TARIH<='+ ''''+DateToStr(DateTimePicker2.Date)+''''+ 'order by tarih ';
qryRapor.Active:=True;
Re: iki tarih arası sorgu ve toplam alamıyorum
Kod: Tümünü seç
qryRapor.SQL.Text:=
'select * from sat ' +
'where TARIH>='+QuotedStr(FormatDateTime( 'yyyy-mm-dd',DateTimePicker1.Date)+
' AND TARIH<='+QuotedStr(FormatDateTime( 'yyyy-mm-dd',DateTimePicker2.Date)+
'order by tarih ';
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
-
- Üye
- Mesajlar: 2
- Kayıt: 11 Eki 2015 10:26
Re: iki tarih arası sorgu ve toplam alamıyorum
Cevabın için teşekkür ederim kardeş
veri tabanı sutunlarım şu şekilde
paradox veritabanı
sırano----otomatik sayı +-
tarih-------date
ürünkod-----string
ürünadı------string
açıklama---string
adet-------integer
tutar-----currence
sıra no ve tarih index sutunlar
tam olarak yapmak istedigim şey iki tarih arası kayıtların tutarlarını almak istiyorum
aşagıdaki kod çalışıyor fakat sadece iki tarih arası listeleme yapıyor toplama yapmıyor
tutar alanının toplatıp nasıl yazdırabilirim acaba edit label dbgrid farketmez nereye yazdıgı
bu arada vermiş oldugunuz kadu çalıştıramadım
vereceginiz cevaplar için şimdiden Teşekkür ederim saygılarımla
qryRapor.Active:=False;
qryRapor.Close;
qryRapor.SQL.Clear;
qryRapor.SQL.Text:= 'select * from sat ' + 'where TARIH>=' + ''''+DateToStr(DateTimePicker1.Date)+''''+ ' AND ' + ' TARIH<='+ ''''+DateToStr(DateTimePicker2.Date)+''''+ 'order by tarih ';
qryRapor.Active:=True;
veri tabanı sutunlarım şu şekilde
paradox veritabanı
sırano----otomatik sayı +-
tarih-------date
ürünkod-----string
ürünadı------string
açıklama---string
adet-------integer
tutar-----currence
sıra no ve tarih index sutunlar
tam olarak yapmak istedigim şey iki tarih arası kayıtların tutarlarını almak istiyorum
aşagıdaki kod çalışıyor fakat sadece iki tarih arası listeleme yapıyor toplama yapmıyor
tutar alanının toplatıp nasıl yazdırabilirim acaba edit label dbgrid farketmez nereye yazdıgı
bu arada vermiş oldugunuz kadu çalıştıramadım
vereceginiz cevaplar için şimdiden Teşekkür ederim saygılarımla
qryRapor.Active:=False;
qryRapor.Close;
qryRapor.SQL.Clear;
qryRapor.SQL.Text:= 'select * from sat ' + 'where TARIH>=' + ''''+DateToStr(DateTimePicker1.Date)+''''+ ' AND ' + ' TARIH<='+ ''''+DateToStr(DateTimePicker2.Date)+''''+ 'order by tarih ';
qryRapor.Active:=True;
- Dosya ekleri
-
- res111.JPG (12.93 KiB) 2502 kere görüntülendi
Re: iki tarih arası sorgu ve toplam alamıyorum
Eğer database içinde Türkçe karakterler ile alan adı tanımlandı ise aşağıdaki gibi tek tırnak içinde yazman gerekebilir. Eğer tek tırnak ile hata alırsan çift tırnak ile deneyebilirsin. Kullandığın database'e göre format değişebilir. Türkçe karakter yoksa tırnak veya çift tırnak gerekmez.
Daha önce xozcanx 'in dediği gibi SQL içinde tarih formatı yıl-ay-gün şeklinde verilmesi gerekmektedir. DateToStr kullanmayıp FormatDateTime ile olması gereken formata dönüştürmen gerekir.
Daha önce xozcanx 'in dediği gibi SQL içinde tarih formatı yıl-ay-gün şeklinde verilmesi gerekmektedir. DateToStr kullanmayıp FormatDateTime ile olması gereken formata dönüştürmen gerekir.
Kod: Tümünü seç
qryRapor.SQL.Text:= 'select ''ürünkod'',''ürünadı'',sum(adet),sum(tutar) from sat ' + 'where TARIH>=' + ''''+FormatDateTime('yyyy-mm-dd', DateTimePicker1.Date)+''''+ ' AND ' + ' TARIH<='+ ''''+FormatDateTime('yyyy-mm-dd', DateTimePicker2.Date)+''''+ 'order by tarih ';
-
- Üye
- Mesajlar: 216
- Kayıt: 10 Ara 2013 03:50
Re: iki tarih arası sorgu ve toplam alamıyorum
Merhaba,
Tarih alanları için parametre kullanmanızı öneririm. Örnek olarak sadece where cümlesinden itibaren yazıyorum.
' ... Where tarih between :ptarih1 and :ptarih2 order by tarih';
qryRapor.Parameters.ParamValues['ptarih1'] := DateTimePicker1.Date;
qryRapor.Parameters.ParamValues['ptarih2'] := DateTimePicker2.Date;
qryRapor.Active := True;
Edit:
Ayrıca sorgunuzda toplam aldığınız alan ile birlikte başka alanlar da varsa "group by" cümlesini yazmalısınız.
Örneğin;
Select malzeme, sum(miktar) as ToplamMiktar from tablo where tarih between :ptarih1 and :ptarih2 group by malzeme order by malzeme
Bu sorgu malzeme malzeme toplamları getirir.
Select tarih, malzeme, sum(miktar) as TopMiktar from tablo where tarih between :ptarih1 and :ptarih2 group by tarih, malzeme order by tarih, malzeme
Bu sorgu da, tarih ve malzemeye göre toplamlar alır.
Ama sorguda daima tekil (unique) olan bir alanı da isterseniz (kayıt numarası gibi) aldığınız toplamın hiç bir anlamı olmaz, düz liste çekmiş gibi bir sonuç alırsınız. Sorguda toplamlar, tekrar eden verilere göre alınır (Malzeme, tarih, müşteri, satıcı vs).
Tarih alanları için parametre kullanmanızı öneririm. Örnek olarak sadece where cümlesinden itibaren yazıyorum.
' ... Where tarih between :ptarih1 and :ptarih2 order by tarih';
qryRapor.Parameters.ParamValues['ptarih1'] := DateTimePicker1.Date;
qryRapor.Parameters.ParamValues['ptarih2'] := DateTimePicker2.Date;
qryRapor.Active := True;
Edit:
Ayrıca sorgunuzda toplam aldığınız alan ile birlikte başka alanlar da varsa "group by" cümlesini yazmalısınız.
Örneğin;
Select malzeme, sum(miktar) as ToplamMiktar from tablo where tarih between :ptarih1 and :ptarih2 group by malzeme order by malzeme
Bu sorgu malzeme malzeme toplamları getirir.
Select tarih, malzeme, sum(miktar) as TopMiktar from tablo where tarih between :ptarih1 and :ptarih2 group by tarih, malzeme order by tarih, malzeme
Bu sorgu da, tarih ve malzemeye göre toplamlar alır.
Ama sorguda daima tekil (unique) olan bir alanı da isterseniz (kayıt numarası gibi) aldığınız toplamın hiç bir anlamı olmaz, düz liste çekmiş gibi bir sonuç alırsınız. Sorguda toplamlar, tekrar eden verilere göre alınır (Malzeme, tarih, müşteri, satıcı vs).