Ms access 访问从替换字符串返回值的VBA替换函数

Ms access 访问从替换字符串返回值的VBA替换函数,ms-access,vba,Ms 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

我正在尝试使用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。相反,只返回最后的字符。换人成功了


如果您能帮我的忙,我们将不胜感激。

奇怪。我已经确认你得到了什么。在查询中,将起始位置添加到Replace()函数也充当Right()函数。我找不到这方面的任何文件。在VBA中,它的行为与预期的一样,即返回整个字符串,而不包含替换的字符

您有3个解决方案选项

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

  • [start]和[count]参数是可选的。如果你不考虑这些,它能正常工作吗?i、 e.
    Replace([Data],ChrW(10),”)
    是的,但我冒着从字符串中删除所有ChrW(10)的风险,这不是我想要的。另外,请注意,很多时候,Chr(10)[换行符]前面是Chr(13)[回车符]。我也看到了Chr(13)本身的使用。只是一些需要注意的事情。