![]() |
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... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:16 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