操作查询的进度条

Progress Bar for Action Queries

我正在 运行 进行一系列链接到多个后端 table 的操作查询(进行 table 查询)。我想显示一个进度条,因为这些查询总共需要 12 分钟到 运行。当我 运行 代码时,我看到一个沙漏,但看不到进度条。我尝试了下面的代码,但它没有显示进度条。还有其他方法可以显示操作查询的进度吗?

Option Compare Database
Option Explicit

Private Sub PS_Report_Date_AfterUpdate()

Dim intCnt As Integer
intCnt = 0

DoCmd.SetWarnings False

DoCmd.Close acReport, "Report Name", acSavePrompt

' Display information that action queries are about to run
MsgBox "Running Action Queries, Standby...", vbInformation

' Turn on hourglass
DoCmd.Hourglass True

' Turn on status meter
SysCmd acSysCmdInitMeter, "working...", 100

' Start DoCmd for action queries
DoCmd.OpenQuery "Make_Table_Query1"
intCnt = intCnt + 10
SysCmd acSysCmdUpdateMeter, intCnt

DoCmd.OpenQuery "Make_Table_Query2"
intCnt = intCnt + 10
SysCmd acSysCmdUpdateMeter, intCnt

DoCmd.OpenQuery "Make_Table_Query3"
intCnt = intCnt + 10
SysCmd acSysCmdUpdateMeter, intCnt

DoCmd.OpenQuery "Make_Table_Query4"
intCnt = intCnt + 10
SysCmd acSysCmdUpdateMeter, intCnt

DoCmd.OpenQuery "Make_Table_Query5"
intCnt = intCnt + 10
SysCmd acSysCmdUpdateMeter, intCnt

DoCmd.OpenQuery "Make_Table_Query6"
intCnt = intCnt + 10
SysCmd acSysCmdUpdateMeter, intCnt

DoCmd.OpenQuery "Make_Table_Query7"
intCnt = intCnt + 10
SysCmd acSysCmdUpdateMeter, intCnt

DoCmd.OpenQuery "Make_Table_Query8"
intCnt = intCnt + 10
SysCmd acSysCmdUpdateMeter, intCnt  

DoCmd.OpenQuery "Make_Table_Query9"
intCnt = intCnt + 10
SysCmd acSysCmdUpdateMeter, intCnt

DoCmd.OpenQuery "Make_Table_Query10"
intCnt = intCnt + 10
SysCmd acSysCmdUpdateMeter, intCnt  

' Set warnings back on
DoCmd.SetWarnings True

' Remove the progress bar
SysCmd acSysCmdRemoveMeter

' Remove the status bar
DoCmd.Hourglass False

End Sub

只需添加 DoEvents。我循环不重复相同的命令。

Private Sub PS_Report_Date_AfterUpdate()

Dim intCnt As Integer
Dim qname As String
intCnt = 0

DoCmd.SetWarnings False

DoCmd.Close acReport, "Report Name", acSavePrompt

' Display information that action queries are about to run
MsgBox "Running Action Queries, Standby...", vbInformation

' Turn on hourglass
DoCmd.Hourglass True

' Turn on status meter
SysCmd acSysCmdInitMeter, "working...", 100

For I = 1 To 10
  qname = "Make_Table_Query" & CStr(I)
  ' Start DoCmd for action queries    
  DoCmd.OpenQuery qname
  intCnt = intCnt + 10
  SysCmd acSysCmdUpdateMeter, intCnt
  DoEvents
Next I

' Set warnings back on
DoCmd.SetWarnings True

' Remove the progress bar
SysCmd acSysCmdRemoveMeter

' Remove the status bar
DoCmd.Hourglass False

End Sub

如果不行,添加

Dim qdf AS QueryDef

到sub的up,改变loop

For I = 1 To 10
  qname = "Make_Table_Query" & CStr(I)
  Set qdf = CurrentDb.QueryDefs(qname) 
  ' execute the query    
  qdf.Execute
  intCnt = intCnt + 10
  SysCmd acSysCmdUpdateMeter, intCnt
  DoEvents
Next I