1

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

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

例如,

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 表中有多个人。这改变了问题。

4

3 回答 3

3

“我想要它,这样用户就不能在我的 COMP 表的列中多次输入 2013 年。”

  1. COMP在设计视图中打开。
  2. 选择Year字段。
  3. 从“字段属性”(下方)中选择“常规”选项卡。
  4. 从索引属性下拉列表中选择“是(无重复)” 。
  5. 保存更改。

如果您更喜欢使用代码来代替...

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

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

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

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

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

COMP我用 Long Integer 字段创建了表,ID并且Year. 然后在查询设计器中将此语句作为新查询执行:

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

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

表设计视图中的唯一索引

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

于 2013-08-19T17:01:24.540 回答
0

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

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

于 2013-08-19T19:15:37.717 回答
0

您可以 在此字段上创建唯一索引

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

于 2013-08-19T17:01:09.827 回答