none
Boton buscar mas caja de texto en datagridview con sql

    Pregunta

  • Hola, tengo un formulario, donde acabo de crear un boton buscar con su caja de texto y un datagridview , lo que deseo es que el texto que ingrese sea buscado en mi tabla de sql y lo muestre en datagridview ( que son 3 columnas ).

    espero me puedan ayudar.

    Visual Basic 2015

    SQL 2014

    Sdls.

    Angielo

    miércoles, 29 de marzo de 2017 15:26

Respuestas

  • Hola Botón Buscar datagridview SQL,

    ¿Quieres hacer el filtro por una columna o por varias columnas y/o campos al mismo tiempo?

    Por ejemplo, si quieres filtrar por el 'Campo2' y obtener todos los registros que contengan entre sus valores el dato a filtrar proveniente del TextBox utilizarías el operador LIKE en tu consulta.

    Para ir filtrando los datos mientras estás escribiendo podrías hacer uso del evento TextChanged o KeyUp de tu TextBox.

    Private Sub txtFiltro_TextChanged(sender As Object, e As EventArgs) Handles txtFiltro.TextChanged
        Try
            Using con As New SqlConnection("MiCadenaConexion")
    
                Dim query = "SELECT id, campo1, campo2 FROM " &
                        "miTabla WHERE campo2 LIKE @filtro"
    
                Dim adap As New SqlDataAdapter(query, con)
    
                'Agregamos el parámetro
                adap.SelectCommand.Parameters.AddWithValue("@filtro",
                                        String.Format("%{0}%", CType(sender, TextBox).Text))
    
                Dim dt As New DataTable
    
                'Cargamos el DataTable con el resultado de la query
                adap.Fill(dt)
    
                'Mostramos los resultado en el DataGridView
                DataGridView1.DataSource = dt
    
            End Using
        Catch ex As Exception
            'Si se produce algún error lo mostramos
            MessageBox.Show(ex.Message)
        End Try
    End Sub


    Pero si quieres filtrar por varios campos a la vez, tendrías que usar filtros condicionales, tal y como lo indican en el siguiente enlace.

    Filtros Condicionales (1/2)

    Si tienes problemas en la implementación puedes mencionarlas.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    miércoles, 29 de marzo de 2017 19:57

Todas las respuestas

  • Hola, 

    Lo que debes realizar es una función buscar enviando un parámetro a la base de datos, a su vez un procedimiento almacenado que te muestre, por ejemplo:

    En sql

    Create Proc sp_Buscar

    @texto varchar(50)

    as

    begin

    select * from tabla where campo = @texto

    end

    En visual:

    Debes crear un metodo buscar en donde le envies el parametro (el cual es de la caja de texto), una vez ejecutado el procedimiento deberás mostrar el valor en la grilla

    Guíate de este ejmplo: CRUD with vb Forms

    Saludos.


    Si serví a tu consulta, no olvides votar como útil.

    miércoles, 29 de marzo de 2017 15:37
  • También apóyate en esto, para que tengas una idea como estructurar tu acceso a los datos:

    Dim conex As String = "conexión"
    Using cn As New SqlConnection(conex)

    cn.Open()

    Dim sql As String = "SELECT nombre FROM Tabla WHERE campo =@buscar"
    Dim cmd As New SqlCommand(query, cn)
    cmd.Parameters.AddwithValue("@buscar", txtbuscar.text)

    Dim read As SqlDataReader = cmd.ExecuteReader()

    If read.Read() Then
              'llenas tu gridview con el metodo datassource
    End If
    End Using


    Si serví a tu consulta, no olvides votar como útil.

    miércoles, 29 de marzo de 2017 15:46
  • Hola Botón Buscar datagridview SQL,

    ¿Quieres hacer el filtro por una columna o por varias columnas y/o campos al mismo tiempo?

    Por ejemplo, si quieres filtrar por el 'Campo2' y obtener todos los registros que contengan entre sus valores el dato a filtrar proveniente del TextBox utilizarías el operador LIKE en tu consulta.

    Para ir filtrando los datos mientras estás escribiendo podrías hacer uso del evento TextChanged o KeyUp de tu TextBox.

    Private Sub txtFiltro_TextChanged(sender As Object, e As EventArgs) Handles txtFiltro.TextChanged
        Try
            Using con As New SqlConnection("MiCadenaConexion")
    
                Dim query = "SELECT id, campo1, campo2 FROM " &
                        "miTabla WHERE campo2 LIKE @filtro"
    
                Dim adap As New SqlDataAdapter(query, con)
    
                'Agregamos el parámetro
                adap.SelectCommand.Parameters.AddWithValue("@filtro",
                                        String.Format("%{0}%", CType(sender, TextBox).Text))
    
                Dim dt As New DataTable
    
                'Cargamos el DataTable con el resultado de la query
                adap.Fill(dt)
    
                'Mostramos los resultado en el DataGridView
                DataGridView1.DataSource = dt
    
            End Using
        Catch ex As Exception
            'Si se produce algún error lo mostramos
            MessageBox.Show(ex.Message)
        End Try
    End Sub


    Pero si quieres filtrar por varios campos a la vez, tendrías que usar filtros condicionales, tal y como lo indican en el siguiente enlace.

    Filtros Condicionales (1/2)

    Si tienes problemas en la implementación puedes mencionarlas.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    miércoles, 29 de marzo de 2017 19:57
  • Muchas gracias!!!!
    jueves, 6 de abril de 2017 21:29