Autocompletar textbox vb.net

Querido experto me comunico contigo para pedirte que me ayudes con lo siguiente:

Tengo un formulario con un textbox en el cual necesito que a medida que se vaya escribiendo vaya apareciendo el listado de opciones que existen en la base de datos. La base de datos es access 2010 y trabajo con el visual studio 2010. Ojala me puedas ayudar. De antemano muchas gracias. La tabla de la bd de la cual se obtiene los datos es "trabajadores" y del campo es "nom_trabajador".

2 respuestas

Respuesta
1

Es un proyecto Web o Cliente Servidor (Windows)

es sistema windows

Haz lo siguiente:

Private Sub frmInforme_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: esta línea de código carga datos en la tabla 'BaseMiamiDataSet. DatosClientes' Puede moverla o quitarla según sea necesario.
Me. DatosClientesTableAdapter. Fill(Me. BaseMiamiDataSet. DatosClientes)
'esto es para que complete el cuadro de nombre y apellido
  AutoCompletar(Me. NombreyApellidoTextBox) 
 End Sub
 Public Function AutoCompletar(ByVal Control As TextBox) As AutoCompleteStringCollection
 Dim Coleccion As New AutoCompleteStringCollection
 Dim Comando As String
 Comando = "SELECT NombreyApellido FROM DatosClientes ORDER By NombreyApellido"
 'Creamos una nueva cadena de coneccion
 Using BaseMiamiConnectionString As New OleDbConnection(My.Settings.BaseMiamiConnectionString)
 Dim Ejecutar As New OleDb.OleDbCommand(Comando, BaseMiamiConnectionString)
 'Abrimos la coneccion
 BaseMiamiConnectionString.Open()
 Dim Lector As OleDbDataReader = Ejecutar.ExecuteReader()
 ' Realizamos un Loop mientras se esté leyendo.
 While Lector.Read()
 Coleccion.AddRange(New String() {Lector(0)})
 End While
'Cerramos el SqlReader
 Lector.Close()
 'Cerramos la coneccion
 BaseMiamiConnectionString.Close()
 End Using
 'Ajustamos el control TextBox o ComboBox para recibir los datos de la siguiente manera.
 With Control
 .AutoCompleteMode = AutoCompleteMode.Suggest
 .AutoCompleteSource = AutoCompleteSource.CustomSource
 .AutoCompleteCustomSource = Coleccion
 End With
 ' Aca le devuelvo los datos a recuperados de la Base
 Return Coleccion
 End Function 

Si tienes dudas me lo haces saber.

Eduardo

muchas gracias por responder, me sirvió tu respuesta pero no del todo, puesto que lo que es que cada vez que se escriba algo en el textbox me muestre la lista.

lo que modifique fue lo siguiente, el llamado a la función lo hice en el evento keypress del textbox y ademas modifique la sentencia sql por la siguiente: "SELECT razon_social_proveedor FROM proveedores" & _
" where razon_social_proveedor = like % '" & txtBuscar.Text & "' % order by razon_social_proveedor"

pero aun así no me resulta, ojala me puedas ayudar a solucionar mi problema.

saludos Leo

Entonces mejor cambia el TextBox por un ComboBox que vaya seleccionando lo escrito.

De esa manera podrás dejar de golpear la BD a cada rato.

querido eduardo

no entiendo....te pediría que me lo explicaras un poco mejor. necesito que funcione si por ejemplo, escribo la letra "P" me muestre todos los datos que contengan la "P", y también si borro esa letra y coloco otra ocurra lo mismo. no se si me esplique bien.

saludos y gracias

Leo

Es igual que el TextBox pero con el Combo y se abrirá para que muestre las parecidas con las teclas que vas pulsando.

Eduardo

Mira la verdad que aun no me resulta. soy novato en el tema y me cuesta un poco entender.

te explico nuevamente para dejar un poco mas claro lo que quiero.

tengo un formulario en el cual tengo un textbox y un botón aceptar.

quiero que al escribir cualquier letra le muestre al usuario todas las posibles opciones de la base de datos que comiencen con esa letra. pero por ejemplo. si en la base de datos tengo el nombre de "Juan Perez" si yo escribo "J" muestre la opción "Juan Perez" y si escribo la letra "P" también muestre la opción. y si el usuario selecciona un nombre las opciones que me muestra quede ese nombre en el textbox ya que al presionar aceptar me mostrara el rut de esa persona.

lo que yo hago y no me funciona es lo siguiente.

<a

<a>

<a>

<a>

Asegurate de que estas tres propiedades estén así:

ComboBox1.AutoCompleteMode = AutoCompleteMode.Append
ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
ComboBox1.AutoCompleteSource = AutoCompleteSource.ListItems

Eduardo hago todo lo que me dices pero o pasa nada solo que queda el combobox como inhabilitado para escribir.....

Utiliza el botón Insertar Código que está aquí en la barra y ponme el código completo como haces para que el combo se comporte como quieres.

Eduardo

Muchas gracias por tu ayuda ya encontré en donde me estaba equivocando..ahora me resulta de maravilla...

saludos

Leo

Respuesta
-1

El control textBox tiene una propiedad AutoComplete, la colocas en la adecuada a tu necesidad, debes hacer lógicamente una consulta a la base d edatos para ir llenando la lista del autocomplete a medida que vas escibiendo.

Eso lo puedes hacer en el evento KeyPress del control.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas