Ms access 是否有方法在表列中创建约束以防止重复条目?

Ms access 是否有方法在表列中创建约束以防止重复条目?,ms-access,ms-access-2007,Ms Access,Ms Access 2007,我正试图让access约束列中的重复条目 原因是我有多年的薪水,可以输入任意次数 比如说, 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 ID薪资年度 22 $20000 2013 22 $15000 2012 22$20000 20

我正试图让access约束列中的重复条目

原因是我有多年的薪水,可以输入任意次数

比如说,

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
ID薪资年度
22 $20000 2013
22 $15000 2012
22$20000 2013你可以

如果创建唯一索引,Access不允许您输入新索引 字段中的值(如果该值已存在于中的同一字段中) 另一张唱片。Access会自动为其创建唯一索引 主键,但您可能还希望禁止中的重复值 其他领域。例如,可以在字段上创建唯一索引 它存储序列号,因此没有两种产品具有相同的序列号 序列号

“我希望这样,用户就不能在我的薪酬表的列中多次输入2013。”

  • 在设计视图中打开
    COMP
  • 选择
    年份
    字段
  • 从“字段属性”(下方)中选择“常规”选项卡
  • 从索引属性下拉列表中选择“是(无重复)”
  • 保存更改
  • 如果你更喜欢用代码来代替

    CurrentDb.Execute“ALTER TABLE[COMP]”&vbCrLf&_
    “添加约束uniq_年唯一([年])”
    
    请注意,除非现有的
    [Year]
    值是唯一的,否则语句将不会成功。此外,
    COMP
    Year
    都是。将它们括在方括号中,以便db引擎将它们识别为字段名,而不会抱怨

    如果您决定约束应基于两个字段

    CurrentDb.Execute“ALTER TABLE[COMP]”&vbCrLf&_
    “添加约束uniq\u id\u年唯一(id,[年])
    
    您也可以从表设计视图创建相同的唯一索引/约束,但这对我来说更难描述。执行DDL语句,然后在设计视图中检查结果可能更容易。当您尝试执行该语句时,请确保该表不在设计视图中

    我创建了带有长整型字段的表
    COMP
    ID
    Year
    。然后在查询设计器中将此语句作为新查询执行:

    ALTER TABLE[COMP]添加约束uniq\u id\u year UNIQUE(id,[year])
    
    下面是执行该语句后,我在设计视图中的表的屏幕截图


    我不明白为什么同样的说法对你不起作用。因此,在“设计”视图中打开该表,并找到创建该图片中显示的唯一索引的UI方法。

    基于一列(或多列)创建主键。如果需要基于两列,请进入表的“设计”视图,高亮显示要基于的字段,然后单击鼠标右键。从弹出菜单中选择“主键”。从前面的评论来看,您需要防止ID和年份的组合重复。因此,从“设计”视图中高亮显示这两行,并使其成为主键。这将防止表中有2条记录的ID和年份信息相同


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

    这是一个很好的答案,但我发现我确实需要将年份用于单独的ID号。我仍然不需要相同ID号内的重复项。我在哪里执行此DDL语句?在VBA窗口中?您可以在即时窗口(Ctrl+g)中运行该代码。或者在查询设计器中创建一个新查询,切换到SQL视图,只粘贴以下语句文本并从那里执行:
    ALTER TABLE COMP ADD CONSTRAINT uniq\u id\u year UNIQUE(id,[year])
    Nice。在我运行此程序之前,它是否也使ID唯一?我需要的ID不是唯一的,而是每个ID的年份唯一。ID加年份的组合必须是唯一的,以满足该约束。但是,只要年份不同,可以存储多个ID相同的行。一旦你做到了,这应该会更清楚。制作数据库文件的备份副本,然后重试。:-)