Problema en el método DoCmd.openform de dos formulario

Estoy implementando una aplicación en la que en un primer formulario muestro todos los registros de una tabla y mediante la selección de una opción de un menú popup voy al segundo en el que se realiza el mantenimiento. Para las altas además de la opción del menú existe un botón que llama a la misma función de la opción de menú:AltaAlumnos, que tiene el siguiente código.
DoCmd.OpenForm "FrmMtoAlumnos", acNormal, "", "", acAdd, acNormal
En el evento load del segundo formulario abro un recordset para recuperar el registro en el caso de que no sean altas, y si es alta solo muestro el formulario seleccionando un campo del formulario:método setfocus.
El problema viene que cuando llamo a altas desde la opción del menú popup lo hace todo correctamente, pero cuando lo hago desde el botón nuevo, me abre el formulario pero no me muestra los campos, como si estuviera minimizado.He puesto la sentencia :
Docmd.maximize en el evento load pero no me hace ningún caso.
Te agradecería muchísimo si me pudieras ayudar a saber que es lo que esta pasando.
Muchas gracias

1 respuesta

Respuesta
1
Aclárame una cosa, la función que llamas desde el menú contextual y desde el botón dices que es la misma. No tiene mucho sentido el que dependiendo desde dónde la llames haga una cosa u otra.
Es decir tienes la funtion siguiente
public function AltaAlumnos()
Docmd.openForm "FrmMtoAlumnos", acNormal, "", "", acAdd, acNormal
end funtion
Y has creado una entrada en el menú contextual personalizado que activa =AltaAlumnos()
En el botón en el evento click que pones ¿una función on_click o llamas directamente a AltasAlumnos? Es decir, ¿en la ventana de propiedades del botón en la lista de eventos que pone? si pone, debería poner =AltasAlumnos().
Hazlo así, a ver que pasa.
Si ya lo tenías así prueba a abrir el formulario creando un objeto form. Para poder hacerlo entra en el formulario FrmMtoAlumnos y la propiedad TieneModuloAsociado debe ser sí.
Para crear el formulario lo haces así:
1.- Crea una variable global pública que sea una colección. Es decir, justo detrás de los declare del comienzo del código pones:
Public colFrm as new collection
la funcion de AltaAlumnos será:
public function AltaAlumnos()
Dim frm as new Form_FrmMtoAlumnos
with frm
 .DataEntry = true
'y el resto de opciones que le quieras poner.
.Visible = true
end with
col.add frm
end function
Así podrás abrir la ventana múltiples veces.
Muchas gracias por tu respuesta.Al final  encontre el fallo. El problema era que en la función AltaAlumno hacia  echo *False y después no lo volvia a activar.También he definido el segundo formulario de tipo modal,emergente y estilo de los bordes=dialogo, con lo cual evito que se abra una nueva ventana de mantenimiento

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas