• Viernes 8 de Noviembre de 2024, 14:35

Autor Tema:  Como Elimino un registro de BBDD a través de un ListView ?  (Leído 1326 veces)

elendil73

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Como Elimino un registro de BBDD a través de un ListView ?
« en: Domingo 2 de Noviembre de 2008, 14:04 »
0
Siguiendo como ejemplo el link :

ADONET/ejemploSQL.htm

en la web de el guille,

Me he dado cuenta de que el procedimiento para eliminar registro no me elimina el registro de la base de datos. En cambio el procedimiento de actualizar base de datos, si me graba cuando doy de alta un registro nuevo.


Private Sub btnActualizarBase_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnActualizarBase.Click
        ' Actualizar la base de datos con los cambios realizados
        Dim fila As Data.DataRow
        Dim i, j As Integer
        Dim lwItem As ListViewItem
        Dim columna As Data.DataColumn
        '
        lblInfo.Tag = lblInfo.Text
        lblInfo.Text = "Actualizando los datos..."
        lblInfo.Refresh()
        'Dim commandBuilder As New Data.OleDb.OleDbCommandBuilder(dbDataAdapter) 'comentado
        Try
            For i = 0 To ListViewDatos.Items.Count - 1
                'dbDataSet.Tables(NombreTabla).Rows.Count(-1) 'comentado
                'fila = dbDataSet.Tables(NombreTabla).Rows(i) 'comentado
                lwItem = ListViewDatos.Items(i)
                fila = CType(ListViewDatos.Items(i).Tag, Data.DataRow)
                fila.BeginEdit()
                j = 0
                For Each columna In dbDataSet.Tables(NombreTabla).Columns
                    If j = 0 Then
                        If columna.AutoIncrement = False Then
                            fila(j) = lwItem.Text
                        End If
                    Else
                        If columna.AutoIncrement = False Then
                            fila(columna.ColumnName) = lwItem.SubItems(j).Text
                        End If
                    End If
                    j += 1
                Next
                fila.EndEdit()
                'fila.AcceptChanges() 'comentado
            Next
            '
            dbDataAdapter.Update(dbDataSet, NombreTabla)
            dbDataSet.AcceptChanges()
            '
            lblInfo.Text = CStr(lblInfo.Tag)
            lblInfo.Text = "Se ha insertado correctamente el registro"
        Catch errActualizar As Exception
            lblInfo.Text = errActualizar.Message
            MsgBox(errActualizar.Message)
        End Try

    End Sub
Parece ser que el registro se elimina del dataSet, pero no de la base de datos Alguien me puede indicar que es lo que esta pasando ?, que me falta ?
Lo que esta comentado es código que he añadido para probar que es lo que me muestra el DELETE, pero lo que pasa es que lo borra de “Tabla1” o sea la tabla virtual del DataAdapter


Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminar.Click
        ' Eliminar la fila indicada
        Dim fila As Data.DataRow
        'Dim deleteCommand As OleDb.OleDbCommand = New OleDb.OleDbCommand
        '
        If MsgBox("Se va ha borrar el registro seleccionado. ¿Estas seguro de eliminarlo?", MsgBoxStyle.YesNo, "Borrar Registro") = MsgBoxResult.Yes Then
            '
            fila = CType(ListViewDatos.SelectedItems(0).Tag, Data.DataRow)
            dbDataSet.Tables(NombreTabla).Rows.Remove(fila)
            ListViewDatos.Items.Remove(ListViewDatos.SelectedItems(0))
            'dbDataAdapter.DeleteCommand = deleteCommand
            'deleteCommand.CommandText = "DELETE FROM " & frmGestionTablas.cboTablas.Text & " WHERE ARTICULO = " & dbDataSet.Tables(NombreTabla).Columns(0).ColumnName & ""
            dbDataAdapter.Update(dbDataSet, NombreTabla)
            dbDataSet.AcceptChanges()
            '
            lblInfo.Text = "Se ha eliminado un registro de la Tabla"
            '
        Else
            If MsgBox("Se va ha borrar el registro seleccionado. ¿Estas seguro de eliminarlo?", MsgBoxStyle.YesNo, "Borrar Registro") = MsgBoxResult.No Then
                Me.Focus()
            End If
        End If

End Sub