select * from tb_sn where replace(sn," ","")=29
在access中能执行,写在ADOQuery1.SQL.Text中,提示replace 未定义,以前也有很多人配到类似问题,但好像都没有解决。

解决方案 »

  1.   

    你怎么写的,这是access支持的函数,应不会出问题
      

  2.   

    哦,看错了,access里面可以执行ADO里面也可以执行,不会有问题.
      

  3.   

    ADOQuery1.Close;
      ADOQuery1.SQL.Text := 'select * from tb_sn where replace(sn,'' '','''') = 29';
    //Format('select * from TB_SN where replace(sn,%s,%s)=%s',[QuotedStr(' '),QuotedStr(''),QuotedStr(str)]);
      ADOQuery1.Open;
    上面是我的源码,不能执行哦,你们可以试一下。access 数据库
      

  4.   

    给你个变通的方法把,做一个update的查询,放到access中,你在程序中执行这个查询
      

  5.   

    查了一些资料,replace是VBA的函数,在access内部可以支持,但是sql本身是不支持的
      

  6.   

    哦,好的,谢谢你 bdmh,我现在就去试试! thank you again
      

  7.   

    个人认为你这的sn肯定是文本类型,而文本类型不该与29比较,而应该和'29'比较,你可以改动下程序为下面的形式看看
    ADOQuery1.SQL.Text := 'select * from tb_sn where replace(sn,'' '','''') = ''29''';
      

  8.   

    不能执行有什么提示没有?replace是VBA函数,非SQL函数,不能在SQL语句中使用
      

  9.   

    多谢关注!其实加不加引号都没用的,原因应该就是 “replace是VBA函数,非SQL函数,不能在SQL语句中使用”
      

  10.   

    提示replace 未定义,我现在准备按bdmh说的,在access里加存储过程了!!!
      

  11.   

    按照bdmh的思路,我在access里面写了个过程,但是执行的时候,还是提示replace 未定义。难道ado都要sql语句拿出来自己解释????