Relacionar dos recordset para crear una consulta
Estoy con una base de datos de gestión de material, por lo que tengo una tabla en la que están todos los movimientos del material, con su posición y su fecha.
Estoy intentando filtrar dicha tabla para que me de los que están una posición determinada por un formulario, pero a día de hoy (los materiales pueden variar de lugar). Para ello he creado dos consultas:
una para que me filtre los códigos del material por la últimas fechas (con ello consigo saber donde está a día de hoy todo) sqlstr2 = "SELECT tbl_principal.Id_equipo, Count(tbl_principal.Id_equipo) AS CuentaDeId_equipo, Last(tbl_principal.fecha) AS ultimoDefecha FROM tbl_principal GROUP BY tbl_principal.Id_equipo"
y otra para que me filtre el material según la posición que quiera el clliente por el formulario. sqlstr1 = "SELECT tbl_principal.Id_principal, tbl_principal.Id_equipo, tbl_principal.id_descripcion, tbl_principal.Id_ubicacion, tbl_principal.id_funcion, tbl_principal.id_superior, tbl_principal.id_fisica, tbl_principal.fecha, tbl_principal.Observaciones, tbl_principal.Averiado FROM tbl_principal WHERE (tbl_principal.id_descripcion = " & descr & " And tbl_principal.Id_ubicacion = " & ubica & " And tbl_principal.id_funcion = " & funcion & " ) ORDER BY tbl_principal.Id_principal"
Bueno para no liarles, lo que hago es abrir un recordset para cada uno
Set dbs = CurrentDb
Set rst1 = dbs.OpenRecordset(sqlstr1)
Set rst2 = dbs.OpenRecordset(sqlstr2)
Y después los intento enlazar, con lo que consigo saber que hay a día de hoy en una posición determinada.
sqlstr3 = "SELECT rst1.Id_principal, rst1.Id_equipo, rst1.id_descripcion, rst1.Id_ubicacion, rst1.id_funcion, rst1.id_superior, rst1.id_fisica, rst1.fecha, rst1.Observaciones, rst1.Averiado FROM rst2 INNER JOIN rst1 ON (rst2.últimoDefecha = rst1.fecha ) AND rst2.Id_equipo = rst1.Id_equipo)"
Set rst3 = dbs.OpenRecordset(sqlstr3)
Se que las consultas están bien por separado porque funcionan (rst1 y rts2), pero la inner join entre ellas no... Y no se porque..
Bueno que cuando lo hago me dice que no se puede encontrar la consulta o tabla rst2 y la verdad que no se lo que estoy haciendo mal, o si me dan otra idea más fácil para hacerlo en una sola consulta.
Estoy intentando filtrar dicha tabla para que me de los que están una posición determinada por un formulario, pero a día de hoy (los materiales pueden variar de lugar). Para ello he creado dos consultas:
una para que me filtre los códigos del material por la últimas fechas (con ello consigo saber donde está a día de hoy todo) sqlstr2 = "SELECT tbl_principal.Id_equipo, Count(tbl_principal.Id_equipo) AS CuentaDeId_equipo, Last(tbl_principal.fecha) AS ultimoDefecha FROM tbl_principal GROUP BY tbl_principal.Id_equipo"
y otra para que me filtre el material según la posición que quiera el clliente por el formulario. sqlstr1 = "SELECT tbl_principal.Id_principal, tbl_principal.Id_equipo, tbl_principal.id_descripcion, tbl_principal.Id_ubicacion, tbl_principal.id_funcion, tbl_principal.id_superior, tbl_principal.id_fisica, tbl_principal.fecha, tbl_principal.Observaciones, tbl_principal.Averiado FROM tbl_principal WHERE (tbl_principal.id_descripcion = " & descr & " And tbl_principal.Id_ubicacion = " & ubica & " And tbl_principal.id_funcion = " & funcion & " ) ORDER BY tbl_principal.Id_principal"
Bueno para no liarles, lo que hago es abrir un recordset para cada uno
Set dbs = CurrentDb
Set rst1 = dbs.OpenRecordset(sqlstr1)
Set rst2 = dbs.OpenRecordset(sqlstr2)
Y después los intento enlazar, con lo que consigo saber que hay a día de hoy en una posición determinada.
sqlstr3 = "SELECT rst1.Id_principal, rst1.Id_equipo, rst1.id_descripcion, rst1.Id_ubicacion, rst1.id_funcion, rst1.id_superior, rst1.id_fisica, rst1.fecha, rst1.Observaciones, rst1.Averiado FROM rst2 INNER JOIN rst1 ON (rst2.últimoDefecha = rst1.fecha ) AND rst2.Id_equipo = rst1.Id_equipo)"
Set rst3 = dbs.OpenRecordset(sqlstr3)
Se que las consultas están bien por separado porque funcionan (rst1 y rts2), pero la inner join entre ellas no... Y no se porque..
Bueno que cuando lo hago me dice que no se puede encontrar la consulta o tabla rst2 y la verdad que no se lo que estoy haciendo mal, o si me dan otra idea más fácil para hacerlo en una sola consulta.
1 Respuesta
Respuesta de Antonio Pugliese
1