Filtrar Consulta anexados por campo
Tengo un Formulario1 con 8 casillas de verificación, de Lunes a Festivo.
Tengo una Consulta de Datos Anexados que toma los datos de una tabla Clientes y los anexa en la Tabla Anexados.
Necesito ejecutar esa consulta de datos anexados filtrando según el día que haya seleccionado en el Formulario1.
He puesto en criterios del campo Lunes de la consulta lo siguiente...[Formularios]![Formulario1]![Lunes]
Y hasta aquí bien.
El problema esta en si pongo el mismo criterio en el campo Martes, Miércoles, etc.. [Formularios]![Formulario1]![Martes]
Al hacer esto, si marco la casilla Lunes, me filtra los clientes que tienen marcado tanto el Lunes como el Martes, no solo los del Lunes. Y así con el resto.
1 Respuesta
Me llama la atención la existencia de ocho posibilidades cuando (lo convencional) es que un ciclo de una semana solo tenga siete posibilidades (una semana = siete días (de lunes a domingo).
Para que Access interprete que día de la semana que le corresponde a una fecha se ha de utilizar la función Weekday que devuelve un numero (el día de la semana de domingo a sábado)
Lo correcto es que la condición a cumplir para el lunes es que el Weekday de la fecha sea un dos para el lunes, tres para martes ...
If Weekday([una fecha]) = 1.... 7 ==>> domingo , lunes, .....sábado
Se puede modificar el dato devuelto, por ejemplo si queremos que el uno se corresponda con el lunes, la función Weekday admite un parámetro para ello, como internamente el lunes = dos
If Weekday([una fecha], 2) = 1.... 7 ==>> lunes, martes, ..... domingo
If Weekday([una fecha], 5) = 1.... 7 ==>> jueves, viernes, ..... miercoles
Buenas. Gracias por tu respuesta.
Son 8 días porque en mi caso los festivos cuentan como un día más.
¿Esto qué me comentas es válido aunque sean casillas de verificación? Estoy tratando los días no como si fuesen días si no como si fuesen una "caracteristica", por ejemplo (Me lo invento)... Un cliente tiene caquetas Verdes (Lunes), rojas(martes), otro cliente puede tener (Verdes, Azules) etc.. cada color seria una casilla de verificación.
Muchas gracias.
Seria interesante conocer el proyecto y así ofrecer soluciones lo mas cercanas a la solución.
Pregunta: ¿Se puede seleccionar mas de una opción en cada consulta de datos anexados?
Una consulta espera un dato concreto como referente para crear la condición, generalmente un valor (el que contenga el objeto al que se hace referencia), pero en este caso no hay esa referencia, el/los objetos a los que se le llaman lunes, martes... devuelven lo mismo, un verdadero/falso.
Como solo nos interesa una parte de la fecha, en algún momento habrá que obtener esa parte y se puede hacer en la consulta (creando un campo calculado) que puede devolver el nombre o el numero de día de la semana.
D_Semana: Formato([dato-fecha], "dddd") ===>>> Lunes, Martes, Miércoles .....
D_Semana: DíaSemana([dato-fecha], 2) ===>>> 1, 2, 3 .....
Lo que si necesitara modificarse en el formulario para que 'devuelva' el dato que nos hace falta (sea un nombre 0 un numero) en lugar de el actual Si/No (o sus variaciones verdadero/falso ...)
Para una única selección podrían integrarse las actuales creando un 'grupo de opciones' que devolverá el seleccionado, la referencia en la consulta será el grupo de opciones. (No los objetos que agrupa).
Si se maneja VBA, las opciones y métodos son mas amplios, lo que he planteado en este post es lo que se puede hacer sin VBA y queda en el aire lo de 'festivo' porque lo habitual es que sean los domingos (a veces también los sábados o parte de ellos) y si se trata de los días festivos (que no sean domingos) tendrá que existir en alguna parte una tabla/calendario que nos permita conocer que fechas se consideran festivos (Navidad, primeros de año, festivos nacionales, religiosos o locales ...)
Buenas. Gracias nuevamente.
Igual plantee mal la pregunta enfocándola a días de la semana.
Rehago la pregunta por si así es más clara o se ajusta más a lo que yo busco y tiene otra solución.
Olvidémonos de los días de la semana, si quisiera filtrar la consulta por colores, ¿seria igual?
Quiero decir...
Pepito tiene los colores - Rojo SI - Verde SI - Azul NO (Campos si/no)
Juanito tiene los colores - Rojo SI - Verde NO - Azul NO (Campos si/no)
Manolito tiene los colores - Rojo NO - Verde NO - Azul NO (Campos si/no)
Quiero filtrar la consulta según Checkbox del formulario por ROJO y que me muestre (En este caso) PEPITO y JUANITO
Quiero filtrar la consulta según Checkbox del formulario por VERDE y que me muestre (En este caso) PEPITO
Quiero filtrar la consulta según Checkbox del formulario por AZUL y que me muestre (En este caso) NADA
Seria interesante conocer el proyecto y así ofrecer soluciones lo más cercanas a la solución
Por responder muy por encima a tu duda, esta enfocado a reparto, de ahí que me interese filtrar por días. Hay clientes que tienen entrega todos los días, otros solo dos días, otros solo fines de semana, otros solo festivos, etc..
El tema festivos por eso lo comparo con colores, porque realmente me da igual que el campo a filtrar se llame Lunes o Rojo. No es problema del día de la semana.
No se si he conseguido explicarme.
Gracias por vuestro tiempo.
Un saludo.
Por si sirve de ayuda pongo una imagen de como tengo la consulta..
Si borro Martes, todo bien pero si no....nada, no funciona.
Tal como se ha planteado la aplicación, se supone que los datos en las tablas no son booleanos, por lo que se tendrá que 'traducir' los datos seleccionados en el el formulario (mediante las casillas de verificación) a los datos equivalentes en la tabla o consulta.
Access no entenderá que un objeto independiente en un formulario (que se llame rojo o lunes es lo de menos) cuyo valor sea booleano, se corresponde con un color o con un determinado día.
En alguna parte habrá que 'traducirle' que si un objeto booleano esta activo (TRUE) se ha de tomar como referente el nombre del objeto (no su valor).
Habitualmente se espera que exista una relación entre el objeto de/en el formulario y la tabla (mediante el nombre) para poder comparar sus contenidos (que han de ser del mismo tipo).
Es por ello que en mi anterior respuesta 'descompuse' el valor de fecha (que es un numero complejo) para obtener un tipo de dato que se le supone compatible (el día de la semana que es un valor calculado).
Desconozco el nivel de dominio sobre Access (a momento actual), pero si desease filtrar por los posibles valores de/en un campo de una tabla o consulta, crearía un combo cuyo contenido fueran los valores únicos que contiene en ese origen de datos y para filtrar por uno de ellos simplemente lo seleccionaría.
Si la selección a crear fuera multiple (elegir mas de un color o día), en lugar de un combo utilizaría un cuadro de lista, tras hacer la selección se necesitará crear (mediante una Macro o VBA) una lista con los valores seleccionados para aplicarlos como filtro.
Con campos de tipo booleano, o bien hay una comparación directa (en la tabla hay tantos campos de tipo booleano como días o colores) o se tendrá que crear la relación/asociación.
En base a la imagen posteada...
Las condiciones escritas en una misma línea del generador de consultas, Access las interpretara como AND, para que las interprete como OR han de escribirse en líneas diferentes (por ello hay tantas líneas a disposición), es una formulación que podrías evaluar
Muchas Gracias de verdad.
Ya he podido solucionarlo, han sido muchos días y pruebas, no sabes como te lo agradezco.
Te pongo más o menos lo que he hecho y que me ha funcionado, seguro que no esta del todo bien pero me funciona.
He pasado el campo true/false a texto mediante cuadros y comandos, luego he escrito las condiciones en distintas lineas y me ha funcionado. (No me deja adjuntar imagen)
Me falta probar lo del cuadro de lista que me comentas pero de momento va bien la cosa.
Esto me abre muchas más posibilidades para otras cosas.
Muchísimas gracias.
Lamento que no puedas adjuntar imágenes para dar una idea más concreta del método aplicado en la solución, siempre puede aparecer una idea creativa (o un enfoque bajo otro punto de vista).
Sobre aplicar un cuadro de lista, en principio (estéticamente) ocupa más espacio que un combo por lo que para seleccionar un único elemento (de los que contiene) un combo tiene la ventaja de su expansión automática (el cuadro de lista siempre 'esta expandido') y por ello para 'hacer casi lo mismo' ocupa más.
La ventaja del cuadro de lista es que admite la selección múltiple, lo que para las ocasiones que lo permiten es muy útil.
- Compartir respuesta