Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

C Alves

Saldos

Recommended Posts

Olá pessoal,

Alguém aí pode me ajudar,

Fiz o seguinte:

tblRazaoSALDO_ATUAL.asFloat:=(TblRazaoVALOR_CRED.AsFloat - tblRazaoVALOR_DEB.asFloat)+tblRazaoSALDO_ANTERIOR.AsFloat;

tblRazaoSALDO_ANTERIOR.asFloat:=tblRazaoSALDO_ATUAL.AsFloat;

Isso funciona mas fica tudo no mesmo registro. Eu não estou conseguindo fazer com que o valor do crédito -

o débito seja somado a um saldo anterior ao registro atual. Importante: Tenho um edit onde entro com

o código da conta que está sendo movimentada e outro com o codigo da empresa. Então o sitema precisa buscar

o saldo anterior dessa conta e dessa empresa para calcular o saldo atual.

Alguém pode me orientar nesse sentido?

Há como somar todos os valores da coluna Valor_cred e Valor_deb e depois subtrair o total dos créditos pelo dos

débitos obtendo assim o saldo?

Estou usando delphi 6, interbase 7.5 e o componente Table.

Se alguém puder me ajudar ficarei mui grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, pelo que vejo é um sistema contábil que você está desenvolvendo.

 

Deixa eu ver se entendi o cenário:

Você tem os campos SALDO_ANTERIOR, VALOR_DEB, VALOR_CRED e SALDO ATUAL, correto?

 

Para você conseguir isso, você vai ter que, ao criar o 'registro atual', fazer um select no 'registro anterior' para resgatar o SALDO_ATUAL e alimentar no 'registro atual' o campo SALDO_ANTERIOR.

 

Aí esse código:

 

tblRazaoSALDO_ATUAL.asFloat:=(TblRazaoVALOR_CRED.AsFloat - tblRazaoVALOR_DEB.asFloat)+tblRazaoSALDO_ANTERIOR.AsFloat;

 

Vai retornar um valor coerente.

Entendeu o processo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Andre

muito obrigado pela Tua atenção.

Entendi o processo na teoria. Acontece que na prática não estou conseguindo fazer esse select

para resgatar o saldo no registro anterior.

Desde ontém estou tentando desenvolver com o filtro a seguir que começou a dar erro:

DataSet not inEdit or Insert Mod.

DmContabil.tblRazao.Filter := '((cod_cont_cred=' + quotedStr(EdtCodContCred.Text)+')and (cod_empresa=' + quotedStr(EdtCodigoEmpresa.Text)+')or(Cod_Cont_Deb=' + quotedStr(EdtCodContDeb.Text)+')and (cod_empresa=' + quotedStr(EdtCodigoEmpresa.Text)+'))';

DmContabil.tblRazao.Filtered := True;

DmContabil.tblRazao.First;

while not DmContabil.tblRazao.eof do

begin

tblRazaoSALDO.asFloat:=(tblRazaoVALOR_CRED.asFloat - tblRazaoVALOR_DEB.asFloat)+tblRazaoSALDO_ANTERIOR.AsFloat;

tblRazaoSALDO_ANTERIOR.asFloat:=tblRazaoSALDO.AsFloat;

DmContabil.tblRazao.Next;

tblRazao.Post;

 

Se você puder me dar uma orientação agradeço muito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu modo de desenvolver é um pouco diferente do que eu to acostumado e eu não consegui entender exatamente o que seu código irá executar.

Eu costumo usar os SQLs e filtros direto na Query e não em Table.

 

No meu caso o sistema contábil que eu trabalho tem tabelas separadas para saldos e lançamentos. A tabela de saldos é alimentada por triggers (que somam ou subtraem os valores) amarradas via After Insert, After Update e After Delete na tabela de lançamentos. O Razão é montado em cima de views que efetuam selects mesclando as duas tabelas agrupando-as por empresa, plano de contas, conta contábil e período (uma junção do ano e mês).

 

No seu caso o que precisa ser feito pra você ter esse saldo atual no registro que você precisa fazer a conta é resgatar o saldo anterior do ultimo lançamento efetuado, como eu citei anteriormente.

 

Por acaso essa tabela tem um número sequencial ou algo parecido e de preferência que seja indice?

Se sim, o que dá pra fazer é, antes de você dar um 'post' no lançamento novo é dar um select no anterior dessa forma:

 

select a.vlsaldo_atual
from razao a 
where a.nrsequencial in (
           select max(b.nrsequencial)
              from razao b
             where b.cdconta = '000000000000')

 

Com esse valor 'não mão' você pode usar ele pra fazer a conta que precisar para compor o seu VLSALDO_ATUAL do registro novo.

E mesmo que outra pessoa tente gravar um novo resgistro para a mesma conta, o que vai importar é o ultimo lançamento, que vai trazer o saldo real da conta que você vai atualizar.

 

Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Andre,

deu certo um select para resgatar o saldo anterior. Só passei a usar uma query. Nem tudo ficou fácil. Outra dificuldades estão surgindo. Sou novo em programação e também em contabilidade. Estou fazendo com o que já deu prá aprender mas sei que é preciso continuar aprendendo e aperfeiçoando o que já foi feito. Você falou que usa triggers e views. Obrigado por me chamar a atençao para isto. Vou em busca disto porque vai ajudar muito. Por enquanto muito obrigado pela ajuda. http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

 

Importante: breve o Sr Jesus voltará.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa cara, imagina!

É sempre bom saber que podemos passar algo de bom para outra pessoa.

 

Contabilidade realmente é uma área um tanto complicada para se desenvolver algo.

Eu na verdade, embora também tenha bastante conhecimento em Delphi, aqui não desenvolvo, e sim mais suporte e consultoria para os módulos do sistema financeiro e contábil.

 

Para isso preciso conhecer de cabo a rabo todos os processos internos e a arquitetura do sistema.

Se precisar estamos aí para ajudar.

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.