ya no se me ocurre nada máaaaaaaaaaaaassssssss

matamala
05 de Noviembre del 2003
Porfavor os lo pido estoy loco ya es espero que con este post me podais ayudar porque ya no sé com hacerlo.

os digo lo que quiero y si me podies ayudar os lo agradezc.
tengo una base de datos con telefonos nombres apellidos poblaciones.

quiero en que en un formulario al realizar un evento click
sobre un control, busque los registros que coincidan con los datos que se allan introducido en unos texbox.
me explico si quiero buscar el primer apellido que lo localice y en "GridEX1" ó en un DBgrid" solo se vean los datos de los registro que coinciden con la busqueda. como realizar las busquedas mediante codigo se lo hago de estaforma:
If Item.Index = 2 Then
'comprueba si se a pulsado el buscar por el primer apellido
With Data1.Recordset
.MoveFirst
.Index = "indprap"
.Seek "=", Text1
If .NoMatch Then
MsgBox "no existe Ningún Regitro que coincida con la petición de Búsqueda"
End If
End With
pero no consigo que se vean solo los datos que coiciden si que el cursor se pone en el primer registro que coincide, pero me enseña toda la base de datos.
Me estais dando soluciones coesta: select * from listin where apellido like 'letras*' and ...otras condiciones'.
pero no se como tengo que montar la sentencia.
proque si monto la sentencia desde las propiedades cuando abro el formulario si se muestra solo lo que quiero ver pero no se como ni donde tengo que ponerlo para que lo haga en tiempo de ejecucion. con un click.
os lo ruego si me ppodis ayudar. os lo agardezco eternamente.

sin mas un saludo.

Jorge
05 de Noviembre del 2003
mira, nose si tenes ese grid conectado a un DB
pero yo haria otra cosa mas sencilla,
haria una consulta a tipo sql y listo
te va a traer solo los que estas buscando, mismo
si queres traer los que empiezan con GA
ej :

"select * from tabla where ( apellido like '" & text1.text & " % ' ) "
el % ase de GA* en la busqueda, te trae todos esos
que empiecen con GA

Baltasar
05 de Noviembre del 2003
Estoy completamente de acuerdo con Jorge.

Hay que dejar de usar las funciones findfirst y similares. Si alguien quiere hacer la prueba (yo lo he hecho) que se prepare una tabla con muchos registros (más de mil, por ejemplo) y que se ponga a trabajar con findfirst para localizar registros, y luego haga lo mismo con una sentencia SQL. el SQL es muchísimo más rápido, pero con bastante diferencia. Es mucho más sencilla de usar y de comprender.

Saludos.

mcdowell
05 de Noviembre del 2003
yo no he intentado con el codigo de seek match bookmark,, etc que es una buena forma para la busqueda

ami me paso algo parecido, donde tenia datos de personas como su id,nombre apellido y otros datos. no me salia de ninguna forma.

la sentencia donde utilizas el like: la solucion del error de por que no me traia los registros es por que like tienes que especificar todos los caracteres es decir si la persona se llama maria tienes que darle like m****, en vez de usar like m*, no c si me explico. pero bueno esa es la explicacion del problema con el like.

en fin la solucion esta en recorrer registro por registro y utilizar una funcion que se llama instring o algo parecido, la finalidad de esta funcion es revisar una cadena compararla con otra cadena y verificar que coincidan.
ej:
si le mandas a buscar mar el te devolvera todos los registro que contengan los caracteres mar en el campo que buscaste...

espero a que te sirva de algo mi explicacion.!!! :)