Activar un botón en access 2010
Llevo unos días indagando por la base de datos y por internet sobre como hacer aparecer un botón que solo salga en el formulario principal si vienes de otro formulario. Es decir, tengo el formulario general donde desde allí entro al formulario empresas. Hasta aquí todo bien, pero este formulario empresas, también puedo acceder desde el formulario ferias y cuando le doy al formulario de empresas desde el formulario ferias si quiero volver atrás. Tendría que aparecer un botón donde pudiese ir al formulario ferias. Así en diferentes formularios desde el mismo formulario empresa. Pero que desde el formulario principal no salga.
1 Respuesta
Te comento dos formas, que sin pensar mucho, se me ocurren:
1º/ Puedes poner el botón oculto en tu formulario y mostrarlo desde el código que lo abre, algo así:
DoCmd. OpenForm "FEmpresas" 'Abres el formulario
Forms("FEmpresas"). BtnVolver.Visible=True 'Muestras el botón cmdVolver de FEmpresas
Docmd. Close acForm, Me. Name 'Cierras el primer formulario
2º/ Puedes utilizar OpenArgs para pasarle un valor booleano y en función de ese valor, mostrar o no el botón. Algo así:
.- En el formulario/s desde el que abres el segundo formulario:
DoCmd.OpenForm "FEmpresas",,,,,, True 'Pondrías False si no quieres que se vea el botón
.- En el evento "Al cargar" del segundo formulario:
Me.btnVolver.Visible=Me.OpenArgs
o. Si no quieres pasarle False como argumento el OpenArgs, o si vas a abrir directamente el formulario (para que no te de error):
Me.btnVolver.Visible=Nz(Me.OpenArgs,False)
Saludos!
Creo que no me explicado bien. Yo tengo este formulario el siguiente:
Le doy al botón "agregar o editar empresa" y entro al formulario de empresa. De momento todo bien. Pero si entro en fires sale otro formulario que de momento no necesito tampoco nada:
Cuando entro en "inscripcions" voy a otro formulario:
En el botón "agregar nova empresa" entro en el formulario de empresa. En este momento es cuando tiene que salir el botón de volver atrás. Y en este botón tendría que ir según el formulario que haya abierto antes que el siguiente que te muestro.
Es muy sencillo, te explico la segunda forma:
1º/ En el formulario "Empresas" (lo llamaré FEmpresas en los códigos), si no lo tienes ya, le cambias la propiedad "Visible" del botón de volver atrás (lo llamaré btnVolver en los códigos) a No, para que por defecto esté oculto.
2º/ En tu primer formulario, no necesitas modificar nada.
3º/ En el formulario "inscripcions", en el botón "agregar nova empresa", le modificas el código para abrir el formulario de empresas y pasarle el argumento nuevo (OpenArgs).
Supongamos que tienes esto, para abrirlo en un registro nuevo:
DoCmd. OpenForm "FEmpresas",,,, acFormAdd
Tienes que cambiarlo a:
DoCmd. OpenForm "FEmpresas",,,, acFormAdd,, True 'True indicará que queremos mostrar el botón.
4º/ En el formulario empresas, en el evento "Al cargar", generas este otro código:
Me.btnVolver.Visible=Nz(Me.OpenArgs,False)
Y listo. Si necesitas hacer lo mismo en otros formularios, solo has de seguir los mismos pasos.
A ver si lo he entendido bien el código lo tengo que poner en el formulario "inscripcions" en el botón "agregar nova empresa". ¿En el apartado al Hacer clic no?
El del punto 3 sí, el del punto 4 es en el formulario "empresas" en "al cargar". Fíjate que has de cambiar lo que yo llamo FEmpresas y btnVolver por los nombres de tu formulario y botón respectivamente.
es lo que he echo y me sale lo siguiente
y si le doy a las propiedades del boton "tornar enrere" lo siguiente:
puede ser que se el evento "al entrar"?
No, es en las propiedades del formulario, tienes que fijarte, que en el desplegable, muestre "Formulario", no "Detalle" ni "tornar enrere", que son respectivamente, la sección detalle del formulario y el botón.
Cuando lo intento ejecutar en el formulario "inscripcions" al darle el botón de "agregar nova empresa" pasa al formulario de empresa pero no sale el botón de volver atrás he echo lo siguiente:
¿Qué puede fallar? Porque no me sale ningún error
Te falta hacer lo que indico en el punto 4:
En el evento al cargar del formulario empresa ponerle el código:
Me.NombreBoton.Visible=Nz(Me.OpenArgs,False)
Si lo he puesto y el botón no sale. Pero yo lo que quiero es que el formulario vea que si entro desde el formulario principal el botón de volver atrás no salga y si entro desde otro formulario que no sea el principal me salga el botón volver atrás. Y si vengo de un formulario vuelva a ese formulario
Y es lo que hace lo que te he propuesto...
Mira este mini-ejemplo que te acabo de preparar, para que veas que funciona:
¡GRACIAS! Una pregunta más si tengo que hacer lo mismo con otros formularios, es decir, esto lo he echo para el formulario de "Fira Artesanía" pero tengo por ejemplo el de "Fira Birrasana" que también tiene que ir al de empresas que tendría que hacer
Pues tienes que seguir los mismo pasos en cada formulario (en el evento al cargar) y en los botones que abran los formularios (añadirle el OpenArgs)
Pero el evento al cargar solo es en la de formulario empresa y dentro de el que hay el botón volver tiene que ir según el formulario. Es decir si vengo del formulario artesanía pues volver a el. Si estoy en el formulario birrasana volver a este formulario.
Saludos
El evento "al cargar" es para mostrar o no el botón en el formulario en que que le programas el código. Si tienes varios formularios en ls que quieres que el botón aparezca o no, lo tendrás que poner só o sí.
Y en el botón con el que abres esos formularios le pasas el True como valor de OpenArgs.
vale hasta ahí todo bien pero en el botón que quiero que aparezca o no tiene que abrir diferentes formularios ya que se puede entrar a ese formulario de varias maneras. Sabes lo que quiero decir?
Entonces la cosa cambia:
1º/ En los botones que abren el formulario, en el openArgs cambia el True por Me. Name, para que te quede algo así:
DoCmd. OpenForm "NombreFormulario",,,,,, Me. Name
2º/ En el evento "al cargar" del formulario, cambia lo que tienes por esto otro:
If Len(Me.OpenArgs)>0 Then Me.NombreBoton.Visible=True
3º/ En el código del botón le pones:
DoCmd. OpenForm Me. OpenArgs 'Abre el formulario desde el que abriste
DoCmd. Close acForm Me. Name ' Cierra el formulario
- Compartir respuesta