【问题标题】:Syntax error (missing operator) in query expression - VBA查询表达式中的语法错误(缺少运算符) - 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 中的语法错误(缺少运算符)

谁能帮我解决这个问题?

【问题讨论】:

    标签: sql vba database ms-access-2010 ms-access-2007


    【解决方案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将不得不。
    猜你喜欢
    • 1970-01-01
    • 2021-03-14
    • 2020-01-14
    • 1970-01-01
    • 2018-09-02
    • 2018-01-29
    • 2012-11-14
    相关资源
    最近更新 更多