Access - Copias de seguridad

   
Vista:

Copias de seguridad

Publicado por Patres (22 intervenciones) el 21/03/2011 13:43:26
Hola a todos.
Tengo una aplicación que usan varios usuarios y que al salir de ella, al finalizar la jornada laboral, se crea una copia de seguridad en una carpeta (COPIAS DE SEGURIDAD).
El problema es que se van almacenando las copias de seguridad y nadie borra las antiguas.
He pensado que al crear la copia de seguridad borre también las copias anteriores a X días.
Estoy Intentando hacerlo de varias maneras y me pierdo:
1ª- Sería llenar un cuadro de lista con los archivos que cumplan esa condición y que sea el usuario el que decida si los borra o no. PROBLEMA: No se como llenar el cuadro de lista con los archivos anteriores a x fecha.
2ª- Como al pulsar el botón de Salir, sale un MsgBox pidiendo confirmación de grabar la copia de seguridad, podría hacer (si elige SI) que salieran dos mensajes parpadeantes: 1º (Grabando Copia de Seguridad...) mientras se graba la copia. 2º (Borrando Copias Antiguas...) mientras borra las copias antigua. PROBLEMA pues que no consigo coordinar el timer con los mensajes y borrar X archivos anteriores a x fecha.
En fin, si alguien puede ayudarme... O decirme donde puedo conseguir ejemplos que me puedan guiar en el tema...

(Creo que la segunda opción sería la ideal)
Gracias
Patres
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

Copias de seguridad

Publicado por Emilio (221 intervenciones) el 23/03/2011 01:31:57
Hola Patres te voy a decir como lo tengo yo, tengo un formulario de inicio el cual siempre esta, al salir de el te saca de la aplicación y tengo puesto esto en el boton de salir:

Private Sub salir_Click()
On Error GoTo Err_salir_Click
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile CurrentProject.FullName, Replace(CurrentProject.FullName, ".", "." & Format(Now, "wyy") & ".")
Set fso = Nothing
DoCmd.Quit


Exit_salir_Click:
Exit Sub

Err_salir_Click:
MsgBox Err.Description
Resume Exit_salir_Click

End Sub

Aparte de salirse te crea 7 bases de datos por cada dia de la semana y en la siguente semana te rescribre sobre las ya creadas, siempre contaras con un respaldo de una semana.
No les pregunto si quieren o no crear la base es en automático, para que preguntar si lo debes de hacer. Saludos.
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

Copias de seguridad

Publicado por Patres (22 intervenciones) el 23/03/2011 14:17:33
Gracias Emilio por tu respuesta. Es la que voy a utilizar.

