sql.Text:=('select t.name,t.about,t.about1 from tpl_word1 t where t.wordtype <> ''  ''' + T) ;
去掉背后一个引号,见上。

解决方案 »

  1.   

    楼主这种写法,要是edit1,edit2,edit3中有一个引号,你就惨了。
    用quotedstr('%'+edit1.text+'%')这个好用。
      

  2.   

    sql.Text:=('select t.name,t.about,t.about1 from tpl_word1 t where t.wordtype <> ''  ' + T) ;
      

  3.   

    按照你和3楼的方法又变成了字符错误,是不是数据库的字段类型问题?我三个数据都是varchar2的
      

  4.   

    T:=' and t.name like ''' +'%'+edit1.Text+'%'+ ''' ' ; 都改为:
    T := ' and t.name like ''%' + Trim(Edit1.Text) + '%''';即可。其他的语句都照这个改就行了,
    还有就是像2楼说的用quotedstr就可以,防止SQL 注入可以。
      

  5.   

    找出来了,应该是 t.wordtype<>''出了字符问题,改为t.wordtype in (0,21,23,25)就没报错了 
      

  6.   

    我如果想让t.wordtype的条件为非空,t.wordtype<>''不行么
      

  7.   

    漏了个'',应该是t.wordtype<>'''',看来我还是quotedstr好了
      

  8.   

    非空,这里的空并不是空格。空格应该说是字符串。nil:空指针,空地址,对象也是指针,所以可以object := nil;
    null:null是一个未定义值的变量,既不是0也不代表空字符串,它是未定义的。
      

  9.   

    select t.name,t.about,t.about1 from tpl_word1 t where t.wordtype isnull