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

Luiz Carlos lcarlos2000 em bol.com.br
Ter Jul 26 21:48:30 -03 2011


Valeu Andre, funcionou.


Luiz Carlos

  ----- Original Message ----- 
  From: andre conrado 
  To: FireBase 
  Sent: Tuesday, July 26, 2011 8:27 AM
  Subject: Re: [firebase-br] Erro ao puxar o saldo com STORED PROCEDURE


  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
  > 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
  > >
  > ______________________________________________
  > 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
  ______________________________________________
  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