Kod daki hata ne acaba?

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

Kod daki hata ne acaba?

Mesaj gönderen bobasturk »

Merhaba arkadaşlar herkese iyi akşamlar.

Forumda gördüğüm kadari ile bayağı yoğun bi gün olmuş.

Kod: Tümünü seç

procedure TFormAyrinti.BitBtn9Click(Sender: TObject);
begin
  ibquery3.Close ;
  ibquery3.sql.Clear ;
  ibquery3.SQL.Add('select sum(AIDMIKTARI),sum(AIDODEME),SUM(SICSUPARA),sum(SICSUODEME),SUM(ESKIBORC),SUM(ESKBRCODEM) FROM AIDATLAR');
  ibquery3.Open;

  edit1.Text :=floattostr(ibquery3.Fields[0].AsFloat);
  edit2.Text :=floattostr(ibquery3.Fields[1].AsFloat);
  edit4.Text :=floattostr(ibquery3.Fields[2].AsFloat);
  edit5.Text :=floattostr(ibquery3.Fields[3].AsFloat);
  edit7.Text :=floattostr(ibquery3.Fields[4].AsFloat);
  edit8.Text :=floattostr(ibquery3.Fields[5].AsFloat);
end;

procedure TFormAyrinti.BitBtn10Click(Sender: TObject);
begin
  ibquery4.Close;
  ibquery4.SQL.Clear;
  ibquery4.SQL.Add('select sum(AIDMIKTARI),SUM(AIDODEME),SUM(SICSUPARA),SUM(SICSUODEME),SUM(ESKIBORC),SUM(ESKBRCODEM) FROM AIDATLAR');
  ibquery4.Open;

  edit1.Text :=floattostr(ibquery4.Fields[0].AsFloat);
  edit2.Text :=floattostr(ibquery4.Fields[1].AsFloat);
  edit4.Text :=floattostr(ibquery4.Fields[2].AsFloat);
  edit5.Text :=floattostr(ibquery4.Fields[3].AsFloat);
  edit7.Text :=floattostr(ibquery4.Fields[4].AsFloat);
  edit8.Text :=floattostr(ibquery4.Fields[5].AsFloat);
end;
sorgulama yaptıktan sonra dmbgride dökülen verilerin bazı alanlarında toplama yaptıktan sonra sonucları editler içinde gösteriyorum.

iki ayrı kriter girilerek yapılan sorgulama yapım var ve haliyle iki ayrı dbgrid var bunları ayrı ayrı kullanarak içindeki toplamları almak ve ortak kullanılacak olan editler içinde sonucu göstermek istiyorum. Bunu yapabildiğimi sandım ama ibquery4 le yapılan toplama işleminde editlere sonuç olarak ibquery3 ün toplamını yazıyor. Kendi toplamını yazmıyor.

Veritabanım Firebird ve delphi 7 kullanıyorum. burada sadece editler ortak kullanılıyor. Diğer bileşenler ayrı ayrı tablo aynı. Sonucların sorgulara göre farklı çıkması lazım ama buton 10 basınca buton9 da alınması gereken sonucu veriyor buda işi karıştırıyor.

acaba nerede hata yapıyoruz.
Önce editleri her iki butonda da temizlemesini istemek işi düzeltirmi.
Buton 10 da bu işi yapmak istedim oldu sandım ama sonra anlattığım bu hata ile karşılaştım.

saygılarla
hayırlı çalışmalar
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

ibquery3 ü kaldırdım kullanımdan. Sadete ibquery4 ile yapılan toplama işi kaldı sorgulamada çıkan veri bir kayıt.

Toplama işleminde AIDMIKTARI, AIDODEME,SICSUPARA VE SICSUODEM alanlarını iki katı olarak topluyor.

sorgulama alanlarım tek kriter girişli DAIRENO ile yapılan sorgu var diğer sorgulama alanım iki tarih arası sorgulama yapıyor. Deneme amaçlı iki kayıt var veri tabanımda. daire no ile yaptığım sorguda tek kayıt çıkıyor. Tarihler arası yapınca hali hazırda olan iki kayıtta çıkıyor. Daire no ile yapılan sorgulamanın toplamını almak isteyince sonuç olarak iki tarih arası yapılan sorgulamada çıkan iki kayıdın toplamlarını veriyor. Kafam iyice karıştı iki tarih arası yapılan sorgulamanın toplama kısmını kaldırdığım halde yinede aynı sonucu veriyor buradan anladığım kadarı ile sorgulama sonucunu değilde sanki tabloda kayıtlı olan verilerin ilgili alanlarını topluyor gibi

bu durumda ne yapmalıyım acaba.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

S.A. Ustalar.

Sanırım sorunumu anladım yaptığım işlem ile tüm tablodaki kayıtların toplamını alıyorum aysaki ben

Kod: Tümünü seç

procedure TFormAyrinti.BitBtn2Click(Sender: TObject);
var
  Tarih1,Tarih2:TDate;
  begin
   ibquery2.Close;
   ibquery2.SQL.Clear;
   ibquery2.SQL.Add('select*from AIDATLAR');
   ibquery2.SQL.Add('where ODTARIHI Between :Tarih1 and :Tarih2');
   ibquery2.ParamByName('Tarih1').AsDate :=DateTimePicker1.Date;
   ibquery2.ParamByName('Tarih2').AsDate :=DateTimePicker2.Date;
   ibquery2.Open;

   if ibquery2.RecordCount =0 then
   showmessage('Aradığınız Kayıtlar Bulunamadı?');

