You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让MS Access表单读取另一表单代码中的变量并实现表单重启

MS Access表单间状态传递与流程控制方案

针对你遇到的表单交互需求,以下是几种无需临时表的最优实现方案:

方案1:全局模块公共变量(最直观)

创建一个标准模块(例如命名为modGlobal),定义公共变量存储操作指令:

' 标准模块 modGlobal 代码
Public gbl_NeedRestart As Boolean

原表单(如frm_WarehouseAudit)提交按钮代码

Private Sub btn_SubmitParts_Click()
    ' 重置状态变量
    gbl_NeedRestart = False
    
    ' 以acDialog模式打开验证表单,原代码暂停执行
    DoCmd.OpenForm "frm_VerifyEntries", , , , , acDialog
    
    ' 验证表单关闭后判断状态
    If gbl_NeedRestart Then
        ' 重启原表单:关闭后重新打开
        DoCmd.Close acForm, Me.Name
        DoCmd.OpenForm Me.Name
    Else
        ' 执行后续审核逻辑,比如保存数据
        Call SaveAuditRecords
    End If
End Sub

验证表单(frm_VerifyEntries)按钮代码

' "继续"按钮
Private Sub btn_Continue_Click()
    gbl_NeedRestart = False
    DoCmd.Close acForm, Me.Name
End Sub

' "重启原表单"按钮
Private Sub btn_Restart_Click()
    gbl_NeedRestart = True
    DoCmd.Close acForm, Me.Name
End Sub

方案2:利用原表单的Tag属性(无需全局模块)

直接通过原表单的Tag属性存储操作状态,验证表单直接修改该属性:

原表单提交按钮代码

Private Sub btn_SubmitParts_Click()
    Me.Tag = "Continue"
    
    DoCmd.OpenForm "frm_VerifyEntries", , , , , acDialog
    
    If Me.Tag = "Restart" Then
        DoCmd.Close acForm, Me.Name
        DoCmd.OpenForm Me.Name
    Else
        Call SaveAuditRecords
    End If
End Sub

验证表单按钮代码

Private Sub btn_Continue_Click()
    Forms("frm_WarehouseAudit").Tag = "Continue"
    DoCmd.Close acForm, Me.Name
End Sub

Private Sub btn_Restart_Click()
    Forms("frm_WarehouseAudit").Tag = "Restart"
    DoCmd.Close acForm, Me.Name
End Sub

方案3:隐藏控件传递状态(适合多数据场景)

如果需要传递更多信息,可在原表单添加隐藏文本框(如txt_Action):

原表单提交按钮代码

Private Sub btn_SubmitParts_Click()
    Me.txt_Action = "Continue"
    
    DoCmd.OpenForm "frm_VerifyEntries", , , , , acDialog
    
    If Me.txt_Action = "Restart" Then
        DoCmd.Close acForm, Me.Name
        DoCmd.OpenForm Me.Name
    Else
        Call SaveAuditRecords
    End If
End Sub

验证表单按钮代码

Private Sub btn_Continue_Click()
    Forms("frm_WarehouseAudit").txt_Action = "Continue"
    DoCmd.Close
End Sub

Private Sub btn_Restart_Click()
    Forms("frm_WarehouseAudit").txt_Action = "Restart"
    DoCmd.Close
End Sub

关于你之前的Public变量问题

你之前在原表单模块定义的Public变量无法被访问,是因为需要通过表单实例调用,而非直接引用变量名。正确写法应为Forms("frm_WarehouseAudit").YourPublicVar = True,但全局模块或Tag属性的方案更简洁不易出错。

内容的提问来源于stack exchange,提问作者P. Fowler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 15:57:25