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:

  1. Abra la base de datos de ejemplo Northwind.

  2. Cree una nueva consulta select y agregue la tabla Orders .

  3. 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 .

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. 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:

  1. Abra la Northwind.mdb de base de datos de ejemplo.

  2. Cree una nueva consulta select y agregue la tabla Orders.

  3. 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 .

  4. 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.

  5. 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.

  6. 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.

  7. 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