Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL: Wenn Query eine Summe erhält (>0) Bedingung ausführen. (https://www.delphipraxis.net/14593-sql-wenn-query-eine-summe-erhaelt-0-bedingung-ausfuehren.html)

LuckyStrike4life 12. Jan 2004 08:23


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:
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;
habe ich an die ButtonClickFunktion des Abschick-Buttons gesetzt.

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?

Mario 12. Jan 2004 08:27

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

LuckyStrike4life 12. Jan 2004 08:34

Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf
 
Zitat:

Zitat von Mario
Variante 1: Select Count(*) From ...

Variante 2: Wie gehabt, nur nachher prüfen: if Query.bof and Query.eof then AutoNichtDa

D.h. ich kann tatsächlich eine IF Abfrage in den SQL Text einfügen? Bzw. direkt nach dem
Delphi-Quellcode:
Query2.sql.add(sSQL);    
Query2.Active:=True;
schreiben?
Wäre schön.

Mario 12. Jan 2004 08:44

Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf
 
Delphi-Quellcode:
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");
So sollte es gehen.

LuckyStrike4life 12. Jan 2004 09:35

Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf
 
Zitat:

Zitat von Mario
Delphi-Quellcode:
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');
So sollte es gehen.

Danke, das funktioniert!!
Damit hast du mir sehr geholfen.

Robert_G 12. Jan 2004 10:37

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.?

LuckyStrike4life 12. Jan 2004 10:51

Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf
 
Zitat:

Zitat von GeorgeWNewbie
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.?

:-D Schön das du dir Gedanken machst.
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... . :?

LuckyStrike4life 13. Jan 2004 07:54

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:
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');
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.

Nun sieht es leider so aus, dass das Programm immer
Delphi-Quellcode:
then begin  ShowMessage('Dateneingabe');
ausführt, niemals
Delphi-Quellcode:
else ShowMessage('Keine Daten');
[/delphi]. Auch wenn es eine Summe im Query gibt.

Der alte Code, der funktioniert hat sah so aus:
Delphi-Quellcode:
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;
Dabei gabs dann aber das Problem mit dem DateTimePicker... .

Was hab ich denn an dem Code oben falsch gemacht?

Hansa 13. Jan 2004 08:05

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.

LuckyStrike4life 13. Jan 2004 08:09

Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf
 
Zitat:

Zitat von Hansa
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.

Ja, aber es funktioniert ja.
Im alten Code sogar 100%ig zuverlässig,
da kann das Problem nicht liegen... *seufz*.


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