database - 使用 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
这有什么问题?
解决方案
我终于弄明白了,下面是完整的代码:
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
推荐阅读
- kubernetes - 与 HELM 共享依赖项
- php - php 将输入“名称”设置为 php echo 变量
- jmeter - Jmeter将响应与提供的文件进行比较
- mysql - 不同维度的sql多个最大值
- asp.net - ASP.NET 在发布后给出错误 403,但在开发期间没有
- swift - 如何在异步线程中保持永无止境的进程
- php - 在特定时间范围内显示数据库实体
- amazon-web-services - amazon emr - 创建集群是否使用数据传出?
- cuda - CUDA:在减和期间计算所有部分和的方法
- google-app-engine - 使用 gcloud app deploy 部署 GAE Flex 时出错