【问题标题】:Access VBA - Identifying text访问 VBA - 识别文本
【发布时间】:2013-01-11 01:40:41
【问题描述】:

我正在尝试创建一个按钮来删除子表单中的某些记录。但是我在查询表达式'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

【问题讨论】:

    标签: sql string ms-access vba


    【解决方案1】:
    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),但我认为这是正确的。

    【讨论】:

    • 非常感谢。我在这方面已经很久了。
    • 引号和“&”的位置对我来说意义不大:/
    • 您的 SQL 是完整的,正如您所说,除了结束引号。 &amp; "'" 负责这个。故障排除步骤:在没有 Me.subKey 变量的情况下运行此代码。让它运行,然后添加复杂性。当你完成时,它应该是有意义的。
    • 我认为 Chr(39) 是您所追求的。 Chr(32) 是空格字符。
    • 顺便说一句,你可以用一个函数来整理这个来做引用。 Function Quote(value As String) As String Quote = "'" & value & "'" 结束函数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多