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

子窗体数据源为查询或表时,如何获取当前记录的OrderNumber值?

解决子窗体源对象为查询/表时获取订单号的方法

嘿,这个问题我之前在Access开发中也碰到过,确实当子窗体直接绑定到查询或表时,常规的Me!OrderNumber写法会失效,下面给你几个实用的解决方案:

方法1:通过子窗体的Recordset对象访问

不管子窗体的源对象是窗体、查询还是表,Recordset属性都能直接访问当前记录的字段值,这是最稳妥的方式:

如果是在子窗体的事件代码中(比如双击、单击事件):

Dim currentOrderNum As Variant
' 先判断是否有有效记录
If Not Me.Recordset.EOF And Not Me.Recordset.BOF Then
    currentOrderNum = Me.Recordset!OrderNumber
    MsgBox "当前订单号:" & currentOrderNum
Else
    MsgBox "当前无记录"
End If

如果是在父窗体的代码中访问子窗体的订单号:

假设你的子窗体控件名称是OrderSubform,代码如下:

Dim orderNum As Variant
With Me.OrderSubform.Form
    If Not .Recordset.EOF And Not .Recordset.BOF Then
        orderNum = .Recordset!OrderNumber
        MsgBox "子窗体当前订单号:" & orderNum
    End If
End With

方法2:通过子窗体的Controls集合访问

Access会自动为查询/表的字段生成对应控件,你可以直接通过Controls集合引用:

子窗体内部代码:

If Not IsNull(Me.Controls("OrderNumber").Value) Then
    MsgBox "当前订单号:" & Me.Controls("OrderNumber").Value
End If

父窗体代码:

If Not IsNull(Me.OrderSubform.Form.Controls("OrderNumber").Value) Then
    MsgBox "子窗体当前订单号:" & Me.OrderSubform.Form.Controls("OrderNumber").Value
End If

方法3:将查询/表包装成窗体(推荐)

如果你的子窗体需要频繁操作字段或添加自定义逻辑,更推荐这种方式:

  • 创建一个新窗体,把目标查询或表设为它的记录源
  • 将OrderNumber等需要的字段添加到窗体上
  • 最后把子窗体控件的源对象设置为这个新建的窗体

这样你就能像之前一样,用Me!OrderNumber(子窗体内部)或者Me!OrderSubform.Form!OrderNumber(父窗体)轻松获取字段值,还能给子窗体添加自定义事件,扩展性更强。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:57:13