Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-09-2007
hmrvivas hmrvivas is offline
Miembro
 
Registrado: jun 2006
Posts: 31
Poder: 0
hmrvivas Va por buen camino
Question Como Utilizo Correctamente FastReport

Hola Comunidad.

Mi problema es que estoy trabajando con delphi 7 e instale fast report como reporteador. Lo que quiero saber es como se utilizan estos objetos.

Yo hice lo siguiente:
* Cree un Datamodulo
* Coloque un componente frxReport y un frxDBDataSet
* los vincule y diseño el reporte, lo guardo y me sale bien cuando lo invoco con ShowReports(true)

Hice pruebas modificando por codigo el Dataset del frxDBDataset y del frxReport modifique la propiedad IniFile que es donde relaciona el nombre fisico del archivo.fr3, pero esto no funciona, siempre me sale el mismo reporte cuando me debe salir en un lado uno y en otro el otro.

No se si deba crear un frxDBDataset por cada reporte, aunque tampoco me funciono.

Agradezco si me colaboran con esto.
Responder Con Cita
  #2  
Antiguo 06-09-2007
hmrvivas hmrvivas is offline
Miembro
 
Registrado: jun 2006
Posts: 31
Poder: 0
hmrvivas Va por buen camino
yomismo

Bueno tengo los 3 manuales completos en ingles (Usuario, programer y Developer) los tratare de entender y les cuento, de todas formas si alguien tiene experiencia con este reporteador le agradezco.
Responder Con Cita
  #3  
Antiguo 08-09-2007
Avatar de nuk3zito
nuk3zito nuk3zito is offline
Miembro
 
Registrado: ago 2003
Ubicación: "Z" Land
Posts: 244
Poder: 21
nuk3zito Va por buen camino
en tiempo de ejecución

¿por que no pruebas a cargar el archivo del reporte en tiempo de ejecución?

