Este tema aún no ha recibido ninguna valoración - Valorar este tema

Incorporar lógica a los datos con el uso de macros de datos en las aplicaciones de Access 2010 (traducción automática)

Office 2010
Ff973807.Important(es-es,office.14).gifImportante:

Este artículo se ha traducido con traducción automática; vea la declinación de responsabilidades. Para su referencia, puede encontrar la versión en inglés de este artículo aquí.

Ayuda visual de Office

Resumen:  Información sobre la Microsoft Access 2010 adición de compatibilidad para las macros de datos y la adición de reglas empresariales mediante el uso de las macros de datos.

Se aplica a: Microsoft Access 2010

Publicada:  Septiembre de 2010

Proporcionado por:  Ken Getz, http://www.mcwtech.com/default.htm

Introducción

Este Visual artículo se muestra cómo agregar compatibilidad para desnormalizar las tablas Pedidos y detalles de pedidos en la base de datos de ejemplo Northwind, agregar una columna a la tabla pedidos que mantiene el importe total que se adquiere en el orden. Aunque desnormalizar los datos por lo general no es el comportamiento óptimo, puede aumentar el rendimiento al crear informes.

Codifíquelo

Muchos de los procedimientos de tratamiento de datos comparten deberes comunes, variando únicamente en los detalles específicos, tales como la clave principal determinado para la fila que desea modificar. Podría repetir los mismos pasos en varias macros de datos. Sin embargo, si se puede encontrar los pasos comunes, puede extraer esos pasos y colocarlos en una macro de datos con nombre que se puede llamar desde otras macros de datos. Para controlar los eventos de datos, puede crear una macro de datos con nombre y, a continuación, llamar a partir de un evento de datos, o puede crear una macro y adjuntarlo a un evento de datos en una tabla. Si pensar en el futuro, a menudo puede guardar el trabajo mediante la creación de macros de nombre.

Dado que la intención del ejemplo es mantener una ejecución total del importe total en un orden determinado, debe agregar una macro para la actualización después de, después de insertar y después eliminar eventos de datos en el table─in de detalles de pedidos de cada caso, la macro actualiza el valor de un nuevo campo en la tabla de pedidos, un campo de moneda nombre OrderTotal.

Además, la base de datos de ejemplo Neptuno incluye los datos en la tabla Order Details y necesita alguna forma de resumir que inicializar el campo de OrderTotal en la table─this de pedidos y datos significa que debe crear una macro de datos independientes que se puede llamar para realizar la inicialización del campo OrderTotal. De este Visual, iniciar mediante la creación de la base de datos de ejemplo y, a continuación, agregar esta macro independiente con nombre en primer lugar. A continuación, creará una macro con nombre que se puede llamar desde los eventos después de la actualización después de insertar y después de eliminar de la tabla Order Details.

Crear la base de datos de ejemplo

Para crear la base de datos de ejemplo, utilice el procedimiento siguiente.

Para crear la base de datos de ejemplo

  1. Iniciar Access 2010, haga clic en Archivo y, a continuación, haga clic en Nuevo.

  2. En la lista de plantillas disponibles, en las plantillas de Office.com, seleccione Samples.

  3. En la lista de bases de datos de ejemplo, seleccione Northwind 2007.

  4. Seleccione una ruta de acceso apropiada y, a continuación, haga clic en el botón Descargar para descargar e instalar una copia limpia de la base de datos de ejemplo.

  5. Si se le pida, haga clic en el botón Habilitar contenido en la Barra de mensajes para activar el código VBA en la base de datos de ejemplo.

  6. Acepte el ID de inicio de sesión predeterminado en el formulario de Cuadro de diálogo de inicio de sesión y, a continuación, haga clic en Inicio de sesión.

En este momento, debería haber descargado e instalado una copia nueva de la base de datos de ejemplo Neptuno 2007 y debe cargarse en Access 2010. Cierre el formulario de inicio predeterminada.

Modificar la tabla Orders

Para probar las macros de datos, debe agregar un nuevo campo a la tabla Orders. Para modificar la tabla Orders, utilice el procedimiento siguiente.

