¿Cómo puedo hacer que un DataGridView esté conectado en tiempo real a una base de datos de Access almacenada localmente en VB.NET?
Me gustaría que cuando elimine/editar un registro de la datagridview, se elimine/edite automáticamente el archivo de la base de datos de acceso. Aquí hay un fragmento de mi código que carga la base de datos en la datagridview.
Public Function dbConnect() As Boolean
Try
cn = New OleDbConnection(DataBasePath)
cn.Open()
'MessageBox.Show("está funcionando")
Return True
Catch ex As Exception
MessageBox.Show("No se puede abrir la base de datos: " & ex.Message)
Return False
End Try
End Function
Private Function GetOrders() As DataTable
Dim dtOrders As New DataTable
dbConnect()
Dim SQLCMD As New OleDbCommand
SQLCMD.Connection = cn
SQLCMD.CommandText = "Select * From [OrdersTbl]"
dtOrders.Load(SQLCMD.ExecuteReader())
Return dtOrders
End Function
Private Sub EditOrdersForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
OrdersDataGrid.DataSource = GetOrders()
End Sub
¿Cómo puedo hacer para que los cambios se guarden en el archivo local?
davy.ai
Para eliminar/editar automáticamente el archivo de base de datos de acceso cuando se elimina/edita un registro de la datagridview, puedes usar el objeto OleDbDataAdapter para actualizar la base de datos después de realizar cambios en la datagridview. Así es cómo puedes modificar el fragmento de código para lograr esto:
Private Function GetOrders() As DataTable
Dim dtOrders As New DataTable
dbConnect()
Dim SQLCMD As New OleDbCommand
SQLCMD.Connection = cn
SQLCMD.CommandText = “Select * From [OrdersTbl]”
End Function
Agrega el siguiente código al evento cellValueChanged de tu datagridview:
Private Sub OrdersDataGrid_CellValueChanged(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles OrdersDataGrid.CellValueChanged
‘ obtener los cambios realizados en la datagridview
Dim changes As DataTable = CType(OrdersDataGrid.DataSource, DataTable).GetChanges()
End Sub
Con estas modificaciones, los cambios realizados en tu datagridview se guardarán automáticamente en el archivo de base de datos de acceso local.