MS Access подготовил заявления
Можно ли выполнить подготовленный оператор в 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
, так что включать его здесь не обязательно. С другой стороны, это не помешает быть явным.- Как отметил Горд ниже, вы можете использовать "обозначение взрыва" с именем параметра, например
!which_id
, который является более кратким, чем.Parameters("which_id")