Acelerar los formularios
Cuando diseñe un formulario basado principalmente en datos del servidor, adopte un enfoque minimalista para un mejor rendimiento. Determine los datos y la funcionalidad necesarios y no pida al servidor estos datos y esta funcionalidad hasta que no los solicite el usuario. La solicitud de datos al servidor usa tiempo de procesamiento y crea tráfico en la red. Para solicitar menos datos en sus formularios:
- Solicite el mínimo número de registros posible. Por ejemplo, use un filtro o una consulta para limitar el tamaño del conjunto de registros. Asegúrese de que el servidor pueda procesar todas las restricciones que se utilicen.
- Use el mínimo número de campos remotos posible en las vistas subyacentes a sus formularios.
- Use el menor número posible de formularios que tengan acceso a vistas remotas en su conjunto de formularios. Cuando abra un conjunto de formularios, todos los formularios del conjunto se abrirán y completarán con los datos aplicables. Si limita el número de formularios del conjunto, especialmente aquellos que deben conectarse a un servidor y recuperar datos remotos, reducirá el tiempo de carga del conjunto de formularios.
- Use menos controles enlazados que tengan acceso a datos remotos. Cada cuadro combinado, cuadro de lista y cuadrícula que estén enlazados a una tabla o una consulta remota necesita una consulta distinta al servidor cuando se abra el formulario. Evite usar controles que contengan totales o cuadros de lista y cuadros combinados que tengan orígenes de filas grandes.
- Si los usuarios necesitan comparar múltiples conjuntos de datos, considere la posibilidad de almacenar en tablas locales temporales los datos devueltos por el servidor. Proporcione un formulario en el cual el usuario pueda usar los datos almacenados previamente o ejecutar una nueva consulta.
Almacenar localmente tablas de consulta
Con frecuencia, una aplicación contiene varios formularios que usan la misma tabla remota. Si los datos de la tabla no cambian con frecuencia, puede acelerar la carga del formulario y reducir la carga del servidor mediante una de las técnicas siguientes:
- Almacene en la base de datos de la aplicación de Visual FoxPro local las tablas que nunca cambian y que no son demasiado grandes (como los nombres y las abreviaturas de las regiones de su país). Si la tabla se combina en consultas o vistas con tablas remotas, también debe conservar una copia de ella en el servidor para evitar combinar datos locales y remotos.
- Almacene en el servidor y en la base de datos de la aplicación local las tablas que cambien con poca frecuencia (como las listas de edificios de la compañía). Ofrezca un método para que el usuario descargue la tabla cuando cambien los datos.
- Almacene en el servidor y en la base de datos de la aplicación local las tablas que cambien ocasionalmente pero no a diario (como una lista de empleados en una pequeña compañía o departamento). Su aplicación debe actualizar automáticamente la versión local cada vez que se inicie. Este método emplea tiempo adicional cuando se inicia la aplicación, pero acelera las consultas cuando la aplicación está en ejecución.
Mostrar campos únicamente bajo petición
Presente únicamente cuando se soliciten los campos que tardan mucho tiempo en recuperar datos del servidor, como los campos de tipo Memo o General. Puede usar las técnicas siguientes:
Si su formulario se basa en una vista, coloque los campos de tipo Memo o General fuera de la pantalla en otra página del formulario. Agregue una etiqueta al formulario, como "Avanzar página para ver notas e imágenes", que informen al usuario de cómo ver la información. Establezca la propiedad FetchMemo de la vista o del cursor en el valor falso (.F.), de forma que Visual FoxPro no recupere campos de tipo Memo o General hasta que se muestren en la pantalla.
Establezca la propiedad Visible en el valor falso (.F.) para los controles enlazados a los campos de tipo Memo o General. Agregue un botón de alternar o un botón de comando que establezca la propiedad en el valor verdadero (.T.), de forma que el usuario pueda elegir ver el contenido de estos controles.
Muestre los campos más importantes en el formulario principal y ofrezca un botón con la etiqueta "Más información" que abra otro formulario que contenga otros campos. Base el segundo formulario en una vista parametrizada por el campo de clave principal del formulario principal. Por ejemplo, suponga que tiene un formulario principal basado en una vista cuya instrucción SQL SELECT incluye el código siguiente:
SELECT customer_id, company_name, address, city, region, country FROM customers
En el formulario anterior,
cust_id
está enlazado athisform.txtCust_id
. Podría basar el segundo formulario en la siguiente vista, que sólo se utiliza cuando el usuario elige el botón "Más información":SELECT orders.order_id, orders.order_date, orders.shipper_id, ; employee.emp_id, employee.last_name, employee.first_name ; FROM orders, employee ; WHERE orders.cust_id = ?THISFORM.txtCust_id ; AND orders.employee_id = employees.emp_id
Vea también
Acelerar consultas y vistas | Mejorar el rendimiento de las actualizaciones y eliminaciones | Optimizar el rendimiento cliente-servidor | Implementar una aplicación cliente-servidor