Ir al contenido


Foto

Ayuda para hacer un reporte simple con LazReport pasando variables.


  • Por favor identifícate para responder
3 respuestas en este tema

#1 martinartaza

martinartaza

    Advanced Member

  • Miembros
  • PipPipPip
  • 159 mensajes
  • LocationArgentina, Tucuman

Escrito 05 agosto 2011 - 06:27

Hola querida comunidad, le comento que estoy tratando de usar LazReport desde lazarus y tengo un problemita que no se como sobrellevar, si alguien me tira un gancho me vendría bien.

En mi projecto tiro un frreport1 y un frdesigner1 (más adelante quiero hacer el diseño).
Le hago doble clic al frreport1 y creo el reporte, tirando 2 bandas, en la primera tiro 1 objeto que contiene el titulo, en la segunda banda tiro otro objeto que dice "Nombre del paciente:", si ahora le doy clic a preview, va todo bien, pero luego me voy a "Archivos->Lista de variable" y creo una variable llamada Nombre y si le doy preview todo bien, perrroooooo, si tiro otro objeto y adentro escribo [nombre] y luego le doy preview me sale el siguiente error: "Ocurrio un error durante el calculo [nombre] Reporte frreport1 [aceptar]"
sin embargo guardo el archivo con el nombre reporte1.lrf y sigo en lazarus y escribo el siguiente código.


delphi
  1. procedure Tfzvac.MImprimirClick(Sender: TObject);
  2. begin
  3.   frReport1.LoadFromFile('Reporte.lrf');
  4.   frReport1.Values.FindVariable('nombre').Field := 'Juancito';
  5.   frReport1.PrepareReport;
  6.   frReport1.ShowReport;
  7. end;



y lo compilo y me sale el siguiente error.

"Project Project1raise exception class "External:SIGSEGV" [Aceptar]

Por ende estoy trabado, no se como hacer, solo tengo hacer un reporte simple pasando 10 variables nada de base de datos, alguien me ayuda por favor.

Nota: si saco el objeto que hace referencia a [nombre] y la linea de código que da valor a nombre, me anda de 10, por ende calculo que el lazreport está bien instalado.


  • 0

#2 fredycc

fredycc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 874 mensajes
  • LocationOaxaca, México

Escrito 05 agosto 2011 - 08:55

Hola martinartaza, podrías probar obtener los valores en el evento del frReport llamado OnGetValue.





delphi
  1. procedure TForm1.frReport1GetValue(const ParName: String; var ParValue: Variant);
  2. begin
  3.   if ParName = 'cliente' then  // customer
  4.     ParValue := Edit1.Text;
  5.    
  6.   if ParName = 'direccion' then  // address
  7.     ParValue := Edit2.Text;
  8.    
  9.   if ParName = 'nombre' then // product
  10.     ParValue := StringGrid1.Cells[0, fila];
  11.    
  12.   if ParName = 'precio' then // price
  13.     ParValue := StringGrid1.Cells[1, fila];
  14.    
  15.   if ParName = 'total' then
  16.     ParValue := Edit5.Text;
  17. end;




También podría ser el tipo de banda en la que hallas colocado la variable en el reporte, pero de eso no estoy muy seguro, el código de arriba lo obtuve de los ejemplo de Lazreport en: C:\lazarus\components\lazreport\samples\stringgrid.


O bien sube tu proyecto y lo vemos.


Saludos
  • 0

#3 martinartaza

martinartaza

    Advanced Member

  • Miembros
  • PipPipPip
  • 159 mensajes
  • LocationArgentina, Tucuman

Escrito 06 agosto 2011 - 04:40

Muchas gracias !!!Fredyc¡¡¡¡ es la segunda vez que me ayudas con el proyecto final de mi carrera, algún día te invito un porron  (b)

Te comento lo que hice, agregue tu código y comente una linea de código mia.



delphi
  1. procedure Tfzvac.frReport1GetValue(const ParName: String; var ParValue: Variant
  2.   );
  3. begin
  4.     if ParName='nombre' then
  5.     ParValue:= 'juancito';
  6. end;   
  7.  
  8.  
  9. procedure Tfzvac.MImprimirClick(Sender: TObject);
  10. begin
  11.   frReport1.LoadFromFile('Reporte.lrf');
  12.   //frReport1.Values.FindVariable('nombre').Field := 'Juancito';
  13.   frReport1.PrepareReport;
  14.   frReport1.ShowReport;
  15. end;         




y quedo perfecto, la banda no importa la cambie varias veces y anda igual.


  • 0

#4 fredycc

fredycc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 874 mensajes
  • LocationOaxaca, México

Escrito 06 agosto 2011 - 06:20

Que bien que te halla funcionado martinartaza, te recomiendo veas los demos en el mismo directorio de Lazreport, te pueden dar muchas ideas.


(y)



Saludos
  • 0




IP.Board spam blocked by CleanTalk.