我仍然在这个表单上工作,现在我正在与删除代码部分发生错误。我相信它在识别我选择的内容时遇到了问题,但我可能错了。错误消息显示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") & "'"
答案 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)
我最好的猜测是你的问题在于:
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变量将不会等于你的想法。而且我很确定这是因为字段名称周围有双引号,除非我误解了你的错误。