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 08-08-2007
M. FM. M. FM. is offline
Miembro
 
Registrado: ago 2007
Posts: 37
Poder: 0
M. FM. Va por buen camino
Unhappy Cambiar orden de páginas con Rave Reports

Buenos días:

Después de buscar durante varias semanas información sobre este tema, he llegado a la conclusión de que lo que quiero no puede hacerse con Rave Reports, pero antes de tirar la toalla decidí probar suerte con el foro para ver si alguien ha estado en un caso similar.

Lo que quiero hacer es cambiar el orden de las páginas de un informe en tiempo de ejecución, dependiendo de un parámetro determinado. Por ejemplo:

Página 1 - un informe simple. Siempre se muestra correctamente.
Página 2 - un informe maestro/detalle. Sólo se mostrará si el valor de un parámetro pasado desde Delphi a Rave es 1.

El problema es que la segunda página sale en blanco cuando le pongo el condicional. Estaba probando con el evento OnBeforeReport del informe completo (aunque también he probado con OnBeforePrint, OnBeforeReport y OnAfterPrint de la página 1). El código es:

Código:
if compare(RaveProject.GetParam('MiParam'), '1') = 0 then
  Page1.GotoPage := Page2;
end if;
Es decir, más sencillo imposible. Sin embargo, la segunda página sale en blanco. Si en lugar de poner este código le pongo directamente el valor en el GotoPage de la página 1, todo sale bien.

¿Es un bug de Rave Reports? Yo he llegado a la conclusión de que sí, pero igual hay alguna forma de solucionarlo que se me está escapando. O igual estoy haciendo algo mal, yo ya ni sé.

He probado también a dejar fijo el orden de las páginas y cambiar el estado de Visible de la página 2, pero eso no funciona cuando añado una tercera página (en mi informe son 4 páginas y sólo la primera es fija). Y la última opción que se me ocurre es tratar de editar el PageList en el evento OnBeforeReport del informe, pero tampoco sé cómo hacerlo.

He visto algún mensaje perdido en foros de internet con algo similar a esto, pero en ninguno había respuesta. Agradeceré cualquier indicio de luz que alguien pueda arrojar sobre este túnel...

Saludos y gracias,
M.

Última edición por M. FM. fecha: 08-08-2007 a las 13:13:06.
Responder Con Cita
  #2  
Antiguo 08-08-2007
M. FM. M. FM. is offline
Miembro
 
Registrado: ago 2007
Posts: 37
Poder: 0
M. FM. Va por buen camino
Seguimos...

Bueno, he decidido olvidarme de los eventos del report y ahora estoy intentando definir el orden de las páginas desde Delphi. El nuevo problema que tengo es un "Access violation".

He probado con dos formas distintas.
La primera:

Código:
if RvPageList = nil then
   RvPageList := TRaveComponentList.Create;

RvPageList.Add(RvProject.FindComponent('MiReport.Page1') as TRavePage);
if m_Segunda = '1' then
RvPageList.Add(RvProject.FindComponent('MiReport.Page2') as TRavePage);

RvProject.ProjMan.ActiveReport.PageList := RvPageList;
RvProject.Execute;
RvProject.Close;
Este código me da un error al ejecutar el report.

La segunda:
Código:
RvProject.SelectReport('MiReport', true);
RvPage1 := RvProject.FindComponent('Page1') as TRavePage;
RvPage2 := RvProject.FindComponent('Page2') as TRavePage;
 if m_Segunda = '1' then
    RvPage1.GotoPage := RvPage2;
RvProject.Execute;
RvProject.Close;
De este modo, el error lo tengo en el GotoPage: Exception class EAccessViolation with message 'Access violation at address 0065166F in module 'Ventas.exe'. Write of address 000000A0'.

He probado tanto definiendo los GotoPage en Rave también como sin definirlos, y el resultado es el mismo.

¿Alguna idea?

Gracias,
M.

Última edición por M. FM. fecha: 08-08-2007 a las 13:40:03.
Responder Con Cita
  #3  
Antiguo 08-08-2007
M. FM. M. FM. is offline
Miembro
 
Registrado: ago 2007
Posts: 37
Poder: 0
M. FM. Va por buen camino
Talking Resuelto

Bueno, por fin lo he conseguido. Pongo la solución por si alguien se ha visto en el mismo caso, es el segundo código que había probado pero accediendo al Project Manager en lugar de al Report directamente:

Código:
with RvProject.ProjMan do
begin
    RvPage1 := FindRaveComponent('MiReport.Page1', nil) as TRavePage;
    RvPage2 := FindRaveComponent('MiReport.Page2', nil) as TRavePage;

    if m_Segunda = '1' then
      RvPage1.GotoPage := RvPage2;
 end;

RvProject.ExecuteReport('MiReport');
RvProject.Close;
No sé ni la de días que llevo con esto. Espero que si a alguien le pasa igual esto pueda servirle de ayuda.

Saludos,
M.
Responder Con Cita
  #4  
Antiguo 01-02-2008
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Hola M. FM... tengo exactamente el mismo problema que tuviste tu. Me tira el mismo error en el gotopage... pero no entiendo como fue que resolviste el problema...

las variables page1 y page2 son Travepage???

No se como solucionarlo... a no ser que tengo un problema en el rave report.. en el archivo... pero lo tengo de la siguiente manera... un archivo llamado 'informe.rav', en el cual existe un reporte llamado orden y dentro de este reporte existen 2 paginas.....

esto esta bien??


alguna idea de como solucionar esto??


gracias por tu tiempo

saludos
Responder Con Cita
  #5  
Antiguo 07-02-2008
saturno7 saturno7 is offline
Registrado
 
Registrado: feb 2007
Posts: 1
Poder: 0
saturno7 Va por buen camino
Hola, mjjj:

Intentaré explicarte lo poco que sé a ver si entre los dos lo sacamos.

Para empezar, tienes que sustituir en el código delphi MiReport por el nombre de tu informe en Rave Reports (en tu caso sería orden):
Código Delphi [-]
RvPage1 := FindRaveComponent('MiReport.Page1', nil) as TRavePage;

Se convertiría en:
Código Delphi [-]
RvPage1 := FindRaveComponent('orden.Page1', nil) as TRavePage;


Además, Page1 y Page2 son los nombres que le has puesto a las páginas de tu informe también en Rave Reports. Es decir, que tanto el informe como sus páginas deben existir para que el código en delphi los encuentre.

Mira a ver si con eso solucionas algo, y si no, vuelve a escribir y lo seguimos mirando.

Saludos

Última edición por saturno7 fecha: 07-02-2008 a las 19:02:53.
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
Paginas en Rave Alexander Impresión 0 29-03-2007 18:16:17
Cambiar orden de mensajes con net send carlos gonzalez Varios 1 22-02-2007 22:20:03
cambiar orden columnas dbgrid dvlt OOP 3 07-06-2006 14:31:47
Rave Reports Proyecto con dos paginas daly Impresión 2 07-12-2005 00:37:15
¿Cómo enviar un TQuery a Crystal Reports como se hacía con Rave Reports? fitidavid Impresión 1 04-09-2004 18:56:39


La franja horaria es GMT +2. Ahora son las 03:19:46.


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