![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Como has visto tuve que irme repentinamente, así que solo mostré un esbozo de lo que tenía en mente.
En el mensaje nº 6 de este hilo tienes algo que igual te sirve, o por lo menos te ayuda un poco. Se trata de un TStringlist mejorado para crear sqls al vuelo, así te olvidas un poco de los espacios en blanco, de si debe llevar el where o no, etc. "Te permite concentrarte un poco más en tu programa olvidándote de la sintaxis del SQL". Como verás, no es nada del otro mundo. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#2
|
|||
|
|||
|
Consultas y/o filtrados multiples
Observa mi pantalla para que te de una idea.
|
|
#3
|
|||
|
|||
|
Consultas y/o filtrados multiples
Hola
Mamu o Lepe Esta es parta de mi form para que tenga una idea Última edición por aanil fecha: 08-02-2010 a las 04:56:30. |
|
#4
|
||||
|
||||
|
Hola aanil no soy Lepe pero he visto tus dudas y creo que estás enfocando mal el problema.
Por empezar no sería adecuado el uso del TCheckBox, si mo más bien el del TRadioGroup. Con esto puedes garantizar de que elija una u otra opción o ninguna. El truco consiste en armar el SQL a partes. Ante la pulsación de un Cick sobre el TRadio se arma diversas cadenas parciales que luego serán añadidas a la parte where de la consulta. Por ejemplo:
where_opcion1 es una variable del tipo string que por defecto asumirá el valor vacio. Este proceso puede extenderse a todas la combinaciones posibles. Como puedes observar en ningún momento estoy asignando la SQL, la estoy armando a partes. Ahora es necesario contar con algún medio para confirmar las opciones. De este modo se puede asumir que es aquí cuando armamos la SQL y la podemos asociar al Query. Por ejemplo ante la pulsación de un TButtom:
En el ejemplo, string_select es un string que almacena la parte select. Algo como el "select ... from ....." y asumí que hay dos opciones para agregar a la consulta. Volviendo atrás, he dicho que por defecto las cadenas where_xxxx están seteadas a vacio. De este modo garantizas que si no se ha optado por alguna selección el sql quede formado únicamente por la parte string_select. Creo que esto puede serte de ayuda para comprender mejor el tema. Igualmente recomiendo que mejores el código ya que existe un denominador común en tu código y se repite... Saludos, |
|
#5
|
|||
|
|||
|
Hola Delphius
Voy a comenzar a probar. Luego te comento |
|
#6
|
|||
|
|||
|
Hola Delphius
Te cuento que no me funciono o no entendi bien. Mas arriba esta una imagen de lo que quiero hacer Pues en la consulta debo de tomar varias alternativas que son muy combinadas. Fijate en la imagen. |
|
#7
|
||||
|
||||
|
Hola aanil,
Sin ver tus nuevos avances no te sabría como ayudarte. Como te he dicho antes, el "truco" está en trabajar con los eventos de los controles y en base a esto ir armando la consulta por partes. Una vez que el usuario haya especificado sus criterios se concatenan las partes para formar una única consulta. He preparado un ejemplo similar al enfoque que te he dicho, la diferencia es que en los eventos adecuados voy seteando ciertas banderas con un valor TRUE o FALSE y al final existe una función GenerateSQL que va leyendo dichas banderas y dependiendo de su valor va guardando en un string adecuado uno u otro valor. De cualquier manera el proceso termina con una concatenación de strings y se obtiene una consulta SQL ya sea con o sin condiciones where. He cambiado ligera e intencionalmente un poco la "filosofía" para que descubras donde está tu problema. He visto la imagen... y puedo decirte que el diseño de emplear TCheckBox no es el más adecuado para condiciones mutuamente excluyentes, para ello es mejor emplear un RadioGroup. Por ejemplo, al elegir Sector uno puede optar por Público o Privado... pero no por ambos. En sintesis, la idea es: 1. Tener en una variable, campo o propiedad un string que almacene la SQL sin condiciones. 2. Tener por cada condición posible una variable string para guardar el valor. 3. Cuando el usuario cambia o elije algún criterio se altera el string correspondiente a dicha condición. 4. Cuando se valida la operación se genere la SQL final. Espero que ahora se entienda la idea. |
|
#8
|
||||
|
||||
|
Cita:
Lo único que no entiendo es que pasa si no existe ningúna selección de checkboxes, que devuelve? Porque existen resultados poco probables, por ejemplo: dudo que haya un Sector(Privado)-Nivel(Inicial)-Zona(Urbana Marginal)-Tanta(Nocturna) simplemente porque dudo mucho que haya una institución privada, que de clases a infantes en un horario nocturno y dentro de una zona marginal, es poco probable, aunque no imposible. El cometido de mi ejemplo, es para que el filtro sea aplicado a las condiciones de selección, y asi reducir la cantidad de checkboxes y variables de filtro para la configuración final de la sintáxis del sql resultante. Fijate la redundancia: Del grupo Sector, seleccionar PUBLICO y seleccionar PRIVADO, es exactamente lo mismo que seleccionar cualquier Sector, es decir, todos los sectores. Espero que hayas captado mi idea, quizas te sirba de algo. Saludos
__________________
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Contar registros filtrados con TDbf | userlazarus | Conexión con bases de datos | 5 | 28-10-2015 11:02:21 |
| Imprimir datos filtrados de un cxgrid | DANY | OOP | 7 | 19-06-2014 18:16:01 |
| Consultas Múltiples | theloren07 | Conexión con bases de datos | 11 | 12-07-2007 16:24:32 |
| como mostrar consultas multiples en un dbgrid?? | yo_coco_py | SQL | 6 | 27-01-2007 14:00:31 |
| Conocer el tamaño de los datos filtrados en delphi | royrogers84 | Firebird e Interbase | 1 | 18-11-2006 23:14:26 |
|