none
Búsqueda múltiple en el mismo TextBox RRS feed

  • Pregunta

  • Hola a tod@s!
    Tengo un código que utilizo para hacer una búsqueda en un textbox. Puedo buscar o por el número o nombre o apellido usando este código:

    Private Sub buscar()
            myConnection.Open()
            Dim ds As New DataSet
            Dim dt As New DataTable
            ds.Tables.Add(dt)
            Dim da As New OleDbDataAdapter
            da = New OleDbDataAdapter("SELECT * FROM EmpleadosBD WHERE [Número] & Nombre & Apellidos Like '%" & txt_Buscar.Text & "%'", myConnection)
            da.Fill(dt)
            da.Fill(dt)
            da.Fill(dt)
            txt_EmpNo.Text = dt.Rows(2).Item(0)
            (donde aquí irían los demás campos cambiando el item a (1), (2) y así sucesivamente.
    End Sub

    Y mi pregunta es: ¿Si quiero buscar por nombre y apellido en el mismo textbox?

    MIL GRACIAS A TOD@S

    domingo, 2 de diciembre de 2018 9:17

Respuestas

  • Gracias por tú ayuda. No me ha servido porque tendría que modificar mucho código pero me has dado una pista.

    Así quedaría mi código:

    Private Sub buscar()
            myConnection.Open()
            Dim ds As New DataSet
            Dim dt As New DataTable
            ds.Tables.Add(dt)
            Dim da As New OleDbDataAdapter
            da = New OleDbDataAdapter("SELECT * FROM EmpleadosBD WHERE [Número] & Nombre + ' ' + Apellidos Like '%" & txt_Buscar.Text & "%'", myConnection)
            da.Fill(dt)
            da.Fill(dt)
            da.Fill(dt)
            txt_EmpNo.Text = dt.Rows(2).Item(0)
            (donde aquí irían los demás campos cambiando el item a (1), (2) y así sucesivamente.
    End Sub

    MIL GRACIAS A TOD@S!

    lunes, 3 de diciembre de 2018 16:16

Todas las respuestas

  • Hola si quieres hacer una busqueda avanzada, deberes trabajar con store procedure, 

    te dejo un ejemplo de como debe ir tu estructura 

    @letra as varchar(50)
    as
    SELECT ....
    FROM   ...
    where ...+...+.. LIKE '%' + @letra + '%'

    Es muy sencillo y potente, suerte!

    domingo, 2 de diciembre de 2018 9:27
  • Si lo que pasa que quiero hacer la busqueda en un textbox y que salgan los datos en otro textbox en vez de datagridview. Valdría igual?

    gracias Elias!

    domingo, 2 de diciembre de 2018 17:16
  • Hola Andoniar7819: Si necesitas realizar una búsqueda avanzada con dos o mas parámetros de búsqueda, lo que necesitas hacer es lo siguiente:

    La búsqueda podrías hacerla con un Select case, para esto has lo siguiente:

    declara una variable de tipo entero esta variable debe de estar publicada a nivel de formulario.

    ejemplo: private CasoBuscar as integer

    En el form en donde tienes tu textbox para hacer el filtro, ahí puedes agregar un radiobuton para indicar una búsqueda en especifico, ejemplo un radiobuton podría ser: BuscarPorNombre otro podría ser : BuscarPorNumero otro podría ser: BuscarPorApellidos y así sucesivamente.

    En el evento clip de cada objeto(radiobuton) indicas el numero de caso es decir cuando se de clip en el radiobuton: BuscarPorNombre, la variable que has publicado le pasas el valor de 1 ejemplo CasoBuscar=1

    y cuando se de clip en otro indicas el numero de caso que tomara y así sucesivamente...

    En el evento Textchanged de tu textbox en donde realizas la búsqueda ahí harás tu select case de la siguiente manera:

    Private Sub txtsearch_TextChanged(sender As Object, e As EventArgs) Handles txtsearch.TextChanged
            Try
                Select Case CASOBUSCAR
                    Case 1
                        Me.txtsearch.Text = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToUpper(Me.txtsearch.Text)
                        Me.txtsearch.SelectionStart = Me.txtsearch.Text.Length
                        dv.RowFilter = String.Format(" [Código Empleado] Like '{0}%'", txtsearch.Text)
                    Case 2
                        Me.txtsearch.Text = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(Me.txtsearch.Text)
                        Me.txtsearch.SelectionStart = Me.txtsearch.Text.Length
                        dv.RowFilter = String.Format(" Nombres+ ' ' + Apellidos Like '{0}%'", txtsearch.Text)
                End Select
    
            Catch ex As Exception
                FormMsgBoxError.Show("Error al querer realizar la busqueda por favor verifique que los datos sean correctos.", "Se produjo un error.")
            End Try
        End Sub

    Este ejemplo lo tengo en un sistema que he hecho y funciona al 100% aunque la búsqueda que hago es local es decir hago un filtro el el datagridview ya cargado previamente, pero si tu quieres hacer una consulta a la BD de igual forma de va a funcionar solo mete la consulta en el caso correspondiente de tu select case

    algo así: si el caso 1 quieres buscar por nombre entonces la consulta métela en el caso 1 de la siguiente manera

    Select "campo" from "tu tabla" where "parametro de búsqueda"= "tu textbox en donde realizas la búsqueda"

    y listo.

    si en ver de los radiosbuton quieres poner un booton y personalizarlo perfectamente puedes hacerlo, siempre y cuando indique los caso no habrá problemas yo uso botones en ver de radiobuton a como te muestro en la siguiente ejemplo 

    Aquí busco por N-A que en el sistema significa Buscar Por Nombre y Apellido

    Aquí busco por C-E que es buscar Por Código De Empleado

    bueno eso es todo, cualquier  duda no dudes en contactarme mi correo es reynaldv12@gmail.com

    Si te he podido ayudar a resolver tu consulta, por favor no olvides en marcar como respuesta para poder continuar ayudando a quienes lo necesitan.

     



    lunes, 3 de diciembre de 2018 15:23
  • Gracias por tú ayuda. No me ha servido porque tendría que modificar mucho código pero me has dado una pista.

    Así quedaría mi código:

    Private Sub buscar()
            myConnection.Open()
            Dim ds As New DataSet
            Dim dt As New DataTable
            ds.Tables.Add(dt)
            Dim da As New OleDbDataAdapter
            da = New OleDbDataAdapter("SELECT * FROM EmpleadosBD WHERE [Número] & Nombre + ' ' + Apellidos Like '%" & txt_Buscar.Text & "%'", myConnection)
            da.Fill(dt)
            da.Fill(dt)
            da.Fill(dt)
            txt_EmpNo.Text = dt.Rows(2).Item(0)
            (donde aquí irían los demás campos cambiando el item a (1), (2) y así sucesivamente.
    End Sub

    MIL GRACIAS A TOD@S!

    lunes, 3 de diciembre de 2018 16:16