ADOQ.SQL.Add('select * from BB.dbo.BC where [BBName]='''+YW+'''and [BBCC]='''+BT+'''');
执行后有错误,原因是BT是H'0022,因为BT中带有'字符,如何修改检索语句呢?
谢谢

解决方案 »

  1.   

    在查询分析器中都不会通过,你可以考虑其它思路比如 like的组合查询
      

  2.   


    {是空格问题吧?}
    ADOQ.SQL.Add('select * from BB.dbo.BC where [BBName]='''+YW+''' and [BBCC]='''+BT+''''); 
      

  3.   

    不好意思,没审题,你试试这样看行否?ADOQ.SQL.Add('select * from BB.dbo.BC where [BBName]='+QuotedStr(YW)+'and [BBCC]='+QuotedStr(BT)); 
      

  4.   

    正确的查询SQL是: select * from BC where BBCC='H''0022'Delphi代码中
    BT:='H''0022';        --设计时,中间为2个冒号
    这样,BT在运行时的值才是'H'0022'        --运行时,中间就变成一个冒号了
    如果楼主赋值正确的话
    楼上GDTOPONE的就是正解拉:
    ADOQ.SQL.Add('select * from BB.dbo.BC where [BBName]='+QuotedStr(YW)+'and [BBCC]='+QuotedStr(BT)); 
    关键在于用了QuotedStr函数如果你不用QuotedStr这个函数的话
    Delphi代码中
    BT:='H''''0022';     --设计时,中间为4个冒号
    ...
    ADOQ.SQL.Add('select * from BB.bdo.BC where [BBName]='''+YW+'''and [BBCC]='''+BT+'''');
    ...
    这样也是可以的
      

  5.   

    类似问题的解决办法:碰到这种问题,一般自己把SQL语句输出,就能很容易找到自己是哪里错了
      

  6.   

    在adoquery中有一个参数paramCheck 把这个改成 false试一下.
      

  7.   

    但最好这样写,用参数形式 
      with adoquery2 do
      begin
        close;
        //sql.Text := 'select * from treetable where  unitname='''+edit1.text+'''';
        sql.Text := 'select * from treetable where  unitname=:unitname';
        parameters.parambyname('unitname').value :=edit1.text;
        open;
      end;