查询表达式中的语法错误(缺少运算符) - VBA

Posted

技术标签:

【中文标题】查询表达式中的语法错误(缺少运算符) - VBA【英文标题】:Syntax error (missing operator) in query expression - VBA 【发布时间】:2021-06-18 05:38:26 【问题描述】:

这是我的代码:

    M_BKID = DMax("BK_ID", "BookingMain")
    FSQL = " UPDATE Q_HrsToBeRefund_Writeable " & _
           " SET BD_ToBeRefund = False, BD_Refunded = True, BD_RefundedRef = " & M_BKID & " " & _
           " ORDER BY BD_Dt DESC LIMIT " & M_Refunded & " "
           
    Debug.Print FSQL            ' ********************************
    DoCmd.RunSQL FSQL

我收到一个错误

查询表达式 '184 ORDER BY BD_Dt DESC 限制 3 中的语法错误(缺少运算符)

谁能帮我解决这个问题?

【问题讨论】:

【参考方案1】:

MS Access 绝对不支持 UPDATE 中的 LIMIT。我认为它也不支持TOP。但你可以这样做:

UPDATE Q_HrsToBeRefund_Writeable as 
    SET BD_ToBeRefund = False,
        BD_Refunded = True,
        BD_RefundedRef = ?
    WHERE <primary key> IN (SELECT TOP (M_Refunded) <primary key>
                            FROM Q_HrsToBeRefund_Writeable
                            ORDER BY BD_Dt DESC
                           );

注意:

这假设您的表有一个主键。 注意? 的使用。这表明您应该为此值使用参数,而不是修改查询字符串。 我不确定是否可以将行数作为参数传入。

【讨论】:

我不确定是否可以将行数作为参数传入。 不能,但可以使用 VBA 轻松连接,如 M_BKID将不得不。

以上是关于查询表达式中的语法错误(缺少运算符) - VBA的主要内容,如果未能解决你的问题,请参考以下文章

访问表单 - 查询表达式中的语法错误(缺少运算符)

在 MS Access 中的查询表达式中出现语法错误(缺少运算符)

语句中的查询表达式中的语法错误(缺少运算符)

查询表达式中的语法错误(缺少运算符)

查询表达式中的语法错误(缺少运算符) - ASP.NET

Access 2010:查询表达式中的语法错误(缺少运算符)