Einzelnen Beitrag anzeigen

Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#1

Fastreport - falscher Wert ?

  Alt 6. Nov 2012, 11:56
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 ?
Miniaturansicht angehängter Grafiken
fr.gif  
  Mit Zitat antworten Zitat