2

我想在 VBA 中运行删除查询以删除包含大于预先计算的当前月份的计费月份的记录。来自另一个系统的源数据具有文本格式的日期,显示为 (YYYY/MM)。

这是声明:

mySQL = "DELETE * FROM [tblBillingData]" _
& "WHERE (((tblBillingData.[Billing Month]) > PreCalcCurrentMonth));"

DoCmd.RunSQL mySQL

所有变量都已正确声明,当我单步执行代码时,我可以看到 PreCalcCurrentMonth,但是当它运行 SQL 语句时,我会看到 PreCalcCurrentMonth 变量的 Enter Parameter 输入框。

4

2 回答 2

1

如果这PreCalcCurrentMonth是一个 Date 变量,请尝试以下操作:

mySQL = "DELETE * FROM [tblBillingData]" & _
   "WHERE (((tblBillingData.[Billing Month]) > " & _
    Format(PreCalcCurrentMonth,"\#mm\/dd\/yyyy\#") & _
    "));"

 DoCmd.RunSQL mySQL

Format(PreCalcCurrentMonth,"\#mm\/dd\/yyyy\#")确保您的日期转换为美国日期格式#mm/dd/yyyy# 的字符串,无论您的区域设置如何。# 是日期分隔符。

于 2013-02-19T20:31:27.163 回答
1

尝试这个:

mySQL = "DELETE * FROM [tblBillingData]" _
& "WHERE (((tblBillingData.[Billing Month]) > #" & PreCalcCurrentMonth & "#));"

首先,您需要将您的变量称为字符串之外的变量,否则,Access VBA 会认为它是一个字符串。

其次,您需要用#符号包围日期参数。

于 2013-02-19T20:31:58.023 回答