Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-05-2006
Avatar de noshy
noshy noshy is offline
Miembro
 
Registrado: jul 2003
Posts: 139
Poder: 21
noshy Va por buen camino
Busqueda con Locate o Lookup

Hola a todos, me surgio un proble,a y es el siguiente:
Tengo un Query con una tabla en la cual necesito realizar una busqueda, el tema es que necesito realizar la busqueda por un fragmento del campo, para que me entiendadn necesito que me encuentre el primer registro que contenga la cadena 'ASA', por lo cual me tiene que devolver el registro que tenga 'PASA' o 'ASADO', el problema es que lo hago con Query1.locate pero me busca por cadena completa no por fragmento, y no encuentro la funcion que lo haga. (Obviamente lo puedo hacer recorriendo registro por registro con un POS() pero al tener muchos registros se torna lenta la busqueda)

Salu2, Noshy
__________________
\_--> NoShY <--_/
Responder Con Cita
  #2  
Antiguo 12-05-2006
Acanol Acanol is offline
Miembro
 
Registrado: abr 2006
Ubicación: Elche
Posts: 75
Poder: 19
Acanol Va por buen camino
Buenas, no se si esto te servira, con el siguiente ejemplo hace o que pides pero escribiendo en un edit, por la palabra que quieres que se realice el locate... Espero que te sirva, sino es asi dime como puedo ayudarte.

Código Delphi [-]
Tabla:= Nombre de tu tabla; 
Edit:= Nombre del edit donde escribes lo que quieres filtrar; 
Campo:= El campo de la tabla el cual quieres filtrar; 


//En el evento Onchange de tu edit pones lo siguiente 
Código:
procedure TForm1.Edit1Change(Sender: TObject); 
begin 
    datamodule1.Tabla.Filtered:= True; //Datamodule1, es donde se encuentra la tabla (para tenerlas un poco mas organizadas, si tienes mas de una) 
end; 

//En el evento OnFilterRecord de la tabla 

Código:
procedure TDataModule1.TablaFilterRecord(DataSet: TDataSet;  var Accept: Boolean); 
begin 
  if datamodule1.Tabla.Locate ('Campo',unit1.Form1.Edit.text,[Lopartialkey,LocaseInsensitive]) then 
       accept:=true 
  else 
       accept:= false; 

end; 

//Si solo quieres coger letras en el "Edit", añades esto en el evento "OnKeyPress" del edit 
Código:
procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char); 
begin 

    if key in ['0'..'9'] then key:=#0; 

end;
__________________
{Saludos.}

//Todos los dias se aprende algo nuevo, por que no enseñar nosotros?
Responder Con Cita
  #3  
Antiguo 12-05-2006
Avatar de noshy
noshy noshy is offline
Miembro
 
Registrado: jul 2003
Posts: 139
Poder: 21
noshy Va por buen camino
Nop

Gracias por tu respuesta, pero no funciona, porque sigue filtrando por el campo entero no por un fragmento, yo en el campo tengo direcciones, y necesito buscar por una palabra de la direccion no por la direccion completa o sea por in LIKE de SQL, pero necesito hacerlo en memoria para que sea mas rapido. No se si el LOCATE tieme parametros como el % de SQL.
__________________
\_--> NoShY <--_/
Responder Con Cita
  #4  
Antiguo 12-05-2006
Acanol Acanol is offline
Miembro
 
Registrado: abr 2006
Ubicación: Elche
Posts: 75
Poder: 19
Acanol Va por buen camino
Disculpa, pero a mi me funcionaba ya que lopartialkey busca que coincida una parte no todo, asi si buscamos 'A', nos mostrara lo campos Antonio Andres... vamos si no me equivoco... tal vez no te entendi lo que necesitabas. Disculpa otra vez. Si esto no te sirve por que no haces una query al campo¿? Select * from Empleado Where NOMBRE LIKE '%An%' Order by NOMBRE
Código Delphi [-]
QUERY1.SQL.ADD(....);
QUERY1.OPEN;
__________________
{Saludos.}

//Todos los dias se aprende algo nuevo, por que no enseñar nosotros?

Última edición por Acanol fecha: 12-05-2006 a las 16:53:32.
Responder Con Cita
  #5  
Antiguo 12-05-2006
Avatar de noshy
noshy noshy is offline
Miembro
 
Registrado: jul 2003
Posts: 139
Poder: 21
noshy Va por buen camino
Cita:
Empezado por Acanol
Disculpa, pero a mi me funcionaba ya que lopartialkey busca que coincida una parte no todo, asi si buscamos 'A', nos mostrara lo campos Antonio Andres... vamos si no me equivoco... tal vez no te entendi lo que necesitabas. Disculpa otra vez. Si esto no te sirve por que no haces una query al campo¿? Select * from Empleado Where NOMBRE LIKE '%An%' Order by NOMBRE
Código Delphi [-]
QUERY1.SQL.ADD(....);
QUERY1.OPEN;
Si tenes razon pero el lopartialkey te busca una cadena que comienze con la cadena de busqueda si buscas 'A' de muestra Antonio Andres, pero yo quiero que me muestre Antonio Andres buscando 'N' por ejemplo.
__________________
\_--> NoShY <--_/
Responder Con Cita
  #6  
Antiguo 12-05-2006
Avatar de noshy
noshy noshy is offline
Miembro
 
Registrado: jul 2003
Posts: 139
Poder: 21
noshy Va por buen camino
o sea que la cadena que buscas se encuentre en cualquier parte del campo y no solamente al comienzo
__________________
\_--> NoShY <--_/
Responder Con Cita
  #7  
Antiguo 12-05-2006
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
pues para eso, puedes filtrar la tabla, algo asi como
Dataset.filter := 'Nombredelcampo like %' + buscar.text + '%';
Responder Con Cita
  #8  
Antiguo 15-05-2006
Acanol Acanol is offline
Miembro
 
Registrado: abr 2006
Ubicación: Elche
Posts: 75
Poder: 19
Acanol Va por buen camino
No se si lo habras solucionado, pero creo que este link te servira :
http://www.clubdelphi.com/foros/showthread.php?t=31663
__________________
{Saludos.}

//Todos los dias se aprende algo nuevo, por que no enseñar nosotros?
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Locate en un campo lookup amadis Conexión con bases de datos 1 22-12-2005 21:46:52
Búsqueda con Locate JorgeBec Varios 6 18-04-2005 18:09:45
Busqueda con LOCATE MaríaMR Conexión con bases de datos 15 25-11-2004 16:20:53
Busqueda Con Locate En Un Dbgrid mtpedro Conexión con bases de datos 1 29-10-2004 09:29:22
Busqueda por campo lookup o calculado LucasArgentino SQL 0 30-09-2004 16:37:25


La franja horaria es GMT +2. Ahora son las 03:43:22.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi