Consulta sobre un problema con winrar en vfp

338 views
Skip to first unread message

Marcelo Barberis

unread,
Nov 26, 2012, 3:56:02 AM11/26/12
to publicesvfoxpro
Estimados amigos
Estoy queriendo incluir una rutina de respaldo automatico al salir de mis sistema utilizando winrar, pero me genera un error y les consulto cual seria la forma correcta de hacerlo, dentro del form principal he creado un metodo "Respaldo" para llamarlo cuando estoy saliendo, el codigo es el siguiente:

LOCAL lcCarpeta1, lcCarpeta2, lcCarpeta2, rutasistema, rutabasedatosorigen, rutabasedatosrepaldo, respaldar, nombredestino

*******esta es la ruta en donde se haran los repaldos automaticos
rutasistema = SYS(5) + CURDIR()
lccarpeta1 = oasetup.pathbackupautomatico
rutabasedatosrepaldo = rutasistema + lccarpeta1
nombredestino = rutabasedatosrepaldo +"RESP-SIST_" + ALLTRIM(STR(DAY(DATE()))) +  '_' +  ALLTRIM(STR(MONTH(DATE())))+  '_' + ALLTRIM(STR(YEAR(DATE())))

*********lo necesitamos esta ruta para hacer rar a todo la caperta
lcCarpeta2= oasetup.pathrespaldobase
rutabasedatosorigen = rutasistema + lcCarpeta2 + "*.*"

*!* Borrar el archivo rar que se encuentra en la carpeta backup para solo quede uno solo
DELETE FILE rutabasedatosrepaldo + "RESP-SIST*.*"
*!* **********************************************************
CLOSE DATABASES ALL
archi_rar = Getenv("ProgramFiles")+"\WinRAR\WinRar.exe"
a_origen  = rutabasedatosorigen
r_destino = nombredestino
IF FILE('&archi_rar', 1)
    Thisform.SetAll('Enabled',.F.)
    WAIT WINDOW NOWAIT 'Comprimiendo archivos.....'
    cfilename = archi_rar
    caction = "open"
    cparameter = ' A &r_destino *.dbc *.dcx *.dct *.bhj *.dbf *.cdx *.fpt *.tds'
    =shellexecute(0, caction, cfilename, cparameter, "", 1)
    *!* para el ini
    oappini.guardardestinobackup(archivo_config,'ultimorespaldo',r_destino)
    MESSAGEBOX('Respaldo automatico realizado exitosamente',64,' Aviso...',1200)
ELSE
    =MESSAGEBOX('No se puede realizar el Respaldo Automatico' +CHR(13)+;
                'porque no se encuentra el programa WINRAR.', 64, 'WINRAR - IMPORTANTE',1200)
ENDIF

despues he creado un metodo para salir del sistema dentro del form principal "Salida" el codigo que tengo dentro de este metodo es el siguiente:

IF salirsinpreguntar = "no"
    IF  apli_corriendo = "si"
        CLEAR WINDOW
        THISFORM.Release()
    ELSE
        OASETUP.APLICAR_SONIDO('SALIR')
        THISFORM.Respaldo
        IF TXNLEVEL() > 0
            ROLLBACK 
        ENDIF
        CLEAR WINDOW
        CLEAR DLLS
        CLOSE ALL
        RELEASE ALL EXTENDED
        CLEAR MEMO
        THISFORM.Release
    ENDIF
ENDIF

el error que me genera es una exepcion en la llamada api de windows
de antemano les agradecere por cualquier comentario para solucionar el problema.

--
Ing. Marcelo Barberis Gutierrez
Sistemas Informaticos Inc
Villa Montes - Bolivia
Telef.: +591-76831064

Ricardo Pina

unread,
Nov 26, 2012, 9:51:22 AM11/26/12
to Grupo VFP
Hola Marcelo
 
Puedes usar esta otra opción en vez de Shellexecute
 
oShell = createobject("WScript.Shell")
oShell.Run( "winrar.exe "+cparameter, 0 , .T. )
 
Saludos



--
 
 
 



--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 


Luis Maria Guayan

unread,
Nov 26, 2012, 10:05:10 AM11/26/12
to publice...@googlegroups.com
Lo mejor para comprimir y descomprimir con VFP es la librería VFPCompression de Craig  Boyd

-- Librería VFPCompression (Zip/Unzip para Visual FoxPro) --
http://www.portalfox.com/article.php?sid=2246

Mira el Blog del autor que creo que existe alguna otra actualización


Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

--
 
 
 

Víctor Hugo Espínola Domínguez

unread,
Nov 26, 2012, 11:24:11 AM11/26/12
to publicesvfoxpro
Hola Marcelo

>=shellexecute(0, caction, cfilename, cparameter, "", 1)

ShellExecute es un método, por lo tanto la sintaxis debe ser: NombreObjeto.ShellExecute( Lista de parámetros )

Según el help de VFP:

ShellExecute method

Attempts to run the file tcFileName in the directory, tcWorkDir.

Syntax: ShellExecute(tcFileName, tcWorkDir, tcOperation)

Return: nSuccess

Arguments: tcFileName specifies the file to run.tcWorkDir specifies the path to the file to run.tcOperation specifies the operation to perform.nSuccess specifies the failure or the success of the run attempt using one of the following values:

2 = Bad Association (for example, invalid URL) 29 = Failure to load application 30 = Application is busy 31 = No application association

Values over 32 represent success, and return an instance handle for the running application.



Saludos.
Víctor.




--
 
 
 

Reply all
Reply to author
Forward
0 new messages