Erro ao tentar gravar texto 30.00 em Campo Numeric(10,2), no firebird

08/08/2010

Preciso gravarr os dados de um arquivo texto em uma tabela do firebird, conforme abaixo:  DADOS.TXT 000001JOSE DA SILVA        19841231     30.00   
000002JOSÉ SERRA           19500305    110.00
Leiaute do Arquivo.TXT
CODIGO, 1, 6 NOME, 7, 20 DATA, 28,8 VALOR, 36,10   
Campos da Tabela CODIGO INTEGER,
NOME VARCHAR(20),
DATA DATE,
VALOR NUMERIC(10,2)  
Estou fazendo assim...
Para CODIGO INTEGER, faço IbTableDadosCODIGO.AsInteger := StrToInt(Copy(Linha, 1,6));
Para NOME VARCHAR(20), IbTableDadosNOME.AsString := Copy(Linha,7 ,20); Para DATA DATE, IbTableDadosDATA.AsDateTime := StrToDate(Copy(Linha,34 ,2)+'/'+Copy(Linha,32 ,2)+'/'+Copy(Linha,28 ,4));
e para VALOR NUMERICO(10,2), como devo fazer?
Já fiz...
IbTableDadosVALOR.AsFloat := StrToFloat(Trim(Copy(Linha,36 ,10)));
IbTableDadosVALOR.AsCurrency := StrToCurr(Trim(Copy(Linha,36 ,10)));
... mas dá o erro... Project ImportaDados.exe raised exception class EConvertError with message ''0.00' is not a valid floating point value'.
Francisco Rodrigues

Francisco Rodrigues

Curtidas 0

Respostas

Wesley Yamazack

Wesley Yamazack

08/08/2010

Olá amigo,

   O erro que você me mandou esta dizendo que não pode converter 0.00, pois o correto seria 0,00 . Para isso faça uma pequena alteração na forma de ler seu txt.


  StrToCurr( Trim(StringReplace(Copy(Linha,36 ,10),'.',',',[rfReplaceAll])));


Um abraço

Wesley Y
GOSTEI 0
Francisco Rodrigues

Francisco Rodrigues

08/08/2010

Ok, amigo Wesley Y. Funcionou perfeitamente. Um abraço e, muitíssimo obrigado.
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

08/08/2010

Ok Amigo,   Um abraço e até a próxima.   Att   Wesley Y
GOSTEI 0
POSTAR