ms-access - 如何处理 Access 中插入的引用完整性

标签 ms-access vba ms-access-2007

我正在从事一个从同事那里接手的 Access 项目。存在三个表: rules , overviewrelationshiprelationship表有两个字段,每个字段都是链接到其他两个表中的主键的外键。我有 rules 的数据 TableView 表格中的表格,我可以毫无问题地删除记录。但是,当我尝试将记录插入 rules 时表中,记录将被插入到 rules表,但没有匹配的记录插入relationship table 。我选中了“强制引用完整性”,以及“级联更新相关字段”和“级联删除相关记录”。我天真地假设这可以处理插入,但显然我错了。所以我现在想知道处理这个问题的最佳方法 - 我是否为After Insert编写一些VBA?将记录插入 relationship 形式的事件相应表?

最佳答案

通常的方法是使用一个表单将记录插入到基于查询的规则中,该查询包括关系表和允许用户选择相关概述的组合,或者表单/子表单集具有合适的主/子字段。在 NorthWind 示例数据库中,订单详细信息表是关系表的一个示例,它使用令人厌恶的表内查找反功能,但您可能会得到一些进一步研究的想法。

选项 1 的更详细说明

表格

概述
身份证号
概述

规则
身份证号
规则

关系
RulesID ) 由两个 FK 组成的 PK
概述ID)

关系

Relations

数据

Data

建议 1 查询设计

请注意,关系中的两个字段都包含在查询中。没有必要显示规则中的 ID,因为它是一个自动编号字段,但为了简单起见,将其包含在此处。

如果删除一行,两个表中的记录都将被删除。

Query Design

您不能违反引用完整性。您需要先创建所有概述,然后才能工作,或者提供添加概述的不同方法。

Violate Integrity

如果您更新 RulesIDOverviewID,记录将添加到关系表中,但不会添加到规则中。

New Relationship record

如果您更新 OverviewIDRule,记录将同时添加到关系和规则中。

New Rule and Relationship records

如果您创建连续表单,则可以以更加用户友好的方式获得上述所有内容并进行更多控制。您可以使用组合框来允许用户选择更友好的概述描述,而不是 ID,并且您可以利用 NotInList 事件来添加新的概述。

continuous Form

请注意,到目前为止,这不需要一行代码。这就是 Access 的力量。

关于ms-access - 如何处理 Access 中插入的引用完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7397949/

相关文章:

vba - 如何在启动Access 2007 时强制用户处理安全警告?

dll - 如何在不安装 Office 的情况下使用安装程序注册 ACEDAO.DLL?

ms-access - 在 VBA 中使用 Alias 关键字声明函数

vba - 文件夹不可用

ms-access - ADODB RecordSet 作为 Access 报表 RecordSource

vba - 在部分单元格文本中查找单词,返回列号 : Excel VBA

ms-access - 通过 ADOX 添加带有自动编号主键的 Access 表

ms-access - 在计算机上未安装 MS Access 的情况下使用 Excel 从 Access 中读取

excel - 代码执行被中断

ms-access - MS Access 数据 TableView 不显示空值?