![]() |
Datenbank: Access • Zugriff über: ADO
Benutzung von Sum() in SQL
Nachdem ich nun alle Beiträge zur Summenbildung in SQL hier durchgelesen habe und die SQL Syntax eigentlich auch richtig sein müsste, wende ich mich nun doch mal an Euch, da ich nicht mehr weiter weiß.
Ich habe eine Datenbank Belege mit den Feldern Nr,Datum,Betrag(Float) und möchte gerne wissen wie hoch die Summe aller Beträge in meiner Datenbank ist. Dazu habe ich folgendes programmiert:
Delphi-Quellcode:
sobald ich active auf True setze kommt die Fehlermeldung:
FBelege.ADOQBelege.active:=False;
FBelege.ADOQBelege.SQL.Add('Select Sum(Betrag) As Summe From Belege'); FBelege.ADOQBelege.active:=true; Gesamt:=FBelege.ADOQBelege.FieldByName('Summe').ASFloat; FBelege.ADOQBelege.active:=False; ADOQBelege: Das Feld Nr wurde nicht gefunden Was mache ich falsch ? |
Re: SQL Summe berechnen
Ist ja auch kein Wunder. Die Fehlermeldung besagt, daß das Feld Nr. nicht vorhanden ist ? Tja, so sieht es aus. Was erwartestt Du denn ? 8)
|
Re: SQL Summe berechnen
Moin Hansa,
Zitat:
|
Re: SQL Summe berechnen
Zitat:
Delphi-Quellcode:
with FBelege.ADOQBelege do
begin Active := False; SQL.Clear; // <------ SQL.Add('Select Sum(Betrag) As Summe From Belege'); Active := True; Gesamt := FieldByName('Summe').AsFloat; Active := False; end; |
Re: SQL Summe berechnen
Zitat:
Wenn dort Felder angegeben wurden erwartet die Query-Komponente das diese auch bei jedem .Open vorhanden sind. P.S.: Es wäre gut wenn Du den Titel der Frage ändern würdest. Der Fehler hat ja nichts mit dem SUM() zu tun. |
Re: SQL Summe berechnen
@Union das mit dem SQL.clear hab ich natürlich vorher schon gemacht, habs nur nicht mit in das Listing reingenommen.
Sharky hat warscheinlich recht ich habe in meinem Grid den Feldeditor benutzt, habe die Felder dort zum testen aber schon mal rausgenommen, da ich das auch schon vermutet hatte. Möglicherweise habe ich aber in einem anderen Feld auch den Feldeditor benutzt und habe das übersehen. Danke für den Tip, werde gleich mal nachsehen. Den Feldeditor habe ich benutzt um die Einstellungen der einzelnen Spalten im Grid anzupassen. Geht das auch ohne den Feldeditor ? Wie kann ich den Titel ändern ? Habe noch nie einen Artikel verändert und finde hier keinen Button dafür. Oder Wo kann ich das nachlesen ? Danke für Eure Mühe. |
Re: SQL Summe berechnen
Zitat:
einfach in deinem ersten Posting in diesem Thread auf Edit klicken (rechts in der Titelleiste). |
Re: SQL Summe berechnen
Also gut, Du brauchst irgendwo noch die NR. Diese wird aber nicht so ohne weiteres geliefert. 8)
Delphi-Quellcode:
SQL.Add('Select NR,Sum(Betrag) As Summe From Belege');
|
Re: SQL Summe berechnen
Zitat:
Es gibt zwei Möglichkeiten. Entweder Du arbeitest für deine Summenberechnung mit einem zur Laufzeit erzeugten Query:
Delphi-Quellcode:
Oder Du arbeites nur mit einem Query. Dann musst Du zur Laufzeit die Formatierungseinstellunge von Hand vornehmen.
function GetSumFromTable (aConnection : TADOConnection;aFieldName , aTableName : String) : Real;
begin with TADOQuery.Create(nil) do begin Connection := aConnection; SQL.Text := 'SELECT SUM(' + aFieldName + ') AS summe FROM ' + aTableName; Open; Result := FieldByName('Summe').AsFloat; Close; Free; end; end; procedure TForm1.Button1Click(Sender: TObject); var Gesamt : Real; begin Gesamt := GetSumFromTable(ADOConnection1,'betragt','belege'); end; Schaue Dir mal dieses ![]() |
Re: SQL Summe berechnen
Delphi-Quellcode:
Diese Idee hatte ich auch schon Hansa, wollte sogar schon alle Felder angeben, leider kommt bei diesem SQL-Befehl die folgende Meldung:
SQL.Add('Select NR,Sum(Betrag) As Summe From Belege');
Sie wollten eine Abfrage ausführen, die den angegebenen Ausdruck 'Nr' nicht als Teil der Agregatfunktion einschließt. Mit diese Meldung kann ich noch viel weniger anfangen. Das Feld Nr ist übrigens mein Primärindex, falls das von Bedeutung ist. Weitere Komponenten mit Feldeditor außer dem Grid habe ich nicht gefunden. Habe sonst nur Editfelder einen Navigator und eine BrowserComponente im Formular. Die Felder im Feldeditor habe ich rausgelöscht, es kommt aber immer noch die Frage nach dem Feld Nr. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:22 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