¿Cómo sacar los 5 libros más leídos entre dos fechas?
Pensaba que no iba a necesitar más ayuda pero "cuán equivocado andaba".
Salvo que ocurra una catástrofe espero no tener que volver a molestar, pero bueno, ahora no es el caso. De todos modos aprovecharé y haré 2 preguntas.
Conforme indico en el título de la pregunta estoy intentado que la BD me informe de los 5 libros más leídos cuando realizo la consulta desde un formulario con un subformulario. Lo que se me ha ocurrido es crear una consulta cuyo SQL es el siguiente:
SELECT TOP 5 Count(T_LibMLeídos.IdLibro) AS CuentaDeIdLibro, T_LibMLeídos.IdLibro, T_LibMLeídos.Título, T_LibMLeídos.Autor
FROM T_LibMLeídos
WHERE (((T_LibMLeídos.FechaPtmo) Between [Formularios]![F_libros más leídos]![txtFechaInicio] And [Formularios]![F_libros más leídos]![txtFechaFin]))
GROUP BY T_LibMLeídos.IdLibro, T_LibMLeídos.Título, T_LibMLeídos.Autor
ORDER BY Count(T_LibMLeídos.IdLibro) DESC , T_LibMLeídos.IdLibro DESC;
Funciona perfectamente.
Si ejecuto la consulta desde el subformulario, en donde tengo como origen del registro la consulta “ C_libros más leídos”. También funciona perfectamente.
Otra cuestión es cuando la solicito la información desde el formulario porque ejecuta el filtro de fechas correctamente pero aparecen todos los libros leídos en el periodo seleccionado. No restringe al nro 5 los libros leídos sino que los informa todos.
No sé por dónde seguir, porque si los ejecuto de manera separada funciona perfectamente pero si lo hago desde el formulario, ahí, falla.
La sentencia que tengo en el formulario para que se ejecute es la que sigue:
…...
sFiltro = "SELECT T_LibMLeídos.IdLibro, Count(T_LibMLeídos.IdLibro) AS CuentaDeIdLibro, T_LibMLeídos.T?tulo, T_LibMLeídos.Autor " _
& "FROM T_LibMLídos " _
& "WHERE (((T_LibMLeídos.FechaPtmo) Between [Formularios]![F_libros más leídos]![txtFechaInicio] And [Formularios]![F_libros más leídos]![txtFechaFin])) " _
& "GROUP BY T_LibMLeídos.IdLibro, T_LibMLeídos.Título, T_LibMLeídos.Autor " _
& "ORDER BY Count(T_LibMLeídos.IdLibro) DESC;"
Me.Section(0).Visible = True
Me.[Subformulario libros más leídos].Form.RecordSource = sFiltro
Me.[Subformulario libros más leídos].Form.FilterOn = True
Me.[Subformulario libros más leídos].Visible = True
Else
MsgBox "TIENES QUE PONER AMBAS FECHAS, LA INICIAL Y LA FINAL"
End If