db grid toplama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

db grid toplama

Mesaj gönderen bobasturk »

Merhabalar,

forumda baya geçmiş bu konu. bir topikte toplanacak alanın integer olması gerekiyor diye söylenmiş. sorunuma gelince tablomda giristutarı isimli float alanım var. deneme amaçlı 4 adet kayıt girdim ve sorgulama kısmında iki tarih aralığında kayıtları bulduruyorum ardından girismiktarı alanı(integer) ile giristutarı(float) alanlarını toplatmak istiyorum ve iki dbedit içinde göstermek istiyorum. kod çalışıyor ve kayıtları buluyor toplamları alıyor görünüyor. burada soruna geliyoruz. bu dört adet kayıdın üçüncü sırasında bulunan verinin girismiktarı ve giristutarını veriyor kod. baya garip geldi boş dönmüyor hata vermiyor üçüncü sıradaki kayıtın sonucunu veriyor. forumda geçen örnekleri inceledim benim koddan farkı yok gibi ama bir yerde de hata yaptağım belli. daha iyi anlaşılabilmesi için kodları veriyorum.

Kod: Tümünü seç

procedure TFormUrunGirisSrg.JvXPButton7Click(Sender: TObject);
var
  tarih1,tarih2:tdate;
  begin
     urungirissrgibquery.Close;
     urungirissrgibquery.SQL.Clear;
     urungirissrgibquery.SQL.Add('select*from URUN_GIRIS');
     urungirissrgibquery.SQL.Add('Where GIRIS_TARIHI Between :tarih1 and :tarih2');
     urungirissrgibquery.ParamByName('tarih1').AsDate:=jvdateedit3.Date;
     urungirissrgibquery.ParamByName('tarih2').AsDate:=jvdateedit4.Date;
     urungirissrgibquery.Open;
     urungirissrgibquery.Last;

  if urungirissrgibquery.IsEmpty then
      showmessage('Aradığınız Kayıt Bulunamadı?');

        miktartoplaibquery.Close;
        miktartoplaibquery.SQL.Clear;
        miktartoplaibquery.SQL.Add('select sum(GIRIS_MIKTARI) AS ADET1');
        miktartoplaibquery.SQL.Add('from URUN_GIRIS');
        miktartoplaibquery.SQL.Add('where GIRIS_TARIHI between :tarih1 and :tarih2');
        miktartoplaibquery.SQL.Add('group by GIRIS_MIKTARI');
        miktartoplaibquery.ParamByName('tarih1').AsDate:=jvdateedit3.Date;
        miktartoplaibquery.ParamByName('tarih2').AsDate:=jvdateedit4.Date;
        miktartoplaibquery.Open;
        miktartoplaibquery.Last;

      if miktartoplaibquery.IsEmpty then
        dbtext2.Caption:='0';

          tutartoplaibquery.Close;
          tutartoplaibquery.SQL.Clear;
          tutartoplaibquery.SQL.Add('select sum(GIRIS_TUTARI) AS ADET2');
          tutartoplaibquery.SQL.Add('from URUN_GIRIS');
          tutartoplaibquery.SQL.Add('where GIRIS_TARIHI between :tarih1 and :tarih2');
          tutartoplaibquery.SQL.Add('group by GIRIS_TUTARI');
          tutartoplaibquery.ParamByName('tarih1').AsDate:=jvdateedit3.Date;
          tutartoplaibquery.ParamByName('tarih2').AsDate:=jvdateedit4.Date;
          tutartoplaibquery.Open;
          tutartoplaibquery.Last;

        if tutartoplaibquery.IsEmpty then
          dbtext3.Caption:='0,00';
end;
biraz acemice kod yazımı sanırım. genelde bir şekil düşünüp yazmaya sonuç almaya çalışıyorum. daha iyi ve güzellerini inceleyerek geliştirmeye çalışıyorum.

kolay gelsin saygılar
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhabalar,

Gereksiz yere ve tam araştırmadan sorduğum bu soruyu aslında silmek istemiştim ama belki birilerine lazım olur diye işine yarar, benim yaptığım hataya düşmez diye silmekten vazgeçtim. Çalışan kodu aşağıda veriyorum. Herkeze kolay gelsin. sabrınız için teşekkürler.

Kod: Tümünü seç

miktartoplaibquery.Close;
        miktartoplaibquery.SQL.Clear;
        miktartoplaibquery.SQL.Add('select sum(CIKIS_MIKTARI) AS ADET1 from URUN_CIKIS');
        miktartoplaibquery.SQL.Add('where CIKIS_TARIHI between :tarih1 and :tarih2');
        miktartoplaibquery.ParamByName('tarih1').AsDate:=jvdateedit3.Date;
        miktartoplaibquery.ParamByName('tarih2').AsDate:=jvdateedit4.Date;
        miktartoplaibquery.Open;
        dbtext2.Caption:=inttostr(miktartoplaibquery.fieldbyname('ADET1').AsInteger);
       
      if miktartoplaibquery.IsEmpty then
        dbtext2.Caption:='0';
:ara madığım için :duvar: :oops:
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Cevapla