Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 更新由联接表支持的子窗体中的记录_Ms Access - Fatal编程技术网

Ms access 更新由联接表支持的子窗体中的记录

Ms access 更新由联接表支持的子窗体中的记录,ms-access,Ms Access,我的access数据库包含以下表:Person、Object和Sub Sub是人和对象之间的关系表。一个对象最多可以有一个人,一个人可以有任意数量的对象 我有一个Person表单,显示了Person的详细信息和一个datasheet子表单,其中显示了Person的所有分配对象,即Object的复合主键(两个字段)和子表中的两个附加列 到目前为止一切正常。我可以在个人表格中插入、更新和删除子作业。但是子窗体也应该显示对象表中的两列。如果我只是将子窗体数据源设置为联接查询,我仍然可以插入记录,但不能

我的access数据库包含以下表:Person、Object和Sub

Sub是人和对象之间的关系表。一个对象最多可以有一个人,一个人可以有任意数量的对象

我有一个Person表单,显示了Person的详细信息和一个datasheet子表单,其中显示了Person的所有分配对象,即Object的复合主键(两个字段)和子表中的两个附加列

到目前为止一切正常。我可以在个人表格中插入、更新和删除子作业。但是子窗体也应该显示对象表中的两列。如果我只是将子窗体数据源设置为联接查询,我仍然可以插入记录,但不能更新现有记录:

您请求对表进行的更改未成功,因为它们将在索引、主键或关系中创建重复的值

我尝试过使用外部联接和子选择,但无法使其工作。在设计视图中,我将对象列的文本字段更改为组合框,这样我可以使用单独的查询,但我只能输入一个有界列,但我有一个复合主键


如何在不破坏修改的情况下显示这两个附加列?

要么您的数据库设计非常怪异,要么您的描述有点缺乏。如果在
Person
Object
之间有1:N关系,则只需要两个表:
Person
Object
,后者在
Person
表中有一个外键。
Sub
是否仅用于连接
Person
Object
,或者是否具有其他数据。如果是这样的话,
Sub
Object
是如何关联的?Sub确实有额外的数据。它的存在是为了避免空值,因为对象不一定要有Person。您可以始终使用DLookup字段来显示(但不更改)其他表中的其他字段。
Sub
Object
之间的关系对我来说仍然不清楚,看起来确实有点可疑。避免空值的表?斯雷?