Soma contínua em consultas, com eficiência
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
Apresento mais uma consulta, objeto da minha crítica, tal como justifiquei nesta dica AQUI sobre numeração.
SELECT IdMovimento, DataMovimento, Credito, Debito,
DSum("[Credito] - [Debito]","tblMovimento","idMovimento <= " & [idMovimento]) AS Saldo
FROM [tblMovimento];
Para nos livramos desse desastre de consulta, iremos utilizar a mesma técnica empregada na dica sobre numeração, que é a de utilizar a consulta espelho e um pouco de programação. Observe a consulta exemplo abaixo:
SELECT *, fncSomarConsulta([CampoValor]) As Acumulado FROM NomeTabela;
A função utilizada na consulta é a seguinte:
Faça o login aqui para ter acesso ao código.
Observe a consulta espelho, utilizada para zerar o valor da variável n:
SELECT *, fncSomarConsulta(null) As Acumulado FROM NomeTabela WHERE 1=0;
Esse valor null na função, força o código a passar pela parte vermelha, zerando assim, o valor de n.
Faça o login aqui para ter acesso ao código.
Agora vamos unir as consultas para obter o resultado desejado:
SELECT *, fncSomarConsulta(null) As Acumulado FROM NomeTabela WHERE 1=0
UNION ALL
SELECT *, fncSomarConsulta([CampoValor]) As Acumulado FROM NomeTabela;
A primeira consulta zera a variável n e a segunda consulta apresenta os dados e a devida soma acumulada.
Baixe o Arquivo da dica 86 e rode a consulta qrySomar e veja o resultado no campo Acumulado. Abra a consulta no modo estrutura e veja como foi montada.
Nota 1: A consulta União nos traz um problema que é o da impossibilidade de editar os dados.
Nota 2: Só utilize a técnica aqui apresentada se for estritamente necessário realizar a soma acumulada na consulta.
Para obter saldo linha a linha, estude as técnicas aplicadas neste meu artigo:
Bom estudo!
Os dez artigos mais visitados
MontaRibbons v.7.0 - Assistente completo para criar ribbons no Access
Vídeo - Controle personalizado de Acesso de Usuários
Vídeo - Aprenda sobre filtragens
Vídeo - Segurança máxima, usando o OPEN
Uma ajuda para quem está começando um negócio ou um projeto
Integrando o Access com Servidor MySQL - Introdução
Desabilitando a faixa(ribbon) superior do Access
Vídeo - Programação de relatórios - Parte 1
Como carregar o seu menu sem que ele vá para lista de suplementos
Adquira o kit UsandoAccess e aprenda em alta velocidade
2 comentário(s) Willian Rodrigues 13/08/2023 09:21:05 Parabéns! Muito criativa a técnica! silvio 20/02/2022 15:41:36 Mais uma técnica. Parabéns Avelino Sampaio |