Amigos da lista bom dia. Tenho uma SP (Abaixo segue seu código) e na minha máquina local ele atualizar o valor na tela com apenas um clique no botão que chamada a SP no Aplicativo. Mas realizando testes em um BD instalado em um Fedora 6 - Firebird 1.5, para que o valor seja atualizado ne tela, precisa clicar duas vezes no botão.
Utilizo Delphi 6 Professional com IBO. Alguém poderia me ajudar? Alguém já passou por isso? Desde já agradeço a todos pela atenção. /********* Chamando SP no Aplicativo ***********/ With Dm1.QuCalc do begin Close; SQL.Clear; SQL.Add('EXECUTE PROCEDURE PRECO_PONDERADO_COMPRA('+#39+varCodPro+#39+')'); ExecSQL; Close; end; /********* SP Criada ***********/ SET TERM ^ ; CREATE PROCEDURE PRECO_PONDERADO_COMPRA ( CODPRO INTEGER) AS DECLARE VARIABLE VARCODCOMPRA INTEGER; DECLARE VARIABLE VARQTITCOMPRA NUMERIC(18,4); DECLARE VARIABLE VARCODPRO INTEGER; DECLARE VARIABLE VARTOTALQT NUMERIC(18,4); DECLARE VARIABLE TOTALCOMPRA1 NUMERIC(18,4); DECLARE VARIABLE TOTALCOMPRA2 NUMERIC(18,4); DECLARE VARIABLE PONDERADO NUMERIC(18,4); begin Ponderado = 0; VARTOTALQT = 0; /* ******** Ultima compra ******** */ select max(a.codcompra)from compra a, itcompra b where b.codpro = :codpro and a.codcompra = b.codcompra and a.statuscompra = 'CONFIRMADA' into :varcodcompra; if (not :varcodcompra is null) then begin select sum(qtitcompra*pritcompra), codpro from itcompra where codcompra = :varcodcompra and codpro = :codpro group by codpro into :TotalCompra1, :varcodpro; select sum(qtitcompra), codpro from itcompra where codcompra = :varcodcompra and codpro = :codpro group by codpro into :VARQTITCOMPRA, :varcodpro; VARTOTALQT= VARTOTALQT + :VARQTITCOMPRA; ponderado = ponderado + :TotalCompra1; end /* ******** Penultima compra ******** */ select max(a.codcompra)from compra a, itcompra b where b.codpro = :codpro and a.statuscompra = 'CONFIRMADA' and a.codcompra <> :varcodcompra and a.codcompra = b.codcompra into :varcodcompra; if (not :varcodcompra is null) then begin select sum(qtitcompra*pritcompra), codpro from itcompra where codcompra = :varcodcompra and codpro = :codpro group by codpro into :TotalCompra2, :varcodpro; select sum(qtitcompra), codpro from itcompra where codcompra = :varcodcompra and codpro = :codpro group by codpro into :VARQTITCOMPRA, :varcodpro; VARTOTALQT= VARTOTALQT + :VARQTITCOMPRA; ponderado = ponderado + :TotalCompra2; end /* ******** Pondera os valores ******** */ if (ponderado > 0) then update Produto set PrPonderadoPro = :ponderado / :VARTOTALQT where CodPro = :CodPro; else update Produto set PrPonderadoPro = :ponderado where CodPro = :CodPro; suspend; end ^ SET TERM ; ^ GRANT SELECT ON COMPRA TO PROCEDURE PRECO_PONDERADO_COMPRA; GRANT SELECT ON ITCOMPRA TO PROCEDURE PRECO_PONDERADO_COMPRA; GRANT SELECT,UPDATE ON PRODUTO TO PROCEDURE PRECO_PONDERADO_COMPRA; GRANT EXECUTE ON PROCEDURE PRECO_PONDERADO_COMPRA TO SYSDBA;