访问VBA替换函数从Replace字符串返回值

时间:2013-04-22 18:36:42

标签: ms-access access-vba

我正在尝试使用REPLACE函数来搜索字符串并删除一个字符。这是代码..

SELECT Test.*, Replace([Data],ChrW(10),"",(Len([Data])-2),1) FROM Test;

虽然这只是一个select stmt,但结果集会返回[Data]列中数据的最后三个字符。而不是在该位置开始搜索。

此处的UPDATE语句也是如此......

 UPDATE Test SET Test.Data = Replace([Data],ChrW(10),"",(LEN([Data])-2)) 
 WHERE (((Test.[Data]) Like ("*" & ChrW(10))));

我仍然希望搜索结果是LEN([数据]) - 2。而是仅返回最后的字符。替换成功。

对我的疏忽有任何帮助,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

怪异。我已经确认你得到了什么。在查询中,向Replace()函数添加起始位置也可以充当Right()函数。我找不到任何相关的文档。在VBA中,它的行为与预期的一样,因为它返回整个字符串,没有替换的字符。

您有3种解决方法可供选择。

  1. 您可以替换所有Chrw(10),但我认为您可能不希望这样做,因为您指定了一个起始位置。
  2. 您可以使用IIF()语句来测试最后一个char是否为Chr(10),如果是,则执行Left()函数以排除最后一个char。有点凌乱。
  3. 如果你在Access中工作,你可以在VBA中创建自己的功能并改为调用它。您可以调用您的函数Repl,因此它看起来像这样: UPDATE测试SET Test.Data = Repl([Data])