Página 1 de 1

LoadFPFile parece no funcionar

Publicado: Mar Mar 29, 2016 1:24 pm
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.

Re: LoadFPFile parece no funcionar

Publicado: Mié Mar 30, 2016 11:28 am
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

Re: LoadFPFile parece no funcionar

Publicado: Mié Mar 30, 2016 6:00 pm
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.