我想通过一个表的某个字段来查询出相应的一条记录!我用一个Edit1来输入查询的条件,
有两种情况:1,输入的查询条件完全匹配。
            2,输入的查询条件模糊或者不匹配。我是这样做的:  with Adoquery1 do
   begin
    close;
    sql.clear;
    sql.add('select * from 表');
    sql.add(' where 字段 like '+'%'+trim(Edit1.text)+'%');//我是这样做的,可是程序报语法错误,怎么办?主要是想实现模糊查询。
    open;
  end;总觉得是那个‘%’的引号的问题!怎么修改啊?

解决方案 »

  1.   

    sql.add(' where 字段 like '+QuotedStr('%'+trim(Edit1.text)+'%'));
      

  2.   

    sql.add(' where 字段 like '+''%'''+trim(Edit1.text)+''%''');//
      

  3.   

    对不起应是sql.add(' where 字段 like '+'''%'''+trim(Edit1.text)+'''%''');//
      

  4.   

    应该这样写:
    sql.add(' where 字段 like ''%'+trim(Edit1.text)+'%''');
      

  5.   

    一般像这种情况,用太多的单引号会降低程序的可读性,为什么不用参数呢?
    SQL.Add('where 字段 like :变量名');
    Parameters.ParamByName('变量名').Value:='%'+trim(Edit1.Text)+'%';
    这样是不是好看一些呢
      

  6.   

    ....Add('select * from table where field like ''' + '%' + Trim(Edit1.Text) + '%' + '''');
    其它的就都一样了。
      

  7.   

    sql.add(' where 字段 like '+QuotedStr('%'+trim(Edit1.text)+'%'));
      

  8.   

    sql.add(' where 字段 like %'+#39+trim(Edit1.text)+#39+'%');
      

  9.   

    sql.add(' where 字段 like '+#39+'%'+#39+trim(Edit1.text)+#39+#39+'%'+#39);
      

  10.   

    遇到类似问题,showmessage(sql.txt)看一下...
      

  11.   

    修改为:
    with Adoquery1 do
       begin
        close;
        sql.clear;
        sql.add('select * from 表 ');
        sql.add(' where 字段 like '+QuotedStr('%'+trim(Edit1.text)+'%'));
        open;
       end;
    就没有问题了
      

  12.   

    可是我照着各位说得作了, 可是程序不报语法错误,但是DBGrid仍然不显示查询的结果!
      

  13.   

    to cnsz(晨夕) ppjjmm() 我相信你们的方法是对的!可是程序就是显示不出来查询的结果!!!!我查了一下,没有发现设置不正确的地方!各位帮我想想!谢谢!
      

  14.   

    同意 yesxwl() 的改法,你自己可以用一个常量代替Edit1.text试试!
      

  15.   

    dbgrid及query都不设永久字段
    如果query1.active:=true;时dbgrid显示有字段无数据,就是查询结果为空集
      

  16.   

    sql.add(' where 字段 like  "%'+trim(Edit1.text)+'%"');
    肯定通过,勿忘加分呀。
      

  17.   

    to grj79 语法肯定没有错,只是查询后DBgrid没有结果显示!
      

  18.   

    问题是DBGRid不显示查询结果!
      

  19.   

    query1的fieldEditor,清除所有的field
    dbgird1的columneditor  清除所有的column
    执行之后看dbgrid是否有字段名
      

  20.   

    sql.add(' where 字段 like ''%'+trim(Edit1.text)+'%''');
      

  21.   

    删除DBGRID,再重新放一个,你可能设置了一些属性。
      

  22.   

    sql.add(' where 字段 like ''%'+trim(Edit1.text)+'%'' ');
    或者
    sql.add(' where 字段 like "%'+trim(Edit1.text)+'%" ');
      

  23.   

    like操作符是用于比较字符串的,因而你的“字段”应是字符串,比较的内容也应是字符串,修改以下语句:
    sql.add(' where 字段 like '+'%'+trim(Edit1.text)+'%');
    为:
    sql.add(' where 字段 like '+'"%'+trim(Edit1.text)+'%"');
    注意%号前后的双引号。
      

  24.   

    呵呵,delphi的sql语句输入是麻烦点,建议用parameters.parambyname会清晰点