DELPHI TFDQuery碎片总结
一.过虑器:FILTER
1.属性设置

Filter: 过虑器
Filtered: 过虑器开关. 只有开关打开时,过虑器才会工作.
FilterOptions - foCaseInsensitive : 不区分大小写,也可以在代码中使用UpperCase对条件进行统一大写
FilterOptions - foNoPartialCompare: 不进行局部比较.字面意思.
2.支持的操作符.
[ ] :把字段名括起来
+ : 连接符.用于连接字段,比如图中的 [客户名称] + [助记码],但是要注意,如果两个字段的类型不致,会报错,比如 [客户ID] + [客户名称] 这样就不行
% :用于模糊匹配.注意我这里用的是ACCESS数据库,其他数据库用的可能是*号,请自行尝试
关于日期
FlieterStr:='[创建日期]=#2026-02-27#'; //错误 FlieterStr:='[创建日期]=''2026-02-27'''; //正确
二.SQL语句
1.在编辑器中,连接符用 & 而不是 + ,常量字符串用单引号括起来.

2.尽量不要用数据库特有的方法,因为SQL语句首先得通过TFDQuery组件的确认.而有些数据库特有的方法是与之不相兼容的.比如ACCESS中的NZ
3.如果是在代码中动态设置SQL语句,你得像下面这么写
FDQuery1.SQL.Text := 'select 仓库ID & ''' +'A'+''' from 仓库列表';
最最核心的技巧是拼字符串.我们知道,字符串要用单引号括起来,比如
仓库ID & 'A'
但是在代码里,你不能这么写,因为在代码里,字符串默认是带了一对单引号的,你如果还想额外加入单引号这个字符串,记住这句话: 一个变俩儿! 比如:
仓库ID & '''A'''
上面的'''A''',编辑成SQL语句就会变成了'A'(带了一对单引).但是这里还有个问题.你直接写成下面的形式,它又不对了:
FDQuery1.SQL.Text := 'select 仓库ID & '''A''' from 仓库列表';
因为sql语句前后都带了个单引号,使得A没有被连接起来,IDE直接就会给你报错了.
如果你在代码中拼接SQL语句需要使用模糊匹配,请使用 % 符号,而不是 * (ACCESS)
最后就是关于&和+了,SQL语句内部连接字符串请用&,IDE里面连接字符串,请用+.
注意各种数据库之间,连接字符串的运行符不一定是 &,请按实际情况选择
2026-04-14 补充
TFDQuery支持命令批处理.也就是支持多条SQL语句一起处理.比如:

我以前一直不知道 [下一个记录集]这个按钮是做什么的,现在总算明白了.但是很遗憾,这个功能并不支持ACCESS

以下是官方的说明:
Command Batches (FireDAC) - RAD Studio (embarcadero.com)

浙公网安备 33010602011771号