Erro de conversão, ao gravar decimal.

Firebird

03/08/2004

Olá
Estou usando um IBDataset para atualizar um registro na tabela. Só que está dando erro. Tenho que gravar um resultado no campo QTDPRO que é do tipo Double Precision.

Depois de usar o SelectSQL.Add, o IBDataset fica assim: update PROD set QTDPRO=-294,6 where CODPRO=2040.
Creio que o erro é justamente por causa da vírgula.
Por favor, Como posso resolver isto? :?

Produto.Close;
Produto.SelectSQL.Clear;
Produto.SelectSQL.Add(´update PROD set QTDPRO=´+FloatToStr(Total)+ ´ where CODPRO=2040´);
Produto.Prepare;
Produto.ExecSQL;

[ ]´s


Ivonei

Ivonei

Curtidas 0

Respostas

Afarias

Afarias

03/08/2004

|Creio que o erro é justamente por causa da vírgula.

Exato! O separador de decimais no IB é o ponto (.)


|Por favor, Como posso resolver isto?

Formate o número para usar ponto como separador de decimais! Uma forma de fazer isso é mudando a variável DecimalSeparator::

DecimalSeparator := ´.´;

mas tome cuidado q isso afeta toda sua aplicação -- E, vc aconselho tb, no início da sua aplicação fazer uma chamada para::

Application.UpdateFormatSettings := False;


Se vc não quer mudar o DecimalSeparator para toda a aplicação (o q algumas vezes não é desejável), vc pode criar uma função tipo::

function FloatToStr2(Value: Extended): string;
var
  DefaultSeparator: Char;
begin
  DefaultSeparator := DecimalSeparator;
  DecimalSeparator := ´.´;
  Result := FloatToStr(Value);
  DecimalSeparator := DefaultSeparator;
end;




T+


GOSTEI 0
Ivonei

Ivonei

03/08/2004

É isto mesmo.
Muito obrigado afarias. :D


GOSTEI 0
POSTAR