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
我有一个简单的 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