![]() |
Agregar Varios campos en la sentencia SELECT
Hola a Todos. Tengo un pequeño problema al hacer una consulta. Os comento:
Tengo una aplicación en la cual el cliente va a poder sacar un informe personalizado con rave. Esto consiste en que tengo un formulario con 10 CheckBoxs. Cada uno de ellos corresponde a los 10 campos que tiene mi tabla. Lo que necesito hacer es que se cree un formulario de impresion con esos campos. Es decir que si el cliente marca 5 campos, el select de mi consulta coja solo esos 5 para mostrarlos. El problema es que no se como hacer para que en la sentencia select aparezcan esos 5 campos. ya que las combinaciones pueden ser de muy diverso tipo. Por ejemplo: Si tengo marcado el primero (campo1) y el tercero (campo3), necesito que la consulta sea: SELECT campo1, Campo3 FROM tabla; Pero claro, tambien puedo coger el cuarto(campo4), el sexto (campo6) Y el noveno (campo9) y entonces seria: SELECT Campo4, campo6, campo9 FROM Tabla; Creo qeu no es muy complicado lo que pretendo, pero no consigo solucionarlo. a ver si alguien me puede echar una mano. Muchas gracias con antelación. Saludos. |
Pues no, lo que si será complejo es crear las cajas en el rave ;)
Saludos |
Hola,
El asunto puede enfocarse y solucionarse de diversos modos. Así a bote pronto se me ocurre utilizar un "CheckListBox" o "CheckBox", como dices, pero agrupados en un "TGroupBox". El siguiente código podría darte una idea de cómo iterar por un "CheckListBox", buscar los "Items marcados" e ir conformando la cadena "de los campos" que luego se incluirá en la cadena que contenga la consulta SQL en cuestión:
Y este otro código es similar al anterior, salvo que se utiliza un "GroupBox" y distintos "CheckBox" dentro del mismo, como queda dicho:
Disclaimer: Fíjate que en este segundo código fuente se asume que en el "GroupBox" sólo habrá "CheckBox"; que no se comprueba si nos topamos con otro tipo de controles, etc. En fin, es sólo para que te hagas una idea de una posible solución para el caso. |
Prueba a ver si te vale lo que pongo a continuacion:
siendo filtro una variable de tipo string. A lo mejor hay alguna manera de hacerlo mejor. Espero que te sirva. |
Solucionado
Muchas gracias!! Esto es exactamente lo que quería hacer.
Como aún me considero principiante, me atasco en cosas como esta, de tan fácil solución. Ahiiii tendré que estudiar más!!! Un saludo a todos!!! |
Que bueno ya lo has solucionado. Sin embargo me gustaría agregar mi comentario.
Para mi sería mucho más sencillo utilizar una TListCheckBox en lugar de CheckBoxes individuales para cada campo. Utilizando un Listcheckbox (como ya recomendó Dec) puedes tener una lista de 10, 30, o 50 campos, sin necesidad de tanto espacio en tu diseño, ni de escribir un If por cada checkbox que quieras comprobar, además, puedes utilizar un StringList para generar la lista de campos automáticamente:
Esto lo puedes utilizar para el número de campos que quieras. |
La franja horaria es GMT +2. Ahora son las 09:27:00. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi