私はMS AccessからデータをフィルタリングしてLazReportに取得したいと思います。 私はいくつかのコードの組み合わせを試しましたが、どれもうまくいきませんでした。私はまだ "データの種類がクリテリア表現では等しくない"というエラーを受けています。 MS Accessフィールドは、Short Date(01.01.2017)という形式のDate/Timeに設定されています。 DateTimePickerがYMD(年、月、日)に設定されています。Delphi/Lazarus Filter DateTimePickerを使用したSQLクエリによるMSAccessデータ
これは私のコードです:
procedure TForm12.BitBtn1Click(Sender: TObject);
begin
If ListBox1.ItemIndex=0 then
ReportSelected.Caption:=Listbox1.Items[Listbox1.ItemIndex];
If ListBox1.ItemIndex=1 then
ReportSelected.Caption:=Listbox1.Items[Listbox1.ItemIndex];
If ListBox1.ItemIndex=2 then
ReportSelected.Caption:=Listbox1.Items[Listbox1.ItemIndex];
If ListBox1.ItemIndex=3 then
ReportSelected.Caption:=Listbox1.Items[Listbox1.ItemIndex];
If (ReportSelected.Caption='Production Overview') And (DBLookUpListBox1.ItemIndex <> -1) And (CboShift.ItemIndex = 0) then
begin
SQLQuery_ReportShift.Active:=true;
SQLQuery_ReportShift.Close();
SQLQuery_ReportShift.SQL.Text:='SELECT ProductionDate, Shift, AssemblyLine, Product, OperatorsAvailable, ProductionTime, CleanProductionTime, DowntimeTime, GoodParts, ScrapTotal, ScrapRate, QualityRate, Availability, Performance, OEE FROM ProductionInfo WHERE AssemblyLine='''+DBLookUpListBox1.Items[DBLookUpListBox1.Itemindex]+''' AND ProductionDate='''+FormatDateTime('dd/mm/yyyy', DateTimePicker1.Date)+'''';
SQLQuery_ReportShift.Open();
frReport1.LoadFromFile('ProductionOverview.lrf');
frReport1.ShowReport;
end;
なぜ「mysql」タグですか?あなたはMS Accessのテーブルを使って作業していると言います。 – MartynA
あなたのマシンは '。'を使用していますか?それはグローバルな日付の区切り記号ですか? '/'はもっと普通です。 FormatDateTimeのthreadsafe形式を使用し、MS Accessに必要なものにフォーマット設定を設定する必要があるかもしれません。 – Dsm
これを試してみてください:あなたのフォームにTDBLabelを置き、それをProductionDateフィールドに接続し、表示されているものを正確に教えてください。 – MartynA