gpt4 book ai didi

delphi - 如何在 Delphi 中根据 TDateTime 字段过滤数据集

转载 作者:行者123 更新时间:2023-12-02 08:41:52 26 4
gpt4 key购买 nike

我有一个数据集,需要按时间过滤。例如我想要 TDateTime 字段中包含的时间在上午 6:00 到下午 6:00 之间的记录。

我的数据集包含一个名为 time_of_day、类型为 TDateTime 的字段。分配给该字段的值是时间,没有日期。

我尝试使用时间的字符串表示形式 ( time_of_day >= '6:00 AM' and time_of_day <= '6:00 PM' ) 和浮点表示形式 ( time_of_day >= 0.25 and time_of_day < 0.75 ) 创建过滤器字符串,但都不起作用。

我需要知道如何构造过滤字符串以分配给 TDataSet.Filter 属性。

最佳答案

我认为这可能取决于短时间格式,但这对我使用 TADODataSet 有效。

ADODataSet1.Filter := 'TimeField = 11:00:00';
ADODataSet1.Filtered := True;

更完整的证明解决方案是使用 OnFilterRecord 事件。

procedure TForm4.ADODataSet1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
if DataSet.FieldByName('TimeField').AsDateTime = FilterValue then
Accept := True
else
Accept := False
end;

如果你需要间隔,它看起来像这样。

ADODataSet1.Filter := 'TimeField >= 10:00:00 and TimeField < 11:00:00';
ADODataSet1.Filtered := True;

过滤记录

procedure TForm4.ADODataSet1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
if (DataSet.FieldByName('DateField').AsDateTime >= FromTime) and
(DataSet.FieldByName('DateField').AsDateTime < ToTime) then
Accept := True
else
Accept := False
end;

如果您使用 AMPM 表示法,则需要将时间括在 '

ADODataSet1.Filter := 'TimeField >= ''10:00 AM'' and TimeField < ''11:00 AM''';
ADODataSet1.Filtered := True;

但我真的建议使用 OnFilterRecord,这样您就不必担心时间格式。

关于delphi - 如何在 Delphi 中根据 TDateTime 字段过滤数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5171699/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com