GRAVAR FORMATO MOEDA MYSQL

ALTAIR148 15/04/2011 09:27:05
#371414
Estou tendo muitos problemas em calcular valores no vb.net, e gostaria de saber se qual a melhor forma para trabalhar com valores, (percentagem, multiplicação, soma....) tenho tido muitos problemas com o erro:

Conversion from string [Ô] XXXX [Ô] to type [ô]Double[ô] is not valid.

Queria opniao de qual a melhor forma para trabalhar com valores, eu pensei da seguinte forma, será que teria problema se os valores no formato moeda fossem todos gravados em um campo [Ô]varchar[Ô] no meu banco MYSQL?


Obrigado
ADHEL 15/04/2011 09:36:35
#371416
eu trabalho com o campo tipo double
No começo tambem gravava o tipo moeda como varchar
Um dia precisei mostrar a soma das compras de todos os clientes por cliente em um datagrid em um determinado tempo e com varchar não somava.Quando mudei para double funcionou perfeito
ALTAIR148 15/04/2011 09:58:26
#371423
Mas tenho tido muito problemas com esse erro:

Conversion from string [Ô] XXXX [Ô] to type [ô]Double[ô] is not valid.


Como que eu posso evita-lo?
ADHEL 15/04/2011 10:19:25
#371432
Tem algum campo que está vazio

Coloca a rotina que está dando o erro
RODRIGOFERRO 15/04/2011 10:55:00
#371434
na verdade voce esta fazendo uma conversao de string para Double e tem algum character invalido ai nessa situação. por isso ele nao converte e apresenta o erro !

Cola ai um trexo do codigo para visualizarmos melhor !

Abraços
ALTAIR148 15/04/2011 23:22:20
#371515
Ah sim, entendi a parte [Ô] conversao de string para Double [Ô] realmente estou fazendo isso, abaixo segue uma das linhas que está dando erro

Dim faixa1_inss As String
Dim faixa2_inss As String
Dim faixa3_inss As String
Dim percentagem1_inss As String
Dim percentagem2_inss As String
Dim percentagem3_inss As String

Dim command As New MySql.Data.MySqlClient.MySqlCommand([Ô]SELECT * FROM tb_inss[Ô], GetConexao1)
Dim reader As MySql.Data.MySqlClient.MySqlDataReader
reader = command.ExecuteReader()
While reader.Read()
faixa1_inss = reader([Ô]faixa1[Ô])
faixa2_inss = reader([Ô]faixa2[Ô])
faixa3_inss = reader([Ô]faixa3[Ô])

percentagem1_inss = ([Ô]percentual_faixa1[Ô])
percentagem2_inss = reader([Ô]percentual_faixa2[Ô])
percentagem3_inss = ([Ô]percentual_faixa3[Ô])





End While
reader.Close()
command.Dispose()


base_inss.Text = valor_frete.Text / 100 * 20 * percentagem3_inss


a percentagem3_inss é uma string.

Então como que eu devo fazer para parar de ocorrer esse erro?


JONATHANSTECKER 15/04/2011 23:31:57
#371517
Tenta assim... Se os valores forem numéricos, efetuará o cálculo, senão apenas zera o texto.
        If IsNumeric(valor_frete.Text) And IsNumeric(percentagem3_inss.Text) Then
base_inss.Text = Convert.ToDecimal(valor_frete.Text) / 100 * 20 * Convert.ToDecimal(percentagem3_inss)
Else
base_inss.Text = [Ô]0,00[Ô]
End If
ALTAIR148 16/04/2011 16:13:22
#371563
Jonathan valeu... resolveu meu problema....

obrigado.
ALTAIR148 20/04/2011 10:02:44
#371982
Meu banco Mysql, os campos com valores o formato dos campos é DOUBLE, os valores gravam nele normal, só que ele não grava moedas apenas os números inteiros Ex: 100,2500 ele grava 100,0000. Entrei no banco e entendi o que acontece, se as casas decimais forem separadas por [Ô].[Ô] ele aceita, mas os campos são calculados com no form com virgula [Ô],[Ô] separando os centavos.
JONATHANSTECKER 20/04/2011 10:27:38
#371984
Faça um tratamento desse valor antes de inserir no banco.
Valor.ToString.Replace([Ô],[Ô], [Ô].[Ô])
Página 1 de 3 [22 registro(s)]
Tópico encerrado , respostas não são mais permitidas