Imprimir página | Cerrar ventana

Filtrar formulario por dos campos

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84986
Fecha de impresión: 27/Marzo/2026 a las 06:03


Tema: Filtrar formulario por dos campos
Publicado por: maserrano
Asunto: Filtrar formulario por dos campos
Fecha de publicación: 05/Febrero/2020 a las 23:51
Hola muy buenas.
Necesito filtrar los datos de un formulario por dos de sus campos. Estos campos son cuadros combinados del formulario y no sé filtrar por más de un campo. El filtro se aplicaría p.e. en un evento de clic de un botón.
Me pueden indicar cómo puedo hacerlo.
Gracias por adelantado.



Respuestas:
Publicado por: mounir
Fecha de publicación: 06/Febrero/2020 a las 00:07
Hola!

Mírate este hilo y descarga el ejemplo:-

http://www.mvp-access.com/foro/filtro-multiple-en-subform-desde-form_topic82308.html" rel="nofollow - http://www.mvp-access.com/foro/filtro-multiple-en-subform-desde-form_topic82308.html

-------------
Un Saludo.


Publicado por: emiliove
Fecha de publicación: 06/Febrero/2020 a las 00:25
Y como filtras por un solo campo, has oído hablar de los operadores AND y OR

Saludos.


Publicado por: rokoko
Fecha de publicación: 06/Febrero/2020 a las 07:44
Mira estos ejemplos
https://www.dropbox.com/s/xo2vqgqzicu0hw5/3%20filtros.rar?dl=0

Pon un rango de fechas, que esten en la tabla claro. Y luego utiliza los dos cuadros combinados


otro

https://www.dropbox.com/s/j8eyo7p1wc1o3jg/COMBOS%20TODOS%20EN%20CASCADA%20%2B%20filtro%20formulario.mdb?dl=0




Publicado por: maserrano
Fecha de publicación: 06/Febrero/2020 a las 13:46
Miro los ejemplos y comento.
Pero de momento no consigo que me funcione.
El caso es que los usuarios trabajan con Runtime y no sé configurar bien una barra Ribbon.
Antes, con 2003, configuraba un menú contextual (habilitado en el botón derecho del ratón) para las funcionalidades básicas, y me funcionaba con el mde (runtime).
Ahora tengo que dejar en comandos los controles básicos como ordenar registros, filtrar, etc.
..., y es que no consigo filtrar por dos campos a la vez.
Pero, veo los ejemplos y me pongo a ello.
Gracias.


Publicado por: maserrano
Fecha de publicación: 06/Febrero/2020 a las 23:37
Debido a las restricciones mencionadas (la aplicación se abre con Runtime), he conseguido algo,  filtrar por un campo. Veamos:
En el formulario que quiero filtrar por un campo coloco un botón de comando que a su vez me abre un formulario con un combo (cuadro combinado) con los datos que quiero filtrar como primer filtro. En el evento después de actualizar este cuadro combinado tengo el siguiente código:

Private Sub cbo_BuscaEntidad_AfterUpdate()
        'Creamos la variable y le asignamos el valor
    Dim vEntidad As Variant
    vEntidad = Me.cbo_BuscaEntidad.Value
        'Si no hay valor sale del proceso
    If IsNull(vEntidad) Then Exit Sub
    
    DoCmd.OpenForm "FRegisbal", , , "[CodEntidad]='" & vEntidad & "'"
    DoCmd.Close acForm, Me.Name
End Sub

Lo que no consigo es concatenar el siguiente filtro (a la vez) en el DoCmd.OpenForm; además, en este filtro sólo hay dos valores con lo que el filtro sería fijo (siempre el mismo valor):
Los dos valores son:
173/2001
281/2002
Sería filtrar siempre por el mismo valor "281/2002".
También supongo que debe ser con el operador AND... pero no me sale el código, pruebo y no me filtra o, me da error en la sintaxis...
Alguna sugerencia?
Gracias de nuevo 




Publicado por: rokoko
Fecha de publicación: 06/Febrero/2020 a las 23:45
Y si ese formulario lo basas en una consulta como origen de los datos, y esta la utilizas para filtrar. Que pille ese valor fijo y el otro del del cuadro combinado. Actulalizas el formulario y te mostrara los datos que quieres.

Los ejemlos que te he puesto si no recierdo mal lo hacen asi......es relativamente sencillo, una vez viendo como funcionan.

Saludos


Publicado por: maserrano
Fecha de publicación: 07/Febrero/2020 a las 13:31
Pues no sé relacionar consulta y formulario y que me muestre el mismo actualizado.
Voy a ver si "destripo" el funcionamiento de esas consultas.
Salu2


Publicado por: maserrano
Fecha de publicación: 07/Febrero/2020 a las 14:08
Que hay de error en esta línea de código??

DoCmd.OpenForm "FRegisbal", , , "[CodEntidad]='" & vEntidad & "' AND TipoDecreto = '281/2002'"


Publicado por: mounir
Fecha de publicación: 07/Febrero/2020 a las 14:34
Hola!

Guarda este valor en una variable y así evitas este problema:-

Private Sub cbo_BuscaEntidad_AfterUpdate()
    'Creamos la variable y le asignamos el valor
    Dim vEntidad As Variant
    Dim stValor As String
    stValor = "281/2002"
    vEntidad = Me.cbo_BuscaEntidad.Value
        'Si no hay valor sale del proceso
    If IsNull(vEntidad) Then Exit Sub
    
    DoCmd.OpenForm "FRegisbal", , ,"[CodEntidad]='" & vEntidad & "' AND TipoDecreto = '" & stValor & "'"
    DoCmd.Close acForm, Me.Name
End Sub


-------------
Un Saludo.


Publicado por: maserrano
Fecha de publicación: 07/Febrero/2020 a las 15:47
Muchas gracias.
Supongo que me falta destreza. 
Al final también intenté declarar la variable del valor del combo y también me funcionó.
Lo que no entiendo es que eso mismo lo probé al principio y no funcionaba y me desesperaba. AL final es lo mismo, te falta o te sobra algo...
Lo que yo he propuesto es:

Private Sub cbo_BuscaEntidad_AfterUpdate()
      
    Dim vEntidad As Variant
    Dim vDecreto As Variant

    vEntidad = Me.cbo_BuscaEntidad.Value
    If IsNull(vEntidad) Then Exit Sub

    vDecreto = Me.cbo_BuscaDecreto.Value
    If IsNull(vDecreto) Then Exit Sub
    
        'Abrimos el formulario filtrado por entidad y decreto
    DoCmd.OpenForm "FRegisbal", , , "[CodEntidad]='" & vEntidad & "' And [TipoDecreto]='" & vDecreto & "'"
    DoCmd.Close acForm, Me.Name
End Sub

Gracias. Se puede cerrar el hilo.



Imprimir página | Cerrar ventana