2011-07-04 51 views
10

是否有可能在MS Access的本地表中VBA执行准备的语句是这样的:的MS Access准备语句

UPDATE part SET part_description=? WHERE part_id=? 

如果是这样它怎么办?

回答

15
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. .Value是一个的默认属性,所以在这里包括它并不是严格要求。另一方面,明确表示不会伤害。
  2. 正如戈德下面指出的,你可以使用“砰符号”与参数的名称,如!which_id,比.Parameters("which_id")
+3

“砰符号”更简洁的方法也适用于设置的参数值,例如,'QDF! which_id = 1' –