none
COMO ELIMINAR UNA FILA DEL DATAGRIDVIEW Y LA BASE DE DATOS ACCES.mdb

    Pregunta

  • Buenos dias un cordial saludo, mi pregunta es cómo puedo eliminar una fila seleccionada del "datagridview" y tambien de la base de datos el codigo que utilizo solo borra la fila seleccionada del "datagridview" pero no me borra la fila que ya borre de la base de datos... este es el código..

    datagridview = PLANOSBELMESAGREGARDataGridView

    PLANOSBELMESAGREGARDataGridView.Rows.Remove(PLANOSBELMESAGREGARDataGridView.CurrentRow)

    de antemano muchas gracias, linda mañana

     
    lunes, 20 de febrero de 2017 15:45

Respuestas

  • Hola Christian Medellin,

    Lo que estás haciendo es eliminar la fila del DataGridView (solo la eliminas del control) pero no ejecutas ninguna consulta a la BD como 'Delete from ...'.

    Suponiendo que tengas el 'ID' del registro a eliminar en la columna 'Codigo'

    Private Sub btnEliminar_Click(sender As Object, e As EventArgs) Handles btnEliminar.Click
        'Verificamos si selecciono una fila
        If PLANOSBELMESAGREGARDataGridView.CurrentRow Is Nothing Then
            MessageBox.Show("Seleccione una fila")
            Exit Sub 'Salimos
        End If
    
    
        'Opcional, preguntar si realmente deseamos eliminas
        Dim result = MessageBox.Show("Está seguro de eliminar el registro seleccionado ?",
                        "Confirmación de Eliminación", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    
        'Si presiona 'SI'
        If result = DialogResult.Yes Then
    
            'Hay una fila seleccionada, obtenemos el ID de la fila, (en este caso es int)
            Dim id As Integer = CInt(PLANOSBELMESAGREGARDataGridView.CurrentRow.Cells("Codigo").Value)
    
            'Envias el id del registro a eliminar
            eliminarRegistro(id)
        End If
    
    End Sub

    Y el método 'eliminarRegistro' el cuál realizará el proceso de eliminación.

    Private Sub eliminarRegistro(ByVal idAEliminar As Integer)
        Try
            Using con As New OleDbConnection("MiCadenaConexion")
    
                con.Open()
    
                Dim query = "Delete from miTabla where id = ?"
    
                Dim cmd As New OleDbCommand(query, con)
                cmd.Parameters.AddWithValue("id", idAEliminar)
    
                'Ejecutamos la consulta
                cmd.ExecuteNonQuery()
    
                'Volvemos a cargar el DGV, para mostrar la data actualizada
                cargarDatos()
    
                'Mensaje opcional de confirmación
                MessageBox.Show("El registro fue eliminado")
    
            End Using
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    El método 'cargarDatos' es el que usas para cargar el DataGridView, tienes que volver a ejecutar el 'Select * from miTabla' y volver a enlazar los datos al DataSource.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    lunes, 20 de febrero de 2017 16:20
  • gracias por la ayuda me sirvio correctamente
    lunes, 20 de febrero de 2017 16:32

Todas las respuestas

  • Hola Christian Medellin,

    Lo que estás haciendo es eliminar la fila del DataGridView (solo la eliminas del control) pero no ejecutas ninguna consulta a la BD como 'Delete from ...'.

    Suponiendo que tengas el 'ID' del registro a eliminar en la columna 'Codigo'

    Private Sub btnEliminar_Click(sender As Object, e As EventArgs) Handles btnEliminar.Click
        'Verificamos si selecciono una fila
        If PLANOSBELMESAGREGARDataGridView.CurrentRow Is Nothing Then
            MessageBox.Show("Seleccione una fila")
            Exit Sub 'Salimos
        End If
    
    
        'Opcional, preguntar si realmente deseamos eliminas
        Dim result = MessageBox.Show("Está seguro de eliminar el registro seleccionado ?",
                        "Confirmación de Eliminación", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    
        'Si presiona 'SI'
        If result = DialogResult.Yes Then
    
            'Hay una fila seleccionada, obtenemos el ID de la fila, (en este caso es int)
            Dim id As Integer = CInt(PLANOSBELMESAGREGARDataGridView.CurrentRow.Cells("Codigo").Value)
    
            'Envias el id del registro a eliminar
            eliminarRegistro(id)
        End If
    
    End Sub

    Y el método 'eliminarRegistro' el cuál realizará el proceso de eliminación.

    Private Sub eliminarRegistro(ByVal idAEliminar As Integer)
        Try
            Using con As New OleDbConnection("MiCadenaConexion")
    
                con.Open()
    
                Dim query = "Delete from miTabla where id = ?"
    
                Dim cmd As New OleDbCommand(query, con)
                cmd.Parameters.AddWithValue("id", idAEliminar)
    
                'Ejecutamos la consulta
                cmd.ExecuteNonQuery()
    
                'Volvemos a cargar el DGV, para mostrar la data actualizada
                cargarDatos()
    
                'Mensaje opcional de confirmación
                MessageBox.Show("El registro fue eliminado")
    
            End Using
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    El método 'cargarDatos' es el que usas para cargar el DataGridView, tienes que volver a ejecutar el 'Select * from miTabla' y volver a enlazar los datos al DataSource.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    lunes, 20 de febrero de 2017 16:20
  • gracias por la ayuda me sirvio correctamente
    lunes, 20 de febrero de 2017 16:32