所以,我有一个查询:"Select * FROM Payments WHERE Day([PayDate])=Day(Date()) AND Month([PayDate])=Month(Date())"
我想知道如何在ADOQuery的ADOQuery.Filter
属性中执行此操作。
我知道你可以使用“Ands”来放置多个条件,但我没有得到Month(Date())
和Day(Date())
的内容。
我正在使用Access数据库btw。
答案 0 :(得分:1)
ADOQuery.Filter与SQL“WHERE”子句不同。
在使用它们之前,您需要在SQL中计算函数。
尝试这样做:
ADOQuery.SQL.Text := 'SELECT *, Day([PayDate]) AS d, Month([PayDate]) AS m FROM Payments';
然后在ADOQuery.Filter中使用“d”和“m”字段
uses DateUtils;
procedure FilterQuery;
var
D: TDateTime;
begin
D := Now;
ADOQuery.Filtered := False;
ADOQuery.Filter := Format('d = %u AND m = %u', [DayOf(D), MonthOf(D)]);
ADOQuery.Filtered := True;
end;