domingo, 24 de noviembre de 2013

Agregar / Eliminar filas, Filtrar, Cargar y Guardar Informacion en un Datagridview Visual Basic .NET

AQUI LES DEJO ESTO QUE ENCONTRE EN LA RED LO POSTEO PÓRQUE ES DE BASTANTE IMPORTANCIA PARA LOS INTERESADOS EN ESTO LENGUAJE AQUI SE LOS DEJOS ESTEN AL PENDIENTE SEGUIRE COMPARTIENDO MATERIAL ES DEMASIADO LO QUE TENGO Y VAMOS A COMPARTIRLO TODO POR QUE EL CONOCIMIENTO ES GRATUITO.
Se trata de poder agregar registros (filas) o eliminarlos del mismo datgridview; Hacer un filtro de búsqueda en él, cargar información desde la base de datos, etc.
Primero creamos un proyecto de Visual studio (en este tutorial he utilizado Visual Basic .NET y C#) y empezamos hacer la interfaz gráfica, como resultado nos debe quedar así:
Para este ejemplo vamos a tener que importar la clase System.Data,OleDb (porque vamos a trabajar con access). La cadena de conexión seria esta:
Dim Con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Application.StartupPath +"\\Cliente.accdb;")
Para cargar los registros desde la base de datos hasta el datagridview tendriamos que usar esta funcion declada como Datatable:
Function CargarRegistrosBD(ByVal dgv As DataGridViewAs DataTable
        Con.Open()
        Dim dt As New DataTable()
        Dim cmd As New OleDbCommand("SELECT [NombreCliente], [Direccion], [Telefono] FROM Cliente", Con)
        Dim da = New OleDbDataAdapter(cmd)
        da.Fill(dt)
        Con.Close()
        Return dt
End Function
Para guardar los registros desde el datagridview hasta la base de datos sería así:
Function GuardarRegistrosBD(ByVal dgv As DataGridViewAs Boolean
        Dim numreg As Integer
        Con.Open()       
        For i = 0 To dgv.Rows.Count - 1
            Using cmd As New OleDbCommand("INSERT INTO Cliente([NombreCliente],[Direccion], [Telefono]) VALUES(@nom, @dir, @tel)", Con)
                cmd.Parameters.Clear()
                cmd.Parameters.Add("@nom"OleDbType.VarChar).Value = dgv.Rows(i).Cells(0).Value
                cmd.Parameters.Add("@dir"OleDbType.VarChar).Value = dgv.Rows(i).Cells(1).Value
                cmd.Parameters.Add("@tel"OleDbType.VarChar).Value = dgv.Rows(i).Cells(2).Value
                numreg += cmd.ExecuteNonQuery()
            End Using
        Next
        If numreg > 0 Then
            GuardarRegistrosBD = True
        Else
            GuardarRegistrosBD = False
        End If
        Con.Close()
End Function
Para buscar o hacer un filtro en el datgridview al momento de que escribamos algo en el textbox de busqueda utilizaríamos esta función: Filtro definida como datatable:
Function Filtro(ByVal busq As String) As DataTable
        con.Open()
        Dim dt As New DataTable()
        Dim cmd As New OleDbCommand("SELECT [NombreCliente], [Direccion], [Telefono] FROM Cliente WHERE NombreCliente LIKE '%" & busq & "%'", Con)
        Dim da = New OleDbDataAdapter(cmd)
        da.Fill(dt)
        con.Close()
        Return dt
End Function
Listo, ahora en el evento Click del boton de cargar registros (BtnCargarRegistrosBaseDatos) colocamos el codigo de la funcion para cargar dichos registros; y en el evento Click del boton guardar registros (BtnGuardarABaseDatos) colocamos un condicional que primero preguntaría si el datgridview no esta vacío y luego preguntaría que respuesta trajo la funcion GuardarRegistrosBD: falso o verdadero... Al final sería asi:
If DgvOperaciones.Rows.Count > 0 Then
            If GuardarRegistrosBD(DgvOperaciones) Then
                MessageBox.Show("Registros guardados")
                DgvOperaciones.Rows.Clear()
            Else
                MessageBox.Show("No se pudieron guardar los registros")
            End If
End If
Ahora para pasar los datos digitados en los textbox's hasta el datgridview , hacemos esto (preguntamos si los textbox's no estan vacíos y procedemos a agregar los datos en el orden de las columnas):
If TxtDireccion.Text <> "" And TxtNombre.Text <> "" And TxtTelefono.Text <> "" Then
            DgvOperaciones.Rows.Add(TxtNombre.Text, TxtDireccion.Text, TxtTelefono.Text)
        Else
            MessageBox.Show("Completa los campos")
End If
Y por último para eliminar la fila de un registro que no queramos guardar en la base de datos, hacemos esto (preguntamos si el datagrid no esta vacío y procedemos a eliminar la fila seleccionada):
If DgvOperaciones.Rows.Count > 0 Then
            DgvOperaciones.Rows.RemoveAt(DgvOperaciones.CurrentRow.Index)
End If
Bueno amigos, espero les siva este pequeño ejemplo ya que he visto muchos que no tienen mucha claridad en cuanto datgridviews se refieren. No te olvides de compartir este tutorial, de comentar si te apetece y de seguirme en facebook, youtube, twitter y obviamente aquí en mi página web.
Adjunto el proyecto de Visual Studio 2010 en Visual Basic .NET y C#.

3 comentarios:

  1. Gracias amigo dime si sirvio este enlace que te envie para visual basic 2010 pdf Users
    https://mega.co.nz/#!ntJgmZZL!T_rvAAK-EMZQ8WpZUd4jBDPCQ-RcKt-XB9vI5gdDGdY

    ResponderEliminar
  2. amigo una pregunta donde esta el link de descarga agradesco tu respuesta

    ResponderEliminar