Yuvarlama işlemlerinde elim kolum bağlandı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Nemesis2005
Üye
Mesajlar: 136
Kayıt: 18 Oca 2005 05:24
Konum: İzmir

Yuvarlama işlemlerinde elim kolum bağlandı

Mesaj gönderen Nemesis2005 »

Bir RentaCar programı yazıyorum ve Database olarak FireBird 1.5 kullanıyorum. Kontratlarımı kaydederken kontratın toplam rakamı nı DOUBLE PRECISION olan bir Field' a atıyorum. belli bir hesaplamalardan sonra qryKontrat.FieldByName('DEGER').asFloat=RoundTo(124,699999999934,-2) bir değer çıkıyor ve ben bunu iki haneli dataya kaudetmek istiyorum ama roundTo foksiyonunda bazı değerler nasıl giriyorsa öyle çıkıyor yada ', ' den sonra 2 hane olacağına 12 hane sonra degerler oluyor. BU sorunda beni bu değeri cariyi borclandırırken problem çıkartıyor. bu işlemin karşılığında 124,70 gibi bir alacaklandırma işlemi yaptığımda görüntüde hesap kapanmış ama SUM(BORC)=SUM(ALACAK) eşit olmuyor. BU problemi nasıl aşabilirim
Her iyinin içinde bir Kötülük.Her Kötnün içide de bir iyilik vardır
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam
kardeş
sizin
(124,699999999934,-2)
gösterdiğiniz alan
ın bakiye diyelim
onu display formatına#,#0.00 iki haneden sonrasını göstermez.
Nemesis2005
Üye
Mesajlar: 136
Kayıt: 18 Oca 2005 05:24
Konum: İzmir

Mesaj gönderen Nemesis2005 »

display formatı göstermez ama sum(BORC) Foksiyonu field ta ne görüyorsa onu toplar
Her iyinin içinde bir Kötülük.Her Kötnün içide de bir iyilik vardır
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

nasıl ?
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
sizin verdiğiniz örneğe göre bir deneme yaptım. Bende 124,7 olarak kaydetti

Kod: Tümünü seç

procedure TForm1.IBDataSet1BeforePost(DataSet: TDataSet);
begin
      ibdataset1.FieldByName('DEGER').asFloat:=RoundTo(124.699999999934,-2) ;
end;


sum ile toplamlarını aldığımda 10 tanenin toplamını 1247 olarak verdi.
Bu durumda siz fields ın display formatını falan değiştirmiş olduğunuz için sizde farklı vermiş olabilir. Sum aldığınız alanın display özelliklerini falan bir kontrol edin.

Kolay gelsin.
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Doğru bir tespit yapmışsınız, yuvarlama olayını tabloya yazmadan önce net bir şekilde yapıp ona göre post ederseniz bu sıkıntıyı çözebilirsiniz..
Kolay gelsin..
Nemesis2005
Üye
Mesajlar: 136
Kayıt: 18 Oca 2005 05:24
Konum: İzmir

Mesaj gönderen Nemesis2005 »

bu Degerleri IB Expert gibi bir programla kaydedilen değere bakıyorsanız IB Expert Float Tarzı değerleri #,###,##0.000000000000000 şekilde göstermesini isteyin dediğimi anlayacaksınız
Her iyinin içinde bir Kötülük.Her Kötnün içide de bir iyilik vardır
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Sizin yapmak istediğiniz öyle göstermek mi öyle kaydetmek mi?
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
vt nizde double precision yerine Numeric tipini kullanırsanız. Dediğiniz olacaktır.
Aşağıdaki linkte dialect 1 den yukarıdakilerde Numeric ve Double precision tiplerinin aynı olduğu söyleniyor.
http://www.ibexpert.info/documentation/ ... N/456.html


Sizde örneğin Numeric in size ına 18 veya 15 scalar kısmına da 2 verip düzeltirseniz sanırım işinizi görmüş olur.

Kolay gelsin.
zero_g
Üye
Mesajlar: 56
Kayıt: 11 Şub 2004 11:52

Mesaj gönderen zero_g »

aslında problemin firebird veya interbase ile ilgisi yok.bende defalarca karşılaştım ve problemin sebebini dataya kayıt esnasında .AsFloat bir değer olarak kaydettiğimde olduğunu gördüm.Çözüm yolu ne. Ben projelerimde IbSql kullanıyorum ve sayısal alanları parametre ile şöyle bildiriyorum ve daha sonrasında hiç problem yaşamadım

Param.ParamByName('Tutar').AsDouble := CurrencyEdit1.Value;

Sizde problem yaşamazsınız
Nemesis2005
Üye
Mesajlar: 136
Kayıt: 18 Oca 2005 05:24
Konum: İzmir

Mesaj gönderen Nemesis2005 »

ilgilenen tüm arkadaşlara teşekküler. cevaplarınız çok yardımcı oldu
Her iyinin içinde bir Kötülük.Her Kötnün içide de bir iyilik vardır
Cevapla