none
Format Exception Especificador de formato no válido. RRS feed

  • Pregunta

  • Hola

    Tengo cuatro TextBox en el cual en uno pongo una cadena y en los otros pongo numeros de tipo Short al momento de limpiar los TextBox String.Empty esta me los borra pero al momento de querer llenarlos de nuevo me manda el mensaje de error. Format Exception: "Especificador de formato no válido." Y no me permite guardar los cambios en mi tabla utilizo una conexion a sql desde VB Todo esto en mi tabla ProductosBindingSource.

    Que puedo hacer para solucionar este probloema.

    Saludos.

    sábado, 31 de octubre de 2009 20:59

Respuestas

  • >  al momento de querer llenarlos de nuevo me manda el mensaje de error.
    Format Exception: "Especificador de formato no válido."

    Creo que la descripción de la excepción te está indicando el motivo. Seguramente estás utilizando la función String.Format con un especificador de formato que no es válido, tal y como reproduce el siguiente ejemplo:


            Dim numero As Short = 2938
    
            TextBox1.Text = String.Format("{0:K2}", numero)
    

    Como el especificador de formato K no está soportado, se obtiene la excepción "Especificador de formato no válido". Pero si en lugar de la K utilizamos la N, u otro especificador válido, verás como ya no hay problemas:


            Dim numero As Short = 2938
    
            TextBox1.Text = String.Format("{0:N2}", numero)
    

    Enrique Martínez [MS MVP - VB]
    domingo, 1 de noviembre de 2009 6:34
    Moderador

Todas las respuestas

  • hola

    este error se produce mientras cargas los controles, o sea cuando vas tipeando datoa en esto y vas pasando de uno a otro?

    o cuando despues de cardos presionas algun boton de guardar, y ejecuta la consulta contra la db?


    lo pregunto porque no me quedo claro si se podrá deber a algún evento de validación, o específicamente a la operación de actualziacion de la db

    podrías postrar algo del código en donde se produce el fallo ?

    saludos

    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 1 de noviembre de 2009 0:20
  • >  al momento de querer llenarlos de nuevo me manda el mensaje de error.
    Format Exception: "Especificador de formato no válido."

    Creo que la descripción de la excepción te está indicando el motivo. Seguramente estás utilizando la función String.Format con un especificador de formato que no es válido, tal y como reproduce el siguiente ejemplo:


            Dim numero As Short = 2938
    
            TextBox1.Text = String.Format("{0:K2}", numero)
    

    Como el especificador de formato K no está soportado, se obtiene la excepción "Especificador de formato no válido". Pero si en lugar de la K utilizamos la N, u otro especificador válido, verás como ya no hay problemas:


            Dim numero As Short = 2938
    
            TextBox1.Text = String.Format("{0:N2}", numero)
    

    Enrique Martínez [MS MVP - VB]
    domingo, 1 de noviembre de 2009 6:34
    Moderador
  • Hola a Todos

    Leandro recuerdas un post que hice de un CheckBox que si se deshabilitaba me tenía que borrar los datos de unos TextBox dentro de unos GroupBox. Bueno pues me los borra pero al momento de querer llenarlos me manda la excepción que menciono Format Exception: "Especificador de formato no válido.". Y además de que me dice también que No se puede realizar la operación '=' en System.Double y System.String. Y es en el texbox que debo ingresar las unidades para que realice la operacion precio / unidades para mostrarlo en otro textBox. te muestro el código donde me aparece el error:

    Private Sub txt_prcof_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_prcof.TextChanged
    If Not txt_prcof.Text = String.Empty Then
    'Tipo de GANANCIA para precio fraccionado.
    '
    Dim sql2 As String = String.Format("SELECT * FROM GANANCIA")
    Dim cnn2 As SqlClient.SqlConnection
    cnn2 = GANANCIATableAdapter.Connection
    Dim da2 As New SqlClient.SqlDataAdapter(sql2, cnn2)
    Dim dt2 As New DataTable("GANANCIA")
    da2.Fill(dt2)
    Dim query2 As String = String.Format("TIP_GAN='{0}'", txt_prfr.Text)
    Dim row2() As DataRow = dt2.Select(query2) 'Porcentajes
    ' Dim pp1 As Integer = CInt(row2(0).Item("GAN_MEN"))
    Dim pp2 As Integer = CInt(row2(0).Item("GAN_MMA"))
    Dim pp3 As Integer = CInt(row2(0).Item("GAN_MAY"))
    'Precio
    '
    Dim precio2 As Single = CSng(String.Format("{0:D2}", txt_prcof.Text))

    'Limpiamos el control ListView
    '
    lstvw_prfr.Items.Clear()

    'Llenado del ListView
    '
    Dim lstitem2 As New ListViewItem
    'Menudeo para precio fraccionado.
    '
    Dim resultado2 As Double = CDbl((precio2 * pp1) / 100 + precio2)
    Dim cniva2 As Double = CDbl((resultado2 * 15) / 100 + resultado2)
    lstitem2 = lstvw_prfr.Items.Add(("Menudeo").ToString, 0)
    lstitem2.SubItems.Add(pp1)
    lstitem2.SubItems.Add(String.Format("{0:C2}", cniva2))
    'Medio Mayoreo para precio fraccionado.
    '
    resultado2 = CDbl((precio2 * pp2) / 100 + precio2)
    cniva2 = CDbl((resultado2 * 15) / 100 + resultado2)
    lstitem2 = lstvw_prfr.Items.Add(("Medio Mayoreo").ToString, 1)
    lstitem2.SubItems.Add(pp2)
    lstitem2.SubItems.Add(String.Format("{0:C2}", cniva2))
    'Mayoreo para precio fraccionado.
    '
    resultado2 = CDbl((precio2 * pp3) / 100 + precio2)
    cniva2 = CDbl((resultado2 * 15) / 100 + resultado2)
    lstitem2 = lstvw_prfr.Items.Add(("Mayoreo").ToString, 2)
    lstitem2.SubItems.Add(pp3)
    lstitem2.SubItems.Add(String.Format("{0:C2}", cniva2))
    End If
    End Sub

    No sé si tenga que ver el tipo de datos que utilizo. Además de esto no me guarda los cambios que realizo. Lo explico mejor en el post anterior "No guarda los datos en mi tabla".

    Espero me puedas ayudar.

    Saludos

    martes, 3 de noviembre de 2009 17:08