fabio_br 0 Denunciar post Postado Novembro 25, 2007 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
Wagner Bianchi 0 Denunciar post Postado Novembro 25, 2007 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
fabio_br 0 Denunciar post Postado Novembro 25, 2007 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
Wagner Bianchi 0 Denunciar post Postado Novembro 25, 2007 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
fabio_br 0 Denunciar post Postado Novembro 26, 2007 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