Sql server SQL链接表可以插入Can';t删除运行时3086

Sql server SQL链接表可以插入Can';t删除运行时3086,sql-server,vba,ms-access,execute,Sql Server,Vba,Ms Access,Execute,我使用Access VBA在一个SQL表中添加和删除记录,该表包含两列varchar代码。我是SQL Server数据库的dbowner。我向该表添加值的代码有效: For Each varItm In Me.lstMyAllTypes.ItemsSelected AddSQL = "INSERT INTO xyzMyTable ([MyCode1],[MyCode2]) " & _ "VAL

我使用Access VBA在一个SQL表中添加和删除记录,该表包含两列
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列中是否有“锁定”图标。

如果将SQL切换到SELECT,它是否检索任何记录?获取
RemSQL
的值并直接在SSMS中运行。SQL Server表是否有主键?--Access是否识别它(表设计视图中的键图标)?——完整的错误消息是什么?我可以选择,因为我可以添加记录,我可以打开表尝试手动删除一条记录。它只是不让我删除。不过没关系,我们走的是另一条路。@Andre你的评论就是答案。如果你想把它作为一个答案,我会这样做。我还没有做好准备,所以我甚至没有想过要质疑这个问题。我总是在表上放一个标识列,所以我从来没有遇到过这个问题。总是简单的事情让你难堪!