许多访问用户都没有意识到它具有内置的进度表,该进度表可以显示各个进程的相对完成百分比。 它是相当有限的,但尽管如此,它确实提供了视觉反馈,指示特定任务的完成百分比。 激活后,仪表本身就位于状态栏的左上角,并通过SysCmd()方法进行控制。 它简单易用,仅需3个步骤即可实现,下面列出了这些步骤。 完成这些步骤之后,一个涉及记录集内字段更新的代码段将演示其用法。
- 使用acSysCmdInitMeter操作参数,描述性文本和一个值参数(即仪表的最大值)来启动仪表。
- 使用acSysCmdUpdateMeter操作参数和一个值参数来定期更新仪表,该参数指示当前任务的相对进度。
- 使用acSysCmdClearStatus删除仪表。
'The following code will loop through all Records in tblEmployee
and Update the value in a newly created Field called [Full Name]
to [FirstName] & " " & [LastName]. The relative completion percentage
of this operation will be displayed in our Progress Meter.
Dim MyDB As DAO.Database, MyRS As DAO.Recordset
Dim varReturn, intCounter As Long, dblNum, intNoOfRecs As Long
Set MyDB = CurrentDb()
Set MyRS = MyDB.OpenRecordset("tblEmployee", dbOpenDynaset)
MyRS.MoveLast: MyRS.MoveFirst
intNoOfRecs = MyRS.RecordCount 'Initialize the Progress Meter, set Maximum Value = intNoOfRecs
varReturn = SysCmd(acSysCmdInitMeter, "Updating...", intNoOfRecs)
Do While Not MyRS.EOF
With MyRS
.Edit
![Full Name] = ![FirstName] & " " & ![LastName]
intCounter = intCounter + 1
'Update the Progress Meter to (intCounter/intNoOfRecs)%
varReturn = SysCmd(acSysCmdUpdateMeter, intCounter) .Update
.MoveNext
End With
Loop 'Remove the Progress Meter
varReturn = SysCmd(acSysCmdClearStatus)
MyRS.Close
注意:如果更新大的记录集,您可能希望使用DoEvents定期将控件放弃给Windows环境。
如果有人对如何执行此操作感兴趣,请告诉我,
From: https://bytes.com/topic/access/insights/645816-how-use-progress-meter-access