Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Subtraktion in einer SQL Abfrage (https://www.delphipraxis.net/56202-subtraktion-einer-sql-abfrage.html)

waschlap 2. Nov 2005 09:33

Datenbank: Interbase • Zugriff über: SQL - Abfrage

Subtraktion in einer SQL Abfrage
 
Hallo erstmal,

ich bin hier ziehmlich neu und bräuchte dringend mal eure Hilfe wegen einer SQL Abfrage.

Kleine Einführung:

Habe eine Datenbank namens listedza in dieser befinden sich meherere Spalten unter anderem idteil,vorgang und menge. Jetzt soll ich via einer sql abfrage folgendes abfragen:

anhand einer nummer(idteil) soll die Summe von menge anhand eines Vorgangs(UZU) ermitellt werden.

Ich habe folgt angefangen:

Delphi-Quellcode:
procedure TForm1.TeilenrEChange(Sender: TObject);
begin
//ListeDZA
  IBQuery3.SQL.Clear;
  IBQuery3.SQL.Add('SELECT SUM(menge)as S_ZU FROM listedza WHERE (VORGANG = UZU);' );
  IBQuery3.Open;
end;
nur hier bekomm ich schon einen Fehler wenn ich nur eine Zahl in das Feld von der Prozedur eingebe.

Ich würde mich sehr freuen wenn mir jmd in diesem Forum helfen könnte.

Mfg
Manu

[edit=alcaeus]Delphi-Tags eingefuegt. In Zukunft bitte selbst machen, danke. Mfg, alcaeus[/edit]

jim_raynor 2. Nov 2005 09:51

Re: Subtraktion in einer SQL Abfrage
 
Zeig auch deinen fehlerhaften Quellcode.

Vermutlich musst du mit IntToStr die Zahl in einen String umwandeln.

IBQuery3.SQL.Add('SELECT SUM(menge) +'+IntToStr(a)+' as S_ZU FROM listedza WHERE (VORGANG = UZU);' );

Tyler 2. Nov 2005 09:57

Re: Subtraktion in einer SQL Abfrage
 
Versuch mal hiermit, ich glaub du musst nach dem SELECT auch das FEld angeben, nach dem du Filtern willst, also "vorgang". Weiterhin würde ich UZU in Anführungszeichen setzen, da es sich wohl um einen String handelt. ZAhlen kann man theoretisch einfach als String übergeben, ohne Anführungszeichen.

SELECT SUM(menge) as S_ZU, vorgang FROM listedza WHERE VORGANG = "UZU";'

waschlap 2. Nov 2005 10:25

Re: Subtraktion in einer SQL Abfrage
 
Danke für die prompte Antwort leider funktioniert dasmit den Anführungszeichen oder das Umwandeln nicht.

Hier tritt das Problem auf:

Delphi-Quellcode:
procedure TForm1.TeilenrEChange(Sender: TObject);
begin
//ListeDZA
  IBQuery3.SQL.Clear;
  IBQuery3.SQL.Add('SELECT SUM(menge)as S_ZU FROM listedza WHERE (VORGANG = UZU);' );
  IBQuery3.Open;
end;
Hat jmd noch ne Idee?? Warum die SQL - Abfrage nicht geht?

Mfg Manu

jim_raynor 2. Nov 2005 11:20

Re: Subtraktion in einer SQL Abfrage
 
??? Ich verstehe hier nichts mehr? Haben deine Fragen irgendwas mit dem Thementitel (Subtraktion) zu tuen. Und ohne die Fehlermeldung stochern wir hier nur im Dunkeln. :wall:

Achso: :party: Willkommen bei der Delphi-PRAXiS :)

Tyler 2. Nov 2005 11:21

Re: Subtraktion in einer SQL Abfrage
 
Sag doch mal, wie die Fehlermeldung lautet? Was klappt nicht mit den Gänsefüsschen? Obacht, ich mein nicht das ' sondern das ", wenn ich Gänsefüsschen sage. Muss eigentlich gehen. Und ohne behandelt der SQL-Prozessor das als Befehl oder Platzhalter und nicht als String.

ozz 2. Nov 2005 11:46

Re: Subtraktion in einer SQL Abfrage
 
Hallo!
Der Fehler liegt wohl eher nicht in Delphi, sondern in deinem SQL-Statement. Daher prüf zuerst bitte erst einmal dein SQL Statement in einem normalen Tool.
Wenn SUM oder andere Aggregierungsfunktionen verwendet werden, muß ein "group by" erscheien!
SQL-Code:
SELECT SUM(menge)as S_ZU FROM listedza WHERE (VORGANG = UZU) group by menge;
evtl geht auch (Oracle und Mysql)
SQL-Code:
SELECT SUM(menge)as S_ZU FROM listedza WHERE (VORGANG = UZU) group by 1;
also in dem Fall Spalte 1

Hansa 2. Nov 2005 12:19

Re: Subtraktion in einer SQL Abfrage
 
Es ist genau anders rum ! Aggregatfunktionen sollen nicht in das group by. Nur andere NICHT-Aggregatfelder.

Das geht:

SQL-Code:
select SUM (BESTAND) AS B FROM LAGER
und das auch :

SQL-Code:
select ID, SUM (BESTAND) AS B FROM LAGER group by ID

marabu 2. Nov 2005 13:02

Re: Subtraktion in einer SQL Abfrage
 
Hallo Manu,

so sollte es funktionieren:

Delphi-Quellcode:
procedure TForm1.TeilenrEChange(Sender: TObject);
begin
  // ListeDZA
  with IBQuery3 do
  begin
    SQL.Text := 'SELECT SUM(menge)as S_ZU FROM listedza WHERE VORGANG = ''UZU''';
    Open;
  end;
end;
Grüße vom marabu

waschlap 2. Nov 2005 14:10

Re: Subtraktion in einer SQL Abfrage
 
vielen dank dieses Statement funktioniert nun kommt die Frage wegen der Subtraktion:

nun müsste ich eine andere Spalte der tabelle(lstedza) summieren(S_AB) und zwar müssen noch zusätzlich alle mit dem vorgang namens FAB summiert werden und dann brauch ich die Diffferenz von S_ZU und S_AB. Das ist mein eigentlich Problem, weil ich kaum Datenbanken zu tun habe .

Delphi-Quellcode:
procedure TForm1.TeilenrEChange(Sender: TObject);
begin
  // ListeDZA
  with IBQuery3 do
  begin
    SQL.Text := 'SELECT SUM(menge)as S_ZU FROM listedza WHERE VORGANG = ''UZU''';
    Open;
  end;
end;
Habt ihr da auch eine Hilfe für mich auf Lager? Danke für eure große Hilfe.

P.s Sry, wenn das ganze bissl undeutlich ist.


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