更新 Access 2013 中除标识列之外的所有行

Posted

技术标签:

【中文标题】更新 Access 2013 中除标识列之外的所有行【英文标题】:Update all rows except identity column in Access 2013 【发布时间】: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 字段来更新表格。 【参考方案1】:

这可能是在 Access 中使用标识列作为主键的全局问题。

补丁创意和可能的解决方法 Problem with identity fields in MS-Access

【讨论】:

看起来我实际上可能需要编写更新代码。我试试看。

以上是关于更新 Access 2013 中除标识列之外的所有行的主要内容,如果未能解决你的问题,请参考以下文章

小写数据框中除 xyz 之外的所有字符列

如何复制表中除应更改的单个列之外的所有数据

选择向量中除一个之外的所有元素

提取R数据框中除数字以外的所有列[重复]

如何在 Hive 中除按列分组之外的列上应用 max 子句

MS-ACCESS:删除除 top 1 之外的所有行并从查询中更新表