AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fastreport - falscher Wert ?

Ein Thema von user0815 · begonnen am 6. Nov 2012 · letzter Beitrag vom 6. Nov 2012
Antwort Antwort
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
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: Fastreport - falscher Wert ?

  Alt 6. Nov 2012, 12:07
Wenn ich das richtig sehe, passiert die Rundung doch nur durch das DisplayFormat. Dieses wird aber wohl kaum für die Berechnung der Summe berücksichtigt. In Excel hast du aber die Spalte summiert, in der schon das gerundete Ergebnis drin steht (und nicht nur formatiert, sondern durch den Export von FastReport).

Somit ist FastReport eigentlich genauer. Willst du erst die Einzelwerte runden und dann addieren, könntest du das schon in der Query machen, so dass FR schon die gerundeten Werte bekommt (z.B. über ein calculated Field)
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Fastreport - falscher Wert ?

  Alt 6. Nov 2012, 12:10
Nein FR rechnet ja richtig. Das ändern eines Anzeigeformat änder die Werte ja nicht. Es werden trotzdem die wirklichen (ungerundeten Werte) verwendet; und das ist m.E. auch richtig.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

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

AW: Fastreport - falscher Wert ?

  Alt 6. Nov 2012, 13:25
OK, Danke!

Somit steht in Value dann ja auch nicht der angezeigte Wert, da dieser noch formatiert ausgegeben wird.

Delphi-Quellcode:
procedure frxDsQuery1DataBETRAGOnAfterData(Sender: TfrxComponent);
begin
  SumBetrag := SumBetrag + Value;
end;
Habe jetzt in SQL den ROUND Befehl eingefügt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz