Edson Alamino G. Júnior

Arredondando campo numérico

5 posts in this topic

Boa tarde caros !

Tenho um campo numa tabela MySQL para armazenar os CPF´s e CNPJ´s. Ocorre que há décadas, esse campo foi criado com tipo numérico e está assim até hoje, impossível alterar pela quantidade de clientes e registros, etc ....

Criei um método WS, que os mobiles irão consumir. Eles farão inclusão de clientes e um dos campos é o famigerado CNPJ/CPF.

Ocorre que no momento de salvar esse campo no BD, o mesmo está arredondando o CNPJ ! rsrsrsrs

Fazendo por exemplo:

...



cdcli000.clicpf = XMLAbre.Xml.NovoCliente.CNPJ // 30094114013006



...



HModify(cdcli000

Ele salva no BD '30094114013010' !!!

Estou deduzindo que é arredondamento, pois com CNPJ terminado em zero, não acontece.

Share this post


Link to post
Share on other sites

Se entendi bem seu webservice q manipula o Banco de Dados em MySQL q é usado por outro sistema/linguagem esta gravando de uma forma q não poderia correto?

Se for isso faça um teste crie uma Query para fazer o Update no banco e execute ela HExecuteSQLQuery com o parâmetro hQueryWithoutCorrection

1 person likes this

Share this post


Link to post
Share on other sites
1 hora atrás, admin disse:

Se entendi bem seu webservice q manipula o Banco de Dados em MySQL q é usado por outro sistema/linguagem esta gravando de uma forma q não poderia correto?

Esta tabela (assim como outras) como disse, foi criada no Clipper há quase trinta anos, e na ocasião o campo CPF/CNPJ foi criado com tipo numérico 15 !
Quando portei há quase quinze anos para MySQL, ela ficou como tipo DOUBLE,15,0
Com isso, sempre que eu utilizar as funções HFSQL (modify, add, etc ...) e fizer atribuições no formato tabela.campo, irá ocorrer este problema.

A solução foi de fato utilizar query´s com o atributo de 'não correção' ligado !

Obrigado !

1 person likes this

Share this post


Link to post
Share on other sites

Bom dia,

Pode estar aí o problema (campo tipo double na tabela mysql).

Os meus campos INTEIROS (sem decimais) na migração de dbf para MySQL vieram como DECIMAL ficando DECIMAL(15,0), daí nunca tive esse problema que o Edson Alamino. Tudo lindo por aqui heheh

Edson,

Poderia fazer um teste pra mim?

Declara a variavel como NUMERIC.

Joga o conteudo que chega nessa variavel, e grava essa variável no banco de dados. Veja se ainda assim ele faz qualquer tipo de arredondamento. Please

Janio

1 person likes this

Share this post


Link to post
Share on other sites

Bom dia !

Fiz como mencionou Jânio. Aliás declarei a variável de tudo quanto é jeito e tipo, mas após salvar o conteúdo ... arredonda !

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now