PDA

Ver la Versión Completa : Como hago un reporte para que salgan todos los campos del query? (Rave)


cascarrabias
27-03-2008, 23:43:49
Buen dia, pues la cosa es que he estado practicando y conociendo el como usar rave reports y todo sale muy bien pero, tengo un problema que no se solucionar, el caso es que en mi aplication, al cliente le dare la opcion de seleccionar una tabla de mi dbb la que el guste y generar un reporte de sus campos, la cuestion la puedo lograr ahorita facil, poniendo textos y sus correspondientes data text components ligandolos a los campos de las tablas mediante el dataview y datafield de cada uno, entonces todo ok :), el problema surge que en mi aplicacion el cliente durante su utilizacion el crea tablas y campos segun sus necesidades y necesitaria reportearleas como les decia...el punto es...como dejo el codigo en rave reports si no conozco como sera la estructura de dichas tablas????? porque como dije el cliente sera quien las ira creando con el tiempo, entonces hay alguna manera de dejar configurado el rave report a que reportee todos los campos de la tabla??? como informacion adicional, las tablas siempre por default se les agregaran 3 campos, Id, nombre y imagen, osea, esas si las conozco, pero habra otros campos que el cliente habra insertado( alterado) el mismoo, y es lo que no se como dejar en rave reports.....
ayudaria creo aunque sea que le pudiera decir a rave reports que me reporteara el contenido de un dbgrid, y tal vez asi no abria tanto problema....bueno gracias y espero me haya dado a entender!

Pavel

cascarrabias
27-03-2008, 23:46:32
Perdon una segunda duda, hay alguna manera en que pueda utilizar jpg con rave report??? porque guardo la imagen pero en formato jpg para que no pese tanto en la bdd, pero rave me marca error con los jpg???? gracias.

Lepe
28-03-2008, 02:00:17
Espero tengas el código fuente de Rave, o mira en su web a ver cómo se crea un informe en tiempo de ejecución y cómo se configura.

No sé si habrá algún componente o rutina que lo encapsule. QuickReport tenía la rutina qrCreateList, Rave, será totalmente distinto, pero:
- O tiene ya una rutina que lo haga dentro de una unidad un poco escondida.
- O tiene algún ejemplo de cómo empezar.

El código suele ser así:

var R:TRaveReport
Banda : TRaveBand
Data :Tdataview;
begin
R := TraveReport.Create(self);
R.Dataset := query1; // esto suele ser más complejo que una linea de código :D
Banda := R.Bands.Add;
Banda.BandType := bandaDetalle;
for i:=0 to query1.fields.count-1 do
begin
Data := Banda.Addcomponent(Tdataview);
Data.SetBound (0, 60* i + 3 , 60, 20);
Data.Expression := query1.Fields[i].FieldName;
end;

R.ShowReport;
R.Free;
end;


Me he inventado 3/4 partes del código :D, pero esa es la filosofía, ir creando cada banda y cada Dataview al vuelo, según los campos que se quieren imprimir.

Saludos.

cascarrabias
28-03-2008, 03:04:29
Ok, grax, lepe, lo estare checando, haber si encuentro alguna solucion, o existe algun otro generador de reportes? habra alguno donde se pueda generar un reporte segun datos del form? osea que no sean mediante querys sino digamos de un string grid, o de edits, bueno....saludos y gracias

Lepe
28-03-2008, 13:03:41
Que yo sepa, todos los generadores de informes que vienen con Delphi son "versiones recortadas" o bien, tienen después una versión de pago etiquetada como "professional".

Si no recuerdo mal, con las nuevas versiones de delphi viene "Rave Report BE" (Borland Edition), que ya te está diciendo que es versión recortada.

Lo nuevo que pides, en caso de quickReport se llama OnNeedData, es un evento al que le pasas cada valor que quieres imprimir. Normalmente se usa para imprimir sin estar conectado a Bases de datos. Por supuesto lo tendrá todos los generadores de informes. Incluso FreeReport tiene esa opción.

Yo de momento no he usado esa característica.

Saludos

cascarrabias
28-03-2008, 22:39:40
Que yo sepa, todos los generadores de informes que vienen con Delphi son "versiones recortadas" o bien, tienen después una versión de pago etiquetada como "professional".

Si no recuerdo mal, con las nuevas versiones de delphi viene "Rave Report BE" (Borland Edition), que ya te está diciendo que es versión recortada.

Lo nuevo que pides, en caso de quickReport se llama OnNeedData, es un evento al que le pasas cada valor que quieres imprimir. Normalmente se usa para imprimir sin estar conectado a Bases de datos. Por supuesto lo tendrá todos los generadores de informes. Incluso FreeReport tiene esa opción.

Yo de momento no he usado esa característica.


Saludos


Ok, gracias companiero, cual cres que me convenga probar? los dos son libres?
Fijate que de momento por cuestiones de tiempo, mejor me hice el reporte con un componente llamado Power Pdf, con el cual pude recoger los datos sin especificar los nombre de los campos mediante un un loop y Fieldcount, la ventaja fue que esto si me lo permitio power pdf , aunque no es muy vistoso y trae muy muy pocas opciones, pude armarme con un buen reporte, yo supongo y mas que tu me lo afirmas que esto se ha de poder hacer en un buen reporteador pero como te dije, pss el tiempo anda sobre mi, y pues ya me libre de lo del reporte...bueno...muchas gracias de nuevo por tu tiempo!

MaMu
31-03-2008, 17:56:55
Yo necesite lo mismo para una aplicación de impresión. Lo que hice, es hacer un reporte por cada tabla que habia en la DB, y luego, simplemente linkear el DS al query correspondiente a la consulta de cada tabla. Pareciera algo bastante engorroso, pero con copy/paste se agiliza bastante. El resultado final, segun la tabla que quiciera imprimir, fue:


Report1.ExecuteReport('Tabla1',True);
...
Report1.ExecuteReport('Tabla2',True);
...
Report1.ExecuteReport('TablaN',True);
...


Como dice Lepe, la versión de Rave esta muy recortada y limitada. Si bien se pueden generar los reportes por código, estos no dan el mismo resultado que en la version paga.

Saludos