Como en el post anterior, de forma muy sensilla y con muy poco código, vamos a ver como establecer una conexión en visual basic .net con un archivo de base de datos de Microsoft Access y luego de recuperar los datos de una de las tablas para llenar con ellos un DataGridView.
Lo primero que hay que hacer es importar dos espacios de nombres como muestro a continuación:
[Code lang="vbnet"]
Imports System.Data
Imports System.Data.OleDb
[/Code]
Para este ejemplo utilizaremos un formulario con un Botón (Button1) y un DataGridView (DataGridView1). En el evento click de button1 uno copiamos el siguiente codigo y el nombre de la base de datos .mdb y el nombre de la tabla en la instrucción SELECT) para que todo funcione bien.
[Code lang="vbnet"]
Dim cnn As New OleDbConnection(“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:myBaseAccess.mdb; User Id=admin;Password=;”)
Dim da As New OleDbDataAdapter(“SELECT * FROM Products”, cnn)
Dim ds As New DataSet
da.Fill(ds)
DataGridView1.DataSource = ds.Tables(0)
[/Code]
Bueno, en realidad no hay mucho que explicar… se crea una conexión (cnn), luego un DataAdapter (da) que tiene como parámetro la instrucción para recuperar los datos (SELECT) y la conexión que debe utilizar (cnn). Si quieres seleccionar solo algunos registros deberás agregar una condición WHERE a la instrucción de selección.
En las lineas que siguen les dejo algunas breves definiciones por si a alguno le hicieran falta y para saber más de las distintas opciones para crear una conexión con Microsoft Access les dejo también el siguiente link: http://www.connectionstrings.com/access
DataAdapter
Representa un conjunto de comandos SQL y una conexión de base de datos que se utilizan para rellenar el objeto DataSet y actualizar el origen de datos.
DataAdapter actúa como puente entre DataSet y un origen de datos para la recuperación y el almacenamiento de datos. Para poder actuar como un puente, DataAdapter asigna el método Fill, que modifica los datos de DataSet de forma que coincidan con los del origen de datos, y asigna el método Update, que modifica los datos del origen de datos para hacerlos coincidir con los de DataSet.
DataSet
Representa una caché de memoria interna de datos. Es un componente fundamental de la arquitectura de ADO.NET. DataSet está compuesto por una colección de objetos DataTable.
DataTable
Representa una tabla de datos en memoria.
DataTable es un objeto central de la biblioteca ADO.NET. Entre los objetos que utilizan DataTable se incluyen DataSet y DataView.
Al obtener acceso a los objetos DataTable, hay que tener en cuenta que éstos distinguen entre mayúsculas y minúsculas condicionalmente. Por ejemplo, si un objeto DataTable se denomina “mydatatable” y otro “Mydatatable”, la cadena que se utilice para buscar una de las tablas se considerará que distingue entre mayúsculas y minúsculas. Sin embargo, si existe “mydatatable” pero no existe “Mydatatable”, se considerará que la cadena de búsqueda no distingue entre mayúsculas y minúsculas. Un objeto DataSet puede contener dos objetos DataTable que tengan el mismo valor para la propiedad TableName y distintos valores para la propiedad Namespace.
[...] de escribir el ejemplo de conexión a SQL Server y el de conexión a Microsoft Access me di cuenta de que a pesar de que estos son los dos tipos de bases de datos mas usados cuando [...]
gracias la verdad fue de mucha ayuda. porque necesitaba un código lo mas sencillo posible por que tenia problemas para cargar una tabla de access a un datagrid y de todos los codigos que probé este fue el unico que me trajo toda la tabla y con tan poco codigo
Gracias de verdad y bendiciones
Carla
gracias me sirvio de mucho!!! aunque quisiera saber como irlo filtrando por campo, hasta encontrar un registro determinado.
Saludos.. muy bueno tu articulo y tu pagina… te iba a preguntar como limpiar el DataGridView1 cada vez que le de clic a un boton para consultar y ver los datos, pero creo que lo solucione, no se si es lo correcto, pero al menos me funciono. Lo unico que hice fue agregar “ds.Clear()”
Asi:
ds.Clear()
da.Fill(ds)
DataGridView1.DataSource = ds.Tables(0)
Ahora como hago para que en un TextBox donde escribiendo un nombre se valla mostrando solo los resultados encontrados en el DataGrid..
1.- para limpiarlo: está bien lo que haces, también podrías hacer DataGridView1.DataSource = Nothing
2.- Para mostrar solo los datos que coinciden con el textBox el procedimiento es el mismo, lo único que cambia es la instrucción SELECT que realiza la búsqueda. Por ejemplo: “select * from empleados WHERE Nombre LIKE ‘%” & textBox1.Text & “%’”
Suerte
Yo he trabajado con Visual Studio 6 y estoy tratando de trabajar con Visual Studio 2008. He hecho lo que dice el manual para mostrar datos de una tabla en un DataGridView, sin éxito. Se muestra el dataGridView, pero no los datos. En el evento load del formulario se colocan automáticamente unas líneas de código para llenar los datos, pero al parecer, eso no funciona. Alguien sabe si esto es un problema conocido?
Hola Oscar:
No tiene muchos secretos… el control datagridview necesita que le indiques en la propiedad datasource cual es la tabla que contiene los datos o puede tener un databindingsource. Te recomiendo mirar estos dos artículos y estoy seguro que lo vas a poder lograr.
http://www.solovb.net/index.php/2009/02/05/conectarse-a-una-base-de-datos-de-sql-server-y-llenar-un-datagridview-sin-escribir-codigo/
http://www.solovb.net/index.php/2009/02/03/conectarse-con-base-sql-server-y-llenar-datagridview/
Suerte
La verdad que esto me funciona a la perfección pero lo que me no me funciona es el insert update y delete… incluso probe con conexionstring y sqlcomand.. ya no se que hacer..
Alguna idea?
Muchas gracias.
Chicos me respondo yo.
insert:
Dim daagregar As New OleDbDataAdapter(“insert into pedidos (IDPLATO, Cantidad, IDMesa, IDCliente, Fecha) values (‘” & TxtCodigo.Text & “‘,’” & TxtCantidad.Text & “‘,’” & TxtMesa.Text & “‘,’0′,’8′)”, cnx)
daagregar.Fill(dsPedidos)
hol que tal me gustaria saber como le hago para insertar datos en un datagridview pero que si ya existe el valor mande un mensaje que ya existe gracias SALUDOS
Agradecido por el codigo…
Hay alguna forma de rescatar los datos contenidos en el gridview y ponerlos en un archivo PDF???.
Saludos desde Chile
Hola, me conecto con una BD Access 2007 desde C#.NET aqui todo bien, pero tengo una tabla que tiene tres campo con fechas y les quiero dar un formato de salida y tengo dos opciones:
1) Despues de rellenar el DataGridView darle formato a cada campo que contenga fecha
2) Hacerlo con una sentencia SELECT:
SELECT TOP 20 *,Format([buy_date],’Long Date’) & ‘ ‘ & Format([buy_date],’Short Time’) AS [buy_date] FROM testing ORDER BY Id DESC
El problema de esa consulta es que coloca el campo [buy_date] de la posicion 4 a la 2 y tengo que escribir mas codigo para ordenarlo y eso es lo que no quiero hacer
Saludos
me da el siguiente error
No se pudo encontrar el archivo ISAM instalable.
da.Fill(ds)
Hice todo tal cual ¿alguna idea?
Hola!! mira yo me conecto con un BD access 2003 en vb.net de ahi traigo todos los datos de 3 tablas en un datatable con todas las columnas de las 3 tablas, ahora lo q quiero yo es mostrarlas en una dataGridView pero no a todas las columnas, sino a algunas.. como puedo hacerlo???
Gracias,Una explicacion muy sencilla y muy practica,Gracias
Excelente post, de mucha ayuda y muy detallado, simplemente no sabia que fuera tan facil.
Gracias