【问题标题】:Access VBA Docmd.OpenQuery Can Run an update query but Currentdb.Excecute CannotAccess VBA Docmd.OpenQuery 可以运行更新查询,但 Currentdb.Excecute 不能
【发布时间】:2019-12-20 14:08:16
【问题描述】:

我创建了一个如下所示的已保存更新查询,它具有控制值和IIf 函数。

UPDATE SYS_AAAA_AAAH 
SET SYS_AAAA_AAAH.AAK = AAA & " " & AAB & IIf(IsNull(AAC),"","(" & AAC & ")") & IIf(IsNull(AAF),""," not null") & " comment '" & AAH & "',"
WHERE (((SYS_AAAA_AAAH.AAO)=[forms]![frmAdmiTabl]![CombSAAO]));

DoCmd.OpenQuery 可以运行它,而Currentdb.Execute 给出错误消息“参数太少”。我在没有来自控件或函数的输入的情况下创建了另一个保存的更新查询,并且 Currentdb.Execute 工作。我不想看到来自Docmd.OpenQuery 的警告消息,也不想通过打开和关闭警告来搞乱。无论如何让Currentdb.Execute 工作?

【问题讨论】:

标签: vba ms-access updates dao


【解决方案1】:

当你想用另一列的值和IIf函数更新某些记录的列时,最好使用DAO.recordseteditupdate

  Dim Rs_AAAH As DAO.Recordset

    Set Rs_AAAH = CurrentDb.OpenRecordset("select * from Table where AAO='" & Me.CombSAAO.Value & "'", dbOpenDynaset)

    Rs_AAAH.MoveFirst

    Do Until Rs_AAAH.EOF

        With Rs_AAAH
            .Edit
            .Fields("AAK").Value = Rs_AAAH.Fields("AAA") & " " & Rs_AAAH.Fields("AAB") & IIf(IsNull(Rs_AAAH.Fields("AAC")), "", "(" & Rs_AAAH.Fields("AAC") & ")") & IIf(IsNull(Rs_AAAH.Fields("AAF")), "", " not null") & " comment '" & Rs_AAAH.Fields("AAH") & "',"
            .Update
        End With

        Rs_AAAH.MoveNext
    Loop

    Rs_AAAH.Close
    Set Rs_AAAH = Nothing

【讨论】:

    猜你喜欢
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    相关资源
    最近更新 更多