错误' 3086'无法从指定的表中删除,但有读/写权限

时间:2018-02-22 17:22:53

标签: ms-access access-vba

我希望从表中删除子主题,条件是它与另一个表中的特定主题相关联。

使用表单中的文本字段选择主题。

我假设我需要INNER JOIN,但我的删除功能会返回:

  

"错误3086-无法从指定的表中删除"错误

我的研究表明,如果它是一个只读表,通常就是这种情况,但我可以手动删除表中的条目,所以我也应该有写权限。

我的代码:

'delete all entries from skillsTbl
strDeleteAllSubsFromSkillsTbl = "DELETE TeamSkillsTbl.* " & _
"FROM TeamSkillsTbl, SubTopicTbl " & _
"WHERE (((TeamSkillsTbl.SubTopicName)=[SubTopicTbl].[SubTopicName]) " & _
"AND ((SubTopicTbl.Topic)=[Forms]![frmAdd_Rename_Delete_Topic]![TopicName]));"

代码INNER JOIN

'delete all entries from skillsTbl
  strDeleteAllSubsFromSkillsTbl = "DELETE TeamSkillsTbl.* " & _
"FROM TeamSkillsTbl INNER JOIN SubTopicTbl ON TeamSkillsTbl.SubTopicName = SubTopicTbl.SubTopicName " & _
"WHERE ([SubTopicTbl].[Topic]=[Forms]![frmAdd_Rename_Delete_Topic]![txtTopicName]);"

我在哪里弄错了?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

请尝试以下方法:

DELETE FROM TeamSkillsTbl
WHERE 
TeamSkillsTbl.SubTopicName IN 
(
    SELECT SubTopicTbl.SubTopicName 
    FROM SubTopicTbl 
    WHERE SubTopicTbl.Topic = [Forms]![frmAdd_Rename_Delete_Topic]![TopicName]
)