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