gpt4 book ai didi

ms-access - Access VBA 循环(无响应)

转载 作者:行者123 更新时间:2023-12-05 08:33:59 24 4
gpt4 key购买 nike

我正在遍历记录集以执行一些基本功能或编辑。

通常对于超过 50 条记录的记录集, Access 将停止响应。

我在循环命令之前有 me.repaint 但窗口总是卡住并且 Access 标题栏显示:...(无响应)。

知道如何解决这个问题吗?

谢谢。

戴夫。

编辑:添加循环代码

If Me.Dirty = True Then Me.Dirty = False
Dim rs As DAO.Recordset
Set rs = Me.Guardians_Subform1.Form.Recordset

Dim strFirstName, strLastName As String

If Not (rs.EOF And rs.BOF) Then
rs.MoveFirst

Do Until rs.EOF = True
rs.Edit
strFirstName = Trim(StrConv(rs!FirstName, 3))
strLastName = Trim(StrConv(rs!LastName, 3))
If rs!FirstName <> strFirstName Then
rs!FirstName = strFirstName
End If

If rs!LastName <> strLastName Then
rs!LastName = strLastName
End If

rs.Update
rs.MoveNext
Me.Repaint
Loop
Else
MsgBox "There are no records in the recordset."
End If
Set rs = Nothing

最佳答案

您需要调用 DoEvents-Function在循环中将控制权传递给操作系统以重绘您的 Access-GUI 并处理任何其他可能需要处理的窗口消息。这样应用程序就不会在任务管理器和标题栏中被标记为“无响应”。

Do Until rs.EOF = True
[...]
rs.MoveNext
DoEvents
Loop

有一个小的性能权衡。如果不调用 DoEvents,则循环的总执行时间会稍微短一些,但 Access 在处理循环之前不会执行任何其他操作。因此它似乎没有响应。

关于ms-access - Access VBA 循环(无响应),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33474191/

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