![]() |
SQL Berechnung
Hey,
Über folgende Code öffne ich eine SQL-Abfrage.
Delphi-Quellcode:
1. Nun möchte ich auf einen Wert bei einem bestimmten Datum zugreifen. Wie funktioniert dies?
...
Query1.Active:=False; Query1.DatabaseName:='.\DB\'; Query1.SQL.Clear; Query1.SQL.Add('SELECT Datum, Wert FROM Datenbank WHERE Datum BETWEEN :von AND :bis ORDER BY Datum'); Query1.ParamByName('von').AsDate:=StrToDate(Edit1.Text); Query1.ParamByName('bis').AsDate:=StrToDate(Edit2.Text); Query1.Open; ... 2. Wie kann ich die Summe der Spalte Wert berechnen? |
Re: SQL Berechnung
Hi Hansi,
1. Es gibt die Methode Locate von TDataSet, aber du musst schauen, ob sie implementiert ist und funktioniert! 2. Entweder durch die Datenmenge iterieren und summieren oder gleich ne eigene Sql-Abfrage. MfG Stevie |
Re: SQL Berechnung
Kannst Du mir bitte für beide Punkte ein Beispiel geben?
|
Re: SQL Berechnung
1.
Delphi-Quellcode:
2.
begin
if Query.Locate('DATUM', Datum, []) then {...} end;
Delphi-Quellcode:
begin
Query.First; Summe := 0; while not Query.Eof do begin Summe := Summe + Query.FieldValues['WERT']; Query.Next; end; end; |
Re: SQL Berechnung
Super! Vielen Dank!
kann ich das auch so machen?
Delphi-Quellcode:
Bei mir kommt nämlich die Fehlermeldung: Keine Übereinstimung der Typen im Ausdruck. Was ist falsch?
Query1.SQL.Add('SELECT sum(Wert) FROM Datenbank WHERE Datum BETWEEN :von AND :bis');
Ist Deine Variante der Summe schneller als mit SQL? |
Re: SQL Berechnung
Ich denke, SQL wird schneller sein!
Von welchem Datentyp ist den Wert? |
Re: SQL Berechnung
Währung!
Edit: In Datenbank war String nicht Währung eingestellt! :wall: |
Re: SQL Berechnung
Wie bekomme ich die "SQL-Summe" mit INSERT INTO in die Datenbank, und zwar an eine ganz bestimmte Stelle(wo Datum =... ist!)?
|
Re: SQL Berechnung
Zitat:
|
Re: SQL Berechnung
Summe von Wert in einem bestimmten Zeitraum
Bsp: Summe von Wert zwischen dem 1.10. bis 1.11. Die Summe in DB an die Stelle 1.11. schreiben |
Re: SQL Berechnung
Du willst wahrscheinlich einen neuen Satz erzeugen? Denn einfach die Summe in Wert zu schreiben erscheint mir nicht sehr logisch!
SQL-Code:
Einfach in Query.SQL.Text schreiben und mit ExecSQL ausführen.
insert into datenbank(wert, datum) values(:wert, :datum)
|
Re: SQL Berechnung
Nein ich will keinen neuen Satz erzeugen.
Will "nur" die Summe des letzten Monats in die dritte Spalte der DB einfügen Datenbank-Struktur: Datum Wert Summe ... 1.10. 100 _____ ... Er soll die Summe des letzten Monats bilden und diese Summe in die Datenbank schreiben. Kann ich auch mit der Summe weiterrechen? kann ich Ihn im Edit-Feld anzeigen lassen? |
Re: SQL Berechnung
Aso!
SQL-Code:
Die anderen Fragen würden hier den Threadrahmen sprengen, lieber neuen öffnen.
update datenbank set summe = :summe where datum = :datum
|
Re: SQL Berechnung
Du schreibst Summe=:Summe
Stimmt das so? Spaltenname(Summe) ist gleich Variable(:Summe)??? Wie weisse ich der SQL-Abfrage eine variable zu?!? :wiejetzt: |
Re: SQL Berechnung
Den SQL in dein Query-Objekt, Params setzen und ExecSQL!
|
Re: SQL Berechnung
Sorry aber könntest Du das was Du meinst in meinen obigen Code einfügen, ich kapier nämlich nicht die Bohne was Du mir sagen willst.
|
Re: SQL Berechnung
Drück ich mich so missverständlich aus? :shock:
Delphi-Quellcode:
Guck dir mal in der OH die Klasse TQuery und die Vorgängerklasse TDataSet an, dann dürfte noch einiges klar werden!
with Query1 do
begin Active := False; SQL.Text := 'update datenbank set summe = :summe where datum = :datum'; ParamByName('summe').AsInteger := Summe; ParamByName('datum').AsDate := Datum; ExecSQL; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:15 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