2013-07-26 34 views
0

我仍然在這個表單上工作,現在我正在刪除代碼部分發生錯誤。我相信這是一個認識到我選擇的問題,但我可能是錯的。該錯誤信息讀取運行時間錯誤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

的錯誤指示子窗體的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

後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變量不會和你想象的一樣。我很確定這是因爲字段名稱中包含雙引號,除非我誤解了你的錯誤。

+0

我試着切換你的代碼,我仍然得到相同的錯誤。 – user2119980