gpt4 book ai didi

database - 使用 VBA 并行打开数据库

转载 作者:搜寻专家 更新时间:2023-10-30 22:07:19 24 4
gpt4 key购买 nike

我有一个 Access 数据库,用于计算大量人员一周中每一天的绩效分数。

由于数据集的大小,该过程运行得相当慢。作为加快速度的一种潜在方法,我正在考虑一个过程,该过程将有 5 个独立的数据库,每个数据库计算一天的分数。

我编写了下面的 VBA 代码,它只打开所有这些数据库(一旦每个数据库打开,它都有自己的 autoExec 宏,将启动它自己的过程)。

Sub DBloop()
Dim dbArr As Variant
Dim i As Integer

dbArr = Array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")

For i = 0 To UBound(dbArr)
openDBs CStr(dbArr(i))
Next
End Sub

Sub openDBs(dbname As String)
Dim acc As Access.Application
Dim DBpath As String
Dim strDbName As String

DBpath = "H:\Performance Test\"
strDbName = DBpath & dbname & ".accdb"

Set acc = New Access.Application
acc.Visible = True
acc.OpenCurrentDatabase strDbName, False
End Sub

不幸的是,当每个数据库打开时,初始过程都在等待该数据库的 autoExec 宏完成,然后再打开下一个数据库。有谁知道是否有解决方法?

最佳答案

有很多方法可以确保您不会同步打开数据库。

下面是最简单的一个:

Application.FollowHyperlink strDbName

(无需创建新的 Access 应用程序对象)。

另一种方法是让 AutoExec 宏中的代码异步执行。我为此使用的技术如下:

  1. 创建隐藏表单
  2. 将它的计时器设置为 1
  3. 执行代码,并在计时器上关闭窗体

其他方法包括使用 ShellWScript.Shell 对象。

关于database - 使用 VBA 并行打开数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47658844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com