ms-access - Application.forms.Count 有时不准确
问题描述
我一直在使用 Application.forms.Count 来测量打开的表单数量,并且大多数情况下,此功能都可以正常工作。然而,每隔一段时间,计数就会出错。
当我在 MsgBox 中查看金额时,Access 认为打开了 2 个表单,而很明显只有 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
如前所述,这段代码在大多数情况下确实有效,但当计数错误发生时,它是一个主要障碍,我想找出导致它的原因。
解决方案
使用 (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
推荐阅读
- kubernetes-helm - 循环遍历 helm chart 文件并注入值
- db2 - Db2:如何格式化输出?
- laravel - laravel MethodNotAllowedHttpException 重定向到 404
- scala - 使用 Play Json 检测重复键
- javascript - 当提到特定用户时,如何让不和谐机器人发送消息?
- flexbox - 自定义页眉布局 - 斯巴达克斯店面
- c++ - C++ | 使用 std::mismatch (或其他 STL 替代方案)比较两个数组
- python - 可变长度 argparse 参数列表
- regex - 如何找到每次出现的模式并每次都匹配整行?
- verilog - 如何让每个模块实例从唯一的文件中读取?