Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi In SQL Anweisung Feld Inhalt abfragen lassen (https://www.delphipraxis.net/14382-sql-anweisung-feld-inhalt-abfragen-lassen.html)

Robert_G 13. Jan 2004 09:06

Re: In SQL Anweisung Feld Inhalt abfragen lassen
 
Das Problem war, dass ich DateTime verwendet habe - für deine jetzige Tabelle müsste es Date sein.

Außerdem sollte die Tabelle 2 Datumsfelder enthalten: 1. ausgeliehen (StartDatum) 2.zurückgebracht(EndDatum) (beide mit Uhrzeit)
dann könnte es So aussehen:
Delphi-Quellcode:
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Text :=
   'SELECT *' + #10 +
   'FROM  "t:eDienstreisebuch\mainDB.dbf"' + #10 +
   'WHERE Dienst_PKW = :iDienst_PKW AND' + #10 +
   '      (:iDate between StartDatum AND EndDatum)';

Query2.prepare;
Query2.ParamByName('iDienst_PKW').AsString := Dienst_Pkw.text;
Query2.ParamByName('iDate').AsDateTime := DateT.DateTime;
Damit dürftest du die Probleme umgehen können, die weiter oben beschrieben habe...

LuckyStrike4life 13. Jan 2004 09:30

Re: In SQL Anweisung Feld Inhalt abfragen lassen
 
Zitat:

Zitat von GeorgeWNewbie
Das Problem war, dass ich DateTime verwendet habe - für deine jetzige Tabelle müsste es Date sein.

Außerdem sollte die Tabelle 2 Datumsfelder enthalten: 1. ausgeliehen (StartDatum) 2.zurückgebracht(EndDatum) (beide mit Uhrzeit)
dann könnte es So aussehen:
Delphi-Quellcode:
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Text :=
   'SELECT *' + #10 +
   'FROM  "t:eDienstreisebuch\mainDB.dbf"' + #10 +
   'WHERE Dienst_PKW = :iDienst_PKW AND' + #10 +
   '      (:iDate between StartDatum AND EndDatum)';

Query2.prepare;
Query2.ParamByName('iDienst_PKW').AsString := Dienst_Pkw.text;
Query2.ParamByName('iDate').AsDateTime := DateT.DateTime;
Damit dürftest du die Probleme umgehen können, die weiter oben beschrieben habe...

Danke,
es läuft hier in der Art, dass jeder Mitarbeiter der eine Dienstreise machen muss, ein Auto haben kann, solange es noch nicht vergeben ist. Dienstreisen dauern für gewöhnlich ein Tag - wenn es länger dauert, dann muss der private Wagen genommen werden (gegen Entschädigung, klar).
Daher gibt es keine Feld, wann der PKW wieder da ist, sondern nur die Uhrzeit.

D.h. man könnte (und das wäre auch sehr gut) nach der Zeit schauen lassen, es gibt ein Feld für Beginn d. Reise und Ende d. Reise.

Das würde jetzt aber sehr ausfühlichen Code benötigen, erstmal muss man von der Eingabemaske schauen lassen von wann bis wann ein Wagen genommen wird, in die DB schauen - von wann bis wann der PKW weg ist... usw.

LuckyStrike4life 13. Jan 2004 10:39

Re: In SQL Anweisung Feld Inhalt abfragen lassen
 
*seufz*
hab den Code nun so geschrieben:
Delphi-Quellcode:
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 = :iDate';

Query2.prepare;
Query2.ParamByName('iDienst_PKW').AsString := Dienst_Pkw.text;
Query2.ParamByName('iDate').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');[/delphi]
Leider wird immer noch kein Ergebniss in den Query geschrieben, wenn Datensätze (eigentlich) übereinstimmen.
So läuft dann immer
Delphi-Quellcode:
then begin  ShowMessage('Dateneingabe');
ab.
Der Fehler muss noch woanders liegen... .

Robert_G 13. Jan 2004 10:58

Re: In SQL Anweisung Feld Inhalt abfragen lassen
 
Zitat:

Zitat von GeorgeWNewbie
Das Problem war, dass ich DateTime verwendet habe - für deine jetzige Tabelle müsste es Date sein.

Nicht "asDateTime := xxx.DateTime", sondern "asDate := Date"!!!

LuckyStrike4life 13. Jan 2004 11:11

Re: In SQL Anweisung Feld Inhalt abfragen lassen
 
Nun hab ichs,

der Fehler lag schon in der Zeile - wie du meintest.
Richtig muss sie in meinem Programm in der Art geschrieben stehen:
Delphi-Quellcode:
Query2.ParamByName('iDate').asDate := DateT.DateTime;
"Date" könnte nicht ausreichen, denn die Komponente hat von mir den Namen "DateT" bekommen, warum auch immer ;).

Bedanke mich für deine Hilfe, hast mich wirklich weiter gebracht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:28 Uhr.
Seite 3 von 3     123   

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