Access - Copia seguridad base datos

 
Vista:

Copia seguridad base datos

Publicado por Mamut (8 intervenciones) el 25/01/2015 14:50:00
A ver quien me puede ayudar!!!
Quiero desde un botón de un formulario de access poder hacer una copia de seguridad en una carpeta que que creado por código con la fecha y hora del sistema. He conseguido hacerlo pero no consigo que la copia la envia a la carpeta que he creado, me hace la copia en escritorio.
Os pongo el código que tengo implementado (gracias a las ayudas que he encontrado por internet en los foros)
Mil gracias

Private Sub Comando1_Click()
Dim Ruta As String
Ruta = "c:\CopiasAccess\"
If Dir(Ruta, vbDirectory) = "" Then
MkDir Ruta
End If
'Crea carpeta con un nombre y seguida la fecha actual
Dim strTemCarpeta As String
Dim strNombreCarpeta As String
strNombreCarpeta = "CopiaDeLaFecha-" & Format(Date, "dd-mm-yyyy") & " a las " & Format(Now, "hh-mm-ss")
strTemCarpeta = Dir("C:\CopiasAccess\" & strNombreCarpeta, vbDirectory)
If strTempCarpeta = "" Then
MsgBox "No existe esta carpeta, ¿QUIERE CREARLA?", vbQuestion, "ATENCION"
MkDir "C:\CopiasAccess\" & strNombreCarpeta
End If
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Copia seguridad base datos

Publicado por Neckkito (1157 intervenciones) el 26/01/2015 15:30:55
Prueba con esto:
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub Comando1_Click()
Dim Ruta As String, rutaBD As String
Dim strTempCarpeta As String
Dim strNombreCarpeta As String
Dim baseCopia As String
Dim fso As Object
Ruta = "c:\CopiasAccess\"
If Dir(Ruta, vbDirectory) = "" Then
MkDir Ruta
End If
'Crea carpeta con un nombre y seguida la fecha actual
strNombreCarpeta = "CopiaDeLaFecha-" & Format(Date, "dd-mm-yyyy") & " a las " & Format(Now, "hh-mm-ss")
strTempCarpeta = Dir("C:\CopiasAccess\" & strNombreCarpeta, vbDirectory)
If strTempCarpeta = "" Then
MsgBox "No existe esta carpeta, ¿QUIERE CREARLA?", vbQuestion, "ATENCION"
MkDir "C:\CopiasAccess\" & strNombreCarpeta
End If
Set fso = CreateObject("Scripting.FileSystemObject")
baseCopia = Ruta & strNombreCarpeta & "\Backup.mdb" 'O \Backup.accdb", o el nombre que quieras para el archivo de backup, respetando la extensión de tu BD.
rutaBD = Application.CurrentProject.FullName
fso.copyfile rutaBD, baseCopia
MsgBox "Backup realizado correctamente", vbInformation, "OK"
End Sub
...

Saludos,
firmaMail
http://neckkito.siliconproject.com.ar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Copia seguridad base datos

Publicado por Mamut (8 intervenciones) el 01/02/2015 10:00:17
Perfecto. Mil gracias es lo que andaba intentando hacer.
Solucionado !!!!!!
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Copia seguridad base datos

Publicado por Neckkito (1157 intervenciones) el 01/02/2015 10:14:15
Hola!

Me alegro que te haya funcionado. Sin embargo, leyendo de nuevo ahora el código hay una pequeña "incongruencia" en la que no me había fijado antes: tú pides a través de un msgbox si se quiere crear la copia, pero en realidad eso no es una petición, sino que es una "imposición". Si quieres que realmente sea una petición modifica parte del código anterior por este, y después ya el código que queda (te lo indico en la última línea comentada):

...
Private Sub Comando1_Click()
Dim Ruta As String, rutaBD As String
Dim strTempCarpeta As String
Dim strNombreCarpeta As String
Dim baseCopia As String
Dim resp as integer
Dim fso As Object
Ruta = "c:\CopiasAccess\"
If Dir(Ruta, vbDirectory) = "" Then
MkDir Ruta
End If
'Crea carpeta con un nombre y seguida la fecha actual
strNombreCarpeta = "CopiaDeLaFecha-" & Format(Date, "dd-mm-yyyy") & " a las " & Format(Now, "hh-mm-ss")
strTempCarpeta = Dir("C:\CopiasAccess\" & strNombreCarpeta, vbDirectory)
If strTempCarpeta = "" Then
resp= MsgBox ("No existe esta carpeta, ¿QUIERE CREARLA?", vbQuestion+vbyesno, "ATENCION")
If resp=vbNo then
msgbox "No se realizó la copia de seguridad puesto que ha decidido no crear la carpeta", vbexclamation,"SIN COPIA"
Exit sub
Else
MkDir "C:\CopiasAccess\" & strNombreCarpeta
End if
End If
'Y aquí el resto de código a partir del set fso
...

Saludos,

Neckkito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Copia seguridad base datos

Publicado por Jose (40 intervenciones) el 12/10/2015 19:04:16
Hola como estas?.
Siguiendo las instrucciones que le has indicado a Mamut, he intentado adaptarlas a mi programa de Gestion pero tengo problemas en la instruccion FSO por no darle el nombre de la base a copiar

Esto es lo que tengo escrito:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Private Sub Comando142_Click()
 
Dim Ruta As String, rutaBD As String
Dim strTempCarpeta As String
Dim strNombreCarpeta As String
Dim baseCopia As String
Dim resp As Integer
Dim fso As Object
Ruta = "c:\COPIASGESTION\"
If Dir(Ruta, vbDirectory) = "" Then
MkDir Ruta
End If
'Crea carpeta con un nombre y seguida la fecha actual
strNombreCarpeta = "CopiaFecha-" & Format(Date, "dd-mm-yyyy") & " a las " & Format(Now, "hh-mm-ss")
strTempCarpeta = Dir("C:\COPIASGESTION\" & strNombreCarpeta, vbDirectory)
If strTempCarpeta = "" Then
resp = MsgBox("No existe esta carpeta, ¿QUIERE CREARLA?", vbQuestion + vbYesNo, "ATENCION")
If resp = vbNo Then
MsgBox "No se realizó la copia de seguridad puesto que ha decidido no crear la carpeta", vbExclamation, "SIN COPIA"
Exit Sub
Else
MkDir "C:\COPIASGESTION\" & strNombreCarpeta
End If
End If
Set fso = CreateObject("Scripting.FileSystemObject")
 
baseCopia = Ruta & strNombreCarpeta & "\Backup.mdbrutaBD = Application.CurrentProject.FullName"
 
fso.copyfile rutaBD, baseCopia
 
MsgBox "Backup realizado correctamente", vbInformation, "OK"
 
End Sub
 
Mis datos de trabajo son:
Carpeta de Copias ----> COPIASGESTION
Nombre base Datos --> GESTION COMERCIAL_be
Directorio Base datos-> C\Archivos de Programa\Gestion Comercial

No se como darle el nombre de la base de Datosque ha de copiar, por eso la instruccion fso.copyfile me da error 5:Argumento de llamada No valido

Te agradeceria muchisimo si puedieses ayudarme.
Un saludo y gracias de antemano
Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Copia seguridad base datos

Publicado por Neckkito (1157 intervenciones) el 12/10/2015 21:11:55
Hola!

Debajo del <Set fso = CreateObject("Scripting.FileSystemObject")> escribe esto:

rutaBD = Application.CurrentProject.FullName
baseCopia = Ruta & strNombreCarpeta & "\" & Application.CurrentProject.Name

y después ya sigues con fso.copyfile

Saludos,

Neckkito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar