Ejec. Consulta a partir de campo opcion de form

Buenos días,
Tengo una bd para gestionar partes de trabajo que pueden tener dos estados, abierto y cerrado. Para ello tengo una tabla con un campo booleano. True si el parte está abierto y False si está cerrado.
Desde un formulario ejecuto una consulta para que me filtre los partes. El caso es que a veces necesito saber qué partes tengo abiertos, otras los que tengo cerrados y otras los dos a la vez.
Para ello se me ha ocurrido poner un campo opción con 3 valores: Todos (1), Abiertos (2) y Cerrados (3). En el código tengo un SELECT CASE que me guarda, en función del valor del campo opción, un valor en una variable tipo Variant. Si marco TODOS guarda *, si marco ABIERTOS guarda Verdadero y si marco CERRADOS guarda Falso. Ese valor que guardo, lo meto en un campo texto del formulario y me lo llevo a la consulta así CCadena([Formularios]![Filtro]![Texto28])
Cuando marco Abiertos o Cerrados, la consulta se ejecuta correctamente. Pero cuando marco Todos me sale el siguiente mensaje "La operación OpenForm se canceló".
Y no tengo ni idea de cómo solucionarlo.
Mil gracias.

1 Respuesta

Respuesta
1
El problema es el signo "*", entiendo que la consulta lo que te te esta buscando es los registros que en ese campo tengan un * y lógicamente no te devuelve ninguno. Si tu creas una consulta y en elos parámetros de selección pones * verás que access te lo cambia directamente por : Como "*". La traducción del como para VBA es "like".
Yo te propongo otra solución mucho menos compleja y sin necesidad de ningún código ni de guardar ninguna variable, ni select case.
En vez de un control opción con tres valores, coloca un cuadro combinado, con 2 valores: ABIERTOS, CERRADOS (o ABIERTO, CERRADO, que supongo que es lo que pondrás en el campo correspondiente en cada parte de trabajo).
Luego en la consulta pones:
Como "*" & [forms]![Filtro]![Texto28] & "*"
Suponiendo que el formulario desde dónde buscas se llame FILTRO y el cuadro combinado que te he comentado se llame TEXTO28.
Haz la prueba y verás que pongas lo que pongas te mostrara lo que quieres y si lo dejas en blanco, te mostrara todos.
Un saludo.
Mi Web Mi Blog Mi Foro
Hola de nuevo, muchas gracias por contestar tan rápido.
El campo que utilizo para indicar si el parte está abierto o cerrado es un campo booleano. Entiendo entonces que los valores del cuadro combinado este que me dices deben ser Verdadero y Falso.
Lo he probado y si lo dejo en blanco si me los saca todos pero cuando selecciono Verdadero (dando por hecho que los verdaderos son los abiertos y los falsos los cerrados) o Falso no saca nada. He probado con True y False y tampoco.
La definición campo Booleano esta bien para el código BVA, pero si cómo creo, en el formulario tienes una "casilla de verificación" el resultado que te arroja es "-1" o "0".
Prueba a ver y me cuentas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas