![]() |
SQL: Wenn Query eine Summe erhält (>0) Bedingung ausführe
Morgen,
ich müsste mal dringend wissen - ob und wenn ja wie es möglich ist, eine Bedingung aus SQL zu starten. Das ganze schaut so aus, mit Hilfe von SQL frag ich ab, ob am jeweiligem Datum (Tag X) das entsprechende Auto, welches ein User am Tag X haben möchte, noch da ist - oder nicht. Den SQL Code:
Delphi-Quellcode:
habe ich an die ButtonClickFunktion des Abschick-Buttons gesetzt.
Query2.Close;
Query2.SQL.Clear; sSQL := 'SELECT * FROM "t:eDienstreisebuch\mainDBalt.dbf" where dienst_pkw = "' + PKW.Text + '" AND datum = ''' + Datum2.text + ''''; Query2.sql.add(sSQL); Query2.Active:=True; Soweit gehts auch, wenn ein bereits eingetragener Datensats übereinstimmt, wird dieser in den Query geschrieben und ich laß ihn mir über ein DBGrid anzeigen. Später ist aber kein Platz mehr für ein DBGrid und der User soll auch nur drauf hingewiesen werden, wenn er den Wagen an Tag X nicht haben kann, ansonsten soll der neue Datensatz ganz normal eingetragen werden. Ich hoffe mein Problem richtig erklärt zu haben, habt ihr vielleicht Ideen? |
Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf
Variante 1: Select Count(*) From ...
Variante 2: Wie gehabt, nur nachher prüfen: if Query.bof and Query.eof then AutoNichtDa |
Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf
Zitat:
Delphi-Quellcode:
schreiben?
Query2.sql.add(sSQL);
Query2.Active:=True; Wäre schön. |
Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf
Delphi-Quellcode:
So sollte es gehen.
Query2.Close;
Query2.SQL.Clear; sSQL := 'SELECT * FROM "t:eDienstreisebuch\mainDBalt.dbf" where dienst_pkw = "' + PKW.Text + '" AND datum = ''' + Datum2.text + ''''; Query2.sql.add(sSQL); Query2.Active:=True; if Query2.Bof and Query2.Eof then SHowMessage("Keine Daten"); |
Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf
Zitat:
Damit hast du mir sehr geholfen. |
Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf
Was ist, wenn das Auto nur 2 Stunden weg ist?
Du würdest es nicht weiter vermieten :arrow: Verdienstausfall 2.Bsp. : Auto wurde am 3.1. gemietet und am 5.1. zurückgebracht: Wie reagiert dein Programm dann für den 4.1.? |
Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf
Zitat:
Das wurde hier schon auf Konverenzen besprochen, ich stand deswegen auch schon stark in der Kritik. Die Wahrscheinlichkeit ein PKW an dem selben Tag, noch einem weiteren Mitarbeiter geben zu können ist gering. Auswertung der alten Datenbank hat das ergeben. Natürlich wäre es schön, wenn man es auch noch von der Zeit abhängig macht. Das war auch mein Ziel, sobald ich mit der Revision des Programmes fertig bin, dann nutze ich die Zeit die mir noch bleibt (das wird nicht viel Zeit sein) um es auch Tageszeit abhängig zu gestalten. Dafür gibt es hier ja auch schon ein Thread, wo es um Räume ging, und belegt oder nicht. Erinnert ihr euch sicher noch dran. Vorläufig muss es so reichen... . :? |
Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf
Verdammt,
da gibts noch n Problem mit deinem Code, Mario. Er schaut jetzt im Programm so aus:
Delphi-Quellcode:
Ein Fehler fällt auf, die Zeile die ich ausgeklammert habe, kann in der Form ja auch nicht funktionieren. Denn sSQL ist ja nicht mehr vorhanden, die Deklaration davon - könnte ich also auch entfernen.
var
sSQL: string; procedure TForm1.Button2Click(Sender: TObject); begin Query2.Close; Query2.SQL.Clear; Query2.SQL.Text := 'SELECT *' + #10 + 'FROM "t:eDienstreisebuch\mainDB.dbf"' + #10 + 'WHERE Dienst_PKW = :iDienst_PKW And' + #10 + ' Datum = :iDateT'; Query2.prepare; Query2.ParamByName('iDienst_PKW').AsString := Dienst_Pkw.text; Query2.ParamByName('iDateT').AsDateTime := DateT.DateTime; Query2.open; //Query2.sql.add(sSQL); Query2.Active:=True; if Query2.Bof and Query2.Eof then begin ShowMessage('Dateneingabe'); end else ShowMessage('Keine Daten'); Nun sieht es leider so aus, dass das Programm immer
Delphi-Quellcode:
ausführt, niemals
then begin ShowMessage('Dateneingabe');
Delphi-Quellcode:
[/delphi]. Auch wenn es eine Summe im Query gibt.
else ShowMessage('Keine Daten');
Der alte Code, der funktioniert hat sah so aus:
Delphi-Quellcode:
Dabei gabs dann aber das Problem mit dem DateTimePicker... .
var
sSQL: String; procedure TForm1.Button1Click(Sender: TObject); begin Query2.Close; Query2.SQL.Clear; sSQL := 'SELECT * FROM "t:eDienstreisebuch\mainDBalt.dbf" where dienst_pkw = "' + PKW.Text + '" AND datum = ''' + Datum2.text + ''''; Query2.sql.add(sSQL); Query2.Active:=True; if Query2.Bof and Query2.Eof then ShowMessage('Keine Daten'); end; Was hab ich denn an dem Code oben falsch gemacht? |
Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf
Das mit dem EOF/BOF gefällt mir nicht. :mrgreen: Schau mal, ob es da nicht "IsEmpty" oder "IsNull" oder so in der Richtung gibt.
|
Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf
Zitat:
Im alten Code sogar 100%ig zuverlässig, da kann das Problem nicht liegen... *seufz*. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:24 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