PROCEDURE Copia_Respaldo
TRY
LOCAL i,;
lcDir,;
lcFolder_Source,;
lcFolder_Target,;
lnTotal_files, ;
lnFiles,;
lDoit ,;
lnFailure,;
lnFiles_Copied,;
lcString_Failure,;
lcList_Exension,;
lcMessage,;
loFso as Object,;
loExGral as Exception,;
loExCopy as Exception
LOCAL ARRAY laTotal(1),laFiles(1)
lcList_Extension = ",dbf,cdx,fpt,"
lcMessage = ""
lnFiles_copied = 0
lnFailure = 0
lcString_Failure = ""
ldoit = .t.
lnfiles = 0
lnCount = 0
loFso = NEWOBJECT("Scripting.FileSystemObject")
lcDir = FULLPATH("")
lcFolder_Source = GETDIR(m.lcDir,"Seleccione la carpeta de origen","Copia de Respaldo",48+64)
ldoit = !EMPTY(m.lcFolder_Source)
IF m.ldoit
lcFolder_Target = GETDIR(m.lcDir,"Seleccione la carpeta de destino","Copia de Respaldo",48+64)
lDoit = !EMPTY(m.lcFolder_Target)
ENDIF
IF m.lDoit
lnTotal_files = ADIR(laTotal,ADDBS(m.lcFolder_Source)+"*.*","",1)
IF m.lnTotal_files > 0
FOR i = 1 TO m.lnTotal_Files
IF AT( CHR(44)+LOWER(JUSTEXT(laTotal[m.i,1]))+CHR(44) , m.lcList_Extension) > 0
lnFiles = m.lnFiles + 1
DIMENSION laFiles(m.lnFiles)
laFiles[m.lnFiles] = ADDBS(m.lcFolder_Source)+laTotal[m.i,1]
ENDIF
NEXT
ENDIF
lDoit = m.lnFiles > 0
ENDIF
IF m.lDoit
FOR i = 1 TO m.lnfiles
TRY
loExCopy = null
loFso.copyFile(laFiles[i],ADDBS(m.lcFolder_Target))
lnfiles_Copied = m.lnfiles_Copied + 1
CATCH TO loexCopy
loExCopy.UserValue = PROGRAM()
* ShowError(loExCopy)
lnFailure = m.lnFailure + 1
lcString_Failure = m.lcString_Failure ;
+ laFiles[i]+" ";
+ loexCopy.Message ;
+ CHR(13)+CHR(10)
FINALLY
ENDTRY
NEXT
ENDIF
CATCH TO loexGral
loExGral.UserValue = PROGRAM()
ShowError(loExGral)
FINALLY
lcMessage = IIF(m.lnFiles_Copied = m.lnfiles,;
"Finalizó correctamente",;
"Finalizó con "+TRANSFORM(m.lnFailure)+" errores de "+TRANSFORM(lnFiles)+" archivos")
MESSAGEBOX(m.lcMessage,0,"Mensaje de Copia")
loFso = null
ENDTRY
*----------------------------------------------------
PROCEDURE ShowError
LPARAMETERS toExcep,tlNotShow,tcCaption
*-----------------------------------------------------
#DEFINE _CR_ CHR(13)
tcCaption=EVL(tcCaption,"Mensaje del Sistema")
SET HOURS TO 24
LOCAL lcMens,lShowMensajero,lcFolder,lcFile
lcMens="Fecha "+TRANSFORM(DATETIME());
+ _CR_+"Mensaje: "+toExcep.message;
+ _CR_+"ErrorNo: "+TRANSFORM(toExcep.Errorno);
+ _CR_+"Llamada: "+toExcep.Uservalue
IF _vfp.StartMode=0
lcMens=lcMens+ _CR_+"Linea "+TRANSFORM(toExcep.lineno)
ENDIF
STRTOFILE(lcMens+ _CR_+REPLICATE("=",60)+ _CR_,"ThError.log",1)
lcMens="Se ha producido un error:"+ _CR_+lcMens
IF !tlNotShow
MESSAGEBOX(m.lcMens,0,m.tcCaption)
ENDIF
ENDPROC