[firebase-br] Erro ao puxar o saldo com STORED PROCEDURE

andre conrado acf.andre em gmail.com
Ter Jul 26 08:27:01 -03 2011


Bom dia amigos!!!

É melhor usar o COALESCE por dentro:

FOR SELECT SUM(COALESCE(VL_RECEBER,0)) - SUM(COALESCE(VL_PAGAR,0)) FROM
CONTAS

Porque no somatório da própria campo, também ocorre este problema.

abços.


Em 25 de julho de 2011 17:49, Eduardo Jedliczka <edujed em gmail.com> escreveu:

> Da forma como a procedure está escrita, é necessário que exista valores em
> ambos os campos...
>
> Lembre-se: NULL (traduzindo, algum valor desconhecido) somado à qualquer
> valor, sempre será NULL (algum outro valor desconhecido).
>
> Para resolver isto, utilize o coalesce.
>
> for select Coalesce(sum(VL_RECEBER),0) -  Coalesce(sum(VL_PAGAR),0) from
> contas
>
> ==========================
> Eduardo Jedliczka
> Apucarana - Pr
> ==========================
>
>
>
> Em 25 de julho de 2011 17:41, Luiz Carlos <lcarlos2000 em bol.com.br>
> escreveu:
>
> > Tenho uma procedure cfe. abaixo:
> >
> > SET TERM ^ ;
> >
> > CREATE OR ALTER PROCEDURE SP_SUMCONTAS (
> >    dataini date,
> >    datafin date)
> > returns (
> >    total numeric(15,2))
> > as
> > begin
> >  for select sum(VL_RECEBER) - sum(VL_PAGAR) from contas
> >   where DT_VCTO between :dataini and :datafin
> >   into :total do
> >  begin
> >
> >  suspend;
> >  end
> > end^
> >
> > Uso o codigo abaixo no delphi para puxar o saldo:
> >
> > dataini := DIA1.Date ;
> > datafin := DIA2.Date ;
> >
> > IBSProc.StoredProcName := 'SP_SUMCONTAS';
> >  IBSProc.ParamByName('dataini').Value :=DIA1.Date ; //datetimerpicker
> >  IBSProc.ParamByName('datafin').Value :=DIA2.Date ; //datetimerpicker
> >  IBSProc.ExecProc;
> >  edsaldo.Text:= CurrtoStr(IBSProc.ParamByName('total').AsCurrency);
> >
> > Funciona corretamente se no periodo pesquisado tiver lançamentos nos
> campos
> > VL_RECEBER e VL_PAGAR, porem se só tiver lançamentos em um dos campos o
> > saldo dá 0,00. Por exemplo se no periodo só tiver contas a pagar o saldo
>> > 0,00 ou se no periodo só tiver contas a receber tambem dá 0,00. Como
> > corrigir isso? o erro está na procedure ou no modo como estou chamando
> ela
> > no Delphi?
> >
> > Grato
> >
> > Luiz Carlos
> >
> >
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



-- 
Um Abraço,
André Conrado.

055 21 9176-7013 - Claro



Mais detalhes sobre a lista de discussão lista