Aprende VBA para Access

Uso de bucles Do While en VBA

¡Prueba gratis durante 10 días

nuestros 1241 cursos !

Prueba gratis Mostrar modalidades de suscripción
Con el bucle Do While haremos que un código se repita un número indeterminado de veces mientras que se cumpla una determinada condición. En este vídeo también veremos cómo podemos forzar la salida de este bucle y cómo parar un código embuclado.

Transcripción

Vamos a ver ahora los bucles. Para ello vamos a ver el bucle "Do While" El bucle "Do While" nos va a servir para ejecutar un código las veces que sea necesario. No es una condición matemática si no hasta se cumpla o se deja de cumplir una condición. Para ello, me he creado este formulario de "Contrasena". No le he querido guardar con la "ñ", le he llamado "contrasena" aunque al botón sí le he puesto "Contraseña" Una cosa es la etiqueta que ahí podemos poner lo que queramos y otra cosa es el nombre del control o el nombre del formulario. Entonces, debe decir "Al hacer clic" Voy a ver el código que quiero que haga. Dentro del botón me declaro la variable "contra" que va a ser para almacenar un texto. Y entonces, para empezar, yo le podría decir "Do While" mientras que contra sea distinto de 1, 2, 3, 4, la contraseña, aunque parezca mentira, más utilizada del mundo, quiero que haga una serie de cosas. El "Do While" empieza con la sentencia "Do While" y termina con "Loop". Entonces, haz mientras y "Loop", vuelve. O sea, va a ir haciendo todo lo que nosotros pongamos aquí en medio mientras que no pongamos 1, 2 ,3, 4. Entonces, aquí le digo: contra = InputBox, o sea, "Introduzca la contraseña". Le voy a poner de todos modos una salida de emergencia porque muchas veces tenemos que forzar esa salida de alguna manera aunque no se cumpla la condición, por así decir, una puerta de atrás. En este caso le digo: Si contra = "*" entonces quiero que salga un mensaje que pone: "Salida de emergencia". Y para ello tenemos la sentencia: "Exit Do". Con "exit", lo que hacemos es salirnos de la sentencia donde estemos. En este caso es "Exit Do". Entonces salimos del bucle. Veremos que con "exit" también podríamos poner "sub" del procedimiento, "func" si estuviéramos en una función y también de otro tipo de bucles. Una vez que hemos salido del bucle, yo quiero saber si he salido porque he puesto bien la contraseña o porque hemos pulsado el asterisco para forzar la salida de emergencia. Entonces yo le digo: Si contra = "1234", entonces, "MsgBox ("Contraseña correcta")". Si nos fijamos aquí, este "If" no tiene "End if". ¿Por qué? Porque como solo tengo aquí una condición y si se cumple esta condición quiero que haga una cosa, lo puedo poner en la misma línea. Entonces, lo voy a probar. Le digo la contraseña. Ahí le puedo poner distintas contraseñas. Mientras que no ponga la contraseña correcta no me va a dejar salir. Por ejemplo, voy a poner la contraseña correcta. Me dice contraseña correcta. Pero qué sucede ahora si pongo, por ejemplo, el asterisco. Me dice salida de emergencia. Le digo aceptar y ya hemos terminado con este primer caso del "Do While" Pero según ésta, podríamos probar toda la PC que quisiéramos. Vamos a mejorarlo un poquito. Para ello, voy a cerrar este formulario, le puedo cambiar los cambios si quiero. Y voy a abrir este segundo. En el cual, ya me está pidiendo el nombre según entro. Le voy a poner, en este caso, mi nombre. Le digo aceptar, me pone que bienvenido y le digo aceptar. Ahora ya tengo aquí las opciones de la contraseña. Vamos a probar el código que tenemos aquí. Le decimos aquí en el botón pero si nos fijamos también tiene un código del formulario. Es muy común que en un formulario que al cargar tenga que hacer algo. Entonces, al cargar, ¿qué le hemos dicho que haga? Fijaros en el "Form_Load" queremos que ejecute algo. O sea que, cuando se carga el formulario ya vaya haciendo cosas. En este caso, me he declarado una variable que he llamado como "String", le he dicho que sea igual simplemente a un "InputBox" para que podamos escribir el nombre y después un cuadro de mensaje donde muestra ese nombre. De esta manera nosotros le podemos decir que ejecute cualquier código cuando está cargando el formulario. Y ahora, vamos realmente a lo que va a hacer ahora el botón. He creado como antes la variable contra como "String" pero también me he declarado una nueva variable que se llama "veces" como "Byte" Le he dicho que veces es igual a 0. Con lo cual, lo que quiero ahora es que haga mientras que sea distinto de 1,2,3,4 y veces menor que tres, o sea, lo que estamos haciendo es controlando tanto que la contraseña sea la correcta pero también que no se puedan introducir infinitas veces como hacía antes. Entonces, lo que le decimos es que contra = InputBox o la contraseña. y sobre todo, aquí muy importante, que la variable "veces" va a ir subiendo. O sea, para ver cuántas veces se ejecuta el código. Yo le digo que veces = veces +1. Y como vemos aquí tenemos el "Loop". O sea, va a ir haciendo esto: cuando salimos del bucle, queremos saber si ha sido porque ha escrito mal la contraseña o porque se le han agotado las oportunidades. Entonces, cuando salimos, nosotros aquí le preguntamos, si contra es distinto a uno de 1,2,3,4, es que no ha puesto bien la contraseña. Entonces, sacamos un cuadro de mensaje en el cual le decimos "Has agotado las oportunidades" Y muy importante este objeto: "DoCmd" Lo voy a escribir para que lo veáis. Cuando escribo "DoCmd." me salen todas la opciones que tenemos en las macros. El objeto "DoCmd" es sólo de Acces. Y aquí está recogido todo lo que se puede hacer en las Macros como puede ser, por ejemplo, abrir un formulario, abrir un informe, cerrar, por ejemplo, le puedo decir "Close". y cuando pongo el espacio me van saliendo los argumentos que necesito. Pues, qué es lo que quita al cerrar, el tipo de objeto, el nombre del objeto, si quiero guardar los cambios o no. En este caso le he dicho simplemente que cierre un formulario. ¿Qué formulario? En el que estoy, contrasena2. Y no quiero guardar los cambios. O sea, si ha habido cualquier cambio, no lo quiero guardar. Si no, con este "If", si no es distinto de 1,2,3,4, es que la contraseña es correcta porque es igual a 1,2,3,4. Entonces quiero que ponga "Contraseña correcta". Lo probamos. Al cargar el formulario, como ven, nos pide nuestro nombre. Le pongo el nombre, me dice que bienvenido. Le pongo la contraseña, si pongo la contraseña correcta me dice "Contraseña correcta", y si ahora le voy a poner 1,2 y 3, me dice que se han agotado las oportunidades, me cierra el formulario y no me ha guardado los cambios.

Aprende VBA para Access

Aprende las bases de la programación Visual Basic necesarias para aplicarla en Access y poder crear bases de datos más funcionales de las que el software te ofrece por defecto.

2:07 horas (34 Videos)
Actualmente no hay comentarios.
 

Este curso video2brain está disponible como descarga y para ser visualizado online. ¡Pero no hace falta que decidas entre las dos opciones! Al comprar el curso, disfrutarás de ambas posibilidades.

La descarga te permite ver las lecciones sin estar conectado/a a internet y supone una navegación fácil y ágil entre capítulo y capítulo. Si vas a trabajar en diferentes ordenadores o si no quieres descargarte el curso completo, entra en la web con tus datos de acceso y disfruta directamente de tus vídeos online. Te deseamos que disfrutes de este curso y te resulte de mucha utilidad.

Estamos a tu disposición si tienes cualquier tipo de duda o pregunta.