MS Access 保留子表单中的 ID 字段,其中填充了父表单中的 ID
MS Access keep ID field in subform filled with ID from parent form
每次我跳转到可以输入新记录的地方时,父级的ID字段为空,因此连接丢失。我正在寻找解决方法。
我的设置
我有一个处理两个 1:n 关系的父表单
(学校-class --> 学生,学校-class --> 测试).
对于第一个关系,我使用了向导。一切正常。第二,我在未绑定列表中显示连接的测试。列表下方是一个按钮,用于打开用于为我来自(父表单)的 class 输入新记录(测试)的表单。所以我通过 VBA 过滤子表单,以便只显示当前 class 的测试。这也很好用。
当通过已经与 class 连接的测试时,正确的 ID(class 过滤的)是相应输入字段的值。但是当我进入新的新记录状态(所有字段为空)时,与父级的连接中断,用户必须手动输入父级的 ID(学校-class)。
我的问题
我的设置正确吗?
有没有更好的方法来创建提供(仅)输入连接到父数据的新记录的子表单? (也许在子表单中没有 ID 输入字段并通过 VBA 强制传递值?)
感谢您的宝贵时间!
您可以使用默认值来设置测试表单的 classid,但请确保父表单在后台或弹出窗口后打开。
在测试表单的 classid 控件的 属性 Sheet/Data 选项卡下,在默认值单元格中输入:
=Forms!parentformname!classid
或者,在 VBA 测试表单的 OnOpen 事件中:
Me.classid.DefaultValue = Forms!parentformname!classid
然后您可以选择隐藏(可见 - 否)此 classid 控件,这样用户就不会修改它。始终建议永远不要让用户控制主键和外键。
每次我跳转到可以输入新记录的地方时,父级的ID字段为空,因此连接丢失。我正在寻找解决方法。
我的设置
我有一个处理两个 1:n 关系的父表单
(学校-class --> 学生,学校-class --> 测试).
对于第一个关系,我使用了向导。一切正常。第二,我在未绑定列表中显示连接的测试。列表下方是一个按钮,用于打开用于为我来自(父表单)的 class 输入新记录(测试)的表单。所以我通过 VBA 过滤子表单,以便只显示当前 class 的测试。这也很好用。
当通过已经与 class 连接的测试时,正确的 ID(class 过滤的)是相应输入字段的值。但是当我进入新的新记录状态(所有字段为空)时,与父级的连接中断,用户必须手动输入父级的 ID(学校-class)。
我的问题
我的设置正确吗? 有没有更好的方法来创建提供(仅)输入连接到父数据的新记录的子表单? (也许在子表单中没有 ID 输入字段并通过 VBA 强制传递值?)
感谢您的宝贵时间!
您可以使用默认值来设置测试表单的 classid,但请确保父表单在后台或弹出窗口后打开。
在测试表单的 classid 控件的 属性 Sheet/Data 选项卡下,在默认值单元格中输入:
=Forms!parentformname!classid
或者,在 VBA 测试表单的 OnOpen 事件中:
Me.classid.DefaultValue = Forms!parentformname!classid
然后您可以选择隐藏(可见 - 否)此 classid 控件,这样用户就不会修改它。始终建议永远不要让用户控制主键和外键。