有没有办法在表列中创建约束以防止重复条目?

时间:2013-08-19 16:51:25

标签: ms-access ms-access-2007

我正在尝试访问限制列中的重复条目。

之所以如此,是因为我可以多次输入多年薪水。

例如,

ID Salary Year
22 $20000 2013
22 $15000 2012
22 $20000 2013 <- Causes duplicate entries in my report
23 $20000 2013 <- Need to have 2013 here though

我想要它,以便用户不能在我的COMP表的列中多次输入2013。

编辑:添加了ID号,因为我的COMP表中有多个人。这改变了问题。

3 个答案:

答案 0 :(得分:3)

“我想要它,以便用户不能在我的COMP表的列中多次输入2013。”

  1. 在设计视图中打开COMP
  2. 选择Year字段。
  3. 从“字段提示”(下方)中选择常规标签。
  4. 索引属性下拉列表中选择“是(不重复)”。
  5. 保存更改。
  6. 如果您更愿意使用代码代替......

    CurrentDb.Execute "ALTER TABLE [COMP]" & vbCrLf & _
        "ADD CONSTRAINT uniq_year UNIQUE ([Year])"
    

    请注意,除非现有[Year]值是唯一的,否则语句将不会成功。此外,COMPYear都是reserved words。将它们括在方括号中,以便db引擎将它们识别为字段名称而不是抱怨。

    如果你决定约束应该基于2个字段......

    CurrentDb.Execute "ALTER TABLE [COMP]" & vbCrLf & _
        "ADD CONSTRAINT uniq_id_year UNIQUE (ID, [Year])"
    

    您还可以从表设计视图创建相同的唯一索引/约束,但这对我来说更难描述。您可能更容易执行DDL语句,然后在设计视图中检查结果。当您尝试执行该语句时,请确保该表不在“设计视图”中。

    我使用长整数字段COMPID创建了表格Year。然后在查询设计器中将此语句作为新查询执行:

    ALTER TABLE [COMP] ADD CONSTRAINT uniq_id_year UNIQUE (ID, [Year])
    

    执行该语句后,这是我在“设计视图”中的表格的截屏。

    unique index in table design view

    我不明白为什么同样的陈述不适合你。因此,在“设计视图”中打开表格,找到用于创建该图片中显示的唯一索引的UI方法。

答案 1 :(得分:0)

你可以Create a unique index on this field

  

如果您创建唯一索引,Access不允许您输入新索引   字段中的值,如果该值已存在于同一字段中   另一个记录。 Access会自动为其创建唯一索引   主键,但您可能还想禁止重复值   其他领域。例如,您可以在字段上创建唯一索引   存储序列号,以便没有两个产品具有相同的序列号   序列号。

答案 2 :(得分:0)

根据一列(或多列)制作主键。如果需要将其基于2列,请进入表格的“设计视图”,突出显示所需的字段,然后单击鼠标右键。从弹出菜单中选择“主键”。从先前的评论看,您需要防止重复ID和年份的组合。因此,从“设计视图”中突出显示这两行,并将它们作为主键。这样可以防止您在表格中有2条记录,ID和年份中的信息相同。

确保您的报告按ID和年份分组,这样可以防止重复。