Yo estaba intentando hacerlo de la siguiente manera.
Al iniciar el programa grababa lo nombres de las copias de seguridad que cumplian la condición (Format(Date - 5...) en una pequeña tabla para luego al salir al salir del programa borrarlos.
Empezaba a ser un poco engorroso cuado he leido tu respuesta.

Voy a trabajar con la la linea siguiente para intentar, si es posible, que la extensión del archivo sea .BAK y aclarar algunas dudas.

fso.CopyFile CurrentProject.FullName, Replace(CurrentProject.FullName, ".", "." & "(Copia de la semana " & Format(Now, "w-yyyy") & ")" & ".")

DUDAS:
Esta es la copia que se graba: DiUr.(Copia de la semana 4-2011).mdb
Cada vez que un usuario cierre el programa en el mismo día se regraba sobre el mismo. Y durante toda la semana se sigue regrabando el mismo archivo Ejemplo: DiUr.(Copia de la semana 4-2011).mdb. Luego en la siguiente semana 5-2011 sucederá lo mismo. Es decir que al final del mes tendré una copia por semana. Y en el siguiente mes se regraban sobre los 4 o 5 archivos del mes anterior. ¿Es esto correcto? o ¿me he equivocado al interpretarlo?
Por favor dime algo,

Gracias Emilio.
Patres
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

Copias de seguridad

Publicado por Disculpa Emilio (22 intervenciones) el 23/03/2011 14:43:43
Disculpa Emilio. Lo he interpretado mal.
Como estaba haciendo pruebas y siempre me salia 4-2011 Cambié de fecha el reloj del sistema con la mala fortuna que elejí también un miercoles. Así que... Lo siento.
Sigo buscando la forma de que la extensión sea .BAK.

Saludos Emilio
Patres
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

Copias de seguridad

Publicado por Emilio (221 intervenciones) el 23/03/2011 17:07:45
Como comienza por Domingo el primer dia tendrias
1-2011 Domingo
2-2011 Lunes
3-2011 Martes
4-2011 Miercoles
5-2011 Jueves
6-2011 Viernes
7-2011 Sabado

Yo solo lo pondria en el servidor, si tu maquina es el servidor y es la ultima que se apaga solo en esa, y para cambiar el nombre a bak algo así:

Private Sub salir_Click()
On Error GoTo Err_salir_Click
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile CurrentProject.FullName, Replace(CurrentProject.FullName, ".", "." & Format(Now, "wyy") & ".")
Set fso = Nothing
If GetAttr("C:\Ruta\Nombre.411.mdb") Then
Name "C:\Ruta\Nombre.411.mdb" As "C:\Ruta\Nombre.411.bak"
End If

DoCmd.Quit

Exit_salir_Click:
Exit Sub

Err_salir_Click:
MsgBox Err.Description
Resume Exit_salir_Click

End Sub

donde repetiria 7 veces la linea:

If GetAttr("C:\Ruta\Nombre.411.mdb") Then
Name "C:\Ruta\Nombre.411.mdb" As "C:\Ruta\Nombre.411.bak"
End If

Por cada dia de la semana del nombre de tu programa Nombre.311.mdb etc. Saludos.
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

Copias de seguridad

Publicado por Patres (22 intervenciones) el 24/03/2011 13:51:51
Gracias de nuevo, Emilio.
Mi ordenador no es el servidor. ¡Jo! Imaginate. Es uno de los cientos de ordenadores que hay.
Hay distintos grupos o departamentos que comparten un común de almacenamiento. Yo uso nuestro común para ubicar las distintas carpetas de almacenamiento y el MDB que usamos. Y los usuarios que lo utilizan, como máximo, son siete.

Ya lo tengo funcionando. El problema era mi desconocimiento con los formatos de fecha.
Gracias a tu ejemplo, al final solo he tenido que modificar un poco lo que ya tenía. De momento me ha quedado así y funciona.

Dim VDiaSemanaTxt, VNombreCopiaSeguridad, VPath As String
VDiaSemanaTxt = Format(Now, "dddd")
VPath = CurrentProject.path
VNombreCopiaSeguridad = "DiUr (Copia del " & VDiaSemanaTxt & ")" & ".BAK"
'VDirCopiaDeSeguridad forma parte de un grupo de Public Const declaradas en un modulo que establecen las distintas carpetas necesarias para el programa.

Dim Vcopia As Integer
Vcopia = MsgBox(" ¿ QUIERE HACER UNA COPIA DE SEGURIDAD DE DiUr ? " & vbCrLf & _
"Esta copia sustituirá a la copia anterior, si la hay. Con el nombre: " & vbCrLf & _
vbCrLf & " ( " & VNombreCopiaSeguridad & " )", vbYesNo + vbQuestion, "DiUr-COPIA DE
SEGURIDAD")

Select Case Vcopia
Case vbYes
'¿poner mensaje/etiqueta aquí de espere un momento. Copiando...?
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile CurrentProject.FullName, VDirCopiaDeSeguridad & VNombreCopiaSeguridad
Set fso = Nothing
Case vbNo
'MsgBox ("HA ELEGIDO NO") 'Ok
End Select

Saludos Emilio
Patres.
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