Yo siempre algo algo como esto:
Código:
Screen.Cursor:=crHourGlass;
  try
    try
      aqryMaster.Open;

      with frxReporte do
      begin
        LoadFromFile( ExtractFilePath(Application.ExeName) +'Presupuesto.fr3', true);
        TfrxMemoView(FindObject('mvAsegCliente')).Memo.Text:= trim(dbePropietario.Text); // Equivalente a formulabyname
        ...
        ...
 
        PrepareReport(true);
        PrintOptions.Copies:= 1;
        PrintOptions.ShowDialog:= true;
        ShowReport; // o Print;
      end;
    except
      On E: Exception do
      begin
        Application.MessageBox(pchar('Ocurrió un error al generar el reporte!' + #13 + E.Message),
          pchar(Caption), mb_ok + mb_iconerror);
      end;
    end;
  finally
    aqryMaster.Close;
    Screen.Cursor:=crDefault;
  end;
Saludos
__________________
Tiempo y ocasión acontecen a todos!
Responder Con Cita
  #4  
Antiguo 08-09-2007
hmrvivas hmrvivas is offline
Miembro
 
Registrado: jun 2006
Posts: 31
Poder: 0
hmrvivas Va por buen camino
hmrvivas

Gracias Nuk3zito.

Me sirvio lo que enviaste, ya pude resolver el problema.

sinm embargo me queda la duda si es mejor trabajar con un solo frxReport, o realmente no importa tener uno para cada reporte.
Responder Con Cita
  #5  
Antiguo 08-09-2007
Avatar de nuk3zito
nuk3zito nuk3zito is offline
Miembro
 
Registrado: ago 2003
Ubicación: "Z" Land
Posts: 244
Poder: 21
nuk3zito Va por buen camino
Wink Depende del tipo de pantallas: Modales o No modales

Cita:
Empezado por hmrvivas Ver Mensaje
Gracias Nuk3zito.

Me sirvio lo que enviaste, ya pude resolver el problema.

sin embargo me queda la duda si es mejor trabajar con un solo frxReport, o realmente no importa tener uno para cada reporte.
En un principio, en el desarrollo de mis primeras aplicaciones me fui con la idea (errónea para mí) de poner todo en módulos de datos. Eso te sirve para ciertas cosas, por ejemplo, el componente de la conexión y datasets que se usen en varias formas.
Ahora para la mayoría de las formas, pongo sus respectivos componentes de datasets, reporte, etc. dentro de la misma forma.
¿Por que?
Yo aquí prefiero dejar la programación muy clara y sobretodo porque mis aplicaciones utilizan pantallas heredadas y de tipo MDI child, por lo cual raramente utilizaré un mismo dataset u otro componente en más de una vez a la vez. No se si me explico... cuando tienes pantallas modales, te puede servir mucho hacer lo que tu haces (de poner los componentes del reporte en un modulo de datos en este caso) porque solo abres una pantalla (forma) a la vez... pero cuando abres varias pantallas a la vez, necesitamos asegurarnos de que los componentes que utilice, solo se utilicen en esa pantalla... y la manera de hacer esto es poniendo los componentes en dicha forma. Así, si usas pantallas no modales, puedes crear tantas instancias quieras de tu misma forma sin perjudicar el funcionamiento entre ellas.

Estoy hablando de instancias de clases (objetos), espero no haberte complicado más.

en resumen, te recomiendo usar un frxReport por forma (solo en donde aplique, claro) y no uno genérico en un módulo de datos.

Saludos.
__________________
Tiempo y ocasión acontecen a todos!

Última edición por nuk3zito fecha: 08-09-2007 a las 17:13:47.
Responder Con Cita
  #6  
Antiguo 09-09-2007
hmrvivas hmrvivas is offline
Miembro
 
Registrado: jun 2006
Posts: 31
Poder: 0
hmrvivas Va por buen camino
entendido

Si, yo trabajo solo pantallas modales, y ya he hecho varios reportes y funciona bien. Tendre en cuenta tu recomendacion para las formas MDI.

Bueno tengo un problema ahora y es que no se como usar una variable global de mi aplicacion que tengo en una unidad en el reporte.

Es decir quiero asignarle a un frxMemoView el valor de una variable que no es del reporte, sino del proyecto.

He probado con los scrip pero no he podido conseguirlo.

Gracias.
Responder Con Cita
  #7  
Antiguo 10-09-2007
Avatar de nuk3zito
nuk3zito nuk3zito is offline
Miembro
 
Registrado: ago 2003
Ubicación: "Z" Land
Posts: 244
Poder: 21
nuk3zito Va por buen camino
En el primer ejemplo también viene la forma de hacer eso...

Desde Delphi debes hacer algo como esto:
Código:
TfrxMemoView(FindObject('mvAsegCliente')).Memo.Text:= trim(dbePropietario.Text);
En este caso, "mvAsegCliente" es el nombre del objeto de la clase TfrxMemoView del Reporte.

Y para poder visualizar la variable global en tu forma, basta que pongas en la clausula "uses" la unidad en donde esta variable global se encuentra declarada.

Saludos.
__________________
Tiempo y ocasión acontecen a todos!
Responder Con Cita
  #8  
Antiguo 11-09-2007
hmrvivas hmrvivas is offline
Miembro
 
Registrado: jun 2006
Posts: 31
Poder: 0
hmrvivas Va por buen camino
aclaracion...!!!!

Bueno, lo intente pero no me funciono nada.

Me explico nuevamente:

Quiero utilizar en el evento OnbeforePrint de un frxMemoView una funcion que esta definida en una unidad externa de mi aplicacion. No se come referenciarla, y lo mismo con las variables externas, las coloco y me dice que no la recoce.

Ej.

Código Delphi [-]
procedure Memo24OnBeforePrint(Sender: TfrxComponent);begin  Memo24.memo.text:= ArmaStrATMN(StrToInt(memo13.memo.text),'A','/');end;

La funcion ArmaStrATMN la tengo en una unidad de mi aplicacion.

error: Undeclarad Identifir 'ArmaStrATMN'

probe colocando en la parte superior de la ficha de code lo siguiente


Código Delphi [-]
uses'C:\davinci\dcu\ungeneral.dcu';

y me sale BEGIN 'expected'

agradezco la ayuda
Responder Con Cita
  #9  
Antiguo 11-09-2007
Avatar de nuk3zito
nuk3zito nuk3zito is offline
Miembro
 
Registrado: ago 2003
Ubicación: "Z" Land
Posts: 244
Poder: 21
nuk3zito Va por buen camino
Código Delphi [-]
procedure Memo24OnBeforePrint(Sender: TfrxComponent);
begin  
   TfrxMemoView(FindObject('Memo24')).Memo.Text:= ArmaStrATMN(StrToInt(memo13.memo.text),'A','/');
end;


y en el uses solo es necesario:
Código Delphi [-]
  uses ungeneral;
Siempre y cuando esa unidad esté declarada dentro de tu proyecto.

Saludos.
__________________
Tiempo y ocasión acontecen a todos!

Última edición por nuk3zito fecha: 11-09-2007 a las 17:19:57. Razón: mejoría
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como abortar correctamente un proceso que es interrumpido por el cierre del Form gluglu Varios 10 28-08-2007 15:41:03
como utilizo mas de un comboBox Guadalupe .NET 1 07-06-2006 22:34:10
Como usar correctamente ReplaceDialog? clanmilano Varios 1 06-02-2006 13:41:57
como utilizo like armando SQL 3 22-12-2003 21:02:14
como utilizo el query noe SQL 2 17-12-2003 20:32:10


La franja horaria es GMT +2. Ahora son las 15:36:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi