PDA

Ver la Versión Completa : consuta dinamicas en report builder


lledesma
17-04-2004, 17:11:55
Hola a todos:
Tengo una consulta cuya estructura es variable:

Idcliente
campo1
campo2
..
campon

y necesito poder generar en Report Builder un informe donde los campos de esta consulta esten como columnas

idcliente campo1 campo2 .. campo n
1............ xxx.......xxx..........xx
2............ yyy.......yyy.........yyy

es decir poder armarlo en forma dinamica. Es posible o tengo que armarlo directamente con las funciones de impresion de Delphi.

Muchas Gracias.

Rigg
20-04-2004, 23:23:52
Hola,


LbTitulo := TppLabel.Create(nil);
if( assigned(LbTitulo) ) then
try
LbTitulo.Name := 'NOMBRE';
LbTitulo.Caption := 'CAPTION';
...
...
...
LbTitulo.Band := Cabecera;
etc..

esto crea un objeto del tipo ppLabel, y luego lo pone en la cabecera del reporte... usalo como referencia para lo que quieres hacer. Tambien usa el objeto TppDBText para el detalle...

espero te sirva.

lledesma
21-04-2004, 16:11:19
Hola:

Antes que nada gracias. Te cuento que utilice el codigo que me indicas y cuando muestro el reporte( con Reporte.Printreport) no aparece nada. No entiendo bien lo de 'CABECERA' en tu ejemplo.

Rigg
22-04-2004, 22:31:07
Hola,
'Cabecera' hace referencia a la banda (TppBand) donde quieres que el objeto aparezca. En el ejemplo yo pongo la etiqueta en la banda llamada 'Cabecera' del reporte.

Saludos.

lledesma
23-04-2004, 00:40:32
hola:
En realidad 'Cabecera' lo reemplace como vos indicas pero igual no muestra nada. Si tenes otra sugerencia te agradeceria. Tambien utilice la propiedad Parent (sugerido por otro usuario) del objeto pero me da un error algo asi como 'propiedad de solo lectura'.

islu
26-04-2005, 11:47:12
Hola, yo quería hacer lo mismo que tú, y he encontrado este link donde lo explican :

http://www.digital-metaphors.com/Subpages/Products/Standard/CreateReports.html

Aqui tienes el cacho de codigo que yo he utilizado para mis pruebas, esta sacado de esa dirección :

[...]
lDBText1 := TppDBText.Create(Self);
lDBText1.Band := Report1.DetailBand;
lDBText1.spLeft := 2;
lDBText1.spTop := 0;
lDBText1.DataPipeline := DataPipeline;
lDBText1.DataField := 'Codigo';
[...]

"lDBText1.Band := Report1.DetailBand;" Observa esta línea, es lo que enlaza tú objecto con el informe.

Espero que te funcione. Saludos.