La solución es crear una pequeña aplicación desde la que genero los números de registro, y con un formulario dotado de múltiples botones que llaman a las aplicaciones de cada departamento, cada una de las cuales reside en un .mdb (o .accdb) distinto con sus propios formularios y tablas. Al cerrar esas aplicaciones, se vuelve a abrir la principal, con lo que la sensación para el usuario es la de usar un único programa.
El código que pongo en la aplicación central es el siguiente:
Private Sub Comando0_Click()
' Definimos la aplicación que vamos a llamar, y la rodeamos de dobles comillas
bdllamada = Chr(34) & "c:\caminocompleto\nombreBD.accdb" & Chr(34)
' Llamamos a Access, le decimos la BDD que debe abrir y le pasamos el parámetro
' correspondiente a la aplicación padre, a la que deberá volver después
Call Shell("msaccess.exe " & bdllamada & " /cmd " & Application.CurrentDb.Name, vbMaximizedFocus)
' Activamos los eventos
DoEvents
' Cerramos la aplicación actual
DoCmd.Quit
End Sub
El quid de la cuestión está en el /cmd . Lo que va a continuación es un parámetro que se le pasa a la aplicación que se abre, y se puede rescatar mediante la función Command().
En la aplicación hija se incluye el siguiente código:
Public padre As String
Private Sub Form_Open(Cancel As Integer)
' Recogemos el parámetro que nos indica a dónde volver
padre = Command()
End Sub
Private Sub Form_Close()
' Al cerrar, volvemos a llamar al padre
Call Shell("msaccess.exe " & Chr(34) & padre & Chr(34), vbMaximizedFocus)
End Sub
No hay comentarios:
Publicar un comentario