ADOQuery连接Access.有表t1, 有 aa, bb, cc 三个字段,
现在我想用 
select * from t1 where aa like '%xx%' and bb like '%yy%' and cclike '%zz%' 
的形式搜索记录,但当遇到有字段出现空值的情况,就无法正确搜索.请问应该怎样改这条SQL ?然后我用 Nz(aa) 代替 aa ,返回一个错误:"Nz不是一个有效的函数名" ?  
但用ADOQuery1.SQL.SaveToFile('d:\SQL1.txt');  把该SQL直接在Access中却可以正常查询。

解决方案 »

  1.   

    第一个问题,在后面加 and aa is not null and bb is not null and cc is not null 看看。第二个问题nz是什么哦,我孤陋寡闻不知道。原来sql和我一样寡闻它也不认识呀。呵呵
      

  2.   

    to lovend(颓废之吻) 
    如果 加 and aa is not null and bb is not null and cc is not null ,那么原来为null的记录不都全给排除了!? 所以这样不行的.
    我在delphi的 aa bb cc对应的搜索栏如果不输入查询值,按下查询按钮后,是应该返回所有记录的.在Access中nz函数 遇到空值时,将 Null 值转换为零、零长度字符串或其他特定的值,这样就可以将这些记录包含到查询结果中。 但不知道为什么我在delphi里运行就出错了。
      

  3.   


    请问 delphi中的 DBmemo 控件 内容是不是不能用 like 操作实现查询? 如果可以,应该怎样写?
      

  4.   

    你要查找的是 aa like ... bb like ... cc like ..  的数据,
    如果有一项为空,根本就不满足你上面的要求,所以,排除那些项只是为了你方便查询,
    即便你不排除,那些项也不会符合你查找的记录。打个比方,你要查所以姓张的人 xing like  '张%'  
    即便你不排除无名的人,那些无名的人也不满足你 xing like  '张%'  的要求,他们不会出现在查询结果中的。
      

  5.   

    select * from t1 where aa like '*xx*' and bb like '*yy*' and cclike '*zz*'