Application.forms.Count有时不准确

问题描述 投票:0回答:2

我一直在使用Application.forms.Count来测量打开的表单数量,大多数情况下,此功能正常工作。但是,每隔一段时间,计数就错了。

当我查看MsgBox中的金额时,Access显示有两个表单打开时很明显只有1个打开。我已经在我的Form_Unload方法上运行了,因为表单应该只在最后一个表单仍然打开时关闭。我确保在执行此操作时没有其他Access运行实例,并且没有打开弹出窗口或模式。

Dim Form As Double

Form = Application.forms.Count
MsgBox Form

If Form = 1 Then
'Nothing, form closes
DoCmd.ShowToolbar "Ribbon", acToolbarYes
Else
MsgBox "You cannot close this form right now."
cancel = True
End If
End Sub 

如上所述,这段代码在大多数情况下都可以正常工作,但是当错误计数发生时它是一个主要的障碍,我想找出导致它的原因。

ms-access access-vba
2个回答
1
投票

使用(Debug.Print Forms(0).Name和Debug.Print Forms(1).Name),我能够发现我打开的表单已经以某种方式重复了自己(虽然只有一个版本的表单打开了屏幕)。虽然我不知道这是怎么发生的,但MS Access的简单重启将摆脱重复。我将添加这个补充if语句以防止将来出现这种情况:

If formCount = 1 Then
...
Else
 If Forms(0).Name = Forms(1).Name Then
 'The duplication error is happening again
 DoCmd.Close "FormNameHere"
 End If
End If

1
投票

经过这么久,我相信我已经找到了这个错误的根源。我之前并不知道表单可以在后台打开而不会实际出现,当您读取或编写项目级变量时会发生这种情况。我检查了一个变量,然后尝试检查表格的数量,尽管只有一个是可见的,但有两个打开。我认为在检查变量之后,一个简单的DoCmd.Close“formNameHere”将是解决此问题的最佳方法。

© www.soinside.com 2019 - 2024. All rights reserved.