24 de enero de 2012

DGV - VB.NET 1/3

Para llenar un DataGridView en VB.NET hay diferentes formas, la primera es dejando todo el trabajo de acceso a datos a un modulo a fin de invocar una función que me devuelva los datos que necesito. Para el caso me conectare a una tabla llamada img que contiene tres campos con información: nombre, comentarios y ruta.

Lo primero será crear nuestro proyecto de VB (clic a la imagen para agrandarla)



Ahora añadimos un DataGridView al formulario


A continuación crearemos nuestra cadena de conexión a la base de datos, lo que haremos es dejar guardada esa conexión en el app.config del proyecto, para esto en el Solution Explorer, damos click derecho a nuestro proyecto y nos vamos a propiedades


Luego, en el lado izquierdo tendremos diferentes "pestañas", aquí seleccionamos settings y tendremos algo como la imagen


comenzamos a cambiar los datos presentados a fin de lograr la configuración deseada, en mi caso en nombre coloque conexión, en type se debe cambiar de string que viene por defecto a (Connection string), en la parte de scope no cambiaremos nada y en value daremos al botón de examinar representado por ... (tres puntos)


Tendremos la siguiente pantalla y damos click a la pestaña de Server name, esperamos un momento pues tarda su poco hasta que aparezca nuestro servidor local.


Luego seleccionamos en la misma ventana nuestra base con la que trabajar, presionamos OK y ya


Ahora agregamos un nuevo modulo al proyecto


yo le deje el nombre por defecto que seria Module1 y dentro de este colocamos este código:



Imports System.Data.SqlClient

Module Module1
    Dim cnn As New SqlConnection(My.Settings.conexion)
    Dim sql As String = "select * from img"
    Dim sqlda As SqlDataAdapter
    Dim sqldt As DataTable
    Public Function llenarDatos() As DataTable
        Try
            cnn.Open()
            sqlda = New SqlDataAdapter(sql, cnn)
            sqldt = New DataTable
            sqlda.Fill(sqldt)

        Catch ex As Exception
            MessageBox.Show(ex.Message.ToString, _
                            "error", MessageBoxButtons.OK, _
                            MessageBoxIcon.Error)
        Finally
            If cnn.State = ConnectionState.Open Then
                cnn.Close()
            End If
        End Try
        Return sqldt
    End Function
End Module



ahora vamos con el Form, pero como seria muy fácil solo llenar un DataGridView, agreguemos un BindingNavigator para movernos por los datos que nos presente el DataGridView y también agreguemos 3 textbox con sus respectivos labels a fin de mostrar en estos la fila por la que nos movamos en el DataGridView, entonces el form quedaría así:


y el código para este form en el evento load seria así:


Public Class Form1
    Dim bs As New BindingSource
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        bs.DataSource = llenarDatos()
        BindingNavigator1.BindingSource = bs
        DataGridView1.DataSource = bs
        TextBox1.DataBindings.Add("text", bs, "nombre")
        TextBox2.DataBindings.Add("text", bs, "comentarios")
        TextBox3.DataBindings.Add("text", bs, "ruta")
    End Sub
End Class

se compila y lo ejecutan y ya