Backup de la base de datos

Hola
Estoy haciendo un sistema para un consultorio medico y quería darle al usuario la posibilidad de tener una opción en el menu para que pueda hacer backup de la base de datos.
El usuario tiene muy poco idea en el tema informática, así que necesito que sea lo más sencillo posible.
El problema es que no se como hacerla.
Yo había pensado crear una carpeta nueva y copiarle todos los archivos dbf y otros 2 que tienen extensión .dbc y otro .dct para que los grabe en un cd.
No se si esta es una solución redimentaria.
¿Existe otra forma?
Las tablas son 27
Gracias

1 Respuesta

Respuesta
1
Si, es una buena solución, aquí te doy un procedimiento de ejemplo, o para hacer copia de seguridad de una base de datos:
Procedure CopyData
Parameters lcDirectory * ? este parámetro es el directorio de destino.
If.Not.Directory(lcDirectory)
Messagebox("El directorio no existe.", 48, "Ejemplo")
Return .F.
Endif
lcCurDir = FullPath(Curdir())
Local lnFiles[1], i, dbf_file, cdx_file, fpt_file, lcPathTables,;
dbf_copy, cdx_copy, fpt_copy, lcRetval, cDatabase, fDatabase, dbc_copy, dtc_copy
Close Databases All
cDatabase = "Contabilidad.dbc"
fDatabase = "Contabilidad".dct"
dbc_copy = lcDirectory + "\" + "Contabilidad.dbc"
dtc_copy = lcDirectory + "\" + "Contabilidad.dct"
If Upper(cDatabase) == Upper(dbc_copy)
*El directorio de destino no debe el mismo que el de origen."
Messagebox("El directorio no es válido.", 48, "Ejemplo")
If FullPath(Curdir()) <> lcCurDir
Set Default To (lcCurDir)
Endif
Return .F.
Endif
If File(dbc_copy)
Delete File (dbc_copy)
Endif
Copy File (cDatabase) To (dbc_copy)
If File(dtc_copy)
Delete File (dtc_copy)
Endif
Copy File (fDatabase) To (dtc_copy)
*Abrir la base de datos para copiar las tablas, vistas, y toda su información.
lcDatabase = Curdir() + "Contabilidad.dbc" && suponiendo que la base de datos se encuentra en el directorio actual de Visual FoxPro.
Open Database (lcDatabase)
lcPathTables = Substr(lcDatabase, 1, (Len(cDatabase) - Len(cDatabase)))
For i = 1 To Adbobjects(lnFiles, "Table")
If !Empty(lnFiles)
If !Used(lnFiles)
dbf_file = lcPathTables + lnFiles + ".dbf"
cdx_file = lcPathTables + lnFiles + ".cdx"
fpt_file = lcPathTables + lnFiles + ".fpt"
dbf_copy = lcDirectory + "\" + lnFiles + ".dbf"
cdx_copy = lcDirectory + "\" + lnFiles + ".cdx"
fpt_copy = lcDirectory + "\" + lnFiles + ".fpt"
If File(dbf_file)
If File(dbf_copy) && Si el archivos existe se lo elimina y actualiza.
Delete File (dbf_copy)
Endif
Copy File (dbf_file) To (dbf_copy)
Endif
If File(cdx_file)
If File(cdx_copy) && Si el archivos existe se lo elimina y actualiza.
Delete File (cdx_copy)
Endif
Copy File (cdx_file) To (cdx_copy)
Endif
If File(fpt_file)
If File(fpt_copy) && Si el archivos existe se lo elimina y actualiza.
Delete File (fpt_copy)
Endif
Copy File (fpt_file) To (fpt_copy)
Endif
lcRetval = .T.
Endif
Else
Messagebox("Debe cerrar todas las tablas de la base de datos, 64, "Ejemplo")
lcDeleteFile = lcDirectory + "*.*"
Delete File (lcDeleteFile)
Exit
Endif
EndFor
If FullPath(Curdir()) <> lcCurDir
Set Default To (lcCurDir)
Endif
Return lcRetval
Endproc
Esto te puede servir de ayuda...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas