Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi mysql rechnet falsch (https://www.delphipraxis.net/203362-mysql-rechnet-falsch.html)

Mario61 11. Feb 2020 13:17

Datenbank: mysql • Version: 7.1.4 • Zugriff über: zeos

mysql rechnet falsch
 
Liste der Anhänge anzeigen (Anzahl: 3)
Hallo, ich habe ein großes Problem, ich hoffe, einer kann mir helfen.

Ich habe eine Datentabelle mit Beträgen die plus und minus werte enthalten. Da die Summen unter Delphi nicht gestimmt haben, habe ich die Werte in einer Excel-Tabelle kopiert und die Summe gebildet. Alles stimmte. Mit den Selben Daten habe ich in der MySql-Datenbank mit dem aufruf "SELECT Sum(Daten.Betrag) From Daten;" mir die Summe anzeigen lassen, diese stimmte überhaupt nicht mit der in der Excel-Tabelle überein. Ich habe mal 3 Bilder zur Veranschaulichung rangehangen. Excel hat die korekte Summe, aber mySQL komplett was falsches (16.0).Wenn ich in der mysql-Datenbank die werte per Taschenrechner addiere, erhalte ich den selben wert wie bei Excel, also stimmt. Warum nicht mit der MySql-Sum Funktion nicht?

Gruß Mario

mkinzler 11. Feb 2020 13:19

AW: mysql rechnet falsch
 
Was für einen Typ hat das Datenbankfeld?

Mario61 11. Feb 2020 13:23

AW: mysql rechnet falsch
 
Hallo,
in dieser Variante Text, weil ich mir nicht mehr zu helfen wuste. Ich habe mehrere ausprobiert: Integer, Float, Real, bei allen wird falsch gerechnet.

Gruß Mario

Moombas 11. Feb 2020 13:23

AW: mysql rechnet falsch
 
Mal folgendes probiert?:

Code:
SELECT SUM(preis) as summe FROM tabelle
wenn ich nicht falsch bin bei dir also:

Code:
SELECT SUM(Betrag) as summe FROM Daten

Mario61 11. Feb 2020 13:26

AW: mysql rechnet falsch
 
Ausser das da jetzt summe über dem Ergebnis steht, ist immer noch 16 das Ergebniss.
Ich bin da schon drann verzweifelt...

JasonDX 11. Feb 2020 13:29

AW: mysql rechnet falsch
 
Ein erster Debug-Schritt: Summe von nur einem Element bilden. Kommt dann das Richtige raus? Mein erster Gedanke ist nämlich ein Konvertierungsproblem ("3,52" als input, "16.0" als output, man achte auf "," vs "."=

Ein anderer Anhaltspunkt: Lässt man alle Nachkommastellen weg, (also "0,99" wird "0"), kommt als Summe 16 raus.

hoika 11. Feb 2020 13:35

AW: mysql rechnet falsch
 
Hallo,
hier sind ein paar Tipps

https://stackoverflow.com/questions/...ecimal-numbers

gerade das hier
SELECT ROUND(SUM(cash), 2)

Und das hier
https://stackoverflow.com/questions/...decimal-values

Ich hätte ja auch noch
Select Sum(Betrag*100)


Der richtige Datentyp ist übrigens Integer mit EuroCent als Werte.
einige würden sogar 10er Eurocents speichern,
also aus 2,50 Euro würden entweder 250 Cent oder 2500 10er Cents.

Moombas 11. Feb 2020 13:37

AW: mysql rechnet falsch
 
Dann hilft dir evtl. Das hier weiter:
https://dev.mysql.com/doc/refman/8.0...int-types.html

Code:
Daten.Betrag DECIMAL(5,2)

mkinzler 11. Feb 2020 13:38

AW: mysql rechnet falsch
 
SQL-Code:
SELECT SUM(Cast (Betrag as Float)) as summe FROM Daten;

Mario61 11. Feb 2020 14:04

AW: mysql rechnet falsch
 
Oh man ey... ich habe aus dem Komma mal ein Punkt gemacht, sowie Datenbankfeld auf Integer geändert. Abfrage gestartet und :shock: 1.279999999 als ergebniss. Abfrage geändert:
SELECT ROUND(SUM(Betrag),2) as summe FROM Daten;
und das Ergebniss hat mit der Excel-Tabelle überein gestimmt. Also das blöde Komma... Ich habe schon fast aufgegeben.

ALLEN VIELEN DANK: (Hier bleib ich :-D )


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:14 Uhr.
Seite 1 von 2  1 2      

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