bollywood actresses hair loss hair rehab london contact number cheap hair extensions brazilian curly hair with closure hair extension fails human hair wigs black ponytail hairstyles 2018 sunny hair extensions uk hair extensions remy hair extensions weft koko one piece hair extensions clip hair
Soma contínua em consultas, com eficiência
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é 2x no Cartão de Crédito. 

Veja como comprar e saiba mais sobre o material oferecido,  clicando aqui.

Open v3

 

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!


 

 


2 comentário(s)

Willian Rodrigues   13/08/2018 09:21:05

Parabéns! Muito criativa a técnica!

silvio   20/02/2017 15:41:36

Mais uma técnica. Parabéns Avelino Sampaio


Envie seu comentário: