代码之家  ›  专栏  ›  技术社区  ›  twisted

如何暂停宏代码直到关闭非模态窗体

  •  0
  • twisted  · 技术社区  · 6 年前

    我试图在Access2016中实现这一点,完全使用宏代码,而不使用vba。

    我有一张列出工作的管理表。新作业将通过frmAddJob表格添加到作业表tblJob中。

    当在frmMaintenance上单击按钮时,OpenForm宏将显示frmadjob。一旦frmAddJob打开,我想设置它的一个控件的值,指示作业类型。

    然后,在frmadjob关闭之后,我想重新查询frmMaintenance上列出作业的控件。

    btnAddJob OnClick中的宏代码大致如下:

    • OpenForm//open frmAddJob
    • frmAddJob上控件的SetValue//
    • 重新查询//frmmainance中的控件

    问题是,如果frmadjob是非模式打开的,“窗口模式”=Normal,则会立即执行重新查询。另一方面,如果frmAddJob是用'Window Mode'=Dialog打开的,那么宏代码会暂停直到窗口关闭,我永远无法设置所需的值。

    我想到的两个解决方案是:

    在设置值之后,以某种方式将frmadjob设置为modal。但是,在已经打开的窗体上使用open form'Window Mode'=Dialog似乎不起作用。

    让frmadjob在其“On Open”事件中从frmMaintenance获取所需的值。然而,这使得frmadjob依赖于frmMaintenance,因此不可重用。

    这可能只是用马洛斯吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   twisted    6 年前

    根据@June7的建议,解决方案概要如下:

    在维护中:

    • 设置tvJobType
    • 打开窗体frmAddJob modally
    • 删除tempvar tvJobType
    • 再询问

    在frmAddJob:

    • 在OnLoad中,将必需项的值设置为[TempVars]![tvJobType]类型
    • 保存新记录
    • 关闭

    工作很好,要求frmAddJob知道它是从哪里打开的。