2013-04-22 170 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