sum işlemi ve virgüllü toplam?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

sum işlemi ve virgüllü toplam?

Mesaj gönderen y.kulac »

s.a.

firebird v.t kullanıyorum. alanım (damga_ver) double precision tanımlı.
yapılan işlemin sonucunda ortaya çıkan rakam 2,356221456
çıkan bu değeri ibquery nin displayformat özelliğine ###0.00 atayarak değerimiz 2,36 olarak görünüyor.
şimdi soruma geçeyim. böyle 100-200 adet kayıt olduğun düşünelim.
bu kayıtları

Kod: Tümünü seç

ibqery1.sql.add('select sum(damga_ver) as tdamga from kursiyer');
ile topladığımda normal olarak sum alanları formatsız haliyle (2,356221456 ) topluyor ve sonuçta 3-5 kuruş hata oluyor.
yani ben hesap makinası ile topluyorum formatlanmış alanları ve sum ile dönen değeri karşılaştırıyorum kuruş hatası alıyorum.
acaba diyorum sum u da mı formatlasam :) :oops:
neler önerirsiniz.
iyi çalışmalar.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

SUM ile gelen gerçek değerleri toplayıp elde ettiğin sonuç ile yuvarlanarak görüntülenen sonuçların toplamı elbetteki uyuşmayacaktır. Çözüm: SUM ile gelen değerlerin basamaklarını kesmek hatta yuvarlamakla alınabilir.

Kod: Tümünü seç

select cast(sum(alan) +0.005 as numeric(10,2)) from tablo   ...
Burada +0.005 2.657 gibi bir değerde ikinci basamağı yuvarlamak içindir. Yani bu kısım kullanılınca sonuç 2.65 yerine 2.66 olarak yuvarlanır. CAST için sondaki numeric(10, 2) deki 2 değeri ise dönen toplamın noktadan sonra alınacak basamak sayısını vermektedir :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

Mesaj gönderen y.kulac »

teşekkür ederim abi. Allah razı olsun
benim kullandığım kod şöyle idi.

Kod: Tümünü seç

ibquery1.SQL.Add('Select sum(TAHAKUK_DAMGA) AS TDAMGA FROM KURSIYER');
sizin verdiğnizi ancak şu şekilde çalıştırabildim.

Kod: Tümünü seç

ibquery1.SQL.Add('Select cast(sum(TAHAKUK_DAMGA) +0.005 AS numeric(10,2)) FROM KURSIYER');
.
ama sum(TAHAKKUK_DAMGA) dan dönen değeri TDAMGA isimli diğer bir sanal bir değişkene atmam gerekiyor. bunu beceremedim. sizin verdiğiniz kodda bu TDAMGA yı nereye yerleştirmeliyim.
mceL
Üye
Mesajlar: 56
Kayıt: 28 Eyl 2003 01:19
Konum: Bursa
İletişim:

Mesaj gönderen mceL »

Kod: Tümünü seç

ibquery1.SQL.Add('Select (cast(sum(TAHAKUK_DAMGA) +0.005 AS numeric(10,2))) AS TDamga FROM KURSIYER');
.
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

Mesaj gönderen y.kulac »

teşekkür ederim.
iyi çalışmalar
Cevapla