PDA

Ver la Versión Completa : Realizar copia de seguridad de una base de datos


alt126
17-11-2005, 09:27:39
El codigo siguiente es para, teniendo instalada una base de datos ODBC, hacer una copia del fichero de la base de datos, indicando el destino.

sdCopia es un TSaveDialog.
El tratamiento que se hace con la fecha, es para sustituir los "/" por "-", ya que los "/", no estan permitidos en el nombre del archivo.

En definitiva, lo que hace es buscar la ruta de la base de datos, a partir del registro de windows y luego añadirle al nombre del fichero destino, la fecha actual. Por ultimo permite a traves de un dialogo de guardar archivo, seleccionar el destino de la copia.



#include <registry.hpp>
...
...
...

//Generamos una copia de seguridad.
TRegistry *registrowindows = new TRegistry;
String nombreorigen,fecha;
//Buscamos en el registro donde esta la base de datos.
//a partir del ODBC.
registrowindows->OpenKey("Software",false);
registrowindows->OpenKey("ODBC",false);
registrowindows->OpenKey("ODBC.INI",false);
registrowindows->OpenKey("BaseDatosFacturas",false);
nombreorigen = registrowindows->ReadString("DBQ");
fecha=DateToStr(Date());
fecha.Delete(3,1);
fecha.Insert("-",3);
fecha.Delete(6,1);
fecha.Insert("-",6);
sdCopia->FileName = "BaseDatos - " + fecha;
if(sdCopia->Execute())
{
CopyFile(nombreorigen.c_str(),sdCopia->FileName.c_str(),true);
MessageDlg("Copia de seguridad realizada", mtInformation,TMsgDlgButtons() << mbOK, 0);
}
else
MessageDlg("Se ha cancelado la Copia de seguridad", mtWarning,TMsgDlgButtons() << mbOK, 0);