Access - ¿Cómo abrir un Access mediante un archivo.bat?

 
Vista:

¿Cómo abrir un Access mediante un archivo.bat?

Publicado por Daniel (2 intervenciones) el 17/10/2016 16:48:18
Buenas tardes;
Tengo 3 Access guardados en la misma carpeta, los cuales poseen una serie de macros que se ejecutan automáticamente al abrirse.
Para no tener que entrar en los 3 Access cada vez que quiera actualizar las macros, quiero hacer un archivo.bat, que entre y salga en los Access, con lo que consiga la actualización de los 3 simplemente pulsando en el .bat.
¿Alguien sabe el código que hay que usar?
De momento solo he conseguido que mi .bat acceda a la carpeta donde tengo los Access.
Agradezco vuestra ayuda de antemano, y os pido que me deis una respuesta urgente!!
Un saludo y gracias.
Daniel.
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

¿Cómo abrir un Access mediante un archivo.bat?

Publicado por Neckkito (1157 intervenciones) el 17/10/2016 21:51:51
Hola!

Permite que te haga un par de consideraciones:

La primera: si lo que quieres abrir es un Access pues la cosa es muy sencilla. ¿Dónde está el "pero"? Pues el pero está en que quieras cerrarlo también.

El bat lo que hará es abrirte el archivo al ejecutar la primera línea. Hasta aquí muy bien. Pero después te cerrará el archivo al ejecutar la segunda y tercera líneas, y aquí no tan bien, puesto que si dices que al abrirse Access se ejecuta una macro que hace un proceso, y el proceso requiere cierta duración, el cierre no va a respetarlo. Eso implica que lo va a cortar y, en consecuencia, podría producirse una corrupción de tu base de datos.

Si te quieres jugar el cuello las líneas de tu bat deberían ser (te lo pongo solo para una sola base de datos):

1
2
3
start "Base1" "c:\rutaBase\NombreBase.accdb"
taskkill /f /im msaccess.exe
taskkill /f /fi "imagename eq msaccess.exe"

Ten en cuenta que, por más inri, probablemente el archivo de bloqueo te quedará activo por haber salido "a lo bestia" de la bd. Es decir, te quedará el archivo *.laccdb

La segunda consideración: sería más elegante, en vez de un bat, utilizar un scripting de VB. La preparación del scripting es exactamente igual a la de un bat: te creas un fichero de texto, escribes el código y, tras guardarlo y cerrarlo, le cambias la extensión de txt a vbs.

El scripting para hacer lo que pides sería, en principio, el siguiente:

1
2
3
4
5
with createobject("access.application")
.opencurrentdatabase("c:\rutaBase\NombreBase.accdb")
.closecurrentdatabase
.quit
end with

Ahora bien, si tu proceso tarda significativamente, puedes añadirle una pausa, por ejemplo en segundos, para dar tiempo a Access a que ejecute las acciones de macro. Eso sí que es un poco a ojo, y lo suyo sería que calcularas más o menos cuántos segundos tarda, y le añadieras un par como margen de seguridad. En ese caso el scripting te quedaría más o menos así:

1
2
3
4
5
6
7
8
9
dim miPausa
with createobject("access.application")
.opencurrentdatabase("c:\rutaBase\NombreBase.accdb")
miPausa=dateadd("s",3,now)
Do while miPausa>now
Loop
.closecurrentdatabase
.quit
end with

donde en el <miPausa=dateadd("s",3,now)> el 3 significa 3 segundos.

A ver si así te sale.

Saludos,

Neckkito
http://bit.ly/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

¿Cómo abrir un Access mediante un archivo.bat?

Publicado por Daniel (2 intervenciones) el 18/10/2016 09:09:14
Buenos días;

Gracias por esta gran explicación, pero estoy teniendo problemas con el código. El primero es que me da este mensaje de error, ¿Qué puedo hacer para solucionarlo?

- Secuencia de comandos: C:\Users\z5e5\Deskop\archivo.vbs
- Línea: 5
- Carácter: 1
- Error: Microsoft Access no puede abrir la base de datos porque falta o porque está abierta de forma exclusiva por otro usuario, o no es un - archivo ADP.
- Código: 800ª 1EBA
- Origen: (null)


El código que he metido es el siguiente;

dim miPausa
with createobject("access.application")
.opencurrentdatabase("C:\Escritorio\Base de datos14.accdb")
miPausa=dateadd("s",10,now)
Do while miPausa>now
Loop
.closecurrentdatabase
.quit
end with

No sé cómo solucionarlo…

Por otro lado, cuando abro mi Access, me aparecen los cuadros de notas como el siguiente, los cuales tengo que pulsar sí, para que se ejecute mi macro. ¿Esto supone algún problema para el archivo.vbs? ¿Tendría que quitarlo? ¿Cómo puedo hacerlo?

- Va a ejecutar una consulta de eliminación que modificará los datos de la tabla.
- ¿Confirma que desea ejecutar esta consulta de acciones?


Muchas gracias de antemano!!!
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

¿Cómo abrir un Access mediante un archivo.bat?

Publicado por Neckkito (1157 intervenciones) el 18/10/2016 09:21:47
Pues el error te está diciendo claramente qué es lo que está pasando:

1.- La BD ya está abierta
2.- La ruta no es correcta.

Y, personalmente, la ruta que escribes es bastante sospechosa, porque eso de C:\Escritorio... El escritorio de Windows no está en esa ruta, precisamente.

Por otra parte, ¿cómo quieres automatizar un proceso que depende de la respuesta del usuario? Si el proceso pide confirmación y ha de haber un usuario que realice alguna acción... pues mal lo tenemos para automatizar.

En VBA se utilizaría:
docmd.setwarnings false
'Código que ejecuta la SQL de eliminación
docmd.setwarnings true

A través de macros desconozco cómo se eliminan los mensajes de advertencia. Busca por Internet si existe algún tipo de equivalencia.

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