首页 > 解决方案 > 查询表达式中的语法错误(缺少运算符) - VBA

问题描述

这是我的代码:

    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 中的语法错误(缺少运算符)

谁能帮我解决这个问题?

标签: sqlvbadatabasems-access-2010ms-access-2007

解决方案


MS Access 绝对不支持LIMIT. UPDATE我认为它也不支持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
                           );

笔记:

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

推荐阅读