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
补充说明:
.Value
是Parameter
的默认属性,因此在此处包含它不是严格要求。另一方面,明确表达也无妨。
正如 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 语句错误