PDF de programación - Backup Local en Tiempo de Ejecución

Imágen de pdf Backup Local en Tiempo de Ejecución

Backup Local en Tiempo de Ejecucióngráfica de visualizaciones

Publicado el 14 de Enero del 2017
902 visualizaciones desde el 14 de Enero del 2017
184,3 KB
4 paginas
Creado hace 11a (28/09/2012)
BACKUP LOCAL EN TIEMPO DE EJECUCIÓN1

INTRODUCCIÓN

A través de este ejemplo vamos a ver cómo podemos hacer
un backup de nuestra base de datos el tiempo que estamos
operando con ella.

Es importante tener en cuenta que este ejemplo sólo sirve
para realizar un backup en una BD local, no en Front-
End/Back-End. Por favor tened esto en cuenta si vais a
aplicar este ejemplo en vuestras BD's

Ya os adelanto que para poder hacer que el código funcione, dado que está basado en el
Scripting Runtime, será necesario registrar la librería “Microsoft Scripting Runtime”. Si no
tenéis ni idea de lo que estoy hablando no os preocupéis: en el desarrollo del ejemplo os
explico cómo se hace eso.

Dicho lo anterior vamos a empezar.

PREPARANDO NUESTRA BD
Vamos a realizar el backup teniendo en cuenta lo siguiente:





El archivo de backup se va a crear en una carpeta dentro del directorio donde tengamos
nuestra BD

El nombre del backup va a estar compuesto por la fecha al revés (para poder lograr una
ordenación cronológica) más el nombre de la BD

Lo que tenemos que hacer es, en el formulario que queramos o bien en un formulario en
blanco, añadir un botón de comando, que yo llamaré cmdBackup (para asignar ese nombre al
botón de comando debemos sacar sus propiedades

Pestaña Otras

Nombre)





En el evento “Al hacer click” del boton generamos el siguiente código2:


Private Sub cmdBackup_Click()
Call creaBackup
End Sub


Y listo. Como veis, el código llama a un procedimiento de nombre creaBackup, que veremos a
continuación.

PROGRAMANDO NUESTRO MÓDULO
Vamos a crearnos un módulo. Para ello, en el menú del editor de VB (VBE) nos vamos a Menú
Insertar

Módulo



1 La BD de ejemplo os la podéis bajar aquí.
2

Para generar código nos ponemos en la parte en blanco junto al evento que queramos, y veremos cómo nos aparece un pequeño
botón de puntos suspensivos. Si hacemos click sobre él nos aparecerá una ventana. Le decimos que queremos generar código.
Se nos abrirá el editor de VB, con dos líneas por defecto (Private Sub... y End Sub). Esas dos líneas no deben tocarse. El código lo
escribimos entre dichas líneas

Visítame en http://siliconproject.com.ar/neckkito/

1

A ese módulo lo guardamos con el nombre de mdlBackup.

Ahora vamos a tener que programar el procedimiento que
nos hará la copia de seguridad.

Como ya os comentaba en la introducción, deberemos antes
registrar la referencia “Microsoft Scripting Runtime”. Para
ello, en el menú del VBE, nos vamos a Menú Herramientas


Referencias...

Se nos abrirá una ventana con todas las referencias de que
disponemos en nuestra BD. Buscamos “Microsoft Scripting
Runtime” y marcamos su check. Aceptamos y ya tenemos nuestra
referencia registrada.

Volvamos al módulo. Veremos que nos aparece ahí una línea que indica “Option Compare
Database” (y si hemos requerido declaración de variables nos aparecerá una segunda línea
diciendo “Option Explicit”). Debajo de dicha línea (o líneas) escribimos el siguiente código. Os
lo pongo totalmente comentado para que sepáis qué hace cada cosa:


Public Sub creaBackup()
'-----CREADO POR NECKKITO EL 07/05/12-----
'--------Modificado: 12/08/12-----
'-----------http://siliconproject.com.ar/neckkito/-----
'----------Requiere registrar la librería "Microsoft Scripting Runtime"-----

On Error GoTo sol_err

'Declaramos las variables
Dim fsc As Scripting.Folder 'fsc=filesystem-Carpeta
Dim fsa As Scripting.File 'fsa=filesystem-Archivo
Dim fso As FileSystemObject ' fso=filesystem-Objeto
Dim rutaFullBD As String, nombreBD As String
Dim rutaBackup As String, nombreBackup As String
Dim fullBackup As String
Dim resp As Integer
Dim yaExisteBackup As Boolean

