【问题标题】:MS Access - Update specific values of one table based on values from another table (Field Length Specific)MS Access - 根据另一个表中的值更新一个表的特定值(特定于字段长度)
【发布时间】:2014-01-27 20:43:09
【问题描述】:

一个表有带有示例值的地址字段:

123 Main Street Professional Center
456 Avenue Of Americas Financial Square
678 Great Northern Boulevard University Centre

这些值超过一定数量的字符(在这种情况下 - 字段长度为 30)

我有另一个表,其中包含值及其 USPS 批准的首字母缩略词:

Field1    Acronym
Street    St
Boulevard Blvd
Square    Sq

我希望能够根据第二个表中 Field1 中的匹配值,使用第二个表中的首字母缩略词更新第一个表中的街道列。

可能吗?非常感谢替代解决方案。

【问题讨论】:

    标签: ms-access


    【解决方案1】:

    一种可能的解决方案是对首字母缩略词表中的每条记录进行迭代。然后,替换匹配的值。

    Public Sub UpdateTable()
    Dim rs  As Recordset
    Dim sql As String
        Set rs = CurrentDb.OpenRecordset("acronyms")
        Do Until rs.EOF
            sql = "UPDATE addresses SET address = Replace([address], '" & rs!Field1 & "', '" & rs!Acronym & "') WHERE address like '*" & rs!Field1 & "*'"
            CurrentDb.Execute sql
            rs.MoveNext
        Loop
        rs.Clone
    End Sub
    

    注意:根据 ms-access 版本,like 表达式应带 * 或带 %

    【讨论】:

    • 好答案。但是,通配符的差异与 Access 版本无关,它取决于执行查询的位置。从 Microsoft Access 应用程序本身运行的查询使用 * 作为“零个或多个字符”的通配符,而从外部应用程序运行的查询(通过 ADO、OLEDB 等连接)使用 % 作为通配符。跨度>
    • 对于不同版本的访问,我参考了 mdb/adp 文件。从Access 2003开始,项目文件(adp)使用%通配符,同时正常访问数据库是一个选项,您可以在选项->表/查询->SQL语法office.microsoft.com/en-us/access-help/…office.microsoft.com/en-us/access-help/…中设置
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多