RE: Tabulacion en ireport
"esmeralda987" <esmeralda987-/[email protected]>
| Newsgroups | gmane.comp.java.javaspain |
|---|---|
| Message-ID | <[email protected]> |
Muchas gracias por tu aporte, lamentablemente no es una solucion valida para mi ya que no puedo modificar la consulta a la base.
No encontre otra opcion por ahora, asi que lo que se me ocurrio fue lo siguiente:
Cree un parametro llamado vacio que contiene solo espacios y luego cuando quiero mostrar el nombre del nodo, utilizo la siguiente expresion
$P{vacio}.substring(0, $F{nivel}.intValue() * 7) + $F{nomNodo}
y asi logro lo que necesito. Multiplique por 7 por que es una cantidad razonable de espacios y parece tabulado :)
De todas formas, espero encontrar una mejor solucion.
Saludos, Esmeralda
--- En [email protected], Calabaza <calalinux@...> escribió:
>
> El día 24 de abril de 2009 16:25, esmeralda987
> <esmeralda987@...> escribió:
> > Hola, tengo la siguiente duda haber si me pueden ayudar.
> > Se puede hacer en ireport una "estructura de arbol"
> > automaticamente? (sin tener que poner difentes field
> > con distinta identacion).
>
> No se...
>
> > Por ejemplo
>
> > Node 1
> > ---Node 1.1
> > ---Node 1.2
> > Node 2
> > Node 3
> > ---Node 3.1
> > ------Node 3.1.1
> > ------Node 3.1.2
> > ---Node 3.2
>
> > Lo unico que se me ocurre es poner varios field
> > pero no se en realidad cuantos niveles puedo llegar a tener
> > y esa solucion no me sirve.
> > Yo recibo una variable que indica el nivel al que debe
> > estar ese registro,
> > por ejemplo: nivel = 1, nivel = 2, etc..
>
> > Alguien sabe como hacer esto?
> Yo lo haría con sql de esta forma:
>
> Primero mi motor de BD es:
> PostgreSQL 8.3.7 on i486-pc-linux-gnu,
> compiled by GCC gcc-4.3.real (Debian 4.3.3-5) 4.3.3
>
> Luego este es el script de prueba que hice:
> CREATE TABLE prueba
> (
> id serial NOT NULL,
> texto character varying(50),
> nivel integer,
> CONSTRAINT prueba_pkey PRIMARY KEY (id)
> )
> WITH (OIDS=FALSE);
> ALTER TABLE prueba OWNER TO calabaza;
>
> Estos son los datos que tiene cargado:
> Select * from prueba;
> 2;"nodo 2";1
> 1;"nodo 1";1
> 3;"nodo 3";1
> 4;"nodo 1.1";2
> 5;"nodo 1.2";2
> 6;"nodo 3.1";2
> 7;"nodo 3.2";2
> 8;"nodo 3.1.1";3
> 9;"nodo 3.1.2";3
>
> Y este select puedes usar para tu reporte:
> SELECT
> id,
> repeat(' '::text, nivel)||''||texto as texto_identado,
> nivel
> FROM prueba
> order by texto;
>
> Y para que salga bien, en tu reporte
> debes usar una fuente de ancho fijo.
>
> > Muchas gracias, Esmeralda
>
> Por nada.
>
> Exitos.
> --
> §~^Calabaza^~§ from Villa Elisa, Paraguay
>