Visual Basic - copia de seguridad

Life is soft - evento anual de software empresarial
 
Vista:

copia de seguridad

Publicado por luis (10 intervenciones) el 03/03/2007 17:21:31
hola a todos, necesito un poco de ayuda quiero saber como puedo realizar una copia de seguridad de una base de datos desde un boton de comando,
gracias
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

RE:copia de seguridad

Publicado por Matias (3 intervenciones) el 03/03/2007 22:27:12
Te dejo un ejemplo simple para hacer una copia de seguridad, yo lo uso en el load, por que me gusta que cada vez que inicia el programa, este me haga una copia de seguridad.
Lo mismo lo podes poner en un boton de comando...

Private Sub Form_Load()

Dim fuente, destino As String
fuente = App.Path & "\datos.mdb"
destino = App.Path & "\Backup\Backup.mdb"
FileCopy fuente, destino

End Sub

Donde "Datos.mdb" es el nombre de mi base de datos, y "Backuo.mdb" es el nombre de la base de datos que se crea cuando se hace el backup... este se hace en una carpeta, que la llame Backup que esta dentro del directorio del programa, en archivos de programas, cada vez que inicia, la base de datos se respalda en esa carpeta, reemplazando la anterior...
Culquier dua escribime al mail que te doy una mano...
Suerte!!

Matias
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

RE:copia de seguridad

Publicado por luis (10 intervenciones) el 05/03/2007 15:43:51
gracias, matias voy a probar para ver que tal, gracias por tu ayuda
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

Asi queda en un boton guardar como...

Publicado por Elias Mendieta (30 intervenciones) el 06/03/2007 18:41:41
crea dos texbox

uno txtorigen.txt y en load le escribes la ruta de la base de datos
txtdestino y dejalo en blanco

un boton cmdrespaldar

crea un modulo con el siguiente codigo:
'----------------------------------------------------------------------------------

Option Explicit

Private Const OFN_HIDEREADONLY = &H4
Private Const OFN_FILEMUSTEXIST = &H1000
Private Const OFN_CREATEPROMPT = &H2000
Private Const OFN_OVERWRITEPROMPT = &H2
Private Const OFN_EXPLORER = &H80000

Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Long

Dim ofn As OPENFILENAME

'Muestra el cuadro de dialogo para abrir archivos:
Public Function OpenFile(hwnd As Long, Filter As String, Title As String, InitDir As String, Optional Filename As String, Optional FilterIndex As Long) As String
On Local Error Resume Next

Dim ofn As OPENFILENAME
Dim a As Long

ofn.lStructSize = Len(ofn)
ofn.hwndOwner = hwnd
ofn.hInstance = App.hInstance

If VBA.Right$(Filter, 1) <> "|" Then Filter = Filter + "|"

For a = 1 To Len(Filter)
If Mid$(Filter, a, 1) = "|" Then Mid(Filter, a, 1) = Chr(0)
Next

ofn.lpstrFilter = Filter
ofn.lpstrFile = Space$(254)
ofn.nMaxFile = 255
ofn.lpstrFileTitle = Space$(254)
ofn.nMaxFileTitle = 255
ofn.lpstrInitialDir = InitDir
If Not Filename = vbNullString Then ofn.lpstrFile = Filename & Space$(254 - Len(Filename))
ofn.nFilterIndex = FilterIndex
ofn.lpstrTitle = Title
ofn.flags = OFN_HIDEREADONLY Or OFN_FILEMUSTEXIST
a = GetOpenFileName(ofn)

If a Then
OpenFile = Trim$(ofn.lpstrFile)
If VBA.Right$(VBA.Trim$(OpenFile), 1) = Chr(0) Then OpenFile = VBA.Left$(VBA.Trim$(ofn.lpstrFile), Len(VBA.Trim$(ofn.lpstrFile)) - 1)

Else
OpenFile = vbNullString

End If

End Function

'Muestra el cuadro de dialogo para guardar archivos:
Public Function SaveFile(hwnd As Long, Filter As String, Title As String, InitDir As String, Optional Filename As String, Optional FilterIndex As Long) As String
On Local Error Resume Next

