RES: [firebase-br] Store Procedure - Esta tá difícil

RAMJ SISTEMAS & CONSULTORIA jubrovolski em yahoo.com.br
Qui Jan 27 12:33:42 -03 2005


Caro Nilton


Agora funcionou. Está tudo ok. Até que enfim. Já fazia algum tempo que eu
precisa resolver esta questão. Valeu pela ajuda. Agora o Caixa ficou show de
bola.

Reuber 

-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Nilton Souza
Enviada em: quinta-feira, 27 de janeiro de 2005 09:53
Para: FireBase
Assunto: Re: [firebase-br] Store Procedure - Esta tá difícil

Olá Reuber (agora acertei né !? heuheuh),

Seguinte, agora com o cabeçalho completo ficou mais fácil, remova o suspend
que restou e tudo passará a funcionar. O suspend é utilizado para a criação
de "Procedures Selecionáveis" oq não é o caso da sua procedure.

[]'s
Nilton Souza

----- Original Message -----
From: "RAMJ SISTEMAS & CONSULTORIA" <jubrovolski em yahoo.com.br>
To: "'FireBase'" <lista em firebase.com.br>
Sent: Thursday, January 27, 2005 11:14 AM
Subject: RES: [firebase-br] Store Procedure - Esta tá difícil


Caro Nilton

Com estas alterações que me passou, pelo menos agora a sp grava o saldo
correto do lançamento, porém ele não executa a atualização dos lançamentos
maiores que a data, ou seja ele não executa o for até o fim do arquivo,
somente no registro atual.
Tem mais alguma dica? Aí vai a sp alterada.

SET TERM ^ ;

CREATE PROCEDURE SALDOCAIXA (
    DATA DATE,
    CAIXA INTEGER)
AS
DECLARE VARIABLE ULTLANCTO INTEGER;
DECLARE VARIABLE SALDOANT NUMERIC(15,2) = 0; DECLARE VARIABLE ID INTEGER;
DECLARE VARIABLE TIPO VARCHAR(1); DECLARE VARIABLE VALOR NUMERIC(15,2);
DECLARE VARIABLE DATAANT DATE; begin
   SALDOANT=0;
   select Max(DATALAN) from MOVCAIXA where DATALAN<:DATA and CODCAIXA =
:CAIXA into :DATAANT;
   if (:DATAANT IS NOT NULL) then
      begin
       select Max(NUMLAN) from MOVCAIXA where DATALAN=:DATAANT and CODCAIXA
= :CAIXA into :ultlancto;
       select SALDOAT from MOVCAIXA where NUMLAN=:ultlancto  into :SALDOANT;
      end
   else
      begin
       select Min(DATALAN) from MOVCAIXA where CODCAIXA =:CAIXA into
:DATAANT;
       select Min(NUMLAN) from MOVCAIXA where DATALAN=:DATAANT and CODCAIXA
= :CAIXA into :ultlancto;
       SALDOANT=0;
      end


file://O erro deve estar aqui, mas não sei o que fazer. Esta correta a
sintaxe do for?

   for select NUMLAN,TIPOLAN,VALORLAN from MOVCAIXA where DATALAN>=:DATA and
CODCAIXA = :CAIXA order by DATALAN,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;
        suspend;
   end
end
^

SET TERM ; ^

GRANT SELECT,UPDATE ON MOVCAIXA TO PROCEDURE SALDOCAIXA;

GRANT EXECUTE ON PROCEDURE SALDOCAIXA TO SYSDBA;


Trabalho com vários caixas, por isso preciso informar a data e o caixa para
fazer a atualização.


Reuber





______________________________________________
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