'Cogemos la información de la BD actual
rutaFullBD = Application.CurrentProject.FullName
'Cogemos el nombre de la BD
nombreBD = Application.CurrentProject.Name
'Definimos la carpeta "Backup", dentro del directorio donde está la BD
'actual, como la ruta predefinida para guardar el backup
rutaBackup = Application.CurrentProject.Path & "\Backups\"
'Definimos el nombre del backup, que será la fecha del sistema más el nombre de la BD
'A la fecha le damos formato con separador por puntos porque la barra nos
'daría un nombre de archivo no válido. Ponemos antes el mes para conseguir una
'ordenación correcta por fecha
nombreBackup = Format(Date, "yy.mm.dd") & "-" & nombreBD
'Creamos el fullBackup (ruta+nombre+extension)
fullBackup = rutaBackup & nombreBackup
'Lanzamos un aviso diciendo dónde se va a crear la copia de seguridad y qué
'nombre tendrá. Solicitamos confirmación al usuario.
resp = MsgBox("Se va a realizar una copia de seguridad con la siguiente ruta y" _
& " nombre de archivo:" & vbCrLf & vbCrLf & fullBackup _
& vbCrLf & vbCrLf & vbTab & "¿Continuar?", vbQuestion + vbYesNo, "BACKUP")
'Si la respuesta es NO salimos del proceso
If resp = vbNo Then Exit Sub
'Creamos el FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
'Accedemos a la carpeta de copias de seguridad. Si la carpeta no existe
'nos saltará el error 76. Lo gestionamos desde el control de errores
Set fsc = fso.GetFolder(rutaBackup)

Visítame en http://siliconproject.com.ar/neckkito/

2

'Establecemos la hipótesis de que ya existe una copia de la BD con el mismo nombre
yaExisteBackup = True
'Comprobamos si efectivamente ya existe una copia con el mismo nombre.
'Si el archivo no existe nos saltará el error 53. Lo gestionamos desde

'el control de errores
Set fsa = fso.GetFile(fullBackup)
'Si ya existe el backup informamos y pedimos al usuario qué desea
hacer
If yaExisteBackup = True Then
resp = MsgBox("Ya existe un backup con el mismo nombre. ¿Desea
sobrescribirlo?", _
vbQuestion + vbYesNo, "COPIA EXISTENTE")
'Si el usuario no desea sobrescribir salimos del proceso
If resp = vbNo Then Exit Sub
End If
'Finalmente, guardamos la copia de seguridad
fso.CopyFile rutaFullBD, fullBackup
'Lanzamos un mensaje de aviso
MsgBox "Copia de seguridad realizada correctamente", vbInformation, "CORRECTO"
Salida:
Exit Sub
sol_err:
'Gestionamos los errores 76, 53 y otros.
Select Case Err.Number
Case 76 'La carpeta no existe
'Creamos la carpeta
fso.CreateFolder (rutaBackup)
'Seguimos con la ejecución del código en el punto de interrupción
Resume Next
Case 53 'El archivo no existe
'Cambiamos el valor de yaExisteBackup
yaExisteBackup = False
'Seguimos con la ejecución del código en el punto de interrupción
Resume Next
Case Else 'Si se produce otro error
MsgBox "Se ha producido el error: " & Err.Number & " - " & Err.Description
Resume Salida
End Select
End Sub


Como comentario os diré que el código parte de las premisas de que la carpeta de backups y el
archivo de backup ya existen previamente. Por eso las líneas

Set fsc = fso.GetFolder(rutaBackup)

y

Set fsa = fso.GetFile(fullBackup)

lo que hacen es “coger” la carpeta (primera línea) y el archivo (segunda línea).

¿Qué pasa si no existe la ruta o el archivo? Pues que el código devuelve un error. Y lo que
hacemos, a través del control de errores, es gestionar dichos errores según nuestra
conveniencia. Es decir, que Access me dice: “¡Ojo, que la carpeta de backup no existe!”, y yo, a
través del control de errores, le digo: “Ok, pues créamela”.

Luego Access me dice: “¡Ojo, que el archivo ya existe!”, y yo, a través del control de errores, le
digo: “Perfecto: aviso al usuario y, si lo quiere sobrescribir, pues que lo sobrescriba, y si no,
pues salimos del proceso”

Más cosas...

Fijaos que la ruta el backup se la estoy dando a través de la variable <rutaBackup>, cuyo
valor nos viene dado por la línea

Visítame en http://siliconproject.com.ar/neckkito/

3

rutaBackup = Application.CurrentProject.Path & "\Backups\"

¿Qué pasa si yo quiero los backup en otra parte? Pues que
simplemente deberíamos indicar dónde queremos el backup
modificando la asignación de valor de esa variable. Más
claro, si yo quiero el backup en la carpeta Neckkito, que
está en la unidad D, lo que debería escribir es:

rutaBackup = “D:\Neckkito\”

Es importante que no os olvidéis de poner la contrabarra al final.
¡Tened esto en cuenta!

PARA FINALIZAR EL EJEMPLO
Poca cosa me queda para añadir en este ejemplo. Como veis hay que tener algunos
conocimientos de cómo funciona el “Scripting Runtime”, pero creo que por poca idea de VBA
que tengáis podréis intuir con bastante claridad qué hace el código.

Espero que os sea útil y que no tengáis problemas para adaptarlo a vuestras BD's.

Un saludo y...

¡suerte!

Visítame en http://siliconproject.com.ar/neckkito/

4
  • Links de descarga
http://lwp-l.com/pdf696

Comentarios de: Backup Local en Tiempo de Ejecución (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad