Sum Fonksiyonunda yanlış toplam

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Sum Fonksiyonunda yanlış toplam

Mesaj gönderen haydarxxx »

Paradox veritabanın da Bürüt_Toplam alanım Parabirimi tanımlı ve yine Bürüttoplam alanımda parabirimli tanımlı

(Bürüt_Toplam) 194,85 116,91 116,91 116,91 116,91 352,94 352,94 352,94 352,94 352,94 352,94 352,94 529,40 117,65 sayılarını alt alta topladığımda 3.780,12

Kod: Tümünü seç

with Query1 do //toplam bürüt
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select sum(Bürüt_Toplam) as BÜRÜT_TOPLAM from bordro');
Query1.Open;

 table2.Fieldbyname('Bürüttoplam').value:=  FloatToStr(Query1.FieldByName('BÜRÜT_TOPLAM').AsFloat);
alt toplam 3.780,0878 çıkıyor parasal yuvarlama ile de 3.780,09 oluyor peki bu aradaki 0,03 lük değer nerede kayba uğruyor, sum fonksiyonu neden yanlış toplama yapıyor.Yada ben neyi yanlış yapıyorum
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Kullandığın fieldlarda herhangi bir formatlama yaptın mı?
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Tabloda kayıtlı olan değer ile görünen değer aynı değil. Sen kendin toplarken görüneni topluyorsun. Ancak tablodaki değer farklı. "Bölge ve Dil Seçenekleri" ayarlarında para birimi ondalıktan sonraki basamak sayısını örneğin 9 yaparak dene problem ortadan kalkacaktır.

İyi çalışmalar.
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

Naile herhangibi bir formatlama yapmadım sadece bu alanları bir döngü ile hesaplatıp edit post yaptırıyorum

Hakan 4 haneye kadar denemiştim ama 9 haneyide denedim olmadı
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Ben hala görünen değerlerle tablodaki fiziksel değerlerin farklı olduğunu düşünüyorum. Bunu basit bir şekilde test edebilirsin:

Kod: Tümünü seç

var
  E: Double;
begin
  E := 0.0;
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('select Bürüt_Toplam as BÜRÜT_TOPLAM from bordro');
  Query1.Open;
  while not Query1.Eof do
  begin
    E := E + Query1.Fields[0].AsFloat;
    Query1.Next;
  end;
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('select sum(Bürüt_Toplam) as BÜRÜT_TOPLAM from bordro');
  Query1.Open;

  ShowMessage('Fark: ' + FloatToStr(E - Query1.Fields[0].AsFloat));

  Query1.Close;
end;
Eğer hala hata varsa gönderebilirsen tabloyu gönder.

İyi çalışmalar.
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

Dosyayı gönderdim.Teşekkür ediyorum.Hakan verdiğn kod farkı sıfır buluyor ama exelde veya hesapmakinası ile topladığımda sum toplamla exel in toplamı arasında fark oluyor
Cevapla