我正在从事一个从同事那里接手的 Access 项目。存在三个表: rules
, overview
和relationship
。 relationship
表有两个字段,每个字段都是链接到其他两个表中的主键的外键。我有 rules
的数据 TableView 表格中的表格,我可以毫无问题地删除记录。但是,当我尝试将记录插入 rules
时表中,记录将被插入到 rules
表,但没有匹配的记录插入relationship
table 。我选中了“强制引用完整性”,以及“级联更新相关字段”和“级联删除相关记录”。我天真地假设这可以处理插入,但显然我错了。所以我现在想知道处理这个问题的最佳方法 - 我是否为After Insert
编写一些VBA?将记录插入 relationship
形式的事件相应表?
最佳答案
通常的方法是使用一个表单将记录插入到基于查询的规则中,该查询包括关系表和允许用户选择相关概述的组合,或者表单/子表单集具有合适的主/子字段。在 NorthWind 示例数据库中,订单详细信息表是关系表的一个示例,它使用令人厌恶的表内查找反功能,但您可能会得到一些进一步研究的想法。
选项 1 的更详细说明
表格
概述
身份证号
概述
规则
身份证号
规则
关系
RulesID ) 由两个 FK 组成的 PK
概述ID)
关系
数据
建议 1 查询设计
请注意,关系中的两个字段都包含在查询中。没有必要显示规则中的 ID,因为它是一个自动编号字段,但为了简单起见,将其包含在此处。
如果删除一行,两个表中的记录都将被删除。
您不能违反引用完整性。您需要先创建所有概述,然后才能工作,或者提供添加概述的不同方法。
如果您更新 RulesID
和 OverviewID
,记录将添加到关系表中,但不会添加到规则中。
如果您更新 OverviewID
和 Rule
,记录将同时添加到关系和规则中。
如果您创建连续表单,则可以以更加用户友好的方式获得上述所有内容并进行更多控制。您可以使用组合框来允许用户选择更友好的概述描述,而不是 ID,并且您可以利用 NotInList 事件来添加新的概述。
请注意,到目前为止,这不需要一行代码。这就是 Access 的力量。
关于ms-access - 如何处理 Access 中插入的引用完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7397949/