Formatação de Campo Numeric(FB)
Preciso gravar uma informação proveniente de um arquivo texto. O arquivo é tipo:
000000025489
Acontece que na minha tabela eu tenho o campo Numeric(9,2). Logo preciso passar para com um ponto decimal nas duas últimas posições, assim:
0000000254.89
Se eu der um FormatFloat, vai vir virgula e não ponto. Como faço para colocar ponto e gravar no banco? Já coloquei máscara no EditFormat e não deu certo. Esses campos são varridos num texto e vão sendo jogado para a tabela, dentro de While. Não posso mudar minhas configurações regionais, pois tem outras coisas que precisam dela.
000000025489
Acontece que na minha tabela eu tenho o campo Numeric(9,2). Logo preciso passar para com um ponto decimal nas duas últimas posições, assim:
0000000254.89
Se eu der um FormatFloat, vai vir virgula e não ponto. Como faço para colocar ponto e gravar no banco? Já coloquei máscara no EditFormat e não deu certo. Esses campos são varridos num texto e vão sendo jogado para a tabela, dentro de While. Não posso mudar minhas configurações regionais, pois tem outras coisas que precisam dela.
Paulo
Curtidas 0
Respostas
Joaoshi
24/07/2008
Colega,
poderia dividir o numero por 100 ou
executar o formatfloat e em seguida um [b:ef7c8687cd]stringreplace[/b:ef7c8687cd] de , para .
Espero ter ajudado.
poderia dividir o numero por 100 ou
executar o formatfloat e em seguida um [b:ef7c8687cd]stringreplace[/b:ef7c8687cd] de , para .
Espero ter ajudado.
GOSTEI 0
Luiz Henrique
24/07/2008
Bom dia , Paulo...tudo blz
Fiz uma funcao para me formatar/retornar valores no formato FDB e outros bancos tbm...
Ilustracao:
Funcao GetFDBNumeric(_Valor: Real; _dec: integer): String;
begin
...
valido o valor
algum ajuste se necessario
...
//Confirmo o formato, salvando o atual...
_DecSep:= DecimalSeparator;
_ThoSep:= ThousandSeparator;
//Configuro para a funcao FormatFloat, retornar . para decimal
DecimalSeparator:= ´.´;
ThousandSeparator:= ´,´;
result:= FormatFloat(´0.´+stringofchar(´0´,_dec),_Valor);
DecimalSeparator:= _DecSep;
ThousandSeparator:= _ThoSep;
end
+- isso, sei la, deve ter outras formas, mas uso esta para praticamente tudo que se refere a valor com decimal
Espero que ajude...T+
Fiz uma funcao para me formatar/retornar valores no formato FDB e outros bancos tbm...
Ilustracao:
Funcao GetFDBNumeric(_Valor: Real; _dec: integer): String;
begin
...
valido o valor
algum ajuste se necessario
...
//Confirmo o formato, salvando o atual...
_DecSep:= DecimalSeparator;
_ThoSep:= ThousandSeparator;
//Configuro para a funcao FormatFloat, retornar . para decimal
DecimalSeparator:= ´.´;
ThousandSeparator:= ´,´;
result:= FormatFloat(´0.´+stringofchar(´0´,_dec),_Valor);
DecimalSeparator:= _DecSep;
ThousandSeparator:= _ThoSep;
end
+- isso, sei la, deve ter outras formas, mas uso esta para praticamente tudo que se refere a valor com decimal
Espero que ajude...T+
GOSTEI 0
Luiz Henrique
24/07/2008
[quote=´Luiz Henrique´]
...retorno String porque uso a funcao no preenchimento de Strings(Insert´s, Update´s).. ´, ´+GetFDBNumeric(_valor,9,2)+´,´.......
...retorno String porque uso a funcao no preenchimento de Strings(Insert´s, Update´s).. ´, ´+GetFDBNumeric(_valor,9,2)+´,´.......
GOSTEI 0
Paulo
24/07/2008
Resolvi. A resposta era muito óbvia.
strtofloat(Valor) / 100;
Depois disso eu dei um StringReplace para retirar a vírgula e colocar o ponto.GOSTEI 0