我实际上有这个小功能按预期工作:
Function createAttached(strTable As String, strPath As String, strBaseTable As String) As Boolean
On Error GoTo CreateAttachedError
Dim tdf As TableDef
Dim strConnect As String
Dim fRetval As Boolean
Dim myDB As Database
DoCmd.SetWarnings False
Set myDB = CurrentDb
Set tdf = myDB.CreateTableDef(strTable)
With tdf
.Connect = ";DATABASE=" & strPath
.SourceTableName = strBaseTable
End With
myDB.TableDefs.Append tdf
myDB.TableDefs.Refresh
fRetval = True
DoCmd.SetWarnings True
CreateAttachedExit:
createAttached = fRetval
Exit Function
CreateAttachedError:
If Err = 3110 Then
Resume CreateAttachedExit
Else
If Err = 3011 Then
Resume Next
Else
If Err = 3012 Then
Set tdf = myDB.TableDefs(strTable)
tdf.Connect = ";DATABASE=" & strPath
tdf.RefreshLink
fRetval = True
GoTo CreateAttachedExit
End If
End If
End If
End Function
此代码工作正常,我可以多次调用该函数,因为我想从另一个数据库中添加指向表的链接。但是,我有大约 30 个表要从同一个数据库中导入,并且每次调用该脚本时都会从头开始重新启动。由于数据库位于另一台服务器上,因此链接 30 个表大约需要 1 分钟。
当我需要链接来自同一个数据库的多个表时,我可以用这个函数做些什么来让它更快地工作?我希望它在参数中使用多个 strTable 和 strBaseTable 而不是一个(也许是数组?),但我不知道该怎么做。
谢谢你。