Problemas al buscar en un datagrid [SOLUCIONADO]

Iniciado por ŞCØRPIØN-X3, 1 Abril 2011, 00:40 AM

0 Miembros y 2 Visitantes están viendo este tema.

ŞCØRPIØN-X3

Wenas a todos :D, tengo un problemita al buscar un nombre en un datagrid, les explico, en el datagrid hay muchos nombres y le puse un textbox(text1) para que busque mientras escribo. El codigo que uso es el siguiente:

Private Sub Text1_Change()
On Error Resume Next
   Dim cBuscar As String
   If Text1.Text = "" Then Exit Sub
   cBuscar = "Cliente like '" & Text1.Text & "*'"
   rs2.MoveFirst
   rs2.Find (cBuscar)
   End If
End Sub


bueno el problema que tengo con este code es que si busco una palabra, no puedo pasar al siguiente valor que tenga esa palabra, es decir busco por ejemplo a "Martin", cuando lo encuentra no se como hacer para que busque otro mas que cumpla con las condiciones.
Si tengo a uno que esta agregado como "Martinez" y yo quiero buscar a "Martin", pongo "Martin" en el buscador y me encuentra a "Martin ez" y no se como hacer para que busque otras opciones.  :(
 Otra cosa que necesito es que si se puede hacer que cuando busque un nombre lo busque en todo el "valor" mejor. Por ejemplo si hay una persona agregada como "Martinez Juan" y yo busco a "Juan" que igual lo encuentre sin importar el orden, no siempre el orden es Apellido / Nombre, es depende como lo agregen xD

Aclaración: un code que busque palabras exactas no me sirve porque las personas estan agregadas por nombre / apellido y cuando busco a esa persona no pongo el nombre y el apellido sino que busco por el nombre o por el apellido.

Perdon por mi explicación, no es muy buena  :-[ ojala que entiendan.

Gracias de antemano :D, Espero su respuesta. Saludos

seba123neo

es por la forma que usas el LIKE, debes encerrarlo en %% para que te busque en cualquier parte de la palabra, algo asi:

Código (vb) [Seleccionar]
cBuscar = "Cliente LIKE '%" & Text1.Text & "%'"

aparte no deberias usar Find, sino Filter, ya que Find solo encuentra el primer registro, y Filter te filtra el Recordset entero segun el filtro, aparte permite multiples busquedas con AND o con OR, y el Find solo permite una condicion.

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

ŞCØRPIØN-X3

muchas gracias por responder  ;D, acabo de probar para que encuentre en cualquier parte de la palabra y funciona muy bien :D. Pero todavia me queda una duda al usar filter me mostrara solo los que tengan esa palabra y no los demas no es asi?, de ser asi no abra otra forma de buscar para que me muestre uno por uno que tengan esa palabra y no solo el primero?. Muchisimas gracias de nuevo  ;D

seba123neo

mira tenes 2 formas.

1 - usar el Find, pero como te dije este solo acepta una sola condicion a la vez y aparte solo busca el primero que coincida, y para buscar otro que coincida con esa condicion tenes que buscar de nuevo, ya que la busqueda es para adelante.

aca tenes un ejemplo usando Find:

Buscar en un DataGrid

2 - Usar el Filter (la que recomiendo), aparte de aceptar multiples condicones en la busqueda, te va mostrando en la grilla los que van coincidiendo, ya que este no busca solo el primero, sino que busca en todo el recordset. aca tenes un ejemplo terriblemente facil.

Filtrar datos en un DataGrid

cualquier duda postea..

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

ŞCØRPIØN-X3

muchisimas gracias ahora lo pruebo, lo del filter si lo se hacer pero lo uqe pasa es que me los muestra en una grilla en blanco todos los que coinciden y no me muestra las demas entradas que no coinciden. Ahora lo preubo y te digo, muchas gracias  ;D

ŞCØRPIØN-X3

Ya lo probe anda muy bien, use el find numas, lo modifique un poco y quedo :D muchas gracias de nuevo

R@mi

yo, lo que ice fue: busca, si detecta que el usuario ya busco una vez pongo rst.movenext y busco el siguiente ;)
Si no haces click aca, entrare a tu casa mientras duermes, y te mataré a ti y a tu familia
Si no te registras en mi foro, también.
Si te registraste, pero no aportás, tambien.