【问题标题】:MS Access prepared statementsMS Access 准备好的语句
【发布时间】:2011-07-04 13:55:19
【问题描述】:

是否可以在 MS Access 中对 VBA 中的本地表执行准备好的语句,如下所示:

UPDATE part SET part_description=? WHERE part_id=?

如果是这样,它是如何完成的?

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:
    Dim db As DAO.Database
    Dim qdf As DAO.QueryDef
    Dim strSql As String
    Set db = CurrentDb
    strSql = "UPDATE Month_Totals Set item_date = [which_date]" & _
        " WHERE id = [which_id];"
    Debug.Print strSql
    Set qdf = db.CreateQueryDef(vbNullString, strSql)
    With qdf
        .Parameters("which_date").Value = Date()
        .Parameters("which_id").Value = 1
        .Execute dbFailOnError
    End With
    

    该示例使用了一个未保存的新QueryDef。如果你有一个保存的参数查询,你可以用它代替CreateQueryDef这一行:

    Set qdf = db.QueryDefs("YourQueryName")
    

    无论哪种方式,您都可以像我一样通过它们的名称来引用各个参数,或者通过它们在 SQL 语句中的位置来引用它们......所以这与上面的工作方式相同:

    .Parameters(0).Value = Date()
    .Parameters(1).Value = 1
    

    补充说明:

    1. .ValueParameter 的默认属性,因此在此处包含它不是严格要求。另一方面,明确表达也无妨。
    2. 正如 Gord 下面提到的,您可以使用带有参数名称的“Bang notation”,例如!which_id,这比.Parameters("which_id") 更简洁

    【讨论】:

    • “Bang notation”也适用于设置参数值,例如qdf!which_id = 1
    猜你喜欢
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 2016-03-23
    • 2015-06-27
    相关资源
    最近更新 更多