在VBA访问中输入参数值错误

阿里·博格达迪(Ali El-Boghdady)

我有一个简单的VBA代码,使我可以使用update语句更新数据库表。我要更新的字段是日期/时间,所以我使用的代码是:

Public myDate, renewalDate As Date
Public Sub Renewal()
renewalDate = DLookup("renewalDate", "tblDate", "[id]=1")
Dim newDate As Date
Serial = "123456789"
If Forms![frmRenewal]![txtSerial] = Serial Then
    newDate = DateAdd("m", 1, renewalDate)
    MsgBox newDate
    DoCmd.SetWarnings (False)
    DoCmd.RunSQL "Update tblDate SET tblDate.renewalDate = newDate WHERE (((tblDate.id)=1))"
    MsgBox "You successfully renewed your subscription and renewal date is now " & renewalDate
Else
    MsgBox "Wrong Serial"
End If
End sub

这是数据库表:

在此处输入图片说明

当我运行代码时出现此错误

在此处输入图片说明

李·麦克

问题在于您的变量newDate是在VBA子例程的范围内定义的,Renewal并且在该RunSQL方法执行的SQL语句中没有意义,因此导致SQL引擎将其解释为需要值的参数。

虽然您可以将该变量的值作为提供给该RunSQL方法的SQL语句的一部分进行串联,但更干净的方法可能是直接在SQL语句中执行新日期的计算,例如:

DoCmd.RunSQL "update tblDate set tblDate.renewalDate = DateAdd(""m"", 1, tblDate.renewalDate) where tblDate.id = 1"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章