ExecuteDirect() no FireBird, o que há de errado ?

Firebird

19/12/2005

Olá!

Sou Desenv. Delphi-7 + IB/FB + DBExpress.

TEnho a Seguinte dúvida:
Estou usando o DMCN.SQLConnect.ExecuteDirect(), p/ atualizar valores e acontece o seguinte:
com valores s/ casas decimais funciona bem, mas qdo tem decimal, o valor é multiplicado p/ 100

Ex: Preco := 2,00;
Valorx := FormatFloat(´#0.00´,Preco);
DMCN.SQLConnect.ExecuteDirect(´UPDATE ITENSVD SET PRECO = ´+QuotedStr(Valorx)+´ WHERE CODVENDA = ´+QuotedStr(IntToStr(Codvenda))+´ and CODPROD = ´+QuotedStr(Codprod));
O resultado está ok.

Ex: Preco := 2,25;
Valorx := FormatFloat(´0.00´,Preco);
DMCN.SQLConnect.ExecuteDirect(´UPDATE ITENSVD SET PRECO = ´+QuotedStr(Valorx)+´ WHERE CODVENDA = ´+QuotedStr(IntToStr(Codvenda))+´ and CODPROD = ´+QuotedStr(Codprod));
O resultado está é incorreto na tabela, igual a R$ 225,00.

Então pergunto porque acontece isso e como resolver ?



Desde já meus agradecimentos.

ANT.CARLOS/SP


Ant.carlos/sp

Ant.carlos/sp

Curtidas 0

Respostas

Joaoshi

Joaoshi

19/12/2005

Colega,

Preco := 2,25;
Valorx := FormatFloat(´#0.00´,Preco);
Valorx := StringReplace(Valorx,´,´,´.´,[rfReplaceAll]);

a ideia a trocar o separador decimal de , para .

Espero ter ajudado.


GOSTEI 0
POSTAR