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.