我有两张桌子:父母和孩子。子记录预先存在于表中。我想为Parent创建一个表单,其子表单包含Children,并且想要一个子表单。永远不应该在这里创造新的孩子。选定的子项将FK属性设置为父项的PK。
这在MS Access 2010中是否可行?
...谢谢
答案 0 :(得分:1)
一种方法是创建表单和子表单并将子表单的Allow Additions
属性设置为No
,这将阻止创建子表单。接下来,向所调用的行添加一个按钮,让我们说Assign
,此按钮的Click
事件会将子级的FK更新为父级的PK,例如:
Me.txtParentID = Me.Parent.txtID
人性本来就是这样,你可能需要一个表单或按钮,允许父母在被错误分配时被删除。
您可能希望从表单中排除已分配的子女。
当然,还有其他几种方法可以做到这一点。
修改强>
假设您在子表中有一些表示父项的字段,因此您可以使用它来过滤未分配的子项。弹出窗体的记录源类似于:
SELECT ID, Something FROM Children WHERE ParentID Is Null
您仍然可以使用分配按钮,它可以使用主窗体中的OpenArg和消息框进行确认,ID直接来自主窗体,或者另外一个小窗体来选择父窗体。
我不建议弹出窗口。除非您将其设置为应用模式,否则用户可能会移动主表单记录而不会给予足够的关注,如果您确实将其设置为应用模式,则会产生麻烦。
已分配子项的子表单将更安全,或者仅包含未分配子项的赋值表单,其中包含基于子表父项ID外键的组合框以选择父项。这可能是一种连续的形式。