Como crear backups de base de datos de visual fox
Holas amigos:
Por fa ayuda desarrolle un sistema en visual fox, lo que ahora necesito es crear una rutina o si ya existe conocerla o alguna herramienta propia de Visual fox que me permita realizar backups y restaurar la base de datos hecha en Visual Fox. Por fa es urgente ya busque por todo lugar y nadie me dice nada, a ver si aca tengo suerte.
Gracias de antemano. Espero respuesta pronta
Por fa ayuda desarrolle un sistema en visual fox, lo que ahora necesito es crear una rutina o si ya existe conocerla o alguna herramienta propia de Visual fox que me permita realizar backups y restaurar la base de datos hecha en Visual Fox. Por fa es urgente ya busque por todo lugar y nadie me dice nada, a ver si aca tengo suerte.
Gracias de antemano. Espero respuesta pronta
IF MESSAGEBOX("Inicia la copia de los archivos?",33,"Copias") = 1
CLOSE DATABASES all
cCarpeta = "COPIA"
IF !DIRECTORY(cCarpeta)
WAIT WIND [ Creando carpeta....] NOWAIT
MD &cCarpeta
ENDIF
cCarpetaDestino = CURDIR() + cCarpeta + ""
lnDBFCont = ADIR( laDbfList, '*.DBF')
*WAIT WINDOW lnDBFCont
*--- Bucle de los archivos en la lista.
FOR nCnt = 1 TO ThisForm.ListaArchivos.ListCount
*--- Nombre del archivo a copiar.
cArchiCopiar = ALLTRIM(ThisForm.ListaArchivos.List(nCnt))
*--- Carpeta de destino y archivo a copiar.
cDestino = cCarpetaDestino + cArchiCopiar
*--- Inicio la copia
WAIT WIND [ Un momento por favor, copiando...] + cArchiCopiar NOWAIT
COPY FILE &cArchiCopiar TO &cDestino
&© FILE ACUMOV.DBF TO CURDIR() + "COPYAGO" + "ACUMOV.DBF"
ENDFOR
WAIT CLEAR
=MESSAGEBOX("Copia en su Unidad de Disco Duro ha finalizado satisfactoriamente.",64,"Copias")
thisform.lABELBASE2.Caption = cCarpetaDestino
ENDIF
si tienes dudas contactame...
CLOSE DATABASES all
cCarpeta = "COPIA"
IF !DIRECTORY(cCarpeta)
WAIT WIND [ Creando carpeta....] NOWAIT
MD &cCarpeta
ENDIF
cCarpetaDestino = CURDIR() + cCarpeta + ""
lnDBFCont = ADIR( laDbfList, '*.DBF')
*WAIT WINDOW lnDBFCont
*--- Bucle de los archivos en la lista.
FOR nCnt = 1 TO ThisForm.ListaArchivos.ListCount
*--- Nombre del archivo a copiar.
cArchiCopiar = ALLTRIM(ThisForm.ListaArchivos.List(nCnt))
*--- Carpeta de destino y archivo a copiar.
cDestino = cCarpetaDestino + cArchiCopiar
*--- Inicio la copia
WAIT WIND [ Un momento por favor, copiando...] + cArchiCopiar NOWAIT
COPY FILE &cArchiCopiar TO &cDestino
&© FILE ACUMOV.DBF TO CURDIR() + "COPYAGO" + "ACUMOV.DBF"
ENDFOR
WAIT CLEAR
=MESSAGEBOX("Copia en su Unidad de Disco Duro ha finalizado satisfactoriamente.",64,"Copias")
thisform.lABELBASE2.Caption = cCarpetaDestino
ENDIF
si tienes dudas contactame...
PARA CORREGIR =====>
cDirectorioOriginal = CURDIR()
CLOSE ALL
CLOSE DATA ALL
DO CORRIGE
This.BorraInnecesarios
* Indexo las bodegas/almacenes
******************************
FOR nCnt = 1 TO This.Lista.ListCount
* Guardo la carpeta a indexar
****************************
cCarpetaIndexa = '\' + ALLT(This.Lista.List(nCnt))
* Voy a la carpeta
******************
CHDIR ( cCarpetaIndexa )
* Ejecuto el programa generico de indexamiento
**********************************************
DO CORRIGE
This.BorraInnecesarios
ENDFOR
CHDIR ( cDirectorioOriginal )
CLOSE ALL
***************************************
***PROGRAMA CORRIGE
*****************************************
*-- Este es un programa gen茅rico verificar errores en las tablas e
*-- indices existentes para cada tabla en el directorio actual.
*-- No tiene en cuenta las bases de datos,
*-- o supone que es necesario que la base de datos se encuentre
*-- abierta, de forma que es posible acceder a las tablas
*-- que hay en ella
*-- Cierra las tablas abiertas
CLOSE ALL
CLOSE ALL
*-- crea una lista de archivos dbf en este directorio
lnDBFCont = ADIR( laDbfList, '*.DBF')
*-- abre cada tabla en la lista
FOR lnDBFNo = 1 TO lnDbfCont
*-- el nombre del archivo est谩 en la columna 1 de la lista
*-- coloca el nombre de la tabla en una variable como
*-- c贸digo reutilizable
STORE laDbfList[ lnDbfNo, 1] TO lcDbfNom
*-- abre la tabla de forma exclusiva
*-- puede ser abierta con la sustituci贸n del nombre,
*-- ya que el nombre de la tabla est谩 contenido en la
*-- variable "lcDbfNom"
USE ( lcDBFNom ) EXCLUSIVE
* Elimino los registros marcados
********************************
PACK
IF RECCOUNT() > 0
* Informa al usuario
********************
WAIT WINDOW "Buscando Errores " + CURDIR() + lcDbfNom + " " + ;
LTRIM( STR( RECCOUNT() ) ) + ;
" Registros" NOWAIT
* Copio los datos a una tabla temporal
**************************************
COPY TO TEMPO.MAL
* Elimino los registros
***********************
ZAP
* Agrego nuevamente los registros
*********************************
APPEN FROM TEMPO.MAL
ENDIF
*-- cierra la tabla
CLOSE ALL
*-- hace lo mismo con la tabla siguiente en la lista
*-- avanza contador de lista
ENDFOR
IF FILE("TEMPO.MAL")
DELE FILE TEMPO.MAL
ENDIF
WAIT CLEAR
CLOSE ALL
**************************************************
***THISFORM.BORRAINNECESARIOS
****************************************************
DELE FILE *.TBK
DELE FILE *.BAK
cDirectorioOriginal = CURDIR()
CLOSE ALL
CLOSE DATA ALL
DO CORRIGE
This.BorraInnecesarios
* Indexo las bodegas/almacenes
******************************
FOR nCnt = 1 TO This.Lista.ListCount
* Guardo la carpeta a indexar
****************************
cCarpetaIndexa = '\' + ALLT(This.Lista.List(nCnt))
* Voy a la carpeta
******************
CHDIR ( cCarpetaIndexa )
* Ejecuto el programa generico de indexamiento
**********************************************
DO CORRIGE
This.BorraInnecesarios
ENDFOR
CHDIR ( cDirectorioOriginal )
CLOSE ALL
***************************************
***PROGRAMA CORRIGE
*****************************************
*-- Este es un programa gen茅rico verificar errores en las tablas e
*-- indices existentes para cada tabla en el directorio actual.
*-- No tiene en cuenta las bases de datos,
*-- o supone que es necesario que la base de datos se encuentre
*-- abierta, de forma que es posible acceder a las tablas
*-- que hay en ella
*-- Cierra las tablas abiertas
CLOSE ALL
CLOSE ALL
*-- crea una lista de archivos dbf en este directorio
lnDBFCont = ADIR( laDbfList, '*.DBF')
*-- abre cada tabla en la lista
FOR lnDBFNo = 1 TO lnDbfCont
*-- el nombre del archivo est谩 en la columna 1 de la lista
*-- coloca el nombre de la tabla en una variable como
*-- c贸digo reutilizable
STORE laDbfList[ lnDbfNo, 1] TO lcDbfNom
*-- abre la tabla de forma exclusiva
*-- puede ser abierta con la sustituci贸n del nombre,
*-- ya que el nombre de la tabla est谩 contenido en la
*-- variable "lcDbfNom"
USE ( lcDBFNom ) EXCLUSIVE
* Elimino los registros marcados
********************************
PACK
IF RECCOUNT() > 0
* Informa al usuario
********************
WAIT WINDOW "Buscando Errores " + CURDIR() + lcDbfNom + " " + ;
LTRIM( STR( RECCOUNT() ) ) + ;
" Registros" NOWAIT
* Copio los datos a una tabla temporal
**************************************
COPY TO TEMPO.MAL
* Elimino los registros
***********************
ZAP
* Agrego nuevamente los registros
*********************************
APPEN FROM TEMPO.MAL
ENDIF
*-- cierra la tabla
CLOSE ALL
*-- hace lo mismo con la tabla siguiente en la lista
*-- avanza contador de lista
ENDFOR
IF FILE("TEMPO.MAL")
DELE FILE TEMPO.MAL
ENDIF
WAIT CLEAR
CLOSE ALL
**************************************************
***THISFORM.BORRAINNECESARIOS
****************************************************
DELE FILE *.TBK
DELE FILE *.BAK
