Alta de registro con subformularios en Access

Parece una chorrada, pero ya no se como solucionar este problema...

Tengo un formulario, que tiene un campo contador (que lo llenamos por vba) y otros campos de los cuales algunos tienen valores por defecto. Hasta aquí todo bien... El caso es que tambien hay una serie de SubFormularios que el usuario puede introducir nuevos registros vinculados al Formulario Principal. En mi caso, "Incidencias" (Principal) y "vehículos implicados"(Subform).

El problema aparece cuando al dar de alta un registro en el principal, el usuario no introduce ningún valor y se va directamente a crear un registro en el Subformulario apareciendo el error de que no hay registro padre.

Lo que necesito es saber si hay alguna propiedad o manera de bloquear los SubForm hasta que no se ha guardado el registro padre... Y la leche seria saber si hay alguna forma de disparar el BeforeUpdate cuando el foco va a un SubForm.

1 respuesta

Respuesta

Lo más sencillo es que por defecto los subformularios tengan la propiedad loocked=true (bloqueados). Prueba las distintas combinaciones con Enabled=False (desactivo) ya que dan distinta apariencia a los controles (en este caso tu subformulario). En lugar de permitir ir directamente al subformulario, crea un botón para guardar el registro activo del formulario principal. Este botón al guardar el registro que tienes en pantalla activa primeramente el evento BeforeUpdate (úsalo para hacer las validaciones y en caso de que no se cumplan usas Cancel=True y llevas el enfoque a donde sea menester), luego el AfterUpdate (al tener ya en registro guardado puedes usarlo para tareas como completar datos en otras tablas, logs...). Tras la orden de guardar cambias la propiedad Loocked o Enabled del subformulario de modo que se permita acceder al mismo, y finalmente llevas el enfoque al donde desees del mismo usando SetFocus.

Debes de obligar al subformulario que vuelva a su estado de bloqueado tras la inserción del registro. Esto dependerá del diseño y propiedades del form y subform. Si tras completar un registro se cierra y lo vuelves a brir desde un panel de control principal o similar no debes de hacer nada (ya que tienen esa propiedad establecida por defecto). Si tienes otro diseño yo probaría inicialmente con el evento AlActivarRegistro para volver a bloquear el subformulario (obviamente no debe de estar como primer control en el orden de tabulación).

No se si con esta pequeña explicación te es suficiente. Si quieres que le eche un vistazo envíame un pequeño ejemplo que contenga los objetos implicados con un mínimo juego de datos de prueba a [email protected].

Cordiales saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas