0

我仍在处理此表单,现在我遇到了删除代码部分的错误。我相信在识别我选择的内容时遇到问题,但我可能是错的。错误消息显示为 RUN TIME ERROR 3265 ITEM NOT FOUND IN THE COLLECTION

整个代码如下:

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") & "'"
4

2 回答 2

2

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

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

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

当您收到该错误消息时,单击“调试”按钮,并在“立即”窗口中使用它来列出该Recordset.

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

注意_行继续字符。您必须在每个之前至少使用 1 个空格,在每个之后使用 0 个空格_

于 2013-07-26T18:12:21.603 回答
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 变量不会和你想象的一样。而且我很确定这是因为字段名称周围有双引号,除非我误解了您的错误。

于 2013-07-26T20:10:05.553 回答