Que tal foro, alguien me puede decir como puedo respaldar la bd completa, en pocas palabras crear otro archivos, una copia.
Mi bd es access.
De antemano, gracias...
Que tal foro, alguien me puede decir como puedo respaldar la bd completa, en pocas palabras crear otro archivos, una copia.
Mi bd es access.
De antemano, gracias...
Que la fuerza te acompañe !
Aqui te dejo una rutina que uso para respaldar la base de datos de una aplicacion ...
Espero te sirva ...
Saludos ...
Código:Dim bCompactando As Boolean Private Sub cmdRespaldar_Click() Dim oMDB As DAO.Database Dim nYesNo As VbMsgBoxResult Dim sBackup As String, sOld_BDResi As String Me.cmdRespaldar.Enabled = False Me.cmdSalir.Enabled = False On Error Resume Next ' Si la base de datos esta abierta, la cerramos ... If Not BDResi Is Nothing Then BDResi.Close Set BDResi = Nothing End If On Error GoTo Error_CreateSubFolder Me.txtAdvertencia = Me.txtAdvertencia & vbCrLf & vbCrLf & _ "Generando el subfolder para respaldo de la base de datos ..." Me.txtAdvertencia.SelLength = Len(Me.txtAdvertencia) Me.txtAdvertencia.SelStart = Len(Me.txtAdvertencia) Me.txtAdvertencia.Refresh DoEvents ' Si no existe el folder para respaldos, lo generamos ... If Dir(App.Path & "\Respaldos\*.*", vbDirectory) = "" Then MkDir App.Path & "\Respaldos" End If ' Generamos nombre para respaldo (nombre mdb + fecha +hora.mdb) ... sBackup = CStr(CSng(Now)) sBackup = Trim(Replace(sBackup, ".", "_")) sBackup = App.Path & "\Respaldos\Residentes_" & sBackup & ".mdb" On Error GoTo Error_Kill_Old_Backup Me.txtAdvertencia = Me.txtAdvertencia & vbCrLf & vbCrLf & _ "Eliminando respaldo previo de la base de datos ..." Me.txtAdvertencia.SelLength = Len(Me.txtAdvertencia) Me.txtAdvertencia.SelStart = Len(Me.txtAdvertencia) Me.txtAdvertencia.Refresh DoEvents ' Si existe el archivo en folder de respaldos, eliminarlo ... If Dir(sBackup) <> "" Then Kill sBackup End If On Error GoTo Error_Exclusividad Reintenta_Acceso_Exclusivo: ' pRutaBDResi = ruta y nombre de la base de datos a respaldar ... Set oMDB = DBEngine.OpenDatabase(pRutaBDResi, True, False, ";PWD=elPassword") On Error GoTo 0 oMDB.Close Set oMDB = Nothing bCompactando = True Me.txtAdvertencia = Me.txtAdvertencia & vbCrLf & vbCrLf & _ "Generando el respaldo de la base de datos ..." Me.txtAdvertencia.SelLength = Len(Me.txtAdvertencia) Me.txtAdvertencia.SelStart = Len(Me.txtAdvertencia) Me.txtAdvertencia.Refresh DoEvents Me.MousePointer = vbHourglass Screen.MousePointer = vbHourglass DBEngine.CompactDatabase pRutaBDResi, sBackup, , , ";PWD=elPassword" Me.txtAdvertencia = Me.txtAdvertencia & vbCrLf & vbCrLf & _ "Compactando la base de datos (Liberando Espacio) ..." & vbCrLf & vbCrLf Me.txtAdvertencia.SelLength = Len(Me.txtAdvertencia) Me.txtAdvertencia.SelStart = Len(Me.txtAdvertencia) Me.txtAdvertencia.Refresh DoEvents ' Antes de regresar la MDB compactada, renombro la mdb actual (solo por si acaso ...) sOld_BDResi = pRutaBDResi & "_Old.mdb" If Dir(sOld_BDResi) <> "" Then Kill sOld_BDResi Name pRutaBDResi As sOld_BDResi ' Regreso la MDB compactada ... DBEngine.CompactDatabase sBackup, pRutaBDResi, , , ";PWD=elPassword" Me.txtAdvertencia = Me.txtAdvertencia & vbCrLf & vbCrLf & _ "Finalizó la generación del respaldo de la base de datos !" & vbCrLf & vbCrLf & _ "Si lo deseas, ya puedes salir de la aplicación y apagar el equipo ..." & vbCrLf Me.txtAdvertencia.SelLength = Len(Me.txtAdvertencia) Me.txtAdvertencia.SelStart = Len(Me.txtAdvertencia) Me.txtAdvertencia.Refresh DoEvents bCompactando = False Me.MousePointer = vbArrow Screen.MousePointer = vbArrow Me.txtAdvertencia.Enabled = True Me.txtAdvertencia.Locked = True Me.cmdRespaldar.Enabled = False Me.cmdSalir.Enabled = True Me.cmdSalir.Caption = "&Salir" Exit Sub Error_CreateSubFolder: MsgBox "Error " & Err.Number & vbCrLf & _ Err.Description & vbCrLf & vbCrLf & _ "Al intentar generar el subfolder " & App.Path & "\Respaldos" & vbCrLf, _ vbCritical + vbOKOnly Me.txtAdvertencia = Me.txtAdvertencia & vbCrLf & vbCrLf & _ "El proceso de respaldo de la base de datos ha sido cancelado ..." & vbCrLf & vbCrLf Me.txtAdvertencia.SelLength = Len(Me.txtAdvertencia) Me.txtAdvertencia.SelStart = Len(Me.txtAdvertencia) Me.cmdSalir.Enabled = True bCompactando = False Exit Sub Error_Kill_Old_Backup: MsgBox "Error " & Err.Number & vbCrLf & _ Err.Description & vbCrLf & vbCrLf & _ "Al intentar eliminar respaldo antiguo " & sBackup & vbCrLf, _ vbCritical + vbOKOnly Me.txtAdvertencia = Me.txtAdvertencia & vbCrLf & vbCrLf & _ "El proceso de respaldo de la base de datos ha sido cancelado ..." & vbCrLf & vbCrLf Me.txtAdvertencia.SelLength = Len(Me.txtAdvertencia) Me.txtAdvertencia.SelStart = Len(Me.txtAdvertencia) Me.cmdSalir.Enabled = True bCompactando = False Exit Sub Error_Exclusividad: nYesNo = MsgBox("Error " & Err.Number & vbCrLf & _ Err.Description & vbCrLf & vbCrLf & _ "Al intentar accesar en forma EXCLUSIVA la base de datos del sistema " & vbCrLf & _ vbCrLf & "Verifica que nadie esté laborando en el sistema !" & vbCrLf & _ vbCrLf & "Deseas reintentar el acceso ?", vbCritical + vbYesNo) If nYesNo = vbYes Then Resume Reintenta_Acceso_Exclusivo End If Me.txtAdvertencia = Me.txtAdvertencia & vbCrLf & vbCrLf & _ "El proceso de respaldo de la base de datos ha sido cancelado ..." & vbCrLf & vbCrLf Me.txtAdvertencia.SelLength = Len(Me.txtAdvertencia) Me.txtAdvertencia.SelStart = Len(Me.txtAdvertencia) Me.cmdSalir.Enabled = True bCompactando = False Exit Sub End Sub
Hola,aca tambien tenes algunos ejemplos que te pueden servir:
<a href="http://www.recursosvisualbasic.com.ar/htm/ocx-componentes-activex-dll/41-modulo-para-backup-de-base-de-datos.htm" target="_blank">Módulo para realizar copias de seguridad de bases
de datos</a>
saludos.
Todos somos ignorantes;lo que pasa es que no todos ignoramos las mismas cosas - Albert Einstein