dbExpress+MySQL - pola Autocalc

0

Witam,

Problem jest dość dziwny i irytujący. Piszę prosty program do wprowadzania faktur. Dane są wprowadzane do dbGrida. Są dwa pola wyliczeniowe: suma_brutto (typu fkInternalCalc) oraz wartosc_brutto (typu fkAggregate). Pole suma_brutto jest wyliczane ilosc x cena_btutto dla każdej pozycji faktury (w zdarzeniu ClientDataSet1CalcFields), a następnie całość jest sumowana sum(suma_brutto). Wszystkie pola wykorzystywane w obliczeniach są w bazie jako float(10,2).

Niestety wynik końcowy (wartosc_brutto) nie jest prawidłowo wyliczony i różni się od ręcznego sumowania każdej pozycji o 1 grosz... Wyświetlanie danych z dokładnością do 2 miejsc po przecinku. Próbowałem zmieniać zarówno w bazie jak i w ustawieniach pól parametr precision ale nic to nie daje. Gdzie może tkwić błąd żeby nie działało prawidłowo proste dodawanie?

0

aby nie mieć takich problemów w Delphi jest specjalny typ stałoprzecinkowy (min. dla kwot i ilości) trzymający wartość z dokładnością 4 miejsc po przecinku. Nazywa się on Currency.
Inna sprawa, że Round, RoundTo i SimpleRoundTo z Delphi nie do końca działa poprawnie. Ostatnio przy oprogramowywaniu drukarki fiskalnej miałem z tym małe problemy i skończyło się na napisaniu własnej funkcji zaokrąglającej

1 użytkowników online, w tym zalogowanych: 0, gości: 1