Cómo crear una consulta de totales en ejecución en Microsoft Access

Nota

Office 365 ProPlus pasa a llamarse Microsoft 365 Apps para empresas. Para obtener más información sobre este cambio, lea esta publicación de blog.

Avanzado: requiere codificación experta, interoperabilidad y habilidades multiusuario.

Este artículo se aplica a un archivo de base de datos de Microsoft Access (.mdb) o a un archivo de base de datos de Microsoft Access (.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 con el tiempo. La función DSum suma el registro actual y los registros anteriores. Cuando la consulta pasa al siguiente registro, la función DSum se vuelve a ejecutar y actualiza el total acumulado.

La siguiente consulta de ejemplo usa la tabla Orders de la base de datos de ejemplo Northwind para crear una suma en ejecución de los costos de flete de 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 (según 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 de selección y agregue la tabla Pedidos.

  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 ficha Diseño.

  4. En la primera columna de la cuadrícula de diseño de 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 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 del 1 al 12.

  6. En la tercera columna de la cuadrícula de diseño de 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 Campo usa la función DSum() para sumar el campo Freight cuando los valores de los campos AMonth y AYear son inferiores o iguales al registro actual que está procesando la consulta.

  7. En la cuarta columna de la cuadrícula de diseño de 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 un formato textual, como Jan, Feb, Mar, y así sucesivamente.

  8. En la quinta columna de la cuadrícula de diseño de 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 que incluya solo datos de 1997.

  9. Ejecute la consulta. Tenga en cuenta que el campo RunTot muestra los siguientes registros 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 de ejecución sobre un grupo.

La siguiente consulta de ejemplo usa la tabla Pedidos para sumar 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 base de datos de ejemplo Northwind.mdb.

  2. Cree una nueva consulta de selección y agregue la tabla Pedidos.

  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 ficha Diseño.

  4. En la primera columna de la cuadrícula de diseño de consulta, agregue el siguiente campo 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 consulta, agregue el siguiente campo 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 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 siguientes registros 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