Habe ich hier was übersehen, falsch gemacht, oder rechnet FR falsch ?
Ich bilde einen
Query
Delphi-Quellcode:
SQL.Add('
FUELLINGDATA.QUANTITY,');
SQL.Add('
PREIS.PREIS,');
SQL.Add('
FUELLINGDATA.QUANTITY * PREIS.PREIS AS BETRAG');
Nach dem Öffnen formatiere ich die Werte für die Anzeige
Delphi-Quellcode:
procedure TDatenmodul.Query1AfterOpen(DataSet: TDataSet);
begin
(DataSet.FieldByName('PREIS') as TFloatField).DisplayFormat := '0.000';
(DataSet.FieldByName('QUANTITY') as TFloatField).DisplayFormat := '0.00';
(DataSet.FieldByName('BETRAG') as TFloatField).DisplayFormat := '0.00';
Innerhalb von FR gebe ich die Summe in einem TfrxMemoView Feld mit folgender Formel [SUM(<frxDsQuery1Data."BETRAG">,MasterData1)] aus.
Der Wert ist Format Number mit Format string: %2.2f eingestellt. Hier erhalte ich ein falsches Ergebnis.
Rechne ich selber mit, so erhalte ich ebenfalls ein falsches Ergebnis.
Delphi-Quellcode:
procedure frxDsQuery1DataBETRAGOnAfterData(Sender: TfrxComponent);
begin
SumBetrag := SumBetrag + Value; // falsches Ergebnis da der ungerundete Wert addiert wird
end;
Als Anhang den relevanten Teil des Reports als 'Excel table' Export.
Bilde ich die Summe des Betrags in der Excel Tabelle so erhalte ich Spalte BJ = 1164,
49
FR gibt nach obigem Code 1164,50 aus was der ungerundeten Summe entspricht.
Innerhalb des Reports wird die automatische Summe im TfrxMemoView auch mit 1164,50 ausgegeben.
ersetze ich meine manuelle Berechnung durch den nachfolgenden Code, so erhalte ich das richtige Ergebnis
SumBetrag := SumBetrag + StrToFloat(FormatFloat('0.00', Value));
Somit kann ich mich auf die Berechnung von FR ja nicht verlassen oder habe ich etwas übersehen ?