【问题标题】:Relink back-end mdb from front-end Access form using VBA使用 VBA 从前端访问表单重新链接后端 mdb
【发布时间】:2018-11-21 21:52:10
【问题描述】:

我的 Access 数据库分为后端和前端。 我在前端创建了一个 Access 表单,其中包含一个文本框、一个 Browser 按钮和一个 Relink 按钮。

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

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

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

'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

这有什么问题?

【问题讨论】:

  • 对不起,我已经编辑过了
  • 为什么后端没有链接到前端?通常,用户不必定期搜索和连接数据源。另外,您的最后一个问题是您应该告诉我们的。代码当前做什么?不想要的结果?错误?
  • 需要循环遍历 TableDefs 集合。评论microsoft.com/en-us/microsoft-365/blog/2012/08/03/…

标签: database ms-access vba


【解决方案1】:

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

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

【讨论】:

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