forms - 访问 Form.Requery 工作不一致
问题描述
我遇到了访问表单重新查询方法工作不一致的问题。
我有两种形式。第一种形式是Data_Entry
用户的形式。第二种形式是Dashboard
对第一种形式的重要数据进行排列和格式化的显示。在Data_Entry
表单上,用户可以按下一个按钮来在Data_Entry
和Dashboard
表单上强制执行 Requery 事件。这是非常简单的代码:
Private Sub Button_Update_Click()
Form_Data_Entry.Requery
Form_Dashboard.Requery
End Sub
在Dashboard
表单中,我还有一个每 60 秒触发一次的计时器事件:
Private Sub Form_Timer()
Me.Requery
End Sub
大约 50% 的时间这些都按预期工作。大约 45% 的时间,Data_Entry
表单上的更新按钮会重新查询自身,但不会对仪表板执行任何操作;但是,单击Dashboard
并按 F5 将强制重新查询,计时器事件也是如此。另外 5% 的时间,无论是更新按钮、F5 还是计时器都不会重新查询Dashboard
.
100% 的时间,更新按钮将重新查询Data_Entry
表单而不会出现问题。
如果我关闭Dashboard
并重新打开它,它将再次按预期工作......一段时间。有时它会持续几个小时而没有问题,有时只有 15 分钟。
我不知道是什么导致了这种不一致的行为。这似乎不是 VBA 问题。这是 Access 源代码本身的某种更深层次的问题,还是我在其他地方遗漏了一些模糊的东西?
解决方案
我设法解决了这个问题,但我仍然不知道是什么原因造成的。我发现从 VBA 代码或 Access 宏打开表单仍然会出现相同的问题,但是关闭表单并重新打开它会使问题在会话期间消失。因此,我将打开显示窗体的按钮代码修改为先打开窗体,关闭窗体,然后重新打开。问题解决了。
Private Sub Button_DisplayName_Click()
DoCmd.OpenForm “FORM_NAME”
DoCmd.Close acForm, “FORM_NAME”, acSaveNo
DoCmd.OpenForm “FORM_NAME”
End Sub
推荐阅读
- c++ - c++命名空间的简洁语法
- angular - CanDeactivateGuard 不适用于确认订阅
- sql - 连接 SQL Server 中的表并报告主表中的缺失数据
- r - 在特定文本之后从字符捕获消息
- java - 我的算法从未满足启动 Activity 的要求?
- php - Heroku 403 Forbidden - Laravel 5
- windows - 无法在 Windows 10 上使用 Hyper-V 启动 minikube
- swift - Retrieving textFields data using userdefaults
- c# - Specflow 步骤定义 - 涉及页面对象时跨功能共享
- javascript - Ternary inside of map returning no results