ms-access - 如何暂停宏代码直到非模态表单关闭
问题描述
我试图在 Access 2016 中纯粹使用宏代码来实现这一点,没有 vba。
我有一个表格 frmMaintenance 列出了工作。新作业通过 frmAddJob 形式添加到作业表 tblJob。
当在 frmMaintenance 上单击按钮时,由 OpenForm 宏显示 frmAddJob。打开 frmAddJob 后,我想设置其中一个控件的值,指示作业类型。
然后,在 frmAddJob 关闭后,我想重新查询 frmMaintenance 上列出作业的控件。
我的 btnAddJob OnClick 中的宏代码大致如下:
- OpenForm //打开frmAddJob
- SetValue //对frmAddJob的控制
- 重新查询 //frmMaintenance 中的控件
问题是如果 frmAddJob 以非模态方式打开,'Window Mode'=Normal,Requery 会立即执行。另一方面,如果使用“窗口模式”=Dialog 打开 frmAddJob,则宏代码会暂停,直到窗口关闭,并且我永远无法设置所需的值。
我想到的两个解决方案是:
在 SetValue 之后,以某种方式将 frmAddJob 设置为模态。但是,在已经打开的表单上使用 OpenForm 'Window Mode'=Dialog 似乎不起作用。
让 frmAddJob 在其“On Open”事件中从 frmMaintenance 获取所需的值。但是,这使得 frmAddJob 依赖于 frmMaintenance,因此不可重用。
这可能只使用maros吗?
解决方案
根据@June7 的建议,大纲中的解决方案是:
在 frmMaintenance 中:
- SetTempVar tvJobType
- OpenForm frmAddJob 模态
- RemoveTempVar tvJobType
- 重新查询
在 frmAddJob 中:
- 在 OnLoad 中,将所需项目的 SetValue 设置为 [TempVars]![tvJobType]
- 保存新记录
- 关
工作正常,并且要求 frmAddJob 了解它的打开位置已经不复存在。
推荐阅读
- java - 提前几分钟安排本地通知
- sql - 当事件在给定日期发生多次时查找详细信息
- symfony - Symfony Forms RepeatedType 将键数组转换为字符串
- git - 能否“打破玻璃”并绕过 Github 分支保护进行紧急修复?
- arduino - 如何修复 xtensa-lx106-elf-g++:错误:Arduino IDE 上无法识别的命令行选项“-std=gnu++17”错误
- controller - 如何更改单个 Openstack 部署的 IP 地址
- javascript - 不知道如何在 React Native 中组织内容
- oracle - 我们能否将 Azure AD B2C 用作与 Oracle IDCS 的联合 IDP?
- javascript - 用破折号替换空格并删除分号
- java - 将 JWT 令牌存储在共享首选项中?并在整个应用程序中检索价值?