Ponto flutuante
Oi preciso de uma ajuda:
Eu us delphi 7 e firibird 2.1
eu tenho no edit 33.520,00, Qdo vou gravar aparece um erro:
" '33.520,00' is not as valid floating point a valid for campo'meucampo' "
e o meucampo é numeric 15 ,2
preciso gravar esse valor assim no banco (33.520,00)
o que fazer? desde ja eu agradeço a atenção
Eu us delphi 7 e firibird 2.1
eu tenho no edit 33.520,00, Qdo vou gravar aparece um erro:
" '33.520,00' is not as valid floating point a valid for campo'meucampo' "
e o meucampo é numeric 15 ,2
preciso gravar esse valor assim no banco (33.520,00)
o que fazer? desde ja eu agradeço a atenção
Paulo Borges
Curtidas 0
Melhor post
Mateus Ribeiro
28/06/2016
Boa tarde!
Você está tentando gravar uma virgula no banco, e não é aceito!
A forma correta seria: 33.520
Você está tentando gravar uma virgula no banco, e não é aceito!
A forma correta seria: 33.520
GOSTEI 1
Mais Respostas
Marco Antônio
28/06/2016
Paulo boa tarde.
No edit vc vê o conteúdo como sendo ' 33.520,00'. E isso tá correto. Mas o banco de dados não enxerga assim. No banco a informação é gravada como sendo ' 33520.00'.
Observe que o '.' ( ponto ) é o separador decimal.
Dependendo da forma como vc está incluindo vc deverá arrancar o ponto dos milhares e depois trocar a virgula por ponto. Exatamente nesta ordem.
Ex.
x := '33.520,00';
x := StringReplace( x , '.', '', [ rfReplaceAll , rfIgnoreCase ] ); // trocando ponto por vazio
x := StringReplace( x , ',', '.', [ rfReplaceAll , rfIgnoreCase ] ); // trocando virgula por ponto.
Ficará assim: '33520.00';
Outro ex.
x := '1.295.623,39';
x := StringReplace( x , '.', '', [ rfReplaceAll , rfIgnoreCase ] ); // trocando ponto por vazio
x := StringReplace( x , ',', '.', [ rfReplaceAll , rfIgnoreCase ] ); // trocando virgula por ponto.
Ficará assim: '1295623.39';
Abc.
No edit vc vê o conteúdo como sendo ' 33.520,00'. E isso tá correto. Mas o banco de dados não enxerga assim. No banco a informação é gravada como sendo ' 33520.00'.
Observe que o '.' ( ponto ) é o separador decimal.
Dependendo da forma como vc está incluindo vc deverá arrancar o ponto dos milhares e depois trocar a virgula por ponto. Exatamente nesta ordem.
Ex.
x := '33.520,00';
x := StringReplace( x , '.', '', [ rfReplaceAll , rfIgnoreCase ] ); // trocando ponto por vazio
x := StringReplace( x , ',', '.', [ rfReplaceAll , rfIgnoreCase ] ); // trocando virgula por ponto.
Ficará assim: '33520.00';
Outro ex.
x := '1.295.623,39';
x := StringReplace( x , '.', '', [ rfReplaceAll , rfIgnoreCase ] ); // trocando ponto por vazio
x := StringReplace( x , ',', '.', [ rfReplaceAll , rfIgnoreCase ] ); // trocando virgula por ponto.
Ficará assim: '1295623.39';
Abc.
GOSTEI 1
Paulo Borges
28/06/2016
Oi obrigado ai pessoal vlw pela atenção,
Então ele iria ficar assim no edit: 33520.00
só que o cliente reclama
pq ele queria ver assim ''33.520,00''
como q eu faço?
Então ele iria ficar assim no edit: 33520.00
só que o cliente reclama
pq ele queria ver assim ''33.520,00''
como q eu faço?
GOSTEI 0
Mateus Ribeiro
28/06/2016
No seu ClientDataSet, selecione a essa field e na propriedade DisplayFormat vc coloca isso: #,###,###,##0.00
Pronto, no banco estará 33520 mas na sua aplicação vc verá no formato 33.520,00
Pronto, no banco estará 33520 mas na sua aplicação vc verá no formato 33.520,00
GOSTEI 1
Paulo Borges
28/06/2016
Ao Mateus e o Marcos ai muito obrigado
vlw mesmo.
pois deu certo, abraços
vlw mesmo.
pois deu certo, abraços
GOSTEI 0
Marco Antônio
28/06/2016
Paulo, desculpa a falta de clareza.
Mas o Matheus já esclareceu. Vc deverá de formatar no edit conforme o seu cliente deseja.
A forma de retirar os pontos dos milhares e definí-los apenas nos decimais seria antes de fazer a inclusão ou alteração na tabela.
Abç.
Mas o Matheus já esclareceu. Vc deverá de formatar no edit conforme o seu cliente deseja.
A forma de retirar os pontos dos milhares e definí-los apenas nos decimais seria antes de fazer a inclusão ou alteração na tabela.
Abç.
GOSTEI 1
Paulo Borges
28/06/2016
Que amigo, vc me ajudou muito...
GOSTEI 0