In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

LoadFPFile parece no funcionar

FastReport for Xailer & [x]Harbour (English/Spanish)
Responder
Avatar de Usuario
bingen
Mensajes: 565
Registrado: Lun Jul 07, 2014 8:17 pm
Ubicación: Bilbao
Contactar:

LoadFPFile parece no funcionar

Mensaje por bingen »

Buenas xTeam.

He preparado mi propio Preview que lo enlazo con nuestro sistema de impresión de FR para que al cliente le muestre un preview mas vistoso y simple.

Lo he intentado de muchas maneras y no me ha funcionado, pero he pensado que lo más simple es grabar desde mi sistema un archivo FP3, eso está chupado, pero al lanzar mi preview no soy capaz de leer el FP3.

Si hago un Open() si que funciona pero entoces muestra el diálogo de abrir en cambio si hago un LoadFPFIle no me da error y de hecho devuelve .T. pero no muestra nada de nada y h eprobado de todo pero... ¿que mas puedo hacer?

Código: Seleccionar todo

 with object ::oFrPreview
   :lVisible:=.F.
   :oReport:Clear()
   :oReport:LoadFPFile(Application:cDirectory+"prueba.fp3")
    :lVisible:=.T.
End
Gracias.
BiSoft Desarrollo de software profesional
http://www.bisoft.es
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9252
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: LoadFPFile parece no funcionar

Mensaje por ignacio »

Buenos días,

Efectivamente hay un error. Hay que modificar el siguiente método:

Código: Seleccionar todo

METHOD LoadReport( lDesign ) CLASS XFastReport

   LOCAL oIcon
   LOCAL cFile, cExt
   LOCAL lSuccess := .f.

   DEFAULT lDesign TO .t.

   IF !::lCreated .OR. ::nLoaded != NOT_LOADED
      RETURN .T.
   ENDIF

   IF Empty( ::cResIco )
      oIcon := Application:oMainForm:oIcon
      IF oIcon != NIL .AND. !Empty( oIcon:cName ) .AND. !File( oIcon:cName )
         ::cResIco := oIcon:cName
      ENDIF
   ENDIF

   ::ClearReport()
   ::LoadData( lDesign )
   ::OnBeforeLoad( lDesign )

   // Guardamos todas las variables que hubiera podido incluir
   IF ::lDelFRVars
      ::SaveVariables()
   ENDIF

   ::lPrepared := .f.

   IF !Empty( ::cFilename )
      IF !( ":" $ ::cFilename ) .AND. Left( ::cFilename, 2 ) <> "\\"
         cFile := Application:cDirectory + ::cFilename
      ELSE
         cFile := ::cFilename
      ENDIF
      IF File( cFile )
         cExt := Upper( FileExtension( cFile ) )
         IF cExt == "FR3"
            lSuccess := ::LoadFromFileC( cFile )
         ELSEIF cExt == "FP3"
            lSuccess := ::LoadFPFileC( cFile )
            ::lPrepared := .T.
         ENDIF
      ELSE
         ::SetError(  200, cFile + ": File not found on LoadFromFile()" )
      ENDIF
   ELSEIF !Empty( ::cResName )
      lSuccess := ::LoadFromResourceC( 0, ::cResName )
   ELSEIF !Empty( ::cResData )
      lSuccess := ::LoadFromStringC( ::cResData, .f. )
   ENDIF

   ::SetADOConnectStr()

   ::nLoaded := IIF( lSuccess, IIF( lDesign, DESIGN_LOADED, FULL_LOADED ), NOT_LOADED )

   IF lSuccess
      ::AfterLoad()
   ENDIF

RETURN lSuccess
Y para usarlo basta con hacer:

Código: Seleccionar todo

oFastReport1:LoadFPFile( "?????.fp3" )
oFastReport1:ShowPreparedReport()
Lo he intentado de muchas maneras y no me ha funcionado
Te agradecería que fueras más explicito. Gracias de antemano.

Un saludo
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
bingen
Mensajes: 565
Registrado: Lun Jul 07, 2014 8:17 pm
Ubicación: Bilbao
Contactar:

Re: LoadFPFile parece no funcionar

Mensaje por bingen »

He metido esta corrección haciendo un ajuste de una variable lDelFRVars que no existe ya que supongo que es para la persistencia de las variables en la nueva versión y he recompilado el fuente de fastReport junto a mi proyecto y 100% ok funciona perfectamente....

Las otras pruebas que hice y que no detallé son por ejemplo esta. Ya que tengo un objeto FR creado asignarlo al nuevo preview directamente, pero no conseguí que anduviera, así que opté por grabar primero un FP3 temporal y de esta manera leerlo en mi nuevo Preview, lo cual ahora ya está resuleto. Esto solo se notará en los preview de gran número de páginas que tardarán más en aparecer, pero lo harán correctamente.

Gracias y salu2.
BiSoft Desarrollo de software profesional
http://www.bisoft.es
Responder