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

在导航窗体中引用其他窗体控件值的报错问题

问题描述

我有一个导航窗体,希望将L3Process5窗体中DataObjectsList控件的选中值,传递到点击打开的标签页窗体的控件中。在新窗体的Form_Open事件中运行了以下查询代码:

Me.L3Processes.RowSource = "SELECT L3Process2.ID, L3Process2.L3Process, DataObjects.ID 
FROM DataObjects 
INNER JOIN L3Process2 ON DataObjects.ID = L3Process2.DataObjects.Value 
WHERE DataObjects.ID = '" & [Forms]!L3Process5![DataObjectsList].Column(2) & "'"

但运行时报错,提示找不到引用的L3Process5窗体,想问是不是因为原窗体已关闭?

解决方案

报错原因

大概率是L3Process5窗体在新窗体打开时已被关闭或隐藏:Access的[Forms]集合只包含当前处于打开状态的窗体,一旦原窗体关闭,就无法通过[Forms]!L3Process5引用它的控件值。

正确传值方法:使用OpenArgs参数

这是Access窗体间传值的标准方案,不依赖原窗体的存活状态:

  1. 在L3Process5窗体中打开新窗体时传递值
    修改打开标签页窗体的代码,把需要的值通过OpenArgs参数传入:
    DoCmd.OpenForm "你的标签页窗体名称", OpenArgs:=Me.DataObjectsList.Column(2)
    
  2. 在新窗体的Form_Open事件中接收值并构建查询
    直接读取Me.OpenArgs来获取传递的值,替代原有的窗体引用:
    If Not IsNull(Me.OpenArgs) Then
        Me.L3Processes.RowSource = "SELECT L3Process2.ID, L3Process2.L3Process, DataObjects.ID " & _
                                   "FROM DataObjects " & _
                                   "INNER JOIN L3Process2 ON DataObjects.ID = L3Process2.DataObjects.Value " & _
                                   "WHERE DataObjects.ID = '" & Me.OpenArgs & "'"
    End If
    

进阶优化:避免SQL注入

直接拼接字符串存在SQL注入风险,建议用参数化查询:

If Not IsNull(Me.OpenArgs) Then
    Dim qd As QueryDef
    Set qd = CurrentDb.CreateQueryDef("", _
        "SELECT L3Process2.ID, L3Process2.L3Process, DataObjects.ID " & _
        "FROM DataObjects " & _
        "INNER JOIN L3Process2 ON DataObjects.ID = L3Process2.DataObjects.Value " & _
        "WHERE DataObjects.ID = [ParamID]")
    qd.Parameters("ParamID") = Me.OpenArgs
    Me.L3Processes.RowSource = qd.SQL
    Set qd = Nothing
End If

额外注意

如果L3Process5是导航窗体的子窗体,即使它没关闭,原引用路径也可能错误,正确的引用格式应该是Forms!导航主窗体名称!子窗体容器控件名称.Form.DataObjectsList.Column(2),但这种方式依然依赖原窗体处于打开状态,不如OpenArgs可靠。


内容的提问来源于stack exchange,提问作者The Hawk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 19:50:09