La situación es la siguiente: Tengo un DataGrid (puede
ser cualquier control) mostrando las filas de una Tabla
de una base de datos realizada en Access 2000 con el
motor Microsoft Jet. Lo que deseo hacer es: Agregar y
eliminar todas las filas que quiera (poder eliminarlas
aunque las acabe de agregar y no haya llamado a
AceptChanges) y al final, tener la opción de aceptar o
rechazar los cambios realizados en el origen de datos.
Hasta ahora, para casi lograrlo tengo que actualizar el
origen de datos cada vez que agrego o elimino una fila,
pero yo quiero poder hacerlo "de a muchas filas a la
vez". Este es el código que utilizo, ¿Alguien puede
decirme que está mal?
Lo más que sé del problema es esto: He monitoreado el
estado de las filas y me encuentro que, si tengo por
ejemplo 5 filas y borro la fila tres, lógicamente la fila
cuatro que tenía el estado "Sin cambios", se vuelve la
fila tres, pero cambia su estado a "eliminado" ¿Porqué?
Imports System.Data.OleDb
Imports System.Windows.Forms
Public Class Form1
Inherits System.Windows.Forms.Form
Private Conexion As OleDbConnection
Private Adaptador As OleDbDataAdapter
Private Base As DataSet
Private Sub Form1_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
Try
Dim i As Integer
Conexion = New OleDbConnection
Conexion.ConnectionString
= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=
C:\Basededatos.mdb;"
Base = New DataSet
Base.Clear()
Dim Constructor As OleDbCommandBuilder
Conexion.Open()
Adaptador = New OleDbDataAdapter("SELECT*FROM
tabla1", Conexion)
Constructor = New OleDbCommandBuilder
(Adaptador)
Adaptador.Fill(Base, "tabla1")
Conexion.Close()
Me.DataGrid1.DataSource = Base
Me.DataGrid1.DataMember = "tabla1"
Catch ex As Exception
MessageBox.Show(ex.ToString)
Exit Sub
End Try
End Sub
Private Sub Button1_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
Dim Fila As DataRow = Base.Tables
(0).NewRow
Base.Tables(0).Rows.Add(Fila)
End Sub
Private Sub Button2_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
Button2.Click
If Base.Tables(0).Rows.Count > 0 Then
Dim Fila As DataRow = Base.Tables(0).Rows
(Me.DataGrid1.CurrentCell.RowNumber)
Fila.Delete()
End If
End Sub
Private Sub Button3_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
Button3.Click
Try
Adaptador.Update(Base, "tabla1")
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
End Class
Leer las respuestas