2011-07-04 126 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' –