Cómo abrir un formulario modal (se abre en modo exclusivo y hasta que no se cierra no se puede enfocar otra ventana), mostrando un registro de una tabla/consulta en Access. Este tipo de formularios es útil para mostrar ventanas de edición/modificación de registros.
- Objetivo: mostrar ventana modal al hacer doble clic en un registro de una hoja de datos.
- Crear formularios en Access.
- Asignar evento en formulario de Hoja de datos para mostrar formulario modal de edición en Access.
Objetivo: mostrar ventana modal al hacer doble clic en un registro de una hoja de datos
El objetivo es poder mostrar un formulario (ventana) modal, existente, al hacer doble clic en una línea (registro) de un formulario en hoja de datos. En nuestro ejemplo, tenemos un formulario principal llamado «Paciente», y un subformulario en hoja de datos, llamado «Mediciones». En el subformulario «Mediciones» es donde queremos permitir que al hacer doble clic en un registro (por ejemplo en señalado con la flecha en la imagen), nos abra una ventana con dicho registro para su edición/modificación:
El formulario modal debe mostrar el mismo registro del que hemos hecho doble clic. Suponemos, evidentemente, que ambos formularios (el de hoja de datos y el modal) usan el mismo origen de datos (misma tabla o consulta):
Los cambios realizados en el formulario modal anterior, en frm_paciente_medicion, quedarán guardados automáticamente, al cerrar, y mostrados en el formulario de hoja de datos «Mediciones».
Crear formularios en Access
Para crear un formulario a partir de una tabla o consulta, en primer lugar seleccionaremos la tabla o consulta origen de datos, en nuestro caso, la consulta «ct_paciente_medicion_lista» [1] y, a continuación, desde la cinta de opciones, accederemos a «Crear» [2] y pulsaremos en «Formulario» [3]:
Access creará un formulario con los campos de la consulta/tabla origen elegida. Colocaremos los campos a nuestro gusto, ocultaremos/eliminaremos aquellos que no queramos mostrar al usuario. Y configuraremos y personalizaremos las opciones del formulario. Si va a ser un formulario modal, lo normal es establecer la propiedad «Selector de registros» a «No»:
Crearemos también un segundo formulario de tipo Hoja de datos, con el mismo origen de datos (en nuestro caso la consulta «ct_paciente_medicion_lista» [1]. En este caso, seleccionaremos la consulta/tabla origen de datos, como en el anterior, pero esta vez usaremos el asistente, pulsando en «Crear» [2] y en «Asistente para formularios» [3]:
Elegiremos los campos que queramos mostrar en la lista:
Seleccionaremos «Hoja de datos»:
Introduciremos el título del formulario y marcaremos «Modificar el diseño del formulario» si queremos hacer alguna personalización:
Realizaremos las personalizaciones que queramos en el diseño del formulario. Si lo visualizamos, nos lo mostrará en formato hoja de datos:
Asignar evento en formulario de Hoja de datos para mostrar formulario modal de edición en Access
Una vez de que dispongamos de los dos formularios, el modal y el de hoja de datos, abriremos en modo de diseño el formulario de Hoja de datos. Pulsaremos en las propiedades del formulario [1] y, en la pestaña «Eventos», pulsaremos en «Al hace doble clic» [2]. Pulsaremos en el botón con los tres puntos [3]:
Elegiremos «Generador de código»:
Añadiremos la siguiente línea de código VBA, que abrirá el formulario modal, que en nuestro caso lo hemos llamado «formPacienteMedicionEdicion»:
1 2 3 4 5 6 7 8 |
Private Sub Form_DblClick(Cancel As Integer) If Not IsNull(Me!codigo) Then DoCmd.OpenForm "formPacienteMedicionEdicion", acNormal, "", "[codigo]=" & Me!codigo, , acDialog DoCmd.RefreshRecord Else MsgBox "Antes de editar la Medición, debe darla de alta.", vbInformation + vbOKOnly, "Nueva medición..." End If End Sub |
En el código VBA anterior, al hacer doble clic sobre la fila de la Hoja de datos, se abrirá el formulario modal (también con el mismo origen de datos), filtrando por el registro actual (Me!codigo), de forma que mostrará este registro (al que se le ha hecho doble clic), para su edición. Además, el código fuente VBA comprueba si el registro actual tiene valor en la clave primaria «codigo». Si no lo tiene, mostrará un aviso indicando que antes de editar el registro hay que crearlo. Y, al cerrar el formulario modal, actualizará el formulario de hoja de datos con las modificaciones del registro editado (DoCmd.RefreshRecord):