2

我被这个错误困住了好几个小时。 在open_form事件中,我将值设置为recordset,像这样错误:此记录集不可更新

Id = vId。 但有了1个表格,无论我更新哪个字段,我都有这个错误。

This recordset is not updateable 

我读这篇文章http://support.microsoft.com/default.aspx?...kb;en-us;328828

我试过很多东西。没有工作 有没有关系,我得到了navigation control,形式是dynaset,我有一个primary key autoincrementallow edits启用和data entry设置为yes

而且,我编辑此表权限

任何人都遇到过此错误?

此外,我将97转换为2010,现在我的表格链接到SQL server 2012。 我不知道它是否工作之前,因为它不是我的应用程序,但我想它是功能

+0

将表单的Data Entry属性设置为Yes表示表单不会显示现有记录,只允许您添加新记录。那是你想要的吗?但是,我不知道这是否会导致您尝试解决的问题。 – HansUp

+0

如果表单的记录源是一个查询,它可能有助于向我们展示查询的SQL。 – HansUp

+0

非常感谢。它现在起作用了。你让我看看Record源,并且有3个连接,其中一个连接在没有设置主键的表上。我只是设置Id来修复它。你可以把它写成答案来获得要点:) – Marc

回答

3

检查窗体的记录来源。如果它是SELECT语句,请将SQL复制到新的Access查询的SQL视图中。

然后在数据表视图中打开该查询。如果无法在数据表视图中编辑数据,则必须弄清楚如何修改查询,以便它可以返回可编辑的记录集。

2

如果这有助于任何人,我对这个问题有不同的原因。

当我们从一个SQL Server转换到另一个时,这里的人员删除了所有链接表,并为每个Access MDB再次设置它们。

对于一个表(它实际上指向一个SQL视图,哪个是查询引起问题的表单的链接表),人们没有检查列以指定链接表的“索引“(IIRC)专栏...即使在对话中甚至有一点评论,如果你想更新,有必要检查一个或多个字段。幸运的是,该视图选择了一个ID,所以我尝试了它,并且它工作。 (如果这没有奏效,我将指定构成SQL表格的关键字的视图列,该表格是由表格更新的表格)。

我曾在论坛上看到关于“所有更新表单的表需要有一个索引“,并且我检查了视图引用的SQL表,但是我没有想到”表“意味着Access”链接表“。我看到在链接表上唯一指定索引的地方是重新添加链接表时。