Объект Parameter (DAO)
Область применения: Access 2013, Office 2013
Объект Parameter представляет значение, предоставленное запросу. Параметр связан с объектом QueryDef , созданным из запроса параметров.
Замечания
Объекты параметров позволяют изменять аргументы в часто выполняемом объекте QueryDef без необходимости повторной компиляции запроса.
С помощью свойств объекта Parameter можно задать параметр запроса, который можно изменить перед выполнением запроса. Варианты действий:
Используйте свойство Name , чтобы вернуть имя параметра.
Используйте свойство Value , чтобы задать или вернуть значения параметров, которые будут использоваться в запросе.
Используйте свойство Type , чтобы вернуть тип данных объекта Parameter .
Используйте свойство Direction , чтобы задать или возвратить, является ли параметр входным, выходным параметром или и тем, и другим.
Пример
В этом примере демонстрируются объекты Parameter и коллекция Parameters путем создания временного объекта QueryDef и получения данных с учетом изменений, внесенных в Parameters объекта QueryDef. Процедура ParametersChange является обязательной для запуска этой процедуры.
Sub ParameterX()
Dim dbsNorthwind As Database
Dim qdfReport As QueryDef
Dim prmBegin As Parameter
Dim prmEnd As Parameter
Set dbsNorthwind = OpenDatabase("Northwind.mdb")
' Create temporary QueryDef object with two
' parameters.
Set qdfReport = dbsNorthwind.CreateQueryDef("", _
"PARAMETERS dteBegin DateTime, dteEnd DateTime; " & _
"SELECT EmployeeID, COUNT(OrderID) AS NumOrders " & _
"FROM Orders WHERE ShippedDate BETWEEN " & _
"[dteBegin] AND [dteEnd] GROUP BY EmployeeID " & _
"ORDER BY EmployeeID")
Set prmBegin = qdfReport.Parameters!dteBegin
Set prmEnd = qdfReport.Parameters!dteEnd
' Print report using specified parameter values.
ParametersChange qdfReport, prmBegin, #1/1/95#, _
prmEnd, #6/30/95#
ParametersChange qdfReport, prmBegin, #7/1/95#, _
prmEnd, #12/31/95#
dbsNorthwind.Close
End Sub
Sub ParametersChange(qdfTemp As QueryDef, _
prmFirst As Parameter, dteFirst As Date, _
prmLast As Parameter, dteLast As Date)
' Report function for ParameterX.
Dim rstTemp As Recordset
Dim fldLoop As Field
' Set parameter values and open recordset from
' temporary QueryDef object.
prmFirst = dteFirst
prmLast = dteLast
Set rstTemp = _
qdfTemp.OpenRecordset(dbOpenForwardOnly)
Debug.Print "Period " & dteFirst & " to " & dteLast
' Enumerate recordset.
Do While Not rstTemp.EOF
' Enumerate Fields collection of recordset.
For Each fldLoop In rstTemp.Fields
Debug.Print " - " & fldLoop.Name & " = " & fldLoop;
Next fldLoop
Debug.Print
rstTemp.MoveNext
Loop
rstTemp.Close
End Sub