通过ODBC从MariaDB访问中自动重新链接表(VBA)

通过ODBC从MariaDB访问中自动重新链接表(VBA),vba,ms-access,mariadb,Vba,Ms Access,Mariadb,我需要通过ODBC将VBA中的表从MariaDB SQL重新链接到Access。我在下面找到了一些代码,但它不起作用。当我运行它时,它什么也没发生 在SQL中添加Access中未显示的列时,需要重新链接。 当我进行手动表格重新链接时,它会出现 这段代码是为Postgresql编写的,不是为MariaDB编写的。也许它需要一些修正 Sub refreshLinked_MariaDB() Dim cdb As DAO.Database, tbd As DAO.TableDef Set

我需要通过ODBC将VBA中的表从MariaDB SQL重新链接到Access。我在下面找到了一些代码,但它不起作用。当我运行它时,它什么也没发生

在SQL中添加Access中未显示的列时,需要重新链接。 当我进行手动表格重新链接时,它会出现

这段代码是为Postgresql编写的,不是为MariaDB编写的。也许它需要一些修正

Sub refreshLinked_MariaDB()
    Dim cdb As DAO.Database, tbd As DAO.TableDef
    Set cdb = CurrentDb
    For Each tbd In cdb.TableDefs
        If tbd.Connect Like "ODBC;Driver={MariaDB ODBC 3.1 Driver*" Then
            Debug.Print "Refreshing [" & tbd.Name & "] ..."
            tbd.RefreshLink
        End If
    Next
    Debug.Print "Done."
    Set tbd = Nothing
    Set cdb = Nothing
End Sub

更新:在
之后,如果
函数编辑重新链接工作正常,但某些表变为“只读”,这意味着我无法添加或编辑任何记录。删除这些表和链接后,手动-工作正常。有什么想法吗?

很可能您的连接字符串不同,并且筛选器无法将其识别为Maria DB。或者,您可以尝试更改

If tbd.Connect Like "ODBC;Driver={MariaDB ODBC 3.1 Driver*" Then


另请注意,VBA中的like与sql中的**like*”不同,很可能您的连接字符串不同,并且筛选器无法将其识别为Maria DB。或者,您可以尝试更改

If tbd.Connect Like "ODBC;Driver={MariaDB ODBC 3.1 Driver*" Then


还要注意的是,VBA中的类与sql中的类不同。是否执行这些操作:
Debug.Print“刷新..
?Ctrl+G显示输出。2.压缩和修复后新列是否可见?然后您可能需要在末尾执行
cdb.TableDefs.Refresh
。按Ctrl+G并运行代码时,仅显示“完成”。“压缩和修复后,新列仍然不可见。然后为每个列添加
Debug.Print tbd.Connect
后的
。如果
条件似乎不正确,则显示
;DSN=Access->MariaDB
。“Access->MariaDB”是我的ODBC连接名称。如果条件必须如下所示:
如果tbd.Connect类似于“ODBC;DSN=Access->MariaDB”,那么
?我试过了,但什么也没做。我把
If
函数改为
If left(待定,Connect,5)=“ODBC”;然后
就可以了。谢谢1.是否执行这些操作:
Debug.Print“刷新..
?Ctrl+G显示输出。2.压缩和修复后新列是否可见?然后您可能需要在末尾执行
cdb.TableDefs.Refresh
。按Ctrl+G并运行代码时,仅显示“完成”。“压缩和修复后,新列仍然不可见。然后为每个列添加
Debug.Print tbd.Connect
后的
。如果
条件似乎不正确,则显示
;DSN=Access->MariaDB
。“Access->MariaDB”是我的ODBC连接名称。如果
条件必须如下所示:
如果tbd.Connect类似于“ODBC;DSN=Access->MariaDB”,那么
?我试过了,但什么也没做。我把
If
函数改为
If left(待定,Connect,5)=“ODBC”;然后
就可以了。谢谢