none
Ayuda como puedo solucionar este problema? RRS feed

  • Pregunta

  • Tengo un formulario con un DataGridView conectado a la bd y elimino los datos seleccionando la fila que voy a borrar y doy click en el boton de eliminar

    El problema es si se selecciona la fila vacia del DataGridView y se trata de borrar produce un error

    Ahora como puedo evitar ese error?

    Gracias

    miércoles, 11 de agosto de 2010 23:42

Respuestas

  • hola

    algunos comentarios

    - no necesitas hacer eso

    Dim id As String  = DataGridView1.Item(0, DataGridView1.CurrentRow.Index).Value

    podrias usar

    Dim id As String  = CStr(DataGridView1.CurrentRow.Cells(0).Value)

    creo que se lee mejor

    pero antes usa el

    If DatagridView1.CurrentRow IsNot Nothing

    para detectar si hay una row seleccionada, sino falla cuando intentas tomar el valor de la celda

     

     

    - esta ultima parte

    If DataGridView1.SelectedCells.Count > 0 Then       

         Me.DataGridView1.Rows.Remove(DataGridView1.CurrentRow)    

    End If

     

    no es conveniente hacerla, ya que la grilla se encuantra enlazada a datos, y no te dejara remover items

    lo que podrias realziar es el bindeo de la grilla nuevamente

    o sea la cargar como ahs realizado antes con los datos, como en el paso anterior eliminaste el registro de la tabla en tu db, al recargar no aparecera

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 12 de agosto de 2010 4:14

Todas las respuestas

  • hola

    podria controlar que se este seleccionado una fila valida

    lastima que no has puesto un ejemplo de codigo de la forma en como estas seleccionado en el datagridview, o eliminando el resgistro

    pero podrias ser algo como esto

    Private Sub btnEliminar_Click(...)

      If DatagridView1.CurrentRow IsNot Nothing then  'asegura que se seleccione la fila

        'aqui eliminas

        Dim row As DataGridViewRow = DatagridView1.CurrentRow ' tomas la fial seleccionada

     

      End If

    End Sub

    esto es tan solo un ejemplo para tomar una fila valida que el usuario ha seleccionado

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 12 de agosto de 2010 2:20
  • En este momento elimino la fila seleccionada de la siguiente forma

    If

    MsgBox("¿Esta seguro que desea quitar este producto?", MsgBoxStyle.YesNo + MsgBoxStyle.Question, "") = MsgBoxResult.Yes Then

     

     

    cnx.Open()

     

    Dim sql As String

     

    Dim id As String

    id = DataGridView1.Item(0, DataGridView1.CurrentRow.Index).Value

     

    Dim infox As OdbcCommand

    sql =

    "delete from libros where id_libro = " & id

    infox =

    New OdbcCommand(sql, cnx)

    infox.ExecuteNonQuery()

    infox.Connection.Close()

     

    If DataGridView1.SelectedCells.Count > 0 Then

     

    Me.DataGridView1.Rows.Remove(DataGridView1.CurrentRow)

     

    End If

    MsgBox(

    "El producto se elimino correctamente", MsgBoxStyle.OkOnly + MsgBoxStyle.Information, "")

     

    End If

    Espero y puedas ayudarme

    jueves, 12 de agosto de 2010 4:09
  • hola

    algunos comentarios

    - no necesitas hacer eso

    Dim id As String  = DataGridView1.Item(0, DataGridView1.CurrentRow.Index).Value

    podrias usar

    Dim id As String  = CStr(DataGridView1.CurrentRow.Cells(0).Value)

    creo que se lee mejor

    pero antes usa el

    If DatagridView1.CurrentRow IsNot Nothing

    para detectar si hay una row seleccionada, sino falla cuando intentas tomar el valor de la celda

     

     

    - esta ultima parte

    If DataGridView1.SelectedCells.Count > 0 Then       

         Me.DataGridView1.Rows.Remove(DataGridView1.CurrentRow)    

    End If

     

    no es conveniente hacerla, ya que la grilla se encuantra enlazada a datos, y no te dejara remover items

    lo que podrias realziar es el bindeo de la grilla nuevamente

    o sea la cargar como ahs realizado antes con los datos, como en el paso anterior eliminaste el registro de la tabla en tu db, al recargar no aparecera

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 12 de agosto de 2010 4:14
  • Utilizo esta parte

    If DataGridView1.SelectedCells.Count > 0 Then       

         Me.DataGridView1.Rows.Remove(DataGridView1.CurrentRow)    

    End If

    ya que si no hay ninguna fila seleccionada y doy click en ese boton me mostrara un error asi como lo tengo funciona muy bien pero al tratar de borrar la fila vacia me muestra un error y no tengo idea de como solucionarlo

    jueves, 12 de agosto de 2010 4:20
  • Pero exactamente, ¿qué error obtienes y cuando se produce? ¿Al eliminar la fila en el control DataGridView o al ejecutar la consulta de eliminación en el origen de datos ODBC? ¿Qué tipo de base de datos estás utilizando? ¿Tienes el control DataGridView enlazado a un objeto DataTable?

     

     

     


    Enrique Martínez [MS MVP - VB]
    jueves, 12 de agosto de 2010 16:13
    Moderador