none
COMO HACER UNA BUSQUEDA EN VARIOS DATAGRIDVIEW QUE SE ENCUENTRAN EN UN MISMO FORMULARIO VB.NET? RRS feed

  • Pregunta

  • buenas tardes: alguien me podría apoyar con un poco se su conocimiento quiero hacer una busqueda atravez de un textbox busco un numero de folio, pero quiero que al escribir el folio se vaya al datagrid en cual este, ya que tengo 5 datagrid en un mismo formulario en un tabcontrol???

    asi hago la busqueda :

      Dim dt As New OleDb.OleDbDataAdapter("select * from tabla where folio like '%" & (TextBox1.Text) & "%' ", CONEXION)
             Dim ds As New DataSet
                dt.Fill(ds, "tabla")
               DataGridView2.DataSource = ds

    CONEXION.Close() 

    como seria un case o algo, que busque el numero de remolque en todos los grid y se vaya al grid donde este???

    martes, 14 de octubre de 2014 18:09

Respuestas

  • Hola:
    En un Form con 2 DataGridView, 1 Button y 1 TextBox, copia y pega el siguiente codigo

    Option Explicit On
    Option Strict On
    Imports System.Data.SqlClient

    Public Class Form1
        Private msCadenaSQL As String = "Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True"

        Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
            Try
                'Carga del primer datagrid
                Using loConexion As New SqlConnection(msCadenaSQL)
                    Dim lDataAdapter As New SqlDataAdapter("SELECT * FROM Customers Where CustomerID like 'A%'", loConexion)
                    Dim lDataTable As New DataTable
                    lDataAdapter.Fill(lDataTable)
                    Me.DataGridView1.DataSource = lDataTable
                End Using
                'Carga del segundo datagrid
                Using loConexion As New SqlConnection(msCadenaSQL)
                    Dim lDataAdapter As New SqlDataAdapter("SELECT * FROM Customers Where CustomerID like 'B%'", loConexion)
                    Dim lDataTable As New DataTable
                    lDataAdapter.Fill(lDataTable)
                    Me.DataGridView2.DataSource = lDataTable
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message, "Load", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
        End Sub

        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim lsCadBusqueda As String = Me.TextBox1.Text
            ' aplico el filtro a primer datagrid
            Dim rows1 As List(Of DataGridViewRow) = (From item In DataGridView1.Rows.Cast(Of DataGridViewRow)() Let CustomerID = Convert.ToString(If(item.Cells("CustomerID").Value, String.Empty)) Where CustomerID.Contains(lsCadBusqueda) Select item).ToList()
            ' aplico el filtro a segundo datagrid
            Dim rows2 As List(Of DataGridViewRow) = (From item In DataGridView2.Rows.Cast(Of DataGridViewRow)() Let CustomerID = Convert.ToString(If(item.Cells("CustomerID").Value, String.Empty)) Where CustomerID.Contains(lsCadBusqueda) Select item).ToList()
            '
            If rows1.Count > 0 Then
                Me.DataGridView1.Focus()
                MessageBox.Show("El Primer DataGrid tiene el foco", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            ElseIf rows2.Count > 0 Then
                Me.DataGridView2.Focus()
                MessageBox.Show("El Segundo DataGrid tiene el foco", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Else
                Me.TextBox1.Focus()
                MessageBox.Show("No esta en ninguno", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        End Sub
    End Class

    Un saludo desde Bilbo
    Carlos

    miércoles, 15 de octubre de 2014 10:39

Todas las respuestas

  • alguna ayuda??? porfa
    martes, 14 de octubre de 2014 21:27
  • una consulta si te realiza la busqueda?

    podrias explicar mejor tu problema? cuando escriban el folio en el textbox y pierda el tab realize la busqueda o queres que cuando escriban en el textbox y pierda el tab se vaya a realizar la busqueda en un grid en especifico?

    martes, 14 de octubre de 2014 22:38
  • no pues no quiero que nada quite solo que la momento de escribir en el texbox, se posicione sobre el datagridview donde se encuentra el dato,espero sea ya un poco mas entendible y me puedan ayudar
    martes, 14 de octubre de 2014 22:52
  • Hola:
    En un Form con 2 DataGridView, 1 Button y 1 TextBox, copia y pega el siguiente codigo

    Option Explicit On
    Option Strict On
    Imports System.Data.SqlClient

    Public Class Form1
        Private msCadenaSQL As String = "Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True"

        Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
            Try
                'Carga del primer datagrid
                Using loConexion As New SqlConnection(msCadenaSQL)
                    Dim lDataAdapter As New SqlDataAdapter("SELECT * FROM Customers Where CustomerID like 'A%'", loConexion)
                    Dim lDataTable As New DataTable
                    lDataAdapter.Fill(lDataTable)
                    Me.DataGridView1.DataSource = lDataTable
                End Using
                'Carga del segundo datagrid
                Using loConexion As New SqlConnection(msCadenaSQL)
                    Dim lDataAdapter As New SqlDataAdapter("SELECT * FROM Customers Where CustomerID like 'B%'", loConexion)
                    Dim lDataTable As New DataTable
                    lDataAdapter.Fill(lDataTable)
                    Me.DataGridView2.DataSource = lDataTable
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message, "Load", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
        End Sub

        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim lsCadBusqueda As String = Me.TextBox1.Text
            ' aplico el filtro a primer datagrid
            Dim rows1 As List(Of DataGridViewRow) = (From item In DataGridView1.Rows.Cast(Of DataGridViewRow)() Let CustomerID = Convert.ToString(If(item.Cells("CustomerID").Value, String.Empty)) Where CustomerID.Contains(lsCadBusqueda) Select item).ToList()
            ' aplico el filtro a segundo datagrid
            Dim rows2 As List(Of DataGridViewRow) = (From item In DataGridView2.Rows.Cast(Of DataGridViewRow)() Let CustomerID = Convert.ToString(If(item.Cells("CustomerID").Value, String.Empty)) Where CustomerID.Contains(lsCadBusqueda) Select item).ToList()
            '
            If rows1.Count > 0 Then
                Me.DataGridView1.Focus()
                MessageBox.Show("El Primer DataGrid tiene el foco", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            ElseIf rows2.Count > 0 Then
                Me.DataGridView2.Focus()
                MessageBox.Show("El Segundo DataGrid tiene el foco", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Else
                Me.TextBox1.Focus()
                MessageBox.Show("No esta en ninguno", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        End Sub
    End Class

    Un saludo desde Bilbo
    Carlos

    miércoles, 15 de octubre de 2014 10:39
  • en efecto si me dice en que grid esta gracias carlos, pero quisiera que se posicione sobre la fila del grid y solo deje el que ande buscando y quite a los demas del grid=? como seria eso??? 
    jueves, 16 de octubre de 2014 18:37
  • asi cargo los datos

     Public Sub muestra()

            If Not CONEXION.State = ConnectionState.Open Then
                CONEXION.Open()
            End If
            Dim da As New OleDbDataAdapter("select * from tabla ", CONEXION)
            'Luego declaramos que sera el que trabaje los datos traidos de la consulta
            Dim ds As New DataSet
            'Luego llevamos el dataset utilizando el metodo fill del dataadapter
            da.Fill(ds, "tabla")
            'Luego la asignamos el dataset al datagrid para mostrar los datos que son por el momento
            DataGridView1.DataSource = ds
            DataGridView1.DataMember = "tabla"
            'Luego cerramos la conexion
            CONEXION.Close()

    y asi tambien uno para el datagridview2

    jueves, 16 de octubre de 2014 18:42
  • Hola:

    Si quieres quitar los demas solo tienes que hacer DatagridViewxxxx.Visible=False

    "y asi tambien uno para el datagridview2"
    En el ejemplo, el primer datagridview se carga con los clientes que empiezan por A y el segundo datagridview se carga con los clientes que empiezan por B
    En tu caso, tu debes de saber que es lo que se carga en cada datagriview

    Un saludo desde Bilbo
    Carlos

    viernes, 17 de octubre de 2014 8:40