0

私はまだこのフォームに取り組んでいますが、コードの削除部分でエラーが発生しています。私が選択しているものを認識するのに問題があると思いますが、間違っている可能性があります。エラーメッセージは、RUN TIME ERROR 3265 ITEM NOT FOUND IN THIS 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

このエラーは、サブフォームにtext_keyRecordsetという名前のフィールドが含まれていないことを示しています。

詳細には、エラー #3265、「このコレクションにアイテムが見つかりません」が表示されます。 そのエラーを引き起こす可能性のあるコード内の唯一の場所はMe.TableSub.Form.Recordset.Fields("text_key"). そうMe.TableSub.Form.Recordsetでない場合は、以前にエラーが発生していたからです ( on If Not (Me.TableSub.Form.Recordset ...)。つまり、レコードセットのコレクションには、名前付きの"text_key"Fieldsが含まれていません。Item

@JohnnyBones が提案したようにコードを修正すると、引き続き同じエラーが発生しますが、エラーは"MySQLString = ..."行ではなく行でトリガーされCurrentDb.Executeます。

そのエラー メッセージが表示されたら、[デバッグ] ボタンをクリックし、イミディエイト ウィンドウでこれを使用して、その .xml 内のフィールドの名前を一覧表示します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 に答える