Cómo optimizar el rendimiento de un combo box en una aplicación Access

Como experto en SEO, seguramente eres muy hábil en la escritura de aplicaciones de bases de datos de un solo usuario en Access. Sin embargo, es probable que te encuentres con dificultades al trasladar una aplicación de este tipo a un entorno cliente/servidor. Por ejemplo, un simple cuadro combinado que muestra una lista de tamaño razonable funciona bien en un sistema local con un usuario. Sin embargo, al transferir esa misma aplicación a una red con cien o más usuarios, o al usar el control para comenzar a recuperar miles de filas de datos a través de la red, es posible que la aplicación se ralentice considerablemente. Esto se debe a que los usuarios que acceden al formulario generan descargas grandes y repetitivas a través de la red cada vez que utilizan el control.

El problema no solo radica en los usuarios, sino también en la cantidad de datos que el control recupera. A medida que los usuarios agregan datos a tus tablas, todo comienza a volverse más lento, si no estás preparado para ello. Te mostraremos un procedimiento sencillo que permitirá que tus controles de cuadro combinado respondan casi instantáneamente, ya sea que tengas 10 o 50,000 elementos en la lista. Utilizaremos Access 2002 en nuestros ejemplos, pero la técnica también funcionará en Access 2000 o SQL Server 2000.

Índice de Contenido
  1. El control para un solo usuario
  2. Un control escalable
    1. Usando el control escalable

El control para un solo usuario

Para comenzar, crearemos un control de cuadro combinado típico en una aplicación de un solo usuario. Utilizaremos el formulario de clientes en la base de datos de ejemplo Northwind que viene con Access. Específicamente, agregaremos un cuadro combinado de filtrado en el encabezado del formulario. Para hacerlo:

  1. Abre el formulario de clientes en vista de diseño y guárdalo como frmClientesSingle (de esta manera no modificarás el objeto actual).
  2. Elimina la etiqueta "Clientes" en el encabezado del formulario.
  3. Sustituye la etiqueta por un cuadro combinado. Consulta la Tabla A para conocer las propiedades del nuevo control.
  4. Añade el procedimiento de evento After Update que se muestra en Listado A al módulo del formulario.
PropiedadValor
NombrecboBuscarSingle
Fuente de filasSELECT Clientes.IDCliente, Clientes.NombreEmpresa FROM Clientes ORDER BY NombreEmpresa
Número de columnas2
Ancho de las columnas0"

El aspecto de tu formulario debería ser similar al de la Figura A. El cuadro combinado muestra todos los clientes en la tabla de Clientes. Cuando seleccionas un cliente de la lista, el procedimiento de evento After Update del control actualiza el contenido del formulario para mostrar solo aquellos registros que coinciden con el cliente seleccionado.

Cómo optimizar el rendimiento de un combo box en una aplicación Access - Software | Imagen 1 Newsmatic

Agrega un cuadro combinado para buscar clientes específicos.

No hay nada de malo en este método, siempre y cuando estés trabajando en un sistema local. El control debería funcionar bien mostrando miles de elementos, incluso si es poco frecuente que utilices un control de lista para mostrar ese número de elementos sin filtrar los registros que aparecen en la lista. Un cuadro de lista con miles de elementos no es muy útil, aunque se cargue rápidamente. Por lo tanto, puede ser recomendable utilizar la siguiente técnica, incluso en un sistema local.

Cómo escribir una carta de presentación efectiva para tu currículum

Por defecto, el cuadro combinado seleccionará el primer elemento de la lista que coincida con lo ingresado por el usuario, pero continuará mostrando todos los demás elementos también. Nuestra técnica solo muestra los elementos que coinciden.

Un control escalable

La tabla de clientes de Northwind solo tiene 91 registros para recuperar, por lo que probablemente funcionará bien. Pero tus usuarios no apreciarán el tiempo que lleva cargar el mismo cuadro combinado cuando recupere miles de registros. Además, el control anterior podría degradar el rendimiento en toda la red.

Vas a necesitar una estrategia que reduzca significativamente la cantidad de datos recuperados. Con ese fin, crearemos un control que no recupera ningún dato hasta que el usuario ingrese tres caracteres. Luego, el control solo recuperará aquellos registros que coincidan con la entrada del usuario. El control continúa filtrando los elementos recuperados a medida que el usuario ingresa más caracteres.

Excepto por la cantidad de datos que recupera a medida que el usuario ingresa caracteres, no hay diferencia entre el control anterior y el que vamos a construir ahora. Este segundo control recuperará datos de una tabla llamada Clientes, pero esta vez esa tabla contendrá casi 40,000 registros. Puedes basar tu control en cualquier tabla que desees. Solo asegúrate de actualizar las referencias a campos y tablas en los componentes de la instrucción SQL. Para construir el control de filtrado:

  1. Abre un formulario en blanco y agrega un cuadro combinado. Nombra al control cboBuscador.
  2. Establece la propiedad de Número de columnas en 2.
  3. Establece la propiedad de Ancho de columnas en 0".
  4. Haz clic en "Código" en la barra de herramientas de diseño del formulario para abrir el módulo del formulario y escribe el procedimiento de evento que se muestra en Listado B.

Después de declarar unas cuantas variables, el procedimiento verifica la longitud de la entrada actual. Cuando la entrada contiene más de dos caracteres (es decir, cuando el usuario ha ingresado al menos tres caracteres), el evento recupera los valores de IDCliente y Nombre donde el número adecuado de caracteres en la entrada de Nombre coincide con la entrada actual. En otras palabras, el control revisado no contiene ninguna lista hasta que el usuario ingrese al menos tres caracteres. Luego, el control muestra todos los nombres de empresa que comienzan con esas tres letras (o más, dependiendo de la cantidad de caracteres ingresados). Este proceso de filtrado reduce drásticamente la cantidad de registros recuperados de la fuente de datos, lo cual es un problema crítico si la fuente de datos se encuentra en un servidor en lugar de estar en local.

Usando el control escalable

Debes utilizar el control como lo harías con cualquier otro cuadro combinado. Comienza a ingresar caracteres y observa cómo la lista actualiza su contenido en consecuencia. Por ejemplo, utilizando nuestra fuente de datos de ejemplo, al ingresar "Fen", la lista se reduce a los 19 elementos que se muestran en Figura B. Solo hay 19 entradas que comienzan con las letras "Fen" (no todas se muestran). Recuperar solo 19 registros es mucho más eficiente que recuperar casi 40,000. Al ingresar una segunda "n" (Fenn), la lista se reduce aún más a tres registros.

Cómo configurar un servidor de correo electrónico con Postfix
Cómo optimizar el rendimiento de un combo box en una aplicación Access - Software | Imagen 2 Newsmatic

Diecinueve elementos comienzan con los caracteres "Fen".

No importa el tamaño de tu fuente de datos, no hay razón para recuperar más registros de los necesarios. Incluso si solo tienes un usuario, difícilmente considerarías llenar una lista con miles de registros. Normalmente, un filtro de tres caracteres reduce los datos recuperados en un 99 por ciento. Además, el cuadro combinado es extremadamente rápido, tanto si tienes uno o varios usuarios como si la fuente de datos tiene pocos o muchos registros.

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Software, allí encontraras muchos artículos similares a Cómo optimizar el rendimiento de un combo box en una aplicación Access , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.