end;
kod ile sorguladığım ve gride dökülen verilerin toplamını almak istiyorum. Ve bu işi yanlış yerde yanlış kod ile yapıyorum.

bu mevcut koda toplama işlemini nasıl ekleyebilirim ve her toplanan alanın ayrı ayrı editlerde gösterilmesini sağlayabilirim.?

Özür, Teşekkür ve saygılarla
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Kod: Tümünü seç

procedure TFormAyrinti.BitBtn2Click(Sender: TObject);
var
  Tarih1,Tarih2:TDate;
  begin
   ibquery2.Close;
   ibquery2.SQL.Clear;
   ibquery2.SQL.Add('select Sum(ToplanacakField) from AIDATLAR');
   ibquery2.SQL.Add('where ODTARIHI Between :Tarih1 and :Tarih2');
   ibquery2.ParamByName('Tarih1').AsDate :=DateTimePicker1.Date;
   ibquery2.ParamByName('Tarih2').AsDate :=DateTimePicker2.Date;
   ibquery2.Open;
end;
Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Hüseyin abi teşekkür ederim yardımın sayesinde kodu bu şekil düzenledim

Kod: Tümünü seç

procedure TFormAyrinti.BitBtn1Click(Sender: TObject);
begin
  ibquery1.Close;
  ibquery1.SQL.Clear;
  ibquery1.SQL.Add('select SUM(AIDMIKTARI),SUM(AIDODEME),SUM(SICSUPARA),SUM(SICSUODEME),SUM(ESKIBORC),SUM(ESKBRCODEM) from AIDATLAR');
  ibquery1.SQL.Add('where DAIRENO LIKE :DAIRENO');
  ibquery1.ParamByName('DAIRENO').AsInteger :=strtoint(edit10.Text);
  ibquery1.Open;

  if ibquery1.RecordCount =0 then
  showmessage('Aradığınız Kayıt Bulunamadı?');

  edit1.Text :=floattostr(ibquery1.Fields[0].AsFloat);
  edit2.Text :=floattostr(ibquery1.Fields[1].AsFloat);
  edit4.Text :=floattostr(ibquery1.Fields[2].AsFloat);
  edit5.Text :=floattostr(ibquery1.Fields[3].AsFloat);
  edit7.Text :=floattostr(ibquery1.Fields[4].AsFloat);
  edit8.Text :=floattostr(ibquery1.Fields[5].AsFloat);

end;
çalıştırarak sorgulamaya geçtiğimde kaydı buluyor fakat dbgrid içinde alan olarak sadece sum1,sum2....sum6 şeklinde toplamasını istediğim alanları sum adı altında gösteriyor. Kaydın tam olarak görünmesini ve belirlediğimiz alanın toplanmasını nasıl yapıcaz gerçekten bilemiyorum. bayağı zamandır kafa yoruyorum ve büyük bir emekle hazırlanmış forum offline de arama yaptım fakat cevabıma uygununu bulamadım.

Yinede teşekkür eder ve saygılar sunarım.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

En basit şekli Çöp bir tablo oluştur çektiğin toplamları bir o tablodaki alanlara aktar ve DBGrid'i çöp tablo'ya bağla ve gerekli işlemleri yap.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
doganzorlu
Kıdemli Üye
Mesajlar: 395
Kayıt: 22 Tem 2004 09:15
Konum: İzmir
İletişim:

Mesaj gönderen doganzorlu »

Selam,

Görmek istediğiniz diğer alanlarda neler var ? Ancak gruplanabilen alanları görebilirsiniz. Örneğin sizin query de

Kod: Tümünü seç

ibquery1.SQL.Add('select DAIRENO,SUM(AIDMIKTARI),SUM(AIDODEME),SUM(SICSUPARA),SUM(SICSUODEME),SUM(ESKIBORC),SUM(ESKBRCODEM) from AIDATLAR GROUP BY DAIRENO'); 
şeklinde daire daire toplamlı alabilirsiniz. Bu nedenle tablonuzdaki diğer kolonları da bu gözle değerlendiriniz.

Kolay gelsin..
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ı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Güzel Tavsiyeniz için teşekkür ederim.
Selam.

Tablomda kişinin adı,soyadı,ödeme tarihi,daire no ve bahsi geçen aidat ödemeleri miktarları sıcak su paraları vs. alanlar var. Şimdi alanları görmek benim için mühim değil ama inandırıcılık açısından ve çıktı alma yönünde karşıdakine gösterme olayında iyi olacak sanıyorum. Yoksa direk sorgulayarak toplamı gösterebiliriz.

düşüncem şöyle idi;

şu tablonun şu alanına göre edite girilen doğrultusunda kayıtları bul ve grid içine dök, grid içine dökülen verilerden belirlenen alanların toplamını yap ve editler içinde göster şeklinde bi düşüncem var.


Hüseyin abinin dediği uygun geliyor. Tabloya aktar toplamı al ve işin bitince tabloyu sil sonra tekrar kullan.

Yardımlarınız için çok teşekkür ederim.
Tavsiyelerinizi uygulamaya çalışacağım. Yapabilirsem.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Selam;

Ustalarım sorunu şu şekil hallettim. Acemi işi oldu, yapmak istediğimi iki tuş ile yaptım. Birinci tuş edit10 girilen daire numarası ile sorgulayıp gride çıkan sonuçları döktü, ikinci tuş ilede hüseyin abinin verdiği kod ile edit10 a girilen daire numarasındaki toplamları alarak gride dökmeden altta bulunan editler içinde gösterdi.

Yardımlarınızdan dolayı çok teşekkür ederim. Özellikle Admin mustafa sana

Terkar selam
Hayırlı geceler.
Cevapla