none
Buscar la filas en un DataGridView1 , al momento de ingresar el nombre en un TextBox1, sin conectarse a ninguna Base de datos RRS feed

  • Pregunta

  • lo que quiero es que me salga todas las filas dentro del mismo DataGridView1,  que contengan el nombre que ingrese en un TextBox1, ya que el DataGridView1, inicialmente ha sido cargado  sus datos,  desde una de hoja de excel.

    tener encuenta que  DataGridView1 no tiene conexion a ninguna base de datos,

    Lo que quiero es trabajar la BUSQUEDA DE DICHA FILAS PERO SIN CONEXION A NINGUNA BASE DE DATOS

    agradecería por su ayuda que pudieran brindarme

    sábado, 18 de junio de 2016 0:08

Respuestas

  • Hola:
    En un Form como el de la imagen

    Copia y pega el siguiente codigo
    Imports System.Collections.Generic
    Imports System.ComponentModel
    Imports System.Data
    Imports System.Drawing
    Imports System.Linq
    Imports System.Text
    Imports System.Windows.Forms
    Imports System.Data.SqlClient
    Public Class Form2
    El load lo ignoras porque la carga del DGV la haces de otra forma
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
            Try
                Using cnn As New SqlConnection("Data Source=.\SQLEXPRESS;Initial Catalog=XXXX;Integrated Security=SSPI")
                    Dim sql As String = "Select * From USUARIO"
                    Dim da As New SqlDataAdapter(sql, cnn)
                    Dim dt As DataTable = New DataTable("USUARIO")
                    da.Fill(dt)
                    DataGridView1.DataSource = dt
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
            Me.WindowState = FormWindowState.Maximized
        End Sub
        Private Sub btnBuscar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnBuscar.Click
            Dim lsCadBusqueda As String = Me.TextBox1.Text
            ' validaciones
            If String.IsNullOrEmpty(lsCadBusqueda) Then
                MessageBox.Show("Debe ingresar un valor a buscar", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Return
            End If
            ' elimino la seleccion previa de las celdas
            For Each cell As DataGridViewCell In DataGridView1.SelectedCells
                cell.Selected = False
            Next
            ' aplico el filtro
            Dim rows As List(Of DataGridViewRow) = (From item In DataGridView1.Rows.Cast(Of DataGridViewRow)() Let apellido1 = Convert.ToString(If(item.Cells("APELLIDO1").Value, String.Empty)) Let apellido2 = Convert.ToString(If(item.Cells("APELLIDO2").Value, String.Empty)) Let nombre = Convert.ToString(If(item.Cells("NOMBRE").Value, String.Empty)) Where apellido1.Contains(lsCadBusqueda) OrElse apellido2.Contains(lsCadBusqueda) OrElse nombre.Contains(lsCadBusqueda) Select item).ToList()
            '
            For Each row As DataGridViewRow In rows
                Dim cells As List(Of DataGridViewCell) = (From item In row.Cells.Cast(Of DataGridViewCell)() Let cell = Convert.ToString(item.Value) Where cell.Contains(lsCadBusqueda) Select item).ToList()
                For Each item As DataGridViewCell In cells
                    item.Selected = True
                Next
            Next
        End Sub

        Private Sub DataGridView1_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseDoubleClick
            Dim hit As DataGridView.HitTestInfo = DataGridView1.HitTest(e.X, e.Y)
            If hit.Type = DataGridViewHitTestType.RowHeader Then
                MessageBox.Show("Cabecera de Fila")
            End If
            If hit.Type = DataGridViewHitTestType.ColumnHeader Then
                MessageBox.Show("Cabecera de Columna")
            End If
        End Sub
    End Class

    Un saludo desde Bilbo
    Carlos
    sábado, 18 de junio de 2016 6:57

Todas las respuestas

  • Hola:
    En un Form como el de la imagen

    Copia y pega el siguiente codigo
    Imports System.Collections.Generic
    Imports System.ComponentModel
    Imports System.Data
    Imports System.Drawing
    Imports System.Linq
    Imports System.Text
    Imports System.Windows.Forms
    Imports System.Data.SqlClient
    Public Class Form2
    El load lo ignoras porque la carga del DGV la haces de otra forma
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
            Try
                Using cnn As New SqlConnection("Data Source=.\SQLEXPRESS;Initial Catalog=XXXX;Integrated Security=SSPI")
                    Dim sql As String = "Select * From USUARIO"
                    Dim da As New SqlDataAdapter(sql, cnn)
                    Dim dt As DataTable = New DataTable("USUARIO")
                    da.Fill(dt)
                    DataGridView1.DataSource = dt
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
            Me.WindowState = FormWindowState.Maximized
        End Sub
        Private Sub btnBuscar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnBuscar.Click
            Dim lsCadBusqueda As String = Me.TextBox1.Text
            ' validaciones
            If String.IsNullOrEmpty(lsCadBusqueda) Then
                MessageBox.Show("Debe ingresar un valor a buscar", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Return
            End If
            ' elimino la seleccion previa de las celdas
            For Each cell As DataGridViewCell In DataGridView1.SelectedCells
                cell.Selected = False
            Next
            ' aplico el filtro
            Dim rows As List(Of DataGridViewRow) = (From item In DataGridView1.Rows.Cast(Of DataGridViewRow)() Let apellido1 = Convert.ToString(If(item.Cells("APELLIDO1").Value, String.Empty)) Let apellido2 = Convert.ToString(If(item.Cells("APELLIDO2").Value, String.Empty)) Let nombre = Convert.ToString(If(item.Cells("NOMBRE").Value, String.Empty)) Where apellido1.Contains(lsCadBusqueda) OrElse apellido2.Contains(lsCadBusqueda) OrElse nombre.Contains(lsCadBusqueda) Select item).ToList()
            '
            For Each row As DataGridViewRow In rows
                Dim cells As List(Of DataGridViewCell) = (From item In row.Cells.Cast(Of DataGridViewCell)() Let cell = Convert.ToString(item.Value) Where cell.Contains(lsCadBusqueda) Select item).ToList()
                For Each item As DataGridViewCell In cells
                    item.Selected = True
                Next
            Next
        End Sub

        Private Sub DataGridView1_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseDoubleClick
            Dim hit As DataGridView.HitTestInfo = DataGridView1.HitTest(e.X, e.Y)
            If hit.Type = DataGridViewHitTestType.RowHeader Then
                MessageBox.Show("Cabecera de Fila")
            End If
            If hit.Type = DataGridViewHitTestType.ColumnHeader Then
                MessageBox.Show("Cabecera de Columna")
            End If
        End Sub
    End Class

    Un saludo desde Bilbo
    Carlos
    sábado, 18 de junio de 2016 6:57
  •  Muchas gracias Enrique M. Montejo , pero al copiar los codigos  me sale muchas observaciones, mejor te envió  mi proyecto de como lo estoy haciendo i hasta donde avance, i asi me puedas ayudar , a solucionar mi problema, muchas gracias de todas maneras

    

    AHORA TE ENVIO EL CODIGO

    Imports System.Data.OleDb 'Importacion necesaria para trabajar con ficheros excel
    Imports System.Data
    Imports Microsoft.Office.Interop
    Imports System.IO

    Imports System



    Public Class Form1
        Dim C1 As Integer
        Dim C2 As Integer
        Dim C3 As Integer
        Dim C4 As Integer
        Dim nombre As String
        Dim valor As String


        Dim XLApp As Excel.Application  'Aplicación Excel en varaible XLApp
        Dim XLBook As Excel.Workbook    'Libro de Excel en variable XLBook
        Dim XLSheet As Excel.Worksheet  'Hoja de cálculo en variable XLSheet
        Dim XL As New Excel.Application

        Dim respuesta As String
        Dim filasucupadas As Integer
        Dim filasdesocupadas As Integer
        Dim Ultimafila As Long
        Dim filas As Integer
        Dim i As Integer
        Dim j As Integer
        Dim di As Integer
        Dim dj As Integer
        Dim n As Integer
        Dim r As Integer
        Dim x As Integer

      

        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

            Dim XL As New Excel.Application

            'ASIGNAMOS LA RUTA DE DONDE ESTA EL ARCHIVO, SI MOVEMOS EL ARCHIVO HAY QUE CAMBIAR LA RUTA
            With XL.Workbooks.Open("I:\IMPORTAR DATOS DE EXCEL A UN DATAGRIDVIEW\FORMATOPROGRAMA.xlsx")
            End With


            XLSheet = XL.ActiveSheet 'LO ACTIVAMOS PARA TRABAJAR
            XLSheet.Name = "DATOS"  'Asigna nombre a la hoja

            XL.Visible = True ' HACEMOS QUE APARESCA


            Ultimafila = XLSheet.Cells(10000, 2).End(Excel.XlDirection.xlUp).Row + 1 'te dice cual es la ultima fila en blanco despues de el ultimo dato el +1 es por va el titulo poesto para cada columna
            TextBox2.Text = Ultimafila

            di = Ultimafila - 2

            Me.DataGridView1.Rows.Add(di) 'establesco el numero de filasque deseo que aparesca en mi datagridview
            Me.DataGridView2.Rows.Add(di)


            i = 2
            r = 0

            Do

                Me.DataGridView1(0, r).Value = XLSheet.Cells(i, 1).Value ' (i es fila) i (1 es columna) en excel,     ( 0 es la columna) i (4 la fila) en un datagrid
                Me.DataGridView1(1, r).Value = XLSheet.Cells(i, 2).Value
                Me.DataGridView1(2, r).Value = XLSheet.Cells(i, 3).Value
                Me.DataGridView1(3, r).Value = XLSheet.Cells(i, 4).Value
                Me.DataGridView1(4, r).Value = XLSheet.Cells(i, 5).Value
                Me.DataGridView1(5, r).Value = XLSheet.Cells(i, 6).Value
                Me.DataGridView1(6, r).Value = XLSheet.Cells(i, 7).Value
                Me.DataGridView1(7, r).Value = XLSheet.Cells(i, 8).Value
                Me.DataGridView1(8, r).Value = XLSheet.Cells(i, 9).Value
                Me.DataGridView1(9, r).Value = XLSheet.Cells(i, 10).Value
                Me.DataGridView1(10, r).Value = XLSheet.Cells(i, 11).Value
                Me.DataGridView1(11, r).Value = XLSheet.Cells(i, 12).Value
                Me.DataGridView1(12, r).Value = XLSheet.Cells(i, 13).Value
                Me.DataGridView1(13, r).Value = XLSheet.Cells(i, 14).Value
                Me.DataGridView1(14, r).Value = XLSheet.Cells(i, 15).Value
                Me.DataGridView1(15, r).Value = XLSheet.Cells(i, 16).Value
                Me.DataGridView1(16, r).Value = XLSheet.Cells(i, 17).Value
                Me.DataGridView1(17, r).Value = XLSheet.Cells(i, 18).Value
                Me.DataGridView1(18, r).Value = XLSheet.Cells(i, 19).Value
                Me.DataGridView1(19, r).Value = XLSheet.Cells(i, 20).Value
                Me.DataGridView1(20, r).Value = XLSheet.Cells(i, 21).Value
                Me.DataGridView1(21, r).Value = XLSheet.Cells(i, 22).Value
                Me.DataGridView1(22, r).Value = XLSheet.Cells(i, 23).Value
                Me.DataGridView1(23, r).Value = XLSheet.Cells(i, 24).Value
                Me.DataGridView1(24, r).Value = XLSheet.Cells(i, 25).Value
                Me.DataGridView1(25, r).Value = XLSheet.Cells(i, 26).Value
                Me.DataGridView1(26, r).Value = XLSheet.Cells(i, 27).Value


                r = r + 1
                i = i + 1

            Loop While i < Ultimafila




        End Sub

        Private Sub DataGridView1_CellContentClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick

            Dim r As Integer

            r = DataGridView1.CurrentRow.Index

            TextBox2.Text = Me.DataGridView1(1, r).Value
            TextBox3.Text = Me.DataGridView1(5, r).Value
            TextBox19.Text = Me.DataGridView1(12, r).Value
            TextBox18.Text = Me.DataGridView1(13, r).Value
            TextBox6.Text = Me.DataGridView1(14, r).Value
            TextBox5.Text = Me.DataGridView1(15, r).Value
            TextBox8.Text = Me.DataGridView1(16, r).Value
            TextBox7.Text = Me.DataGridView1(17, r).Value
            TextBox14.Text = Me.DataGridView1(18, r).Value
            TextBox13.Text = Me.DataGridView1(19, r).Value
            TextBox17.Text = Me.DataGridView1(20, r).Value
            TextBox12.Text = Me.DataGridView1(21, r).Value
            TextBox11.Text = Me.DataGridView1(22, r).Value
            TextBox16.Text = Me.DataGridView1(23, r).Value
            TextBox10.Text = Me.DataGridView1(24, r).Value
            TextBox9.Text = Me.DataGridView1(25, r).Value
            TextBox15.Text = Me.DataGridView1(26, r).Value


        End Sub

        Private Sub DataGridView1_CellEnter(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEnter

            Dim r As Integer

            r = DataGridView1.CurrentRow.Index

            TextBox2.Text = Me.DataGridView1(1, r).Value
            TextBox3.Text = Me.DataGridView1(5, r).Value
            TextBox19.Text = Me.DataGridView1(12, r).Value
            TextBox18.Text = Me.DataGridView1(13, r).Value
            TextBox6.Text = Me.DataGridView1(14, r).Value
            TextBox5.Text = Me.DataGridView1(15, r).Value
            TextBox8.Text = Me.DataGridView1(16, r).Value
            TextBox7.Text = Me.DataGridView1(17, r).Value
            TextBox14.Text = Me.DataGridView1(18, r).Value
            TextBox13.Text = Me.DataGridView1(19, r).Value
            TextBox17.Text = Me.DataGridView1(20, r).Value
            TextBox12.Text = Me.DataGridView1(21, r).Value
            TextBox11.Text = Me.DataGridView1(22, r).Value
            TextBox16.Text = Me.DataGridView1(23, r).Value
            TextBox10.Text = Me.DataGridView1(24, r).Value
            TextBox9.Text = Me.DataGridView1(25, r).Value
            TextBox15.Text = Me.DataGridView1(26, r).Value


        End Sub

    lO QUE QUIERO ES BUSCAR , LAS FILAS , QUE ME SALGAN CUANDO AL MOMENTO DE DIJITAR EL TEXTO, LAS FILAS ME ESTEN APARECIENDO EN EL MISMO INSTANTE DESPUES DE DIJITAR UNA LETRA.

    LO QUE QUIERO ES SOLO BUSCAR EN LA " Column1" ya que aqui estan los nombres de los pruductos.

    como se ve el datagridview1 lo he cargado de una hoja de excel, i no esta conectado a ninguna base de datos. Esto lo hago por que quiero que la base de datos este en una hoja de excel., i no en sql o acces.

    si se pudiera simplificar mas estos codigos i hacerlo mas simple,  los agradecería mucho

    domingo, 19 de junio de 2016 22:16