** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Filtro con valores booleanos
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Filtro con valores booleanos

 Responder Responder
Autor
Mensaje
JoseraGR Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 06/Octubre/2020
Localización: Granada
Estado: Sin conexión
Puntos: 31
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita JoseraGR Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Filtro con valores booleanos
    Enviado: 17/Marzo/2025 a las 17:16
Buenas

Una nueva cuestión que tengo al realizar un filtro mediante varios combos. Uno de ellos tiene valores booleanos (si, no). y al montar el filtro siempre me da error de valores no coinciden.

Este es una parte del código que tengo:

    If vDigitalizada <> "" Then
        If vDigitalizada = "Si" Then
            vDigital = True
        Else
            vDigital = False
        End If
        CFiltro = CFiltro & "and [Digital]=  vDigital  "
    End If

donde vDigitalizada es de tipo string, Digitasl y vDigital boolean.

Supongo que el problema esta en la parte de "and [Digital]=  vDigital  ", he probado varias combinaciones pero no atino a dar con la sintaxis correcta. 

Un saludo
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14428
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 17/Marzo/2025 a las 18:12
If vDigitalizada = "si" Then
CFiltro = CFiltro & " AND Digital <> 0"
  else
CFiltro = CFiltro & " AND Digital = 0"
End If 

En la pelea con distintos tipos de BD's ya me he acostumbrado a trabajar con el valor 0 = false y distinto de cero = True.


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

Access Aplicaciones
Tecsys.es
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14926
Opciones de entrada Opciones de entrada   Gracias (1) Gracias(1)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 18/Marzo/2025 a las 08:08
Hola,

Aparte de coincidir con Jesús en la creación de filtros booleanos, tu error podría estar en la concatenación para crear la cadena de filtro:

CFiltro = CFiltro & " and [Digital] = " & vDigital

Error 1 (posible): que CFiltro no acabara en un espacio y esa concatenación uniría "and" a la última palabra de la cadena CFiltro.

Error 2 (seguro): al tener el vDigital dentro de la cadena, no tiene ni idea de que le estás hablando

Error 3 (probable): la creación de cadenas de ese tipo pueden generar errores raros porque se pueden crear como Verdadero o True, cosa que Access no es capaz de asociar que son los mismos valores.

En definitiva, la opción que planta Jesús. Fíjate en todo lo que te ahorras. Tu tienes 9 líneas de código (+ la declaración de vDigital); Jesús solo 3.

Si quieres rizar el rizo, en 1 sola línea:

CFiltro = CFiltro & " AND Digital " & Iif(Nz(vDigitalizada, "") = "Si", "<>0", "=0")

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
JoseraGR Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 06/Octubre/2020
Localización: Granada
Estado: Sin conexión
Puntos: 31
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita JoseraGR Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 22/Marzo/2025 a las 19:51
Buenas
Probado con el código de Jesus y funciona correctamenet. Y si repasando todas las pruebas que he hecho hacia cosas raras con este tipo de datos.
Gracias y un saludo
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable