USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Comando para somar saldo dia a dia em uma tabela
M A R C I O
SÃO BERNARDO
SP - BRASIL
ENUNCIADA !
Postada em 06/04/2011 16:51 hs            
Ola a todos, boa tarde

estou com a seguinte dúvida

tenha uma tabela mais ou menos assim

Data             |Credito    | Debito     | Saldo
01/01     |20,00     | 15,00     | 05,00
02/01     |05,00     | 00,00     | 10,00
03/01     |00,00     | 10,00     | 00,00

No primeiro dia entrou 20 de credito e saiu 15 em débito, ficou um saldo de 05...
no segundo dia ficou o saldo do dia anterior de 5 mais o credito de 5 e ficou um saldo de 10
no dia 3, teve um débito de 10, que juntando ao saldo do dia anterior de 10 fez com que o saldo ficasse zerado

até ai tudo bem.. estou conseguindo fazer esse processo usando um "Do While"
só que minha tabela esta ficando grande e o processo demorado

Eu consigo fazer essa soma diária de alguma maneira mais fácil? sei la, com um comando SQL por exemplo?

O problema desse processo ser demorado, é que por exemplo, tenho lançamentos de  02/01/ ate dia 31/12.. ai se o usuário inserir um lançamento para o dia 01/01, o saldo de todos os dias tem que ser atualizado.. e isso é feito constantemente

Bom, fico no aguardo

Desde já agradeço


M A R C I O
   
Almir
não registrado
ENUNCIADA !
Postada em 06/04/2011 17:38 hs   
Marcio;acho muito mais fácil somar crédito e débito,armazenar em variáveis e fazer a
operação e apresentar em textbox ou qualquer outro.
   
Juan Carlos R.A
Pontos: 2843
MACEIO
AL - BRASIL
ENUNCIADA !
Postada em 06/04/2011 22:30 hs            
poste teu codigo para ver se pode ser otimizado.
   
M A R C I O
SÃO BERNARDO
SP - BRASIL
ENUNCIADA !
Postada em 07/04/2011 09:40 hs            
Set rdLancamento = Db.OpenRecordset("select * from Lancamentos where Vencimento <= #" & Format(txtPe_Fim.Text, "mm/dd/yyyy") & "# and Conta = '" & V_Conta & "' order by Vencimento", dbOpenDynaset)

Saldo = 0

if rdLancamento.RecordCount > 0 Then
    rdLancamento.MoveMin
    Do While rdLancamento.EOF = False
        Saldo = Saldo + (rdLancamento![Credito] - rdLancamento![Debito])
        rdLancamento.Edit
        rdLancamento![Saldo] = Saldo
        rdLancamento.Update
    rdLancamento.MoveNext
    Loop
End If


Esse código apresenta um certo problema também, tem vezes que ao abrir a tabela usando o "Order By" a tabela fica desordenada, o campo Vencimento esta como Data na base de dados
Ai se eu repito o mesmo procedimento da certo, ja tentei reparar e compactar a base de dados mas não deu certo, a base é em Access

Depois de feito o calculo do Saldo diário, eu mostro tudo em Grid, no grid sempre aparece na ordem correta

Bom é isso ae, se tiver como deixar esse processo mais rápido, porque são incluídos lançamentos a todo momento, e todo momento é refeita a somatória do Saldo, e de quebra se existir um outro modo de ordenar a tabela, não sei tbm se a tabela esta perdendo a ordem no meio do processamento.

Agradeço a ajuda de vcs



M A R C I O
TÓPICO EDITADO
 
Juan Carlos R.A
Pontos: 2843
MACEIO
AL - BRASIL
ENUNCIADA !
Postada em 08/04/2011 14:58 hs            
nesse select vc poderia indicar somente os campos que vao ser utlizados, não coloque * se é que vc não precisa de todos para calcular e atualizar.

no order by Vencimento desc  
ou deacordo como vc qiuiser ordernar
order by Vencimento asc

não repare o banco pois não precisa
   
LCRamos
Pontos: 2843
GOIANIA
GO - BRASIL
ENUNCIADA !
Postada em 15/04/2011 12:52 hs            
Olha, testa ai, mas se estou certo, isto funciona:

Dim VlTotal as Double

"Select Sum(Credito) to VlTotal From Tabela Where Vencimento Between '*datadoinicio*' And '*datadofim*'"

Text1.Text = VlTotal

Ai, voce coloca o select como precisa, pode somar vários campos, depois pra achar o Saldo faça o calculo.

vlu//
   
Página(s): 1/2      PRÓXIMA »


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página