Unidad 14. Ejercicio paso a paso: Macros con bucles de repetición


Objetivo

Practicar la creación de macros complejas que incluyan bucles de repetición utilizando submacros.

Ejercicio paso a paso

Abrir la base de datos Clases.accdb que se encuentra en la carpeta Mis ejercicios.

En ejercicios anteriores creamos macros que buscaban un registro con valor Internet en su campo Nombre Curso y lo cambiábamos. Esas macros sólo modificaban el primer registro que encontraban. Por lo que si queríamos cambiar todos los registros de un formulario debíamos ejecutar la Macro tantas veces como registros con el valor Internet existiesen.

Vamos a crear una macro que modifique todos los registros que contengan el valor Internet en su campo Nombre Curso.

  1. Crea una nueva macro: pestaña Crear > Macro.
  2. Guardala (CTRL+G) con el nombre CambiarTodos.

Primero desactivaremos el Eco de pantalla para que no se vean las acciones de la Macro.

  1. Utiliza el listado de Agregar nueva acción para incluir la acción Eco. Recuerda que debe estar activo el botón Mostrar todas las acciones, o no aparecerá.
  2. Cambia su argumento Eco activo al valor No.
  3. Escribe Realizando cambios... en Texto de la barra de estado.

Ahora abriremos el formulario donde deberemos hacer los cambios.

  1. Utiliza el listado de Agregar nueva acción para incluir la acción AbrirFormulario.
  2. En los Argumentos de acción seleccionamos Cursos tabular en Nombre del formulario.
  3. Especifica el Modo de datos Modificar. El resto de opciones las dejamos como están: Vista Formulario y Modo de la ventana Normal.

Ahora buscaremos el registro en nuestro formulario.

  1. Utiliza el listado de Agregar nueva acción para incluir la acción BuscarRegistro.
  2. En los Argumentos de accción escribe Internet en el campo Buscar y establece Sólo el campo activo a No.
    El resto los dejaremos como están, asegúrate de que tienen los valores siguientes: Coincidir mayúsculas y minúsculas a No, Buscar en a Todo, Buscar con formato a No, Buscar primero a .

Una vez encontrado el registro pasaremos a modificarlo. Ahora es cuando viene la "complejidad".
Crearemos un bucle que repita todo el proceso de cambio para cada uno de los registro que contengan la palabra Internet.

  1. Utiliza el listado de Agregar nueva acción para incluir la acción EjecutarMacro.
  2. En los Argumentos de acción escribiremos CambiarTodos.repite en el campo Nombre de macro.
    Esta submacro aún no existe, pero la crearemos más adelante.
  3. En Expresión de repetición escribe [Formularios]![Cursos tabular]![Nombre Curso]="Internet".

¿Qué hemos hecho? Muy fácil:
La expresión indica en qué casos seguirá ejecutándose la acción EjecutarMacro, que pone en marcha la submacro repite.
Es decir, que Access repite un bloque de acciones mientras el campo Nombre Curso del formulario Cursos tabular contenga el valor Internet (expresión).
En el momento en el que deje de haberlo, el bloque CambiarTodos.repite dejará de repetirse.

El siguiente paso que haremos será crear el bloque repite que cambiará los valores del campo Nombre Curso.

  1. En el Catálogo de acciones lateral, haz doble clic sobre Submacro, en la sección Flujo de programas.
  2. Se introducirá un panel en el que podrás darle un nombre a la submacro. En la caja de texto, indica el nombre repite.
    Hemos creado el señalizador que indica el sitio a donde tiene que ir la acción EjecutarMacro que insertamos anteriormente, ahora nos queda indicar qué acciones efectuará.
  3. Selecciona la acción EstablecerValor en la submacro.
  4. En los Argumentos de acción escribe [Formularios]![Cursos tabular]![Nombre Curso] en la opción Elemento.
  5. En Expresión escribe "Diseño Web" (con comillas). Esto cambiará el valor del campo.
  6. Agrega una nueva acción en la submacro, BuscarRegistroSiguiente. No contiene argumentos.
    Hemos hecho que el bucle cambie el valor y se posicione en el siguiente registro que contenga el valor Internet.
    ¿Qué pasará entonces con el bucle de EjecutarMacro? Cuando la acción BuscarSiguiente no encuentre más registros que cumplan los criterios especificados en BuscarRegistro, se posicionará en el primer registro (que obviamente no contendrá Internet). La acción EjecutarMacro analizará el campo Nombre Curso y al no encontrar el valor Internet no ejecutará nuestro bloque y pasará a la siguiente acción.

A continuación seguiremos introduciendo acciones en la macro principal, tras la submacro.

  1. Utiliza el listado de Agregar nueva acción para incluir la acción CerrarVentana.
    Verás que automáticamente se coloca sobre la submacro. No te preocupes, está bien así, ya que la submacro no entra en el flujo normal del programa, sino que sólo se ejecuta cuando es llamada, de modo que no nos importa a qué altura esté situada dentro de la macro principal.
  2. En los Argumentos de acción seleccionaremos Formulario en la opción Tipo de objeto.
  3. En Nombre de objeto selecciona Cursos tabular.
  4. En Guardar seleccionar para cerrar guardando los cambios.

Ahora mostraremos un cuadro de mensaje para decirle al usuario que hemos terminado la tarea.

  1. Agrega la acción CuadroDeMensaje.
  2. En los Argumentos de acción escribe Se han modificado todos los registros que contenian 'Internet' en el formulario 'Cursos tabular'. en la opción Mensaje.
  3. Cambia la opción Bip a .
  4. Cambia la opción Tipo a Información.
  5. En la opción Título escribe Registros actualizados.

En versiones anteriores de Access habríamos necesitado detener la macro para evitar que se ejecutara el bloque repite que se encuentra al final de la macro. Ésta es la ventaja de utilizar submacros con Access 2010, que no necesitaremos preocuparnos de evitar que se ejecute, ya que sólo se ejecutará de forma expresa en las acciones EjecutarMacro y AlOcurrirError.

Aquí puedes ver una imagen que muestra cómo deberá haber quedado tu macro después del ejercicio:

Nota: Hemos contraído todas las acciones para que sea más fácil de seguir, exceptuando la submacro.

  1. Guarda la macro.
  2. Ejecuta la macro pulsando el botón Ejecutar Botón Ejecutar.

Puedes probar a poner varios nombres de curso como Internet para comprobar que los cambia todos, pero cuando acabes, vuelve a poner los valores que había al principio.


Octubre-2010

   Inicio    




Curso de Access 2013
.