Objeto Parameter (DAO)
Se aplica a: Access 2013, Office 2013
Un objeto Parameter representa un valor suministrado a una consulta. El parámetro está asociado con un objeto QueryDef creado a partir de una consulta de parámetros.
Comentarios
Los objetos Parameter permiten cambiar los argumentos de un objeto QueryDef ejecutado con frecuencia sin tener que volver a compilar la consulta.
Mediante las propiedades de un objeto Parameter, puede establecer un parámetro de consulta que se puede cambiar antes de ejecutar la consulta. Se puede:
Usar la propiedad Name para devolver el nombre de un parámetro.
Usar la propiedad Value para establecer o devolver los valores de parámetros que se utilizarán en la consulta.
Usar la propiedad Type para devolver el tipo de datos del objeto Parameter.
Usar la propiedad Direction para establecer o devolver si el parámetro es un parámetro de entrada, un parámetro de salida o ambos.
Ejemplo
En este ejemplo se utilizan objetos Parameter y la colección Parameters para crear un objeto QueryDef temporal y recuperar datos a partir de los cambios efectuados en los Parameters del objeto QueryDef. Se requiere el procedimiento ParametersChange para que pueda ejecutarse este procedimiento.
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