Ver Mensaje Individual
  #2  
Antiguo 17-06-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Reputación: 0
coso Va por buen camino
Uf...tablas y setkey...Te recomiendo q te pases a SQL. Si no puedes, usa los filtros y no el setkey para hacer este tipo de cosas: un ejemplo para busqueda incremental (sumamente lento para base de datos grandes) con filtros.

Código Delphi [-]

procedure Busqueda(valor_a_buscar : string; tb : TTable; nombre_campo : string);
begin
   if valor_a_buscar = '' then begin tb.Filter := ''; tb.Filtered := false; exit;
 
   Tb.Filter := nombre_campo + ' = ' + AnsiquotedStr(valor_a_buscar + '*','''') ;

// si el campo a buscar es numerico, se debe sacar el ansiquotedstr y el comodin
// si el campo a buscar es datetime, usar datetostr y tener en cuenta solo el date haciendo round.

   tb.Filtered := true;
   tb.Refresh;
end;

si lo que quieres es no filtrar y solo buscar

Código Delphi [-]

procedure Buscar(texto_a_buscar : string; tb : table; campo : string);
begin
   if texto_a_buscar = '' then exit;

   tb.Locate(campo,texto_a_buscar,[loCaseInsensitive,loPartialKey];
end;

deberas tener cuidado si se usa relacion master/detail.

PD: usa SQL, te ahorraras muchos problemas.
Responder Con Cita