... Assinatura do site por 3 anos + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$182,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Soma contínua em consultas, com eficiência

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:

Public Function fncSomarConsulta(varValor) As Double
Static n As Double
If IsNull(varValor) Then
   n = 0
   Exit Function
End If
n = n + varValor
fncSomarConsulta = n
End Function

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.

Public Function fncSomarConsulta(varValor) As Double
Static n As Double
If IsNull(varValor) Then
   n = 0
   Exit Function
End If
n = n + varValor
fncSomarConsulta = n
End Function

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!


 

 


1 comentário(s)

silvio   20/02/2017 15:41:36

Mais uma técnica. Parabéns Avelino Sampaio


Envie seu comentário: