No me filtra por una y por otra si

Estoy hecho un lió que seguro que sera alguna tontería pero que no se ver, tengo esta instrucción en un botón Pagadas

If Me.PagadoSiNo = -1 Then
DoCmd.OpenForm "General", , , "[PagadoSiNo] = " & Me.PagadoSiNo
End If

y esta otra en en el botón Pendientes

If Me.PagadoSiNo = 0 Then
DoCmd.OpenForm "General", , , "[PagadoSiNo] = " & Me.PagadoSiNo
End If
El botón Pagadas funciona bien pero el botón Pendientes no filtra, me he dado cuenta que si marco las casillas de verificación de pendientes a pagadas y vuelvo a Pendientes si filtra pero solo una vez.

¿Alguien sabe porque?

2 respuestas

Respuesta
2

Los campos SI/NO, realmente tienen tres "posiciones"

-1 Cuando la marcas

0 cuando la desmarcas

Nulo, si no "has tocado nada"

Por eso es conveniente, en la tabla cuando añades un campo SI/no ponerle como valor predeterminado No

Si no le dices nada, cuando lo abres verás la casilla con un pequeñísimo cuadro negro dentro, eso es que su valor es nulo

Si no lo quieres cambiar puedes poner la instrucción

If PagadoSiNo = 0 or Pagadosino is null Then
DoCmd.OpenForm "General", , , "[PagadoSiNo] = " & Me.PagadoSiNo
End If

hice todos los cambios posibles y nada sigue igual

si marco y desmarco el pendiente me funciona una vez filtrado tengo un botón donde quita el filtro con esta instrucción

DoCmd.Close acForm, "General"
DoCmd.OpenForm "General"

y doy clic en Pendientes y ya no funciona, lo curioso es que tengo unas etiquetas Pagadas y Pendientes y esto si funciona pero el filtro no.

Probando encontré que si marco cualquier cuadro de texto de la línea la cual esta pendiente si funciona y me he dado cuenta que lo mismo pasa con las pagadas parecía que funcionaba porque al abrir el formulario ya marcaba la línea de pagadas

he puesto la instrucción el la etiqueta Pagada y Pendiente y funciona bien y  con el botón no funciona, no encuentro el motivo.

Primero te explico lo que te apuntaba de los valores, si hago un grupo de opciones( es sólo para el ejemplo)n con el asistente y no le digo nada, le pone como valor predeterminado 1, que equivale a Nulo y te muestra el cuadradito que te decía

Por el contrario, si le digo que el valor predeterminado es o, equivale a "no marcada"

Bueno, vamos a suponer que tengo la tabla Clientes con el campo Pagadosino, donde le digo que el valor predeterminado es No, o sea 0. Fíjate que sólo me han pagado 4 tíos. ¿Cómo voy a sostener el negocio?

En el formulario anterior le añado dos botones

Si pulso pagado Sí

Por el contrario, si pulso PagadoNo

Dios mío ¡¡ que ruina !!

El código de los botones es

Private Sub Comando123_Click()
DoCmd.OpenForm "clientes", , , "pagadosino=-1", , acDialog
End Sub
Private Sub Comando124_Click()
DoCmd.OpenForm "clientes", , , "pagadosino=0", , acDialog
End Sub

Tu código no tiene porque ser igual. Lo he puesto para que veas que el código "obedece" a lo que le digo. No faltaría más, el jefe manda.

Respuesta

Otra opción que te funcionará lo mismo para cuando no está marcada:

If Me.PagadoSiNo <> -1 Then
DoCmd.OpenForm "General", , , "[PagadoSiNo] <> " & Me.PagadoSiNo
End If

Vaya! Acabo de darme cuenta de que te puse mal la condición del filtro. Sería así:

If Me.PagadoSiNo <> -1 Then
DoCmd.OpenForm "General", , , "[PagadoSiNo] <> -1"
End If

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas