Access - me pide parametros

 
Vista:

me pide parametros

Publicado por Joaquín Pascual (48 intervenciones) el 19/06/2007 22:10:44
Hola a todos:

Desde un formulario principal, con un botón de comando abro un form independiente, con una serie de combos también independientes, los cuales me sirben para seleccionar los datos por los cuales quiero filtrar el formulario principal, que dicho sea de paso tiene un subform.

Si en el primer combo (Pais) selecciono un dato y filtro funciona, me abre el form principal filtrado por el Pais que he seleccionado en el combo, si por el contrario selecciono cualquier otro combo que no sea Pais me pide que introduzca el parametro de ese combo, eje: selecciono el combo Periodo, introduzco el dato, filtro, me pide parametro, acepto abre el form principal, no muestra nada.

Los combos probienen cada uno de su tabla, da lo mismo que incluya en la SELECT solo el nombre del valor, como si pongo el ID, y el nombre ocultando el ID con, columnas 2, ancho 0cm;2.5cm, dependiente 1. Lo ideal seria cojer los datos de la misma tabla a la que pertenece el form principal y la del subform, pero como en estas tablas lo que se guarda es el ID, se hace muy complicado desplegar el combo y saber cada numero a que nombre pertenece, además tendria que incluir el DISTINCT ya que los datos de la tabla se repiten y el combo seria interminable.

La instrucción para que filtre es esta.

Private Sub cmdFiltrarInforme_Click()
DoCmd.OpenForm "Billetes", acNormal
Forms!Billetes.Filter = ""
Forms!Billetes.Filter = cadena
Forms!Billetes.FilterOn = True

'DoCmd.Close
End Sub

Deciros que cadena es una variable publica de tipo string.

a ver si veis el error donde esta, ya que yo no lo veo, más bien no veo nada ya de tanto mirar.Estoy abierto a cualquier otra solución, para realizar lo que quiero que al fin y al cabo es filtrar el form principal, la idea inicial hera tres botones en el principal.
1º- vaciar el form para introducir los datos que quiera.
2º- aplicar el filtro al form
3º- volver al form a su estado original, o quitar filtro.

No se si con este rrollo macabeo os habeis enterado de algo.

Saludos, Joaquín Pascual
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Filtrar formulario principal usando combos independientes

Publicado por Alejandro (4142 intervenciones) el 14/08/2023 16:22:00
Joaquín,

Parece que estás en el camino correcto para filtrar el formulario principal utilizando combos independientes en un formulario separado. El problema que estás enfrentando podría estar relacionado con la manera en que se construye la cadena de filtro y cómo se aplican los filtros en Access.

Aquí hay algunas sugerencias para ayudarte a resolver el problema:

1. Construir la cadena de filtro:
- Asegúrate de que la cadena de filtro (`cadena`) esté construida adecuadamente con las condiciones para los combos seleccionados. Puedes verificar la cadena en la ventana Inmediato en el editor de VBA para asegurarte de que contiene las condiciones esperadas.

2. Usar el evento de apertura del formulario principal:
- En lugar de abrir el formulario principal desde el botón de filtro, considera usar el evento `On Open` del formulario principal para aplicar el filtro automáticamente cuando se abra. Puedes usar una función para construir la cadena de filtro basada en los valores seleccionados en los combos independientes.

3. Evitar ventanas emergentes de parámetros:
- Si estás enfrentando ventanas emergentes de parámetros al aplicar el filtro, esto puede deberse a que Access no puede resolver algunas partes de la cadena de filtro. Asegúrate de que las expresiones sean válidas y estén correctamente construidas. Si estás utilizando nombres de columnas en las expresiones, asegúrate de que estén escritos correctamente.

4. Depurar el código:
- Utiliza mensajes de depuración (por ejemplo, `Debug.Print`) para mostrar información en la ventana Inmediato mientras pruebas el filtro. Esto te permitirá ver qué valores están siendo utilizados en la cadena de filtro y si hay algún problema.

Aquí hay un ejemplo de cómo podrías construir la cadena de filtro y aplicarla en el evento `On Open` del formulario principal:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub Form_Open(Cancel As Integer)
    Dim cadena As String
 
    ' Construir la cadena de filtro basada en los valores de los combos
    cadena = ""
 
    If Not IsNull(Me.ComboPais) Then
        cadena = "Pais = '" & Me.ComboPais & "'"
    End If
 
    If Not IsNull(Me.ComboOtro) Then
        If cadena <> "" Then
            cadena = cadena & " AND "
        End If
        cadena = cadena & "OtroCampo = '" & Me.ComboOtro & "'"
    End If
 
    ' Aplicar el filtro al formulario principal
    Me.Filter = cadena
    Me.FilterOn = (cadena <> "")
End Sub

Asegúrate de adaptar el ejemplo a la estructura de tu base de datos, nombres de controles y condiciones de filtro.

Recuerda realizar pruebas exhaustivas para verificar que el filtro se aplique correctamente y que no se generen ventanas emergentes de parámetros.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar