Editar Base de datos Access desde Datagridview
Que tal programadores!! Bueno amigos hice esta nueva entrada gracias a una pregunta de uno de compañeros programadores que han seguido una de mis entregas. Bueno en esta vez vamos a editar los datos desde una grid y cuya consecuencia debe modificarse la base de datos. Si nos ponemos a ver las cosas no son diciles y para los que ya vieron mi entrada de Guardar datagrid en Base de datos Access mejor aún. Bueno tomado como base aquella entrada he preparado un pequeño ejemplo del tema: Miren la captura del programa:
Si citamos los controles mostrados( ademas se citó el control "OpenFileDialog ") podemos elaborar el programa. Sin mas que alargar les dejo el codigo
De caracter publico:
Public Class Form1
Dim connex As New ConectarBD
......End Class
Con el boton cargar:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
With OpenFileDialog1
.Title = "Seleccionar base de datos"
.Filter = "Bases de Access (*.mdb)|*.mdb"
If .ShowDialog = DialogResult.OK Then
txtbaseDir.Text = .FileName
End If
End With
txtbaseDir.Text = GetSetting("SITLAZ_3", Me.Name, txtbaseDir.Name, Text)
' cmdconect_Click(AcceptButton, AcceptButton)
Dim tab As String = "SELECT * FROM Tden ORDER BY Brix"
connex.Conectar(txtbaseDir.Text, tab)
' tabla = connex.dt
DataGridView1.DataSource = connex.dt
Catch ex As Exception
MessageBox.Show("ERROR al conectar o recuperar los datos:" & vbCrLf & _
ex.Message, "Conectar con la base", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
En el boton Actualizar:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
connex.da.Update(connex.dt)
End Sub
La clase ConectarBD:
Imports System.Data
Imports System.Data.OleDb
Public Class ConectarBD
Public dt As DataTable
Public da As OleDbDataAdapter
Public fila As Integer
Public ds As New DataSet
Public Function Conectar(ByVal dirPath As String, ByVal tabla As String) As String
Dim sCnn As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & dirPath
' La cadena de selección
Dim sSel As String = tabla
' Comprobar si hay algún error
Try
' Crear un nuevo objeto del tipo DataAdapter
da = New OleDbDataAdapter(sSel, sCnn)
' Crear los comandos de insertar, actualizar y eliminar
Dim cb As New OleDbCommandBuilder(da)
' Como hay campos con caracteres especiales,
' al usarlos incluirlos entre corchetes.
cb.QuotePrefix = "["
cb.QuoteSuffix = "]"
' Asignar los comandos al DataAdapter
' (se supone que lo hace automáticamente, pero...)
' da.UpdateCommand = cb.GetUpdateCommand
da.InsertCommand = cb.GetInsertCommand
' da.DeleteCommand = cb.GetDeleteCommand
' Esta base de datos usa el ID con valores automáticos
' da.MissingSchemaAction = MissingSchemaAction.AddWithKey
dt = New DataTable
' Llenar la tabla con los datos indicados
da.Fill(dt)
Catch ex As Exception
MessageBox.Show("ERROR al conectar o recuperar los datos:" & vbCrLf & _
ex.Message, "Conectar con la base", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Return Conectar
End Function
End Class
Si ejecutamos la aplicación:
Se puede elegir la base de datos access cualquiera, una vez cargada la bd y haciendo click en la grid podemos modificar directamente y luego click al boton actualizar.Para estar seguros si se ha hecho la actualizacion cerremos la aplicacion y volvamos abrirla y constatemos los valores cambiados..Tu lo puedes hacer como una ventana nueva para modificar , la creatividad esta en ti, intentalo y si no sales me escriben para ayudarles..cuidense y nos vemos!
MI link:https://docs.google.com/open?id=0B-UGWA03tc5ZV2Jud0NrQ09jQmM
Si citamos los controles mostrados( ademas se citó el control "OpenFileDialog ") podemos elaborar el programa. Sin mas que alargar les dejo el codigo
De caracter publico:
Public Class Form1
Dim connex As New ConectarBD
......End Class
Con el boton cargar:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
With OpenFileDialog1
.Title = "Seleccionar base de datos"
.Filter = "Bases de Access (*.mdb)|*.mdb"
If .ShowDialog = DialogResult.OK Then
txtbaseDir.Text = .FileName
End If
End With
txtbaseDir.Text = GetSetting("SITLAZ_3", Me.Name, txtbaseDir.Name, Text)
' cmdconect_Click(AcceptButton, AcceptButton)
Dim tab As String = "SELECT * FROM Tden ORDER BY Brix"
connex.Conectar(txtbaseDir.Text, tab)
' tabla = connex.dt
DataGridView1.DataSource = connex.dt
Catch ex As Exception
MessageBox.Show("ERROR al conectar o recuperar los datos:" & vbCrLf & _
ex.Message, "Conectar con la base", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
En el boton Actualizar:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
connex.da.Update(connex.dt)
End Sub
La clase ConectarBD:
Imports System.Data
Imports System.Data.OleDb
Public Class ConectarBD
Public dt As DataTable
Public da As OleDbDataAdapter
Public fila As Integer
Public ds As New DataSet
Public Function Conectar(ByVal dirPath As String, ByVal tabla As String) As String
Dim sCnn As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & dirPath
' La cadena de selección
Dim sSel As String = tabla
' Comprobar si hay algún error
Try
' Crear un nuevo objeto del tipo DataAdapter
da = New OleDbDataAdapter(sSel, sCnn)
' Crear los comandos de insertar, actualizar y eliminar
Dim cb As New OleDbCommandBuilder(da)
' Como hay campos con caracteres especiales,
' al usarlos incluirlos entre corchetes.
cb.QuotePrefix = "["
cb.QuoteSuffix = "]"
' Asignar los comandos al DataAdapter
' (se supone que lo hace automáticamente, pero...)
' da.UpdateCommand = cb.GetUpdateCommand
da.InsertCommand = cb.GetInsertCommand
' da.DeleteCommand = cb.GetDeleteCommand
' Esta base de datos usa el ID con valores automáticos
' da.MissingSchemaAction = MissingSchemaAction.AddWithKey
dt = New DataTable
' Llenar la tabla con los datos indicados
da.Fill(dt)
Catch ex As Exception
MessageBox.Show("ERROR al conectar o recuperar los datos:" & vbCrLf & _
ex.Message, "Conectar con la base", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Return Conectar
End Function
End Class
Si ejecutamos la aplicación:
Se puede elegir la base de datos access cualquiera, una vez cargada la bd y haciendo click en la grid podemos modificar directamente y luego click al boton actualizar.Para estar seguros si se ha hecho la actualizacion cerremos la aplicacion y volvamos abrirla y constatemos los valores cambiados..Tu lo puedes hacer como una ventana nueva para modificar , la creatividad esta en ti, intentalo y si no sales me escriben para ayudarles..cuidense y nos vemos!
MI link:https://docs.google.com/open?id=0B-UGWA03tc5ZV2Jud0NrQ09jQmM
Hola... soy un novato en vb.net y me han encomendado algunas tareas, entre ellas está el poder "controlar" información de un archivo acces a través de un datagridview, y justamente eso es lo que tu explicas, pero no se si me falta información, experiencia u otra cosa yno me funciona. ¿Podrias enviarme el proyecto a betamic@gmail.com ? desde ya muchas gracias.
ResponderEliminartxtbaseDir.Text = GetSetting("SITLAZ_3", Me.Name, txtbaseDir.Name, Text)
ResponderEliminaruna pregunta el sutlaz_3
de que se refiere ..?
hola que tal, primeramente gracias por visitar mi blog, toda esa linea de codigo que citas, es para grabar en memoria la ruta y una vez que la agregas la recuerda y no necesitas seguirla agregando, la database se inicias desde la ruta que se haya grabado en la caja de texto automaticamente. La palabra "SITLAZ_3" es particular al proyecto en mi caso es el nombre de mi aplicacion, en tu caso el nombre de la tuya, eso es todo si tienes alguna duda mejor hazlo a mi correo y te respondere oportunamente jossm04@gmail.com
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminar