如何用filter过滤出query的空字段 Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiDB/html/delphi_20061225155329114.html
想过滤出某字段值为空的记录
paradox 表,使用query
设置filter:= '字段名=NUll'
不能执行?
filter:= '字段名 in NUll'
filter = 'FieldName is null'吧
在access中,这么写 fieldname=null
好像is也不行 ^-^!!!
用=
给你做了一个例子:
数据表结构如下:表名,temp
a 数值类型
b 文本
代码如下:
with Query1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from temp');
Filter := 'b=null';
Filtered := true;//估计你是没写这个
Open;
end;
B如果是文本类型,在SQLSERVER中是不行的
用这个判断:Datalength(B)>0
Filter := 'b=null';
Filtered := true;//估计你是没写这个
Open;
不行的,我试过 filtered:=true ,我已写了
b 为char型, Filter:='b='' '''都可以,但一用到null 就报错
capbility can not supported
is, in 都不行
paradox 表
按照我例子中的,新建一个表,
数据表结构如下:表名,temp
字段名 a 数值类型 主键
字段名 b 文本
数据库是paradox 表
输入一些测试数据
然后在DELPHI新建工程,不要用你以前那个,用下面代码,看看行不行。不过在我机器上是没有任何问题的。
代码如下:
with Query1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from temp');
Filter := 'b=null';
Filtered := true;//估计你是没写这个
Open;
end;
新建一个表可以的,
我再找找原因,
另外如何过滤出为null 或者为trim(filed.value)=''的记录
楼上飞哥, 就是用的 field is null, 这个可以
找到原因,当sql 加入where 条件且条件是date型,并且使用了query的paramByName()做为传递参数的方式,则使用null 出错,改为不用 sDate=:sd1的方式,直接加入,则过滤时用null就不会出错.