FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Filtro por selección en dbGrid.
Hola a todos,
A ver si esto se puede hacer de alguna forma. Tengo un dbGrid donde muestro una query entre varias tablas de una bd Access. Estoy haciendo para el dbGrid el mismo sistema de filtrado que tienen las tablas access cuando hacemos click con el botón derecho en una celda y se selecciona "Filtro por selección" para filtrar todos los registros por ese campo y por ese valor. Al hacer click cojo el nombre del field, el valor y el tipo de dato que contiene y creo la condición de la qry para hacer el filtro. El problema viene porque la qry es sobre tablas que tienen campos que se llaman igual, y al contruir la condición y ejecutar la query, me da el mensaje de que el nombre del campo se encuentra en varias tablas del from. Lo que estoy intentando ahora es cojer el nombre de la tabla en que se encuentra el campo, pero no se si esto se puede. El nombre de la tabla aparece en la qry. ¿sabéis como se puede hacer esto? Otra solución es cambiar el nombre de los campos que coinciden, pero son tablas que intervienen en muchos sitios y quiero ver otra opción antes. Bueno, muchas gracias de antemano a todos. Un saludo.
__________________
Setry2 Eres un bit? www.lafesta.com |
#2
|
||||
|
||||
Hola... no trabajo con access pero en paradox hago lo siguiente (quizas se pueda en access o al menos podría ser un comienzo)
Cuando tengo campos con igual nombre en otra tabla y necesito traer ambos campos renombro los campos en el query como te muestro en el ejemplo. Lo que resalté en rojo lo agregué en el query y de esa manera identifico que "saldo" por ejemplo corresponde a la tabla de Facturas Saludos
__________________
Por qué todas las personas saben exactamente cómo debemos vivir nuestra vida, y nunca tienen idea de cómo deben vivir sus propias vidas.
|
#3
|
|||
|
|||
El problema está al contruir la condicion de la qry.
Muchas gracias Pablo, pero el problema esta al construir la condicion de la qry, que no se como especificar desde el grid a que tabla pertenece el campo.
Cuando filtro por el contenido (valor) de una celda (campo) del grid, añado a la condicion lo siguiente: Where campo like valor, variando la construcción según el tipo de dato de valor. El problema esta cuando filtro por un campo que se llama igual en varias tablas de las que utilizo en esa misma query, que para que funcione la condición debería aparecer la tabla a la que pertenece el campo: Where tabla.campo like valor Es el nombre de la tabla el que intento acceder directamente desde el grid para añadirlo a la condición y no me de problemas al filtrar, pero no se si eso es posible. Seguimos la pista a ver. Un saludo.
__________________
Setry2 Eres un bit? www.lafesta.com |
#4
|
||||
|
||||
bueno, una solución que se me ocurre es usar alias en el query tanto para los nombres de los campos como para las tablas.
Asi, por ejemplo, si tenemos un campo llamado CODIGO repetido en varias tablas al hacer la consulta escribiriamos:
donde xxx será la condición del filtro. Ahora los campos de nuestra query ya no se llamaran CODIGO, CODIGO_1 sino A__CODIGO y B__CODIGO, entonces a la hora de modificar el SQL para aplicar el filtro haremos una comprobación de si el campo empieza por A__ o B__ y en general si empieza por una letra y dos guiones bajos, si es asi lo sustituimos por un "A." o un "B." Con lo que al final obtendremos automaticamente:
por supuesto a la hora de esctibir la consulta tendremos nosotros de tener cuidado de no olvidar el "__" en los campos repetidos. Nose, es solo una idea, espero que te ayude
__________________
todo el mundo debe creer en algo... yo creo que voy a tomarme otra copa. |
|
|
|