0

我在 MS Access 2010 中有一个表格,里面有两个子表格。我已经定义了与表格后面的表格的一对一关系。这两个子表单都应该用于在相应的表中创建记录,然后更新父表单中的外键。但是当我首先填写子表单时,会在相应的表中创建一个条目,但外键没有得到更新。这不应该自动发生吗?或者我应该添加代码来更新父表单的字段?

此外,当我首先开始填写主表单然后跳转到任何子表单时,我收到以下错误消息:
“您必须在 'Activations.dbBoxID' 字段中输入一个值”(激活是这里的主表单和dbBoxID 是外键字段。)

另一个问题是我不希望子表单更新相应的表,直到主表中的条目也被创建(即主表单中的所有必填字段也被填写)。

我是 MS Access 的新手。任何帮助将非常感激!

4

2 回答 2

2

您在这里缺少的概念,并且没有向您解释的是,当您在访问中建立主子关系时,您可以使用表单和子表单对这些关系进行建模,但是您将表单基于实际表而不是将这些表连接在一起的结果的查询。

换句话说,您的主表单应该基于主表或父表。不要加入子表。我要再重复一遍:不要加入子表。

因此,您可以将主表单或主表单基于查询,但这样做时,不要加入该查询的子表。事实上,在大多数情况下,无论如何使用和基于查询的表单确实没有任何优势。只需创建表单,并将其基于表格。

相同的建议适用于子表单。您将子窗体基于子表。您不要使用带有连接的查询。

您收到错误消息的原因是您有一个基于两个表的主表单查询。使用强制关系,当您的焦点从主窗体切换到子窗体时,会发生主窗体的记录保存,因此您会收到错误消息。

因此,您的错误和问题是由于在这种情况下不需要时,您将表单基于作为两个表连接的查询。

于 2010-11-28T01:34:22.037 回答
0

如果先输入父表单中的数据,则具有子表单的表单效果更好。然后子表单可以在每个表中的 parent_key 上连接到 foreign_key,而无需任何代码。

如果您想让用户首先在子表单中输入记录,请在完成/保存父表单之前不要更新它们,您将需要进行一些编码。不确定您为什么需要/想要这样做?

带有账单和付款子表单的客户表单,例如,您将输入足够的客户数据来创建记录。然后可以输入账单和/或付款。

于 2010-11-27T21:37:19.523 回答