弹出窗体,创建将1:1链接到主窗体的记录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了弹出窗体,创建将1:1链接到主窗体的记录相关的知识,希望对你有一定的参考价值。
我有一个弹出窗体,使用MS Access数据库中主窗体上的按钮打开。弹出窗体创建一个新记录(在单独的表中),需要链接到主窗体中的当前记录。如何正确设置?
两种形式(frmMain,frmWB)基于2个单独的表(tblMain和tblWB)。记录具有1:1关系(每个主记录只能有一个WB1记录)。
主窗体(frmMain)有主键[ID]
来自(frmWB)的弹出窗口具有主键[WBID](自动编号)和[MainID](数字)。
数据录入人员将首先输入主要信息(这是避免孤儿所必需的),然后单击保存主记录的按钮并打开弹出窗口以添加详细信息。完成后,他们点击关闭按钮,保存弹出记录,关闭弹出窗口,然后返回主窗体(后面保持打开状态)。导航已在弹出窗口中禁用,并设置为循环当前记录。
我尝试使用两个表的主要ID进行链接,但在弹出窗口中添加新记录时似乎无法可靠地链接正确的ID号。我尝试使用子表单,但是如果在子表单中输入数据时意外命中主表单上的导航或“新记录”按钮会产生问题 - 这会在tblWB中创建具有错误ID号的记录。
如果frmWB打开模态,以便在弹出窗口打开时无法更改frmMain的当前记录,那么你将在frmWB的BeforeInsert
事件过程中有这个:
Private Sub Form_BeforeInsert(Cancel As Integer)
Me!MainID = Forms!frmMain!ID
End Sub
这会自动将tblMain ID分配给新创建的tblWB记录。
MainID
应该是frmWB上的一个不可见的文本框,绑定到表字段MainID
。调试时可以使其可见,但应该锁定。
如果frmWB不是模态的,我会使用OpenArgs
将ID从frmMain传递给frmWB。然后在Form_BeforeInsert
而不是Forms!frmMain!ID
中使用它
与Andre的评论相反,通常的方法是在两个表之间创建关系,强制引用完整性并使用级联更新。
虽然this article特定于Office 2003,但对于所有版本的Access,概念都是相同的。如果执行此操作,弹出窗口将自动创建链接到主窗体记录的新记录。
以上是关于弹出窗体,创建将1:1链接到主窗体的记录的主要内容,如果未能解决你的问题,请参考以下文章
未绑定主窗体上的列表框链接到绑定子窗体产生 3021(无当前记录)错误