Dim ofn As OPENFILENAME
Dim a As Long

ofn.lStructSize = Len(ofn)
ofn.hwndOwner = hwnd
ofn.hInstance = App.hInstance

If VBA.Right$(Filter, 1) <> "|" Then Filter = Filter + "|"

For a = 1 To Len(Filter)
If Mid(Filter, a, 1) = "|" Then Mid(Filter, a, 1) = Chr(0)
Next

ofn.lpstrFilter = Filter
ofn.lpstrFile = Space(254)
ofn.nMaxFile = 255
ofn.lpstrFileTitle = Space(254)
ofn.nMaxFileTitle = 255
ofn.lpstrInitialDir = InitDir
If Not Filename = vbNullString Then ofn.lpstrFile = Filename & Space(254 - Len(Filename))
ofn.nFilterIndex = FilterIndex
ofn.lpstrTitle = Title
ofn.flags = OFN_HIDEREADONLY Or OFN_OVERWRITEPROMPT Or OFN_CREATEPROMPT Or OFN_EXPLORER
a = GetSaveFileName(ofn)

If a Then
SaveFile = Trim$(ofn.lpstrFile)
If VBA.Right$(Trim$(SaveFile), 1) = Chr(0) Then SaveFile = VBA.Left$(Trim$(ofn.lpstrFile), Len(Trim$(ofn.lpstrFile)) - 1) & GetExtension(ofn.lpstrFilter, ofn.nFilterIndex)

Else
SaveFile = vbNullString

End If

End Function

'Extrae la extension seleccionada del filtro:
Private Function GetExtension(sfilter As String, pos As Long) As String
Dim Ext() As String

Ext = Split(sfilter, vbNullChar)

If pos = 1 And Ext(pos) <> "*.*" Then
GetExtension = "." & Replace(Ext(pos), "*.", "")
Exit Function

End If

If pos = 1 And Ext(pos) = "*.*" Then
GetExtension = vbNullString
Exit Function

End If

If InStr(Ext(pos + 1), "*.*") Then
GetExtension = vbNullString

Else
GetExtension = "." & Replace(Ext(pos + 1), "*.", "")

End If

End Function

'----------------------------------------------------------------------------------
el codigo del cmdrespaldar es el siguiente:
'----------------------------------------------------------------------------------
Private Sub cmdrespaldar_Click()
Filename = SaveFile(Me.hwnd, "Archivo de Respaldo|*.sie|", ".:: Respaldar Archivo ::.", "C:\", "RESPALDO", 2)
If Filename <> "" Then
txtdestino.Text = Filename
FileCopy txtorigen.Text, txtdestino.Text
MsgBox "Archivo Guardado Como: " & txtdestino.Text, vbInformation, " :: SIE::"
Else
MsgBox "Presionaste Cancelar", vbExclamation, " :: SIE::"
End If
End Sub

Private Sub Form_Load()
Move (Screen.Width - Width) \ 2, (Screen.Height - Height) \ 2
txtorigen.Text = App.Path & "\BDSIEORGNL.mdb"
txtdestino.Text = App.Path & "\Respaldo\RESPSIE.sie"
End Sub

cualquier duda agregame al msn
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de JOSE
Val: 58
Ha disminuido 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Asi queda en un boton guardar como...

Publicado por JOSE (36 intervenciones) el 31/10/2020 02:20:21
no esta mal pero para mi gusto le falta el boton recuperar copia ,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

RE:copia de seguridad

Publicado por rodrigo (1 intervención) el 05/09/2010 21:16:00
nesecito saber como puedo hacer para me mi maquina saque la copia de seguridad de mi base de datos automaticamente antes de apagarse mi pc

gracias por su respuesta
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

RE:copia de seguridad

Publicado por carrascoquerasco (1 intervención) el 15/12/2012 18:26:49
Si te da igual que la copia de seguridad se genere al cerrar tu BD y no al cerrar tu PC aquí te dejo un código VB que te funcionará perfectamente si lo insertas en el evento "Al descargar" de tu formulario principal (el primero que aparece y último que se cierra en tu BD Access como, por ejemplo, el panel de control):

Private Sub Form_Unload(Cancel As Integer)
On Error GoTo Err_salir_Click
Dim Respuesta As String
Dim fso As Object
Dim Sdate As String
Sdate = Format(Date, "dd_mm_yyyy")

Respuesta = MsgBox("¿Quieres generar una copia de seguridad de 'PON EL NOMBRE DE TU BASE DE DATOS AQUÍ' antes de salir?", 4 + 32, "COPIA DE SEGURiDAD DE 'PON EL NOMBRE DE TU BASE DE DATOS AQUÍ'")
If Respuesta = 6 Then
MsgBox ("La copia de seguridad se guardará en E:\NOMBRE DE TU BASE DATOS\Copias seguridad"), 64, ("HAS ELEGIDO GENERAR UNA COPIA DE SEGURIDAD DE 'PON EL NOMBRE DE TU BASE DE DATOS AQUÍ'")
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile CurrentProject.FullName, "E:\NOMBRE DE TU BASE DE DATOS\Copias seguridad\" & "Copia seguridad NOMBRE DE TU BASE DE DATOS" & " " & Sdate & ".mdb"
Set fso = Nothing
DoCmd.Quit

If Respuesta = 7 Then
DoCmd.Quit
End If

Exit_salir_Click:
Exit Sub

Err_salir_Click:
MsgBox Err.Description
Resume Exit_salir_Click
End If
End Sub

El código te preguntará si deseas realizar una cópia de seguridad de tu BD antes de cerrarla y, en caso afirmativo, te generará una copia con el nombre de la BD + la fecha del dia en la ruta de destino que especifiques.
Evidentemente deberás adaptar a tus necesidades esa ruta de destino (en el ejemplo E:\NOMBRE DE TU BASE DATOS\Copias seguridad\) creando las carpetas y subcarpetas que desees en la unidad donde quieras guardar las copias.

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

RE:copia de seguridad

Publicado por Santiago Arroyo Rodríguez (1 intervención) el 11/08/2014 09:50:57
Qué código debería de utilizar en caso de ser una base access dividida (back-end y front-end). Muchas 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

RE:copia de seguridad

Publicado por Nicolas (1 intervención) el 27/10/2014 14:16:04
Perdon Intento Con Esta Programacion Pero Despues De Q Me Indica Donde Va A Qdar Guardada La Base De Datos Me Aparece "Se Requiere Un Objeto" En Este Caso Q Puedo Hacer?
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

RE:copia de seguridad

Publicado por NEKEM (2 intervenciones) el 07/09/2022 11:06:28
Gracias, pero al realizarlo me dice acceso denagado, de que puede ser?
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

RE:copia de seguridad

Publicado por ALBERTO (2 intervenciones) el 07/09/2022 11:07:42
gracias carrascoquerasco, pero me pone acceso denegado al ejecutarlo, de que puede ser?
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

RE:copia de seguridad

Publicado por sol (1 intervención) el 30/05/2013 01:43:04
Hola como están , con respecto a un copia de seguridad, me podrán ayudar..necesito hacer un respaldo de mi base de dato de acceso! pero no se como soy nueva en visual studio. expliquemen como si tuviera 5 año jejeje
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

RE:copia de seguridad

Publicado por PONCE (1 intervención) el 18/06/2016 00:14:01
LA PALABRA app que significa?????
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 Santiago
Val: 3
Ha aumentado su posición en 10 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

RE:copia de seguridad

Publicado por Santiago (5 intervenciones) el 07/09/2022 20:37:28
Perdonad, estoy dispuesto a echar una mano a quien quiera, pero con tanta pregunta dentro del mismo hilo, no sé quién pregunta, quién ha resuelto la duda...

¿Podéis escribir cada uno su pregunta en un hilo diferente? Creo que sería más útil.

Sol: No sé si has resuelto tu duda. Por favor, escribe en otro hilo y da más información. ¿Cuándo quieres hacer el respaldo?¿En qué momento?

NEKEN, Alberto: ¿Intentáis la copia antes de abrir la base de datos?

Nicolas: ¿Puedes enviar código para poder ver cómo lo estás haciendo?

Gracias a tod@s.
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