Ms access Microsoft Access:由数据宏创建记录时出现重复警告
您请求对表进行的更改未成功,因为它们会在索引、主键或关系中创建重复的值。 这是我在将数据键入到子窗体的过程中收到的错误消息。我的子表单的源是一个Ms access Microsoft Access:由数据宏创建记录时出现重复警告,ms-access,macros,foreign-keys,ms-access-2010,referential-integrity,Ms Access,Macros,Foreign Keys,Ms Access 2010,Referential Integrity,您请求对表进行的更改未成功,因为它们会在索引、主键或关系中创建重复的值。 这是我在将数据键入到子窗体的过程中收到的错误消息。我的子表单的源是一个查询,它以一对一的父子关系连接两个表。我假设在输入数据时会发生以下情况: 我有一个After Insert数据宏,它在子表中创建一行 触发数据宏,并使用相应的外键在子表中创建一行 Microsoft Access不知道我已在子表中创建了该行 当我在子窗体中键入属于子表的数据时,它会自动尝试将新行添加到子表中。此操作失败,因为已存在具有相同外键的行 我有没
查询
,它以一对一的父子关系连接两个表
。我假设在输入数据时会发生以下情况:
Me.Requery
来解决此问题。对于单个记录似乎可以正常工作,但对于批量复制粘贴,事务中不支持错误操作。
编辑2:我甚至发现这句话说,在一次交易之后,
重新查询是不可能的。我有点确定应该有办法解决这个问题,因为它似乎对用户不友好…我通常不建议使用计时器,但在这种情况下,您可以使用计时器。在AfterInsert上,将窗体的TimerInterval设置为大约500。然后将Me.Requery代码放在计时器事件上,并将TimerInterval设置回0
AfterInsert事件应将TimerInterval设置回500,这将防止计时器触发,直到所有记录都已粘贴
我看到您正在使用宏。我不知道你能否在宏中使用定时器。我根本不使用宏,我建议学习VBA而不是使用它们
Private Sub Form_AfterInsert()
Me.TimerInterval = 500
End Sub
Private Sub Form_Timer()
Me.Requery
Me.TimerInterval = 0
End Sub