【问题标题】:Removing non-alphanumeric characters in an Access Field删除访问字段中的非字母数字字符
【发布时间】:2015-03-19 06:04:57
【问题描述】:

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

目前,条目遵循以下通用格式:

  2010-54-1
  2010-56-1
  etc.

我正在尝试对此字段运行附加查询,但我总是收到导致查询失败的验证错误。我认为这次失败的原因是条目中的连字符,这就是我需要删除它们的原因。

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

提前致谢, 雅克

编辑:

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

【问题讨论】:

  • 向我们展示失败的追加查询的 SQL 视图,并更详细地描述您遇到的错误。
  • 第二个@HansUp,既然您发现连字符不是问题,您需要提供错误消息。
  • 这个字段的数据类型是什么?

标签: ms-access


【解决方案1】:

如果没有看到示例数据/查询,我不确定连字符实际上是问题,但如果您需要做的就是摆脱它们,替换功能应该就足够了(您可以在查询中使用它)

示例:http://www.techonthenet.com/access/functions/string/replace.php

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

http://www.pcreview.co.uk/forums/thread-2596934.php

为此,您只需将一个模块添加到您的访问项目中,并在那里添加函数以便能够在您的查询中使用它。

【讨论】:

  • 不幸的是,查找/替换功能最多只能用于 65,000 个条目。我至少有这个数量的 10 倍:/
  • 你从哪里得到这个号码?我最近很少使用访问权限,但不记得有关函数可以处理的行数的任何此类限制(也许知识更丰富的访问权限会更有帮助)您是否在查看数据集时尝试这样做,还是使用查询?
  • 我试过了!剪贴板不会处理更多的值。我正在做一些非常简单的工作,只是试图将一个字段附加到另一个表,但我一直在每个条目上都收到验证错误。我还没有尝试过 vb 功能,说实话主要是因为它根本不是我熟悉的东西。
  • 啊,我明白了。查看您的后续 cmets,我认为我们需要查看相关查询以了解您需要做什么(HansUp 描述了如何让查询文本显示给我们)
  • @Jacques Tardie:您显然没有阅读@AlexCuse 发布的链接,该链接指的是 Replace() VBA 函数,该函数可用于 Access 中的 UPDATE 查询。在任何时候都没有人建议使用 UI 的查找/替换功能。
【解决方案2】:

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

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

刚刚注意到代码的链接,看起来与我的相似。猜猜这只是另一种选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多