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
).
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:
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:
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:
A nuestra UI vamos a agregarle los siguientes elementos:
El DataGridView se llama Data y deben asignar el siguiente valor en sus propiedades SelectionMode = FullRowSelect
Los TextBoxes se llaman txtUsuario, txtPass, 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:
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:
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.
Por último a nuestro botón salir en el evento btnSalir_Click le agregamos:
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.
Descargar el código de ejemplo
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.
A nuestro botón editar le ponemos en el evento btnEliminar_Click el siguiente código para eliminar registros.
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.
32 Responses
Martin Arroyo
December 5th, 2007 at 10:17 pm
1Profesor, intente implementar su ejercicio. Y ya ve que soy medio menso pa eso y especificamente no me agarro la RUTA de la DB le intente poner comillas y no funcionó entre otras cosas, y lo mas cercano que estube de hacerlo bien, fue un Error en una / :ee
Y que cree, me meti a borland y me mandaron una clave de delphi 7 pero no el ejecutable….
bueno profe muchas gracias por la atención…
Martin Arroyo
December 5th, 2007 at 11:13 pm
2Bueno profesor, otra vez yo, pues creo que ya me salio un error en la tercer linea del codigo del btnEditar_click con el mensaje
“El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección.
Nombre del parámetro: index”
quisiera que me orientara acerca de por donde podria ir mi error
pecesama
December 5th, 2007 at 11:23 pm
3Arroyo con respecto a su error en el evento btnEditar_click lo más seguro es que deba cambiar en el DataGridView la propiedad de SelectionMode = FullRowSelect
Ya les puse un enlace en el post para descargarse el proyecto de VS.Net del ejemplo.
pecesama
December 5th, 2007 at 11:50 pm
4Con respecto al Delphi para .Net, ahora esta disponible en el producto que se llama CodeGear RAD Studio 2007 el cual dice que contiene Delphi, Delphi for .NET and C Builder y se pueden bajar una versión de prueba desde el sitio http://www.codegear.com/products/radstudio/ en Delphi for .Net no deberian tener problemas para utilizar la .dll que les puse para conectarse a BD de access, solo deberian cambiar el codigo que esta en el ejemplo de uso desde VB.Net
Otra vez Arroyo
December 6th, 2007 at 1:30 am
5El ejemplo funciona con una tabla, pero para mi proyecto requiro de una base de datos relacional, las relaciones las establezco directamente en Access o abria una propiedad tipo CampoMaestro para relacionarlas?
francisco gonzalez
December 6th, 2007 at 2:52 am
6profe!!! por que cuando pongo: con.ejecutaSql(”DELETE FROM movimientos WHERE no_venta=4″)
pues a lo que yo entiendo deberia de borrar lo registros con no_venta=4, pero no los borra, me gustaria saber por que razon, igual me pasa con el INSERT INTO, no inserta los registros
pecesama
December 6th, 2007 at 10:19 am
7para que sus comentarios no se vayan a la cola de moderación cada vez que pongan uno, usen los mismo datos siempre.
pecesama
December 6th, 2007 at 10:20 am
8Arroyo, puede hacer las dos cosas, el “truco” estaria en como hacer la consulta SQL para ecuperar los datos y modificarlos, pero la clase funciona para las dos formas.
pecesama
December 6th, 2007 at 10:33 am
9Gonzalez lo más seguro es que si lo esta haciendo solo que no le da refrescar el datagrid.
He actualizado el post con el codigo para insertar y eliminar.
daniel mejia
December 6th, 2007 at 3:27 pm
10profesor podria subir por favor el ejercicio que nos explico en clase de visual .net. en el que no enseño como debia de quedar cada clase.
nomas para comparar y saber si voy bien o no
Victor Rodrigo Montaño Mancilla
December 6th, 2007 at 4:22 pm
11Profesor una pregunta tome como referencia su codigo el cual me sirvio de mucho pero cuando salgo de la aplicacion los datos no se guardan me podria decir como que investigar y si no seria mucha molestia el comando que no hayo ningun tipo de ayuda muy presisa con el Sr. Google xD
pako
December 6th, 2007 at 9:39 pm
12profe…el codigo d borrar unicamente me borra el registro del dataGridView pero no lo borra d la base de datos!!! asi como le dije en la faku!!!…Por que cuando vuelvo a ejecutar el programa el registro k “borre” vuelve a aparecer cuando realizo la consulta
pecesama
December 6th, 2007 at 11:09 pm
13pako, ya solucionamos por IM los problemas de capa 8
pecesama
December 6th, 2007 at 11:10 pm
14Mejia, en unos momentos más lo subo al blog del grupo
pecesama
December 6th, 2007 at 11:11 pm
15Rodrigo, lo más seguro es que le esta pasando lo mismo que a Gonzalez, el tenia el mismo problema, lo que pasa que estan poniendo la BD como contenido del proyecto, por lo tanto cada que lo ejecutan pone una copia nueva de la BD.
pako
December 7th, 2007 at 2:26 am
16podemos usar el modulo unicamente para declarar variables?
daniel mejia
December 7th, 2007 at 7:25 am
17profe no subio el ejemplo, y si lo subio no lo hallo en cual lo dejo? en telematicanet… o en telematica.ing-soft.com por que ya busque en las dos y nomas no lo hallo
pecesama
December 13th, 2007 at 11:04 am
18ya se lo pase en clase
Access con VB.Net — kodrs
February 8th, 2008 at 2:54 pm
19[...] Conectar a MS Access con VB.Net [...]
robert
February 24th, 2008 at 7:16 am
20Profe hoy 24 de febrero del 2008 su libreria esta expirada , nose hasta cuando estubo disponible , pero se me ocurrio retrasar el reloj un año atras y normal, ojala publique el open souce de esa libreria, esta muy buena , al menos para nosotros los alumnos empeñozos
pecesama
February 24th, 2008 at 12:15 pm
21robert quien es?
Le puse restricciones de fecha a la libreria solo para el semestre pasado, dependiendo si la usaban o no veremos como crear una.
Toni
April 16th, 2008 at 3:44 pm
22¡¡Buenas desde Barcelona (Cataluña, España)!!
Tengo el mismo problema con la librería (caducidad de la misma). Agradeceríamos que pudiéramos disponer de esa librería sin restricción de fecha o ver qué solución tener (a parte de retrasar el reloj de Windows, claro está)
Saludos,
Toni.
Ann
May 7th, 2008 at 12:13 pm
23Hola, primero quiero agradecer por publicar este post ya que me ha sido de gran ayuda, su contenido es muy bueno y puntual, ahora quisiera saber si me podría ayudar con un pequeño problema que tengo, en una de sus lineas de codigo, especificamente en esta:
data.datasource = dt
el problema es que vb.net no reconoce datasource como un miembro de “data”, me imagino que debe faltarme alguna libreria pero no se cual, por favor agradeceria mucho su ayuda.
pecesama
May 7th, 2008 at 12:17 pm
24Hola Ann, data es el DataGridView.
Probablemente te olvidaste de cambiarle de nombre al DataGridView.
eric
June 4th, 2008 at 3:49 pm
25queria preguntarle si no tiene algun ejemplo de como realizar busquedas en vb.net con sql
Andres
June 8th, 2008 at 2:04 pm
26Hola!… Muy buena la explicacion, yo no soy alumno suyo, pero estoy empezando y me ayudo bastante, solo que como ya expiro el uso de la libreria no puedo probar lo que hice…
Agradeceria me digas como obtener una version completa o me des una idea de como hacer una yo.
Muchas gracias
Andres
1000110
June 8th, 2008 at 10:45 pm
27Hola quisiera saber como puedo hacer para buscar un valor que tengo en una columna de una base de datos en access y mostrarla en un label de la aplicacion que estoy programando….
la idea que tengo es escribir en un textbox el valor que quiero buscar en la base de datos en access, y si el valor esta en la base de datos, mostrarlo en el label, sino esta motrar un mensaje de error…
eh intentado hacerlo pero no hayo la forma hacer una funcion de busqueda….
sera q alguien tiene alguna idea ???
gracias de antemano
Rodney
July 2nd, 2008 at 7:00 pm
28Prof, quiciera saber como hacer un formulario LOgin usando la base de datos access
Marco Medina
July 7th, 2008 at 1:13 pm
29Buenos días, estoy empezando a conocer VB.net y su post es excelente, y como dicen varios compañeros su librería es muy buena, como puedo obtenerla? Me ayudaría mucho, de antemano le agradezco la atención a la presente, y saludos desde México
israel
August 26th, 2008 at 6:40 pm
30muchas gracias su post a sido de gran ayuda y me gustaria saber si va a enseñar como aser mis librerias, como la q usted iso gracias
Alejandro
September 4th, 2008 at 8:57 am
31Buenos días, leí su post y me pareció muy interesante, yo estoy desarrollando algo similar con comandos sql en access, pero no encuentro algo que me guie para hacer los Insert, Delete y Update, veo que en su ejemplo maneja una libreria propia, ojalá me la pudiese enviar.
pecesama
September 26th, 2008 at 3:05 pm
32Ya he actualizado el post con la URL a la librería sin caducidad: descargar conexionOleDb.dll
RSS feed for comments on this post · TrackBack URI
Leave a reply
Recomendados
Pecesama.Net [Wiki]
Meta
Publicidad
Calendario
Categorias
Recent Entries
Recent Comments
Most Commented
Pecesama.Net [weblog] is proudly powered by WordPress - BloggingPro theme by: Design Disease