AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Rechnungsproblem
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Rechnungsproblem

Ein Thema von manfred_h · begonnen am 19. Okt 2006 · letzter Beitrag vom 20. Okt 2006
Antwort Antwort
Seite 1 von 2  1 2      
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#1

SQL Rechnungsproblem

  Alt 19. Okt 2006, 16:37
Datenbank: Firebird • Version: 1.5 • Zugriff über: Fibplus
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: SQL Rechnungsproblem

  Alt 19. Okt 2006, 16:44
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;);
Markus Kinzler
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: SQL Rechnungsproblem

  Alt 19. Okt 2006, 16:48
Zitat von mkinzler:
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))');
DM_bibeladmin.Art_value.SelectSQL.Active := True; // <---- das fehlte noch (die Query muss ja zum Server)
  i := strtoInt(dm_bibeladmin.Art_value.FieldByName('Summe').Value;);
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: SQL Rechnungsproblem

  Alt 19. Okt 2006, 16:49
Zitat von alzaimar:
Zitat von mkinzler:
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))');
DM_bibeladmin.Art_value.SelectSQL.Active := True; // <---- das fehlte noch (die Query muss ja zum Server)
  i := strtoInt(dm_bibeladmin.Art_value.FieldByName('Summe').Value;);
So genau hab ich mir den Code nicht angeschaut. Stimmt natürlich!
Markus Kinzler
  Mit Zitat antworten Zitat
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#5

Re: SQL Rechnungsproblem

  Alt 19. Okt 2006, 17:36
Besten dank für Eure schnelle Hilfe !!!

konnte es mit Eurer Hilfe so lösen:
Delphi-Quellcode:
  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;
ein kleines Problem bleibt noch wenn nicht drinn ist NULL dann giebts ein Problem.


Shalom
Manfred
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6

Re: SQL Rechnungsproblem

  Alt 19. Okt 2006, 20:35
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
...
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: SQL Rechnungsproblem

  Alt 19. Okt 2006, 20:40
Ich würde nicht die Summe auf NULL prüfen, sondern verhindern das Null-Werte summiert werden:
SELECT SUM(IN_COUNT) as summe FROM BIBEL_ART_D WHERE (( ID_ART = :ID) AND ( I_O = 1)) and ( IN_COUNT is not NULL); Sonst führt schon ein leerer Record zu keinem Ergebnis mehr.
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8

Re: SQL Rechnungsproblem

  Alt 19. Okt 2006, 21:01
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.
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: SQL Rechnungsproblem

  Alt 19. Okt 2006, 21:07
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.
Markus Kinzler
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#10

Re: SQL Rechnungsproblem

  Alt 19. Okt 2006, 21:57
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...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:24 Uhr.
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