Hace tiempo ya había escrito algunas cosas sobre cómo usar bases de datos de Access desde Visual Basic (versiones .net en adelante). Al final pongo una lista de estos posts de mi blog.
Sin embargo, estoy ante la tarea de hacerlo lo más simple posible. Mi experimento es tratar de usar Access 2010 desde Visual Basic 2010 sin tener que adentrarse mucho a SQL ni a comando complejos. Comenzaré creando una base de datos de Access que tendrá una sola tabla, llamada Libros, que contendrá (como te podrás imaginar) datos sobre Libros. Aquí está el tour paso a paso. Recuerda que al hacer clic sobre cualquier imagen se abre en tamaño grande en otra ventana o pestaña de tu navegador.
Creando tabla en Access
Al abrir Access te aparece una pantalla como esta. Elige una base de datos en blanco, elige la carpeta donde lo guardarás y el nombre de archivo y haz clic en el botón crear.
Así quedó la ventana con los datos que yo escribí:
Al abrir la ventana con una tabla en blanco, presiona el botón de la vista diseño (el que aparece abajo de estas líneas).
Aparece una ventana preguntándote el nombre de la tabla. Yo escribí Libros e hice clic en el botón Aceptar.
Aparece una ventana donde puedes dar de alta los campos y decir de qué tipo de dato son. En mi caso, quedó así:
Al terminar de dar de alta, hago clic en la vista de hoja de datos (en el mismo lugar donde estaba el de vista diseño que ahora parece una hoja de cálculo) y me pregunta si deseo guardar la información de la tabla. Hago clic en Aceptar.
Al final di de alta 4 registros. Así quedó en la vista hoja de datos:
Ahora sí, cierro Access 2010 y vamos a Visual Basic 2010.
Creando un nuevo proyecto en Visual Basic 2010
Al abrir Visual Basic 2010 creo un nuevo proyecto. Haz clic sobre nuevo proyecto y luego asegúrate que sea un Windows Form Application (en lenguaje Visual Basic), escribes el nombre del proyecto y das clic en Aceptar. Aquí están las imágenes:
Enseguida aparece una ventana con una ventana (conocido como Form en Visual Basic). Lo primero que hay que hacer, es hacer una conexión con la base de datos de Access. Esto lo haremos de la siguiente manera. Primero encuentra la pestaña Data Sources. Si no lo ves, lo puedes abrir desde el menú Data, Show Data Sources. La pestaña debería verse así:
Ahora haz clic sobre la liga Add New Data Source… Debería aparecer la siguiente ventana. Luego elige Database y haz clic en siguiente.
En la siguiente ventana, elige Dataset y haz clic en el botón Siguiente.
En la siguiente ventana, haz clic en el botón New Connection.
Seleccione Microsoft Access Database File y haz clic en siguiente.
Elige el archivo y haz clic en Test Connection para asegurar que está bien. No le hagas caso al usuario/contraseña porque eso se usa más en otros manejadores de bases de datos (como SQL Server, MySQL, etc.). Luego haz clic en Ok.
Ahora regresó a la ventana que preguntaba sobre la conexión a los datos. Haz clic en Next. Después de esto, te va a decir (probablemente) que el archivo de la base de datos no está en el mismo lugar donde está almacenado el proyecto y si quieres copiarlo a la ubicación. Haz clic en Si.
Luego te pregunta si deseas guardar la conexión. Haz clic en Next.
En la siguiente ventana te pregunta lo que deseas visualizar. en este caso solo quiero ver la tabla Libros con todos sus elementos. En la siguiente imagen expandí la parte de Tables y lo seleccioné. al final haz clic en Finish para terminar el asistente.
Al cerrar la última ventana del asistente podremos observar que el explorador de soluciones tiene nuevos elementos como se ve en la siguiente imagen. Uno es el archivo de Access (Libros.accdb) y el otro es la conexión que nos permite accesar esta tabla (LibrosDataSet.xsd). Con esto ya estamos listos para insertar, eliminar, consultar y modificar la tabla Libros. Sería buen momento ded guardar el proyecto antes que otra cosa pase.
Otra ventana que cambia es el de Data Sources. Ahora aparece LibrosDataSet desde donde se pueden acceder los elementos de la tabla libros.
Supongamos que quiero mostrar una caja de texto sobre la ventana que tenga el ISBN. Si arrastro el campo ISBN desde la ventana Data Sources a Form1 (en la vista diseño), crea un título con la caja de texto que accede al campo ISBN de la tabla Libros y una barra de herramientas para moverse en la base de datos. Hasta abajo aparecen muchos controles que no aparecerán en la ventana, pero que nos sirven mucho para hacer acceso a los datos de la tabla. Este es Form1 en la vista diseño hasta este momento.
Como te habrás de imaginar, hay botones para ir al primero, al anterior, una caja con el número de registro (que se puede modificar para moverse a un registro en particular), siguiente registro, el último, agregar, eliminar y guardar. ¡Todo hecho de forma automática! Si quiero que no sea una caja de texto y esté en otro tipo de control, puedo hacer clic en el triángulo que aparece a un lado del campo (en la ventana Data Sources) y seleccionar el tipo de control que quieres que tenga. Se ve así:
Después de cambiar la editorial para que aparezca en un ComboBox, la ventana se ve así (fíjate como cambia el icono de Editorial).
Llené Form1 con todos los controles (también agregué un botón llamado btnSalir). En la vista diseño se ve así:
¿Funcionará así? Vamos a ver. Al ejecutar el programa (espero que lo estés guardando cada de vez en cuando) aparece esto:
Si te fijas, está en el primer registro que di de alta. Los botones para moverse entre los registros funcionan sin problemas. Al presionar el botón de agregar registro (el signo +) se ponen en blanco los campos, el número de registro cambia a 6 (en este ejemplo dimos de alta 5 registros, como se observa en el dibujo anterior) y está listo para que escribamos los datos del libro. Así se ve la ventana con datos de un libro:
Al terminar de dar de alta los datos, presiono el botón Guardar (el que tiene forma de diskette… pero, ¿quién usa diskettes hoy en día? ¿No deberíamos cambiar ese icono? Bueno, ese es otro rollo…) y queda almacenado (fíjate como el número total de registros cambió a 6 y se puede mover a ese registro). Ahora me posiciono en el registro que acabo de dar de alta y presiono el bortón para eliminar (la X roja). Sin preguntar, lo elimina y asunto arreglado.
Si te fijas, no tuviste que escribir código para que esto funcionara. No es precisamente así: Visual Basic agregó código por ti para que esto funcione. Yo solo agregué un End para cuando presionen el botón Salir. El código de la ventana es esta:
Aquí les dejo también ligas a otros posts relacionados al tema que están en mi blog.
Ligas sobre programar Access y Visual Basic
- Access y Visual Basic 2005
- Otra nota: Visual Basic 2005, ADO .NET y Access
- Visual Basic .net, ADO.NET y Access
- Problemas OleDb con Windows 64 bits (un error que puede surgir al usar Access con un Windows de 64 bits).
Ligas sobre SQL Server y Visual Basic
- Entrándole al SQL Server Express desde Visual Basic 2005
- Visual Basic 2005 y SQL Server Express 2005 de nuez...
Espero que esta explicación les haya sido útil. ¡Saludos!
39 comentarios:
Hey profe este blog nos puede servir en las actividades de base de datos como con walter, o cuando tuvimos precisamente esa materia, donde casi no nos enseñaron a usar access.
Para eso es este blog: para que lo use quien lo necesite. Me da gusto que te haya sido útil.
¡Saludos!
profe :) muy buen blog, sin duda esto nos puede servir no sólo para la escuela, sino para tener mayor conocimiento en computación, sobre todo se aprende más del funcionamiento de Access
profe su blog me ha sido muy util, tiene muy bien explicados los temas, de aqui me he basado en varios proyectos.
y de seguro en la carrera me servira seguir este blog, gracias por darnos esta herramienta
Que bueno que les sea de utilidad. Para eso está. :D
Muy buen blog profeee no solo lo que le gusta sino tambien temas explicativos para los demas, excelente !
(:
Hola
me podrias explicar con se conecta con un password en la bd
Para conectarte con un password, puedes hacerlo en la ConnectionString.
En este post muestro como conectarse usando una ConnectionString:
http://tony-valderrama.blogspot.mx/2007/12/otra-nota-visual-basic-2005-ado-net-y.html
Y sobre la ConnectionStrign, alguien preguntó como hacerle con un password y le contestaron aquí (aunque está en inglés):
http://social.msdn.microsoft.com/Forums/is/vbgeneral/thread/f14e614b-c443-4e95-86f8-6433d742bb30
Espero que esto te haya ayudado...
Como hacer para que cuando cargue el formulario aparezcan los campos en blanco?
Disculpe lo que quiero hacer es una base de datos de tuberia e instrumentacion pero no tengo idea de como crearlo me podria decir un tutorial para poder hacer una base de datos de tuberias e instrumentacion
AQUI EN CUENTRAS BUENA INFORMACION http://videoexperto.blogspot.com/
muy buen material, yo lo hice con Access 2007 y VB 2010 y funciono tambien como con access 2010... Gracias!!
Hola Tony soy nuevo en este mundo de la programacion y las Bases de Datos tengo que hacer una BD en Oracle 11g pero necesito una aplicasion con la cual la pueda relacionar. Mi pregunta es con Visual Basic 2010 es una herramienta segun veo donde puedo crear una aplicasion sin usar un leguaje de programacion como Visual.Net la puedo relacion como lo hace con la BD en Acces .
les agradesco si alguien me puede a consejar algo, gracias
muy buena info, mira yo necesito enlazar la base de datos pero creando yo los botones agregar, eliminar guardar, buscar, pero en realidad la parte del código no lo tengo muy claro. si podría ayudarme te lo agradecería.
Estimado Anónimo:
Creo que te puede ayudar este post que acabo de escribir:
http://tony-valderrama.blogspot.mx/2012/10/insertando-datos-en-access-2010-desde.html
Aqui pueden encontrar varios ejercicios de VB.Net 2010 con su codigo fuente ---> http://ayudaveloz.blogspot.com/
Hola, he visto los ejemplos anteriores que has estado haciendo y me intereso muchisimo, estan bien explicados y me han hecho entender cosas que no entendia. Creo que puedes ayudarme en algo como:
crear un login en visual basic 2010 y crear una base de datos en access 2007 donde la base de datos tenga el usuario y contraseña y en visual basic lo mismo, y que todos los usuarios tengan una cuenta que es contraseña y nombre de usuario, la contraseña lo asigna el administrador para los usuarios. Es eso si puedes ayudarme en este problema que tengo
Alguiensabe como hacer el boton de busqueda
Hola Tony, mi nombre es Luis, he llegado a tu blog buscando info de VB 2010.
Tengo un problema que no se resolverlo, he recurrido a San Google pero no lo encuentro, seguramente sea una tontería, pero para mi, recién iniciado, me está aburriendo.
Estoy haciendo un programita para una de mis aficiones, son varios formularios con bases de datos y todo funcionando ok.
Una de las opciones del programa es una especia de “Estadísticas” en la que repasando una base de datos de primer registro a último, compara los valores de algunos campos y me da un resultado que lo muestra en pantalla.
El código, si lo ejecuto manualmente desde un botón funciona correctamente, al intentar hacerlo automáticamente mediante un bucle While not Eof() me da un error.
Código aplicado a un botón, funciona
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.HamradioBindingSource.MoveNext()
v20mts()
v40mts()
End Sub
Al hacer un bucle While not Eof(), me da el error marcando “EOF(1)”
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
While Not EOF(1)
Me.HamradioBindingSource.MoveNext()
v20mts()
v40mts()
End While
End Sub
Que estoy haciendo mal?
Gracias por adelantado.
Saludos cordiales.
El EOF es una función que trabaja con archivos secuenciales y de acceso aleatorio, no de Access.
Antes que otra cosa, ¿para qué quieres que vaya registro por registro de esa forma? y ¿Qué hace v20mts y v40mts?
HOLA! MUY INTERESANTE YO HAGO ALGO PARECIDO A LO DEL BLOG ORIGINAL SOLO QUE SI ME GUARDA LOS DATOS EN EL VISUAL PERO CUANDO LO CHECO DESDE LA BD DE ACCESS NO Me MUESTRA LO QUE YA GUARDE EN VISUAL NO SE SI PUEDA AYUDARME PLIS.......
No estoy seguro porque lo está haciendo. Fíjate que esté bien el código del botón de guardar (el del diskette).
Si tengo tiempo, lo vuelvo a probar a ver que pasó.
¡Saludos!
Y si quiero realizar busquedas de un campo determinado, como le hago?
Estimado Administrador:
Seguramente hay formas más sencillas de hacerlo, pero yo lo haría con una instrucción SELECT de SQL con un DataTable.
En el post sobre impresión de reportes (http://tony-valderrama.blogspot.mx/2012/11/generando-un-reporte-con-access-y.html) hago un SELECT para obtener muchos registros, pero podrías limitarlo a un solo registro, según el campo. En este blog también hay muchos ejemplos de la sintaxis de SELECT.
Uso regularmente fox para este tipo de trabajos, pero en la escuela me pidieron un lenguaje diferente, estoy muy pollito en el manejo de base de datos en visual basic. Tengo practicamente lo tuyo que hiciste en el programa, muy facil tengo que decir, pero lo que tengo rato buscando es la forma de buscar uno o mas registros, mostrar los resultados en un grid para poderse modificar. Hechame la mano con eso, porfavor. de todas maneras ando leyendo el SELECT para ver que me funciona de ahi. Gracias
de forma mas especifica, ¿Como le harias para la busqueda de libros?
hola soy nuevo en utilizar visual basic y lo explicado aqui lo he hecho y me funciona todo, lo unico es que la base de datos en access no se me actualiza, alguien sabe por que
Buenas noches estoy tratando de hacer un programa con una basa de datos en access 2007 con datos adjuntos de excel y se como puedo lograr que muestre los reportes tampoco colocarle usuario y contraseña
esta bien el proceso, pero hay que tomar en cuenta que al hacerlo de esta manera, el programa guardara los datos pero solo en ejecucion. Una vez que se salga de la aplicacion los datos no estan guardados en la base de datos. A mi me paso. la solucion es, dentro de Visual basic, en el explorador de soluciones,en las propiedades del dataset, en el item de copiar en el directorio de resultados, hay que seleccionar: copiar si es posterior y eso es todo
¡Muy cierto! Gracias por la aportación.
buenas noches tony
apenas empiezo a entende el programa y ya hice mi bd en access y abri mi vb 2008 expres, pero no me guarda los nuevos datos que pongo en mi bd, y que doy guardar pero nada, tendras una idea del porque, te aradesco tu respuesta, o te dejo mi correo adrian_blue@hotmail.com
Estimado adrian_blue:
Fíjate en el comentario anterior: alguien se topó con el mismo problema y lo resolvió.
Esto es lo que escribió:
esta bien el proceso, pero hay que tomar en cuenta que al hacerlo de esta manera, el programa guardara los datos pero solo en ejecucion. Una vez que se salga de la aplicacion los datos no estan guardados en la base de datos. A mi me paso. la solucion es, dentro de Visual basic, en el explorador de soluciones,en las propiedades del dataset, en el item de copiar en el directorio de resultados, hay que seleccionar: copiar si es posterior y eso es todo
Muy bien explicado, funciona a la perfeccion, mis respetos, saludos desde toluca.
Hola
Quisiera consultar si puedo plantear algo que necesito hacer en access o en vb, para que me orienten, por favor?
Gracias y saludos,
gracias amigo he hecho todo asi y me funciono muy bien ahora como hago para insertar, modificar, eliminar datos a dos tablas al mismo tiempo osea con el mismo boton. agradeceria mucho su ayuda
excelente, no sabes cuanto me ha ayudado esto, eres super,muchas gracias, y sigue educandonos please !!!!
Gracias viejo sos un master, me sirvio de mucho el tutorial..
seria bueno q hagas ejemplos de actualizar, editar,eliminar y buscar registros...gracias
Publicar un comentario