【问题标题】:Enter parameter value error in vba accessvba访问输入参数值错误
【发布时间】:2021-02-20 19:26:24
【问题描述】:

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

这是数据库表:

运行代码时出现此错误

【问题讨论】:

    标签: vba ms-access-2010


    【解决方案1】:

    问题是你的变量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"
    

    【讨论】:

    • 感谢您的解释,在我使用您的解决方案后,它现在可以工作了....非常感谢
    【解决方案2】:

    您可以将其简化为:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多