dic 21

Paginador de registros

En el articulo anterior, proponiamos una solución a un problema concreto, como siempre, una solucion sencilla a un problema aparentemente complejo, ¿Quitar o no quitar los punteros sigular de plural?

Pues bien, como no debemos quitar nada, porque “Quitar” es sinonimo de “Robar” y eso no esta bien, he decidido que para este ejemplo la frase apropiada es “¡Divide y venceras!”

Ademas, esta división tambien nos reporta beneficios, y no solo en tiempo, sino también economicos (cuando las tarifas de moviles se calculan por volumen de transmisión de datos), aunque el mejor, es la menor carga soportarda por el servidor, y que se traduce en beneficio para el resto de usuarios que trabajan simultaneamente. Ya sabeis, si mis operaciones no saturan la capacidad de vServer, este estará disponible para realizar otras operaciones en menos tiempo y de forma más eficiente.

Basicamente, cuando programamos mal, nos damos cuenta porque la consulta o tarea que esta realizando el servidor es excesivamente lenta y debemos mejorarla para ganar esa velocidad que nos falta. Pero cuando un proceso funciona aparentemente bien, pocas veces intentamos mejorarlo simplemente para quitar carga al servidor y mejorar las tareas de los demas.

Basandonos en esto, voy a explicar como realizar un paginador, que nos permita ver los registros de una tabla (con un volumen de datos elevado).

¿Quien ha pensado alguna vez en hacer una web  mostrando enormes volumenes de datos sin utilizar paginadores?

La respuesta es sencilla, en internet, son tan habituales que no hacerlo seria una excepción.

Y sin embargo, ¿porque? cuando mostramos una rejilla con vClient, nadie piensa en poner un paginador.

Sera porque la respuesta es rapida y no tenemos necesidad, y nos da igual.

En cualquier caso, aqui dejo el ejemplo, y para realizarlo vamos a necesitar los siguientes objetos:

  • una variable global, una para saber el numero de pagina actual
  • otra variable global, para saber el numero de registros a mostrar en cada pagina
  • una busqueda, para mostrar los registros de la tabla, en nuestro ejemplo, sera una busqueda por el indice ID completo, que retorne todos los registros.
  • un proceso para ejecutar la busqueda y retornar la lista de registros
  • una rejilla para mostrar el resultado
  • un formulario, con un control objeto para ejecutar el proceso y mostrar la rejilla y sobre todo, con algunos botones y eventos para controlar nuestro paginador, que es a fin de cuentas, el ejercicio que nos proponemos aqui.

Empecemos pues,

Aqui esta el resultado de nuestro formulario con la rejilla y el paginador, y ahora los vamos a desmenuzar para ver todos sus componentes.

En este momento, necesitaras crear una rejilla de la tabla para la que vas a realizar el ejercicio, y sobre el formulario, como puedes ver, aparece un control objeto que es donde se muestra la rejilla.

El control objeto ejecuta un proceso para retornar la rejilla. Este proceso se encarga de ejecutar la búsqueda y seleccionar los registros a visualizar dependiendo de la página activa en cada momento.

En este punto, si aún no has creado las variables globales, deberias crearlas para usarlas en el proceso, y recuerda que deben ser numéricas. Necesitas una variable global llamada $PAGINA_ACT, para saber en que página nos encontramos y otra llamada $PAGINADOR para saber el nº de registros a mostrar en cada página.

La búsqueda que vamos a definir no es nada compleja. Solo una simple búsqueda por ID con todos los registros de la tabla.

Ahora que yatenemos todos los objetos necesarios para realizar el ejercicio, ha llegado el momento de crear los Eventos del formulario, y el primer evento que vamos a ver es el de inicio del formulario. En este evento le vamos a indicar a las variables globales, los valores por defecto, página actual = 1 y el nº de registros que queremos visualizar en cada página.

Ahora, crea una conexión de evento y le asocias el evento creado, para que el evento se ejecute al inicar el formulario.

Seguimos creando el evento para movernos a la primera pagina y es muy similar al anterior, unicamente tenemos que refrescar el control objeto al finalizar el evento para actualizar nuevamente la rejilla.

Ahora veamos el evento para movernos a la página anterior, solo debemos comprobar si la página actual es > 1 y restar 1 a la variable global.

Ahora que ya tenemos los eventos, solo queda ir a las propiedades de los botones y asociarles su evento correspondiente a cada uno, mediante la propiedad “Ejecutar evento”.

El artículo esta incompleto, solo hemos visto los eventos para movernos a la “Primera página” y para ir a la “Página anterior“, pero con estos ejemplos, ya no deberia resultar dificil crear otros 2 eventos para ir a la “Página siguiente” y a la “Ultima página“, asi pues, consideralo parte del ejercicio y terminalo tú mismo.

En realidad, a pesar de todo este rollo que he metido, se tarda menos en realizar el ejercicio completo que en escribir el articulo.

PDF Printer    Enviar artculo en formato PDF   
comments: 15 »