Compactar mediante código un único Back End y tres Front Back específicos.

Dudas sobre código
Rafael
Nivel 6
Mensajes: 206
Registrado: Dom Dic 27, 2015 10:33 am

Compactar mediante código un único Back End y tres Front Back específicos.

Mensajepor Rafael » Vie Nov 08, 2019 6:34 pm

Buenas tardes a todos.

Desde años ha, aunque sigo cacharreando con ellas, vengo trabajando con tres .accdb Front Back que vienen a constituir una especie de suite de Gestión Agrícola. Estos tres ficheros atacan un único Back End.

Bien. Últimamente he creado un nuevo Front Back cuyo único papel se limitaría a recoger tres llamadas (evento Al hacer clic en el casi único formulario de que consta) a los tres Front Back de que he hablado antes, ello mediante el método Application.FollowHyperlink (perdón si no utilizo adecuadamente los términos de VBA: no es mi fuerte... :oops: ) que copié de alguna intervención de este foro y que me funciona de cine.

El caso es que en el Ribbon del nuevo Front Back de puente creado ahora, quisiera incorporar en uno de sus tab cuatro botones que al ser accionados ejecutasen la tarea de compactar/reparar, sucesivamente claro, el Back End común y los tres Front Back de las aplicaciones básicas.

Alguien me puede ayudar, por favor?

P.S.- Obiter dicta :mrgreen:, Neckkito, por si leyeras esto: ayer ví tu hallazgo/serependia :mrgreen: -he tenido que guglear... :mrgreen: -, del que hablabas allá por octubre de 2016 en este hilo: https://nksvaccessolutions.com/Foro/viewtopic.php?t=435, pero no se ajusta a mis necesidades actuales -por más de que sea interesantísimo y más adelanteeee...-, yo lo que quiero es hacer clic, y sin programar nada, que compacte instantáneamente.

P.S.- 2.- Edito para añadir: he creado un .bat -CompactarTablas.bat- a partir del archivo de texto "C:\Agricultura\AGRICULTURA_Tablas.accdb /compact"... después en el formulario casi único del Front puente he insertado una etiqueta y en el evento Al hacer clic sobre ella he escrito el código: Shell ("C:\Agricultura\CompactarTablas.bat")... y aunque aparentemente intenta 'algo': al menos abre el Back End que quiero compactar, pero no remata: no lo compacta...

Avatar de Usuario
Sveinbjorn
Moderador
Mensajes: 1122
Registrado: Sab Oct 24, 2015 10:12 pm

Re: Compactar mediante código un único Back End y tres Front Back específicos.

Mensajepor Sveinbjorn » Vie Nov 08, 2019 8:27 pm

Rafael, solo voy a responderte a la última postdata, porque crea que es a lo único que puedo arrojar algo de luz:

Si en el bat que has creado has puesto, literalmente:
"C:\Agricultura\AGRICULTURA_Tablas.accdb /compact"

deberías echarle de nuevo un ojo al post de Neckkito que citas y fijarte bien a la hora de hacer el "copia-pega" de lo que comenta... :roll:

Un saludo, y espero que te des cuenta de dónde has cometido el fallo.
Sveinbjorn El Rojo

Rafael
Nivel 6
Mensajes: 206
Registrado: Dom Dic 27, 2015 10:33 am

Re: Compactar mediante código un único Back End y tres Front Back específicos.

Mensajepor Rafael » Vie Nov 08, 2019 9:28 pm

Hola Diego, creo saber por dónde vas: el cierre de las comillas antes del modificador /Compact, ¿no?

La verdad es que en el texto plano de 'mi' .bat lo tenía escrito todo sin las comillas, pero visto lo que me decías y escribía en su post de 2016 Neckkito, he sustituido aquél por: "C:\Agricultura\AGRICULTURA_Tablas.accdb" /compact -con comillas incluidas-.

Sin embargo el resultado ha sido el mismo: intenta 'algo'... pero no remata la faena de compactación :!:

Lo curioso es que si ejecuto con doble clic el .bat sí ejecuta la compactación. Lo tengo archicomprobado... creo.

Avatar de Usuario
Neckkito
Moderador
Mensajes: 861
Registrado: Dom Oct 25, 2015 3:42 pm

Re: Compactar mediante código un único Back End y tres Front Back específicos.

Mensajepor Neckkito » Dom Nov 10, 2019 9:27 pm

Hola:

En el bat, primero pon la ruta de Access. La estructura te debería quedar algo así como:

"C:\...\MSAccess.exe" "C:\...\TuBase.accdb" /compact

Saludos.
Access MVP 2017-2020
http://bit.ly/NckAccess

Rafael
Nivel 6
Mensajes: 206
Registrado: Dom Dic 27, 2015 10:33 am

Re: Compactar mediante código un único Back End y tres Front Back específicos.

Mensajepor Rafael » Lun Nov 11, 2019 1:20 pm

Gracias Miquel, creo haber seguido tus instrucciones pero al ejecutar el código la aplicación me manda el mensaje que te copio en el doc adjunto, y en el que a su vez inserto la ventana de la línea de comandos que tras la ejecución se queda minimizada en la barra de tareas:


https://mega.nz/#!2dkwDChK!XSi75haTPZBn ... B6io8REy8E

Avatar de Usuario
Neckkito
Moderador
Mensajes: 861
Registrado: Dom Oct 25, 2015 3:42 pm

Re: Compactar mediante código un único Back End y tres Front Back específicos.

Mensajepor Neckkito » Lun Nov 11, 2019 2:10 pm

Para compactar no puede haber ningún usuario conectado a la base de datos. No se puede, teniendo la BD abierta, llamar a un proceso externo que compacte, porque precisamente detectará que hay un usuario, tú, que está conectado.

En consecuencia es lógico que te dé ese mensaje de error.

Create una mini Bd de "mantenimiento de aplicaciones" y lánzalo desde esta, estando el resto de bases cerradas, por supuesto.
Access MVP 2017-2020
http://bit.ly/NckAccess

Rafael
Nivel 6
Mensajes: 206
Registrado: Dom Dic 27, 2015 10:33 am

Re: Compactar mediante código un único Back End y tres Front Back específicos.

Mensajepor Rafael » Lun Nov 11, 2019 5:20 pm

Resuelto Miquel, gracias.
Hasta este momento pensé que cumplía con el requisito del que me hablabas respecto de la 'Mini BD' que decías crease. Es lo que pensé tenía: la BD puente de la que hablo en este hilo tenía poco más que un único formulario y, en cualquier caso, ni un vínculo a tabla alguna, pero me ha dado por editar el procedimiento VBA en el que Al hacer clic ejecutaba el .bat correspondiente:

Código: Seleccionar todo

Private Sub Etiqueta10_Click()
' Dim stAppName4 As String
'    stAppName4 = "C:\Agricultura\AGRICULTURA_Tablas.accdb"
'    Application.FollowHyperlink stAppName4
Shell ("C:\Agricultura\CompactarTablas.bat")
End Sub


El caso es que no sé por qué me ha dado por comentar las tres líneas de código que aparecen arriba de tal guisa y, ¿bingo! No lo entiendo pero parece que la línea stAppName4 = "C:\Agricultura\AGRICULTURA_Tablas.accdb", ¿abría la BD a compactar? :o

En fin...

Avatar de Usuario
Neckkito
Moderador
Mensajes: 861
Registrado: Dom Oct 25, 2015 3:42 pm

Re: Compactar mediante código un único Back End y tres Front Back específicos.

Mensajepor Neckkito » Lun Nov 11, 2019 5:27 pm

Es el followhyperlink el que te abre la base
Access MVP 2017-2020
http://bit.ly/NckAccess

Rafael
Nivel 6
Mensajes: 206
Registrado: Dom Dic 27, 2015 10:33 am

Re: Compactar mediante código un único Back End y tres Front Back específicos.

Mensajepor Rafael » Lun Nov 11, 2019 5:45 pm

Ok, gracias maestro. :)


Volver a “Código VBA”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados