无法删除和更新访问链接表上的记录

Posted

技术标签:

【中文标题】无法删除和更新访问链接表上的记录【英文标题】:cannot delete and update records on access linked table 【发布时间】:2013-10-24 00:29:50 【问题描述】:

我可以访问名为 road.mdb 的数据库。 在 road.mdb 中,我有一个链接的 SQL 表和 表名是学生。

我可以在 MSAccess 中使用查询设计插入记录

但是我不能更新也不能删除

在下面运行删除查询时,错误是:无法从指定表中删除

delete from student where studentid=303;

当我在下面运行更新查询时,错误是:操作必须使用可更新查询

update student set Name='BOB' where studentid= 303;

我拥有对 sql 数据库的完全访问权限,并且可以使用 sql management studio 运行查询。 使用 MSaccess 中的查询设计是否无法删除和更新? 奇怪的是我可以在 MSaccess 中使用查询设计插入新记录

谢谢

【问题讨论】:

我对 Access 和链接表做了类似的事情,但使用的是红砖数据库。我运行选择查询,然后编辑结果。 根据 Google “尝试使用 PassThrough 查询:它是 SQL/Server 语法中的查询,Access 将不经检查就交给 SQL 引擎。有关详细信息,请参阅帮助中的 PassThrough。” 通过您的 Access 数据库打开表,使用虚假数据创建一个新的测试条目,然后关闭表。重新打开表格,选择测试记录并点击键盘上的 DELETE 按钮。让我知道您执行此操作时记录是否会删除,或者它是否会给您特定的错误消息。 我无法使用访问界面。插入必须使用查询设计来完成。删除按钮也是灰色的。看起来SQL pass through 是我必须使用的。除非有另一种方法可以配置链接表以允许在没有它的情况下进行更新和删除 【参考方案1】:

我通过向 SQL 表添加主键并将表重新链接到 ACCESS 解决了这个问题

谢谢大家...

【讨论】:

成功了!重新链接表的提示 -> 右键单击​​链接表并选择“链接表管理器”,选择要重新链接的表,然后单击确定。非常感谢您解决这个问题。我会在这个问题上追逐我的尾巴很长一段时间。 如何重新链接表?我能做的只是删除表并重新创建该链接表。使用“链接表管理器”不能让我设置主键。【参考方案2】:

如果您无法在 SqlServer 上操作表,您可以通过告诉 Access 哪些/s 列/s 是主键来解决此问题。这是在创建链接表的最后一步完成的,窗口标题是“选择唯一记录标识符”。

【讨论】:

【参考方案3】:

您会发现以下步骤最有可能解决您的问题:

    在 SQL Server 中:在您正在使用的表上设置主键,并确保主键的类型是 int,而不是 bigint,因为 Access 将无法正确处理 bigint 数据类型。 在 SQL Server 中:刷新表。 在 MS Access 中:重新链接表。

(您可以通过在 SQL Server 表中添加一条记录并通过 MS Access 链接表访问它来轻松检查“事情是否正常”。当一切正常时,您在查看来自 MS 的数据时不应该看到 #Deleted访问侧。) 希望它有所帮助;-)

【讨论】:

【参考方案4】:

在我的例子中,链接表只有键。我必须将其中一个键修改为主键,然后我可以通过 DELETE 表截断表。* 通过访问 FROM 表。

【讨论】:

【参考方案5】:

就我而言,问题是BIT 列。我认为当 bit 列包含 NULL 值时会出现问题。

为了解决这个问题,我要么删除了整列,要么设置了一个默认值。

【讨论】:

相关:this answer 至 bind checkbox with a bit column in a SQL Server linked table。

以上是关于无法删除和更新访问链接表上的记录的主要内容,如果未能解决你的问题,请参考以下文章

无法在同一张表上查询和更新的问题解决方法

无法删除表:外键约束失败

删除连接表的重复记录并修复相关表上的外键

访问选择查询记录集不可更新

无法从 SQL Server CE 中删除记录

删除短信和通话记录权限后无法更新 APK [重复]