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

Дополнительные примечания:

  1. .Value это свойство по умолчанию для Parameter, так что включать его здесь не обязательно. С другой стороны, это не помешает быть явным.
  2. Как отметил Горд ниже, вы можете использовать "обозначение взрыва" с именем параметра, например !which_id, который является более кратким, чем .Parameters("which_id")
Другие вопросы по тегам