Access / VBA和SQL WHERE子句格式问题

时间:2012-04-04 18:02:00

标签: sql ms-access vba where-clause ms-access-2003

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

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

_BounceMaster.DateCheck是日期/时间格式,我认为这可能是问题,但我无法弄清楚它应该是什么样的格式,或者如何到达那里。尽我所知,BounceDate是正确的 - 即使使用CDate也不会产生任何影响。我得到了两个数据不匹配错误,目前,使用上面的代码,我收到语法错误。我做错了什么?

2 个答案:

答案 0 :(得分:1)

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

正如我记得的那样,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

答案 1 :(得分:0)

应该是

DELETE FROM _BounceMaster

DELETE _BounceMaster.* FROM _BounceMaster

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