Problemas con punto decimal en vb.net t mysql

Resuelto/Cerrado
Denunciar
-
 Winchi -
Hola,
Haciendo una breve reseña de lo que estoy intentando hacer, les comento:
Estoy trabajando con VB .NET 2005 y MYSQL 5.0
Conectando via ADO .NET
Mi problema es el siguiente:
Tengo una llamada Costos (por darle un Nombre)
Que tiene una columna con datos Decimales
Pero cuando hago mi consulta y lo cargo en un Dataset, para luego asignar a un Textbox, como en mi Configuración Regional esta Predeterminado que la coma (,) es separador de Decimales, me toma al punto (.) como separador de Miles, por lo tanto como en la Base de Datos el valor es por ej. 10.3 entonces me toma como 103,00

Quisiera poder recibir bien los datos, sin necesidad de modificar mis configuraciones Regionales.

Aguardo sus comentarios al respecto, y desde ya agradezco su ayuda.

Saludos..

13 respuestas

Bueno según veo tienen problemas con la configuración regional, pues yo uso la siguiente solución. Solo vb.net 2008, no se si servirá para otra versión.

Lo que tienen que hacer es decirle a su programa que cree su propia configuracion regional, es decir el programa que ustedes están diseñando usará la configuración regional que ustedes construyan y no la de windows.

ejemplo

importan el siguiente espacio de nombre

Imports System.Globalization

despues en el load del formulario inicial de la aplicacion escriben esto

System.Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("es-CO")
System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern = "yyyy/MM/dd"
System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyDecimalSeparator = "."
System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyGroupSeparator = ","
System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator = "."
System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberGroupSeparator = ","


ustedes colocan ese codigo en el formulario inicial y de alli en adelante el programa tomara esa confiracion que ustedes realizaron.


ustedes veran si cambian el formato de la fecha o de los decimales o separador de miles solo cambienlo...


ya saben traten de leer y entender el codigo de esta manera no se les olvirará, no anden copiando y pegando


a mi me sirvio me imagino que a ustedes tambien


Saludos su servidor OD
37
Gracias

¡Estamos felices de haberte ayudado! ¿Te hemos sido de ayuda? ¡Déjanos un comentario! Evalúa a CCM

CCM 11108 usuarios nos han dicho gracias este mes


Si funcionó tal como lo quería, muchas gracias compañero!!
Buen dato muchas gracias....
muy bueno tu aporte
gracias
Message postés
4
Date d'inscription
jueves, 14 de abril de 2016
Estatus
Miembro
Última intervención
jueves, 28 de abril de 2016

que buen aporte, muchas gracias.
Gracias, no sabes el dolor de cabeza que tenia al no saber como hacer con esos decimales
yo tengo el mismo problema, no se si ya tienes una solucion para que la compartas, te lo agradeceria mucho!!


http://www.freeprescriptiondrugstore.com
tengo el mismo problema ayudaaaaaaaaaaaaaaaaaaaaa
Cambia la configuracion regional de la PC que usara tu programa. En donde dice Simbolo decimal, elige el punto, y donde dice separador de miles, pon una coma.
AMIGO MUCHISIMAS GRACIAS...
AHORA ME FUNCIONA PERFECTO
GRACIAS MUCHAS GRACIAS
se me dificulta mucho bueno no le endiendo
Message postés
4
Date d'inscription
jueves, 14 de abril de 2016
Estatus
Miembro
Última intervención
jueves, 28 de abril de 2016

wow Esta solucion la buscaba muchisimo tiempo, muchisimas gracias.
Primero, suponiendo que caja de texto es TextBox1, en KeyPress haz lo siguiente, para que sólo se pueda poner un punto como separador decimal. No se permite separador de miles. Independiente de la configuración regional de tu PC.

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) _
Handles TextBox1.KeyPress
If e.KeyChar = Convert.ToChar(13) Then
Me.Button1.Focus()
ElseIf e.KeyChar = Convert.ToChar(8) Then ' se pulsó Retroceso
e.Handled = False
ElseIf (e.KeyChar = ","c) Then ' no permite la coma
e.Handled = True ' Handled = True, no permite; = False, si permite...
ElseIf (e.KeyChar = "."c) Then
Dim ctrl As TextBox = DirectCast(sender, TextBox)
If (ctrl.Text.IndexOf("."c) <> -1) Then ' sólo puede haber una coma
e.Handled = True
End If
ElseIf (e.KeyChar < "0"c Or e.KeyChar > "9"c) Then
' desechar los caracteres que no son dígitos
e.Handled = True
End If
End Sub

Luego, en el LostFocus haz lo siguiente: (Label1 es para expresar el resultado en el formulario)

Private Sub TextBox1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles TextBox1.LostFocus
Me.Label1.Visible = False
Dim objTextBox As TextBox = CType(sender, TextBox)
If objTextBox.Text = "" Then
Exit Sub
Else
If IsNumeric(objTextBox.Text) Then
' Si es la "," s/Config.Reg. en decimales, constata que ya haya "." y que no
' haya aún "," para reemplazar el "." por la "," como separador decimal
If laComa = True Then
If objTextBox.Text.IndexOf("."c) <> -1 Then
If objTextBox.Text.IndexOf(","c) = -1 Then
' Reemplaza el "." por la "," para adaptar a la Conf.Reg. actual
Dim TestString As String = objTextBox.Text
objTextBox.Text = Replace(TestString, "."c, ","c)
End If
End If
End If
' Hago el formateo con puntos y comas, s/conf.regional actual
Dim a As Decimal = CDec(objTextBox.Text)
objTextBox.Text = a.ToString("N2")
Else
MessageBox.Show("No es una expresión numérica válida.", My.Application.Info.ProductName, _
MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
objTextBox.Text = "" : objTextBox.Focus()
End If
End If
End Sub

Espero te sea útil a tí u otros colegas que tengan igual dudas. Suerte. Bernardo.
Muchas Gracias!, genial tu aporte. Esto del punto por la coma me estaba matando. La gente no entiende que nuestro separador decimal es la coma y que los teclados son americanos, por eso es que traen el punto en el teclado numerico. Pues como sea, desde ya muchas gracias y ahora mis usuarios no se van a poder quejar por el punto del num pad. saludos!
Gracias!!!
Hola elDitoVecco la variable lacoma como la dimensionas?? y que es lo que captura
Mil gracias por tu respusta
hola kajajajiak
no sirven mm mason elisabet
checa tu configurcion regional en el panel de cntrol
Gracias por el aporte, me sirvio de mucho...
en viual 6.0 el true dbinput 5.0 te soluciona poner tanto codigo
en visual .net existe el component one pero esta 1200 US$ tambien con true dbinput 8.0 pro
¿ Esto existe hace 10 años pero viene aparte del visual .net xq microsoft no ponen en sus controles
e true db input y te ahorran tanto dolor de cabaze ? o existe algo de no le permita realizar estos arreglos
Tambien puedes agregar un <asp:Rangevalidator> o un <asp:Customvalidator> y mediante una expresion regular puedes evitar que se ingresen comas o puntos en el campo, ademas de texto y lo que se le ocurra al usuario.
Por ejemplo con la expresion \d\d/\d\d/\d\d\d\d verificas que una fecha se ingrese en el formato dia/mes/año
Me sirvio!!!!! Gracias por tu colaboración
Me sirvió mucho....Gracias
Muchas gracias me funciono aunque retoque algunas cosas, Muchas Gracias!!!!
Genial!! me solucionó mi problema. Gracias!