天天看点

如何用filter过滤出query的空字段

如何用filter过滤出query的空字段 Delphi / Windows SDK/API

http://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就不会出错.

转载于:https://www.cnblogs.com/delphi2007/archive/2008/10/20/1314881.html