![]() |
Datenbank: easyTable • Version: 18 • Zugriff über: easyTable
Summe aus Menge falsch
Mit der folgenden SQL-Abfrage möchte ich feststellen
welche Artikel in welcher Menge verkauft wurden: SELECT SUM(Menge) AS M, ArtikelNr, Artikelbezeichnung FROM BelegPos GROUP BY Artikelnr, Artikelbezeichnung OrDER BY ARTikelnr Sollte aber ein Artikel zurückgenommen worden sein (also Menge wird dann zB -1 gebucht) der an diesem Tag nicht verkauft wurde (es sind jeweils nur Positionen eines Tages gespeichert) dann kommt da ein falscher Wert raus. Warum kommt bei einem Integer -1 eine Summe von 4278734578 irgendwas raus? Was kann ich tun damit der Wertrichtig angezeigt wird. |
AW: Summe aus Menge falsch
Moin Jürgen, die SQL-Abfrage sieht sauber aus und sollte mit jeder normalen Datenbank auch so funktionieren. Liegt das ggf. an easyTable? Ich hab da noch nie was von gehört.
|
AW: Summe aus Menge falsch
Sieht für mich nach unsigned Integer aus...
|
AW: Summe aus Menge falsch
Hallöle...8-)
Um zu Vergleichen, ob das an der verwendeten DB liegt, brauchen wir mal ein paar Beispieldaten als CSV. Desweiteren: Was erwarte ich, was bekomme ich. (Datensätze) |
AW: Summe aus Menge falsch
Zitat:
|
AW: Summe aus Menge falsch
Also poste mal Beispieldaten.
|
AW: Summe aus Menge falsch
Liste der Anhänge anzeigen (Anzahl: 2)
Ja, AidAim ist richtig. Wir haben das mal als BDE Ersatz genommen
für Projekte ohne große Installation war das ganz lustig hat aber leider viele solcher komischen nicht nachvollziehbaren Fehler. In der Datenbank ist ein Integer Felde für Menge in das auch bei Warenrücknahme mit - vorzeichen gebucht werden kann. Die Daten sind wirklich Sauber, er rechnet richtig sobald der Artikel mehrfach vorkommt besser gesagt vor der Gutschrift am mind. 1x verkauft wurde. Hat man aber den seltenen Fall das der Artikel heute zurückgegeben wird obwohl er heute nicht verkauft wurde geht es Schief. Menge ist ein einfaches Integer Feld, Ergebnis ein Large Integer |
AW: Summe aus Menge falsch
Welchen Datentyp hat die Tabelle da bei diesem Feld? Ich vermutet Unsigned Int oder Cardinal. Das Feld müsste vom Datentyp INTEGER sein, damit da -1 auch als -1 kommt. Unter Umständen musst du den Datenfeldtyp ändern oder einen CAST machen, sofern das mit dieser DB geht.
|
AW: Summe aus Menge falsch
:shock:
Zitat:
|
AW: Summe aus Menge falsch
Mischmasch mit Signed- und Unsigned-Typen, sowie auch Konvertierungsprobleme zwischen 32 und 64 Bit. :gruebel:
Bei 32 Bit entspricht eine signed -1 nunmal einem unsigned 4.294.967.295 .... es kommt einfach nur drauf an, wie man das höchste Bit interpretiert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz