Hola amigos:
Muchisimas gracias a todos por el interes.
Pero creo que incluso con la solucion de Artu01, que parecia la que mas se adaptaba cuando le das al boton de exportar de excel te dice que no existe el alias, o sea la base de datos ya esta cerrada.
Es por lo que deduzco que cuando tenemos el preview en nuestra pantalla ya se ha producido el ON END del informe y si pulsas el boton de excel te da error.
Yo creo que lo normal seria que el ON END se lanzara cuando cierras el preview, pero bueno son opiniones.
de todas formas yo cierro la dbf despues de salir del informe, es por lo que no entiendo que desde el preview la dbf ya esta cerrada.
el codigo es trivial , yo presento un dialogo.
Code: Select all | Expand
STATIC FUNCTION ListObras()
local oDlg, oFont
local oDevice, oRepObr
// etc . ...
dbUseArea( .T., , "Obras", "ListO", .T. )
DEFINE DIALOG oDlg NAME "LISTAOBR" ;
TITLE "LISTADO DE OBRAS"
REDEFINE BTNBMP ID 750 RESOURCE "ACCEPT" OF oDlg ACTION ( lAcepta := .t., oDlg:END() )
REDEFINE BTNBMP ID 751 RESOURCE "CANCEL" OF oDlg ACTION oDlg:END()
ACTIVATE DIALOG oDlg CENTERED
IF lAcepta
// code....
DEFINE FONT oFont NAME "Courier New" SIZE 0, - 12
oDevice := TPrinter():NEW( cCaption, .F., IF( nRdest == 1, .T., .F. ) )
REPORT oRepObr TITLE Replicate ( "_", 87 ), "", ;
Replicate( " ", 36 ) + "LISTADO DE OBRAS" ,Replicate ( "_", 87 ) , "" Left ;
Header "Pag. " + Str( oRepObr:nPage, 3 ) Right ;
FOOTER aEmpresa[ 1 ] + " - " + aEmpresa[ 2 ] + " (" + aEmpresa[ 11 ] + ")" ;
CAPTION cCaption FONT oFont TO DEVICE oDevice
COLUMN TITLE "Codigo", "Inicio" DATA ListO->Codigo, DToC( ListO->Inicio )
COLUMN TITLE "Nombre", "C.I.F." DATA ListO->Nombre, ListO->Cif
COLUMN TITLE "Dirección", "Provincia" DATA SubStr( ListO->Direc, 1, 20 ), ListO->Provin
COLUMN TITLE "Población", "C.Postal" DATA SubStr( ListO->Pobla, 1, 14 ), ListO->Postal
COLUMN TITLE "Telefono", "Presupuesto" DATA ListO->Tele, ListO->Presup PICTURE "@E 999,999.99"
END REPORT
oRepObr:nTitleUpline := 0 // Quita la linea de arriba de los titulos 0
oRepObr:MARGIN( 4, 5, 2 )
oRepObr:bInit := {|| ListO->(dbgotop()) }
ACTIVATE REPORT oRepObr FOR IF( lSoloOpen, ListO->Cerrada = .F., .T. ) .AND. IF( lSoloClose, ListO->Cerrada = .T., .T. ) ;
.AND. IF( ListO->( ordSetFocus() ) == "CODIGO", ListO->Codigo <= cFinal, ListO->Nombre <= cFinal ) WHILE ! ListO->( Eof() )
oFont:END()
ENDIF
ListO->(DbcloseArea())
Return NIL
Deduzco que cuando se muestra el preview ya se ha ejecutado todo el codigo incluso el ListO->(DbCloseArea()) con lo cual la dbf esta cerrada
y al llamar al boton de excel da error que no existe el alias.
yo creo que es un tema de diseño del preview , espero una orientacion de los mienbros de Fivetech o que me expliquen como puedo hacer un informe
abriendo la dbf y cerrandola en la misma funcion.
Un abrazo a todos.
Jose.