25 de mayo de 2019

No filtre datos en una cuadrícula

Artículo original: Don't FILTER Data in a Grid
http://www.craigberntson.com/blog/2008/08/dont-filter-data-in-grid.asp
Autor: Craig Berntson
Traducido por: Luis María Guayán


He visto varios mensajes en los foros donde últimamente la gente pregunta acerca de cómo filtrar los datos mostrados en una cuadrícula. Esta es una muy mala idea, ya que el deslizador de la barra de desplazamiento no funciona correctamente. Mire este formulario, que utiliza un filtro.


La tabla tiene más de 200.000 registros. Yo apliqué:

SET FILTER TO ContactName = "Alejandra Camino".

El resultado no es bueno. Vea la posición del deslizador. Cuando se mueve el deslizador hacia la parte superior de la barra de desplazamiento, éste salta de nuevo a la posición que se muestra en la imagen capturada, porque es ahí donde está el registro actual en la tabla entera. Esto es muy confuso para el usuario.

Ahora mire lo que sucede cuando se utiliza una consulta o una vista.


En este formulario creo una vista local y configuro la cuadrícula para usar la vista como fuente de datos. Luego consulto los datos utilizando una vista parametrizada. Mire en este caso, que el deslizador se encuentra en la parte superior de la barra de desplazamiento cuando el puntero de registro se encuentra en el primer registro. Esto se debe a que los datos de la cuadrícula solo contienen los registros:

WHERE ContactName = "Alejandra Camino"

en lugar de la tabla entera.

Escribir aplicaciones de esta forma podrá requerir un nuevo entrenamiento de los usuarios, ya que no tienen todos los datos al mismo tiempo, pero siempre pueden consultar los datos que deseen. En mi experiencia veo que los usuarios prefieren este tipo de aplicaciones. Su opinión puede ser distinta.

Una ventaja adicional es que estamos preparándonos para trabajar con SQL Server, ya sólo utiliza conjuntos de datos. Siempre debemos consultar los datos que deseamos y traer solamente estos, en lugar de todos.

Copyright 2008, Craig Berntson. Used by permission