Acceso a Base de Datos con Microsoft AccessActualizar datos con un DataSet
Fecha: 12/Ago/2005 (10-08-05)
|
Actualizar datos modificados en un DataSet
Este articulo pretende explicar como hacer de una manera simple para actualizar una Base de Datos Access desde un DataSet. Para nuestro ejemplo usaremos un DataGrid que nos permitirá codificar los datos de una manera ágil.
Un modo rápido de guardar cambios
Para nuestro ejemplo en un Formulario agregaremos un DataGrid (DataGrid1) y un botón (Button1) que nos ayudará a ver claramente el procedimiento para guardar.
Nuestro DataSet no será tipado ya que es solo un ejemplo, pero se recomienda utilizar DataSets Tipados ya que agilizan mucho la programaciónDim Ds As Data.DataSetCrearemos un Procedimiento que llamé "Datos" que será el encargado de Llenar el DataSet y de Guardar los datos cuando sea necesario.
'Este procedimiento se conectará a la base de datos, guardará los datos y volverá 'a llenar el DataSet Private Sub Datos() Try 'Crea la conexión a la base de Access Dim Con As OleDbConnection = New OleDbConnection("Data Source=..\bd1.mdb;" & _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Mode=Share Deny None;User ID=Admin") 'Query a la tabla que se desea manejar Dim Query As String = "select * from tabla1 where Categoria='Bebidas'" 'Crea el Adaptador a la tabla seleccionada Dim Adap As OleDbDataAdapter = New OleDbDataAdapter(Query, Con) 'Crea automáticamente los comandos (Select, update, insert, delete) 'Si esta línea no estuviera, tendríamos que crear los comandos manualmente Dim Cmd As OleDbCommandBuilder = New OleDbCommandBuilder(Adap) 'Si ya existe la tabla actualiza los datos que tenía If Not Ds.Tables("Tabla1") Is Nothing Then 'Actualiza los datos en la base de datos Adap.Update(Ds, "Tabla1") 'Borra la información de la tabla para no duplicar los datos 'Esto no se verá reflejado en la Base de Datos 'NOTA: si hay relaciones referenciales, hay que actualizar 'tanto la tabla Parent como la Child Ds.Tables("Tabla1").Clear() End If 'Llena el DataSet con los datos de la base de datos 'Esto sirve en el caso que la base pueda tener varios usuarios 'simultáneos, si no es el caso, usar Update para guardar los 'cambios y Fill para llenar el DS Adap.Fill(Ds, "Tabla1") Catch ex As Exception MessageBox.Show(ex.Message) End Try End SubAl evento Click del Botón le agregaremos la llamada:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Guarda los nuevos valores del Dataset DS Datos() End SubY al evento Load de nuestro Formulario le agregaremos la llamada:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Llena el DataSet DS Datos() 'Crea el DataBinding para que el Data Grid Muestre 'los datos de la "Tabla1" del DataSet DS Me.DataGrid1.SetDataBinding(Ds, "Tabla1") End SubAdjunto les envio el proyecto que utilicé donde está la Base de Datos bd1.mdb (en Access 2003). Esta Base tiene una Tabla llamada "Tabla1" que tiene 4 campos: ID (autonumérico), Categoria (Texto 50), Producto (Texto 50) y Descripción (Texto 200)
Espacios de nombres usados en el código de este artículo:
System.Data
System.Data.OleDb
Fichero con el código de ejemplo: facund_AccesoBaseDeDatosAccess_VB.zip - Tamaño 33,56 KB