El grupo al cual envías entradas es un grupo Usenet. Si envías mensajes a este grupo, cualquier usuario de Internet podrá ver tu dirección de correo electrónico
Para intentar hacer una copia de seguridad de la BD activa, tengo definido un Módulo con el código de Búho:
Option Compare Database Option Explicit
Function COPIAFICHERO() Dim Ruta_Fichero_a_Copiar As String Dim Ruta_destino As String Ruta_Fichero_a_Copiar = CurrentProject.Path & "\PRODESI0.Mdb" Ruta_destino = CurrentProject.Path & "\CopiaRespaldo\" If Len(Dir(Ruta_destino)) = 0 Then 'la carpeta no existe, la creo MkDir Ruta_destino 'Ahora copio la MDB FileCopy Ruta_Fichero_a_Copiar, Ruta_destino & "PRODESI0.mdb" Else 'la carpeta ya existe, copio el fichero FileCopy Ruta_Fichero_a_Copiar, Ruta_destino & "PRODESI0.mdb" End If End Function
Y este es el código del Botón de comando:
Private Sub CopiaSeg_Click() On Error GoTo Err_CopiaSeg_Click COPIAFICHERO Exit_CopiaSeg_Click: Exit Sub
"Cheeky" <Big...@terra.es> escribió en el mensaje news:eyNgzIClCHA.1872@tkmsftngp10... Para intentar hacer una copia de seguridad de la BD activa, tengo definido un Módulo con el código de Búho:
Option Compare Database Option Explicit
Function COPIAFICHERO() Dim Ruta_Fichero_a_Copiar As String Dim Ruta_destino As String Ruta_Fichero_a_Copiar = CurrentProject.Path & "\PRODESI0.Mdb" Ruta_destino = CurrentProject.Path & "\CopiaRespaldo\" If Len(Dir(Ruta_destino)) = 0 Then 'la carpeta no existe, la creo MkDir Ruta_destino 'Ahora copio la MDB FileCopy Ruta_Fichero_a_Copiar, Ruta_destino & "PRODESI0.mdb" Else 'la carpeta ya existe, copio el fichero FileCopy Ruta_Fichero_a_Copiar, Ruta_destino & "PRODESI0.mdb" End If End Function
Y este es el código del Botón de comando:
Private Sub CopiaSeg_Click() On Error GoTo Err_CopiaSeg_Click COPIAFICHERO Exit_CopiaSeg_Click: Exit Sub
"Cheeky" <Big...@terra.es> escribió en el mensaje news:eyNgzIClCHA.1872@tkmsftngp10... Para intentar hacer una copia de seguridad de la BD activa, tengo definido un Módulo con el código de Búho:
Option Compare Database Option Explicit
Function COPIAFICHERO() Dim Ruta_Fichero_a_Copiar As String Dim Ruta_destino As String Ruta_Fichero_a_Copiar = CurrentProject.Path & "\PRODESI0.Mdb" Ruta_destino = CurrentProject.Path & "\CopiaRespaldo\" If Len(Dir(Ruta_destino)) = 0 Then 'la carpeta no existe, la creo MkDir Ruta_destino 'Ahora copio la MDB FileCopy Ruta_Fichero_a_Copiar, Ruta_destino & "PRODESI0.mdb" Else 'la carpeta ya existe, copio el fichero FileCopy Ruta_Fichero_a_Copiar, Ruta_destino & "PRODESI0.mdb" End If End Function
Y este es el código del Botón de comando:
Private Sub CopiaSeg_Click() On Error GoTo Err_CopiaSeg_Click COPIAFICHERO Exit_CopiaSeg_Click: Exit Sub
FileCopy (Ver ayuda de Access) necesita que el fichero NO esté abierto en esos momentos. Con lo cual si intentas copiar la propia MDB, al estar ésta abierta, te da error.
Hay posibles soluciones: AL cerrar la MDB que deseas copiar, justo antes de hacer Docmd.Quit, por ejemplo, abrir otra instancia de Access con una MDB que sí realice la copia desde un formulario de inicio o una macro Autoexec. Crear un fichero BAT, por lotes, que al cerrar la MDB que deseas copiar y tambien justo antes de Docmd.Quit, lance el bat.
> Function COPIAFICHERO() > Dim Ruta_Fichero_a_Copiar As String > Dim Ruta_destino As String > Ruta_Fichero_a_Copiar = CurrentProject.Path & "\PRODESI0.Mdb" > Ruta_destino = CurrentProject.Path & "\CopiaRespaldo\" > If Len(Dir(Ruta_destino)) = 0 Then > 'la carpeta no existe, la creo > MkDir Ruta_destino > 'Ahora copio la MDB > FileCopy Ruta_Fichero_a_Copiar, Ruta_destino & "PRODESI0.mdb" > Else > 'la carpeta ya existe, copio el fichero > FileCopy Ruta_Fichero_a_Copiar, Ruta_destino & "PRODESI0.mdb" > End If > End Function
> Y este es el código del Botón de comando:
> Private Sub CopiaSeg_Click() > On Error GoTo Err_CopiaSeg_Click > COPIAFICHERO > Exit_CopiaSeg_Click: > Exit Sub
Gracias Búho por responder, hacer un *.bat y ejecutarlo desde la BD activa, ya sé hacerlo y funciona aunque la BD esté abierta. Pero es que quería que la carpeta destino dependiese del día del mes y así tener 31 carpetas diferentes (una por cada día del mes) para tener más recursos a la hora de un posible error en datos o corrupción de access. Creo que lo intentaré siguiendo tus indicaciones de una DB "auxiliar" pero con mi "capricho" de una carpeta por día. Ya te contaré.
Por cierto ¿cual sería el código para que el nombre de la carpeta destino si fecha()=25/11/2002 fuese "25"? Ruta_destino = CurrentProject.Path & "\CopiaRespaldo\" Ruta_destino = CurrentProject.Path & ...........................
Una vez más gracias a los gurús del GRUPO, que con vuestras aportaciones y respuestas hacéis posible el avance "lento" pero avance de los que como yo parcheamos utilidades en Access sin el conocimiento teórico que vosotros generosamente aportáis.
Si no te corre mucha prisa (Dame unas horas) te preparo un ejemplo de MDB para hacer copias de respaldo de otra. Y...siguiendo la tecnica de carpetas marcadas por días, tal como quieres.
> y funciona aunque la BD esté abierta. > Pero es que quería que la carpeta destino dependiese del día del mes y así tener 31 > carpetas diferentes (una por cada día del mes) para tener más recursos a la hora de un > posible error en datos o corrupción de access. > Creo que lo intentaré siguiendo tus indicaciones de una DB "auxiliar" pero con mi > "capricho" de una carpeta por día. > Ya te contaré.
> Por cierto ¿cual sería el código para que el nombre de la carpeta destino si > fecha()=25/11/2002 fuese "25"? > Ruta_destino = CurrentProject.Path & "\CopiaRespaldo\" > Ruta_destino = CurrentProject.Path & ...........................
> Una vez más gracias a los gurús del GRUPO, que con vuestras aportaciones y respuestas > hacéis posible el avance "lento" pero avance de los que como yo parcheamos utilidades en > Access sin el conocimiento teórico que vosotros generosamente aportáis.
> Si no te corre mucha prisa (Dame unas horas) te preparo un ejemplo de MDB > para hacer copias de respaldo de otra. > Y...siguiendo la tecnica de carpetas marcadas por días, tal como quieres.
> "Cheeky" <Big...@terra.es> escribió en el mensaje > news:#VpQqEHlCHA.2632@tkmsftngp12... > > Gracias Búho por responder, hacer un *.bat y ejecutarlo desde la BD > activa, ya sé hacerlo > > y funciona aunque la BD esté abierta. > > Pero es que quería que la carpeta destino dependiese del día del mes y así > tener 31 > > carpetas diferentes (una por cada día del mes) para tener más recursos a > la hora de un > > posible error en datos o corrupción de access. > > Creo que lo intentaré siguiendo tus indicaciones de una DB "auxiliar" pero > con mi > > "capricho" de una carpeta por día. > > Ya te contaré.
> > Por cierto ¿cual sería el código para que el nombre de la carpeta destino > si > > fecha()=25/11/2002 fuese "25"? > > Ruta_destino = CurrentProject.Path & "\CopiaRespaldo\" > > Ruta_destino = CurrentProject.Path & ...........................
> > Una vez más gracias a los gurús del GRUPO, que con vuestras aportaciones y > respuestas > > hacéis posible el avance "lento" pero avance de los que como yo parcheamos > utilidades en > > Access sin el conocimiento teórico que vosotros generosamente aportáis.
OK. Estoy en ello, lo estoy estudiando un poco, me gusta esforzarme para que aparte de solucionar mi problema me empape un poco de cómo se hace. Muchas gracias.
Existe otro modo para copiar una base de datos que esta abierta y es utilizando la API del shell32.dll, tienes un ejemplo de ello en McZipV1597.mde que está en www.mcpegasus.com
"Cheeky" <Big...@terra.es> escribió en el mensaje news:eyNgzIClCHA.1872@tkmsftngp10... Para intentar hacer una copia de seguridad de la BD activa, tengo definido un Módulo con el código de Búho:
Option Compare Database Option Explicit
Function COPIAFICHERO() Dim Ruta_Fichero_a_Copiar As String Dim Ruta_destino As String Ruta_Fichero_a_Copiar = CurrentProject.Path & "\PRODESI0.Mdb" Ruta_destino = CurrentProject.Path & "\CopiaRespaldo\" If Len(Dir(Ruta_destino)) = 0 Then 'la carpeta no existe, la creo MkDir Ruta_destino 'Ahora copio la MDB FileCopy Ruta_Fichero_a_Copiar, Ruta_destino & "PRODESI0.mdb" Else 'la carpeta ya existe, copio el fichero FileCopy Ruta_Fichero_a_Copiar, Ruta_destino & "PRODESI0.mdb" End If End Function
Y este es el código del Botón de comando:
Private Sub CopiaSeg_Click() On Error GoTo Err_CopiaSeg_Click COPIAFICHERO Exit_CopiaSeg_Click: Exit Sub
Hola Mc, visito tu Web con frecuencia, esto de las copias de seguridad al final lo he solucionado con un Boton de Comando que en el evento Clik tiene este código:
Private Sub CopiaSeg_Click() On Error GoTo Err_CopiaSeg_Click ' La BD a copiar y la BD que hace la rutina de copia (CopiaS.mdb) han de estar en el mismo directorio
Dim stAppName As String stAppName = "MSACCESS.EXE C:\micarpeta\CopiaS.mdb"
Call Shell(stAppName, 1) DoCmd.Quit Exit_CopiaSeg_Click: Exit Sub
> Existe otro modo para copiar una base de datos que esta abierta y es > utilizando la API del shell32.dll, tienes un ejemplo de ello en > McZipV1597.mde que está en www.mcpegasus.com
> "Cheeky" <Big...@terra.es> escribió en el mensaje > news:eyNgzIClCHA.1872@tkmsftngp10... > Para intentar hacer una copia de seguridad de la BD activa, tengo definido > un Módulo con el código de Búho:
> Option Compare Database > Option Explicit
> Function COPIAFICHERO() > Dim Ruta_Fichero_a_Copiar As String > Dim Ruta_destino As String > Ruta_Fichero_a_Copiar = CurrentProject.Path & "\PRODESI0.Mdb" > Ruta_destino = CurrentProject.Path & "\CopiaRespaldo\" > If Len(Dir(Ruta_destino)) = 0 Then > 'la carpeta no existe, la creo > MkDir Ruta_destino > 'Ahora copio la MDB > FileCopy Ruta_Fichero_a_Copiar, Ruta_destino & "PRODESI0.mdb" > Else > 'la carpeta ya existe, copio el fichero > FileCopy Ruta_Fichero_a_Copiar, Ruta_destino & "PRODESI0.mdb" > End If > End Function
> Y este es el código del Botón de comando:
> Private Sub CopiaSeg_Click() > On Error GoTo Err_CopiaSeg_Click > COPIAFICHERO > Exit_CopiaSeg_Click: > Exit Sub