【问题标题】:Access VBA Replace function returning values from Replace string访问从替换字符串返回值的 VBA 替换函数
【发布时间】:2013-04-22 18:36:42
【问题描述】:

我正在尝试使用 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([Data])-2。而是只返回最后一个字符。替换成功。

如果对我的监督有任何帮助,我们将不胜感激。

【问题讨论】:

  • [start] 和 [count] 参数是可选的。如果你把它们排除在外,它会正常工作吗?即Replace([Data],ChrW(10),"")
  • 是的,但我冒着从字符串中删除所有 chrW(10) 的风险,这不是我想要的。

标签: ms-access vba


【解决方案1】:

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

您有 3 个解决方法。

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

【讨论】:

  • 另外,请注意很多时候,Chr(10) [换行符] 前面是 Chr(13) [回车]。我还看到了 Chr(13) 本身的使用。只是需要注意的事情。
猜你喜欢
  • 1970-01-01
  • 2016-05-04
  • 1970-01-01
  • 1970-01-01
  • 2018-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-28
相关资源
最近更新 更多