Formulario con Subformulario cerrado

Tengo un formulario facturas con un subformulario Detalle (hoja de datos) y una botonera Nuevo - Guardar - Eliminar - Modificar - Cancelar, como en el resto de formularios.
Si en el formulario principal pongo en Propiedades Permitir Ediciones NO, aunque haga click en Nuevo no me deja añadir datos a la Hoja de Datos (Subf Detalle). Sólo me deja añadir datos en el subformulario Detalle si pongo SI en Permitir Ediciones y no quiero que el formulario quede abierto, además si el formulario Facturas queda abierto de nada me sirven los botones. Con la botonera juego con Me. Allowedit = true o false y me funciona muy bien en el resto de formularios.

1 respuesta

Respuesta
1
Bueno eso que te esta pasando es debido a la herencia.
Esto es que los hijos eredan los males de los padres "en parábola" quiere decir que las propiedades de formulario abarcan todo lo que contenga el formulario y eso incluye los subforms y todos sus componentes.
Lo que debes hacer es jugar con la propiendad de cada componente por separado. Es algo tedioso porque es mucho más código pero es efectivo.
Ejemplo: si quieres que después de impresa la factura no se pueda editar los encabezados de la factura pero el contenido del detalle si, como para reusar la misma factura. Tendrías que hacer esto.
Primero: agregar un check box para que cuando imprimas se active. Esto es para decirle al sistema que esta impresa.
segundo:  despues de imprimir en el mismo codigo del boton de imprimir seguido a la accion de imprimir modificas el valor de la propiedad Locked la seteas a "si" (forms!nombre del form!campo.locked = yes) esto es con cada campo o boton que quieras bloquear.
Tercero: debes agregar ese mismo código (sin el de imprimir, por supuesto) en el evento al activar el registro, del formulario principal. Esto es para que cuando recorras las facturas se bloquen las que estén impresas.
Este código debes ponerlo en un bloque if que valide si el campo check box esta activado, si es si, corre el código. si es no, no lo corre.
Espero que este ejemplo te sirva de algo cualquier duda me avisas...
Y vemos ejemplos más concretos directos a tu aplicación.
Hola de nuevo, te comento que me imprime bien la factura, lo que ocurre es que los botones que utilizo (yo los llamo botonera) Nuevo Registro, Guardar Registro, Eliminar Registro, Modificar Registro, etc, no me funciona correctamente cuando tengo el formulario cerrado o bloqueado. Me explico mejor, todos mis formularios cuando los abro en pantalla no se puede escribir en ellos. Para escribir en ellos hay que hacer click en Modificar, o si hay que dar de alta un nuevo registro hay que hacer click en Nuevo, y posteriormente hacer click en Guardar. Juego con la expresión Me.allowEdit = true/false, y todos mis formularios funcionan muy bien. El problema viene con el Formulario Facturas al tener un subformulario dentro me obliga a tenerlo abierto por decirlo de alguna manera, si lo cierro o bloqueo, cuando utilizo los botones me deja escribir en el formulario principal pero no me deja añadir nada al subformulario (detalle de factura). Creo que en el código de cada botón (control) hay que añadirle algo para que también actúe sobre el formulario. Gracias de nuevo.
Tienes razón. Las propiedades que estas utilizando tienen lo que se llama herencia. Esto significa que todo lo contenido dentro de un formulario incluyendo los subformularios adquiere el valor de la propiedad dada al formulario principal.
Ejemplo:
Si tienes un formulario y un botón de modificar que la oprimirlo desbloquea el formulario donde esta el botón y este formulario contiene un subformulario que esta bloqueado, este subform se desbloquea con todos los componentes del formulario que lo contiene.
cuando quieres hacer referencia a las propiedades de un subformulario desde el formulario contenedor debes llamar a la propiedad form ejemplo forms!padre!subform_hijo.form.allowedit = true
Así desde un form cambias la propiedad permitir editar del subfform.
Intenta jugar con esto a ver como te va si no resulta probamos otra cosa.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas