Re: [firebase-br] CORREÇÃO: SP Posicao do registro IBO x Firebird

Josauro S.J. josauro em casasoft.inf.br
Qua Jan 26 13:36:21 -03 2005


Voce tem que criar na SP os parametros de retorno, e no final da SP usar Suspend, quando desejar retornar esses valores para a aplicação, ai é so pegar atrabes dos parametros de retorno.

Josauro S.J.
Diretor
josauro em casasoft.inf.br
----- Original Message ----- 
From: RAMJ SISTEMAS & CONSULTORIA 
To: 'FireBase' 
Sent: Wednesday, January 26, 2005 11:08 AM
Subject: RES: [firebase-br] CORREÇÃO: SP Posicao do registro IBO x Firebird


Consegui achar como chamar uma sp dentro do Delphi, porém o saldo está
ficando null.
Aí vai o código dentro do Delphi. Tem como colocar uma caixa de dialogo
dentro de uma sp ( por exemplo um showmessage )?

procedure Tfrm_movcaixa.calccaixa();
var
  SProcedure : TIB_StoredProc;
  Transacao  : TIB_Transaction;
begin
  SProcedure := TIB_StoredProc.Create(nil);
  Transacao  := TIB_Transaction.Create(nil);
  Transacao.IB_Connection  := datdados.conexao;
    with SProcedure do begin
      IB_Transaction := Transacao;
      Transacao.StartTransaction;
        IB_Connection := datdados.conexao;
        StoredProcName := 'SALDOCAIXA';
        Parambyname('DATA').asdate     :=
datdados.qrymovcaixa.fieldbyname('datalan').asdate;

        Parambyname('CAIXA').asinteger    :=
datdados.qrymovcaixa.fieldbyname('codcaixa').asinteger;

          ExecProc;
      Transacao.Commit;
      Destroy;
  end;
end;

****************************************** SP

SET TERM ^ ;

CREATE PROCEDURE SALDOCAIXA (
    DATA DATE,
    CAIXA INTEGER)
AS
DECLARE VARIABLE ULTLANCTO INTEGER;
DECLARE VARIABLE SALDOANT NUMERIC(15,2); DECLARE VARIABLE ID INTEGER;
DECLARE VARIABLE TIPO VARCHAR(1); DECLARE VARIABLE VALOR NUMERIC(15,2);
begin
   select Max(NUMLAN) from MOVCAIXA where DATALAN<:DATA and CODCAIXA =
:CAIXA into :ULTLANCTO; /* Aki eu estou solicitando o ID do ultimo
lançamento até o dia 01/01/2005 */
   select SALDOAT from MOVCaixa where NUMLAN=:ULTLANCTO  and CODCAIXA =
:CAIXA into :SALDOANT; /* Aki eu consegui achar o valor do ultimo saldo
antes do dia 02/01/2005 */
   for select NUMLAN,TIPOLAN,VALORLAN from MOVCAIXA where DataLAN>=:DATA and
CODCAIXA = :CAIXA order by DATALAN,TIPOLAN,NUMLAN into :ID,:TIPO,:VALOR do
   begin
        if  (:TIPO='C') then begin
          SALDOANT=:SALDOANT+:VALOR;
        end else begin
          SALDOANT=:SALDOANT-:VALOR;
        end
         update MOVcaixa set SALDOAT=:SALDOANT where NUMLAN=:ID;
   end
end
^

SET TERM ; ^

GRANT SELECT,UPDATE ON MOVCAIXA TO PROCEDURE SALDOCAIXA;

GRANT EXECUTE ON PROCEDURE SALDOCAIXA TO SYSDBA;

*************************************************** TRIGGER SET TERM ^ ;

CREATE TRIGGER RECALSALDOCAIXA FOR MOVCAIXA ACTIVE AFTER INSERT OR UPDATE
POSITION 0 AS begin
  EXECUTE PROCEDURE SALDOCAIXA(NEW.DATALAN,NEW.CODCAIXA);
  /* Trigger text */
end
^
**************************************************





______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br Para editar
sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br

______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br Para editar
sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br





______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br Para editar
sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br

______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br Para editar
sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br





______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br




Mais detalhes sobre a lista de discussão lista