Para modificar la tabla Orders

  1. En el Panel de navegación, expanda la lista desplegable en la parte superior del panel y seleccione el Tipo de objeto de la lista de opciones disponibles.

  2. Expanda la ficha Tablas , con el botón derecho en la tabla Pedidos y seleccione Vista Diseño.

  3. En la parte inferior de la lista de campos, en la columna nombre del campo, escriba OrderTotal. En el campo tipo de datos, introduzca la moneda.

  4. Guarde y cierre el diseñador.

Actualización del campo OrderTotal

Dado el campo de OrderTotal en la tabla pedidos, debe agregar una macro de datos que se puede inicializar el valor del campo, dado el conjunto actual de filas en la tabla Order Details. La macro debe recorrer en iteración todas las filas en la tabla de pedidos y para cada fila, buscar el correspondiente conjunto de filas en la tabla Order Details. Teniendo en cuenta esas filas, la macro debe calcular la suma de la cantidad * campos [Precio unidad] y almacenar esta suma en la fila actual en la tabla Orders.

En el Panel de navegación, haga doble clic en la tabla de Pedidos para abrir la tabla. En la cinta de opciones, seleccione la ficha de la Tabla . A continuación, en el grupo de Macros con nombre , seleccione Macro con nombre. Por último, seleccione Crear macro con nombre (consulte la figura 1).



Figura 1. Crear una macro con nombre

Creación de una macro con nombre

En el Diseñador de Macro , en el cuadro combinado, seleccionar la acción de DeCadaRegistro─this le permite recorrer en iteración todas las filas de un origen de datos. En el cuadro combinado junto a Para cada registro en , seleccione Pedidos. La figura 2 muestra el Diseñador de macros en este momento.



Figura 2. Recorrer en iteración todas las filas

Procesamiento de una iteración en todas las filas

En el cuadro combinado dentro del área de DeCadaRegistro , seleccione EstablecerVariableLocaly cree una variable denominada varTotalPurchased con un valor de 0, tal como se muestra en la figura 3.



Figura 3. Crear una variable local que será los resultados de tally

Creación de una variable local que calculará el resultado

En el cuadro combinado vacío dentro de la acción de macro ForEachRecord, seleccione DeCadaRegistro (de modo que puede recorrer todas las filas de la orden de la tabla Order Details). Introduzca los valores como se muestra en la figura 4 mediante el uso de la IntelliSense de acceso mientras se escribe. Tenga en cuenta el Alias del valor de field─this crea un conjunto de filas con nombre, por lo que puede hacer referencia al conjunto de filas. El nombre es arbitrario.



Figura 4. Seleccione el conjunto de filas coincidentes en la tabla Order Details

Selección del conjunto de filas coincidentes en la tabla de detalles del pedido

Dentro de la nueva acción de DeCadaRegistro , en el cuadro combinado, seleccione EstablecerVariableLocaly escriba las expresiones que se muestra en la figura 5. Esta acción acumula el total adquirido para cada elemento de la tabla Order Details.



Figura 5. Acumular el total del pedido

Acumulación del total para el pedido

Para completar la macro y actualizar el valor de la tabla pedidos, haga clic para seleccionar la acción de macro ForEachRecord más externo. En el cuadro combinado en la parte inferior de la acción, seleccione EditarRegistro. Dentro de la acción, seleccione EstablecerCampo en el cuadro combinado. Establecer el cuadro de texto de Nombre a Orders.OrderTotal y el cuadro de texto de Valor para varTotalPurchased, tal como se muestra en la figura 6.



Figura 6. Establecer el valor del campo OrderTotal utilizando la variable local

Configuración del valor del campo OrderTotal mediante una variable local

Ahora, ha creado una macro de datos con nombre que recorre en iteración todas las filas de la tabla Orders. Para cada fila de la tabla, la macro busca todas las filas coincidentes en la tabla Order Details, acumula el producto de los campos Cantidad y precio unitario, recopila la suma en una variable denominada varTotalPurchased y, por último, copiará el valor de la parte posterior de variable local en el campo de OrderTotal en la tabla Orders.

Para crear una macro para ejecutar la macro de datos

  1. En la cinta de opciones, haga clic en Guardar, nombre de la macro UpdateTotalsy, a continuación, haga clic en Cerrar.

  2. Para ejecutar la macro e inicializar todos los campos de OrderTotal, en la cinta de opciones, seleccione Creary, en el grupo de Macros y código , seleccione la Macro.

  3. En el menú desplegable Agregar nueva acción , seleccione EjecutarMacroDeDatos, a continuación, seleccione la macro Orders.UpdateTotals, tal como se muestra en la figura 7, guardar la macro como UpdateTotals y, a continuación, haga clic en Ejecutar.

  4. Una vez finalizada la macro, seleccione la tabla pedidos y compruebe que el campo total de pedido contiene ahora el importe total que se adquiere en el orden.

Puede crear una consulta de totales para comprobar los resultados.



Figura 7. Crear una macro para ejecutar la macro de datos

Creación de una macro para ejecutar la macro de datos

Crear el UpdateTotal con el nombre de Macro

Cada uno de los datos de eventos (después de insertar, después de la actualización y después de eliminar) deben controlar básicamente el mismo task─they debe calcular el importe de nuevo para agregar (o restar, en el caso de los eventos después de la actualización y después de eliminar) desde el valor de OrderTotal y, a continuación, realice el cambio. Puesto que todas las macros de eventos requieren funcionalidad compartida, tiene sentido crear un único con el nombre de macro que se puede llamar desde cada uno de los eventos de datos. Para empezar, abra la tabla Order Details y crear un nuevo nombre de macro, como hizo con la tabla Orders. Esta macro requiere dos parámetros. Haga clic en el vínculo Crear parámetro dos veces y proporcione los valores tal como se muestra en la figura 8.



Figura 8. Crear parámetros de macro

Creación de los parámetros de la macro

En el cuadro combinado, seleccione la acción de LookupRecord y inserte los parámetros como se muestra en la figura 9. Esta acción ayuda a encontrar la fila en la tabla pedidos que coincide con el valor de OrderID se pasa a la macro.



Figura 9. Busque el orden correcto

Búsqueda del pedido correcto

Within the LookupRecord action, add an EditRecord action, and within that action, add a SetField action. Set the values for the action parameters as shown in Figure 10. Estos valores establecen el campo Orders.OrderTotal a su valor anterior más la cantidad que se pasa a la macro.



Figura 10. Actualizar el campo total de pedido

Actualización del campo OrderTotal

En la cinta de opciones, haga clic en Guardar, guardar la nueva macro de datos con nombre como UpdateTotal y, a continuación, haga clic en Cerrar.

Controlar el evento después de insertar

Cuando se inserta una nueva fila en la tabla Order Details, debe añadir la cantidad * valor [Precio unidad] en la fila correspondiente en la tabla Orders. Para controlar esto, primero verifique que la tabla Order Details es abierto y seleccionado. En la cinta de opciones, seleccione la ficha de la Tabla . A continuación, en el grupo Eventos posteriores , seleccione Después de insertar. Esta acción crea una macro que llamará el acceso después de insertar una nueva fila en la tabla Order Details. En la nueva macro, seleccione la acción de RunDataMacro y inserte los parámetros como se muestra en la figura 11. En la cinta de opciones, haga clic en Cerrary guardar la macro cuando se le pida.



Figura 11. Crear la macro de datos después de insertar

Creación de la macro de datos Después de insertar

Controlar el evento después de actualizar

Controlar el evento después de la actualización requiere un poco más esfuerzo. Debe restar el valor antiguo asociado con el detalle de pedido y, a continuación, agregar el nuevo valor. Access proporciona los valores originales para cada campo como propiedades del objeto Old en esta macro de datos para que puedan trabajar con los valores actuales y los valores antiguos.

En la cinta de opciones, haga clic en Después de actualizar a crear la macro de datos para el evento y en el cuadro combinado, seleccione Ify utilizar la función Updated integrada para determinar si se han actualizado los campos de cantidad o precio de venta como parte de la actualización actual; de lo contrario, no cambie la tabla Orders. La figura 12 muestra la expresión que debe entrar en el Diseñador de macros.



Figura 12. Proporcionar una expresión condicional IF acción de macro

Suministro de la expresión condicional para la acción de macro If

Dentro de la acción de macro If, llame a la acción de RunDataMacro, especificar parámetros como se muestra en la figura 13. Tenga en cuenta que esta acción resta el valor antiguo durante un largo período. Va a agregar el monto total de la fila actual en la siguiente acción.



Figura 13. Restar el importe total anterior de la fila actual

Resta del importe ampliado anterior de la fila actual

Finalizar la macro mediante la adición de una llamada final a la acción de RunDataMacro y agregue el actual extendido importe (véase figura 14).



Figura 14. Agregar el monto total de la fila actual

Suma del importe ampliado de la fila actual

En la cinta de opciones, haga clic en Guardar y, a continuación, haga clic en Cerrar.

Controlar el evento después de eliminar

Si elimina una fila de detalle de pedido, debe restar el antiguo extendido amount─as que se muestra en el ejemplo anterior. Repita los pasos para la sección anterior, seleccionando el evento después de eliminar y agregar sólo una única llamada a la acción de RunDataMacro. Cuando haya terminado, los parámetros tendrá un aspecto similares a la figura 15. Haga clic en Cerrary guardar la macro cuando se le pida.



Figura 15. Restar el importe total de la fila eliminada

Resta del importe ampliado de la fila eliminada

Probar las Macros

Tenga en cuenta que la primera orden de la tabla Orders tiene un valor de ID de pedido de 30. Utilice este valor para modificar la tabla Order Details. Agregar una nueva fila, especificación de un producto, un precio de venta y una cantidad. Compruebe que el campo de OrderTotal en la tabla Orders se actualiza en consecuencia. Modificar la fila y, a continuación, compruebe el resultado. Elimine la fila y vuelva a comprobar el resultado. En cada caso, debido a las macros de datos que se ha agregado, debe ver el campo de OrderTotal actualizado correctamente.

Léalo

Access 2010 agrega la capacidad de crear macros que se pueden asociar a eventos de datos en tablas. Esto le permite crear desencadenador a una funcionalidad sin necesidad de escribir código. Debido a que las bases de datos web limitan su capacidad para incluir código VBA y las consultas de agregado, puede utilizar las macros de datos para reemplazar los controladores de eventos o las consultas que se podrían crear los totales. En este ejemplo se muestra un tipo de macro de datos (cómo consolidar datos en un evento de la tabla), pero puede utilizar las macros de datos para encapsular cualquier tipo de lógica empresarial. Uso de las macros de datos alivia la necesidad de escribir código VBA en formularios e informes y debido a que las macros se asocian a los eventos de la tabla, Access 2010 ejecuta las macros si está trabajando con la tabla directamente, edición de datos en una consulta, o incluso mostrar y editar datos en un formulario. Además, debido a que las bases de datos de web no admiten el código VBA, utilizando las macros de datos proporciona la única manera de agregar funcionalidad de desencadenador.

Consultar

Ver el vídeo

Ver el vídeo

Longitud: 12: 39 | Tamaño: 18,7 MB | Tipo: WMV

Explórelo

Acerca del autor
Ken getz es consultor senior de MCW Technologies. Es coautor de ASP.NET Developers Jumpstart (Addison-Wesley, 2002), manual del programador de Access (Sybex, 2001) y el manual del programador de VBA, 2ª edición (Sybex, 2001).

Ff973807.note(es-es,office.14).gifNota:

Declinación de responsabilidades de traducción automática: Este artículo se ha traducido con un sistema informático sin intervención humana. Microsoft ofrece estas traducciones automáticas para que los hablantes de otros idiomas distintos del inglés puedan disfrutar del contenido sobre los productos, los servicios y las tecnologías de Microsoft. Puesto que este artículo se ha traducido con traducción automática, es posible que contenga errores de vocabulario, sintaxis o gramática.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft. Reservados todos los derechos.