0

我已经阅读了大量的问题和解决方案,但我无法弄清楚我做错了什么。

BounceDate = DateValue(txtBounceDate.Value)
bncSql = "DELETE _BounceMaster.* FROM _BounceMaster" & _
    " WHERE _BounceMaster.DateCheck >= #" & BounceDate & "#;"
DoCmd.RunSQL bncSql

_BounceMaster.DateCheck 采用日期/时间格式,我认为这可能是问题所在,但我无法弄清楚它应该采用什么不同的格式,或者如何到达那里。据我所知,BounceDate 是正确的——即使使用 CDate 也没有什么不同。我遇到了两个数据不匹配错误,目前,使用上面的代码,我遇到了语法错误。我究竟做错了什么?

4

2 回答 2

1

我想问题来自日期格式。该BounceDate变量是 DateTime 类型,因此当您与字符串类型变量连接时,VBA 会使用区域设置中的日期格式自动将 DateTime 变量转换为字符串类型。

我没记错,MS Access 的 SQL 解释器只对 mm/dd/yyyy 日期格式感到舒服,所以请试试这个:

BounceDate = DateValue(txtBounceDate.Value)
bncSql = "DELETE _BounceMaster.* FROM _BounceMaster" & _
    " WHERE _BounceMaster.DateCheck >= #" & Format(BounceDate, "mm/dd/yyyy") & "#;"
DoCmd.RunSQL bncSql
于 2012-04-05T19:45:19.270 回答
0

它应该是

DELETE FROM _BounceMaster

不是

DELETE _BounceMaster.* FROM _BounceMaster

您应该使用参数化查询,因为您的代码会受到 SQL 注入攻击。

于 2012-04-04T18:03:48.653 回答