MS Access保持子表单中的ID字段填充来自父表单的ID

时间:2015-03-11 16:12:30

标签: database forms vba ms-access ms-access-2013

每次我跳到我可以输入新记录的地方时,来自父记录的ID字段为空,因此连接丢失。我正在寻找一种解决方法。

我的设置

我有一个处理两个1:n关系的父表单

(学校班级 - >学生,学校班级 - >测试)。

对于我使用向导的第一个关系。一切正常。对于第二个,我在未绑定的列表中显示连接的测试。在列表下面是一个按钮,用于打开表单,用于输入我来自的课程(父表单)的新记录(测试)。所以我通过VBA过滤子表单,以便只显示当前类的测试。这也很好。

当移动已经与类连接的测试时,正确的ID(已过滤的类)是相应输入字段的值。但是当我进入新的新记录状态(所有字段为空)时,与父级的连接中断,用户必须手动输入父级(学校级)的ID。

我的问题

我的设置是否正确? 是否有更好的方法来创建提供(仅)输入连接到父数据的新记录的子表单? (也许没有子窗体中的ID输入字段并通过VBA强制传递值?)

感谢您的时间!

1 个答案:

答案 0 :(得分:0)

您可以使用默认值设置测试表单的类别,但请确保父表单在后台打开或在弹出窗口后面打开。

在“测试”表单的类别控件的“属性表/数据”选项卡下,输入“默认值”单元格:

=Forms!parentformname!classid

或者,在测试表格中的VBA OnOpen事件:

Me.classid.DefaultValue = Forms!parentformname!classid

然后,您可以选择隐藏(可见 - 否)此classid控件,以便用户不会对其进行修改。始终建议永远不要让用户控制主键和外键。