C Alves 1 Denunciar post Postado Setembro 16, 2008 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
Andre Renato 0 Denunciar post Postado Setembro 17, 2008 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
C Alves 1 Denunciar post Postado Setembro 18, 2008 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
Andre Renato 0 Denunciar post Postado Setembro 18, 2008 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
C Alves 1 Denunciar post Postado Setembro 22, 2008 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
Andre Renato 0 Denunciar post Postado Setembro 23, 2008 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