PDA

Ver la Versión Completa : Forma correcta de hacer busqueda incremental


giulichajari
15-07-2014, 20:46:36
Hola amigos, para realizar una busqueda incremental en un edit hay que tener una grilla para filtrar resultados similares no cierto?

Siempre se dice que utilizar un combo es pesado, pero pregunto¿no es igual de pesado llenar la grilla y hacer el filtro en el edit?
no se puede hacer una busqueda incremental tipo combo que vaya apareciendo abajo solo los nombres de clientes por ejemplo?

ecfisa
15-07-2014, 23:22:40
Hola giulichajari.

Las búsquedas incrementales son intrínsecamente "pesadas" sea que se implementen a través de un TComboBox u de otro componente. Ya que por cada caracter ingresado, se envía una consulta. Y si es através de un servidor, tiene el plus de un incremento sustancial en el tráfico de red.

pero pregunto¿no es igual de pesado llenar la grilla y hacer el filtro en el edit?
No.

Se puede decir que los controles de datos tales como el TDBGrid son manifestaciones visuales de los contenidos de una tabla o consulta. Es decir que están relacionados con un TDataSet y esto último hace la diferencia, por que el TDataSet mantiene una caché interna de los datos actualmente mostrados. Ese valor lo podes obtener de la propiedad BufferCount.

Además, usar un TComboBox implica una carga prévia de los datos a visualizar para la selección. De otro modo no habría diferencia de uso entre él y un TEdit...

Saludos :)

juanelo
15-07-2014, 23:30:05
Para mi depende del volumen de datos a filtrar, la tecnica a usar.

Neftali [Germán.Estévez]
16-07-2014, 10:02:15
...para realizar una busqueda incremental en un edit hay que tener una grilla para filtrar resultados similares no cierto?


En realidad son 2 cosas. Por un lado hay que distinguir entre la fuente de datos (que podemos ver como una tabla/query) y luego de forma independiente el componente que utilices para filtrar (edit, combo, grid,...).
Cuando hablas de "grilla" no se si te refeieres a eso.


Siempre se dice que utilizar un combo es pesado, pero pregunto¿no es igual de pesado llenar la grilla y hacer el filtro en el edit?
no se puede hacer una busqueda incremental tipo combo que vaya apareciendo abajo solo los nombres de clientes por ejemplo?

Lo pesado es realidad no es el combo, como tú bien dices, es igual de pesado hacerlo sobre un Edit o sobre un Grid. Es lo mismo porque en realidad la parte "pesada" no está en el componente, sino en la parte de los datos. Por lo tanto, el componente que uses para hacerlo es independiente.

Personalmente tampoco soy partidario de hacerlas, salvo que estemos hablando de tablas pequeñas que se puedan cargar fácilmente en memoria.

giulichajari
16-07-2014, 14:00:59
Gracias a todos por las respuetas.

Y ecfisa si dices:

Se puede decir que los controles de datos tales como el TDBGrid son manifestaciones visuales de los contenidos de una tabla o consulta. Es decir que están relacionados con un TDataSet y esto último hace la diferencia, por que el TDataSet mantiene una caché interna de los datos actualmente mostrados. Ese valor lo podes obtener de la propiedad BufferCount.

Entonces hay que filtrar los datos de la grilla que ya estan mostrados, y no el query que pertenece a la grila, porque sino lo estas ejecutando de vuelta al query.
Y si la busqueda no es incremental para el nombre de cliente por ejemplo: deberia ordenar alfabeticamente y que el cliente se desplaze y encuentre el nombre.
Saludos

Caminante
16-07-2014, 20:22:06
Hola


Entonces hay que filtrar los datos de la grilla que ya estan mostrados, y no el query que pertenece a la grila, porque sino lo estas ejecutando de vuelta al query.
Saludos

Como te dijeron los datos los posee el dataset (en este caso el query), la grilla solo es una vista virtual de los mismos (La grilla no posee ningun dato solo muestra los del query).

Saludos