关于在access数据库中执行replace函数的问题。(50)

  • 主题发起人 主题发起人 watalou
  • 开始时间 开始时间
W

watalou

Unregistered / Unconfirmed
GUEST, unregistred user!
在Access或Sql Server数据库中直接运行这条语句: update 表名 set Field=replace(Field, ' ', '') 用于清除字段"Field"中的所有空格(包括信息中间的空格)。在数据库中直接运行是没有错误的,可是将这条语句放到Delphi的ADOQuery中直接运行则报错,这是什么原因?有什么解决的办法?我的环境是:Delphi7 + Access2000
 
ADOQuery1.execute(sql)一般不用ADOQuery1,而直接用Connection对象connApp.executesql(sql)
 
WilliamGui,您好,我之前用您说的方法也试过,但结果是报同样的错误。
 
ADOQuery如果之前执行过Select之类的语句,在执行Update、Insert语句时,一般都异常。因此对于Update/Insert语句,建议使用 ADOCommand控件。ADOConnection控件也可以,但不建议使用它,对于导出数据到外部而执行的SQL,则用ADOCommand无法执行,只能用ADOConnection.
 
qry1.Close; qry1.SQL.Clear; qry1.SQL.Add('update tdepart set departname = replace(departname,'' '','''')'); qry1.ExecSQL;我执行通过了,效果很好!
 
我不知道paddy2007的执行环境是什么?我用的是Access数据库,如果是SQL Server数据库,这样执行是没有问题的。不过在Access数据库中执行就是有问题。可否告诉我您是在Access数据库环境下执行的吗?谢谢!
 
我在SQL2000上试成功了
 
对,在SQL Server上是可以成功运行的,不过在Access上就不行了。不过奇怪的是在Access数据库中用查询语句执行上述更新是可以成功执行了,就是放到Delphi中就不行了。不知道是什么原因。
 
试验了一下,不行,查了资料:Access2003及以后版本replace()可以在Access中的SQL运行。Access2000、AccessXP中replace()不行。
 
看到别人解决的方法了:(http://www.accessoft.com/article-show.asp?id=177)正 文:在企业中,我们可能面临不同的ACCESS版本用户,这时侯,在查询中使用Replace函数时,问题就出来了:Access2000版本: Replace函数不能用;AccessXP/2003版本: Replace函数可以直接用;目前企业中一般都是安装的OFFICE2000版本,要别人安装高版本是不方便的,特别是要很多人安装高版本那是劳民伤财的事情,如何来解决呢?下面的函数可以在Access2000的查询中使用Replace函数,原理就是写一个自定义函数:Public Function Rep(RepInThis As String, RepThis As String, RepWithThis As String) As String Rep = Replace(RepInThis, RepThis, RepWithThis)End Function通过调用这个函数,即可在Access2000版本查询中运行。
 
后退
顶部