问题描述
我使用 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
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 列中是否有“锁定”图标。