【发布时间】:2020-08-05 15:29:01
【问题描述】:
我有以下 SQL 命令来运行带有 TFDQuery 的查询,使用 PostgreSQL 作为数据库:
fdqr.SQL.Text: =
'select * from (values (current_date-1), (current_date), (current_date + 1)) as t (datetest) ' +
'{iif (! Datevalue, where datetest =! Datevalue)}';
当我使用Clear 方法清除宏值时,我希望脚本能够被解释以消除过滤器,但事实并非如此。
fdqr.MacroByName('datevalue').Clear;
fdqr.Open;
生成的数据库日志:
select * from (values(current_date-1), (current_date), (current_date+1)) as t(datetest)
where datetest = NULL
但是,如果您通过 AsRaw 包含分配,则它会按预期工作,即使之前的值为 ''(空字符串)并且 IsNull 是 True。
fdqr.MacroByName('datevalue').Clear;
{ at this point IsNull = True and AsRaw is '' }
fdqr.MacroByName('datevalue').AsRaw := '';
fdqr.Open;
生成的数据库日志:
select * from (values(current_date-1), (current_date), (current_date+1)) as t(datetest)
这是 FireDAC 错误还是我没有正确理解的 feature?
【问题讨论】: