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

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:

Objetivo: mostrar ventana modal al hacer doble clic en un registro de una hoja de datos

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):

Objetivo: mostrar ventana modal al hacer doble clic en un registro de una hoja de datos

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]:

Crear formularios en Access

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»:

Crear formularios en Access

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]:

Crear formularios en Access

Elegiremos los campos que queramos mostrar en la lista:

Crear formularios en Access

Seleccionaremos «Hoja de datos»:

Crear formularios en Access

Introduciremos el título del formulario y marcaremos «Modificar el diseño del formulario» si queremos hacer alguna personalización:

Crear formularios en Access

Realizaremos las personalizaciones que queramos en el diseño del formulario. Si lo visualizamos, nos lo mostrará en formato hoja de datos:

Crear formularios en Access

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]:

Asignar evento en formulario de Hoja de datos para mostrar formulario modal de edición en Access

Elegiremos «Generador de código»:

Asignar evento en formulario de Hoja de datos para mostrar formulario modal de edición en Access

Añadiremos la siguiente línea de código VBA, que abrirá el formulario modal, que en nuestro caso lo hemos llamado «formPacienteMedicionEdicion»:

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):

Asignar evento en formulario de Hoja de datos para mostrar formulario modal de edición en Access