MS Access 保留子表单中的 ID 字段,填充父表单中的 ID
Posted
技术标签:
【中文标题】MS Access 保留子表单中的 ID 字段,填充父表单中的 ID【英文标题】:MS Access keep ID field in subform filled with ID from parent form 【发布时间】:2015-03-11 16:12:29 【问题描述】:每次我跳转到可以输入新记录的位置时,父级的 ID 字段为空,因此连接丢失。我正在寻找解决方法。
我的设置
我有一个处理两个 1:n 关系的父表单
(学校班级 --> 学生,学校班级 --> 测试)。
对于第一个关系,我使用了向导。一切正常。第二个我在未绑定列表中显示连接的测试。列表下方是一个打开表单的按钮,用于为我来自的班级(父表单)输入新记录(测试)。所以我通过 VBA 过滤子表单,以便只显示当前类的测试。这也很好用。
当通过已经与类连接的测试时,正确的 ID(过滤的类)是相应输入字段的值。但是当我进入新的新记录状态(所有字段为空)时,与父级的连接中断,用户必须手动输入父级(学校班级)的 ID。
我的问题
我的设置是否正确? 有没有更好的方法来创建一个提供(仅)输入连接到父数据的新记录的子表单? (可能没有子表单中的 ID 输入字段并通过 VBA 强制传递值?)
感谢您的宝贵时间!
【问题讨论】:
【参考方案1】:您可以使用 Default Value 设置 Tests 表单的 classid,但请确保父表单在后台或弹出窗口后面打开。
在测试表单的classid控件的属性表/数据选项卡下,在默认值单元格中输入:
=Forms!parentformname!classid
或者,在测试表单的 OnOpen 事件中的 VBA:
Me.classid.DefaultValue = Forms!parentformname!classid
然后您可以选择隐藏(可见 - 否)这个 classid 控件,这样用户就不会修改它。始终建议不要让用户控制主键和外键。
【讨论】:
哦,我的... 这个解决方案非常简单 - 几乎受伤 :-) 我只是设置了默认值,一切都很好。谢谢! 嗯......这个解决方案有效,但现在我遇到了另一个问题。当有人按下按钮时,他会自动跳转到以父项为默认值的“新记录”。如果用户现在在没有编辑的情况下关闭表单,则将几乎空白的记录保存到数据库中。有没有聪明的方法来解决这个问题?好吧,当我只是根据需要定义一些输入参数时,用户会得到一些难看的提示。我希望输入只是不存储。任何的想法?带或不带 VBA? 你用的是上面哪个版本?表单控件还是 VBA?在保存记录之前不会保存默认值。如果表单关闭时所有表单字段都为空,则不会保存任何数据。检查以查看您的表单关闭或任何关闭按钮事件。删除任何保存记录命令。以上是关于MS Access 保留子表单中的 ID 字段,填充父表单中的 ID的主要内容,如果未能解决你的问题,请参考以下文章