vba访问中输入参数值错误

Enter parameter value error in vba access

我有一个简单的 VBA 代码,可以让我使用更新语句 table 更新数据库。 我要更新的字段是 date/time 所以我使用的代码是:

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

这里是数据库 table:

当我 运行 代码

时出现此错误

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

虽然您可以将此变量的值连接为提供给 RunSQL 方法的 SQL 语句的一部分,但更简洁的方法可能是直接在SQL 语句,例如:

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

您可以将其缩减为:

Public myDate As Date, renewalDate As Date

Public Sub Renewal()

    Serial = "123456789"
    If Forms![frmRenewal]![txtSerial] = Serial Then
        renewalDate = DateAdd("m", 1, renewalDate)
        CurrentDb.Execute "Update tblDate SET renewalDate = DateAdd('m', 1, [renewalDate]) WHERE id = 1"
        MsgBox "You successfully renewed your subscription, and renewal date is now " & renewalDate
    Else
        MsgBox "Wrong Serial"
    End If

End sub