** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Filtrar formulario por dos campos
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoFiltrar formulario por dos campos

 Responder Responder
Autor
Mensaje
maserrano Ver desplegable
Colaborador
Colaborador


Unido: 02/Abril/2014
Localización: España
Estado: Sin conexión
Puntos: 690
Enlace directo a este mensaje Tema: Filtrar formulario por dos campos
    Enviado: 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.
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: 06/Febrero/2020 a las 00:07
Un Saludo.
Arriba
emiliove Ver desplegable
Administrador
Administrador


Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 5704
Enlace directo a este mensaje Enviado: 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.
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3071
Enlace directo a este mensaje Enviado: 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


Arriba
maserrano Ver desplegable
Colaborador
Colaborador


Unido: 02/Abril/2014
Localización: España
Estado: Sin conexión
Puntos: 690
Enlace directo a este mensaje Enviado: 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.
Arriba
maserrano Ver desplegable
Colaborador
Colaborador


Unido: 02/Abril/2014
Localización: España
Estado: Sin conexión
Puntos: 690
Enlace directo a este mensaje Enviado: 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 


Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3071
Enlace directo a este mensaje Enviado: 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
Arriba
maserrano Ver desplegable
Colaborador
Colaborador


Unido: 02/Abril/2014
Localización: España
Estado: Sin conexión
Puntos: 690
Enlace directo a este mensaje Enviado: 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
Arriba
maserrano Ver desplegable
Colaborador
Colaborador


Unido: 02/Abril/2014
Localización: España
Estado: Sin conexión
Puntos: 690
Enlace directo a este mensaje Enviado: 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'"
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: 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.
Arriba
maserrano Ver desplegable
Colaborador
Colaborador


Unido: 02/Abril/2014
Localización: España
Estado: Sin conexión
Puntos: 690
Enlace directo a este mensaje Enviado: 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.


Editado por maserrano - 07/Febrero/2020 a las 15:47
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable