Creación de una consulta de totales en ejecución en Microsoft Access
Avanzado: requiere conocimientos expertos de codificación, interoperabilidad y multiusuario.
Este artículo se aplica a un archivo de base de datos de Microsoft Access .mdb o .accdb.
Resumen
En este artículo se muestran dos métodos que puede usar para crear una consulta de totales en ejecución. Una consulta de totales en ejecución es una consulta en la que el total de cada registro es una suma de ese registro y de los registros anteriores. Este tipo de consulta es útil para mostrar totales acumulados en un grupo de registros (o durante un período de tiempo) en un gráfico o informe.
Nota Puede ver una demostración de la técnica que se usa en este artículo en el archivo de ejemplo Qrysmp00.exe.
Más información
Método 1
El primer método usa una función DSum y criterios en una consulta para crear una suma en ejecución a lo largo del tiempo. La función DSum suma el registro actual y los registros anteriores. Cuando la consulta se mueve al registro siguiente, la función DSum se ejecuta de nuevo y actualiza el total acumulado.
En la consulta de ejemplo siguiente se usa la tabla Orders de la base de datos de ejemplo Northwind para crear una suma en ejecución de los costos de flete para cada mes de 1997. Los datos de ejemplo se limitan a un año por motivos de rendimiento. Dado que la función DSum se ejecuta una vez por cada registro de la consulta, la consulta puede tardar varios segundos (en función de la velocidad del equipo) para que la consulta termine de procesarse. Para crear y ejecutar esta consulta, siga estos pasos:
Abra la base de datos de ejemplo Northwind.
Cree una nueva consulta select y agregue la tabla Orders .
En el menú Ver , haga clic en Totales.
Nota En Access 2007, haga clic en Totales en el grupo Mostrar u ocultar de la pestaña Diseño .
En la primera columna de la cuadrícula de diseño de la consulta, escriba la siguiente expresión en el cuadro Campo y realice las siguientes selecciones para los cuadros Total, Ordenar y Mostrar:
Field: AYear: DatePart("yyyy",[OrderDate]) Total: Group By Sort: Ascending Show: Yes
La expresión del cuadro Campo muestra y ordena la parte del año del campo OrderDate.
En la segunda columna de la cuadrícula de diseño de la consulta, escriba la siguiente expresión en el cuadro Campo y realice las siguientes selecciones para los cuadros Total, Ordenar y Mostrar:
Field: AMonth: DatePart("m",[OrderDate]) Total: Group By Sort: Ascending Show: Yes
La expresión del cuadro Campo ordena y muestra la parte del mes del campo Fecha de pedido como un valor entero de 1 a 12.
En la tercera columna de la cuadrícula de diseño de la consulta, escriba la siguiente expresión en el cuadro Campo y realice las siguientes selecciones para los cuadros Total y Mostrar.
NOTA En el ejemplo siguiente, se usa un carácter de subrayado (_) al final de una línea como carácter de continuación de línea. Quite el carácter de subrayado del final de la línea al volver a crear este ejemplo.
Field: RunTot: DSum("Freight","Orders","DatePart('m', _ [OrderDate])<=" & [AMonth] & " And DatePart('yyyy', _ [OrderDate])<=" & [AYear] & "") Total: Expression Show: Yes
La expresión del cuadro Field usa la función DSum() para sumar el campo Freight cuando los valores de los campos AMonth y AYear son menores o iguales que el registro actual que está procesando la consulta.
En la cuarta columna de la cuadrícula de diseño de la consulta, escriba la siguiente expresión en el cuadro Campo y realice las siguientes selecciones para los cuadros Total, Ordenar y Mostrar:
Field: FDate: Format([OrderDate],"mmm") Total: Group By Sort: Ascending Show: Yes
La expresión del cuadro Campo se muestra cada mes en formato textual, como enero, febrero, marzo, etc.
En la quinta columna de la cuadrícula de diseño de la consulta, escriba la siguiente expresión en el cuadro Campo y realice las siguientes selecciones para los cuadros Total, Criterios y Mostrar:
Field: DatePart("yyyy",[OrderDate]) Total: Where Criteria: 1997 Show: No
La expresión del cuadro Campo filtra el conjunto de registros de la consulta para incluir solo datos de 1997.
Ejecute la consulta. Tenga en cuenta que el campo RunTot muestra los registros siguientes con una suma en ejecución:
AYear AMonth RunTot FDate -------------------------------------- 1997 1 2238.98 Jan 1997 2 3840.43 Feb 1997 3 5729.24 Mar 1997 4 8668.34 Apr 1997 5 12129.74 May 1997 6 13982.39 Jun 1997 7 17729.29 Jul 1997 8 22204.73 Aug 1997 9 26565.26 Sep 1997 10 32031.38 Oct 1997 11 36192.09 Nov 1997 12 42748.64 Dec
Método 2
El segundo método usa una consulta de totales con una función DSum() para crear un total en ejecución sobre un grupo.
En la siguiente consulta de ejemplo se usa la tabla Pedidos para sumar los costos de flete por empleado, así como para calcular una suma en ejecución del flete. Para crear y ejecutar la consulta, siga estos pasos:
Abra la Northwind.mdb de base de datos de ejemplo.
Cree una nueva consulta select y agregue la tabla Orders.
En el menú Ver, haga clic en Totales.
Nota En Access 2007, haga clic en Totales en el grupo Mostrar u ocultar de la pestaña Diseño .
En la primera columna de la cuadrícula de diseño de la consulta, agregue el campo siguiente al cuadro Campo y realice las siguientes selecciones para los cuadros Total y Mostrar:
Field: EmpAlias: EmployeeID Total: Group By Show: Yes
Este campo agrupa los datos por EmployeeID.
En la segunda columna de la cuadrícula de diseño de consultas, agregue el campo siguiente al cuadro Campo y realice las siguientes selecciones para los cuadros Total y Mostrar:
Field: Freight Total: Sum Show: Yes
Este campo suma los datos de flete.
En la tercera columna de la cuadrícula de diseño de la consulta, escriba la siguiente expresión en el cuadro Campo y realice las siguientes selecciones para los cuadros Total y Mostrar.
NOTA En el ejemplo siguiente, se usa un carácter de subrayado (_) al final de una línea como carácter de continuación de línea. Quite el carácter de subrayado del final de la línea al volver a crear este ejemplo.
Field: RunTot: Format(DSum("Freight","Orders","[EmployeeID]<=" _& [EmpAlias] & ""),"$0,000.00") Total: Expression Show: Yes
La expresión del cuadro Field usa una función DSum() para sumar el campo Freight cuando EmployeeID es menor o igual que el EmpAlias actual y, a continuación, da formato al campo en dólares.
Ejecute la consulta. Tenga en cuenta que el campo RunTot muestra los registros siguientes con una suma en ejecución:
Employee SumOfFreight RunTot ------------------------------------------------- Davolio, Nancy $8,836.64 $8,836.64 Fuller, Andrew $8,696.41 $17,533.05 Leverling,Janet $10,884.74 $28,417.79 Peacock, Margaret $11,346.14 $39,763.93 Buchanan, Steven $3,918.71 $43,682.64 Suyama, Michael $3,780.47 $47,463.11 King, Robert $6,665.44 $54,128.55 Callahan, Laura $7,487.88 $61,616.43 Dodsworth, Anne $3,326.26 $64,942.69
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: a lo largo de 2024, eliminaremos gradualmente los problemas de GitHub como mecanismo de comentarios para el contenido y lo reemplazaremos por un nuevo sistema de comentarios. Para obtener más información, consulte:Enviar y ver comentarios de