【发布时间】:2016-06-06 15:00:20
【问题描述】:
我在 Access 中有一个链接到 SQL Server 表的表单。此表有一个 UID。在 Access 中创建新记录后,它会尝试更新表(包括 UID)并给我错误:
当 IDENTITY_INSERT 设置为 ON 或复制用户插入 NOT FOR REPLICATION 标识列时,必须为表“TableName”中的标识列指定显式值。
现在,我明白为什么会发生此错误,但不知道如何解决。我无法更改 IDENTITY_INSERT,并且 Access 中的 UID 列将表单链接到子表单,因此我确实需要将其包含在表单中。 如何从 ODBC 更新中仅排除 UID 列? 我知道我可以使用宏显式定义要更新的列,但必须有更简单的方法。有没有像Me!UIDTextbox.Undo 这样的函数可以在Before Update 事件中运行?
更多细节: Access 中没有 VBA 模块或查询。这是一个标准的 SQL 服务器表,Access 表单会在记录更改时更新表(Access 的默认设置)。该表与标准 ODBC 数据库连接链接,以 UID 作为主键。
【问题讨论】:
-
ODBC 驱动程序没有更新密钥,所以要么发生了其他事情,要么您在链接表时没有指定 ID(但通常您根本无法更新) .
-
您确定要连接到 Access 吗? “IDENTITY_INSERT 设置为 ON 或当复制用户插入 NOT FOR REPLICATION 标识列时”听起来很像 SQL Server。 Access 在插入自动编号列时会给出非常不同的错误消息,并且不使用术语“IDENTITY_INSERT”
-
啊,我明白了。您正在通过 Access 连接到 SQL Server(ODBC 指向 SQL Server)您的插入语句是什么样的?
-
@Gustav UID 列被指定为 Access 表 ID。
-
@Brad 插入语句是 Access 中的默认语句。如问题所述,我没有任何 VBA 或特殊要求。我连接了数据源,创建了一个表单,并使用默认的 Access 字段来更新表格。
标签: ms-access vba ms-access-2013