0

サブフォーム内の特定のレコードを削除するためのボタンを作成しようとしています。ただし、クエリ式'KEY_ID = "1'で「構文エラー(演算子がありません)」が発生します。

問題が何であるかを知っています。属性はテキストであるため、値は一重引用符で囲む必要があります。これを実現するためにVBAを作成する方法がわかりません。

Private Sub cmdDelete_Click()
If Not (Me.subKey.Form.Recordset.EOF And Me.subKey.Form.Recordset.BOF) Then
    If MsgBox("Confirm Deletion?", vbYesNo) = vbYes Then
        Dim strSql As String
        strSql = "DELETE FROM KEYS" & _
            " WHERE KEY_ID='" & Me.subKey.Form.Recordset.Fields("KEY_ID")
        Debug.Print strSql ' <- prints to Immediate window
        CurrentDb.Execute strSql, dbFailOnError

    End If
End If
4

1 に答える 1

0
strSql = "DELETE FROM KEYS" & _
    " WHERE KEY_ID='" & Me.subKey.Form.Recordset.Fields("KEY_ID") & "'"

...ただし、これらの種類のものがより集中的になる場合は、ASCII文字として引用符を使用する方が安全であるか、少なくともより用途が広く、移植性が高いことに注意してください。

strSql = "DELETE FROM KEYS" & _
    " WHERE KEY_ID=" & _
    Chr(32) & Me.subKey.Form.Recordset.Fields("KEY_ID") & Chr(32)

確かではありませんChr(32)が、正しいと思います。

于 2013-01-11T01:49:49.417 に答える