Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-11-2012
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Exclamation Busqueda en un DBgrid

Hola de nuevo, en primer lugar gracias por responder a mis preguntas, se que pregunto mucho pero me gusta aprender todo lo que puedo XD jajaja pero gracias por todo...

La siguiente pregunta es: Tengo un DBgrid conectado a una base de datos en Access,con una tabla llamada Entrada, un boton y un edit, actualmente tengo el siguiente codigo en el Boton:
Código Delphi [-]
procedure Tregistro.BitBtn8Click(Sender: TObject);
begin
ADOTable1.Locate ('Nombre', edit1.text,[loCaseInsensitive]);
edit1.Clear;
end;
end;

como se dan cuenta es para localizar dentro del DBgrid un registro, pero esto solo funciona si se inserta el nombre exacto de la persona ejemplo:

si en el campo "Nombre" del Dbgrid hay un registro llamado Juan Perez
Si escribo en el edit : Juan Perez y doy clic en el boton, automaticamente lo locatiza, Pero si escribo Juan, no lo hace, no hay una forma de que tambien localice todos los nombres que comienzan con Juan?
Responder Con Cita
  #2  
Antiguo 30-11-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por feliz-58 Ver Mensaje
... Pero si escribo Juan, no lo hace, no hay una forma de que tambien localice todos los nombres que comienzan con Juan?
Hola.

Podes hacer:
Código Delphi [-]
procedure Tregistro.BitBtn8Click(Sender: TObject);
begin
  with ADOTable1 do
  begin
    Filtered:= False;
    Filter  := 'NAME LIKE ' + QuotedStr(Edit1.Text + '%');
    Filtered:= True;
  end;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 30-11-2012
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
feliz-58,

Revisa esta información:
Cita:
Empezado por Borland Delphi 6 Developer's Guide:

"function Locate(const KeyFields: string; const KeyValues: Variant;
Options: TLocateOptions): Boolean;

The first parameter, KeyFields, contains the name of the field(s) on which you want to search.
The second parameter, KeyValues, holds the field value(s) you want to locate. The third and
last parameter, Options, allows you to customize the type of search you want to perform. This
parameter is of type TLocateOptions, which is a set type defined in the DB unit as follows:

type
TLocateOption = (loCaseInsensitive, loPartialKey);
TLocateOptions = set of TLocateOption;

If the set includes the loCaseInsensitive member, a not case sensitive search of the data will
be performed. If the set includes the loPartialKey member, the values contained in KeyValues
will match even if they’re substrings of the field value.
"
En resumen:
Código Delphi [-]
ADOTable1.Locate ('Nombre', edit1.text,[loCaseInsensitive,loPartialKey]);
El código anterior hará búsquedas en el DataSet sin distinción entre minúsculas y mayúsculas y con valores parciales.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 30-11-2012 a las 22:25:28.
Responder Con Cita
  #4  
Antiguo 30-11-2012
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Exclamation

Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Podes hacer:
Código Delphi [-]
procedure Tregistro.BitBtn8Click(Sender: TObject);
begin
  with ADOTable1 do
  begin
    Filtered:= False;
    Filter  := 'NAME LIKE ' + QuotedStr(Edit1.Text + '%');
    Filtered:= True;
  end;
end;

Saludos.

Me sale un error, me dice "Project Project1.exe raised Class EOleExection With message ´No se encontro el elemento en la coleccion que corresponde al nombre o el ordinal solicitado´. Process Stopped.
Responder Con Cita
  #5  
Antiguo 30-11-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola feliz-58.

La costumbre de copiar y pegar...

Te hice un ejemplo al vuelo, creo que en tu caso (al menos así parece en tu primer mensaje) el campo se llama Nombre no NAME como usé en mi código.

Reemplazá NAME por el nombre de tu campo y verás que funciona correctamente.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 30-11-2012
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola feliz-58.

La costumbre de copiar y pegar...

Te hice un ejemplo al vuelo, creo que en tu caso (al menos así parece en tu primer mensaje) el campo se llama Nombre no NAME como usé en mi código.

Reemplazá NAME por el nombre de tu campo y verás que funciona correctamente.

Saludos.
si, que mala costumbre la de Copy and Paste por eso no funcionaba jajajaja, gracias,

Aunque recuerda que mi ejemplo es con Locate y me diste uno Con filter


Muchisimas Gracias

//Saludos
Responder Con Cita
  #7  
Antiguo 30-11-2012
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Para otros usuarios

Si otro usuario quiere Utilizar el Codigo:
Código Delphi [-]
begin
  with ADOTable1 do
  begin
    Filtered := False;
    Filter := 'Nombre LIKE ' + QuotedStr(Edit1.Text + '%');
    Filtered := True;
    if adotable1.RecordCount = 0 then
    begin
    Showmessage ('Usuario No Encontrado');
  end;
end;
end;

Aqui si no encuentra el usuario te muestra un Mensaje
Responder Con Cita
  #8  
Antiguo 01-12-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por feliz-58 Ver Mensaje
Aunque recuerda que mi ejemplo es con Locate y me diste uno Con filter
Hola feliz-58.

Es que no es posible lograr lo que pediste:
Cita:
... localice todos los nombres que comienzan con ...
mediante el método Locate.

Aunque está en el ejemplo, me olvidé de decirte que para que el filtrado desaparezca basta que pongas la propiedad Filtered en falso en cualquier punto del código.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 01-12-2012 a las 04:02:09.
Responder Con Cita
  #9  
Antiguo 31-07-2013
koalasoft koalasoft is offline
Miembro
 
Registrado: oct 2004
Ubicación: Tenosique Tabasco
Posts: 86
Poder: 20
koalasoft Va por buen camino
Use el ejemplo con el parametro Locate ..

Tengo dos dudas ...

01.- Hay alguna forma para que despues que haya buscado la fila donde esta la palabra, esta quede seleccionado la fila (sobreado) ?

02.- Alguna forma una vez que se realizo el filtrado que SOLO aparezca la fila con el campo buscado .. osea que no aparezca ninguno mas en pantalla?

Saludos !! ..
Responder Con Cita
  #10  
Antiguo 31-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por koalasoft Ver Mensaje
.
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración
Responder Con Cita
Respuesta



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 marcosmendozaa Varios 6 29-05-2014 22:37:07
Locate mauqu Varios 9 06-08-2007 17:27:20
Yo uso LOCATE y tu......... JULIOCTORRESG Varios 1 02-03-2007 01:10:47
Locate sanrp2004 Varios 3 21-06-2006 20:30:37
Uso del Locate jzk Conexión con bases de datos 8 22-04-2005 13:05:03


La franja horaria es GMT +2. Ahora son las 01:02:58.


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