Kioskea
Recherche
Haz una pregunta Denunciar

Problemas con punto decimal en vb.net t mysql

chechu - Última respuesta el 21 jul 2014, 14:09
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..
Seguir leyendo 
Respuesta
+27
moins plus
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
PRS- 19 ago 2013, 11:13
una maravilla...gracias
Responder
lulu- 26 abr 2014, 09:30
muy interesante, voy a probarlo amigo!
Responder
elroot- 16 jun 2014, 02:28
tambien quiero un hijo gracias men
Responder
Jesus Fernandez- 18 jul 2014, 21:40
Muchas gracias amigo tengo este mismo problema, vere si me funciona en mi caso.
Responder
Jesus Fernandez- 21 jul 2014, 14:09
Si funcionó tal como lo quería, muchas gracias compañero!!
Responder
Deja tu comentario
Respuesta
+16
moins plus
yo tengo el mismo problema, no se si ya tienes una solucion para que la compartas, te lo agradeceria mucho!!


http://www.freeprescriptiondrugstore.com
Deja tu comentario
Respuesta
+15
moins plus
tengo el mismo problema ayudaaaaaaaaaaaaaaaaaaaaa
Deja tu comentario
Respuesta
+12
moins plus
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.
Alejandra M- 21 abr 2010, 21:22
AMIGO MUCHISIMAS GRACIAS...
AHORA ME FUNCIONA PERFECTO
GRACIAS MUCHAS GRACIAS
Responder
vanessa- 2 dic 2010, 23:46
ai del navo
Responder
la bella- 22 sep 2011, 18:23
se me dificulta mucho bueno no le endiendo
Responder
Deja tu comentario
Respuesta
+9
moins plus
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.
Wunder- 24 mar 2011, 04:03
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!!!
Responder
Fernandots- 6 abr 2011, 23:25
Hola elDitoVecco la variable lacoma como la dimensionas?? y que es lo que captura
Mil gracias por tu respusta
Responder
ana- 24 abr 2012, 00:24
hola kajajajiak
Responder
mmmm- 27 may 2012, 22:42
no sirven mm mason elisabet
Responder
Deja tu comentario
Respuesta
+7
moins plus
checa tu configurcion regional en el panel de cntrol
Deja tu comentario
Respuesta
+3
moins plus
Gracias por el aporte, me sirvio de mucho...
Deja tu comentario
Respuesta
+1
moins plus
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
Deja tu comentario
Respuesta
+1
moins plus
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
Deja tu comentario
Respuesta
+0
moins plus
Me sirvio!!!!! Gracias por tu colaboración
Deja tu comentario
Respuesta
+0
moins plus
Me sirvió mucho....Gracias
Deja tu comentario
Este documento intitulado « problemas con punto decimal en vb.net t mysql » de Kioskea (es.kioskea.net) esta puesto a diposición bajo la licencia Creative Commons. Puede copiar, modificar bajo las condiciones puestas por la licencia, siempre que esta nota sea visible.

¿Todavía no eres usuario?

inscríbete, gratuitamente y en menos de un minuto!

Los miembros obtienen más respuestas que los usuarios anónimos.

Ser miembro te permite llevar un seguimiento detallado de tus consultas.

Ser miembro te permite gozar de otras opciones adicionales.