La conversión de la cadena "" a tipo 'Double' no es válida.
Resuelto
kikou93
Mensajes publicados
438
Estado
Miembro
-
kikou93 Mensajes publicados 438 Estado Miembro -
kikou93 Mensajes publicados 438 Estado Miembro -
Hola,
hace tiempo que no hago preguntas (estuve muy ocupada con mis estudios)
uso Visual Basic Express 2010
les explico mi problema y espero que alguien pueda ayudarme
tengo, por ejemplo, la siguiente condición:
If TextBox1.Text > 0 Then
.....
End if
pero muestra el siguiente error:
La conversión de la cadena "" a tipo 'Double' no es válida
intenté con:
If CInt(TextBox.Text) > 0
If Val(TextBox.Text) > 0
funciona, no aparece ningún error
pero el problema es que si TextBox1.Text = 0,009 el valor que se tiene en cuenta es 0 y no 0,009
normalmente la condición se verifica
también probé con:
If CDbl(TextBox.Text) > 0
pero aparece el mismo error (La conversión de la cadena "" a tipo 'Double' no es válida)
por favor ayúdenme y gracias de antemano por su ayuda
--
¡Cómo funciona es genial!
¡1000 gracias amigos!
hace tiempo que no hago preguntas (estuve muy ocupada con mis estudios)
uso Visual Basic Express 2010
les explico mi problema y espero que alguien pueda ayudarme
tengo, por ejemplo, la siguiente condición:
If TextBox1.Text > 0 Then
.....
End if
pero muestra el siguiente error:
La conversión de la cadena "" a tipo 'Double' no es válida
intenté con:
If CInt(TextBox.Text) > 0
If Val(TextBox.Text) > 0
funciona, no aparece ningún error
pero el problema es que si TextBox1.Text = 0,009 el valor que se tiene en cuenta es 0 y no 0,009
normalmente la condición se verifica
también probé con:
If CDbl(TextBox.Text) > 0
pero aparece el mismo error (La conversión de la cadena "" a tipo 'Double' no es válida)
por favor ayúdenme y gracias de antemano por su ayuda
--
¡Cómo funciona es genial!
¡1000 gracias amigos!
3 respuestas
Buenas noches,
Si tu PIC está configurado para que el punto sea el símbolo decimal, entonces 0,009 no es un número, 0.009 sí lo es.
En lugar de Cquelquechose, utiliza la clase Convert, podrás elegir cuál es el modelo de número a utilizar.
--
Cuando era pequeño, el Mar Muerto sólo estaba enfermo.
George Burns
Si tu PIC está configurado para que el punto sea el símbolo decimal, entonces 0,009 no es un número, 0.009 sí lo es.
En lugar de Cquelquechose, utiliza la clase Convert, podrás elegir cuál es el modelo de número a utilizar.
--
Cuando era pequeño, el Mar Muerto sólo estaba enfermo.
George Burns
Y además de los consejos de NHenry (hola) no uses acentos, ni otro modificador de letra en los nombres de variables o funciones.
Si debes abrir tu proyecto en una computadora en inglés, se va a romper en todas partes.
te he mostrado el camino, no la solución exacta para tu caso.
Podrías escribir una función que llamarías para cada TextBox, también puedes hacer un método de extensión.
Pero si aplicas exactamente este código, "0.009" no sería aceptado
Tendría esto
Lo que permitiría aceptar "0,009" o "0.009", pero un gran número con separación de miles americana "1,000,000.001" no funcionaría.
Hay un momento en que tendrás que fijar el formato de entrada utilizando la validación por ejemplo
--
Cuando era pequeño, el mar Muerto solo estaba enfermo.
George Burns
Si debes abrir tu proyecto en una computadora en inglés, se va a romper en todas partes.
no sé si este método funciona pero no me facilita el trabajo porque la condición que tengo contiene muchas textBox
te he mostrado el camino, no la solución exacta para tu caso.
Podrías escribir una función que llamarías para cada TextBox, también puedes hacer un método de extensión.
Pero si aplicas exactamente este código, "0.009" no sería aceptado
Tendría esto
Dim texte as String = "0,009" Dim toto As Double = Convert.ToDouble(texte.Replace(",","."), CultureInfo.GetCultureInfo("fr-FR")) Lo que permitiría aceptar "0,009" o "0.009", pero un gran número con separación de miles americana "1,000,000.001" no funcionaría.
Hay un momento en que tendrás que fijar el formato de entrada utilizando la validación por ejemplo
--
Cuando era pequeño, el mar Muerto solo estaba enfermo.
George Burns
¿Entonces con "0.009" pasa o no?
Con .NET, hay un double.Parse que permite aceptar otras culturas que la del sistema para los decimales.
--
Intervengo principalmente en VB6 y VB.NET, con un poco de C#, pero la moderación me lleva a menudo a otros lenguajes.
En VB.NET, recuerden activar "Option Explicit" y "Option Strict".
Con .NET, hay un double.Parse que permite aceptar otras culturas que la del sistema para los decimales.
--
Intervengo principalmente en VB6 y VB.NET, con un poco de C#, pero la moderación me lleva a menudo a otros lenguajes.
En VB.NET, recuerden activar "Option Explicit" y "Option Strict".
Dim toto As Double = Convert.ToDouble("0,009", CultureInfo.GetCultureInfo("es-ES"))he configurado el textBox de la siguiente manera:
Dim desNúmero() As Char = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If Not desNúmero.Contains(e.KeyChar) And Not Asc(e.KeyChar) = 8 Then
e.Handled = True
End If
If e.KeyChar = "."c Or e.KeyChar = ","c Then
e.Handled = True
If Not (TextBox1.Text.Contains(",")) Then TextBox1.AppendText(",")
End If
End Sub
para que el textBox acepte solo los números (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) y la coma
entonces el símbolo decimal es la coma y no el punto
incluso si pulso la tecla del punto, en el textBox se muestra la coma
Dim toto As Double = Convert.ToDouble("0,009", CultureInfo.GetCultureInfo("es-ES"))no sé si este método funciona, pero no me facilita el trabajo porque la condición que tengo contiene muchas textBox:
If textBox1.text >0 and textBox2.text>0 and textBox3.text>0 .... and textBox30.text>0 then
.........
End if
Además, elimina la importación automática del espacio de nombres "Microsoft.VisualBasic".
he decidido aplicar el método de Whismeril
gracias por dedicarme tu tiempo, muchas gracias