Visual Basic para Aplicaciones - No funciona Codigo para copia de Seguridad.

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 3
Ha disminuido su posición en 2 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

No funciona Codigo para copia de Seguridad.

Publicado por Manuel (2 intervenciones) el 23/01/2019 16:37:53
Buenos días.
Necesito vuestra ayuda.

Tengo en la Oficina una Base de datos que utilizamos para registrar la Correspondencia de todo tipo que Entra y Sale a diario. Este codigo, cocretamente, lo realizó un compañero que anteriormente estuvo trabajando aquí y que ya no esta ni puedo contactar con el. La Base de datos de la Empresa y yo soy quien tiene conocimiento más avanzado pero de aprendizaje autodidacta.

La Base de datos tiene un formulario de Inicio que incluye un Cuadro de Lista con varias Opciones donde una de ellas el la Opción Copia de Seguridad (concretamente es la Segunda opción de la lista). Al seleccionar esta Opción y pulsar un Boton de Comando debería realizar una Copia de Seguridad, pero en lugar de eso da

El código existente es el siguiente:

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Dim newdb As ADOX.Catalog
On Error GoTo Err_Comando1_Click
 
    DIA = Left(Date, 2)
    MES = Mid(Date, 4, 2)
    AÑO = Right(Date, 4)
    NOM = DIA & "." & MES & "." & AÑO
 
    CAMINO = Texto24.Value & "\" & Texto0 & "_" & NOM & ".mdb"
 
    Kill (CAMINO)
 
Exit_Comando1_Click:
 
Set newdb = New ADOX.Catalog
newdb.Create "provider=Microsoft.jet.OLEdB.4.0;" & "Data Source=" & CAMINO
 
DoCmd.TransferDatabase acExport, "Microsoft Access", _
CAMINO, acTable, "ENTRADAS", "ENTRADAS"
 
DoCmd.TransferDatabase acExport, "Microsoft Access", _
CAMINO, acTable, "SALIDAS", "SALIDAS"
 
DoCmd.TransferDatabase acExport, "Microsoft Access", _
CAMINO, acTable, "AREAS", "AREAS"
 
DoCmd.TransferDatabase acExport, "Microsoft Access", _
CAMINO, acTable, "EXPEDIENTES", "EXPEDIENTES"
 
DoCmd.TransferDatabase acExport, "Microsoft Access", _
CAMINO, acTable, "DATOSGL", "DATOSGL"
 
MsgBox ("COPIA DE SEGURIDAD EFECTUADA" & Chr(10) & CAMINO)
 
    Exit Sub
 
Err_Comando1_Click:
 
Set newdb = New ADOX.Catalog
newdb.Create "provider=Microsoft.jet.OLEdB.4.0;" & "Data Source=" & CAMINO
 
DoCmd.TransferDatabase acExport, "Microsoft Access", _
CAMINO, acTable, "ENTRADAS", "ENTRADAS"
 
DoCmd.TransferDatabase acExport, "Microsoft Access", _
CAMINO, acTable, "SALIDAS", "SALIDAS"
 
DoCmd.TransferDatabase acExport, "Microsoft Access", _
CAMINO, acTable, "AREAS", "AREAS"
 
DoCmd.TransferDatabase acExport, "Microsoft Access", _
CAMINO, acTable, "EXPEDIENTES", "EXPEDIENTES"
 
DoCmd.TransferDatabase acExport, "Microsoft Access", _
CAMINO, acTable, "DATOSGL", "DATOSGL"
 
MsgBox ("COPIA DE SEGURIDAD EFECTUADA" & Chr(10) & CAMINO)

Ocurren dos errores, según actuó yo con la base datos. El primero de ellos ocurre cuando hago click en la opción de la lista "Copia de Seguridad" y luego hago click en el Botón "Aceptar" sin haber escrito previamente nada en el Texbox "Camino" como se puede observar en la Imagen
5c42599ea6523-IMAGEN-1-BD-ACCESS

El segundo error ocurre cuando hago click en la opción de la lista "Copia de Seguridad", escribo la ruta que me indica el formulario en el texbox "Camino" y a continuación hago click en el Botón "Aceptar", como se puede observar en la Imagen
5c425a37d5dfa-IMAGEN-3-BD-ACCESS

Además, cuando das a depurar para ver donde se produce el error, en ambos casos ocurre en la misma línea de código. Se puede ver la Línea en cuestión en la Imagen


5c425aa7b7082-IMAGEN-2-BD-ACCESS
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 Joan
Val: 4
Ha disminuido su posición en 3 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

No funciona Codigo para copia de Seguridad.

Publicado por Joan (1 intervención) el 24/01/2019 09:20:16
Ese error, te esta diciendo, que tienes la base de datos abierta en modo exclusivo, por lo que nadie mas puede utilizarla.

Puede ser que tengas la base de datos abierta con el Access?
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 Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

No funciona Codigo para copia de Seguridad.

Publicado por Antoni Masana (498 intervenciones) el 24/01/2019 11:04:24
Varias cosas:

Para empezar antes de hacer cualquier cosa debes verificar que es correcta la información que tienes:

1
2
3
4
5
6
7
8
9
10
11
Dim newdb As ADOX.Catalog
On Error GoTo Err_Comando1_Click
 
    DIA = Left(Date, 2)
    MES = Mid(Date, 4, 2)
    AÑO = Right(Date, 4)
    NOM = DIA & "." & MES & "." & AÑO
 
    CAMINO = Texto24.Value & "\" & Texto0 & "_" & NOM & ".mdb"
 
    Kill (CAMINO)


Antes de hacer el KILL debes verificar que Texto24.Value tenga una valor valido, es decir una ruta y que esta exista y asi evitas el primer Error.

1
If Dir(Texto24.Value, vbDirectory) = "" Then MsgBox "No existe el directorio" & VbCrLf & Texto24.Value


Por si acaso diese error es mejor borrar algo que SI existe:

1
If Dir(CAMINO) <> "" Then Kill(Camino)


La variable Texto0 supongo que contiene la palabra CONTRATOS, no lo veo definido en el código.

Por lo que deduzco que esta línea se espera lo siguiente:

1
2
3
4
5
CAMINO = Texto24.Value & "\" & Texto0 & "_" & NOM & ".mdb"
 
Texto24.Value  = C:\Users\MANURAK\Documents
Texto0         = CONTRATOS
NOM            = 18.01.2019

Y por consiguiente se espera que el resultado sea este:

1
CAMINO = C:\Users\MANURAK\Documents\CONTRATOS_18.01.2019.mdb

En cambio el error te está diciendo otra cosa:

1
CAMINO = C:\Users\MANURAK\Documents\CONTRATOS_18.01.2019.mdb\CONTRATOS_18.01.2019.mdb

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
sin imagen de perfil
Val: 3
Ha disminuido su posición en 2 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

No funciona Codigo para copia de Seguridad.

Publicado por Manuel (2 intervenciones) el 24/01/2019 11:59:20
Te agradezco infinitamente tu ayuda. Me ha ayudado mucho a entender mejor el código, gracias a ello he podido entender como el funcionamiento de esa parte de la Base de datos y he conseguido, con tu ayuda, que funcione y me haga la copia de seguridad de las tablas.

un saludo y 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