(Gast)
n/a Beiträge
|
Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be
2. Jul 2004, 10:14
Zitat von Sharky:
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
with Query1 do
begin
Close;
SQL.Text := 'SELECT *' + #10
+ 'FROM Booking' + #10
+ 'WHERE CAST(CONCAT(jahr,"-",monat,"-",tag) AS DATE) BETWEEN :start AND :ende' +#10
+ 'ORDER BY name, uhrzeit';
ParamCheck := True;
Params.ParamByName('start').AsString := FormatDateTime ('yyyy-m-d',[color=red]DateTimePicker1.Date[/color]);
Params.ParamByName('ende').AsString := FormatDateTime ('yyyy-m-d',[color=red]DateTimePicker2.Date[/color]);
Open;
end;
end;
Was machst du denn da? - Den #34 wird mySQL (wie die meisten DBs) als Start/Ende eines Identifiers ansehen, NICHT als String. (Das könnte das "Merkmal" sein )
- Warum erst ein Typcast auf Date, wenn du ihm die Werte als String gibst
So dürfte ein Schuh draus werden:
Delphi-Quellcode:
with Query do
begin
SQL.Text :=
' SELECT *' + #10 +
' FROM Booking' + #10 +
' WHERE CAST(CONCAT(jahr' + #10 +
' ,'' -'' ' + #10 +
' ,monat' + #10 +
' ,'' -'' ' + #10 +
' ,tag) As Date) BETWEEN :i_Start AND :i_Ende' + #10 +
' ORDER BY Name' + #10 +
' ,Uhrzeit';
// Parse Statement um Variablen zu erkennen
ParamCheck := True;
// Parameterzuweisung
with Params do
begin
// Die Zuweisung des DataType soll verhindern, dass die MidWare irgendwelchen Käse fabriziert
ParamByName(' i_Start').DataType := ftDate;
ParamByName(' i_Start').Value := DateTimePicker1.Date;
ParamByName(' i_Ende').DataType := ftDate;
ParamByName(' i_Ende').Value := DateTimePicker2.Date;
end;
// Ausführen
Open;
end;
|
|
Zitat
|