通过表单将 ID 字段从主要 table 获取到链接 table

Getting ID fields from the primary table into the linked table via Form

作为多年的业余编码员,我在处理链接的 table 时通常使用子表单,以使 ID 字段从主字段到子字段的传输变得非常简单...

然而,在我最新的项目中,主要表格是一个连续的表格,其中包含交付运行列表(日期、运行名称、运行完成)等...链接到此主要 table 的交付列表包含(SKU产品、数量等...)。我使用两个 table 之间的简单关系。

现在,在每行末尾的主 (RUNS) 表单上有一个按钮,用于打开 DELIVERIES 表单并显示具有匹配 RUNID 的所有记录

这对于显示预先存在的数据来说很好,但是当我想添加新记录时,我一直在使用以下附加到 OnCurrent 事件的代码:

Me.RunID = DLookup("[RunID]", "tbl_BCCRuns", "RunID = " & Forms![frm_BCC_Runs_list]![RunID])

我也用过:

Forms![frm_BCC_Deliveries].Controls![RunID] = Forms![tbl_BCCRuns].Controls![RunID]

(注意:以上凭记忆完成,具体代码可能不正确,但这不是手头的问题)

现在...这两个选项都满足了我的需求...

我发现当我在处理数据库时,或者如果您以正确的顺序打开某些表单(我需要明确识别并修复的错误),您可以在没有过滤器的情况下打开 DELIVERIES 表单(以查看所有为了参数而交付)和顶部条目(通常是最旧的记录)突然采用主窗体中所选记录的 RUNID。

现在,我的问题是这个,答案可能很简单 "no" 没关系,我会继续...

有没有更好的方法,一种我不熟悉或由于我的访问进度不一致而不知道的方法,可以将 ID 转移到表单而不会有因不当使用而受到污染的风险?还是我必须硬着头皮确保没有任何可能发生这种情况?

为了缓解这个问题,我创建了一个仅显示表单来查看交付,但有时我仍然需要访问实时历史数据来修改其他字段而不想修改 RUNID。

非常感谢任何指点...

由于您只想在表单位于新记录行时提取 RunID,因此请检查以验证这是一条新记录。

If Me.NewRecord Then
    Me.RunID = DLookup("[RunID]", "tbl_BCCRuns", "RunID = " & Forms![frm_BCC_Runs_list]![RunID])
End If

还可以考虑一种技术,当父窗体和子窗体都是主窗体上的子窗体时同步父窗体和子窗体(不必绑定主窗体)https://www.fmsinc.com/MicrosoftAccess/Forms/Synchronize/LinkedSubforms.asp