Inicio > Delphi, Ejemplos > Realizar búsqueda incremental y visualizarla sobre un DBGrid

Realizar búsqueda incremental y visualizarla sobre un DBGrid

martes, 26 de febrero de 2008 Dejar un comentario Ir a comentarios
Share Button

En este ejemplo se muestra de forma sencilla de realizar una búsqueda incremental sobre un campo y mostrar el resultado de la búsqueda sobre un DBGrid estandard. Para este ejempo se ha utilizado un TClientDataset, de forma que todos los datos estén cargados en memoria (en local). Hay que tener en cuenta que este método puede ser costoso si la tabla es muy grande o los datos datos no se encuentran en local (cursores server-side, por ejemplo).

Busqueda incremental

Download Descargar ejemplo

2.5/5 - (2 votos)
Categories: Delphi, Ejemplos Tags: , ,
  1. Darkseratul
    viernes, 18 de febrero de 2011 a las 00:40 | #1

    Pues mucha gracias he estado buscando este ejemplo por todas partes, en los foros no te explican bien sigan así su pagina esta de lujo gracias

  2. karla
    miércoles, 25 de julio de 2018 a las 15:43 | #2

    hola que tal, oye tengo una duda como le tengo que hacer para que busque para todos los campos y no solo por el nombre, y que mientras vaya buscando solo muestre los que tenga esa palabra

  3. jueves, 26 de julio de 2018 a las 07:41 | #3

    @karla
    Hola Karla.
    Para hacer cambios en el funcionamiento debes “retocar” el evento EditChange que es donde se realizan las búsquedas.
    Ahora está funcionando esto (que realiza una búsqueda) y al llegar al Exir sale del procemdimiento:

      ClientDataSet1.Locate('FirstName', Edit1.Text, [loCaseInsensitive, loPartialKey]);
      Exit;

    Si quieres que filtre debes comentar esas líneas y retocar en código que hay debajo:

      // esto sería para filtrar
      if (Edit1.Text = '') then begin
        ClientDataSet1.Filtered := False;
        ClientDataSet1.Filter := '';
      end
      else begin
        ClientDataSet1.Filtered := False;
        ClientDataSet1.Filter := 'FirstName >= ' + QuotedStr(Edit1.Text)
        ClientDataSet1.Filtered := True;
      end;

    Haz pruebas con la propiedad Filter.
    Por ejemplo algo pareceido a lo que quieres puedes conseguirlo utilizando esto:

    ClientDataSet1.Filter := 'FirstName Like ' + QuotedStr('%'+Edit1.Text+'%') + ' OR LastName LIKE ' + QuotedStr('%'+Edit1.Text+'%');

    Con esto filtrará todas las líneas que contengan la palabra que escribas tanto en el nomnbre como en el apellido.

  1. Sin trackbacks aún.