none
Error con campos vacios en DataGrid RRS feed

  • Pregunta

  • Hola, tengo un DataGridView con campos cargados, algunos no están cargados ya que en la BD permito poner valores nulos, pero al seleccionar algún dato de alguna tupla con aunque sea un solo dato vacío me salta error de que la conversión del tipo 'DBNull' en el tipo String no es válida.

    Así tengo configurado el DataGridView

    Private Sub DataGridView1_Click(sender As Object, e As System.EventArgs) Handles DataGridView1.Click
            txtDNI.Text = CInt(DataGridView1.Item(0, DataGridView1.CurrentRow.Index).Value)
            txtApellido.Text = CStr(DataGridView1.Item(1, DataGridView1.CurrentRow.Index).Value)
            txtNombre.Text = CStr(DataGridView1.Item(2, DataGridView1.CurrentRow.Index).Value)
            txtDomicilio.Text = CStr(DataGridView1.Item(3, DataGridView1.CurrentRow.Index).Value)
            txtTelefono.Text = CInt(DataGridView1.Item(4, DataGridView1.CurrentRow.Index).Value)
            TxtTelefonoAlt.Text = CInt(DataGridView1.Item(5, DataGridView1.CurrentRow.Index).Value)
        End Sub

    PD: Al seleccionar algún campo que tenga alguna celda vacía me salta ese error, quisiera saber como solucionarlo. gracias.

    jueves, 13 de junio de 2013 14:02

Respuestas

  • pero al seleccionar algún dato de alguna tupla con aunque sea un solo dato vacío me salta error de que la conversión del tipo 'DBNull' en el tipo String no es válida.

    es que debes validarlo

    Dim val5 As Object = DataGridView1.Item(5, DataGridView1.CurrentRow.Index).Value

    If val5 IsNot DBNull.Value Then

       TxtTelefonoAlt.Text = CInt(val5)

    End If

    como veras validas que no sea nulo


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 13 de junio de 2013 14:11

Todas las respuestas

  • pero al seleccionar algún dato de alguna tupla con aunque sea un solo dato vacío me salta error de que la conversión del tipo 'DBNull' en el tipo String no es válida.

    es que debes validarlo

    Dim val5 As Object = DataGridView1.Item(5, DataGridView1.CurrentRow.Index).Value

    If val5 IsNot DBNull.Value Then

       TxtTelefonoAlt.Text = CInt(val5)

    End If

    como veras validas que no sea nulo


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 13 de junio de 2013 14:11
  • Gracias! funciono exelente.. Ahora las puedo seleccionar sin problema, pero al querer borrarlas me sale esto "La conversión de la cadena "" en el tipo 'Integer' no es válida."

    tengo configurado el Borrar y la funcion moverdatos de esta forma.

    Private Sub btnBorrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBorrar.Click

            Dim resp As Integer
            resp = MessageBox.Show("Confirma la Eliminación...", "Borrar", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
            If resp = vbYes Then
                moverDatos()
                al.borrarCliente(al)
                ds = al.CargaGrilla()
                DataGridView1.DataSource = ""
                DataGridView1.DataSource = ds.Tables(0)
                limpiar()
            End If
        End Sub

    Public Sub moverDatos()
            al.DNI = txtDNI.Text
            al.Apellido = txtApellido.Text
            al.Nombre = txtNombre.Text
            al.Domicilio = txtDomicilio.Text
            al.Telefono = txtTelefono.Text
            al.TelefonoAlt = TxtTelefonoAlt.Text
        End Sub

    El error me sale en moverdatos, está bien declarado su tipo de datos en la DB.

    OBviamente el error es porque el campo está vacío, intenté validarlo pero no creo qe sea la forma correcta de hacerlo además de que no me funciona.


    • Editado b0nete jueves, 13 de junio de 2013 14:44
    jueves, 13 de junio de 2013 14:40