我正在尝试访问限制列中的重复条目。
之所以如此,是因为我可以多次输入多年薪水。
例如,
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表中有多个人。这改变了问题。
答案 0 :(得分:3)
“我想要它,以便用户不能在我的COMP表的列中多次输入2013。”
COMP
。Year
字段。如果您更愿意使用代码代替......
CurrentDb.Execute "ALTER TABLE [COMP]" & vbCrLf & _
"ADD CONSTRAINT uniq_year UNIQUE ([Year])"
请注意,除非现有[Year]
值是唯一的,否则语句将不会成功。此外,COMP
和Year
都是reserved words。将它们括在方括号中,以便db引擎将它们识别为字段名称而不是抱怨。
如果你决定约束应该基于2个字段......
CurrentDb.Execute "ALTER TABLE [COMP]" & vbCrLf & _
"ADD CONSTRAINT uniq_id_year UNIQUE (ID, [Year])"
您还可以从表设计视图创建相同的唯一索引/约束,但这对我来说更难描述。您可能更容易执行DDL语句,然后在设计视图中检查结果。当您尝试执行该语句时,请确保该表不在“设计视图”中。
我使用长整数字段COMP
和ID
创建了表格Year
。然后在查询设计器中将此语句作为新查询执行:
ALTER TABLE [COMP] ADD CONSTRAINT uniq_id_year UNIQUE (ID, [Year])
执行该语句后,这是我在“设计视图”中的表格的截屏。
我不明白为什么同样的陈述不适合你。因此,在“设计视图”中打开表格,找到用于创建该图片中显示的唯一索引的UI方法。
答案 1 :(得分:0)
你可以Create a unique index on this field
如果您创建唯一索引,Access不允许您输入新索引 字段中的值,如果该值已存在于同一字段中 另一个记录。 Access会自动为其创建唯一索引 主键,但您可能还想禁止重复值 其他领域。例如,您可以在字段上创建唯一索引 存储序列号,以便没有两个产品具有相同的序列号 序列号。
答案 2 :(得分:0)
根据一列(或多列)制作主键。如果需要将其基于2列,请进入表格的“设计视图”,突出显示所需的字段,然后单击鼠标右键。从弹出菜单中选择“主键”。从先前的评论看,您需要防止重复ID和年份的组合。因此,从“设计视图”中突出显示这两行,并将它们作为主键。这样可以防止您在表格中有2条记录,ID和年份中的信息相同。
确保您的报告按ID和年份分组,这样可以防止重复。