SQL 链接表可以插入不能删除运行时 3086

问题描述

我使用 Access VBA 在单个 sql 表中添加删除记录,该表包含 2 列 varchar 代码。我是 sql Server 数据库上的 dbowner。我向该表添加值的代码有效:

For Each varItm In Me.lstMyAllTypes.ItemsSelected
            Addsql = "INSERT INTO xyzMyTable ([MyCode1],[MyCode2]) " & _
                     "VALUES ('" & Me.lstMyAllTypes.Column(0,varItm) & "','" & Me.cboType.Column(1) & "');"
            'EXECUTE sql
            CurrentDb.Execute Addsql,dbSeeChanges
            'Debug.Print Addsql
Next varItm

我的删除代码抛出运行时错误 3086:

For Each varItm In Me.MylstTypes.ItemsSelected
    Remsql = "DELETE FROM xyzMyTable " & _
              "WHERE xyzMyTable.MyCode1 = '" & Me.MylstTypes.Column(0,varItm) & _
              "' AND xyzMyTable.MyCode2 = '" & Me.cboType.Column(1) & "'"
            'EXECUTE sql
            DoCmd.SetWarnings False
            CurrentDb.Execute Remsql,dbSeeChanges
            DoCmd.SetWarnings True
Next varItm

我调试了删除 sql 字符串,我可以在 SSMS 中运行它,但不能在 Access 中运行。如果我在 Access 查询中创建相同的删除查询,则它不起作用。如果我打开表格并尝试删除该行,它会发出叮当声,但没有弹出错误。如何添加但不能删除

此表在 sql Server 中与任何其他表都没有关系,因此参照完整性不会成为问题。

解决方法

要在链接的 ODBC 表中删除或更新,该表需要有一个主键

PK 必须被 Access 识别:在设计视图中打开链接表,检查 PK 列中是否有“锁定”图标。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...