1

dbplannercalender1 を使用してデータベース データを読み込もうとしています。

procedure TForm1.DBPlannerCalendar1DaySelect(Sender: TObject;
  SelDate: TDateTime);
begin
with absQuery2 do
begin
  absQuery2.Close;
  absQuery2.sql.Clear;
  ABSQuery2.SQL.Text:='select * from log where date = :a1';
  ABSQUERY2.PARAMS.ParamByName('a1').value:= DBPlannerCalendar1.Date;
  ABSQuery2.ExecSQL;
end;
end;

「date string expected"YYYY-MM-DD", but "="found at line 1..." というエラーが表示されます。何が間違っていますか?

4

2 に答える 2

0

AsDateTime,の代わりに使用Valueして、ドライバーが適切な形式に変換できるようにします。

AbsQuery2.Params.ParamByName('a1').AsDateTime := DBPlannerCalendar1.Date;

AsDateTime何らかの理由でAbsolute がサポートしていない場合は、自分で日付をフォーマットします。

AbsQuery2.Params.ParamByName('a1').Value := 
    FormatDateTime('yyyy-mm-dd`, DBPlannerCalendar1.Date);

最初の方法は、データベース エンジン間での移植性が高いため、最良の選択です (ドライバが日付の適切な配置への書式設定を行うため、すべてのエンジンで機能します)。2 番目を使用すると、DB が とは異なるものYYYY-MM-DDを期待している場合、日付を使用するあらゆる場所でコードを変更する必要があります。

于 2012-08-06T00:38:10.490 に答える