![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: Fibplus
SQL Rechnungsproblem
Hallo zusammen
hab hier ein Problem. Seit einiger Zeit versuche ich aus 2 Tabellen 2 Werte voneinander abzuziehen. Irgendwie stehe ich auf dem Schlauch. Wie komme ich an den Wert damit ich mit ihm die rechnung machen kann?
Delphi-Quellcode:
DM_bibeladmin.Art_value.close;
DM_bibeladmin.Art_value.SelectSQL.Clear; DM_bibeladmin.Art_value.SelectSQL.Add('SELECT SUM(IN_COUNT)FROM BIBEL_ART_D WHERE '+ '(( ID_ART = :ID) AND ( I_O = 1))'); i := strtoInt(dm_bibeladmin.Art_value.??????); // DM_bibeladmin.Art_value.close; DM_bibeladmin.Art_value.SelectSQL.Clear; DM_bibeladmin.Art_value.SelectSQL.Add('SELECT SUM(IN_COUNT)FROM BIBEL_ART_D WHERE '+ '(( ID_ART = :ID) AND ( I_O = 0))'); o := strtoInt(dm_bibeladmin.Art_value.??????); PS: mit der SQLabfrage erhalte ich einen Wert.
SQL-Code:
('SELECT SUM(IN_COUNT)FROM BIBEL_ART_D WHERE '+
'(( ID_ART = :ID) AND ( I_O = 1))'); Shalom Manfred |
Re: SQL Rechnungsproblem
Delphi-Quellcode:
DM_bibeladmin.Art_value.SelectSQL.Add('SELECT SUM(IN_COUNT) as summe FROM BIBEL_ART_D WHERE '+
'(( ID_ART = :ID) AND ( I_O = 1))'); i := strtoInt(dm_bibeladmin.Art_value.FieldByName('Summe').Value;); |
Re: SQL Rechnungsproblem
Zitat:
|
Re: SQL Rechnungsproblem
Zitat:
|
Re: SQL Rechnungsproblem
Besten dank für Eure schnelle Hilfe !!!
konnte es mit Eurer Hilfe so lösen:
Delphi-Quellcode:
ein kleines Problem bleibt noch wenn nicht drinn ist NULL dann giebts ein Problem.
DM_bibeladmin.Art_value.close;
DM_bibeladmin.Art_value.SelectSQL.Clear; DM_bibeladmin.Art_value.SelectSQL.Add('SELECT SUM(IN_COUNT) as summe FROM BIBEL_ART_D WHERE '+ '(( ID_ART = :ID) AND ( I_O = 1))'); DM_bibeladmin.Art_value.Active := True; i := strtoInt (DM_bibeladmin.Art_value.FieldByName('Summe').Value); // // DM_bibeladmin.Art_value.close; DM_bibeladmin.Art_value.SelectSQL.Clear; DM_bibeladmin.Art_value.SelectSQL.Add('SELECT SUM(OUT_COUNT) as summe FROM BIBEL_ART_D WHERE '+ '(( ID_ART = :ID) AND ( I_O = 0))'); DM_bibeladmin.Art_value.Active := True; o := strtoInt (DM_bibeladmin.Art_value.FieldByName('Summe').Value); // // c := i - o; DM_bibeladmin.Bibel_Art.Edit; DM_bibeladmin.Bibel_Art.FieldByName('STOCK').Value := c ; DM_bibeladmin.Bibel_Art.CommitUpdToCach; Shalom Manfred |
Re: SQL Rechnungsproblem
Du meinst die "Summe" ?
Dann müßte man so ungefähr prüfen :
Delphi-Quellcode:
if not DM_bibeladmin.Bibel_Art.FieldByName('SUMME').IsNull then
... |
Re: SQL Rechnungsproblem
Ich würde nicht die Summe auf NULL prüfen, sondern verhindern das Null-Werte summiert werden:
SQL-Code:
Sonst führt schon ein leerer Record zu keinem Ergebnis mehr.
SELECT SUM(IN_COUNT) as summe FROM BIBEL_ART_D WHERE (( ID_ART = :ID) AND ( I_O = 1)) and ( IN_COUNT is not NULL);
|
Re: SQL Rechnungsproblem
Könnte zu unsicher sein. Wird die Summe auf NULL geprüft, wie bei mir, dann ist das Ergebnis = NULL, sofern auch nur EIN Datensatzfeld NULL ist. Dann könnte man eine Meldung bringen : "Genaue Summe kann nicht ermittelt werden, weil mind. ein Feld undefiniert". Habe ich 20 Zahlen und will irgendwas vorhandenes addieren, 10 Zahlen sind undefiniert (also=NULL), dann wird eben eine Summe über alles was <> NULL ist, zurückgeliefert ! Eventuell ist das auch hinzunehmen, wenn es selten vorkommt und die Summe nicht zu 100% stimmen muß. Kleiner aber feiner Unterschied, den man je nach Anforderung wissen sollte.
|
Re: SQL Rechnungsproblem
Natürlich kommt es auf den Inhalt (Bedeutung) dieses Feldes an. Die beste Lösung wäre natürlich die Nullwerte mittels Constraint oder default zu verhindern.
|
Re: SQL Rechnungsproblem
Moin :-)
Hm, bin grad schwer am Grübeln... Habe mich noch nie bei einem SQL_statemnet bzgl der SUM()-Funktion um NULL-Werte der zu summierenden Felder gestört bzw Gedanken gemacht - sprich: selbst wenn ein Feld NULL ist, dann hat mich bzw in keinster Weise gestört. Woraus ich somit schließe: der SQL-Server handelt die NULL-Werte entsprechend selbsttätig, so dass IMMER korrekte Ergebnisse herauskommen. Sicherlich sollten Feldwerte - speziell bei Feldern, die zur Berechnung herangezogen werden - keine NULL-Werte zulässig sein; ich belege diese dann meist wenn 0 vor bzw jen nach Verwendungszweck auch mit anderen 'Default'-Werten; somit bin ich immer auf der sicheren Seite *denkich* Soweit dazu... |
Re: SQL Rechnungsproblem
Liste der Anhänge anzeigen (Anzahl: 1)
Stop, es ist noch etwas komplizierter, als gedacht. Sum etc. summiert z.B. nur die NOT NULL Felder. Das habe ich gemeint. Da muß man eventuell aber eingreifen. Was ich eigentlich meinte war aber, daß die IF usw. Geschichten, wobei ein Feld NULL ist das Ganze über den Haufen schmeißen, sofern NULL-Felder ins Spiel kommen.
Zitat:
|
Re: SQL Rechnungsproblem
Guten Morgen
vielen Dank für Eure Bemühungen :thumb: werde das alles anschauen. Shalom Manfred |
Re: SQL Rechnungsproblem
Gibt es in Firebird keine ISNULL Funktion ?
ISNULL ersetzt bei folgendem Aufruf alle NULL Werte durch 0
SQL-Code:
SELECT SUM(ISNULL(IN_COUNT,0)) AS Summe
FROM BIBEL_ART_D WHERE (( ID_ART = :ID) AND ( I_O = 1)); |
Re: SQL Rechnungsproblem
Danke nun läufts.
konnte das ganze so lösen.
Delphi-Quellcode:
Shalom
DM_bibeladmin.Art_value.close;
DM_bibeladmin.Art_value.SelectSQL.Clear; DM_bibeladmin.Art_value.SelectSQL.Add('SELECT SUM(IN_COUNT) as summe FROM BIBEL_ART_D WHERE '+ '(( ID_ART = :ID) AND ( I_O = 1))'); DM_bibeladmin.Art_value.Active := True; if DM_bibeladmin.Art_value.FieldByName('Summe').IsNull then i := 0 else i := strtoInt (DM_bibeladmin.Art_value.FieldByName('Summe').Value) ; // // DM_bibeladmin.Art_value.close; DM_bibeladmin.Art_value.SelectSQL.Clear; DM_bibeladmin.Art_value.SelectSQL.Add('SELECT SUM(OUT_COUNT) as summe FROM BIBEL_ART_D WHERE '+ '(( ID_ART = :ID) AND ( I_O = 0))'); DM_bibeladmin.Art_value.Active := True; if DM_bibeladmin.Art_value.FieldByName('Summe').IsNull then o := 0 else o := strtoInt (DM_bibeladmin.Art_value.FieldByName('Summe').Value) ; // // c := i - o; DM_bibeladmin.Bibel_Art.Edit; DM_bibeladmin.Bibel_Art.FieldByName('STOCK').Value := c ; DM_bibeladmin.Bibel_Art.CommitUpdToCach; end; Manfred |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:18 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