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

Eduardo Jedliczka edujed em gmail.com
Seg Jul 25 17:49:37 -03 2011


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 dá
> 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
>



Mais detalhes sobre a lista de discussão lista