Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 删除访问字段中的非字母数字字符_Ms Access - Fatal编程技术网

Ms access 删除访问字段中的非字母数字字符

Ms access 删除访问字段中的非字母数字字符,ms-access,Ms Access,我需要从大量访问字段中的字符串中删除连字符。做这件事最好的方法是什么 目前,条目采用以下通用格式: 2010-54-1 2010-56-1 etc. 我试图在这个字段之外运行append查询,但我总是遇到验证错误,导致查询失败。我认为失败的原因是条目中的催眠,这就是为什么我需要删除它们 我在谷歌上搜索过,看到有很多使用vbscript的格式化指南,但我不确定如何将vb集成到Access中。这对我来说是新的:) 提前感谢,, 雅克 编辑: 因此,我用一些简单的文本值运行了一个测试用例

我需要从大量访问字段中的字符串中删除连字符。做这件事最好的方法是什么

目前,条目采用以下通用格式:

  2010-54-1
  2010-56-1
  etc.
我试图在这个字段之外运行append查询,但我总是遇到验证错误,导致查询失败。我认为失败的原因是条目中的催眠,这就是为什么我需要删除它们

我在谷歌上搜索过,看到有很多使用vbscript的格式化指南,但我不确定如何将vb集成到Access中。这对我来说是新的:)

提前感谢,, 雅克

编辑:


因此,我用一些简单的文本值运行了一个测试用例。它们也不起作用,问题不在于连字符。

在没有看到示例数据/查询的情况下,我不确定连字符是否真的是问题所在,但如果您需要做的只是去除它们,那么替换函数应该足够了(您可以在查询中使用此函数)

例如:

如果需要执行比此更高级的字符串操作(或多次调用以替换),则可能需要创建一个VBA函数,可以从查询中调用,如下所示:


要做到这一点,您只需在access项目中添加一个模块,并在其中添加函数,以便能够在查询中使用它。

我有一个函数,用于删除除字母数字字符以外的所有内容。只需创建一个查询,并在您试图修改的任何字段上使用查询中的函数。运行速度比查找和替换快得多

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

刚刚注意到代码的链接,看起来和我的类似。我猜这只是另一个选项。

不幸的是,查找/替换功能最多只能用于65000个条目。我至少有10倍于这个数字:/你从哪里得到这个数字的?我最近很少使用access,但我不记得函数将处理的行数有任何这样的限制(也许更了解access的人会更有帮助)。您是在查看数据集时尝试这样做,还是在使用查询时尝试这样做?我尝试过这样做!剪贴板不会处理更多的值。我正在做一些非常简单的工作,只是试图将一个字段附加到另一个表中,但我总是在每个条目上得到验证错误。老实说,我还没有试过vb函数,主要是因为我对它一点都不熟悉。啊,我明白了。查看您的后续评论,我认为我们需要查看相关的查询,以了解您需要做什么(HansUp介绍了如何获取查询文本以向我们展示)@Jacques Tardie:您显然没有阅读@AlexCuse发布的链接,该链接指的是Replace()VBA函数,可在Access中的更新查询中使用。任何时候都没有人建议使用UI的Find/Replace函数。向我们展示失败的append查询的SQL视图,并向我们提供您遇到的错误的更详细描述。对于@HansUp,现在您已经发现连字符不是问题所在,您需要提供错误消息。此字段的数据类型是什么?