【发布时间】:2020-07-19 14:21:36
【问题描述】:
此语句将打开当前数据库中命名表的数据表视图:
DoCmd.OpenTable sTablename, acViewNormal
有没有办法为另一个数据库中的表实现相同的结果?
我有一个表单,我可以在其中选择一个 Access 数据库,然后在下拉菜单中填充该数据库中的所有表。我希望能够从该列表中选择一个表,并在普通视图和设计视图中打开所选表的数据表视图。
任何帮助将不胜感激。
迈克尔
【问题讨论】:
此语句将打开当前数据库中命名表的数据表视图:
DoCmd.OpenTable sTablename, acViewNormal
有没有办法为另一个数据库中的表实现相同的结果?
我有一个表单,我可以在其中选择一个 Access 数据库,然后在下拉菜单中填充该数据库中的所有表。我希望能够从该列表中选择一个表,并在普通视图和设计视图中打开所选表的数据表视图。
任何帮助将不胜感激。
迈克尔
【问题讨论】:
可以通过以下方式完成。
Private Sub OpenTableInAnotherDatabase()
Dim sDatabasePath As String
sDatabasePath = "another_database.accdb"
Dim sTablename As String
sTablename = "foo"
Dim db As Database
Dim tbl As TableDef
' Create link table
Set db = CurrentDb
Set tbl = db.CreateTableDef(sTablename)
tbl.Connect = ";DATABASE=" & sDatabasePath
tbl.SourceTableName = sTablename
db.TableDefs.Append tbl
' Open link table
DoCmd.OpenTable sTablename, acViewNormal
End Sub
您可以使用DeleteObject删除创建的链接表。
DoCmd.DeleteObject acTable, "foo"
如果你打算在另一个窗口中打开表格,下面的代码可以工作。
' Note this variable is public so that the opened window doesn't disappear when the procedure exits.
Public app As New Access.Application
Sub OpenAnotherDatabaseTable()
' Open another database in a new Access process
app.Visible = True
app.OpenCurrentDatabase "another_database.accdb"
Dim sTablename As String
sTablename = "foo"
app.DoCmd.OpenTable sTablename, acViewNormal
End Sub
【讨论】: