|
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.
|
|
|
|
Postada em 06/04/2011 22:30 hs
poste teu codigo para ver se pode ser otimizado.
|
|
|
|
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
|
|
|
|
|
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
|
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//
|
|
|
|