我有一个简单的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] 删除。
我来说两句