我需要从大量访问字段中的字符串中删除连字符。这样做的最佳方式是什么?
目前,条目遵循以下一般格式:
2010-54-1
2010-56-1
etc.
我正在尝试从此字段运行追加查询,但我总是收到验证错误,导致查询失败。我认为这次失败的原因是条目中的大肆宣传,这就是我需要删除它们的原因。
我已经google了,我看到有很多使用vbscript的格式指南,但我不确定如何将vb集成到Access中。这对我来说是新的:)
提前致谢, 雅克
修改
因此,我运行了一个测试用例,其中包含一些简单的文本值。它们也不起作用,问题不是连字符。
答案 0 :(得分:1)
我不确定连字符实际上是没有看到样本数据/查询的问题,但如果你需要做的就是摆脱它们,那么Replace函数应该足够了(你可以在查询中使用它)< / p>
示例:http://www.techonthenet.com/access/functions/string/replace.php
如果您需要执行一些比这更高级的字符串操作(或多次调用替换),您可能需要创建一个可以从查询中调用的VBA函数,如下所示:
http://www.pcreview.co.uk/forums/thread-2596934.php
要做到这一点,您只需要在访问项目中添加一个模块,并在那里添加该功能,以便能够在查询中使用它。
答案 1 :(得分:0)
我删除了除字母数字字符以外的所有内容时使用的函数。只需创建一个查询,并在查询中使用您尝试修改的任何字段中的函数。运行速度比查找和替换要快得多。
Public Function AlphaNumeric(inputStr As String)
Dim ascVal As Integer, originalStr As String, newStr As String, counter As Integer, trimStr As String
On Error GoTo Err_Stuff
' send to error message handler
If inputStr = "" Then Exit Function
' if nothing there quit
trimStr = Trim(inputStr)
' trim out spaces
newStr = ""
' initiate string to return
For counter = 1 To Len(trimStr)
' iterate over length of string
ascVal = Asc(Mid$(trimStr, counter, 1))
' find ascii vale of string
Select Case ascVal
Case 48 To 57, 65 To 90, 97 To 122
' if value in case then acceptable to keep
newStr = newStr & Chr(ascVal)
' add new value to existing new string
End Select
Next counter
' move to next character
AlphaNumeric = newStr
' return new completed string
Exit Function
Err_Stuff:
' handler for errors
MsgBox Err.Number & " " & Err.Description
End Function
刚刚注意到代码的链接,看起来与我的相似。猜猜这只是另一种选择。