Hacer un recordset que busque datos en una consulta de datos y no en una tabla MS ACCESS 2013

He estado intentado hacer un recordset que lea una consulta de datos (select * from) contenida como objeto en access... Sin embargo, al ir probando, me he dado cuenta que si hago el recordset dirigido hacia una tabla (select * from TABLA), todo funciona bien pero cuando lo hago hacia una consulta me genera error (select * from MiConsulta).. No puedo hacer la consulta de datos desde el recordset mismo ya que es una consulta compleja que depende de otras consultas. Estoy intentando de esta forma:

TempVars.Add "FechaRotura", Me.TxtFechaRotura.Value

'parámetro que me pide en la consulta a la que hago referencia

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim sql As String
sql = "SELECT * FROM MiConsultaDeDatos"
Set db = CurrentDb
Set rs = db.OpenRecordset(sql, dbOpenSnapshot)

Do While Not rs.EOF
Dim Id As String
Id = rs.Fields(2).Value

'Acá incluiré una rutina para exportar un informe a pdf por cada linea de la consulta
rs.MoveNext
Loop

rs.Close
Set rs = Nothing
db.Close
Set db = Nothing

Respuesta
2

Antes de crear el recordset has de abrir la consulta, pasándole el parámetro, y luego ya abres el recordset. La cosa iría así:

'Creas las variables para los recordsets
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim qry As QueryDef
Set db = CurrentDb
Set qry = db.QueryDefs("MiConsultaDeDatos")  'Aquí el nombre de tu consulta
qry.Parameters("FechaRotura") = Me.TxtFechaRotura.Value 'Aquí, en el paréntesis, has de poner exactamente lo que tengas como parámetro en la fila Criterios de tu campo. Si tienes más de uno, has de repetir esta linea por cada uno de ellos
Set rs = qry.OpenRecordset() 'Con esto creas el recordset sobre la consulta
Do While Not rs.EOF
...

¡Gracias! 

El código me funcionó de maravilla, aunque al principio se me hizo complicado entender los parámetros de la consulta ya que en la consulta tengo tres filtros en cascada....

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas