【问题标题】:Value uniquess check across several fields of all records?跨所有记录的多个字段的值唯一性检查?
【发布时间】:2014-06-06 08:30:09
【问题描述】:

我是 MS Access 的新手,希望我的问题很简单,但我无法通过谷歌搜索找到明确的答案。

我有一个带有表的简单数据库,并且有一个必须具有唯一内容的字段子集。我了解如何进行设置,以便所有记录中的 特定 字段必须是唯一的,但我需要所有记录中的 几个 字段具有唯一的内容。

例如,在一条记录中,跨字段 4 - 10,在所有记录中,只有一个字段可以包含数字“1”。如果 '1' 在记录 A 的第 5 字段中,则它也不能在记录 F 的第 8 字段中。

打个比方,假设我们正在构建计算机,每台计算机都有 1 或 2 个视频卡。在数据库中,一些字段存储了安装在该插槽中的视频卡的序列号。显然,序列号是唯一的,同一张卡不能安装在两个插槽中,无论是在同一台计算机上,还是在两台不同的计算机上。我需要数据库来防止用户输入重复的序列号。在示例图像中,不同记录的不同字段中存在相同序列号的重复项。这不应该被允许。 example

有没有一种内置的方法来实现这种用户输入检查?如果没有,我该如何实施?

【问题讨论】:

    标签: ms-access ms-access-2010


    【解决方案1】:

    您需要一个唯一的复合索引。做这个

    • 转到桌子上的设计视图
    • 打开Indexes编辑器窗口
    • 换行,输入新索引的名称,选择Field Name
    • 在“索引属性”窗格中,将Unique 属性更改为Yes
    • 换行,不要输入索引名称,选择另一个Field Name

    完成

    编辑:

    真正的问题是您需要规范化您的数据。 Slot #1Slot #2 并不是真正的列。你需要像这样设置你的桌子

    并不是我将所有三列都设为复合主键,而是将 VideoCard 列编入索引以不允许重复

    然后,当您输入不良数据时,您会收到此消息 在你输入好的数据之前,它不会让你提交。

    如果您需要像原始示例一样展示您的数据,那么您可以在交叉表查询中执行此操作

    这会产生这样的结果

    【讨论】:

    • 谢谢布拉德!!我已经完成了您概述的所有操作,但是一旦完成,我仍然可以在多个字段/记录中输入相同的数字,而不会出现警告或错误消息。我还需要做些什么吗?
    • 也许我没有效仿你的榜样。您能否发布一个更详细的表中列的示例以及一些好的记录和一些不好的记录?
    • @gearhead 好的,我又读了一遍,我怀疑你的表没有标准化。即您的“事物”有一列,然后是各种属性的多列。但实际上,您需要为您的事物设置一列,为您的属性设置一列,然后为该属性的值设置一卷。然后一个常规索引应该做你想做的事。
    • 打个比方,假设我们正在构建计算机,每台计算机都有 1 或 2 个视频卡。在数据库中,一些字段存储了安装在该插槽中的视频卡的序列号。显然,序列号是唯一的,同一张卡不能安装在两个插槽中,无论是在同一台计算机上,还是在两台不同的计算机上。我需要数据库来防止用户输入重复的序列号。在示例图像中,不同记录的不同字段中存在相同序列号的重复项。这不应该被允许。 !example
    • @gearhead 查看我的编辑。我还将用您的类比编辑您的问题,因为我认为按照第一个示例更容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    • 2013-04-14
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    相关资源
    最近更新 更多