Como criar uma consulta de totais em execução no Microsoft Access

Avançado: requer codificação especializada, interoperabilidade e competências multiutilizadas.

Este artigo aplica-se a um ficheiro de base de dados do Microsoft Access (.mdb) ou a um ficheiro de base de dados do Microsoft Access (.accdb).

Resumo

Este artigo demonstra dois métodos que pode utilizar para criar uma consulta de totais em execução. Uma consulta de totais em execução é uma consulta na qual o total de cada registo é uma soma desse registo e de quaisquer registos anteriores. Este tipo de consulta é útil para apresentar totais cumulativos num grupo de registos (ou durante um período de tempo) num gráfico ou relatório.

Nota Pode ver uma demonstração da técnica utilizada neste artigo no ficheiro de exemplo Qrysmp00.exe.

Mais Informações

Método 1:

O primeiro método utiliza uma função DSum e critérios numa consulta para criar uma soma em execução ao longo do tempo. A função BDSOMA soma o registo atual e todos os registos anteriores. Quando a consulta se move para o registo seguinte, a função BDSOMA é executada novamente e atualiza o total cumulativo.

A seguinte consulta de exemplo utiliza a tabela Encomendas da base de dados de exemplo Northwind para criar uma soma corrente dos custos de transporte para cada mês em 1997. Os dados de exemplo estão limitados a um ano por motivos de desempenho. Uma vez que a função BDSOMA é executada uma vez para cada registo na consulta, pode demorar vários segundos (dependendo da velocidade do computador) para que a consulta conclua o processamento. Para criar e executar esta consulta, siga estes passos:

  1. Abra a base de dados de exemplo Northwind.

  2. Crie uma nova consulta selecionar e adicione a tabela Encomendas .

  3. No menu Ver , clique em Totais.

    Nota No Access 2007, clique em Totais no grupo Mostrar/Ocultar no separador Estrutura .

  4. Na primeira coluna da grelha de estrutura da consulta, escreva a seguinte expressão na caixa Campo e faça as seguintes seleções para as caixas Total, Ordenar e Mostrar:

    Field: AYear: DatePart("yyyy",[OrderDate])
    Total: Group By
    Sort: Ascending
    Show: Yes
    

    A expressão na caixa Campo apresenta e ordena a parte do ano do campo DataDaEncomentas.

  5. Na segunda coluna da grelha de estrutura da consulta, escreva a seguinte expressão na caixa Campo e faça as seguintes seleções para as caixas Total, Ordenar e Mostrar:

    Field: AMonth: DatePart("m",[OrderDate])
    Total: Group By
    Sort: Ascending
    Show: Yes
    

    A expressão na caixa Campo ordena e apresenta a parte do mês do campo Data da Encomenda como um valor inteiro de 1 a 12.

  6. Na terceira coluna da grelha de estrutura da consulta, escreva a seguinte expressão na caixa Campo e faça as seguintes seleções para as caixas Total e Mostrar.

    NOTA No exemplo seguinte, um caráter de sublinhado (_) no final de uma linha é utilizado como um caráter de continuação de linha. Remova o caráter de sublinhado do fim da linha ao recriar este exemplo.

    Field: RunTot: DSum("Freight","Orders","DatePart('m', _
    [OrderDate])<=" & [AMonth] & " And DatePart('yyyy', _
    [OrderDate])<=" & [AYear] & "")
    Total: Expression
    Show: Yes
    

    A expressão na caixa Campo utiliza a função DSum() para somar o campo Transporte quando os valores nos campos AMonth e AYear são menores ou iguais ao registo atual que a consulta está a processar.

  7. Na quarta coluna da grelha de estrutura da consulta, escreva a seguinte expressão na caixa Campo e faça as seguintes seleções para as caixas Total, Ordenar e Mostrar:

    Field: FDate: Format([OrderDate],"mmm")
    Total: Group By
    Sort: Ascending
    Show: Yes
    

    A expressão na caixa Campo é apresentada todos os meses num formato textual, tal como Jan, Feb, Mar, etc.

  8. Na quinta coluna da grelha de estrutura da consulta, escreva a seguinte expressão na caixa Campo e faça as seguintes seleções para as caixas Total, Critérios e Mostrar:

    Field: DatePart("yyyy",[OrderDate])
    Total: Where
    Criteria: 1997
    Show: No
    

    A expressão na caixa Campo filtra o conjunto de registos da consulta para incluir apenas dados de 1997.

  9. Execute a consulta. Tenha em atenção que o campo RunTot apresenta os seguintes registos com uma soma em execução:

    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:

O segundo método utiliza uma consulta de totais com uma função DSum() para criar um total corrente sobre um grupo.

A seguinte consulta de exemplo utiliza a tabela Encomendas para somar os custos de transporte por colaborador, bem como para calcular uma soma corrente do transporte. Para criar e executar a consulta, siga estes passos:

  1. Abra a base de dados de exemplo Northwind.mdb.

  2. Crie uma nova consulta selecionar e adicione a tabela Encomendas.

  3. No Viewmenu, clique em Totais.

    Nota No Access 2007, clique em Totais no grupo Mostrar/Ocultar no separador Estrutura .

  4. Na primeira coluna da grelha de estrutura da consulta, adicione o seguinte campo à caixa Campo e faça as seguintes seleções para as caixas Total e Mostrar:

    Field: EmpAlias: EmployeeID
    Total: Group By
    Show: Yes
    

    Este campo agrupa dados por EmployeeID.

  5. Na segunda coluna da grelha de estrutura da consulta, adicione o seguinte campo à caixa Campo e faça as seguintes seleções para as caixas Total e Mostrar:

    Field: Freight
    Total: Sum
    Show: Yes
    

    Este campo soma os dados de transporte.

  6. Na terceira coluna da grelha de estrutura da consulta, escreva a seguinte expressão na caixa Campo e faça as seguintes seleções para as caixas Total e Mostrar.

    NOTA No exemplo seguinte, um caráter de sublinhado (_) no final de uma linha é utilizado como um caráter de continuação de linha. Remova o caráter de sublinhado do fim da linha ao recriar este exemplo.

    Field: RunTot: Format(DSum("Freight","Orders","[EmployeeID]<=" _& [EmpAlias] & ""),"$0,000.00")
    Total: Expression
    Show: Yes
    

    A expressão na caixa Campo utiliza uma função DSum() para somar o campo Transporte quando employeeID é menor ou igual ao EmpAlias atual e, em seguida, formata o campo em dólares.

  7. Execute a consulta. Tenha em atenção que o campo RunTot apresenta os seguintes registos com uma soma em execução:

    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