Fórum Por que naum quer dar certo? #51436

29/06/2005

0

boa tarde a todos,

criei a seguinte stored procedure:

CREATE PROCEDURE SP_FINALIZA_VENDA(
VENDA INTEGER,
FPAG1 INTEGER,
PAG1 NUMERIC(9,2),
FPAG2 INTEGER,
PAG2 NUMERIC(9,2),
FPAG3 INTEGER,
PAG3 NUMERIC(9,2),
DESCONTO NUMERIC(3,2),
ACRESCIMO NUMERIC(3,2))
AS
BEGIN
UPDATE VENDA
SET FPAG1 = :FPAG1,
PAG1 = :PAG1,
FPAG2 = :FPAG2,
PAG2 = :PAG2,
FPAG3 = :FPAG3,
PAG3 = :PAG3,
DESCONTO = :DESCONTO,
ACRESCIMO = :ACRESCIMO
WHERE (VENDA = :VENDA);
END

até ai tudo bem, no ibexpert funciona que é uma beleza mas quando tento executa-la no delphi funciona
em parte por exemplo se eu tentar jogar o valor 5,75 em qualquer campo do tipo numeric vou ter o valor
6 gravado e não 5,75.
Estou utilizando o Delphi 7 com o Dbexpress o driver é o do interbase o FireBird é o 1.5 e o processo para
execução do SP e o seguinte:

TD.TransactionID := 1;
TD.IsolationLevel := XILReadCommitted;
SQLC.StartTransaction(TD);

SP_Venda.StoredProcName := ´SP_FINALIZA_VENDA´;

SP_Venda.ParamByName(´FPAG1´).Value := 1;
SP_Venda.ParamByName(´FPAG2´).Value := 2;
SP_Venda.ParamByName(´FPAG3´).Value := 3;
SP_Venda.ParamByName(´PAG1´).Value := editpag1.value;
SP_Venda.ParamByName(´PAG2´).Value := editpag2.value;
SP_Venda.ParamByName(´PAG3´).Value := editpag3.value;
SP_Venda.ParamByName(´DESCONTO´).Value := editdesconto.value;
SP_Venda.ParamByName(´ACRESCIMO´).Value := editacrescimo.value;

SP_Venda.ExecProc;

SQLC.Commit(TD);

eu reorganizei o procedimento e ele ficou um pouco genérico para que fique mais facil o entendimento.
os edits estão retornando valores Real.

tai meu problema.


Tronbr

Tronbr

Responder

Posts

29/06/2005

Steve_narancic

não sei se estou certo mas ao passar valores com virgula substitua a virgula por ponto -> 5.75


Responder

Gostei + 0

30/06/2005

Tronbr

esta certo sim, mas eu já fiz isso e continua com o problema de arredondamento.


Responder

Gostei + 0

30/06/2005

Beppe

Como estão definidos os tipos na tabela?


Responder

Gostei + 0

01/07/2005

Tronbr

Beppe,
os campos estao definidos da seguinte forma:

NUMERIC(9,2)
DEFAULT 0.00
CHECK (VALUE >= 0.00)


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar