Galera, to com uma procedure que ta dando erro. quando ela é executada não
esta me retornando o valor...

Como eu não manjo de procedures (e não fui eu quem a fez) estou pedindo
ajuda de vcs, pois não consigo mais falar com o cara

que a fez.

Alguém pode me dar uma mão, to precisando muito...pois os dados estão todos
errados em função desta procedure.

Abaixo está a chamada da procedure no programa e após a procedure dentro do
banco.

      dmSIGFAP01.FibDataBase.StartTransaction;
      spGravaSaldo.ParamByName('CD_MATERIA').AsInteger  :=
dbdtCD_MATERIA.Field.AsInteger;
      spGravaSaldo.ParamByName('CD_UNIDADE').AsInteger  :=
StrToInt(edtCD_UNIDADE.text);
      spGravaSaldo.ParamByName('CD_PROGRAMA').AsInteger :=
dbdtCD_PROGRAMA.Field.AsInteger;
      spGravaSaldo.ParamByName('QT_PRODUTO').AsFloat    :=
dbdtQT_MATERIAL.Field.AsFloat;
      spGravaSaldo.ParamByName('VR_UNITARIO').AsFloat   :=
dbdtVR_UNITARIO.Field.AsFloat;
      spGravaSaldo.ParamByName('TP_TIPO').AsString      := 'E';
      spGravaSaldo.ParamByName('TP_MODO').AsString      := 'I';
      spGravaSaldo.ExecProc;
      dmSIGFAP01.FibTransacao.Commit;

Aqui está a procedure

CREATE PROCEDURE GRAVA_SALDO (
    CD_MATERIA INTEGER,
    CD_UNIDADE INTEGER,
    CD_PROGRAMA INTEGER,
    QT_PRODUTO NUMERIC(15,2),
    VR_UNITARIO NUMERIC(15,2),
    TP_TIPO CHAR(1),
    TP_MODO CHAR(1))
AS
DECLARE VARIABLE NR_COUNT INTEGER;
DECLARE VARIABLE QT_SALDO NUMERIC(15,2);
begin

   NR_COUNT = 0;
   SELECT COUNT(*)
   FROM SIGFSALD
   WHERE CD_MATERIAL = :CD_MATERIA
     AND CD_UNIDADE = :CD_UNIDADE
     AND CD_PROGRAMA = :CD_PROGRAMA
   INTO :NR_COUNT;

   IF ( :TP_TIPO = 'E' ) THEN
      QT_SALDO = :QT_SALDO + :QT_PRODUTO;
   ELSE
      QT_SALDO = :QT_SALDO - :QT_PRODUTO;

   IF ( :NR_COUNT = 0 ) THEN BEGIN
      INSERT INTO SIGFSALD ( CD_MATERIAL, CD_UNIDADE, CD_PROGRAMA,
QT_SALDO )
                    VALUES ( :CD_MATERIA, :CD_UNIDADE, :CD_PROGRAMA,
:QT_SALDO );
   END
   ELSE BEGIN
      UPDATE SIGFSALD SET QT_SALDO = :QT_SALDO
      WHERE CD_MATERIAL = :CD_MATERIA
        AND CD_UNIDADE = :CD_UNIDADE
        AND CD_PROGRAMA = :CD_PROGRAMA;

   END

   if ( (:TP_MODO = 'I') and (:TP_TIPO = 'E') and ( :VR_UNITARIO <>
0 ) )then begin
      FOR SELECT COUNT(*)
           FROM SIGFSALD
          WHERE CD_MATERIAL = :CD_MATERIA
          INTO :NR_COUNT DO BEGIN

          UPDATE SIGFSALD SET VR_UNITARIO =:VR_UNITARIO
          WHERE CD_MATERIAL = :CD_MATERIA;
      END
   END
  suspend;
end

                    ~\\|//~
                    -(o o)-
o--------------oOOOo--(_)--oOOOo-------------o
|                                            |
|           Eduardo de Almeida Silva         |
|               Kobra Sistemas               |
|  [EMAIL PROTECTED]  -   (14)3263-0326   |
|                                            |
|                .oooO   Oooo.               |
o----------------(   )---(   )---------------o
                  \ (     ) /
                   \_)   (_/



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a