El otro día hablábamos sobre la importancia de informar al usuario de nuestra aplicación, mediante ayudas de texto, sobre los distintos objetos de nuestro programa.
En la misma línea hoy vamos a hablar de los mensajes de texto (MsgBox). Dichos mensajes nos permiten interactuar con el usuario, en ocasiones solo para informar, otras para obligar al usuario a tomar una decisión, como por ejemplo, al pulsar el bótón de salir de la aplicación preguntar al usuario si realmente está de acuerdo en esa acción.
Configurar los msgbox en nuestro Access es tremendamente sencillo así que daremos unas pequeñas pautas para que podáis hacerlo vosotros mismos y, aunque se puede hacer mediante macros, yo soy gran defensor de la versatibilidad de VBA y por tanto este tutorial se centrará en esta metodología.
La estructura básica para mostrar en MsgBox es así:
Los MsgBox tienen tres argumentos fundamentales:
- Texto a mostrar: Este argumento es obligatorio configurarlo y representa el texto que mostrará nuestro mensaje.
- Botones: Este es opcional y en él configuramos el como queremos que se muestre el mensaje, cuantos botones ha de llevar, el icono que mostrará y cual será el botón predeterminado. En este argumento se pueden usar uno o varios de los siguientes valores a la vez según nuestras necesidades.
- VbOKOnly: Muestra solamente el botón Aceptar.
- VbOKCancel: Muestra los botones Aceptar y Cancelar.
- VbAbortRetryIgnore: Muestra los botones Anular, Reintentar e Ignorar.
- VbYesNoCancel: Muestra los botones Sí, No y Cancelar.
- VbYesNo: Muestra los botones Sí y No.
- VbRetryCancel: Muestra los botones Reintentar y Cancelar.
- VbCritical: Muestra el icono de mensaje crítico.
- VbQuestion: Muestra el icono de pregunta de advertencia.
- VbExclamation: Muestra el icono de mensaje de advertencia.
- VbInformation: Muestra el icono de mensaje de información.
- VbDefaultButton1: El primer botón es el predeterminado.
- VbDefaultButton2: El segundo botón es el predeterminado.
- VbDefaultButton3: El tercer botón es el predeterminado.
- VbDefaultButton4: El cuarto botón es el predeterminado.
Si se omite este argumento el valor predeterminado será VbOKOnly, o sea, que solo mostrará un botón de aceptar tal y como se muestra en la imagen anterior.
Hay algunas opciones más que no he mostrado porque realmente no son interesantes. Puedes consultarlas en la ayuda de Access.
Y otro punto muy interesante a favor de este argumento es que, en función de los botones que hayamos elegido mostrar en el mensaje de texto, una vez que nuestro usuario pulse uno de ellos, la aplicación devolverá un valor que podremos capturar y actuar en consecuencia. Vamos a verlos:
- vbOK – Aceptar
- vbCancel – Cancelar
- vbAbort – Anular
- vbRetry – Reintentar
- vbIgnore – Ignorar
- vbYes – Si
- vbNo – No
El valor de la izquierda es el que devuelve la aplicación cuando pulsemos el botón de la derecha.
- Título: Opcional. Es el texto que se muestra en la barra de título, si se omite se mostrará el título de la aplicación.
La teoría está muy bien pero estoy seguro que estáis deseando empezar a probar nuestros mensajes de texto. Pues vamos a ello con algunos ejemplos.
Lo primero que hay que hacer es crear un formulario en blanco y colocamos un botón con el que poder interactuar. Pulsaremos sobre él con el botón derecho del ratón e iremos a sus propiedades, pestaña eventos y el evento “Al hacer Click”, seleccionamos “Procedimiento de evento” y pulsamos sobre el botón con los tres puntitos de la derecha.
Nota: Se puede apreciar que antes de acceder al elditor de VBA me he tomado la molestia de cambiar el nombre que da por defecto Access al botón “Comando1” por uno mas identificativo “cmdSalir”, esta práctica es sumamente recomendable que lo hagamos como rutina pues de lo contrario cuando nuestros formularios se llenan de botones y controles es cuestan mucho poder identificarlos correctamente.
Sigamos, en el editor de VBA, donde ya Access nos ha escrito un par de líneas escribiremos nuestro código.
Ejemplo 1: Mensaje con botón “Aceptar” e icono de advertencia:
Private Sub cmdSalir_Click() MsgBox "Ha decidido salir de la aplicación.", vbCritical, "Atención" End Sub
Ahora vamos a nuestro formulario y pulsamos el botón para comparar que hemos cambiado desde el primer ejemplo a este:
Como ves, la diferencia entre este y el primero solo está en el icono “vbCritical “que hemos mostrado al usuario. A nuestra elección según el tipo de mensaje que queramos mostrar y lo que pretendamos trasmitir al usuario. Por ejemplo, si utilizamos este mensaje como advertencia de una acción que no queremos que realice pues el icono sería mas apropiado que el de información.
Este tipo de mensajes, una vez pulsado el botón “Aceptar” se cierra y el programa sigue ejecutando las líneas de código que hubiera a continuación del MsgBox.
Bien, ya hemos visto la forma de poner un mensaje de texto simple pero lo interesante es poder interactuar con ellos, darle opciones al usuario y decidir que hacer nosotros en función de su elección pero eso lo dejaremos para el próximo artículo para no hacer muy pesado este.
¿Cómo puedo incluir contenido de una tabla de Access en un msgbox? Algo como «El usuario X no existe» (y X es lo que obtiene de la tabla).
Poderse, se puede, sólo que el tema sería algo extenso como para poder explicarlo sobre este comentario. No obstante lo dejo pendiente y me has dado tema para poder escribir un artículo completo con todos los detalles.
Ahora, dando una pincelada, si es un MsgBox personalizado con el nombre de la persona que está usando el equipo siempre puedes rescatarlo de la tabla usando, por ejemplo, el DLookUp. Guardarlo en una variable de texto y luego usar esa variable en la construcción del msgbox, algo como MsgBox («Esto va dirigido a » & MiVariable & » porque ha realizado una acción mal», ……….)
Buenas tardes actual mente quiero saber si se puede hacer que aparezca un mensaje dependiendo lo que seleccione de una lista, les voy a decir que tengo o comentar el caso.
Cree un formulario el cual sirve solo de consulta en este se puede ver información. Hay una lista combinada o no sé como se llame que cuando le doy click en ella me deja ver la dicho registro. Adicional a esto este formulario esta filtrado con un cuadro en el mismo formulario que es activo u inactivo. Esto lo que hace es que cuando seleccione un dato de la lista que este inactivo no lo muestra, pero me gustaría saber si hay algún modo de que cuando le de click a ese dato me aparezca un mensaje que diga proyecto inactivo pero que los cuando le dé en un dato que si este activo lo deje ver normal. Les agradezco una respuesta de si es posible o no.
Gracias
Buenas tardes actual mente quiero saber si se puede hacer que aparezca un mensaje dependiendo lo que seleccione de una lista, les voy a decir que tengo o comentar el caso.
Cree un formulario el cual sirve solo de consulta en este se puede ver información. Hay una lista combinada o no sé como se llame que cuando le doy click en ella me deja ver la dicho registro. Adicional a esto este formulario esta filtrado con un cuadro en el mismo formulario que es activo u inactivo. Esto lo que hace es que cuando seleccione un dato de la lista que este inactivo no lo muestra, pero me gustaría saber si hay algún modo de que cuando le de click a ese dato me aparezca un mensaje que diga proyecto inactivo pero que los cuando le dé en un dato que si este activo lo deje ver normal. Les agradezco una respuesta de si es posible o no. Gracias