访问删除命令问题

时间:2013-07-26 17:57:07

标签: ms-access access-vba

我仍然在这个表单上工作,现在我正在与删除代码部分发生错误。我相信它在识别我选择的内容时遇到了问题,但我可能错了。错误消息显示RUN TIME ERROR 3265未找到此集合中的项目

整个代码为:

Private Sub cmdDelete_Click()
'delete record
'check existing selected record
If Not (Me.TableSub.Form.Recordset.EOF And Me.TableSub.Form.Recordset.BOF) Then
    'confirm delete
    If MsgBox("Are you sure you want to delete this record?", vbYesNo) = vbYes Then
    'delete now
    CurrentDb.Execute "DELETE FROM KWTable WHERE text_key='" &     Me.TableSub.Form.Recordset.Fields    ("text_key") & "'"
        'refresh data in list
        Me.TableSub.Form.Requery
    End If
End If
End Sub

突出显示的部分是:

CurrentDb.Execute "DELETE FROM KWTable WHERE text_key='" & Me.TableSub.Form.Recordset.Fields    ("text_key") & "'"

2 个答案:

答案 0 :(得分:2)

该错误表示子表单的Recordset不包含名为 text_key 的字段。

详细地说,您收到错误#3265,“此集合中找不到项目。”代码中唯一可能触发该错误的地方是Me.TableSub.Form.Recordset.Fields("text_key")。您知道Me.TableSub.Form.Recordset是有效的,因为如果不是,那么您之前就会遇到错误(在If Not (Me.TableSub.Form.Recordset ...上)。这意味着记录集的Fields集合不包含名为“text_key”Item

如果您修改代码为@JohnnyBones建议,您将继续得到相同的错误,但错误将在"MySQLString = ..."行而不是CurrentDb.Execute行触发。

当您收到该错误消息时,单击“调试”按钮,并在“立即”窗口中使用此按钮列出Recordset中字段的名称。

for each f in Me.TableSub.Form.Recordset.Fields: _
? f.Name : _
next

请注意_行继续符。您必须在每个_

之前使用至少1个空格和0个空格

答案 1 :(得分:0)

我最好的猜测是你的问题在于:

Me.TableSub.Form.Recordset.Fields    ("text_key")

尝试这样做:

MySQLString = "DELETE FROM KWTable WHERE text_key='" &     Me.TableSub.Form.Recordset.Fields    ("text_key") & "'"
CurrentDb.Execute MySQLString

我有一种感觉,当你破坏代码时,你的MySQLString变量将不会等于你的想法。而且我很确定这是因为字段名称周围有双引号,除非我误解了你的错误。