Bitcoin

BitMiner - free and simple next generation Bitcoin mining software

viernes, mayo 11, 2007

Busqueda Incremental en Delphi

A veces es necesario hacer las llamadas Busquedas Incrementales, las cuales consisten en ir escribiendo en un EDIT y un DBGrid se comience a filtrar con los resultados que coincidan solamente con lo que hemos escrito.

Es decir, tenemos una tabla de la siguiente manera:

ID - Nombre
1 Miguel
2 Martin
3 Jerry
4 Tadeo
5 Jesus

En el edit escribimos JE y en el grid solo nos apareceran:

ID - Nombre
3 Jerry
5 Jesus

Pues ahora filtramos los campos solamente con los que empiecen con JE.

Esto se realiza con un LIKE en SQL que sería así:
Select id, nombre From MiTabla Where nombre LIKE '%JE%'

El codigo queda en el evento OnChange del Edit.

procedure TLaForma.edt_nombreChange(Sender: TObject);
var
vstrCadena: String;
begin

vstrCadena:= 'Select id, nombre from tabla Where nombre LIKE '+char(39)+'%'+edt_nombre.Text+'%'+char(39);

with ZQ_Consulta do
begin
Close;
SQL.Clear;
SQL.Add(vstrCadena);
try
Open;
except
ShowMessage('No se pudo ejecutar la consulta');
end;
end;
end;

Donde mi ZQ_Consulta es un TZQuery. Igual funciona para un TADOQuery normal.

2 comentarios:

  1. Pero el hecho de que sea un %Je% ¿también traeria aquellas palabras que contengan esas letras en cualquier parte de su cadena?.
    Por cierto ¿para que Char(39)?

    ResponderEliminar
  2. Tienes razón, pido una disculpa... me falto aclarar eso.. tambien se muestran las cadenas que contengan JE dentro de ellas, por ejemplo si en lugar de Miguel dijera Mijel :P, tambien traería ese resultado.

    El Char(39) es es apostrofe ('), recuerdo que en una versión de delphi no me reconocio el apostrofe como ''' así que he decidido usarlo siempre como caracter ASCII.

    Saludos.

    ResponderEliminar

Tu comentario es importante para nosotros, gracias por darnos tu opinión.