Erro ao tentar gravar texto 30.00 em Campo Numeric(10,2), no firebird
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'.
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
Curtidas 0
Respostas
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
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
08/08/2010
Ok, amigo Wesley Y. Funcionou perfeitamente. Um abraço e, muitíssimo obrigado.
GOSTEI 0
Wesley Yamazack
08/08/2010
Ok Amigo,
Um abraço e até a próxima.
Att
Wesley Y
GOSTEI 0