Inicio | Pedro Santana |  RSS  Mi tumblelog  Mis photos  Mi CV

 

Conectar a MS Access con VB.Net

Este post va dirigido principalmente a mis alumnos de Ingeniería en Software, pero puede ser útil a varios más.

Primero que nada, eso de MS Access se que no va ya con mi filosofía de herramientas a utilizar, pero muchas veces es necesario ya sea porque es la única herramienta que se conoce o bien es un requisito del cliente/maestro (esto último no es mi caso :P ).

Para realizar la conexión y las transacciones con la base de datos voy a utilizar una librería que se puede descargar conexionOleDb.dll y también la base de datos.

El motivo de utilizar esta librería es para agilizar las cosas y obviar detalles básicos de una conexión a BD (adaptador, conector, datatables, etc.)

La librería cuenta con los siguientes métodos y atributos:

clase

referencias El primer paso es crear nuestro proyecto y agregar la referencia a la librería,  esta referencia se agrega desde el "Explorador de Soluciones".

Una vez agregada la referencia podemos comenzar a programar.

Desde el editor de código le indicamos que vamos a utilizar nuestra librería:

vb.net [Show Plain Code]:
  1. Imports net.pecesama.db.OleDb

Nuestra clase UI va a necesitar de dos propiedades, una para tener el objeto de conexión y otra para tener el resultado de las consultas a la BD:

vb.net [Show Plain Code]:
  1. Dim con As conexionOleDb
  2. Dim dt As DataTable

A nuestra UI vamos a agregarle los siguientes elementos:

interfaz

El DataGridView se llama Data y deben asignar el siguiente valor en sus propiedades SelectionMode = FullRowSelect

Los TextBoxes se llaman txtUsuariotxtPass, txtNombre respectivamente.

El DataGidView lo vamos a utilizar SOLO para ver la información, no lo usaremos en su modo de edición, esto para ver como hacer la edición desde lenguaje SQL.

En el evento Form1_Load vamos a agregar el siguiente código:

vb.net [Show Plain Code]:
  1. Dim rutaBD As String = Application.StartupPath + "\bd.mdb"
  2. con = New conexionOleDb(rutaBD)
  3. If con.conectar Then
  4.         dt = con.ejecutaSql("SELECT * FROM usuarios")
  5.         data.DataSource = dt
  6. Else
  7.         MessageBox.Show("No se pudo conectar a la BD" + vbCrLf + vbCrLf + con.error, "Error al conectar", MessageBoxButtons.OK, MessageBoxIcon.Error)
  8. End If

Para probar la edición de registros, vamos a agregarle un evento click a nuestro DataGridView, y en este evento (data_Click) ponemos el siguiente código:

vb.net [Show Plain Code]:
  1. txtUsuario.Text = data.SelectedCells(1).Value
  2. txtPass.Text = data.SelectedCells(2).Value
  3. txtNombre.Text = data.SelectedCells(3).Value

No hay mucho que explicar en el código anterior, solo que las cajas de texto se llenan con la información del renglón seleccionado en el DataGridView.

A nuestro botón editar le ponemos en el evento btnEditar_Click el siguiente código para actualizar la BD.

vb.net [Show Plain Code]:
  1. Dim sqlStr As String ‘ aqui pondremos la consulta
  2. ‘ SQL para editar registros
  3. sqlStr = "UPDATE usuarios SET usuario=’" + txtUsuario.Text + "’, pass=’" + txtPass.Text + "’, nombre=’" + txtNombre.Text + "’ WHERE id_usuario=" + data.SelectedCells(0).Value.ToString()
  4. con.ejecutaSql(sqlStr) ‘ ejecutamos la consulta directamente en la BD
  5. ‘ refrescamos el DataGridView y las cajas de texto
  6. dt = con.ejecutaSql("SELECT * FROM usuarios")
  7. data.DataSource = dt
  8. txtUsuario.Text = ""
  9. txtPass.Text = ""
  10. txtNombre.Text = ""

Por último a nuestro botón salir en el evento btnSalir_Click le agregamos:

vb.net [Show Plain Code]:
  1. con.cerrarConexion()
  2. Application.Exit()

Con esto terminamos el ejemplo de como conectarnos a una base de datos en Access, como leer los datos, como editarlos y como cerrar la conexión.

Queda como ejercicio para ustedes la inserción de registros.

Actualización: Les pongo el código para insertar y eliminar en el ejemplo.

Agregue dos nuevos botones en el formulario, btnAgregar y btnEliminar.

A nuestro botón editar le ponemos en el evento btnAgregar_Click el siguiente código para insertar registros.

vb.net [Show Plain Code]:
  1. Dim sqlStr As String
  2. sqlStr = "INSERT INTO usuarios (usuario, pass, nombre) VALUES (‘" + txtUsuario.Text + "’, ‘" + txtPass.Text + "’, ‘" + txtNombre.Text + "’);"
  3. con.ejecutaSql(sqlStr)
  4. dt = con.ejecutaSql("SELECT * FROM usuarios")
  5. data.DataSource = dt
  6. txtUsuario.Text = ""
  7. txtPass.Text = ""
  8. txtNombre.Text = ""

A nuestro botón editar le ponemos en el evento btnEliminar_Click el siguiente código para eliminar registros.

vb.net [Show Plain Code]:
  1. Dim sqlStr As String
  2. sqlStr = "DELETE FROM usuarios WHERE id_usuario=" + data.SelectedCells(0).Value.ToString()
  3. con.ejecutaSql(sqlStr)
  4. dt = con.ejecutaSql("SELECT * FROM usuarios")
  5. data.DataSource = dt
  6. txtUsuario.Text = ""
  7. txtPass.Text = ""
  8. txtNombre.Text = ""

Este código se puede mejorar cambiando la declaración de Dim sqlStr As String al inicio de la clase del formulario, y crear un método para el código de refrescar el DataGridView y los TextBoxes.

107 comentarios en “Conectar a MS Access con VB.Net”

 

Soniia Darliing

Olp
Muxiixiimas Graciias Por Tod Loo Qee Nos Indiica Esto
Estp Noos A Ayudadoo Muxoo A Los Qee LooUtiiliizan

Abraham

ala muchas gracias te lo aprecio mucho me sirbe de mucho!!!

José Fernando

Buenas.
Tengo un equipo de pruebas con W7 profesional y VB2010 express. La BBDD es de Access 2000.
En principio puedo conectarme vía “Microsoft Jet 4.0 OLE DB provider” desde un equipo de desarrollo con XP por medio de un documento UDL.
Este proveedor no está disponible en el equipo de pruebas. He buscado información y resulta que necesito MDAC_TYPE. Lo he descargado y ejecutado. Hasta ahí bien, pero me sigue sin aparecer este proveedor. He instalado una app desarrollada en VB6.0 que, entre sus componentes, figura mi proveedor favorito y nada, sigue sin aparecer.

Al grano. La pregunta es:
Cómo puedo acceder a una BBDD Access 20xx desde VB2010 express con los proveedores de datos que tengo por defecto en el equipo de pruebas. Cadena de Conexión…
Mucas gracias, josefern.

arosales

Disculpa como hago para hacer un COUNT

 

Deja un comentario