DELPHI TFDQuery碎片总结

一.过虑器:FILTER 

1.属性设置

image

 

Filter: 过虑器

Filtered: 过虑器开关. 只有开关打开时,过虑器才会工作.

FilterOptions - foCaseInsensitive : 不区分大小写,也可以在代码中使用UpperCase对条件进行统一大写

FilterOptions - foNoPartialCompare: 不进行局部比较.字面意思.

2.支持的操作符.

[ ]  :把字段名括起来

+ : 连接符.用于连接字段,比如图中的 [客户名称] + [助记码],但是要注意,如果两个字段的类型不致,会报错,比如 [客户ID] + [客户名称] 这样就不行

% :用于模糊匹配.注意我这里用的是ACCESS数据库,其他数据库用的可能是*号,请自行尝试

关于日期

FlieterStr:='[创建日期]=#2026-02-27#';    //错误
FlieterStr:='[创建日期]=''2026-02-27''';    //正确

 

 

二.SQL语句

1.在编辑器中,连接符用 & 而不是 + ,常量字符串用单引号括起来.

image

 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语句一起处理.比如:

image

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

image

 以下是官方的说明:

Command Batches (FireDAC) - RAD Studio (embarcadero.com)

 

posted @ 2026-03-27 10:09  一曲轻扬  阅读(10)  评论(0)    收藏  举报