2013-04-22 134 views
1

我想使用REPLACE函数来搜索一个字符串并删除一个字符。下面是代码..访问VBA替换函数返回替换字符串的值

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

尽管这只是一个选择语句,结果集从柱的[Data]返回数据的最后三个字符。而不是在该位置开始搜索。

这里的UPDATE语句,做同样的...

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

我仍然期待搜索处于LEN([数据])的结果 - 2。而只返回最后一个字符。替代是成功的。

任何帮助我在这里监督,将不胜感激。

+0

[开始]和[计数]参数是可选的。如果你将它们排除在外,它能正常工作吗?即'Replace([Data],ChrW(10),“”)' – PowerUser 2013-04-22 19:36:56

+0

是的,但我冒险从字符串中移除所有不是我想要的chrW(10)。 – htm11h 2013-04-22 20:41:09

回答

0

奇怪。我已经确认你收到了什么。在查询中,向Replace()函数添加起始位置同样也是Right()函数。我找不到任何文件。在VBA中,它的行为与人们预期的一样,因为它返回整个字符串,不会替换字符。

您有3种解决方法。

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

另外,请注意,很多时候,Chr(10)[换行符]前面有一个Chr(13)[回车]。我也看到了Chr(13)本身。只是要注意的东西。 – 2013-04-22 21:19:00