Ver Mensaje Individual
  #2  
Antiguo 30-12-2008
Avatar de PepeLolo
PepeLolo PepeLolo is offline
Miembro
 
Registrado: jun 2003
Ubicación: Fuenlabrada - Madrid - Espagna
Posts: 265
Reputación: 24
PepeLolo Va por buen camino
Hola,

Cuando el dataset tiene pocos registros el metodo locate funciona bien, el problema aparece cuando el dataset tiene muchos registros(unos miles), es en ese momento cuando se vuelve deficiente.

Cuando se realiza una búsqueda en un dataset, es más apropiado usar una sentencia SQL al estilo:
Código SQL [-]
select * from TuTabla where codigo = :TuvaloraBuscar

puedes construirla en tiempo de ejecución, al estilo:
Sí se buscan cadenas utilizar los comodines "%" como
Código Delphi [-]
  "where campo =  %' + QuotedStr(Valor) + '%'

Si la búsqueda se realiza por multiples campos tener una SQL estandard al estilo :
Código SQL [-]
Select * from TuTabla where 1=1
y añadir el resto de condiciones en tiempo de ejecución ya solo con la clausula ' and '.

Al estilo :
Código Delphi [-]
  ZQuery.Close:
  ZQuery.sql.Clear;
  ZQuery.sql.Text := 'Select * from TuTabla where 1=1';
  if CampoBusqueda <> '' then
     ZQuery.sql.Add('and campo = ' + CampoBusqueda.Text);
  ....
  try
     ZQuery.disableControls;
     ZQuery.open;
  finally
     ZQuery.EnableControls;
  end;

espero te sirva
__________________
PepeLolo
El hombre el único virus que mide más de unas cuantas micras
Responder Con Cita