【问题标题】:Enforcing a unique combination relationship in fields在字段中强制执行唯一的组合关系
【发布时间】:2016-08-31 12:53:51
【问题描述】:

总结:我需要 [Field_1] 和 [Field_2] 的任意组合是唯一的,并且要强制执行该唯一性。注意:这不适用于排列 - 这就是困难。

深度: 我正在尝试跟踪供应商软件的联系人。我以老式方式设置了我的数据库,这样供应商记录可能有很多联系人。诀窍是联系人可能彼此相关,并且可能与父供应商记录无关。一个例子:

  1. SuperBrokenSoftware is a tool who's vendor I need to contact all the time. 
  2. WeMakeBadSoftware is the Vendor
  3. Fred works for WeMakeBadSoftware
  4. Gale works for WeHelpPeopleWhenOthersWont

假设 Gale 是解决我的 SuperBrokenSoftware 问题的合适联系人。

无法使用当前层次结构来跟踪 Gales 与 SuperBrokenSoftware 的关系。

我的解决方案是在表格中跟踪这些关系,如下所示:

Field1   Field2   Field3   
Fred     Gale     Gale handles specific issues for Fred

但是,鉴于此解决方案,Field_1 和 Field_2 的组合必须是唯一的。也就是记录:

Field1   Field2   Field3
Fred     Gale     "Gale handles specific issues for Fred"
Gale     Fred     "Gale is awesome - Fred sucks"

应该被视为相同。数据库中不应允许记录 2,因为它不是唯一的。

我的尝试:

使用双射 - Szudzik 函数:a >= b ? a * a + a + b : a + b * b;其中 a, b >= 0

我可以为每个组合计算一个唯一标识符 - 但访问不能强制计算字段的唯一性。

在 Access 中强制执行组合的最佳方法是什么?

提前致谢!!!

【问题讨论】:

    标签: database validation ms-access combinations enforcement


    【解决方案1】:

    为具有唯一索引的唯一标识符创建新字段并创建更改前数据宏,该宏应在新字段中插入/更改计算的标识符。

    唯一键可以只是field1和field2的排序连接

    【讨论】:

    • 串联不起作用,但是我认为您的想法可能是使用自定义过程而不是使用计算字段来填充字段。我需要使用 VBA 来正确捕获错误和其他内容。如何将更新前事件绑定到某个表?
    • 不明白为什么串联不起作用。在您的示例中,关键字段数据在这两种情况下都是FredGale。请阅读帮助如何使用数据宏,它们在表构造函数中可用
    • 我的例子只是一个例子。在实际应用中,这将不得不处理许多可能包含任何内容的行。就像我说的,在我找到解决方案后,必须正确构建它以避免错误和异常。
    猜你喜欢
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-13
    相关资源
    最近更新 更多