Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   SQL-Anweisung von BDE nach Firebird (https://www.delphipraxis.net/147202-sql-anweisung-von-bde-nach-firebird.html)

RWarnecke 3. Feb 2010 16:34


SQL-Anweisung von BDE nach Firebird
 
Hallo zusammen,

ich habe ein Problem mit folgender SQL - Anweisung :
SQL-Code:
SELECT Monat,
       SUM(UM1) AS UMS1,  
       (100 * SUM((UM1 / 100) * WE1)) / SUM(UM1) AS WES1,
       SUM(UM2) AS UMS2,
       (100 * SUM((UM2 / 100) * WE2)) / SUM(UM2) AS WES2,
       SUM(UM3) AS UMS3,
       (100 * SUM((UM3 / 100) * WE3)) / SUM(UM3) AS WES3,
       SUM(UM4) AS UMS4,
       (100 * SUM((UM4 / 100) * WE4)) / SUM(UM4) AS WES4
FROM Umsatze U
WHERE EXISTS (
 SELECT StammNr FROM Produkte P
WHERE (P.ProduktNr = U.ProduktNr)
   AND (P.StammNr = :StammNr))
GROUP BY Monat;
Jedesmal, wenn ich die Ausführen will, kommt im IBExpert die Meldung :
Zitat:

arithmetic exception, numeric overflow, or string truncation.
Das geile daran ist, wenn ich für den Parameter StammNr einen Wert übergebe, der nicht existiert, kommt der Fehler nicht. Was läuft da flasch ?

mkinzler 3. Feb 2010 17:28

Re: SQL-Anweisung von BDE nach Firebird
 
Welche Typen haben die Felder?

RWarnecke 3. Feb 2010 17:33

Re: SQL-Anweisung von BDE nach Firebird
 
StammNr, ProduktNr, Monat = Integer
UM1, WE1, UM2, WE2, UM3, WE3, UM4, WE4 = float

Edit: Die Tabelle Produkte ist mit ProduktNr mit der Tabelle Umsatze verbunden

mkinzler 3. Feb 2010 17:39

Re: SQL-Anweisung von BDE nach Firebird
 
Irgendwie scheint hier ein Bereichsüberlauf stattzufinden.
Ändere die Typen mal auf Double Precision.
Kommt ein Ergebnis, oder überhaupt nichts?

RWarnecke 3. Feb 2010 17:46

Re: SQL-Anweisung von BDE nach Firebird
 
Es kommt kein Ergebnis. Ich habe mittlerweile herausgefunden, dass wenn ich die Zeilen mit WESx rauslasse funktioniert die Abfrage. Laut dieser Seite hat der Fehler etwas mit einer Division 0 zu tun. Ich stelle mir nur die Frage, wie kann ich die zweite Berechnung umstellen, dass der Fehler nichmehr auftritt.

mkinzler 3. Feb 2010 17:48

Re: SQL-Anweisung von BDE nach Firebird
 
Frage vorher ab ob der Divisor 0 ist


SQL-Code:
... iif( SUM(UM1) is null, 0, 100 * SUM((UM1 / 100) * WE1)) / SUM(UM1)) AS WES1, ...

RWarnecke 3. Feb 2010 17:56

Re: SQL-Anweisung von BDE nach Firebird
 
Bekomme ich immer noch den gleichen Fehler.

mkinzler 3. Feb 2010 17:59

Re: SQL-Anweisung von BDE nach Firebird
 
SQL-Code:
... iif( SUM(UM1) is null or SUM(UM1) = 0, 0, 100 * SUM((UM1 / 100) * WE1)) / SUM(UM1)) AS WES1, ...
Gibt es NULL-Werte in der Spalte?

DP-Maintenance 3. Feb 2010 18:01

DP-Maintenance
 
Dieses Thema wurde von "mkinzler" von "Programmieren allgemein" nach "Datenbanken" verschoben.
Es geht um Datenbanken

RWarnecke 3. Feb 2010 18:02

Re: SQL-Anweisung von BDE nach Firebird
 
Null-Werte keine. Wenn dann nur die Zahl 0. Danke für Deine Hilfe. Habe ebengrade Deine iif-Abfragee von is null auf gleich null geändert und jetzt funktioniert es. Danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:18 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