Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fabio_br

Problemas com data types access/mysql

Recommended Posts

Bom dia

 

Estou com um problema aki , o acess aceitava valores no formato moeda normalmente, usand FormatCurrency, já o mysql está dando erro, qdo altero para integer ou double ele ate naum da erros, mas naum consegue pegar os valores corretamentes.

 

Exemplo mando um valor 3,50 e pego os mais variados numeros tipo:

 

3500,00 , 3,500, 35000000,00 naum sei qual opçao usar e nem a configuração exata do Double ou do Float , li o MYsql 5.0 reference mas naum consegui achar um jeito ainda, acredito que isso seja uma coisa ordinária de fácil..

 

Espero uma ajuda e desde já agradeço

Fábio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

O problema que vejo em tais ferramentas da Microsoft é justmaente esse, impede o profissional de realmente conhecer de bancos de dados.

 

Vamos lá, a melhor solução para você seria utilizar o tipo de dados chamado de "fixed-point" ou tipo de dados de ponto-fixo que é o DECIMAL.

 

DOUBLE e FLOAT aceitam partes fracionais, mas apresentam problemas de arredondamento, apesar de terem seu processamento muito rápido.O problema de arredondamento não é do MySQL, mas em todos os bancos de dados.

 

INT ou INTEGER não permitir que você user números com o formato (precisão, escala) uma vez que se trata de inteiros, um conjunto de valores que fazem parte do Conjunto Z ou N (INT SIGNED = CONJUNTO Z, INT UNSIGNED = CONJUNTO N).

 

Coloque o campo que armazena valores monetários como DECIMAL(10,2).

 

Abração, que DEUS abençõe! http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde

 

http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif Aff, to ate com vergonha... mas ficou qse perfeito. Está acontecendo o seguinte:

 

se o valor passado for quebrado tipo 8,5 ou 9,5 (numero este definido como decimal(10,2) ), da erro na hora de inserir estes dados na tabela, onde a mesma que deve receber o valor tb está definida como decimal(10,2).

 

porém se o valor passado for tipo 50,0 , 8,0 , 90,0, 800,0 ele insere no banco de dados sem erros e armazena corretamente como 50,00 , 8,00 , 90,00

 

Não consigo entender porque...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá, mais fundamentos...

 

Internamente, números que apresentam parte fracional (por exemplo, 10,20) na verdade é "10.20", então, VÍRGULA NÃO EXISTE internamente, a não ser que tratemos de outros números que não sejam decimal, nem floats e nem doubles. ok?

 

Bom, o que você tem a fazer é, substituir "," por "."...vírgula "dá pau" !!! ehehehe

 

Abração!! http://forum.imasters.com.br/public/style_emoticons/default/natal_tongue.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

To precisando de mais fundamentos. .. lol

 

Wagner fiz o que você falow passei todos os campos de preços para decimal(10,2) , agora minhas tabelas que possuiam campos moeda do access passei para decimal. Ae está acontecendo o seguinte, uso o dreamweaver para fazer minha página e esse f.d.p, mesmo quando o valor do campo no mysql esta com ". " , tipo 50.5 ou 34.5 ele gera na página 50,5 ou 34,5.

 

Comecei a ter um erro na função de soma que usava :

 

Dim numpreco, numfrete, grandfinal
if Request.Cookies("client_number") = "" then 
numfrete = (rsCalculo.Fields.Item("preco_frete").Value)
else
numfrete = (rsCalculo1.Fields.Item("preco_frete").Value)
end if
numpreco = objCart.GrandTotal

grandfinal = (numpreco) + (numfrete)
Session("grandfinal") = grandfinal
Session("frete") = numfrete

Está dando o seguinte erro:

 

Microsoft VBScript runtime error '800a000d'

 

Type mismatch

 

/carrinhosedex1.asp, line 101

 

*A linha 101 é onde é feita a soma -- grandfinal = numpreco + numfrete)

 

 

Após ler vários posts aki no forum e buscar ajuda no google consegui so uma leve melhora , coloquei cdbl antes das variaveis de soma assim:

 

 

Dim numpreco, numfrete, grandfinal
if Request.Cookies("client_number") = "" then 
numfrete = cdbl(rsCalculo.Fields.Item("preco_frete").Value)
else
numfrete = cdbl(rsCalculo1.Fields.Item("preco_frete").Value)
end if
numpreco = objCart.GrandTotal


grandfinal = cdbl(numpreco) + cdbl(numfrete)
Session("grandfinal") = grandfinal
Session("frete") = numfrete

Após isso funcionou parcialmente, naum tenho mais erro de VBscript, porem na tabela final se os valores passados são inteiros tipo 20 30 39, fica inserido perfeitamente 20.00 30.00 39.00 , mas se o numero for quebrado por ex: 20.5 ele insere 205.00

 

Preciso de mais uma ajuda pois ja naum sei mais o que fazer .

 

Obrigado

Fabio

 

Desculpa estar amolando tanto....

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.