2011-07-04 12 views
10

は、このようなVBAでローカルテーブルの上にMS Accessでプリペアドステートメントを実行することが可能です書類を作成:MS Accessの

UPDATE part SET part_description=? WHERE part_id=? 

をもしそうならどのように行われていますか?新しい、未保存QueryDef使用例

答えて

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 

Set qdf = db.QueryDefs("YourQueryName") 

いずれかの方法を、私が行ったようにあなたがその名前で個々のパラメータを参照することができ、またはその位置によって:あなたが保存されたパラメータクエリを使用している場合は、CreateQueryDef行のために、この行を置換することにより代わりにそれを使用することができます

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

その他の注意事項:SQL文で...これは上記と同じ動作します

  1. .Valueはのデフォルトプロパティですなので、ここに含めることは厳密には必要ではありません。一方、それは明白であることを傷つけることはありません。
  2. ゴードは、以下に述べたように、あなたは.Parameters("which_id")
+3

よりも簡潔である、!which_idなどのパラメータの名前と「バン表記」を使用することができます「バン表記」もQDF '、例えば、パラメータ値を設定するための作品! which_id = 1' –