![]() |
Tabular consulta segun el nivel
Hola Foro:
Estoy Utilizando InterBase y Delphi 7 y Necesito hacer una consulta tabulada. Ahora hago Select nivel, Cuenta from plan de cuentas El Resultado es: Nivel Cuenta 1 Activo 2 Activo Corriente 3 Disponibilidades 4 Bancos 5 Banco PEPE 5 Banco Toto 5 Banco Pipo Necesito que el campo nivel haga un string para que quede algo así: Activo ..Activo Corriente ....Disponibilidades ......Bancos ........Banco PEPE ........Banco Toto ........Banco Pipo Por ahora se me ocurrió crear un campo "Espacios", donde guardo los espacios en blanco de acuerdo al campo nivel, pero no me gusta. ¿Alguna Idea? Desde ya gracias por su atención. |
La consulta está bien, lo que necesitas conseguir es que la visualización en pantalla salga "tabulada".
Si buscas información sobre el evento OnGetText en los foros verás que hay muchos ejemplos. Básicamente te permite modificar el valor que se visualiza de un campo cuando lo muestras en un DBGrid. (ej1, ej2,...); de esta forma lo único que debes hacer es añadir a tu valor X espacios por delante segun el campo nivel. Revisa también DupeString para montar una cadena de n espacios. |
Hola Carmelo, como te dice el amigo Neftali puedes utilizar el evento OnGetText de tu campo Cuenta y quedaría mas o menos así:
Saluditos |
Otra forma sería desde la propia SQL hacer un case para concatenar tantos espacios como nivel, así el programa cliente recibiría la información directamente para presentarla en el grid, listado, ... o donde sea.
Saludos |
los componentes Jedi traen un componente que se llama DBTreeView, que te podria servir, solo que necesita al menos 3 campos, 1 el id del padre, 2 id del elemento en si y 3 el texto o caption del elemento
|
Casi Casi !!!
Gracias por su ayuda. Estuve haciendo algunas pruebas y casi me sale.
Probando esto en MySQL sale bién :) select left('----------------------', (nivel )) + Cuenta from Cuentas Quise hacer el equivalente en InterBase, quedaría así: select Cast('----------------------' as Varchar(nivel ))||Cuenta from Cuentas Pero Varchar(nivel ) . No lo reconoce. :( Seguiré probando, Espero si a alguien se le ocurre una Idea. Porfavor... que no sea Migrar a MySQL. Saludos y gracias por las sugerencias recibidas. |
Te dejo una query para que la pruebes.
Probada en Firebird 2.0 Te queda de deberes concatenar los campos y poner los de tu tabla
resultado
Suerte ;) |
No .
Gracias fjcg02, pero esta debe ser una de las diferencias entre IbterBase y FireBird, me da:
"Token unknown - line 2, char 16 when" select case nivel when 1 then '-' when 2 then'--' when 3 then '---' end as nivel, Cuenta from cuentas No se... Gracias por sus aportes. |
En interbase funciona iif() ?
prueba substring('-------', 1,nivel) si es que la funcion existe. Un procedimiento almacenado ? ¿ Cambiar interbase por firebird ? ;-) Ya nos dirás. Saludos |
| La franja horaria es GMT +2. Ahora son las 00:48:26. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi