¿Se puede inserta una clave a un botón?

Si tengo un formulario con un botón, ¿puedo poner una clave al botón para que sólo ejecute la macro si se introduce la clave?.

1 respuesta

Respuesta
1

Si, pero no veo como hacerlo con una macro.

Me explicaré: iría bien un comando de macro que te pidiera un valor, pero no lo veo por ningún lado.

Si lo hacemos con VB sí que funciona. Si quieres te lo soluciono así, y después ejecutamos la macro si el valor es el esperado. De todos modos, si ponemos un cuadro para entrar un valor como contraseña, no creo que se pueda entrar como tal, es decir, no aparecerán * en pantalla por cada carácter, sino la contraseña en texto llano, lo cual no creo que te sirva.

Otra forma que se me ocurre es: ¿Hay alguna otra condición que no sea entrar una clave que el programa sepa o pueda saber al momento de abrir el formulario?. Si es así puedes hacer que el botón esté inactivo o invisible.

Echa un vistazo y si quieres exploramos las dos posibilidades.

Creo que no me he explicado correctamente.

Tengo un formulario como menú inicial (inicio). Tiene insertadas tres imágenes, para acceder a otros formularios, que actúan como botones.

Con toda seguridad la aplicación va a estar instalada en más de un ordenador, pero eso no quiere decir que todo el mundo acceda a todo. Unos serán usuarios y sólo pueden utilizar una opción, mientras la responsable deberá acceder a toda la aplicación en su conjunto.

Dicho esto, se me ocurrió que algunas de las imágenes que hacen la función de botón podían tener una clave para que accediera sólo la responsable.

Estas son la ideas de un novato.

Si se consigue el objetivo que te he descrito cualquier fórmula que me des es buena. Lo dejo en tus manos.

Gracias por atenderme.

Vale, ahora está más claro. Mil disculpas.

Se me ocurre que cada vez que des clic a un botón te pregunte la contraseña, por ejemplo con un InputBox. El problema que tiene este método es que cuando el usuario entra la contraseña, por decirlo de algún modo, si alguien está detrás, puede verla.

Otra posibilidad es lo que te decía: ¿Hay alguna otra condición que no sea entrar una clave que el programa sepa o pueda saber al momento de abrir el formulario?, es decir, cuando el usuario entra al programa, ¿tiene una pantalla de login?

Si es así, y como dices está instalado en varios ordenadores, puedes hacer que cuando se cargue el form de las tres imágenes, según el usuario algunas estén activas (enabled) y otras no, según el caso.

Me explicaré: supongamos que tienes una pantalla de login que se llama LoginForm, con dos campos de texto, usuario y password (el segundo con máscara de contraseña) y dos botones:aceptar y cancelar, y que tienes 3 usuarios: user1, user2, admin.

Cuando el usuario hace clic en aceptar creas un procedimiento de evento (en las propiedades del botón, eventos, al hacer clic, procedimiento de evento, y luego el botón ... para entrar al editor de Visual basic). VB habrá escrito:

Sub Aceptar_Click()

End Sub

Entre estas dos lineas pones:

dim prioridad as integer

if usuario = "admin" then

prioridad = 0 'es un valor arbitrario

else

prioridad = 1

Endif

Docmd. Openform "inicio", acNormal,,, acFormEdit, acWindowNormal, prioridad

Docmd. Close acform, me. Name, acsaveyes

Con esto lo que haces es abrir el formulario inicio y le pasas el número que está guardado en prioridad.

Antes de mostrar el formulario inicio cierra el formulario de login para que no moleste.

En el formulario form1, lo abres en modo diseño, abres las propiedades, vas a la pestaña eventos y buscas el evento Al abrir y haces clic en ...

Entrarás otra vez en VB y verás que access ha escrito

Sub Form_Open()

End Sub

Entre las dos lineas escribes

if me.openargs=0 then

boton1.enabled=true

else

boton1.enabled=false

Endif

¿Qué hace esto?

Al abrir el formulario Access se pregunta: ¿Cuánto vale el argumento que me han pasado?

Si vale 0 significa que desde el form login le hemos pasado un cero, por lo que se trataba de un administrador, así que hace que el botón llamado boton1 esté activado y por tanto se puede usar.

En caso contrario (si es cualquier otro valor o incluso si es nulo), access pone el botón boton1 como no clicable, no activo.

No es difícil, inténtalo.

Ya me dirás que tal.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas