** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Buscador múltiple con desplegables
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoBuscador múltiple con desplegables

 Responder Responder
Autor
Mensaje
zelarra Ver desplegable
Habitual
Habitual


Unido: 21/Octubre/2020
Localización: España
Estado: Sin conexión
Puntos: 122
Enlace directo a este mensaje Tema: Buscador múltiple con desplegables
    Enviado: 13/Diciembre/2020 a las 10:17
Buenos días. Estoy intentando hacer un buscador en un formulario, pero llevo varios días, y no doy con una posible solución.

Tengo esto:


Me voy a centrar en los desplegables, no en los checkboxes, que también uso para filtrar. Creo que si saco los desplegables, no me costará incluir los checkboxes.

Hay tres posibles filtros:

Estado > Formato > Género > Subgénero
Año Añadido > Mes Añadido
Año Leído > Mes Leído

Para simplificarlo más, y que la respuesta sea más sencilla, cojamos solo los dos primeros (estado y año añadido).

Quiero que, si elijo un estado, me muestre solo los registros relacionados del año añadido, y al revés, es decir, que si elijo un año añadido, me muestre los registros relacionados del estado. Además, que luego me permita filtrar los desplegables que dependan de estos (a saber, formato, que depende de estado; y mes añadido, que depende del año añadido)

Por último, quiero añadir en cada desplegable una segunda columna con el número de valores de cada opción. Así:


¿Cómo he intentado hacerlo?

La manera de conseguirlo que había pensado era utilizando la columna con el número de registros. De esta forma, en la consulta origen del desplegable le pondría una condición de que solo mostrara los que fueran mayor que cero, y ya lo tendría.

Ahora bien, ¿cómo consigo ese valor para la segunda columna del desplegable?

Tengo este código:

Function Veces(Tipo As String, Filtro As String) As Integer
Dim myFilter1 As String
Dim rst As DAO.Recordset
Dim Veces1 As String
    FilterCombo Tipo, Filtro, "Buscador"
    Veces1 = "SELECT Count(CQuery.Titulo1) AS Veces" _
            & " FROM (" & myRecordSource & ") As CQuery" _
            & IIf(myFilterCombo = "", "", " WHERE " & myFilterCombo & "")
    Set rst = CurrentDb.OpenRecordset(Veces1)
    If Not (rst.EOF And rst.BOF) Then
         Veces = rst("Veces")
    End If
    rst.Close
    Set rst = Nothing
End Function

Y esa función FilterCombo es esta:

Sub FilterCombo(Tipo As String, Filtro As String, Optional Formulario As String = "")
    myFilterCombo = ""
    Select Case Formulario
        Case "Buscador"
            If Tipo = "Estado" Then
                If myFilterCombo <> "" Then myFilterCombo = myFilterCombo & " And "
                myFilterCombo = myFilterCombo & Filtro
            End If
    End Select

    If Tipo = "AñoAñadido" Then
        If myFilterCombo <> "" Then myFilterCombo = myFilterCombo & " And "
        myFilterCombo = myFilterCombo & Filtro
    End If
End Sub

He de decir que AñoAñadido no es un campo de la tabla, sino que lo calculo en función de la fecha.

Cuando lo hago de esa manera, la segunda columna con el número de registros del segundo desplegable me muestra como si no hubiera aplicado filtro alguno. En la imagen, el número de registros del formulario son dos después de haberle aplicado el filtro del estado, pero en el desplegable del año añadido me muestra todos (en este caso, me tendría que salir solo 2019 - 2)


Otra cosa que desearía conseguir es que, cuando elija un valor de este segundo desplegable y vuelva a entrar para elegir otra opción, efectivamente me salgan todas las opciones. Es decir, si escojo el Estado Comprar, y para el desplegable Año Añadido me dice que solo están disponibles los años 2019 y 2020, que cuando elija 2019, al volver a desplegar me aparezcan los dos años, y no solo el que he elegido.

No sé si habrá otra opción más sencilla. Yo creo que esta que planteo no es demasiado complicada. Donde tengo el problema es a la hora de crear el filtro para la segunda columna con el número de registros.

¿Alguien podría ayudarme?

¡Gracias!


Editado por zelarra - 13/Diciembre/2020 a las 23:50
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6521
Enlace directo a este mensaje Enviado: 13/Diciembre/2020 a las 12:49
Hola!

Es difícil, por lo menos para mí, darte una respuesta precisa al no disponer de los datos. No obstante, pienso que con una consulta/s con criterios se pueda conseguir lo que pretendes.
Un Saludo.
Arriba
zelarra Ver desplegable
Habitual
Habitual


Unido: 21/Octubre/2020
Localización: España
Estado: Sin conexión
Puntos: 122
Enlace directo a este mensaje Enviado: 13/Diciembre/2020 a las 12:54
Hola si quieres puedo subir una demo
Arriba
zelarra Ver desplegable
Habitual
Habitual


Unido: 21/Octubre/2020
Localización: España
Estado: Sin conexión
Puntos: 122
Enlace directo a este mensaje Enviado: 13/Diciembre/2020 a las 13:12
Mira, aquí tienes la base de datos con datos


He intentado hacer una consulta, como tú dices, tomando el RecordSource del formulario, pero no sé cómo plantearlo para conseguir lo que quiero. Si pudieras darme una pincelada de cómo hacerlo, o algún ejemplo que tengas hecho que pueda servirme para fijarme, te lo agradecería.

Muchas gracias.


Editado por zelarra - 13/Diciembre/2020 a las 13:12
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14428
Enlace directo a este mensaje Enviado: 13/Diciembre/2020 a las 18:54
Mejor que pongáis todo por escrito, que de aquí a un tiempo los archivos se borran y las respuestas y el trabajo se pierden en el limbo.


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
zelarra Ver desplegable
Habitual
Habitual


Unido: 21/Octubre/2020
Localización: España
Estado: Sin conexión
Puntos: 122
Enlace directo a este mensaje Enviado: 13/Diciembre/2020 a las 18:58
Hola, Mihura. Te juro que me gustaría hacerlo, pero no puedo adjuntar ni imágenes ni archivos. No me da la opción. En una pregunta que hice hace algún tiempo lo comenté, pero quedó en nada.




Editado por zelarra - 13/Diciembre/2020 a las 19:03
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14428
Enlace directo a este mensaje Enviado: 13/Diciembre/2020 a las 19:11
No se pueden adjuntar archivos porque no queremos que se adjunten.

Se trata de que lo expliques con palabras, ... posteando el código usado, etc.

Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
zelarra Ver desplegable
Habitual
Habitual


Unido: 21/Octubre/2020
Localización: España
Estado: Sin conexión
Puntos: 122
Enlace directo a este mensaje Enviado: 13/Diciembre/2020 a las 19:12
Vale, vale. Entendido. Yo solo es que algunas veces me gusta apoyar lo que explico con imágenes, porque transmitirlo con palabras puede ser difícil. Aún así, muchas gracias.
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6521
Enlace directo a este mensaje Enviado: 13/Diciembre/2020 a las 23:06
Hola!

He creado dos consultas para en combo "Estado1", una de selección simple y otra sobre esta agrupada, lo mismo para el combo "Año añadido".
Y lo que hice es al actualizar un combo cambia el origen de la fila del otro.

Te reenvía la base de datos.

Espero que sea eso lo que quieres.

http://www.filebig.net/files/YeRgtHA3WT
Un Saludo.
Arriba
zelarra Ver desplegable
Habitual
Habitual


Unido: 21/Octubre/2020
Localización: España
Estado: Sin conexión
Puntos: 122
Enlace directo a este mensaje Enviado: 13/Diciembre/2020 a las 23:49
Sí, me vale. Muchas gracias, mounir.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14428
Enlace directo a este mensaje Enviado: 14/Diciembre/2020 a las 09:22
Antes de dar por cerrado el hilo, postead la solución dada.
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
zelarra Ver desplegable
Habitual
Habitual


Unido: 21/Octubre/2020
Localización: España
Estado: Sin conexión
Puntos: 122
Enlace directo a este mensaje Enviado: 14/Diciembre/2020 a las 10:04
Básicamente, lo que he hecho ha sido crear una consulta con los datos que quiero que muestre el desplegable, y ponerle en la condición el desplegable del formulario. Luego, en el formulario, solo hay que establecer el origen de la fila tomando como origen de la consulta la consulta creada al efecto, en el evento después de actualizar del desplegable anterior. No sé si he conseguido explicarme.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14428
Enlace directo a este mensaje Enviado: 14/Diciembre/2020 a las 10:19
Pues muestra como ha quedado esa consulta ....

Piensa en que tú eres un usuario que tiene un problema similar y está leyendo el hilo, ... ¿a que te vendría de perlas ver la consulta? ... pues eso Wink.
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
zelarra Ver desplegable
Habitual
Habitual


Unido: 21/Octubre/2020
Localización: España
Estado: Sin conexión
Puntos: 122
Enlace directo a este mensaje Enviado: 14/Diciembre/2020 a las 15:22
Sí, sí, disculpa. Aquí está:

SELECT TEstados.Estado, EscogerFechaAñadido([TLibros].[Estado],Nz([FechaAñadidoAComprar],0),Nz([FechaAñadidoAPendiente],0)) AS FechaAñadido1, Year([FechaAñadido1]) AS AñoAñadido
FROM TEstados INNER JOIN TLibros ON TEstados.ID = TLibros.Estado;

Private Sub AñoAñadido1_AfterUpdate()
    ActualizarDesplegables Me, , True
    Me.Estado1.RowSource = "SELECT Consulta3.Estado, Count(Consulta3.Estado) AS CuentaDeEstado, Consulta3.AñoAñadido FROM Consulta3 WHERE (((Consulta3.AñoAñadido) = [Formularios]![FBuscadorDeLibros]![AñoAñadido1])) GROUP BY Consulta3.Estado, Consulta3.AñoAñadido;"

    FilterForm Me, "Buscador"
End Sub

Muchas gracias, chicos, por la ayuda. No he podido escribir este mensaje hasta ahora. Normalmente habría podido al momento, porque tengo el ordenador al lado mientras estudio, pero se me ha liado la mañana un cosa bárbara.

De todas formas, para cualquier aclaración me podéis escribir, que si puedo ayudar, lo haré encantado.

Un saludo.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable