A continuación,
Como llenar de datos un datagridview por medio de un dataset en visual studio 2010 (VB.NET) y SQL server 2008.
Como llenar de datos un datagridview por medio de un dataset en visual studio 2010 (VB.NET) y SQL server 2008.
Lo haré de dos formas.
- Asignando a la propiedad de la tabla source el dataset
- Recorriendo el dataset y agregando los datos a la tabla
Nota: Según microsoft un dataset representa una caché de memoria interna de datos.
Nota: no necesariamente tienen que poner los mismos nombres es según la necesidad del lector
- Crear una base de datos llamada DBEJEMPLO
- Crear una una tabla llamada DEPARTAMENTOS con los siguientes
- id_departamento nvarchar(5) Unchecked
- descripcion nvarchar(30) Checked
- Crear un nuevo proyecto en visual studio .net llamado LLENARDATAGRIDVIEW
- Ir a herramientas y seleccionar una DATAGRIDVIEW y arrastrarlo al formulario FORM1 que se genera automáticamente.
- Crear FORM2, agregarle un DATAGRIDVIEW y además Crearle dos columnas.
- Hasta aquí tendremos:
5.Creamos una clase llamada DATOS
Nota: La programación del código es orientada a objetos, no estructurada.
6. La clase tendrá el siguiente código:
Imports System.Data
Imports System.Data.SqlClient
Public Class datos
private ServerName As String = "." 'Nombre del servidor local, pueden escribir ".", si no les funciona escriban el nombre completo, por ejemplo: "EVELYN-PC\SQLEXPRESS"
private DBname As String = "DBEJEMPLO" ' Nombre de la base de datos
private sqlstringConexion As String = "Data Source=" + Servername + ";Initial Catalog=" + DBname + ";Integrated Security=True"
private Sqlconexion As New SqlClient.SqlConnection(sqlstringConexion) ' asigna la conexion de la base de datos con string de la conexion
private SqlCommand As SqlClient.SqlCommand
private Sqldapter As New SqlClient.SqlDataAdapter
private SqlDataAdapter As SqlDataAdapter
Private Function CargarDataset(ByVal SqlString As String, ByVal tabla As String) As DataSet
Try
Dim SQLdataset As New DataSet
Sqlconexion.Open()
Sqldapter = New SqlDataAdapter(SqlString, Sqlconexion)
Sqldapter.Fill(SQLdataset, tabla)
Return SQLdataset
Catch ex As Exception
Return Nothing
MessageBox.Show("No se pudo completar la operación, intente de verificar la conexión a la base de datos.", "Fallo conexión a la base de datos", MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
Sqlconexion.Close()
End Try
End Function
Public Sub Cargargrid(ByVal formulario As String, ByRef dtg As DataGridView)
Try
Dim tabla As String = "departamentos"
Dim SqlString As String = "select a.id_departamento as Código, a.descripcion as Departamento from " + tabla + " a"
Dim ds As DataSet = CargarDataset(SqlString, tabla)
If ds Is Nothing Then
Exit Sub
End If
Select Case formulario
Case "Forma 1"
CargarForma1(ds, dtg, tabla)
Case "Forma 2"
CargarForma2(ds, dtg, tabla)
Case Else
Exit Sub
End Select
Catch ex As Exception
MessageBox.Show(Err.Description)
End Try
End Sub
Private Sub CargarForma1(ByVal ds As DataSet, ByRef dtg As DataGridView, ByVal tabla As String)
Try
Dim n As Integer ' variables para el for
Dim fila As DataGridViewRow ' representa una fila del datagridview
' ciclo para limpiar el datagrid de cualquier dato y evitar que se repitan
If dtg.Rows.Count > 0 Then
For n = dtg.Rows.Count - 2 To 0 Step -1
fila = dtg.Rows(n)
dtg.Rows.Remove(fila) ' Eliminamos la fila de la colección
Next
End If
dtg.DataSource = Nothing ' limpiar el datasourse
dtg.Refresh() ' actualizar
dtg.DataSource = ds ' asignar en la memoria la tabla
dtg.DataMember = tabla ' asignar la tabla escogida
Catch ex As Exception
MessageBox.Show(Err.Description)
End Try
End Sub
Private Sub CargarForma2(ByVal ds As DataSet, ByRef dtg As DataGridView, ByVal tabla As String)
Try
If dtg.Rows.Count > 0 Then
dtg.Rows.Clear() 'limpiar el datagridview
End If
Dim filas As Integer = ds.Tables(tabla).Rows.Count - 1 ' verificamos que existan datos
If filas < 0 Then
Exit Sub
End If
Dim Codigo As String
Dim descripcion As String
For i As Integer = 0 To filas ' recorrer las filas del dataset cargado
Codigo = ds.Tables(tabla).Rows(i)(0)
descripcion = ds.Tables(tabla).Rows(i)(1)
dtg.Rows.Add(Codigo, descripcion)
Next
Catch ex As Exception
MessageBox.Show(Err.Description, "Fallo conexión a la base de datos", MessageBoxButtons.OK, messageBoxIcon.Error)
End Try
End Sub
End Class
7. Agregamos un botón para cargar los datos y en el evento click del botón, colocamos el siguiente código.
Dim objetoDatos As New datos ' instanciar un objeto de la clase datos
objetoDatos.Cargargrid("Forma 2", DataGridView1)
Nota: El "Forma 1" o "Forma 2" depende del formulario del que se llama al método
8. Corremos la aplicación y el resultado será:
Espero que les sea de utilidad...!! :)
mmm ahorita no tengo tu respuesta, la última ves que trabaje con mysql fue con JAVA..cualquier cosa te aviso!!
ResponderEliminarEn MySQL es lo mismo, solo tienes que utlizar la librería Mysq.Data y cambiar el prefijo Sql por Mysql en los objetos que se encuentran en MySqlClient
ResponderEliminarInvestigando lo de Pedro, que de paso fue una buen lugar para comenzar, la librería se llama MySql.Data.MySqlClient disponible en http://dev.mysql.com/downloads/connector/net/, puedes visitar está página http://programandoideas.com/conectar-visual-basic-net-y-mysql/.
ResponderEliminarQue requieres hacer con MySql?lo mismoo desplegar algo de la base de datos.??
ResponderEliminarmuchas gracias.....te agradeceria pero con MySQL
ResponderEliminarHola!! podías revisar este tema ya lo había considerado!!! Bueno espero todavía te sirva!!
Eliminarhttp://eve-ingsistemas-u.blogspot.com/2012/10/conectar-vbnet-con-mysql.html
Hola Eve , felicidades muy productivo tu blog, tengo una consulta.
ResponderEliminary es que deseo darle doble clic a un datagrid y q como evento se me carguen los datos en otro formulario pero en cajas de textos ...gracias por tu aporte
Hola!! muchas gracias..! si todavía te sirve podías hacerlo de varias maneras maneras... la más sencilla para mi es guardar los datos en un vector en el evento click del datagrid o doble click, luego cuando tuvieras el foco del otro formulario o apenas cierres el form del datagrid, puedes cargar los textbox con los datos del vector!!.. si tienes alguna..con gusto!!
EliminarQuiero en primer lugar agradecer por la calidad del material y por sobre todo, la didáctica con que expone este ejemplo, felicidades en verdad.
ResponderEliminarSeguí cuidadosamente paso a paso la descripción del código sin embargo; en mi caso cuando ejecuto la aplicación para comprobar si me muestra los datos no consigo nada, ya he revisado 2 o 3 veces el código comparándolo con el que describe y no logro entender donde tengo el error.
Aunque le de clic sobre el botón mostrar datos, no aparece nada en la grilla. Pero me quedo con el buen ejemplo que nos regala, gracias. Siga adelante
También seguí cuidadosamente el material y ocurrio lo mismo, sin embargo deduzco que estas utilizando la forma 2.
EliminarPara utilizar esta forma Eve no aclaro muy bien esta parte "y además Crearle dos columnas.", para la forma 2 tienes que crear 2 o más columnas manualmente en el DataGridView con los nombres que utilizas en tu consulta (Select x,y,z).
Mas vale tarde que nunca, estoy seguro que a alguien mas le servira.
Hola armando, si revisas el código en ejecución es más fácil saber donde está el error
EliminarGuidex, solo en la segunda forma se crean manuales en la primera no porque se asigna un dataset al datasourse del datagridview. No son iguales y tienen funciones que la otra no! Por ejemplo llenar de la forma 2 es muy útil si debes manipular los datos del dataset y necesitas hacer algún cálculo ya que recorres todos los rows.
Saludos
muy buen ejemplo gracias me sirvió de mucho
ResponderEliminarGracias
EliminarHola Eve...
ResponderEliminaruna consulta, que pasa si tu query tiene por ejemplo un left outer join??
Saludos
Asumo que tambien puedes usar algo como
EliminarSELECT *
FROM empleado, departamento
WHERE empleado.ID= departamento.ID
Puedes igual hacer un join con los campos que ud quiera, el código llena el dataset como una nueva tabla y esa se muestra!
Eliminarpodrias hacer el mismo ejemplo en C# por favor
ResponderEliminarTe recomiendo buscar un traductor ONLINE de lenguajes de programación de .net a C#. Es sencillo en realidad!
EliminarHola eve, gracias por tu pagina, estoy intentando aprender al maximo visual basic net y buscando encontre esta magnifica pagina queria pedir tu ayuda en ejercicios de formularios para poder luego entrar de lleno con bases de datos, si ojala pudieras ayudarme con ello te dejo mi correo por si deseas prestarme tu valiosa ayuda, quedo inmensamente agradecido contigo y aqui estoy estudiando con tu pagina mil y mil gracias. mi correo es oscarydey200@hotmail.com
ResponderEliminarHola. disculpa hace tiempo que deje el blog a un lado!
EliminarEspero hayas aprendido durante este tiempo, cualquier cosa me puedes contactar al correo patrypz@hotmail.com
Saludos.
has codigos mas faciles que estos como la coneccion podria ser asi
ResponderEliminarejemplo:
Dim cn As New SqlConnection("server=localhost;integrated security=sspi;database=ventas")
Tienes toda la razón, pero la idea era demostrar que datos conformaban el string de conexión para la base de datos.
ResponderEliminarYo prefiero tener un parámetros donde pueda cambiar los datos con configuración, ya que podemos cambiarla en ejecución, y si su forma es sencilla pero no flexible.
Hola Eve, es un verdadero gusto saludarte. Te escribo desde Honduras y te felicito por las explicaciones tan detalladas que nos brindas a los que estamos aprendiendo el mundo del VB .NET.
ResponderEliminarTe tengo una consulta, por ejemplo si un datagridview yo quiero recuperar el valor de varias tablas de una base de datos SQL ¿cómo lo hago?, pues la tabla principal contiene los códigos que sirven para relacionar los valores en texto de las otras tablas, espero me explique.
El asunto es que cuando quiero utilizar la consulta sql desde vb. net utilizando un "inner join" me genera un error.
Espero por favor me puedas dar un tip o ayuda para lograrlo.
Un gran saludo.
Hola. disculpa hace tiempo que deje el blog a un lado!
EliminarEspero hayas resuelto tus dudas.
Saludos.
que pena por que eres muy buena ....... bueno ojala verte o leerte de vuelta luego.... me gustaron mucho tus respuestas informaticas un saludo desde CHILE....
EliminarClaro, igual puedes contactarme al correo patrypz@hotmail.com y con gusto si puedo te ayudo con cualquier duda!
EliminarMuy bueno Eve, gracias por el tuto
ResponderEliminarCon gusto!
EliminarHola, muy buen aporte, tengo una inquietud, tal vez me puedas ayudar.
ResponderEliminarLleno un grid con datos de un BDD, en el cual existe un campo x, y los datos de este deben ser un link para que puedan llamar al archivo que hace referencia a estos datos. Lo e intentado de mil formas pero no lo e logrado.
Hola, con el datagridView puedes declarar una columna tipo DataGridViewLinkColumn.!!
Eliminarhttp://www.cambiaresearch.com/articles/38/custom-hyperlink-column-for-datagrid te dejo esté link espero te sirva!!
EliminarGracias por el buen codigo puesto.
ResponderEliminardesde que parte seria solo para un formulario gracias
ResponderEliminarhola muy bueno ahora como borro un dataset
ResponderEliminarhola como lleno un datagridview desde los nodos de un treeview seleccionados de otro formulario
ResponderEliminarencontré este video y me funcionó de maravilla y permite descargar el codigo: https://www.youtube.com/watch?v=0A1gq-erBxI espero les sirva
ResponderEliminar