首页 > 解决方案 > 使用 VBA 从前端访问表单重新链接后端 mdb

问题描述

我的 Access 数据库分为后端和前端。我在前端创建了一个 Access 表单,其中包含一个文本框、一个浏览器按钮和一个重新链接按钮。

当我单击Browse时,会弹出文件管理器以选择我的 .mdb 文件。选择文件后,文件的路径会显示在文本框中。

我想要的是当我按下重新链接按钮时,它应该从文本框获取路径并将我的后端文件链接到我的前端。

到目前为止,这是我的代码:

'browse button
 Private Sub browseBtn_Click()
   Dim objDialog As Object
   set objDialog = Application.FileDialog(3)
   With objDialog
        .show
        .AllowMultiSelect = False
        If .SelectedItems.Count = 1 Then
            'textFiled displays the path
             Me.textField = .SelectedItems(1) 
        End If
    End With
 End Sub

'relink button
Private Sub linkBtn_Click()
    Dim newConnection As String
    Dim currentPath As String
    currentPath = Me.textField
    Dim tblDef As TableDef
        tblDef.Connect = newConnection
        tblDef.RefreshLink
End Sub

这有什么问题?

标签: databasems-accessvba

解决方案


我终于弄明白了,下面是完整的代码:

Private Sub browseBtn_Click()
Dim objDialog As Object

 Set objDialog = Application.FileDialog(3)

 With objDialog
   .title = "Please select the backend file"
   .AllowMultiSelect = False
   .Show
   If .SelectedItems.Count = 1 Then
    Me.textField = .SelectedItems(1)
   End If
 End With
End Sub

Private Sub linkBtn_Click()
  RefreshLinks (Me.textField)
End Sub


Public Function RefreshLinks(strFilename As String)
   Dim dbs As dao.Database
   Dim tdf As TableDef

   Set dbs = CurrentDb

    For Each tdf In dbs.TableDefs
         If Len(tdf.Connect) > 0 Then
             tdf.Connect = ";DATABASE=" & strFilename
             Err = 0
            On Error Resume Next
            tdf.refreshlink
             If Err <> 0 Then
                RefreshLinks = False
                 Exit Function
             End If
         End If
    Next tdf
    RefreshLinks = True

End Function

推荐阅读