MS Access 准备好的语句

Posted

技术标签:

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

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

UPDATE part SET part_description=? WHERE part_id=?

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

【问题讨论】:

【参考方案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

补充说明:

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

【讨论】:

“Bang notation”也适用于设置参数值,例如qdf!which_id = 1

以上是关于MS Access 准备好的语句的主要内容,如果未能解决你的问题,请参考以下文章

在 MS-Access 中生成 INSERT INTO 语句

ASP.NET - MS-ACCESS - VB.NET - SQL 语句错误

MS Access 中的多行插入语句

MS Access中的简单SQL语句[重复]

出现数字符号 (#) 时,MS Access SELECT 语句出错

带有 Like 语句的 MS-Access 上的 SQL 请求似乎永远无法正常工作