Home
Capítulos 12-15 - Instituto Tecnólogico de La Laguna
Contents
1. file CMempl hhA455 htm 30 05 2000
2. Optimizar formularios y controles Tambi n puede mejorar de forma significativa los formularios y controles de la aplicaci n Sugerencia Si desea m s informaci n sobre el establecimiento y obtenci n de propiedades de forma eficaz vea Referencias a propiedades de objetos de forma eficaz m s adelante en este cap tulo Usar el entorno de datos Si utiliza el entorno de datos del Dise ador de formularios o el Dise ador de informes el rendimiento de la apertura de la tabla es mucho m s r pido que si se ejecutaran los comandos USE SET ORDER y SET RELATION en el evento Load del formulario Cuando use el entorno de datos Visual FoxPro utiliza las llamadas al motor de nivel inferior para abrir las tablas y configurar los ndices y las relaciones Limitar el n mero de formularios en un conjunto de formularios Utilice conjuntos de formularios solamente cuando sea necesario que un grupo de formularios comparta una sesi n de datos privada Cuando utilice un conjunto de formularios Visual FoxPro crea file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 75 de 87 instancias de todos los formularios y de todos los controles de todos los formularios del conjunto aun cuando s lo se muestre en pantalla el primer formulario del conjunto Esto puede resultar lento e innecesario si los formularios no tienen que compartir una sesi n de datos privada En su lugar
3. actualizables OLDVAL lt mod_ 1d2 gt CURVAL lt mod_ 1d2 gt AND predeterminado Campos clave y WHERE OLDVAL cust_id CURVAL cust_id AND modificados OLDVAL company CURVAL company AND OLDVAL contact CURVAL contact AND OLDVAL address CURVAL address OLDVAL timestamp CURVAL timestamp En general deber a elegir una opci n para la cl usula SQL WHERE en este orden de preferencia 1 Clave y marca de hora si la base de datos remota admite los campos de marca de hora que es la forma m s r pida de indicar si se ha modificado alg n registro 2 Campos clave y modificados porque los campos que se actualizan en el servidor son casi siempre un subconjunto del n mero total de campos que se podr a actualizar 3 Campos clave y actualizables 4 S lo campos clave El uso de esta configuraci n implica que el servidor remoto insertar un file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 84 de 87 registro totalmente nuevo que use la clave modificada y eliminar el registro anterior Enviar instrucciones en un lote Algunos servidores como Microsoft SQL Server permiten enviar un lote de instrucciones SQL en un solo paquete Esto aumenta el rendimiento porque se reduce el tr fico de la red y porque el servidor puede compilar m ltiples instrucciones a la vez Por ejemplo si especifica un tama o de lote de cuatro y actua
4. El problema es que el usuario podr a elegir Cancelar en el cuadro de di logo Abrir o escribir el nombre de un archivo que no existe El c digo siguiente se anticipa a esta situaci n comprobando que el archivo existe antes de que el usuario intente utilizarlo IF FILE cNewTable USE cNewTable IN O ENDIF El usuario final tambi n podr a escribir el nombre de un archivo que no sea una tabla de Visual FoxPro Para solucionar este problema podr a abrir el archivo con las funciones de E S de archivo a bajo nivel analizar el encabezado binario y comprobar que el archivo es una tabla v lida Sin embargo esto implica un peque o trabajo y podr a ralentizar perceptiblemente la aplicaci n Lo mejor ser a controlar la situaci n durante el tiempo de ejecuci n mostrando un mensaje como Abra file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 61 de 87 otro archivo Este archivo no es una tabla cuando se produzca el error 15 No es una tabla No puede y probablemente tampoco lo desee anticipar todos los errores posibles por lo que tendr que interrumpir algunos mediante c digo que se ejecutar en caso de que se produzca un error de tiempo de ejecuci n Controlar errores de procedimientos Cuando se produzca un error en el c digo de procedimientos Visual FoxPro comprobar el c digo de control de errores asociado a una rutina ON ERROR Si
5. Parameters nError cMethod nLine DO CASE file C Mempl hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 63 de 87 CASE nError 13 No se ha encontrado el alias cNewTable GETFILE DBF IF FILE cNewTable SELECT 0 USE cNewTable This SkipTable ALIAS ELSE his SkipTable ENDIFCASE nError 1585 amp amp Conflicto de datos Actualizar conflicto controlado por una clase de comprobaci n de datos nConflictStatus THIS DataChecker1 CheckConflicts IF nConflictStatus 2 MESSAGEBOX No se puede resolver un conflicto de datos ENDIFOTHERWISE Mostrar informaci n sobre otros errores cMsg Error ALLTRIM STR nError CHR 13 MESSAGE CHR 13 Programa PROGRAM nAnswer MESSAGEBOX cMsg 2 48 512 Error DO CASE CASE nAnswer 3 amp amp Anular CANCEL CASE nAnswer 4 amp amp Reintentar RETRY OTHERWISE amp amp Ignorar RETURN ENDCASEENDCASE Es posible que desee estar seguro de que suministra informaci n para un error que nunca ha controlado De lo contrario el c digo del evento de error se ejecutar pero no realizar ninguna acci n y ya no se mostrar el mensaje de error predeterminado de Visual FoxPro El resultado es que ni el programador ni el u
6. BeforeRowColChange Click CloseE ditor x Enviar salida a IV Ventana Salida del depurador Archivo B E neka o Sobrescrbir Nota En este ejemplo los eventos MouseMove y Paint se han eliminado de la lista Eventos para seguir porque estos eventos se producen con tanta frecuencia que dificultan la visi n de las secuencias de los dem s eventos Cuando el seguimiento de eventos est activado cada vez que se produzca un evento de sistema en la lista Eventos para seguir el nombre del evento aparecer en la ventana Resultados del depurador o se escribir en un archivo Si opta por mostrar los eventos en la ventana Resultados del depurador tambi n podr guardarlos en un archivo seg n se describe en Mostrar los resultados m s adelante en este mismo cap tulo Nota Si la ventana Resultados del depurador no est abierta los eventos no se presentar n en la lista aun cuando est activado el cuadro Ventana Resultados del depurador Aislar los problemas Una vez identificados los problemas mediante la prueba puede usar el entorno de depuraci n de Visual FoxPro para aislarlos con los pasos siguientes Iniciar una sesi n de depuraci n Seguimiento del c digo Suspensi n de la ejecuci n del programa Mostrar los valores almacenados Mostrar los resultados Iniciar una sesi n de depuraci n Para iniciar una sesi n de depuraci n abra el entorno de depuraci n file CMempl hhA455 htm 30 05 2000 Manu
7. Carlos Mart n BackColor RGB 0 0 0 amp Rojo oscuro ENDWITH Tambi n puede almacenar una referencia a un objeto en una variable y despu s incluir la variable en lugar de la referencia al objeto oControl THISFORM pgfCstInfo pgCstName txtName oControl Value Carlos Mart n oControl BackColor RGB 0 0 0 amp Rojo oscuro Optimizar controles ActiveX Si utiliza Automatizaci n o controles ActiveX en la aplicaci n puede ajustar la aplicaci n para obtener el m ximo rendimiento de los controles ActiveX y de Automatizaci n Usar controles ActiveX de forma eficaz Para obtener el m ximo rendimiento a la hora de utilizar controles ActiveX en los formularios siga estas recomendaciones e Inicie los servidores de Automatizaci n en primer lugar Los controles enlazados a campos generales suelen funcionar mejor cuando los servidores de estos tipos de datos como Microsoft Excel o Word ya se est n ejecutando en el equipo cliente e Inserte objetos como un icono Cuando inserte un control ActiveX en un campo h galo como un icono o un marcador de posici n en lugar de insertar el objeto completo Esto reduce la cantidad de espacio de almacenamiento necesario porque Visual FoxPro almacena una imagen de presentaci n con el objeto lo que consume gran cantidad de espacio de almacenamiento Si se inserta un objeto como un icono tambi n se aumenta el rendimiento para dibujar el objeto e Use controles de im
8. 6 Si el valor devuelto de un cuadro de mensajes se almacena en nReturnValue se suspende la ejecuci n cuando un usuario elige S en el cuadro de mensajes Suspender de forma condicional la ejecuci n en una l nea de c digo Puede especificar que la ejecuci n del programa se suspenda en una l nea determinada s lo cuando una condici n concreta sea verdadera Punto de interrupci n cuando la expresi n es verdadera Puntos de interrupci n Tipo Punto de ineterrupci n en la ubicaci n si la expresi n es 4 y Ubicaci n Cancelar setpath 4 Archivo El Ayuda Cuenta de pasos Expresi n oldebugmode T Puntos de interrupci n en setpath 4 main pra cuando oldebugmode T B Agregar Quitar Desactivar Borrar todas V Mostrar los mensajes de los puntos de interrupci n file CMempl hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 55 de 87 Para suspender la ejecuci n del programa en una l nea determinada cuando la expresi n se eval a como verdadera 1 En el men Herramientas de la ventana Depurador elija Puntos de interrupci n para abrir el cuadro de di logo Puntos de interrupci n 2 En la lista Tipo elija Punto de interrupci n cuando la expresi n es verdadera 3 Escriba la ubicaci n en el cuadro Ubicaci n 4 Escriba la expresi n en el cuadro Expresi n 5 Elija Agregar para agregar el punto de interrupc
9. elija el comando apropiado Para alinear texto en un campo 1 Elija el control Campo 2 En el cuadro de di logo Expresi n de informe elija el bot n de di logo situado junto al cuadro Formato Cuadro de di logo Formato para una expresi n de tipo Num rico gt Aceptar RA Intro Seleccione un de formato i ERE Cancelar tipo de dato f Car cter G Num rico C Fecha aqu Opciones de edici n I Alinear a la izquierda CR si es positivo P 1 ce a gt P da o 7 En blanco si es cero DB si es negativo del control aqu Negativo I Ceros iniciales I Formato SET DATE I Moneda 7 Formato de fecha europea I Notaci n cient fica 3 En el cuadro de di logo Formato seleccione el tipo de datos para el campo Car cter Num rico o Fecha 4 Seleccione la alineaci n y las opciones de formato que quiera Definir plantillas de formato de campo Una plantilla de formato le permite personalizar el formato del campo Si escribe una combinaci n de caracteres y c digos en el cuadro Formato del cuadro de di logo Expresi n de informe o el cuadro de di logo Formato puede crear una amplia variedad de formatos de impresi n Los caracteres que escriba aparecen como texto junto con el valor del campo Los c digos que escriba determinan la apariencia de la salida de campos Por ejemplo si usa la siguiente plantilla de formato para un campo num rico de 10 d gitos los caracteres par ntesis espacios y guio
10. 2 Programar una aplicaci n y el cap tulo 13 Compilar una aplicaci n Este cap tulo trata los temas siguientes e Preparar la prueba y depuraci n e Depurar antes de que se produzcan errores e Aislar los problemas e Mostrar los resultados O o Registrar el trayecto del c digo Controlar errores de tiempo de ejecuci n Preparar la prueba y depuraci n Los programadores suelen buscar diferentes niveles de solidez cuando comprueban y depuran sus aplicaciones 1 Ejecuci n sin bloqueos ni generaci n de mensajes de error 2 Acciones apropiadas en situaciones frecuentes 3 Acciones razonables o mensajes de error en diversas situaciones 4 Recuperaci n inmediata ante interacciones imprevistas del usuario Visual FoxPro ofrece un variado conjunto de herramientas para facilitar la tarea de aislar e identificar los problemas del c digo para que puedan resolverse de forma eficaz Sin embargo una de las mejores maneras de crear aplicaciones robustas es buscar los posibles problemas antes de que se produzcan Depurar antes de que se produzcan errores La teor a ha demostrado que las buenas costumbres de escritura de c digo uso de espacios en blanco inclusi n de comentarios adhesi n a las convenciones de nombres etc tienden a reducir autom ticamente el n mero de errores del c digo Adem s hay algunos pasos que se pueden realizar en el proceso de programaci n para que las operaciones de prueba
11. a tDayTotal Para cambiar el orden de las variables de informe file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 15 de 87 1 En el men Informe elija Variables 2 En el cuadro Variable arrastre el bot n situado a la izquierda de la variable para cambiar el orden 3 Elija Aceptar Establecer el valor inicial de una variable Si utiliza una variable en c lculos aseg rese de que inicializa dicha variable con un valor diferente de cero para no producir un error de divisi n por cero Si no especifica un valor Visual FoxPro asignar un valor predeterminado Para establecer el valor inicial de una variable 1 En el men Informe elija Variables 2 Enel cuadro Variable seleccione la variable que desea inicializar 3 En el cuadro Valor inicial introduzca el valor 4 Elija Aceptar Si reordena los grupos en su informe sus variables de informe podr an no restablecerse en el campo correcto Por ejemplo si su informe contiene dos grupos el primero agrupado por pa s y el segundo agrupado por fecha y cambia el orden de los grupos las variables continuar n ajustadas de acuerdo a las posiciones originales de los grupos Puede cambiar el valor de un c lculo si especifica cu ndo se restablece la variable De forma predeterminada Visual FoxPro restablece las variables de informe al final del informe Para restablecer una variable al final de un informe una p gina o
12. actualizaci n de la ventana de comandos cada vez que se ejecute un programa file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 78 de 87 Usar expresiones de nombre en lugar de sustituci n de macros Si utiliza expresiones de nombre en lugar de la sustituci n de macros el rendimiento del programa aumentar notablemente Por ejemplo si asigna un valor a la variable cri1le una expresi n de nombre creada con cFile ser m s r pida que la sustituci n de macros cFile CUST use cFile amp amp Substituci n de macros lenta use cFile amp amp Expresi n de nombre r pida preferida Referencias a propiedades de objetos de forma eficaz Comprendiendo la forma en que funciona Visual FoxPro con las propiedades y objetos puede optimizar la ejecuci n de las aplicaciones Optimizar referencias a una propiedad repetidas Cuando haga referencia a una propiedad de objeto con la sintaxis objeto propiedad Visual FoxPro debe buscar el objeto antes de poder tener acceso a la propiedad Si debe tener acceso a la propiedad repetidas veces esta estrategia de b squeda puede ralentizar el rendimiento Para evitar las referencia al mismo procedimiento varias veces como en un bucle lea el valor de la propiedad en una variable realice los cambios y establezca la propiedad una sola vez cuando termine Por ejemplo el c digo siguiente rellena una matriz de propiedades
13. archivos marcados como archivos principales no se pueden marcar como excluidos Para obtener detalles sobre los archivos principales vea el apartado Establecer el punto de partida de este cap tulo Tablas marcadas como excluidas en un proyecto 5 Administrador de proyectos Solution E Datos Docs Clases C digo Dtros Nuevo E 9 newid Agregar E 0 testdata H E Tablas libres MBdIicar behindsc repolist E Consultas z Documentos Titar F 1M Bibliotecas de clases A C digo Generar EH Otros x Descripci n Ruta file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 42 de 87 Sugerencia Para ver simult neamente todos los archivos de proyecto elija Informaci n de proyecto en el men Proyecto y seleccione la ficha Archivos Generar una aplicaci n a partir de un proyecto Si puede generar el proyecto sin errores podr generar la aplicaci n El resultado final de este proceso es un nico archivo que incluye todos los archivos a los que se ha hecho referencia en el proyecto en un nico archivo de aplicaci n salvo los marcados como excluidos Puede distribuir el archivo de aplicaci n junto con los archivos de datos y con todos los dem s archivos excluidos del proyecto a los usuarios y stos pueden iniciar el archivo p
14. cambiar su tama o para que se ajusten a los l mites de la nueva columna Establecer el alto de bandas de informe Al dise ar el informe puede cambiar el alto de una banda de informe El alto de una banda de informe determina la cantidad de espacio que cada banda de informe usa en la p gina dentro de los m rgenes de p gina Por ejemplo si la banda T tulo se establece a media pulgada 1 27 cm el T tulo aparecer en la primera media pulgada de espacio despu s del margen superior La banda de detalle muestra la cantidad de espacio asignada para cada registro impreso La siguiente informaci n se aplica a todas las bandas del informe Puede establecer par metros adicionales para las bandas Encabezado de grupo y Pie Para obtener informaci n sobre las Bandas de grupo consulte la secci n Agrupar datos en el dise o en el cap tulo 7 Dise o de informes y etiquetas m s adelante en este cap tulo Para establecer un alto de banda exacta 1 Haga doble clic en la barra para la banda apropiada Aparece un cuadro de di logo para la banda 2 En el cuadro Alto escriba un valor para el alto 3 Elija Aceptar Usar expresiones y funciones en controles de campo Puede incluir controles de campo en su informe o etiqueta para mostrar valores de varias expresiones incluyendo campos de tablas y vistas variables y c lculos Las siguientes secciones describen algunas expresiones y funciones usadas normalmente como campos m ltiples fecha
15. de datos en el informe el encabezado de las p ginas subsiguientes ser el del ltimo grupo de la lista de grupos Coloque todos los controles que desee imprimir para el encabezado de grupo en la banda de encabezado del ltimo grupo de la lista Para repetir el encabezado de grupo en la p gina siguiente e En el cuadro de di logo Agrupar datos seleccione el grupo que desea repetir y a continuaci n elija Volver a imprimir el encabezado de grupo en cada p gina Si no desea repetir el encabezado de grupo desactive esta casilla de verificaci n Controlar el resultado de informes y etiquetas Puede controlar d nde se env a el resultado de un informe o una etiqueta si utiliza alguna de las siguientes palabras clave con el comando REPORT o LABEL e PRINT e PREVIEW e FILE Si no utiliza una de estas palabra clave el informe se enviar a la pantalla o a la ventana activa file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 26 de 87 Seleccionar registros para imprimir Cuando imprima un informe es posible que desee limitar el n mero de registros que aparecen en el informe mediante criterios de selecci n Puede e Elegir el alcance de registros si especifica una cantidad o intervalo e Generar una expresi n FOR que seleccione registros que cumplan una condici n e Generar una expresi n WHILE que seleccione registros hasta que se encuentre uno que no cumpla una con
16. el siguiente c digo en el procedimiento de configuraci n IF SET TALK ON SE TALK OFF cTalkVal ON LSE cTalkVal OFF ENDIF Suele ser til guardar los valores predeterminados en variables p blicas en una clase personalizada o como propiedades de un objeto Application para que pueda restaurar estos valores al salir de la aplicaci n SET TALK amp cTalkVal Mostrar la interfaz inicial La interfaz inicial de usuario puede ser un men un formulario o cualquier otro componente de usuario Normalmente una aplicaci n mostrar una pantalla de inicio de sesi n o un cuadro de di logo de inicio antes de mostrar el men o formulario inicial Para iniciar la interfaz de usuario en el programa principal puede usar un comando DO para ejecutar un men o un comando DO FORM para ejecutar un formulario file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 37 de 87 Controlar el bucle de eventos Cuando el entorno est configurado y se muestre la interfaz de usuario inicial podr establecer un bucle de eventos para esperar la interacci n del usuario Para controlar el bucle de eventos e Ejecute un comando READ EVENTS que hace que Visual FoxPro comience a procesar los eventos de usuario como los clics del mouse y las pulsaciones de teclas Es importante situar correctamente el comando READ EVENTS en el archivo princip
17. genes Si desea mostrar un mapa de bits como el logotipo de una empresa los controles de im genes son mucho m s r pidos que los controles OLEBound e Use v nculos manuales siempre que sea posible Los v nculos manuales a los objetos son m s r pidos porque evitan el tiempo de notificaci n requerido para los v nculos autom ticos y porque el servidor no necesita iniciarse para dibujar el objeto Si no necesita actualizar un objeto con frecuencia use v nculos manuales Optimizar el rendimiento de Automatizaci n Si la aplicaci n interact a con otras aplicaciones puede conseguir el m ximo rendimiento mediante las t cnicas siguientes Evitar m ltiples instancias del servidor En algunos casos los servidores de Automatizaci n como Microsoft Excel iniciar n una nueva instancia aun cuando ya haya una ejecut ndose Para evitar esto y aumentar el rendimiento use la funci n GetObject en lugar de CreateObject Por ejemplo la llamada siguiente siempre utilizar una instancia existente file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 80 de 87 x GetObject excel Application De lo contrario la llamada siguiente crear una instancia nueva x CreateObject excel Application Si llama a GetObject pero el servidor no est funcionando aparecer el error 1426 En ese caso puede interrumpir el error y llamar a CreateObject ON ER
18. imagen u objeto OLE es mayor que el marco creado en el Dise ador de informes s lo aparecer en el marco una porci n de la imagen o el objeto La imagen o el objeto est n acoplados a la parte superior izquierda del marco No puede ver la parte inferior derecha que se extiende m s all del marco Para ajustar una imagen al marco 1 En el Dise ador de informes cree un Control Imagen Control OLE dependiente 2 En el cuadro de di logo Imagen para informe seleccione Cambiar la escala de la imagen conservar la forma Aparece la imagen completa que llenar la mayor parte del marco y conservar las posiciones relativas Esto protege a la imagen de la distorsi n vertical u horizontal Para rellenar el marco con la imagen 1 En el Dise ador de informes cree un control Imagen Control OLE dependiente file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 19 de 87 2 En el cuadro de di logo Imagen para informe seleccione Cambiar la escala de la imagen rellenar el marco La imagen cambia para llenar el marco que ha cambiado de tama o Si es necesario la imagen se ampl a verticalmente u horizontalmente para ajustarse al marco Para ver un ejemplo de un informe con im genes vea el informe Wrapping frx en el directorio Samples Vfp98 Solution de Visual Studio Centrar un objeto OLE Los objetos OLE incluidos en un campo General pueden variar en forma y tam
19. l nea se imprime una l nea en blanco Establecer opciones de impresi n para grupos Puede controlar c mo se imprimen grupos en el informe A veces querr que cada grupo empiece en una p gina distinta o controlar cu ndo se imprime el encabezado de grupo Establecer saltos de p gina de grupos Adem s de seleccionar el campo o expresi n que hay que agrupar el cuadro de di logo Agrupar datos le permite especificar opciones de salto de p gina para grupos Elegir una opci n de encabezado de grupo Puede que quiera que los grupos aparezcan en la siguiente columna para informes con varias columnas en una nueva p gina para formularios o con una nueva p gina numerada como 1 El cuadro de di logo Agrupar datos ofrece cuatro opciones para llevar a cabo estas tareas Puede e Iniciar un grupo en una nueva columna e Iniciar cada grupo en una nueva p gina e Restablecer el n mero de p gina a 1 para cada grupo e Volver a imprimir el encabezado de grupo en cada p gina Despu s de escribir una expresi n puede seleccionar estas opciones en el rea Propiedades de grupo Evitar encabezados de grupo hu rfanos A veces un grupo puede imprimirse parcialmente en una p gina y terminar en la siguiente Para evitar que un encabezado de grupo se imprima cerca del final de la p gina con la mayor parte de los registros en la p gina siguiente puede establecer la distancia m nima de la parte inferior a la que se va a imprimir un encabez
20. la condici n de la expresi n Controlar la selecci n de registros para imprimir Al imprimir puede especificar una condici n que se tiene que cumplir para seguir la evaluaci n y selecci n de registros Esta condici n se escribe en una expresi n WHILE Mientras la expresi n WHILE sea verdadera Visual FoxPro procesa el origen de datos Despu s de buscar un registro que no cumpla la condici n Visual FoxPro termina el proceso de evaluaci n e imprime los registros file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 28 de 87 seleccionados Esta opci n le permite seleccionar registros en base a informaci n externa a los valores contenidos en los campos Sugerencia Si usa una expresi n WHILE en un archivo que no se ha indexado el proceso de selecci n puede terminar antes de evaluar todos los registros apropiados Antes de imprimir el informe aseg rese de que la tabla de origen tiene el ndice activo apropiado para la expresi n WHILE que desea usar Para escribir criterios para terminar la selecci n de registros 1 En el men Archivo elija Imprimir 2 En el cuadro de di logo Imprimir elija Opciones 3 En el cuadro de di logo Opciones de impresi n elija Opciones 4 En el cuadro de di logo Opciones de impresi n de informes y etiquetas elija Alcance 5 En el cuadro de di logo WHILE escriba una expresi n WHILE O bien Elija el bot n WHILE para usa
21. necesita un cierto n mero o porcentaje de registros del conjunto de resultados que su consulta devolver a puede usar la propiedad Registros incluidos de la ficha Varios de los Dise adores de consultas o de vistas o puede agregar una cl usula TOP a su instrucci n SELECT SQL El n mero que proporcione en una cl usula TOP puede variar entre 1 y 32767 Para un porcentaje puede usar un valor entre 0 001 y 99 99 Por ejemplo si quiere seleccionar los diez clientes principales con las cantidades de pedidos m s altas puede especificar un GROUP BY en CUST_ID para mostrar un registro agregado para cada cliente y ordenar por ORDER_AMT en la cl usula ORDER BY Para obtener un TOP 10 verdadero debe especificar una ordenaci n descendente en ORDER_AMT de forma que los registros con las cantidades de pedidos m s altas aparezcan en primer lugar en el resultado Si usa un orden ascendente los registros de resultados se ordenan desde la menor cantidad de pedidos a la mayor Los registros incluidos que seleccione del conjunto de resultados tendr an en realidad los valores m s bajos SELECT TOP 10 FROM testdata customer INNER JOIN testdata orders ON Customer cust_id Orders cust_id GROUP BY Customer cust_id ORDER BY Orders order_amt DESC Especificar destinos para resultados de consultas Al utilizar cl usulas de la instrucci n SELECT SQL puede especificar varios destinos para almacenar el resultado de sus consul
22. no existe ninguna rutina ON ERROR Visual FoxPro muestra el mensaje de error predeterminado de Visual FoxPro Para obtener una lista completa de los mensajes de error de Visual FoxPro y los n meros de error vea la Ayuda Crear una rutina ON ERROR Puede incluir cualquier comando o expresi n v lida de FoxPro despu s de ON ERROR pero normalmente se llama a un procedimiento o programa de control de errores Para ver el funcionamiento de ON ERROR puede escribir en la ventana Comandos un comando irreconocible como qxy Aparecer un cuadro de di logo de mensaje de error est ndar de Visual FoxPro que indica No se reconoce el verbo de comando No obstante si ejecuta las l neas de c digo siguientes aparecer el error n mero 16 impreso en la ventana de salida activa en lugar de mostrarse el mensaje de error est ndar en un cuadro de di logo ON ERROR ERROR qxy Si se ejecuta ON ERROR sin escribir nada m s detr s se restablecen los mensajes de error incorporados de Visual FoxPro ON ERROR De forma esquem tica el c digo siguiente ilustra un controlador de errores ON ERROR LOCAL 1cOldOnError Guardar el controlador de errores original 1lcoldO0nError ON ERROR Ejecutar ON ERROR con el nombre de un procedimiento ON ERROR DO errhandler WITH ERROR MESSAGE c digo al que se aplica la rutina de control de errores Restablecer el controlador de errores o
23. o ROLLBACK Adem s si anexa registros a una tabla es imprescindible que Visual FoxPro bloquee el encabezado de la tabla El encabezado permanece bloqueado durante el proceso de la transacci n lo que impide que los dem s usuarios tambi n puedan anexar registros Para reducir al m nimo el impacto de las transacciones dis elas de modo que comiencen y terminen lo m s cerca posible de la actualizaci n real de los datos la transacci n ideal s lo contiene instrucciones de actualizaci n de datos Si va a agregar el proceso de transacciones a actualizaciones de datos realizadas en un formulario no abra una transacci n ejecute el formulario y despu s confirme la transacci n cuando el formulario est cerrado En su lugar ponga las instrucciones de proceso de transacciones en el c digo de eventos para el bot n Guardar por ejemplo Guardar m todo del bot n de comando cmdSave BEGIN TRANSACTION UPDATE PRODUCTS SET reorder_amt 0 WHERE discontinued T END RANSACTION Optimizar el acceso a datos remotos La recuperaci n de datos de cualquier base de datos remota resulta cara Con el fin de obtener datos de una base de datos del servidor hay que seguir estos pasos 1 El cliente ejecuta la consulta en la base de datos remota 2 El servidor analiza y compila la consulta 3 El servidor genera un conjunto de resultados 4 El servidor indica al cliente que se ha completado el re
24. que desea rellenar 2 Establezca la propiedad RowSourceType a 3 SQL Statement 3 En la propiedad RowSource del control escriba una instrucci n SELECT SQL que incluya una cl usula INTO TABLE o INTO CURSOR Para llenar un control cuadr cula con una tabla o un cursor 1 Enel Dise ador de formularios modifique el formulario que tiene el control que desea llenar 2 Enel evento Load del formulario escriba una instrucci n SELECT SQL que incluya una cl usula INTO TABLE o INTO CURSOR 3 Establezca la propiedad RecordSource de la cuadr cula como el nombre de la tabla o cursor que haya creado en el paso 2 P Establezca la propiedad RecordSourceType de la cuadr cula a 0 Table para una tabla o 1 Alias para un cursor Imprimir el resultado en un informe o una etiqueta Si su informe o etiqueta incluye grupos o si necesita ordenar los datos de alguna otra manera puede utilizar las distintas cl usulas de la instrucci n SELECT SQL para obtener el resultado exacto que necesita Para enviar los resultados a un informe o una etiqueta existente e Utilice la instrucci n SELECT SQL con un comando REPORT o LABEL El ejemplo siguiente utiliza las cl usulas GROUP BY y ORDER BY as como el comando REPORT FORM SELECT FROM tastrade customer WHERE customer country Canad GROUP BY customer region ORDER BY customer postal_code customer company_name INTO CURSO
25. reemplaza expC 5 Escriba un signo m s despu s del nombre de campo seleccione un signo m s despu s del nombre de campo o seleccione en el cuadro de funciones Cadena 6 Escriba o seleccione Texto en la lista Funciones de cadena y a continuaci n escriba una coma 7 Repita los pasos 3 y 4 para agregar campos adicionales que completen la expresi n y escriba Aceptar 8 En el cuadro de di logo Expresi n de informe seleccione Ajustar al contenido del campo Cuando el control est lleno el espacio asignado al control se ajusta hacia abajo para alojar el valor de la expresi n Para obtener m s informaci n sobre Ajustar al contenido del texto consulte Imprimir controles con valores de longitud variable m s adelante en este mismo cap tulo Para combinar varios campos en una expresi n coloque una funci n ALLTRIM antes de cada nombre de campo coloque la puntuaci n entre comillas y coloque un signo menos entre cada elemento de la expresi n Si las longitudes de valores de campo no var an como c digos postales o abreviaturas puede insertar s lo el nombre de campo como en este ejemplo ALLTRIM ciudad regi n c digo_postal Observe que se utilizan espacios entre comillas en lugar de una coma para separar la regi n y el c digo postal Para ver m s ejemplos vea el informe Invoice frx en el directorio ASamples1Vfp98l1Solution Reports de Visual Studio Recortar y concatenar expresiones de ca
26. una aplicaci n e Agregar archivos a un proyecto e Generar una aplicaci n a partir de un proyecto Estructurar una aplicaci n file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 34 de 87 Una aplicaci n t pica de base de datos consta de estructuras de datos una interfaz de usuario opciones de consulta y funciones de generaci n de informes Para dise ar la estructura de su aplicaci n considere detenidamente la funci n que ofrece cada componente y su relaci n con los dem s componentes Una aplicaci n ensamblada de Visual FoxPro suele presentar al usuario un men y uno o m s formularios para introducir o mostrar datos Para ofrecer determinada funcionalidad y mantener la integridad y seguridad de los datos adjunte c digo a determinados eventos Las consultas y los informes permiten que los usuarios extraigan informaci n de la base de datos Estructura de una aplicaci n t pica de Visual FoxPro A la hora de estructurar la aplicaci n es necesario tener en cuenta las tareas siguientes e Establecer el punto de partida e Inicializar el entorno e Presentar la interfaz e Controlar el bucle de eventos e Restaurar el entorno original al terminar la aplicaci n En las secciones siguientes se proporcionan detalles sobre todas estas tareas Normalmente podr a crear un objeto Application para realizarlas consulte la aplicaci n de ejemplo Importadores Tas
27. una columna 1 En el men Informe elija Variables 2 En el cuadro Restablecer elija una opci n 3 Elija Aceptar Para restablecer una variable al entrar o salir de alguna banda 1 Enel Dise ador de informes abra el informe 2 Haga doble clic en la barra de la banda del informe que desee 3 En el rea Ejecutar expresi n del cuadro de di logo de la banda elija uno de los botones al final del cuadro Al entrar o Al salir file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 16 de 87 4 Escriba una expresi n para restablecer la variable cada vez que se entre o se salga de esa banda Formato de controles de campo Despu s de insertar un control de campo puede cambiar el tipo de datos del control y el formato de impresi n Los tipos de datos pueden ser Character Numeric o Date Cada uno de estos tipos de datos tiene sus propias opciones de formato incluyendo la opci n de crear su propia plantilla de formato El formato determina c mo se muestra el campo cuando se imprime el informe o la etiqueta Puede escribir funciones de formato directamente en el cuadro Expresiones del cuadro de di logo Expresi n de informe o seleccionar opciones en el cuadro de di logo Formato Normalmente puede convertir toda la salida alfab tica a may sculas insertar comas o comas decimales en salidas num ricas mostrar salidas num ricas en formato de moneda o convertir un forma
28. 3 de 87 Para ejecutar una aplicaci n e Enel Administrador de proyectos resalte el programa principal y a continuaci n elija Ejecutar O bien e En la ventana Comandos ejecute un comando DO con el nombre del programa principal DO MAINPROG PRG Si el programa se ejecuta correctamente estar preparado para generar un archivo de aplicaci n que contenga todos los archivos incluidos en el proyecto Deber a repetir los pasos de regeneraci n y ejecuci n del proyecto siempre que agregue componentes al proyecto A menos que elija Volver a compilar todos los archivos en el cuadro de di logo Opciones para generar s lo se volver n a compilar los archivos que se hayan modificado desde la ltima generaci n Generar una aplicaci n desde un proyecto Para generar un archivo terminado desde la aplicaci n gen relo en un archivo de aplicaci n Los archivos de aplicaci n tienen la extensi n app Para ejecutar la aplicaci n los usuarios deben iniciar Visual FoxPro primero y despu s cargar el archivo app Puede optar por generar un archivo de aplicaci n app o un archivo ejecutable exe desde el proyecto Los usuarios pueden ejecutar un archivo app si ya tienen una copia de Visual FoxPro Adem s puede crear un archivo exe que funciona con dos bibliotecas de v nculos din micos de Visual FoxPro Vfp6r dll y Vfp6enu dll las cuales se distribuyen con la aplicaci n para ofrecer un entorno de ejecuci n completo para Visu
29. Agrupar todos los elementos P gina 68 de 87 tablas Para obtener una lista completa de comandos que utilizan la cl usula FOR consulte la tabla siguiente O bien e Para tener acceso a datos contenidos en m s de una tabla utilice un comando SELECT SQL DELETE SQL y UPDATE SQL La tabla siguiente muestra una relaci n de los comandos que utilizan cl usulas FOR Rushmore est dise ado para que su velocidad sea proporcional al n mero de registros obtenidos en la operaci n Comandos que se pueden optimizar con cl usulas FOR AVERAGE BLANK BROWSE CALCULATE CHANGE COPY TO COPY TO ARRAY COUNT DELETE DISPLAY EDIT EXPORT TO INDEX JOIN WITH LABEL LIST LOCATE RECALL REPLACE REPLACE FROM ARRAY REPORT SCAN SET DELETED SET FILTER SORT TO SUM TOTAL TO Si utiliza una cl usula de alcance adem s de una expresi n de cl usula FOR optimizable el alcance debe ser ALL o REST para poder aprovechar la tecnolog a Rushmore Las cl usulas de alcance NEXT o RECORD desactivan Rushmore Puesto que el alcance predeterminado es ALL Rushmore funcionar cuando omita la cl usula de alcance Rushmore puede utilizar cualquiera de los ndices abiertos salvo los ndices filtrados y UNIQUE Nota Para obtener un rendimiento ptimo no establezca el orden de la tabla Si crea ndices o etiquetas el orden se establecer autom ticam
30. Cuando use el Administrador de proyectos puede combinar un n mero ilimitado de programas y procedimientos en un solo archivo app o exe Con esto se aumenta considerablemente la velocidad de ejecuci n del programa por varias razones En primer lugar Visual FoxPro abre un archivo de programa y lo deja abierto Despu s cuando se ejecuta un comando DO en un programa contenido en el archivo Visual FoxPro no necesita abrir un archivo adicional En segundo lugar una aplicaci n de uno o dos archivos reduce el n mero de archivos necesarios en el directorio de trabajo La velocidad de todas las operaciones con el archivo aumentar a medida que el sistema operativo tenga menos entradas de directorios que examinar al abrir cambiar el nombre o eliminar archivos Para obtener m s informaci n sobre el uso del Administrador de proyectos para crear aplicaciones consulte el cap tulo 13 Compilar una aplicaci n Sugerencias generales para la optimizaci n de tablas e ndices Para crear tablas e ndices de la forma m s r pida posible siga las recomendaciones que se muestran a continuaci n e Sino est activado el almacenamiento de registros o tablas en b fer use INSERT SQL en lugar de APPEND BLANK seguido por REPLACE especialmente con una tabla indexada en un entorno multiusuario porque los ndices deben actualizarse una sola vez e Si necesita anexar un gran n mero de registros a una tabla indexada ser a m s r pido quitar e
31. ETPROP o CURSORSETPROP para establecer la propiedad FetchMemo Almacenamiento local de datos de consulta Muchas aplicaciones incluyen datos de consulta est ticos como abreviaturas de estados c digos postales y cargos de empleados Si la aplicaci n contiene este tipo de datos y si la tabla no es demasiado grande podr a aumentar la velocidad de la aplicaci n para ello mantenga copias de esta informaci n en el equipo de cada usuario ya que las consultas no generan tr fico de red Esta t cnica es especialmente til para los datos que nunca cambian o lo hacen muy espor dicamente Si los datos cambian en alguna ocasi n debe dise ar una estrategia para transferir una copia nueva de la tabla de consultas al equipo de cada usuario Crear reglas locales Puede aumentar el rendimiento de la aplicaci n si crea reglas locales a nivel de campo y de registro en Visual FoxPro en lugar de utilizar las reglas definidas en el servidor Estas reglas pueden impedir que los datos que no son compatibles con las reglas de datos o de la empresa se introduzcan en la base de datos Mediante la definici n de reglas en Visual FoxPro se detectan los datos no v lidos antes de enviarse a trav s de la red lo que es m s r pido y ofrece un mejor control para administrar las condiciones de error Sin embargo el uso de reglas locales tambi n implica su coordinaci n con las reglas del file C temp hhA455 htm 30 05 2000 Manual del progra
32. IA A al Estirar con i desbordamiento 3 Flotante La opci n de alargar est disponible para campos l neas verticales rect ngulos y rect ngulos redondeados Para ver un ejemplo de controles que se ampl an y flotan vea el informe Wrapping frx en el directorio ASamplesiVfp98 Solution de Visual Studio Para establecer que un campo se ampl e con su valor 1 Haga doble clic en el control campo para mostrar su cuadro de di logo 2 Seleccione Ajustar al contenido del texto Hay que establecer que los controles que se colocan con respecto a controles que se ampl an floten o se sobrescribir n file CMempl hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 21 de 87 Para establecer que un control flote 1 Haga doble clic en el control para mostrar su cuadro de di logo 2 En el cuadro de di logo del control seleccione Flotante Precauci n Algunos de los datos no se han podido sobrescribir durante la impresi n si 1 coloca un campo respecto al fondo de la banda e incluye por debajo de este campo otro campo que est colocado respecto a la parte superior de la banda y se puede alargar o 2 coloca un campo respecto a la parte superior de la banda e incluye por encima de este campo otro campo colocado respecto a la parte superior de la banda y que se puede alargar Tambi n puede establecer que se alarguen l neas rect ngulos y rect ngulos redondeados Se pueden alargar c
33. Manual del programador Parte 4 Agrupar todos los elementos P gina 1 de 87 Manual del programador Parte 4 Agrupar todos los elementos Ahora ya puede completar su aplicaci n y probar su funcionalidad Agregue consultas e informes para ofrecer a los usuarios la informaci n que necesitan y despu s ejecute la aplicaci n y busque reas que pueda optimizar Cap tulo 12 Agregar consultas e informes Despu s de crear datos y una interfaz para su aplicaci n puede aumentar su eficacia con consultas e informes que proporcionen informaci n importante para sus usuarios Cap tulo 13 Compilar una aplicaci n Cree sus aplicaciones paso a paso y compruebe cada componente Cuando haya incluido todos los componentes ser f cil compilarlos en una aplicaci n Cap tulo 14 Probar y depurar aplicaciones Cuando programe una aplicaci n necesitar comprobar si existen errores en los componentes Visual FoxPro ofrece herramientas de depuraci n para ayudarle a buscar y corregir cualquier error que descubra en sus aplicaciones Cap tulo 15 Optimizar aplicaciones Cuando disponga de una aplicaci n estable y en funcionamiento considere las formas en que puede optimizar su rendimiento y convertirla en m s peque a y r pida Cap tulo 12 Agregar consultas e informes Una vez creadas las tablas y formularios para su aplicaci n puede agregar consultas e informes para seleccionar y mostrar datos a los usuarios Las consulta
34. R MiCursor REPORT FORM MYREPORT FRX file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 6 de 87 El ejemplo siguiente utiliza un comando LABEL FORM SELECT FROM tastrade customer WHERE customer country Canad GROUP BY customer region ORDER BY customer postal_code customer company_name INTO CURSOR micursor LABEL FORM MYLABEL LBX Aunque la instrucci n SELECT SQL es el m todo m s flexible para rellenar sus informes o etiquetas no es el nico m todo Para obtener m s informaci n acerca de c mo establecer or genes de datos para informes consulte la secci n Controlar los or genes de datos de un informe m s adelante en este mismo cap tulo Para ver m s informaci n acerca de la integraci n de los destinos de informes en sus aplicaciones consulte la secci n Integrar consultas e informes m s adelante en este mismo cap tulo Mostrar el resultado en una ventana Si desea mostrar el resultado de su instrucci n SELECT SQL puede enviarlo a una ventana La ventana Examinar es el destino predeterminado para los resultados de las consultas y no necesita incluir una cl usula de destino Puede enviar tambi n el resultado a la ventana principal de Visual FoxPro o a otra ventana activa Para mostrar resultados en la ventana principal de Visual FoxPro e Utilice la cl usula TO SCREEN de
35. ROR DO oleErr WITH ERROR x GetObject excel application ON ERROR amp amp restablecer el controlador de errores del sistema PROCEDURE oleErr PARAMETER mError IF mError 1426 then x CreateObject excel application ENDIF Hacer referencia a objetos de forma eficaz La ejecuci n de expresiones que usen objetos en un servidor de Automatizaci n puede resultar muy costosa especialmente cuando se eval an varias veces Es mucho m s econ mico almacenar las referencias de objetos en variables para tenerlas como referencia Para obtener m s informaci n vea Optimizar referencias repetidas a una propiedad en este mismo cap tulo Optimizar aplicaciones en entornos multiusuario Si va a escribir aplicaciones para un entorno multiusuario el rendimiento es un factor especialmente importante porque las operaciones ineficaces se multiplican Adem s si varios usuarios tienen acceso a datos la aplicaci n debe gestionar problemas de simultaneidad y acceso a la red Para administrar estos problemas puede e Ajustar el intervalo de reintentos de bloqueo e Usar el proceso de transacciones de forma eficaz Asimismo las sugerencias para trabajar con datos almacenados en servidores remotos pueden resultarle especialmente tiles Para obtener m s informaci n vea Optimizar el acceso a datos remotos m s adelante en este cap tulo Ajustar el intervalo de reintentos de bloqu
36. Rushmore globalmente e Utilice el c digo siguiente SET OPTIMIZE ON El valor predeterminado de la optimizaci n Rushmore est definido como ON Optimizar expresiones Rushmore La tecnolog a Rushmore depende de la presencia de una expresi n b sica optimizable en una cl usula FOR Una expresi n b sica optimizable puede formar una expresi n completa o puede aparecer como parte de una expresi n Tambi n puede combinar expresiones b sicas para formar una expresi n optimizable compleja Crear expresiones b sicas optimizables Una expresi n b sica optimizable toma una de las dos formas siguientes elndex relOp eExp O bien eExpr relOp elndex Una expresi n b sica optimizable tiene las siguientes caracter sticas e elndex coincide exactamente con la expresi n sobre la cual est construido un ndice e eExp es cualquier expresi n y puede incluir variables y campos de otras tablas no relacionadas e OpRel es uno de los siguientes operadores lt gt lt gt lt gt o Tambi n puede utilizar las funciones ISNULL BETWEEN C o INLIST o sus equivalentes SQL como IS NULL etc Puede utilizar BETWEEN o INLIST de las dos formas siguientes file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 71 de 87 elndex BETWEEN e ndex eExpr eExpr O bien eExpr INLIST elndex eExpr Nota ISBLANK y EMPTY no son opt
37. a o Si el objeto de un campo General es m s peque o que el marco aparece en la esquina superior izquierda del marco Puede centrarlo para asegurar que todos los objetos m s peque os que el marco est n centrados en el marco del informe o de la etiqueta Las im genes de archivo no est n centradas porque no var an Para centrar objetos OLE de campo General 1 En el Dise ador de informes cree un control Imagen Control OLE dependiente 2 En el cuadro de di logo Imagen para informe seleccione Centrar imagen Los objetos OLE impresos se centran en el rea en una vista previa del informe o al imprimirlo Cambiar colores de controles de informe Puede cambiar el color de un campo etiqueta l nea o rect ngulo Para cambiar los colores 1 Seleccione los controles que desea modificar 2 En la barra de herramientas Paleta de colores elija Color de primer plano o Color de fondo 3 Seleccione el color que desee Guardar un informe como HTML Puede usar la opci n Guardar como HTML del men Archivo cuando cree un informe para guardar el contenido de un formulario como un archivo HTML Lenguaje de marcado de hipertexto Para guardar un informe como HTML 1 Abra el informe 2 Elija Guardar como HTML en el men Archivo Se le pedir que guarde el informe si lo ha modificado file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 20 de 87 3 Escriba el nombre del arch
38. a consulta o informe m extra la entrada del usuario Consulta Muestra los resultados Ordena los a imprime los resultados Puede agregar c digo que ejecute una consulta o un informe a los siguientes objetos de su aplicaci n e Un bot n de un formulario Para ver m s informaci n acerca de formularios y botones consulte el cap tulo 9 Crear formularios e Un elemento de un men Para ver m s informaci n acerca de c mo agregar elementos a un men consulte el cap tulo 12 Dise ar men s y barras de herramientas Para agregar una consulta vista o programa e Agregue un comando DO o USE al c digo subyacente de un bot n de comando de un formulario un bot n de una barra de herramientas o un elemento de men Por ejemplo agregue c digo similar al de las siguientes l neas DO MICONS OPR DO MIPROG PRG USE mivista Dispone de varias opciones para integrar informes en su aplicaci n e Si desea que el usuario simplemente inicie el informe y lo recoja impreso puede hacer que el usuario inicie el informe si agrega el comando REPORT a un control de un formulario un comando en un men o un bot n de una barra de herramientas e Si desea permitir al usuario escribir algunas variables utilizadas en el informe puede recoger los valores introducidos de la misma manera que hizo antes para las consultas Por ejemplo un usuario podr a introducir un intervalo de fechas que incluir el info
39. a establecer una sesi n privada de datos e En el men Informe elija Sesi n privada de datos Para obtener m s informaci n sobre el uso del Dise ador de entornos de datos consulte el cap tulo 9 Crear formularios Para obtener m s informaci n acerca de las sesiones de datos consulte el cap tulo 17 Programar para acceso compartido Si desea mostrar el resultado de una consulta en un gr fico puede usar el Asistente para gr ficos el Dise ador de consultas o un comando SELECT SQL Para usar el Dise ador de consultas o un comando SELECT SQL siga los pasos que se indican a continuaci n Debe incluir por lo menos un campo num rico en el conjunto de resultados para crear un gr fico Despu s de terminar la consulta puede elegir entre seis tipos de gr ficos cada uno con dos variantes Para modificar el gr fico 1 Examine la tabla que contiene el gr fico 2 Haga doble clic en el campo general para mostrar el gr fico 3 Haga doble clic en el gr fico para abrir Microsoft Graph y mostrar la barra de herramientas de Microsoft Graph 4 Modifique el gr fico en Microsoft Graph file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos Refinar el dise o de p gina P gina 9 de 87 Puede refinar el dise o de las p ginas de su informe para ello defina m ltiples columnas y cambie el rea de p gina reservada para una banda cambiando el alto de cada ban
40. a que ejecut el comando READ EVENTS e inici el bucle de eventos Para ver un sencillo ejemplo de programa vea Estructurar un programa principal m s adelante en este mismo cap tulo Precauci n Necesita establecer una forma de salir del bucle de eventos antes de iniciarlo Aseg rese de que la interfaz tiene un mecanismo como un bot n Salir o un comando de men Salir para ejecutar el comando CLEAR EVENTS Restaurar el entorno original file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 38 de 87 Para restaurar el valor original de las variables guardadas puede sustituirlas mediante una macro en los comandos SET originales Por ejemplo si guard la configuraci n de SET TALK en cTalkva1 ejecute el comando siguiente SET TALK cTalkval Nota Los nombres de variables utilizadas en la sustituci n de macros no deben contener el prefijo m porque el punto presupone una concatenaci n de variables y producir un error sint ctico Si inicializ el entorno en un programa que no sea aqu l en el que se est realizando la restauraci n por ejemplo si inicializa llamando a un procedimiento pero restaura llamando a otro aseg rese de que puede tener acceso a los valores almacenados Por ejemplo almacene los valores para restaurarlos en variables p blicas clases personalizadas o como propiedades de un objeto Application Estructurar un programa principal Si u
41. a ventana Inspecci n Ventana Inspecci n Ins pece i n Inspecci n Nombre TIME atemp 1 1 atemp 1 2 Nota En la ventana Inspecci n no se pueden introducir expresiones que creen objetos file CMempl hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 57 de 87 Tambi n puede seleccionar variables o expresiones en la ventana Seguimiento o en otras ventanas del Depurador y arrastrarlas hasta la ventana Inspecci n Los valores que se hayan modificado aparecen en rojo en la ventana Inspecci n Para quitar un elemento de la lista de la ventana Inspecci n Seleccione el elemento y elija una de las opciones siguientes e Presione SUPR O bien e En el men contextual elija Eliminar inspecci n Para modificar una inspecci n e Haga doble clic en la inspecci n en la ventana Inspecci n y modif quela Mostrar los resultados en la ventana Seguimiento Sit e el cursor sobre cualquier variable elemento de matriz o propiedad de la ventana Seguimiento para mostrar su valor actual en una sugerencia del valor Sugerencia del valor en la ventana Seguimiento Seguimiento Objeto Ps c_solutions 1 Procedimiento Destroy IF EMPTY THIS cOldPath SET PATH TO ELSE SET PATH TO THIS cOldPath ENDIF Mostrar los resultados El comando DEBUGOUT permite escribir valores de la ventana Resultados del depurador en un registro de archivo de texto Adem s puede usar e
42. ada para el formulario en su instrucci n SELECT SQL En este ejemplo la referencia abreviada est en la cl usula WHERE Recogida de valores mediante referencias abreviadas en una instrucci n SELECT SQL C digo Comentario SELECT FROM tastrade customer WHERE customer country THISFORM ControlNamel Value AND customer region Utilice THISFORM como referencia THISFORM ControlName2 Value abreviada para el formulario GROUP BY customer postal_code A ORDER BY customer postal_code actualmente activo y sustituya los customer company_name nombres de los controles por ControlNamel y ControlName2 file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 33 de 87 Si no quiere utilizar referencias para los controles puede definir variables en el c digo Use variables en el c digo si desea almacenar los valores desde un formulario pero no utilizarlos necesariamente mientras el formulario est activo Recogida de valores para uso posterior C digo Comentario cValue THISFORM ControlName Value Defina la variable rs e Jai Utilice la variable que ha definido en la ER tastrade customer 2 WHERE customer country cValue instrucci n SELECT SQL GROUP BY customer postal_code ORDER BY customer postal_code customer company_name Si no define la variable antes de ejecutar la con
43. ado de grupo Si el encabezado se coloca m s cerca de la parte inferior de la p gina que el n mero de pulgadas o cent metros que haya escrito Visual FoxPro imprime el encabezado en una nueva p gina Para evitar encabezados de grupo hu rfanos 1 En el men Informe elija Agrupar datos 2 En el cuadro de di logo Agrupar datos elija o escriba un valor en el cuadro Comenzar cada file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 25 de 87 grupo en una nueva p gina Sugerencia Para determinar un valor para un control hu rfano agregue el alto del Encabezado de grupo de una a tres veces al alto de Detalle Imprimir valores suprimidos cuando el grupo cambia Si se suprimen valores repetidos es posible que desee imprimir cuando cambie un grupo concreto Para imprimir valores repetidos cuando el grupo cambia 1 Haga doble clic en el control para mostrar el cuadro de di logo del control 2 Elija el bot n Imprimir Condiciones para imprimir el cuadro de di logo Imprimir Condiciones 3 Seleccione Cuando cambie este grupo Los grupos definidos para el informe aparecen en el cuadro 4 Seleccione un grupo del cuadro y a continuaci n elija Aceptar Repetir encabezados de grupo Cuando un grupo contin a en la p gina siguiente es posible que quiera que el encabezado de grupo se repita en la parte superior del grupo para ver informaci n continuada Si tiene varios grupos
44. al porque todo el proceso de este archivo se suspende desde el momento en que se ejecuta el comando READ EVENTS hasta que se ejecuta un comando CLEAR EVENTS Por ejemplo podr a ejecutar un comando READ EVENTS como el ltimo comando de un procedimiento de inicializaci n que se ejecutar a despu s de inicializar el entorno y mostrar la interfaz de usuario Si no incluye el comando READ EVENTS la aplicaci n volver al sistema operativo despu s de la ejecuci n Una vez iniciado el bucle de eventos la aplicaci n est bajo el control del ltimo elemento mostrado de la interfaz de usuario Por ejemplo si se ejecutan los dos comandos siguientes en el archivo principal la aplicaci n muestra el formulario Startup scx DO FORM STARTUP SCX READ EVENTS Si no incluye en el archivo principal un comando READ EVENTS o su equivalente la aplicaci n se ejecutar correctamente desde la ventana Comandos dentro del entorno de programaci n Sin embargo cuando se ejecuta desde el men o la pantalla principal la aplicaci n aparecer durante unos instantes y despu s finalizar La aplicaci n tambi n debe proporcionar una forma de terminar el bucle de eventos Para terminar el bucle de eventos e Ejecute un comando CLEAR EVENTS Normalmente el comando CLEAR EVENTS se ejecuta desde un men o bot n de un formulario El comando CLEAR EVENTS suspende el proceso del evento en Visual FoxPro y devuelve el control al program
45. al FoxPro El segundo archivo es espec fico del pa s de destino de la aplicaci n Para obtener m s informaci n vea la parte 8 Distribuir aplicaciones Para generar una aplicaci n 1 Enel Administrador de proyectos elija Generar 2 En el cuadro de di logo Opciones para generar elija Generar aplicaci n si desea generar un archivo app o Generar ejecutable si desea generar un archivo exe 3 Seleccione cualquier otra opci n que necesite y elija Aceptar O bien e Utilice los comandos BUILD APP o BUILD EXE Por ejemplo para generar una aplicaci n denominada Miapli app a partir de un proyecto denominado Miproy pjx escriba file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 44 de 87 BUILD APP miapli FROM miproy Para crear una aplicaci n denominada Miapli exe a partir de un proyecto llamado Miproy pjx escriba BUILD EXE miapli FROM miproy Nota Tambi n puede usar el cuadro de di logo Opciones de generaci n para crear un servidor de Automatizaci n personalizado desde la aplicaci n de Visual FoxPro Para obtener m s informaci n vea Crear servidores de Automatizaci n en el cap tulo 16 Agregar OLE Una vez creado y terminado un archivo de aplicaci n para el proyecto todos los usuarios podr n ejecutarlo Para ejecutar una aplicaci n como un archivo app e En Visual FoxPro elija Ejecutar en el men Programa y seleccione el a
46. al del programador Parte 4 Agrupar todos los elementos P gina 49 de 87 Para abrir el depurador e En el men Herramientas elija Depurador Nota Si va a realizar la depuraci n en el entorno de Visual FoxPro elija la herramienta de depuraci n que desee abrir en el men Herramientas Tambi n puede abrir el depurador con cualquiera de los comandos siguientes DEBUG SET STEP ON SET ECHO ON El depurador se abre autom ticamente siempre que se encuentra una condici n de punto de interrupci n Seguimiento del c digo Una de las estrategias de depuraci n m s tiles que tiene a su disposici n es la posibilidad de realizar un seguimiento del c digo ver cada l nea de c digo seg n se ejecute y comprobar los valores de las variables propiedades y la configuraci n del entorno C digo en la ventana Seguimiento Seguimiento lolx Objeto a emdnext Procedimiento Cic SKIP 1 IF EOF GO BOTTOM ENDIF THIS Parent RecordPointerMoved THIS Parent EnableDisableButtons Para hacer el seguimiento del c digo 1 Inicie una sesi n de depuraci n 2 Si no hay ning n programa abierto en la ventana Seguimiento elija Ejecutar en el men Depurar 3 Elija Paso a paso por instrucciones en el men Depurar o haga clic en el bot n Paso a paso de la barra de herramientas file CMempl hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 50 de 87 Una flecha en e
47. al proyecto DO FORM ORDERS SCX Si se ha hecho referencia a un archivo de esta manera no se incluye inmediatamente en un proyecto Posteriormente cuando compile el proyecto Visual FoxPro resuelve las referencias a todos los archivos e incluye autom ticamente los archivos impl citos en el proyecto Adem s si se ha hecho referencia a cualquier otro archivo mediante c digo definido por el usuario en el archivo nuevo al compilar el proyecto tambi n se resolver esa referencia y se incluir el archivo Los archivos a los que se ha hecho referencia aparecer n en el Administrador de programas la pr xima vez que vea el proyecto Importante Visual FoxPro podr a no ser capaz de resolver referencias a archivos de imagen bmp y msk dependiendo de la forma en que se utilicen en el c digo Por tanto agregue las im genes a los archivos manualmente Adem s Visual FoxPro no puede incluir autom ticamente archivos a los que se haya hecho referencia mediante la sustituci n de macros porque el nombre del archivo no se conoce hasta que se ejecuta la aplicaci n Si la aplicaci n establece referencias a archivos mediante la sustituci n de macros incluya estos archivos manualmente Referencias a archivos modificables Cuando compile un proyecto en una aplicaci n los archivos incluidos en el proyecto se ensamblan en un nico archivo de aplicaci n Una vez compilado el proyecto los archivos del proyecto que est n marcados como incluido
48. anto si desea crear dos ndices con dos secuencias de ordenaci n puede usar una secuencia de comandos como la siguiente SE COLLATE O MACHINE INDEX ON lastname TAG _lastname amp amp combinar buscar ndice SE COLLATE O GENERAL INDEX ON lastname TAG lastname amp amp ndice de ordenaci n Cuando desee buscar seleccionar o combinar el campo lastname ejecute el comando SET COLLATE TO MACHINE antes de realizar la operaci n Rushmore utilizar el ndice creado en la secuencia de ordenaci n del equipo y la operaci n de b squeda ser muy r pida Usar SQL SELECT con m ltiples secuencias de ordenaci n Cuando ejecute un comando SELECT SQL Visual FoxPro usar la secuencia de ordenaci n actual para realizar la b squeda y para las cl usulas ORDER BY y GROUP BY Si desea buscar y ordenar mediante diferentes secuencias de ordenaci n puede dividir los comandos SQL en dos pasos como se indica a continuaci n Seleccionar registros usando una secuencia de ordenaci n SET COLLATE TO MACHINE SELECT FROM table INTO CURSOR templ file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 87 de 87 WHERE lname Alzaga Ordenar registros usando una secuencia de ordenaci n diferente SET COLLATE TO GENERAL SELECT FROM templ INTO TABLE output ORDER BY lastname
49. ar todos los elementos P gina 47 de 87 Para establecer una aserci n e Use el comando ASSERT para identificar las hip tesis del programa Cuando la condici n estipulada en el comando ASSERT se eval a como falsa F aparece un cuadro de mensajes de aserciones y se repite en la ventana Resultados del depurador Por ejemplo podr a escribir una funci n que espera un valor del par metro distinto de cero La l nea de c digo siguiente en la funci n le avisa si el valor del par metro es 0 ASSERT nParm 0 MESSAGE Recibido el par metro 0 Puede especificar si los mensajes de aserciones se van a mostrar mediante el comando SET ASSERTS Como valor predeterminado los mensajes de aserciones no se muestran Mostrar las secuencias de eventos Cuando vea que se producen eventos en relaci n con otros eventos puede determinar la ubicaci n m s eficaz para incluir el c digo Para hacer un seguimiento de eventos e En el men Herramientas de la ventana Depurador elija Seguimiento de eventos O bien e Use el comando SET EVENTTRACKING El cuadro de di logo Seguimiento de eventos permite seleccionar los eventos que desee ver Cuadro de di logo Seguimiento de eventos file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 48 de 87 Seguimiento de eventos x IV Activar el seguimiento de eventos Eventos disponibles Eventos para seguir Cancelar
50. ara ejecutar la aplicaci n Los pasos necesarios para crear una aplicaci n desde el proyecto son e Probar el proyecto e Generar un archivo de aplicaci n a partir del proyecto Probar el proyecto Para comprobar las referencias y que todos los componentes est n disponibles puede probar el proyecto Para ello deber volver a generar el proyecto Visual FoxPro tendr que resolver las referencias a archivos y volver a compilar los archivos no actualizados Para probar un proyecto 1 Enel Administrador de proyectos elija Generar 2 En el cuadro de di logo Opciones para generar elija Volver a generar el proyecto 3 Seleccione cualquier otra opci n que necesite y elija Aceptar O bien e Utilice el comando BUILD PROJECT Por ejemplo para generar una aplicaci n denominada Miproy pjx escriba BUILD PROJECT miproy Si se producen errores durante el proceso de generaci n se incluyen en un archivo que recibe el nombre del proyecto y la extensi n err y se localiza en el directorio actual El recuento de errores de compilaci n se muestra en la barra de estado Tambi n puede ver el archivo de errores Para mostrar el archivo de errores e Seleccione la casilla de verificaci n Mostrar errores Una vez generado el proyecto correctamente deber intentar ejecutarlo antes de crear una aplicaci n file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 4
51. as dem s opciones del cuadro de di logo Imprimir Condiciones excepto Quitar l neas en blanco Para ver ejemplos de condiciones Imprimir Condiciones vea los informes Colors frx y Ledger frx del ejemplo Soluciones Para agregar una expresi n de impresi n 1 Haga doble clic en el control 2 Elija Imprimir Condiciones 3 En el cuadro Imprimir s lo cuando la expresi n sea verdadera escriba una expresi n O bien Haga clic en el bot n del di logo para crear una expresi n con el Generador de expresiones Suprimir l neas en blanco El informe puede contener registros que no contengan valores para cada control de campo De forma predeterminada Visual FoxPro deja en blanco el rea para ese campo Puede quitar estas reas en blanco para crear una presentaci n de la informaci n m s agradable y continua Para suprimir l neas en blanco file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 24 de 87 1 Haga doble clic en el control que produce las l neas en blanco en el informe 2 Elija Imprimir Condiciones 3 Seleccione Quitar l neas en blanco Visual FoxPro quitar la l nea del informe si se eval a como l nea en blanco Si el campo no se imprime o si el campo de tabla est vac o Visual FoxPro comprueba si hay otros controles en la l nea Si no se encuentra ninguno se quita la l nea Si no selecciona esta opci n y no hay otros controles en la misma
52. cance Cada registro del archivo de origen TODO Un intervalo de registro que empieza por 1 SIGUIENTE Un registro espec fico por n mero REGISTRO El registro actual m s todos los que le siguen hasta RESTO el final del archivo Visual FoxPro imprime el informe con datos de los registros que tengan el alcance que haya seleccionado Imprimir registros que cumplen una condici n Si los registros que desea seleccionar no est n ordenados secuencialmente en la tabla puede generar una expresi n l gica que especifique criterios de selecci n que debe cumplir un registro para que se imprima Por ejemplo puede elegir imprimir todos los registros con un valor concreto en un campo Para introducir criterios para seleccionar registros 1 En el men Archivo elija Imprimir 2 En el cuadro de di logo Imprimir elija Opciones 3 En el cuadro de di logo Opciones de impresi n elija Opciones 4 En el cuadro de di logo Opciones de impresi n de informes y etiquetas elija Alcance 5 Enel cuadro FOR escriba una expresi n FOR O bien Aseg rese de que los or genes de registros usados por el informe est n abiertos y a continuaci n elija el bot n FOR para usar el Generador de expresiones Nota No tiene que incluir el comando FOR en la expresi n Por ejemplo escriba country Canad para ver nicamente los datos canadienses Visual FoxPro eval a todos los registros e imprime el informe con los registros que cumplen
53. con variables de informe Las variables de informe almacenan valores que se calculan y utilizan en un informe Controlar los or genes de datos Para controlar los or genes de datos de un informe puede definir un entorno de datos que se almacenan con el informe o bien puede mediante c digo activar or genes de datos espec ficos cada vez que ejecute un informe Para ver m s informaci n acerca del uso del Dise ador de entornos de datos consulte el cap tulo 9 Crear formularios Para Agregue Utilizar siempre los mismos or genes Tablas o tiles al entorno de datos del informe de datos DO consulta o SELECT SQL al c digo de evento Init del entorno de datos del informe Utilizar conjuntos diferentes de USE tabla USE vista DO consulta o SELECT SQL para or genes de datos el evento Click u otro c digo que preceda a un comando REPORT o LABEL Si utiliza una tabla como origen de datos los registros se procesar n e imprimir n en el orden en que aparecen en la tabla Utilice alias s lo si no piensa usar el informe con ning n otro origen de datos que no sea la propia tabla Si utiliza una vista o una consulta como origen de datos y los alias est n incluidos en los controles del informe ste podr a mostrar de forma repetida el mismo registro en la p gina Controlar el orden de registros Puede usar los or genes de datos usados por el informe para controlar el orden en que se imprimen los reg
54. da Definir m ltiples columnas en una p gina Para crear listas de tel fonos etiquetas postales u otros tipos de listas puede definir varias columnas por p gina Para definir un informe de m ltiples columnas 1 En el men Archivo elija Configurar p gina Cuadro de di logo Configurar p gina con columnas definidas Preparar p gina Distribuci n de p gina vea los cambios de su dise o aqu Columnas N mero 3 Ancho 6 5561 Espaciado 0 000c rea de impresi n P gina imprimible Toda la p gina Margen izquierdo MAE Dimensiones Cent metros Cancelar Especificar impresora Orden al imprimir Estable de colu Cambit impres 2 En el rea Columnas escriba el n mero de columnas para la p gina Es el mismo que el n mero de registros que desea imprimir en la p gina 3 En el cuadro Ancho escriba un valor para ancho de columna 4 En el cuadro Espacio escriba un valor para el espacio que desea que aparezca entre cada columna Sugerencia Si imprime grupos que empiecen en una nueva p gina no use la opci n Orden al imprimir 5 Elija Aceptar file CMempl hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 10 de 87 El Dise ador de informes refleja sus modificaciones Si el dise o ya contiene controles de informe en la banda Detalle es posible que tenga que moverlos o
55. deber a ejecutar DO FORM para los otros formularios cuando sean necesarios Sin embargo si utiliza un conjunto de formularios obtendr una peque a mejora del rendimiento cuando tenga acceso a los formularios del conjunto porque los formularios ya estar n cargados aunque no visibles Carga din mica de controles de p gina en un marco de p ginas Los marcos de p gina al igual que los conjuntos de formularios cargan todos los controles de cada p gina en el momento de cargar el marco de p ginas lo que da lugar a una demora perceptible cuando se carga este ltimo En su lugar podr a cargar los controles de p gina din micamente a medida que se fueran necesitando creando una clase fuera de los controles de cada p gina y carg ndolos cuando se activara la p gina Para cargar din micamente los controles de p gina 1 Dise e el formulario de la forma habitual incluyendo todos los controles en todas las p ginas 2 Una vez terminado el dise o vaya a la segunda p gina del marco de p gina y guarde los controles all existentes como una clase 3 Abra la clase que acaba de crear y compruebe que los controles sigan dispuestos de la forma correcta 4 Repita los pasos 2 y 3 para la tercera y las p ginas siguientes del marco de p gina 5 Enel evento Activate de la segunda p gina y de las siguientes del marco de p gina agregue objetos y d jelos visibles Por ejemplo si la clase de controles se llama cnrpage1 debe agrega
56. del comando REPORT El ejemplo siguiente define las variables para la p gina ASCII e imprime un informe llamado Miinforme frx en un archivo ASCII llamado Miarch txt file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 30 de 87 Imprimir en un archivo ASCII Programa Comentario asciirows nLines Define el n mero de l neas por p gina asciicols nChars Define el n mero de caracteres por l nea REPORT FORM MIINFORME FRX TO FILEMIARCH TXT ASCII Ejecuta el informe Guardar un informe como HTML Puede usar la opci n Guardar como HTML del men Archivo cuando cree o modifique un informe para guardar su contenido como un archivo HTML Lenguaje de marcado de hipertexto Para guardar un informe como HTML 1 Abra el informe 2 Elija Guardar como HTML en el men Archivo Esta opci n s lo est disponible cuando se ha guardado el informe en disco 3 Escriba un nombre para el archivo HTML que desea crear y elija Guardar Integrar consultas e informes Cuando haya creado los componentes de su aplicaci n puede integrarlos Esta ilustraci n muestra algunas formas en las que puede agregar consultas e informes a su aplicaci n Algunas formas de integrar consultas e informes file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 31 de 87 IE Proporciona acceso INICIO a l
57. dici n Puede usar cualquier combinaci n de estas opciones La expresi n WHILE pasa por alto los otros criterios Imprimir una cantidad o un intervalo de registros Puede limitar el n mero de registros si especifica una cantidad o un intervalo de registros Con la opci n Alcance puede seleccionar un nico registro o un grupo de registros colocados secuencialmente en el archivo Nota El ndice activo y el puntero de registro activo afecta a los resultados de las opciones de alcance Siguiente y Resto Por ejemplo el siguiente registro de una tabla indexada por el ltimo nombre es probablemente diferente que el de una tabla indexada por estado Esto no afecta a la opci n Registro porque el n mero para un registro no cambia cuando se indexa la tabla Para seleccionar un n mero limitado de registros 1 En el men Archivo elija Imprimir 2 En el cuadro de di logo Imprimir elija Opciones 3 En el cuadro de di logo Opciones de impresi n elija Opciones Cuadro de di logo Opciones de impresi n de informes y etiquetas Opciones de impresi n de informes y etiquetas q 3 WHILE de E Cancelar _ 4 En el cuadro de di logo Opciones de impresi n de informes y etiquetas elija Alcance Alcance TEO 5 Seleccione la opci n de alcance apropiada file CMempl hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 27 de 87 Para imprimir Elija esta opci n de al
58. e 4 Agrupar todos los elementos P gina 41 de 87 cuando se ejecute la aplicaci n Por ejemplo cuando en un formulario se hace referencia a una biblioteca de clases visuales el formulario almacena una ruta de acceso relativa a esa biblioteca Si incluye la biblioteca en el proyecto entrar a formar parte del archivo de aplicaci n y el formulario siempre podr localizarla Sin embargo si excluye la biblioteca el formulario debe buscarla usando la ruta de acceso relativa o la ruta de acceso de b squeda de Visual FoxPro definida mediante el comando SET PATH Si la biblioteca no se encuentra en las ubicaciones previstas por ejemplo si se ha cambiado de ubicaci n desde que se cre el formulario Visual FoxPro muestra un cuadro de di logo en el que se solicita al usuario que localice la biblioteca Tal vez desee que los usuarios no vean este cuadro de di logo Para estar seguro incluya todos los archivos que no necesiten actualizaci n por parte de los usuarios Nota No puede incluir archivos de aplicaci n app y debe optar por excluir los archivos de biblioteca ocx fll y dll Para excluir archivos modificables 1 Seleccione el archivo modificable en el Administrador de proyectos 2 En el men Proyecto elija Excluir Si el archivo ya est excluido el comando Excluir no est disponible aparecer el comando Incluir en su lugar Los archivos excluidos tienen el s mbolo a la izquierda de sus nombres Nota Los
59. e con un comando como el siguiente en la que la expresi n que se est buscando coincida exactamente con la expresi n indexada SELECT FROM customers WHERE UPPER cu_name ACME Sugerencia Para determinar el nivel de optimizaci n Rushmore utilizado llame a SYS 3054 Combinar expresiones b sicas optimizables file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 72 de 87 Puede combinar expresiones simples o complejas basadas en las cl usulas FOR o WHERE para incrementar la velocidad de recuperaci n de datos Esto es posible si las expresiones FOR tienen las caracter sticas de las expresiones b sicas optimizables Las expresiones b sicas pueden ser optimizables Puede combinar expresiones b sicas con los operadores l gicos AND OR y NOT para formar una expresi n de cl usula FOR compleja que tambi n se puede optimizar Una expresi n creada con una combinaci n de expresiones b sicas optimizables es totalmente optimizable Si una o m s de las expresiones b sicas no son optimizables la expresi n compleja se podr a optimizar parcialmente o bien no ser optimizable en absoluto Un conjunto de reglas determina si una expresi n formada por expresiones b sicas optimizables o no optimizables se puede optimizar totalmente parcialmente o no se puede optimizar La tabla siguiente resume las reglas de optimizaci n de consultas de Rushmore Combina
60. e establecer un punto de interrupci n en una expresi n Punto de interrupci n cuando la expresi n ha cambiado Puntos de interrupci n x Tipo r Punto de interrupci n cuando la expresi n ha cambiado y Ubicaci n Cancelar Archivo mi Ayuda Cuenta de pasos Expresi n PROGRAMI El Puntos de interrupci n cuando PROGRAM cambia Agregar Quitar Desactivar Borrar todas K V Mostrar los mensajes de los puntos de interrupci n Para suspender la ejecuci n del programa cuando ha cambiado el valor de una expresi n 1 En el men Herramientas de la ventana Depurador elija Puntos de interrupci n para abrir el cuadro de di logo Puntos de interrupci n 2 Enla lista Tipo elija Punto de interrupci n cuando la expresi n ha cambiado file CMempl hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 53 de 87 3 Escriba la expresi n en el cuadro Expresi n Ejemplos de expresiones de puntos de interrupci n Expresi n Uso RECNO Suspender la ejecuci n cuando el puntero de registro se mueve en la tabla PROGRAM Suspender la ejecuci n en la primera l nea de cualquier programa procedimiento m todo o evento nuevo myform Text1 Value Suspender la ejecuci n siempre que se cambie el valor de esta propiedad de forma interactiva o mediante programaci n Suspender de forma condicional la ejecuci n A me
61. e forma an loga para acelerar el tiempo de carga de un formulario podr a mover c digo desde el evento Init a los m todos usados con menos frecuencia como Activate Click y GotFocus Entonces use una propiedad del file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 77 de 87 control como Tag o una propiedad personalizada para hacer un seguimiento de si el control ya ha ejecutado el c digo que s lo necesita ejecutarse una vez Optimizar programas Escribiendo c digo cuidadosamente puede escribir programas m s r pidos Son varias las maneras de aumentar el rendimiento de los programas en Visual FoxPro e Seguir las sugerencias generales sobre el rendimiento de programaci n que aparecen a continuaci n e Usar expresiones de nombres en lugar de la sustituci n mediante macros e Hacer referencia a propiedades de objetos de forma eficaz Sugerencias generales sobre el rendimiento Para escribir programas m s r pidos siga las recomendaciones que se indican a continuaci n e Elija el tipo de datos correcto En particular use el tipo de datos Integer para la informaci n num rica cuando sea posible puesto que se procesa de forma m s eficaz Siempre que sea posible use el tipo de datos Integer para los valores de claves externas lo que dar lugar a archivos de datos e ndices m s peque os y por tanto m s r pidos y a combinaciones m s r pidas Nota Pa
62. e orders ON Customer customer_id Orders customer_id En este ejemplo el campo customer_id identifica de forma exclusiva un cliente determinado y los pedidos que pertenecen a ese cliente y por tanto crea un conjunto de resultados que combina la fila de clientes con cada fila de pedidos Adem s tenga cuidado al combinar tablas que tengan campos vac os porque Visual FoxPro establecer una correspondencia con los campos vac os Sin embargo no establece una correspondencia con los campos que contengan el valor nulo Al crear una combinaci n califique las expresiones del campo en la condici n de combinaci n probando con una cadena vac a Por ejemplo si piensa que el campo de identificaci n del cliente de la tabla Orders podr a estar vac o use una instrucci n como la siguiente para filtrar los registros de pedidos que no tengan n mero de cliente SELECT FROM tastrade customer INNER JOIN tastrade orders ON Customer customer_id Orders customer_id error w o file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 66 de 87 WHERE tastrade lorders lt gt Sugerencia Tambi n puede probar una cadena vac a con la funci n EMPTY pero la inclusi n de una llamada a la funci n dentro de la expresi n de filtro no resulta tan r pida como efectuar una comparaci n con un valor constante Usar el Administrador de proyectos
63. enos que desee cambiarlo una vez finalizadas las acciones del asistente Para establecer el punto de partida para una aplicaci n 1 Enel Administrador de proyectos seleccione el archivo 2 En el men Proyecto elija Establecer principal Nota El archivo que establezca como archivo principal de la aplicaci n se marca autom ticamente como incluido por lo que se considera como de s lo lectura despu s de compilar la aplicaci n S lo se puede establecer como archivo principal un archivo del proyecto El archivo principal se muestra en negrita como se muestra en la ilustraci n siguiente Establecer un archivo principal en el Administrador de proyectos 5 Administrador de proyectos Solution x Todos 3 Datos Docs Clases C digo ovos r Nuevo Documentos Mi Bibliotecas de clases A C digo o Agregar Modificar BD 0 coraph O 0 datepick El archivo principal Ejecutar de la aplicaci n O 0 fdproc aparece en negrita main Guitar O 9 poraph Generar ILLU Bibliotecas API 23 Aplicaciones a Otros M Descripci n Ruta Inicializar el entorno Cuando haya creado un archivo principal util celo para configurar el entorno de su aplicaci n Puede que el entorno de desarrollo predeterminado de Visual FoxPro no sea el entorno m s adecuado para la aplicaci n El entorno predeterminado establece determinados valore
64. ente Si desea sacar el m ximo rendimiento de Rushmore a la hora de manejar un conjunto de datos masivo con un orden file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 69 de 87 determinado ejecute SET ORDER TO para desactivar el control de los ndices y luego utilice el comando SORT Indexado eficaz para Rushmore Rushmore no puede aplicarse a todos los ndices Si usa una cl usula FOR en el comando INDEX Rushmore no puede utilizar el ndice para la optimizaci n Por ejemplo debido a que contiene una cl usula FOR la instrucci n siguiente no puede optimizarse INDEX ON ORDNUM FOR DISCOUNT gt 10 TAG ORDDISC De forma an loga Rushmore no puede usar un ndice creado con una condici n NOT Por ejemplo la instrucci n siguiente puede optimizarse INDEX ON DELETED TAG DEL Sin embargo sta no puede optimizarse INDEX ON NOT DELETED TAG NOTDEL En el caso especial de que desee excluir los registros eliminados de una consulta use un ndice como el del primer ejemplo para agilizar las operaciones cuando haya establecido SET DELETED como ON Funcionamiento sin Rushmore Las operaciones de obtenci n de datos se ejecutan sin la optimizaci n Rushmore en las siguientes situaciones e Cuando Rushmore no puede optimizar la expresi n de la cl usula FOR en un comando posiblemente optimizable Para m s informaci
65. eo Si la aplicaci n intenta bloquear un registro o una tabla sin xito puede hacer que Visual FoxPro reintente el bloqueo autom ticamente despu s de un breve intervalo Sin embargo cada intento de bloqueo da lugar a un tr fico de red m s intenso Si ya fuera intenso el env o de repetidas solicitudes de bloqueo agregar una sobrecarga de trabajo a la red y provocar una ralentizaci n global para todos los usuarios Para controlar esta situaci n puede ajustar el intervalo entre los intentos de bloqueo Si usa un file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 81 de 87 intervalo m s grande lo que provocar a menos reintentos por segundo se reducir el tr fico de la red y se aumentar el rendimiento Para ajustar el intervalo de reintentos de bloqueo e Llame a la funci n SYS 3051 para ello indique el n mero de milisegundos que debe esperar entre cada intento de bloqueo Usar el procesamiento de transacciones de forma eficaz Cuando utiliza el procesamiento de transacciones debe dise ar las transacciones de forma que se reduzca al m nimo el efecto que puedan tener en otros usuarios Mientras est abierta una transacci n todos los bloqueos establecidos durante la transacci n permanecer n bloqueados hasta que se confirmen o se deshagan Aun cuando ejecute un comando UNLOCK expl cito los bloqueos se mantendr n hasta que ejecute el comando END TRANSACTION
66. esario en el cuadro Valor inicial escriba una expresi n que establezca el valor inicial 7 Elija Aceptar Puede utilizar la variable en cualquier expresi n que introduzca en el informe Para contar todas las entradas Canad en la tabla Company utilice esta expresi n y seleccione Recuento como opci n de c lculo IIF country Canad 1 0 El siguiente ejemplo muestra tres variables para una hoja de tiempos sencilla Para almacenar este valor Cree esta variable Mediante esta expresi n Hora de llegada del tArrive hour_in min_in 60 empleado Hora de salida del empleado Leave hour_out min_out 60 Tiempo total que el EDayTotal tLeave tArrive empleado estuvo presente Puede utilizar la variable tDayTota1 en una gran variedad de c lculos tales como el n mero de horas trabajadas en una semana un mes o un a o el promedio de n mero de horas trabajadas cada d a etc Para ver ejemplos de variables de informe vea los informes Percent frx e Invoice frx en el directorio Samples Vfp98 Solution Reports de Visual Studio Reordenar variables de informe Las variables de informe se eval an en el orden en que aparecen en la lista y pueden afectar a los valores de las expresiones que las utilizan Por ejemplo si la variable 1 se utiliza para definir el valor de la variable 2 debe aparecer antes que la variable 2 En el ejemplo anterior de la hoja de tiempos tArrive Y tLeave deben preceder
67. esiona la tecla ESC en la ventana Seguimiento Suspender la ejecuci n en una l nea de c digo Puede establecer puntos de interrupci n en el c digo para suspender la ejecuci n del programa de diferentes maneras Si conoce el punto exacto en el que desea suspender la ejecuci n del programa puede establecer un punto de interrupci n directamente en esa l nea de c digo Para definir un punto de interrupci n en una l nea de c digo determinada En la ventana Seguimiento busque la l nea de c digo en la que desee establecer el punto de interrupci n y realice una de las operaciones siguientes 1 Sit e el cursor en la l nea de c digo 2 Presione F9 o haga clic en el bot n Alternar punto de interrupci n de la barra de file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 51 de 87 herramientas Depurador O bien e Haga doble clic en el rea gris situada a la izquierda de la l nea de c digo Aparecer un punto s lido en el rea gris de la izquierda de la l nea de c digo para indicar que se ha establecido un punto de interrupci n en esa l nea Sugerencia Si va a depurar objetos puede localizar l neas de c digo determinadas en la ventana Seguimiento para ello elija el objeto en la lista Objeto y el m todo o evento en la lista Procedimiento Tambi n puede establecer puntos de interrupci n si especifica ubicaciones y archivos en el cuadro de di logo Pun
68. estos resultados Una consulta es una instrucci n SELECT SQL La instrucci n SELECT SQL colecciona y filtra datos entonces extrae los resultados a un destino Puede agregar instrucciones SELECT SQL a procedimientos o c digo de eventos Para ver m s informaci n acerca de los eventos consulte el cap tulo 4 Descripci n del modelo de eventos Crear una instrucci n SELECT SQL Para crear una instrucci n SELECT SQL e Utilice el Dise ador de consultas o el Dise ador de vistas para crear la instrucci n y copie el contenido de la ventana SQL a una ventana de c digo O bien e En una ventana de c digo escriba la instrucci n SELECT SQL Por ejemplo puede seleccionar todos los registros de la tabla Customer de la base de datos TasTrade file CMempl hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 3 de 87 en los que el campo country contenga el valor Canad SELECT FROM tastrade customer WHERE customer country Canad Para ejecutar el comando inmediatamente puede introducir la instrucci n en la ventana Comandos Si desea que cada cl usula aparezca en una l nea distinta dentro de la ventana termine cada l nea excepto la ltima con un punto y coma De esta forma Visual FoxPro procesa el comando s lo despu s de la ltima l nea Seleccionar un n mero o porcentaje de registros Si s lo
69. i n a la lista Puntos de interrupci n 6 Elija Aceptar Sugerencia Suele ser m s f cil buscar la l nea de c digo en la ventana Seguimiento establecer un punto de interrupci n y modificarlo en el cuadro de di logo Punto de interrupci n Para ello cambie el Tipo de Punto de interrupci n en la ubicaci n a Punto de interrupci n cuando la expresi n es verdadera y a continuaci n agregue la expresi n Quitar puntos de interrupci n Puede desactivar los puntos de interrupci n sin quitarlos en el cuadro de di logo Puntos de interrupci n Puede eliminar puntos de interrupci n del tipo punto de interrupci n en la ubicaci n en la ventana Seguimiento Para quitar un punto de interrupci n de una l nea de c digo En la ventana Seguimiento busque el punto de interrupci n y realice una de las operaciones siguientes e Sit e el cursor en la l nea de c digo y elija Alternar punto de interrupci n en la barra de herramientas Depurador O bien e Haga doble clic en el rea gris situada a la izquierda de la l nea de c digo Mostrar los valores almacenados En la ventana Depurador puede ver f cilmente los valores de tiempo de ejecuci n de las variables elementos de matriz propiedades y expresiones en las ventanas siguientes e Ventana Locales e Ventana Inspecci n e Ventana Seguimiento file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 56 de 87 Mos
70. igo de la barra de herramientas de la ventana Depurador Si activa el trayecto de c digo se abre el cuadro de di logo Trayecto donde puede especificar un archivo en el que se guardar esta informaci n Cuadro de di logo Trayecto Registrar la ejecuci n del programa Archivo Ed Cancelar C A adir Sobrescribir Tambi n puede activar o desactivar el registro de trayecto mediante programaci n mediante el comando SET COVERAGE TO Por ejemplo podr a incluir el comando siguiente en la aplicaci n inmediatamente antes de la parte de c digo que desea investigar SET COVERAGE TO miregistro log Despu s de la secci n de c digo cuyo trayecto desee registrar podr a incluir el comando siguiente para desactivar el trayecto de c digo SET COVERAGE TO Una vez especificado un archivo para la informaci n de trayecto cambie a la ventana principal de Visual FoxPro y ejecute el programa formulario o aplicaci n En el archivo de registro se escribe la informaci n siguiente para cada l nea de c digo que se ejecute file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 59 de 87 Tiempo en segundos empleado en la ejecuci n de la l nea La clase a la que pertenece el c digo El m todo o procedimiento en el que se encuentra la l nea El n mero de la l nea de c digo El archivo en el que se encuentra el c digo La forma m s
71. imizables con la tecnolog a Rushmore Si crea los ndices firstname custno UPPER lastname y hiredate cada una de las siguientes expresiones es optimizable firstname Carlos custno gt 1000 UPPER lastname Mart n hiredate lt 1997 12 30 Una expresi n optimizable puede contener variables y funciones que se eval an como un valor concreto Por ejemplo al usar el ndice adar si ejecuta el comando WASHINGTON AVENUE TO cVar las siguientes instrucciones tambi n ser an expresiones b sicas optimizables ADDR cVar ADDR SUBSTR cVar 8 3 Cu ndo se optimizan las consultas Es importante entender cu ndo se optimizar n las consultas y cu ndo no Visual FoxPro optimiza las condiciones de b squeda para ello busca una coincidencia exacta entre el lado izquierdo de una expresi n de filtro y una expresi n de clave de ndice Por tanto Rushmore puede optimizar una expresi n s lo si busca la expresi n exacta usada en un ndice Por ejemplo imagine que acaba de crear una tabla y va a agregar el primer ndice mediante un comando como el siguiente USE CUSTOMERS INDEX ON UPPER cu_name TAG name El comando siguiente no es optimizable porque la condici n de b squeda se basa nicamente en el campo cu_name y no en una expresi n que est indexada SELECT FROM customers WHERE cu_name ACME En su lugar deber a crear una expresi n optimizabl
72. iones b sicas puede combinar expresiones complejas para crear una expresi n a n m s compleja totalmente optimizable parcialmente optimizable o no optimizable A su vez puede combinar estas expresiones m s complejas para crear expresiones que se pueden optimizar total o parcialmente o que no se pueden optimizar La tabla siguiente describe los resultados de combinar estas expresiones complejas Estas reglas tambi n se aplican a expresiones agrupadas con par ntesis Combinaci n de expresiones complejas Expresi n Operador Expresi n Resultado Totalmente AND Totalmente optimizable Totalmente optimizable optimizable Totalmente OR Totalmente optimizable Totalmente optimizable optimizable Totalmente AND Parcialmente optimizable Parcialmente optimizable optimizable Totalmente OR Parcialmente optimizable Parcialmente optimizable optimizable Totalmente AND No optimizable Parcialmente optimizable optimizable Totalmente OR No optimizable No optimizable optimizable NOT Totalmente optimizable Totalmente optimizable Parcialmente AND Parcialmente optimizable Parcialmente optimizable optimizable Parcialmente OR Parcialmente optimizable Parcialmente optimizable optimizable Parcialmente AND No optimizable Parcialmente optimizable optimizable Parcialmente OR No optimizable No optimizable optimizable NOT Parcialmente optimizable No optimizable No op
73. ise ador de informes Para ver una vista preliminar de un informe e Utilice la palabra clave PREVIEW del comando REPORT Por ejemplo el c digo siguiente muestra el informe en una ventana modal REPORT FORM MIINFORME FRX PREVIEW De forma predeterminada la ventana Vista preliminar es modal pero permite tener acceso a la barra de herramientas Si desea realizar la vista preliminar de forma no modal puede agregar la palabra clave NOWAIT al comando REPORT Por ejemplo el c digo siguiente muestra el informe en una ventana no modal REPORT FORM MIINFORME FRX PREVIEW NOWAIT Si desea ver los resultados en una ventana espec fica puede incluir la cl usula WINDOW para especificar una ventana creada con DEFINE WINDOW REPORT FORM MIINFORME FRX PREVIEW WINDOW MYWINDOW Imprimir informes en un archivo Si desea crear una versi n electr nica del informe puede enviarlo a un archivo con formato para su impresora o a un archivo ASCII Si env a informes a archivos puede imprimirlos m s tarde en un proceso por lotes Si desea crear un archivo ASCII puede crear un archivo que incluya s lo el texto guiones y signos m s para representar l neas y formas Los colores y las fuentes elegidas no est n incluidos Tambi n puede especificar el n mero de caracteres por l nea y el numero de l neas por p gina Para imprimir un informe en un archivo ASCII e Use las palabras clave FILE y ASCII
74. istros en su informe Los registros se imprimen en el orden en que aparecen en la tabla vista o consulta Para ordenar los registros de una tabla puede establecer un ndice en el c digo o como parte del entorno de datos de un informe Para una consulta vista o c digo SELECT SQL puede usar la cl usula ORDER BY Si no ordena los registros mediante los or genes de datos la nica forma de usar nicamente el informe para ordenar los registros es a trav s de la propiedad ORDER de un cursor del entorno de datos file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 8 de 87 Controlar la selecci n de registros Adem s del orden en que los registros aparecen en el informe puede seleccionar qu registros se imprimen con el origen de datos las opciones de impresi n de informes o una combinaci n de ambas cosas Para usar Agregue Vista o consulta Condiciones a la ficha Filtro SELECT SQL Cl usula WHERE o HAVING Dise ador de informes Configuraci n en el cuadro de di logo Opciones de impresi n Comando REPORT Expresiones Alcance FOR o WHILE Tabla ndice filtro Proteger una sesi n de datos de un informe Para evitar que la sesi n de datos de su informe se vea afectada por la sesi n de datos global como resultado de las modificaciones realizadas por otros dise adores puede establecer la sesi n de datos del informe como privada Par
75. ivo HTML que va a crear y elija Guardar Opciones de impresi n para controles El dise o general y la posici n de bandas de los controles determinan el momento y el lugar en que se imprimen Tambi n puede establecer opciones de impresi n espec ficas para cada control Cada control puede tener un tama o predeterminado en base a su valor campos y tablas o el tama o creado l neas rect ngulos e im genes La longitud del control en el dise o define el ancho de presentaci n del control Como el valor de algunos valores var a de registro a registro puede establecer el alto del control para alargar hacia abajo y mostrar as el valor completo Si no establece que se ampl e el valor se truncar en el ancho de presentaci n No puede cambiar el tama o de controles Etiqueta pero puede cambiar el tama o de los dem s controles Imprimir controles con valores de longitud variable Si quiere que un control s lo use el espacio necesario puede establecer que se alargue Por ejemplo los valores de una expresi n pueden variar de registro a registro En lugar de asignar una cantidad fija de espacio en el informe que aloje el valor m s largo puede establecer que el control se alargue hacia abajo para mostrar todo el valor Puede establecer que los controles situados por debajo del control que se ampl a floten por debajo de la p gina con respecto al control que se ajusta Ejemplos de controles que se ampl an y controles que flotan eee
76. l ndice anexar los registros y despu s volver a crear el ndice e En las instrucciones SQL evite las llamadas a funciones en la medida de lo posible especialmente en instrucciones que devuelvan m s de un registro porque la instrucci n debe volverse a evaluar lo que implica una nueva llamada a las funciones para cada registro Si crea una instrucci n SQL con datos variables use las expresiones de nombre o la sustituci n de macros en lugar de la funci n EVALUATK Una estrategia a n mejor es crear toda la instrucci n de forma din mica no en cl usulas individuales Para obtener m s informaci n vea Usar macros y Crear expresiones de nombre en la Ayuda e Si suele usar un orden de ndice determinado puede mejorar el rendimiento si ordena peri dicamente la tabla en este orden e Use archivos CDX en lugar de IDX en entornos multiusuario porque podr actualizar un solo archivo CDX con m s rapidez que si actualiza m ltiples archivos IDX Usar Rushmore para agilizar el acceso a los datos Para ayudarle a optimizar el rendimiento de las aplicaciones Visual FoxPro incluye la tecnolog a file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 67 de 87 Rushmore para acceso a los datos Con Rushmore puede ejecutar determinadas operaciones complejas con tablas much simo m s r pido que sin esta tecnolog a Explicar la tecnolog a Rushmore La tecnolog a Rushm
77. l rea gris situada a la izquierda del c digo indica la siguiente l nea que se va a ejecutar Sugerencia Puede aplicar las sugerencias siguientes e Establezca puntos de interrupci n para reducir el intervalo de c digo por el que necesita pasar e Puede ignorar una l nea de c digo que sepa que va a generar un error colocando el cursor sobre la l nea de c digo despu s de la l nea problem tica y eligiendo Configurar siguiente instrucci n en el men Depurar e Si tiene mucho c digo asociado con eventos Timer puede evitar el seguimiento de este c digo desactivando Mostrar eventos Timer en la ficha Depurar del cuadro de di logo Opciones Si a sla un problema cuando est depurando c digo de un programa u objeto podr repararlo inmediatamente Para reparar los problemas encontrados durante el seguimiento del c digo e En el men Depurar elija Reparar Cuando elija Reparar en el men Depurar la ejecuci n del programa se cancela y el editor de c digo se abre donde est situado el cursor en la ventana Seguimiento Suspensi n de la ejecuci n del programa Los puntos de interrupci n permiten suspender la ejecuci n del programa Una vez suspendida puede comprobar los valores de las variables y propiedades ver la configuraci n del entorno y examinar secciones de c digo l nea a l nea sin tener que recorrer todo el c digo Sugerencia Tambi n puede suspender la ejecuci n de un programa que est en ejecuci n si pr
78. l comando SET DEBUGOUT TO o la ficha Depurar del cuadro de di logo Opciones Si no est escribiendo comandos DEBUGOUT en un archivo de texto la ventana Resultados del depurador debe estar abierta para que pueda escribir los valores de DEBUGOUT La siguiente l nea de c digo se imprime en la ventana Resultados del depurador en el momento en que se ejecuta la l nea de c digo file CMempl hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 58 de 87 DEBUGOUT DATETIME Adem s puede activar el seguimiento de eventos que se describe en apartados anteriores de este cap tulo y optar por hacer que el nombre y los par metros de cada evento que se produzca se muestren en la ventana Resultados del depurador Registrar el trayecto del c digo En un proceso de programaci n posterior podr a perfeccionar el c digo para obtener m s rendimiento y garantizar que lo ha probado correctamente mediante un registro de la informaci n de trayecto del c digo El trayecto del c digo ofrece informaci n sobre las l neas de c digo que se han ejecutado y el tiempo empleado para ejecutarlas Esta informaci n puede ayudarle a identificar las reas de c digo que no se est n ejecutando y por tanto tampoco se est n comprobando as como las que podr a modificar para obtener mayor rendimiento Puede activar y desactivar el trayecto del c digo si hace clic en el bot n Trayecto de c d
79. l sistema operativo consulte el cap tulo 4 Optimizar el sistema de la Gu a de instalaci n e ndice principal En este cap tulo se describe Optimizar tablas e ndices Usar Rushmore para agilizar el acceso a datos Optimizar formularios y controles Optimizar programas Optimizar controles ActiveX Optimizar aplicaciones en entornos multiusuario Optimizar el acceso a datos remotos Optimizar aplicaciones internacionales Optimizar tablas e ndices Puede agilizar el acceso a datos de tablas mediante ndices y almacenamiento en b fer de forma eficaz Adem s puede usar la tecnolog a Rushmore para optimizar las consultas Usar ndices El uso de ndices permite agilizar el acceso a los datos de una tabla Si se agrega un ndice a una tabla se agilizan las b squedas especialmente si se puede utilizar la tecnolog a Rushmore para optimizar la b squeda El uso de ndices tambi n permite trabajar con los datos en un orden determinado como ver una tabla de clientes ordenada por apellido Si los registros de una tabla tienen claves exclusivas cree un ndice principal o candidato en el campo Estos tipos de ndice permiten que Visual FoxPro valide la tecla a un nivel inferior con lo que se consigue el m ximo rendimiento Adem s de usar ndices en los campos utilizados para buscar y ordenar tambi n deber a indexar todos los campos relacionados con una combinaci n Si combina dos tablas en cam
80. lante en este mismo cap tulo Insertar controles de campo concatenados Despu s de agregar los campos de tabla se dar cuenta de que no se imprimen de la forma deseada en la p gina Por ejemplo al imprimir los controles de campo para Ciudad Regi n y C digo postal de forma independiente aparecen espacios no deseados entre cada valor Puede recortar o concatenar los campos de tabla en una expresi n de campo El espacio requerido por cada valor para este control variar Puede establecer que el control se ajuste para cada valor Para combinar varios campos de tabla en una expresi n 1 En la barra de herramientas Controles de informes inserte un control Campo Sugerencia Ajuste el tama o del campo a la menor cantidad de espacio requerido por la expresi n Si se necesita m s espacio puede establecer el control para que se alargue para valores grandes pero no puede reducirlo si necesita m s espacio 2 En el cuadro de di logo Expresi n de informe seleccione el bot n de di logo situado junto al cuadro Expresi n 3 En el cuadro de di logo Generador de expresiones seleccione ALLTRIM expC en el cuadro Cadena La funci n de cadena aparece en el cuadro Expression con expc seleccionado 4 Haga doble clic en el nombre del primer campo que desea que aparezca en el control file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 12 de 87 El nombre de campo
81. leccione para Csi suprimir valores repetidos No Cancelar m Imprimir tambi n J En primera banda completa de nueva p gina columna I Cuando cambie este grupo X J Cuando detalle pase a nueva p gina columna M Quitar l neas en blanco Seleccione para quitar E espacios vacios en el dise o Imprimir s lo cuando la expresi n sea verdadera E Seleccione para construir una expresi n 3 En el rea Imprimir valores repetidos seleccione No y a continuaci n elija Aceptar file CMempl hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 23 de 87 Para repetir en s lo una nueva p gina o columna 1 Haga doble clic en el control 2 Elija Imprimir Condiciones 3 En el rea Imprimir valores repetidos seleccione No 4 En el rea Imprimir tambi n seleccione En primera banda completa de nueva p gina columna y a continuaci n elija Aceptar Para repetir cuando se desborda una banda de detalle a una nueva p gina o columna 1 Haga doble clic en el control 2 Elija Imprimir Condiciones 3 Enel rea Tambi n imprimir seleccione Cuando detalle pase a nueva p gina columna y a continuaci n elija Aceptar Generar expresiones de impresi n Puede agregar expresiones a un control se eval an antes de imprimir el campo Si la expresi n se eval a a falso F el campo no se imprimir Si agrega una expresi n se desactivan todas l
82. liza 10 registros en una base de datos Visual FoxPro env a en un solo lote cuatro instrucciones como la siguiente a la base de datos del servidor UPDATE customer SET contact Agustina Rivera WHERE cust_id 1 UPDATE customer SET contact Cristina Mart nez WHERE cust_id 2 UPDATE customer SET company Enrique Ballina WHERE cust_id 3 UPDATE customer SET contact Ernesto M ndez WHERE cust_id 4 Para enviar instrucciones en un lote e En el cuadro de di logo Opciones elija la ficha Datos remotos y en Registros para actualizar por lotes especifique el n mero de registros que van a incluirse en el lote O bien e Llame a las funciones DBSETPROP o CURSORSETPROP para establecer estas propiedades e Establezca Transaction a 2 e Establezca BatchUpdateCount al n mero de instrucciones que se van a enviar en un lote O bien 1 En el Dise ador de vistas elija Opciones avanzadas del men Consulta para abrir el cuadro de di logo Opciones avanzadas 2 Enel rea Rendimiento situada junto a N mero de registros para actualizar por lotes especifique el n mero de instrucciones que se van a enviar en un lote Nota Deber a probar con diferentes valores para esta propiedad y la propiedad PacketSize para optimizar las actualizaciones Establecer el tama o del paquete Puede optimizar el acceso a servidores remotos para ell
83. los objetos basados en la clase heredar n autom ticamente la funci n de control del nuevo error Por ejemplo la clase vcr de la biblioteca de clases Buttons vex ubicada en el directorio Samples Vfp98 Classes de Visual Studio se basa en la clase de contenedor de Visual FoxPro Cuatro botones de comandos del contenedor controlan el desplazamiento por la tabla moviendo el puntero de registro en una tabla con los comandos siguientes GO TOPSKIP 1SKIP 1GO BOTTOM Podr a producirse un error si un usuario elige uno de los botones y no hay ninguna tabla abierta Visual FoxPro intenta escribir en una tabla valores almacenados en el b fer cuando se mueve el puntero de registro Por tanto podr a producirse un error si se activa el almacenamiento optimista de filas en b fer y otro usuario ha cambiado un valor en el registro almacenado en el b fer Estos errores podr an producirse cuando el usuario elige cualquiera de los botones por tanto no tiene sentido tener cuatro m todos diferentes de control de errores El c digo siguiente asociado al evento Error de cada uno de los botones de comando transfiere la informaci n del error a una sola rutina de gesti n de errores de la clase LPARAMETERS nError cMethod nLine THIS Parent Error nError cMethod nLine El c digo siguiente est asociado al evento Error de la clase vcr El c digo real es diferente debido a los requisitos de codificaci n para la localizaci n
84. mador Parte 4 Agrupar todos los elementos P gina 86 de 87 servidor remoto Por ejemplo si se modifican las reglas del servidor tendr a que cambiar las reglas locales para que coincidieran Para obtener informaci n sobre la creaci n de reglas locales vea la secci n Actualizar datos en una vista del cap tulo 8 Crear vistas Optimizar aplicaciones internacionales Si va a programar aplicaciones internacionales podr a necesitar administrar la secuencia de ordenaci n de los datos para obtener el m ximo rendimiento Esta secci n trata sobre lo siguiente e Usar secuencias de ordenaci n de forma eficaz e Usar SELECT SQL con m ltiples secuencias de ordenaci n Usar secuencias de ordenaci n de forma eficaz Si los datos no incluyen marcas diacr ticas como acentos o di resis puede aumentar el rendimiento mediante la secuencia de ordenaci n del equipo porque e Las claves de ndices que no son del equipo son dos veces m s grandes puesto que contienen la informaci n diacr tica e La ordenaci n que no es del equipo usa muchas reglas especiales para indexar caracteres con el fin de que devuelvan los resultados adecuados Dado que la secuencia de ordenaci n del equipo es m s r pida se suele preferir para combinaciones y b squedas mientras que otras secuencias de ordenaci n resultan perfectas para ordenar registros Cuando cree un ndice Visual FoxPro usa el valor actual de SET COLLATE Por t
85. manian ubicada en el directorio Samples Vfp98 Tastrade de Visual Studio para ver un ejemplo de esta t cnica Asimismo si usa el Asistente para aplicaciones para compilar la aplicaci n se crear un objeto Application Tambi n puede si lo desea usar un programa como archivo principal que controle estas tareas Para obtener m s informaci n vea Estructurar un programa principal Establecer el punto de partida Debe vincular todos los componentes y establecer un punto inicial para la aplicaci n con un archivo principal El archivo principal sirve como punto de partida para la ejecuci n de su aplicaci n y puede constar de un programa o formulario Cuando los usuarios ejecuten la aplicaci n Visual FoxPro inicia el archivo principal de la aplicaci n que a su vez ejecuta todos los dem s componentes a medida que se vayan necesitando Todas las aplicaciones deben tener un archivo principal La mejor elecci n suele ser crear un programa principal en la aplicaci n Sin embargo puede combinar las file CMempl hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 35 de 87 funciones del programa principal y la interfaz inicial de usuario si usa un formulario como programa principal Si usa un Asistente para aplicaciones para crear la aplicaci n puede permitir que el asistente cree un programa de archivo principal de forma autom tica No es necesario que especifique un archivo principal a m
86. mentos P gina 39 de 87 C digo Comentarios DO SETUP PRG Llama al programa para configurar el entorno almacena los valores en variables p blicas DO MAINMENU MPR Muestra la interfaz inicial de usuario READ EVENTS Establece el bucle de eventos Un programa diferente como Mainmenu mpr debe ejecutar el comando CLEAR EVENTS DO CLEANUP PRG Restaura el entorno antes de salir Agregar archivos a un proyecto Un proyecto de Visual FoxPro consta de componentes independientes que se almacenan como archivos individuales Por ejemplo un proyecto sencillo puede constar de formularios archivos scx informes archivos frx y programas archivos prg y fxp Adem s un proyecto suele tener una o varias bases de datos archivos dbc tablas almacenadas en archivos dbf y fpt e ndices archivos cdx e 1dx Para incluirse en una aplicaci n el archivo ha de agregarse al proyecto De esa manera al compilar la aplicaci n Visual FoxPro puede incluir los archivos de ese componente en el producto terminado Puede agregar f cilmente archivos a un proyecto de varias maneras e Para crear un proyecto y agregar archivos existentes use el Asistente para aplicaciones e Para agregar autom ticamente archivos nuevos a un proyecto abra un proyecto y a continuaci n cree los archivos nuevos en el Administrador de proyectos e Para agregar archivos existentes a un proyecto abra un proyec
87. n sobre la creaci n de expresiones optimizables FOR consulte la secci n Combinar expresiones b sicas optimizables e Cuando un comando que puede beneficiarse de Rushmore contiene una cl usula WHILE e Cuando se disponga de poca memoria La recuperaci n de datos sigue su curso pero no se optimiza Desactivar Rushmore Aunque no desear hacerlo a menudo es posible desactivar Rushmore Cuando ejecute un comando que utilice Rushmore Visual FoxPro determinar inmediatamente qu registros coinciden con la expresi n de la cl usula FOR A continuaci n el comando manipula estos registros Si un comando que se puede optimizar modifica la clave de ndice en la cl usula FOR el conjunto de registros sobre el que opera Rushmore puede quedarse desfasado En este caso puede desactivar Rushmore para asegurarse de que disponga de la informaci n m s actualizada de la tabla Para desactivar Rushmore para un comando individual e Utilice la cl usula NOOPTIMIZE file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 70 de 87 Por ejemplo este comando LOCATE no est optimizado LOCATE FOR DueDate lt 1998 01 01 NOOPTIMIZE Puede desactivar o activar globalmente Rushmore para todos los comandos que se benefician de Rushmore con el comando SET OPTIMIZE Para desactivar Rushmore globalmente e Utilice el c digo siguiente SET OPTIMIZE OFF Para desactivar
88. na cl usula WHERE para limitar el n mero de registros transferidos Cuanto m s espec fica sea la cl usula WHERE menos registros se transmitir n al equipo y con m s rapidez se terminar la consulta e Si no puede predecir durante el dise o los valores que se van a utilizar en una cl usula WHERE puede utilizar par metros en la cl usula Cuando se ejecute la consulta Visual FoxPro usar el valor de una variable de par metro o solicitar al usuario el valor de b squeda Por ejemplo esta consulta permite a la aplicaci n o al usuario rellenar la regi n en el tiempo de ejecuci n SELECT cust_id company contact address FROM customers WHERE region pcRegion e Establezca la propiedad NoDataOnLoad del objeto Cursor en el entorno de datos correspondiente Esta t cnica se suele utilizar con vistas parametrizadas en las que los datos del par metro proceden del valor de un control de un formulario Actualizar tablas remotas de forma eficaz Cuando se usa una vista para actualizar una tabla en un origen de datos remoto Visual FoxPro debe comprobar si los registros que se est n actualizando han sufrido alguna modificaci n Para ello Visual FoxPro debe examinar los datos en el servidor y compararlos con los datos existentes en su equipo En algunos casos esta operaci n puede resultar lenta file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elemen
89. ncabezado de p gina o Pie de p gina contienen normalmente un n mero de p gina Si usa un asistente o Informe r pido se inserta un n mero de p gina en la banda Pie de p gina Para insertar un n mero de p gina 1 En la barra de herramientas Controles de informes inserte un control Campo 2 En el cuadro Expresi n de informe seleccione el bot n de di logo situado junto al cuadro Expresi n 3 En el Generador de expresiones seleccione _pageno en la lista Variables 4 Elija Aceptar 5 En el cuadro de di logo Expresi n de informe elija Aceptar Sugerencia Puede usar este procedimiento para insertar cualquiera de las variables de sistema de la lista Variables en el informe Definir variables de informe Para manipular datos y mostrar el resultado de los c lculos en un informe puede utilizar variables de informe Puede calcular valores con variables de informe y usarlos despu s para calcular valores posteriores Para definir una variable de informe 1 Abre o crea un informe file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 14 de 87 2 En el men Informe elija Variables 3 En el cuadro de di logo Variables del informe seleccione el cuadro Variables y escriba un nombre para la variable 4 En el cuadro Almacenar valor escriba un nombre de campo o alguna otra expresi n 5 Sies necesario seleccione una opci n de c lculo 6 Sies nec
90. nes se imprimen junto con los datos num ricos Plantilla de formato Salida impresa 999 999 9999 123 456 7890 Cambio de fuentes file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 18 de 87 Puede cambiar el tama o de fuente y el tama o del texto para cada control campo o etiqueta o puede cambiar la fuente predeterminada para el informe Para cambiar las fuentes y el tama o en un informe 1 Seleccione el control 2 En el men Formato seleccione Fuente Aparece el cuadro de di logo Fuente 3 Seleccione la fuente apropiada y el tama o en puntos y a continuaci n elija Aceptar Para cambiar la fuente predeterminada 1 En el men Informe elija Fuente predeterminada 2 En el cuadro de di logo Fuente seleccione la fuente apropiada y el tama o en puntos que desee como valores predeterminados y a continuaci n elija Aceptar S lo los controles insertados despu s de haber cambiado la fuente predeterminada reflejar n la nueva configuraci n de fuente Para cambiar objetos existentes selecci nelos a todos y cambie la fuente con la opci n Fuente en el men Formato Cortar una imagen u objeto OLE Es posible que la imagen o el objeto OLE que haya insertado no se ajuste al marco dibujado al crear el control De forma predeterminada la imagen o el objeto conservan su tama o original Puede recortarlo o reducirlo para que se ajuste a su marco Si la
91. nudo desear suspender la ejecuci n de un programa no en una l nea determinada sino cuando una determinada condici n sea verdadera Punto de interrupci n en una expresi n Tipo Aceptar Punto de interrupci n cuando la expresi n es verdadera Y Ubicaci n Cancelar Archivo AN E Ayuda Cuenta de pasos Expresi n Puntos de interrupci n cuando PROGRAM cambia cuando EOF es verdadero Quitar Desactivar Borrar todas YA IMV Mostrar los mensajes de los puntos de interrupci n Para suspender la ejecuci n del programa cuando una expresi n se eval e como verdadera 1 En el men Herramientas de la ventana Depurador elija Puntos de interrupci n para abrir el file CMempl hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 54 de 87 cuadro de di logo Puntos de interrupci n 2 En la lista Tipo elija Punto de interrupci n cuando la expresi n es verdadera 3 Escriba la expresi n en el cuadro Expresi n 4 Elija Agregar para agregar el punto de interrupci n a la lista Puntos de interrupci n Ejemplos de expresiones de puntos de interrupci n Expresi n Uso EOF Suspender la ejecuci n cuando el puntero de registro se ha desplazado detr s del ltimo registro de una tabla CLICK SPROGRAM _ Suspender la ejecuci n de la primera l nea de c digo asociado a un evento Click o DbIClick nReturnValue
92. o ajuste el tama o del paquete de red que se env a y se obtiene de la base de datos remota Por ejemplo si la red admite tama os grandes m s de 4096 bytes puede aumentar el tama o del paquete en Visual FoxPro con el fin de enviar m s datos file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 85 de 87 cada vez que lea o escriba en la red Para establecer el tama o del paquete e Llame a las funciones DBSETPROP o CURSORSETPROP y establezca la propiedad PacketSize a un valor entero positivo El valor predeterminado es 4096 Nota Es posible que distintos proveedores de red administren esta propiedad de forma distinta por lo que deber consultar la documentaci n de su servicio de red Novell NetWare9 por ejemplo tiene un tama o de paquete m ximo de 512 bytes por lo que si se establece la propiedad PacketSize a un valor superior a ste no se obtendr ninguna ventaja adicional Retardo de la recuperaci n de datos memo y binarios Si est almacenando datos memo o binarios en un servidor remoto puede aumentar el rendimiento para ello retarde la transferencia de estos datos hasta que la aplicaci n la requiera realmente Para retardar la recuperaci n de los datos memo y binarios e En el cuadro de di logo Opciones elija la ficha Datos remotos y en Opciones predeterminadas de vista remota establezca Buscar memo O bien e Llame a las funciones DBS
93. on respecto a la banda o si forman parte de un grupo de controles se pueden alargar con respecto al control m s grande del grupo Para establecer que se alargue una l nea o un rect ngulo 1 Haga doble clic en el control para mostrar su cuadro de di logo 2 En el rea Alargar hacia abajo seleccione una opci n Para imprimir un borde en torno a un control que se puede alargar 1 Dibuje un rect ngulo alrededor de los controles que se pueden alargar 2 Haga doble clic en el rect ngulo para mostrar el cuadro de di logo Rect ngulo L nea 3 Enel rea Alargar hacia abajo seleccione Alargar con relaci n al objeto m s alto del grupo S Elija Aceptar 5 Arrastre un cuadro de selecci n en torno al rect ngulo 6 En el men Formato elija Agrupar Los controladores de selecci n aparecen en las esquinas del rect ngulo A partir de este momento puede tratar todos los controles como uno s lo El rect ngulo se alargar con el campo de tama o ajustable Independientemente de cu nto se alargue el valor del campo el rect ngulo mantendr su borde alrededor del campo Puede colocar dos de estos grupos lado a lado y uno no se ver afectado por el alargamiento del otro Para imprimir un control de tama o ajustable por debajo de otro 1 Inserte los dos controles en el dise o uno debajo del otro 2 Haga doble clic en la parte superior del control para mostrar el cuadro de di logo del control file C temp hhA455 h
94. ore es una t cnica de acceso a datos que usa los ndices est ndar de Visual FoxPro para optimizar el acceso a datos Puede utilizar Rushmore con cualquier ndice de Visual FoxPro incluyendo los ndices de FoxPro 1 x idx los ndices compactos idx o los ndices compuestos cdx Tanto los ndices cdx como los ndices compactos idx utilizan una t cnica de compresi n que genera ndices de hasta 1 16 del tama o de los ndices de formato tradicional Visual FoxPro puede procesar ndices compactos con mayor rapidez porque son f sicamente m s peque os Esto significa que Visual FoxPro requiere menos acceso a disco para procesar un ndice y puede almacenar localmente una parte mayor del ndice Aunque Rushmore como otras t cnicas de acceso a archivos se beneficia del menor tama o de los ndices compactos tambi n funciona correctamente con los ndices de formatos antiguos Cuando Visual FoxPro procesa tablas muy grandes en equipos con poca memoria es posible que Rushmore no disponga de suficiente memoria para operar En este caso aparecer un mensaje de advertencia No hay suficiente memoria para la optimizaci n Su programa funcionar correctamente sin perder ning n dato sin embargo la consulta no se beneficiar de la tecnolog a Rushmore En su forma m s sencilla Rushmore incrementa la velocidad de los comandos en operaciones con una sola tabla mediante cl usulas FOR que especifican los conjuntos de registro
95. para ello crea primero una matriz en la memoria la rellena y despu s establece la propiedad una sola vez al final Copiar Cadena a una variable localvariable lcChar THISFORM cCharString LOCAL laCharArray 256 amp amp Crear matriz local FOR nCounter 1 to 256 laCharArray x SUBSTR laChar x 1 ENDFOR Copiar la matriz local a la matriz de propiedades ACOPY laCharArray THISFORM aCharArray Hacer referencia a m ltiples propiedades de forma eficaz Si actualiza m s de una propiedad para el objeto Visual FoxPro debe buscar el objeto varias veces lo que puede afectar al rendimiento En el ejemplo siguiente el c digo hace que Visual FoxPro busque en cuatro objetos como THISFORM pgfCstInfo pgCstName Y txtName para encontrar la propiedad que se va a establecer Dado que el c digo establece dos propiedades la b squeda a cuatro niveles se realiza dos veces THISFORM pgfCstIinfo pgCstName txtName Value Carlos Mart n THISFORM pgfCstIinfo pgCstName txtName BackColor RGB 0 0 0 amp Rojo oscuro Para evitar este volumen de trabajo use el comando WITH ENDWITH Este m todo hace que Visual FoxPro busque el objeto una sola vez Por ejemplo el ejemplo siguiente realiza la misma tarea que el anterior pero de forma m s r pida file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 79 de 87 WITH THISFORM pgfCstIinfo pgCstName txtName Value
96. plo si hace que los controles queden visibles o invisibles cambia los colores de los controles o mueve los registros de controles dependientes resulta mucho m s eficaz retardar el relleno de color de estos controles hasta que se hayan completado todos los cambios Para retardar la actualizaci n de la pantalla 1 Establezca la propiedad LockScreen del formulario como verdadera 2 Actualice los controles cuando sea necesario 3 Llame al m todo Refresh del formulario 4 Establezca la propiedad LockScreen del formulario como falsa El ejemplo siguiente cambia varias propiedades de la pantalla a la vez se desplaza a un registro nuevo y s lo entonces actualiza la pantalla con informaci n nueva Si LockScreen no se hubiera establecido como verdadero en cada una de estas operaciones se volver an a dibujar los controles afectados individualmente y el rendimiento global de la actualizaci n parecer a retardado THISFORM LockScreen T THISFORM MyButton Caption Guardar THISFORM MyGrid BackColor RGB 255 0 0 amp amp Rojo SKIP IN customers SKIP IN orders THISFORM Refresh THISFORM LockScreen F Sugerencia Esta t cnica no proporciona ninguna ventaja si est actualizando un nico control Reducir c digo en m todos usados con frecuencia Puesto que el m todo Refresh y el evento Paint suelen utilizarse con frecuencia puede aumentar el rendimiento de formularios si reduce la cantidad de c digo de estos m todos D
97. pos que no est n indexados la operaci n de combinaci n puede tardar mucho m s tiempo en realizarse Una caracter stica importante de Visual FoxPro es que puede crear un ndice en cualquier expresi n en algunas bases de datos s lo puede indexar los campos Esta capacidad permite usar ndices para optimizar las operaciones de b squeda ordenaci n o combinaci n en conjuntos de campos o en expresiones derivadas de campos Por ejemplo puede crear un ndice de un campo de nombres basado en una expresi n que use la funci n SOUNDEX De esa manera la aplicaci n puede proporcionar un acceso muy r pido a los nombres que guarden un cierto parecido Al agregar ndices a las tablas debe ver si la mejora en los tiempos de recuperaci n compensa la p rdida de rendimiento al actualizar la tabla A medida que agregue m s ndices a la tabla las actualizaciones e inserciones en la tabla se ralentizar n porque Visual FoxPro necesita actualizar cada ndice Por ltimo evite el uso de ndices en campos que contengan s lo unos cuantos valores discretos file CMempl hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 65 de 87 como los campos l gicos En estos casos el ndice s lo contiene un peque o n mero de entradas y el trabajo de mantener el ndice probablemente sea mayor que la ventaja que se consigue a la hora de realizar b squedas Para obtener detalles sobre la forma de crea
98. purador o Seguimiento DEBUG o SET STEP ON Generar un error espec fico para probar el control de ERROR errores Devolver un n mero de error ERROR Devolver una l nea de programa en ejecuci n LINENO file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 60 de 87 Devolver una cadena de mensaje de error MESSAGKE Ejecutar un comando cuando se produce un error ON ERROR Devolver comandos asignados a los comandos de ON control de errores Devolver el nombre del programa actualmente en PROGRAM o SYS 16 ejecuci n Volver a ejecutar el comando anterior RETRY Devolver cualquier par metro de mensaje de error SYS 2018 actual Previsi n de errores La primera l nea de defensa contra errores de tiempo de ejecuci n es anticiparse a que ocurran y codificarlos Por ejemplo esta l nea de c digo mueve el puntero al siguiente registro de la tabla SKIP Este c digo funciona a menos que el puntero de registro ya est situado detr s del ltimo registro de la tabla y es en este punto donde se producir el error Las l neas de c digo siguiente se anticipan a este error y lo evitan IF EOF SKIP IF EOF GO BOTTOM ENDIF ENDIF Otro ejemplo es esta l nea de c digo que muestra el cuadro de di logo Abrir para permitir al usuario abrir una tabla en un rea de trabajo nueva USE GETFILE DBF IN O
99. r ndices de forma eficaz al usar la tecnolog a Rushmore vea Usar la tecnolog a Rushmore para agilizar el acceso a los datos m s adelante en este cap tulo Optimizar combinaciones Cuando vaya a crear combinaciones mediante SELECT SQL las situaciones siguientes pueden reducir el rendimiento y producir resultados imprevistos e Combinaci n de tablas en datos que no sean una clave principal o exclusiva en una de las tablas e Combinaci n de tablas que contengan campos vac os Para evitar estas situaciones cree combinaciones que se basen en la relaci n entre las claves principales de una tabla y las claves externas de la otra Si crea una combinaci n basada en datos que no sean exclusivos el resultado final puede ser el producto de las dos tablas Por ejemplo la instrucci n SELECT SQL siguiente crea una combinaci n que puede producir un resultado muy grande SELECT FROM tastrade customer INNER JOIN tastrade orders ON Customer postal_code Orders postal_code En el ejemplo el c digo postal identifica de forma exclusiva una ubicaci n dentro de una ciudad pero tiene poco valor si lo que pretende es establecer una correspondencia entre las filas de clientes y las filas de sus pedidos El c digo postal no identifica necesariamente un cliente o un pedido de forma exclusiva En su lugar cree una combinaci n con una instrucci n como la siguiente SELECT FROM tastrade customer INNER JOIN tastrad
100. r el Generador de expresiones Nota No tiene que incluir el comando WHILE en la instrucci n Por ejemplo escriba sales gt 1000 para ver s lo las ventas por encima de 1000 pesetas Visual FoxPro imprime el informe con los registros que eval a mientras la expresi n sea verdadera Imprimir informes y etiquetas Si desea enviar el informe a la impresora puede enviarlo directamente o mostrar el cuadro de di logo Especificar impresora Para enviar un informe a la impresora e Utilice la palabra clave TO PRINTER del comando REPORT o LABEL Por ejemplo el c digo siguiente env a el informe MiInforme a la impresora predeterminada y hace que no se muestre en la pantalla REPORT FORM MIINFORME FRX TO PRINTER NOCONSOLE Para mostrar el cuadro de di logo Especificar impresora antes de imprimir el informe e Utilice las palabras clave TO PRINTER PROMPT del comando REPORT o LABEL Por ejemplo el c digo siguiente muestra el cuadro de di logo Especificar impresora luego env a el file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 29 de 87 informe MiInforme a la impresora predeterminada y detiene la impresi n del informe en la ventana activa REPORT FORM MIINFORME FRX TO PRINTER PROMPT NOCONSOLE Vista preliminar de informes y etiquetas Si desea mostrar una vista preliminar del informe puede enviarlo a la ventana Vista preliminar en el D
101. r el c digo siguiente IF THIS ControlClount 0 THIS AddObject cnrpagel cnrpagel THIS cnrpagel Visible T ENDIF Vinculaci n din mica de controles a datos Puede agilizar el tiempo de carga de un formulario que contenga numerosos controles vinculados a datos si retrasa la vinculaci n de esos controles hasta el momento en que sean necesarios Para vincular din micamente controles a datos 1 Sit e las tablas y vistas del formulario en el entorno de datos de modo que se abran cuando se cargue el formulario 2 Para cada control dependiente agregue c digo al c digo de evento GotFocus que vincula el file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 76 de 87 control al valor de los datos Por ejemplo el c digo siguiente vincula un control ComboBox al campo customer company Comprobar si ya se ha vinculado el control IF THIS RecordSource Establecer el valor del origen de registros y establecer el tipo de origen de registros como fields THIS RecordSource customer company THIS RecordSourceType 6 THIS Refresh ENDIF Retardo de la actualizaci n de pantalla Si realiza varios cambios en la pantalla por ejemplo cambia los valores de varios controles a la vez puede reducir el tiempo global necesario para actualizar la pantalla si retarda la actualizaci n de pantalla hasta que se realicen todos los cambios Por ejem
102. r expresiones b sicas Expresi n b sica Operador Expresi n b sica Resultados de la consulta Optimizable AND Optimizable Totalmente optimizable Optimizable OR Optimizable Totalmente optimizable Optimizable AND No optimizable Parcialmente optimizable Optimizable OR No optimizable No optimizable No optimizable AND No optimizable No optimizable No optimizable OR No optimizable No optimizable NOT Optimizable Totalmente optimizable NOT No optimizable No optimizable Puede utilizar el operador AND para combinar dos expresiones optimizables en una expresi n totalmente optimizable FIRSTNAME CARLOS AND HIRE DATE lt 1997 12 30 amp amp Optimizable En el siguiente ejemplo el operador OR combina una expresi n b sica optimizable con una expresi n no optimizable para crear una expresi n que no es optimizable FIRSTNAME CARLOS OR S LASTNAME amp amp No optimizable Puede crear una expresi n totalmente optimizable si utiliza el operador NOT con una expresi n optimizable NOT FIRSTNAME CARLOS file C temp hhA455 htm amp amp Totalmente optimizable 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 73 de 87 Tambi n puede utilizar par ntesis para agrupar combinaciones de expresiones b sicas Combinar expresiones complejas Del mismo modo que puede combinar expres
103. ra ver un ejemplo que muestre la forma de crear un ndice m s peque o y por tanto m s r pido ejecute Solution app en el directorio ASamplesYVfp98 Solution de Visual Studio Elija Ver los ejemplos mediante una lista filtrada seleccione ndice en la lista desplegable y despu s elija Crear ndices peque os usando BINTOC en la lista que aparece e Evite volver a abrir archivos puesto que esto ralentiza el rendimiento En su lugar asigne archivos a reas de trabajo cuando los abra y despu s use el comando SELECT para elegir un rea de trabajo espec fica cuando se precise e Los bucles FOR ENDFOR son m s r pidos que los bucles DO WHILE ENDDO e Cuando copie datos de varios campos SCATTER TO ARRAY es m s r pido que SCATTER MEMVAR e Para optimizar el uso de la memoria evite la creaci n de objetos antes de necesitarlos y borre los objetos cuando deje de trabajar con ellos para liberar memoria Sugerencia Puede comprobar cu nta memoria consume cada objeto si llama a la funci n SYS 1016 e Env e la salida a la ventana superior siempre que sea posible la actualizaci n de ventanas situadas detr s de la superior es bastante m s lenta No se debe en ning n caso hacer que la salida se desplace detr s de una ventana e Desactive la presentaci n del estado con el comando SET TALK OFF que elimina el trabajo de la actualizaci n de la pantalla e Establezca el comando SET DOHISTORY como OFF para evitar la
104. racteres Para recortar y concatenar r pidamente expresiones de caracteres en el Generador de expresiones puede colocar comas entre expresiones de caracteres El valor de la expresi n que precede a la coma se recorta Tambi n puede usar punto y coma para colocar la expresi n en una nueva l nea si el valor recortado tiene una longitud mayor que cero El siguiente ejemplo muestra expresiones de caracteres para campos de una lista de distribuci n nombre_contacto direcci n ciudad regi n c digo_postal Nota Uselos cuando no quiera incluir puntuaci n en el valor Si usa estos m todos aseg rese de que el campo tiene establecido Ajustar al contenido del texto Para obtener m s informaci n consulte Imprimir controles con valores de longitud variable m s adelante en este mismo cap tulo Insertar la fecha actual file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 13 de 87 Puede insertar un control de campo que imprime la fecha actual Para insertar la fecha actual 1 En la barra de herramientas Controles de informes inserte un control Campo 2 En el cuadro de di logo Expresi n de informe seleccione el bot n de di logo situado junto al cuadro Expresi n 3 En el Generador de expresiones seleccione DATK en la lista Fecha 4 Elija Aceptar 5 En el cuadro de di logo Expresi n de informe elija Aceptar Insertar un n mero de p gina Las bandas E
105. rchivo de aplicaci n O bien e En la ventana Comandos escriba DO y el nombre del archivo de aplicaci n Por ejemplo para ejecutar una aplicaci n denominada MIAPLI escriba DO miapli app Si ha creado un archivo exe desde la aplicaci n los usuarios podr n ejecutarlo de diversas maneras Para ejecutar una aplicaci n como un archivo exe e En Visual FoxPro elija Ejecutar en el men Programa y seleccione el archivo de aplicaci n o en la ventana Comandos escriba DO y el nombre del archivo de aplicaci n Por ejemplo para ejecutar un archivo exe denominada Miapli exe escriba DO miapli exe O bien e En Windows haga doble clic en el icono del archivo exe Nota Puede usar el Asistente para instalaci n para crear una rutina de instalaci n que instale los archivos apropiados Cap tulo 14 Probar y depurar aplicaciones El proceso de prueba implica la b squeda de problemas en el c digo mientras que la depuraci n file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 45 de 87 consiste en aislar y resolver los problemas La prueba y la depuraci n son partes inevitables del ciclo de desarrollo que es mejor incorporar en una etapa inicial La prueba y depuraci n de componentes individuales simplifica de forma significativa el proceso an logo de aplicaciones integradas Para obtener m s informaci n sobre la creaci n de una aplicaci n consulte el cap tulo
106. riginal ON ERROR 1cOldOnError PROCEDURE errhandler LOCAL aErrInfo 1 file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 62 de 87 AERROR aErrInfo DO CASE CASE aErrInfo 1 1 amp amp El archivo no existe mostrar el mensaje apropiado y emprender alguna acci n para solucionar el problema OTHERWISE mostrar un mensaje gen rico y quiz enviar un mensaje electr nico de alta prioridad al administrador ENDPROC Controlar errores en clases y objetos Cuando se produce un error en el c digo del m todo Visual FoxPro comprueba el c digo de gesti n de errores asociado al evento Error del objeto Si no se ha escrito c digo a nivel del objeto para el evento Error se ejecuta el c digo del evento Error heredado de la clase principal o de otra clase superior de la jerarqu a de clases Si no se ha escrito c digo para el evento Error en ninguna clase de la jerarqu a Visual FoxPro comprueba la existencia de una rutina ON ERROR Si no existiera Visual FoxPro mostrar el mensaje de error predeterminado de Visual FoxPro En las clases puede encapsularse todo lo que necesita un control incluido el control de errores para que el control pueda utilizarse en diversos entornos Si posteriormente descubre otro error que podr a encontrar el control puede agregar la gesti n de ese error a la clase de este modo todos
107. rme Para ver m s informaci n al respecto consulte Recoger entradas de usuario con consultas m s adelante en este mismo cap tulo e Si desea que el usuario cree informes personalizados puede ofrecerle la posibilidad de crear nuevos informes o modificar los ya existentes con el Dise ador de informes file CMempl hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 32 de 87 Para ejecutar informes y etiquetas e Utilice los comandos REPORT o LABEL Por ejemplo podr a utilizar c digo como el de las siguientes l neas REPORT FORM MIINF FRX LABEL FORM MIETIOL LBX Para modificar informes y etiquetas e Utilice los comandos MODIFY REPORT o MODIFY LABEL Por ejemplo agregue c digo similar al de las siguientes l neas MODIFY REPORT MIINF FRX MODIFY LABEL MIETIQ LBX Para crear informes y etiquetas e Utilice los comandos CREATE REPORT o CREATE LABEL Por ejemplo podr a utilizar c digo similar al de las siguientes l neas CREATE REPORT MIINF FRX CREATE LABEL MIETIQ LBX Recoger entradas de usuario con consultas Si quiere recoger valores desde un formulario puede utilizar variables en una instrucci n SELECT SQL y luego utilizarlos en la instrucci n o ejecutar la instrucci n m s tarde Para recoger valores para uso inmediato puede utilizar expl citamente el nombre del formulario o una referencia abrevi
108. s pasar n a ser de s lo lectura Los archivos que forman parte del proyecto como las tablas suelen estar dise ados para que los usuarios puedan modificarlos En esos casos deber a agregar los archivos al proyecto pero marc ndolos como excluidos Los archivos excluidos siguen formando parte de la aplicaci n por lo que Visual FoxPro los registra como parte del proyecto pero no se compilan en el archivo de aplicaci n y de este modo los usuarios podr n actualizarlos Nota Como opci n predeterminada las tablas se marcan como excluidas porque Visual FoxPro supone que las tablas ser n modificables en una aplicaci n Como regla general los archivos que contengan programas ejecutables formularios informes consultas men s y programas deber n incluirse en el archivo de aplicaci n y los archivos de datos deber n excluirse Sin embargo ha de determinar si va a incluir o excluir archivos seg n los requisitos de la aplicaci n Por ejemplo una tabla que contenga informaci n sobre el sistema o datos utilizados nicamente para consulta puede incluirse en el archivo de aplicaci n para proteger dicha informaci n ante cambios que se realicen sin previo aviso A la inversa podr a excluir un archivo de informe frx si la aplicaci n permite a los usuarios modificarlo Si excluye un archivo deber asegurarse de que Visual FoxPro pueda encontrar el archivo excluido file C temp hhA455 htm 30 05 2000 Manual del programador Part
109. s en funci n de los ndices existentes Adem s Rushmore puede aumentar la velocidad de funcionamiento de algunos comandos como LOCATE e INDEX Para ver una lista completa de los comandos optimizables consulte la secci n Usar Rushmore con tablas Los comandos SQL de Visual FoxPro utilizan la tecnolog a Rushmore como herramienta b sica para la optimizaci n de consultas de m ltiples tablas utilizando los ndices existentes e incluso creando nuevos ndices con fines espec ficos para aumentar la velocidad de dichas consultas Usar Rushmore con tablas Utilice Rushmore para optimizar el acceso a datos seg n el n mero de tablas que intervengan Cuando tenga acceso a una nica tabla podr beneficiarse de Rushmore siempre que aparezca una cl usula FOR Cuando tenga acceso a m ltiples tablas las consultas SELECT SQL prevalecen sobre todas las optimizaciones Rushmore En un comando SQL Visual FoxPro decide lo que se necesita para optimizar una consulta y realiza las operaciones autom ticamente No es necesario que abra tablas o ndices Si SQL decide que necesita ndices crea ndices temporales para su propio uso Para utilizar Rushmore Elija una de las siguientes opciones e Para tener acceso a datos que est n contenidos en una nica tabla utilice una cl usula FOR en un comando como AVERAGE BROWSE o LOCATE o use comandos SQL para actualizar file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4
110. s o n meros de p gina Agregar controles de campo Puede agregar controles de campo de varias maneras Para agregar campos de tabla del entorno de datos 1 Abra el entorno de datos del informe 2 Seleccione una tabla o vista 3 Arrastre campos al dise o Para agregar campos de la barra de herramientas 1 En la barra de herramientas Controles de informes inserte un control Campo file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 11 de 87 2 En el cuadro de di logo Expresi n de informe elija el bot n del cuadro de di logo situado despu s del cuadro Expresi n 3 En el cuadro Campos haga doble clic en el nombre del campo que desee El nombre de tabla y el nombre de campo aparecen en el cuadro Expresi n para campo del informe Nota Si el cuadro Campos est vac o agregue una tabla o vista al entorno de datos No tiene que guardar el alias del nombre de tabla en la expresi n Puede eliminarlo o borrar las opciones del Generador de expresiones 4 Elija Aceptar 5 En el cuadro de di logo Expresi n de informe elija Aceptar Despu s de escribir la expresi n puede cambiar el formato o establecer opciones de impresi n posici n o ampliaci n Para obtener m s informaci n consulte Agregar un comentario a un control en el cap tulo 7 Dise ar informes y etiquetas del Manual del usuario y Establecer las opciones de impresi n de un control m s ade
111. s para los comandos SET y las variables de sistema en el momento de abrir Visual FoxPro Sugerencia Para ver los valores predeterminados del entorno de desarrollo de Visual FoxPro inicie file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 36 de 87 Visual FoxPro sin ning n archivo de configuraci n para ello escriba VFP6 C y a continuaci n ejecute el comando DISPLA Y STATUS Siempre es conveniente guardar los valores iniciales del entorno y configurar un entorno espec fico para la aplicaci n en el preprograma Para capturar comandos para el entorno actual 1 En el men Herramientas elija Opciones 2 Presione May sculas y elija Aceptar para mostrar los comandos SET del entorno en la ventana Comandos 3 En la ventana Comandos copie y pegue en el programa En un entorno espec fico de la aplicaci n podr a incluir c digo para e Inicializar variables e Establecer una ruta predeterminada e Abrir las bases de datos las tablas libres y los ndices necesarios Si la aplicaci n requiere acceso a datos remotos tambi n se puede solicitar al usuario la informaci n de inicio de sesi n necesaria en la rutina de inicializaci n e Hacer referencia a archivos externos de biblioteca y procedimientos Por ejemplo si desea comprobar el valor predeterminado del comando SET TALK almacenar este valor y establecer SET TALK como OFF para la aplicaci n podr a incluir
112. s pueden ir dirigidas hacia diversos destinos de forma que puede usarlas en los otros componentes de su aplicaci n De igual forma puede ejecutar informes de manera independiente sin necesidad de utilizar una consulta Este cap tulo resalta algunas de las formas en las que puede utilizar las consultas agregar informes y exponer consultas e informes a los usuarios file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 2 de 87 Cuando utiliza una consulta o una vista en su aplicaci n en realidad utiliza una instrucci n SELECT SQL Este cap tulo describe c mo puede utilizar en su aplicaci n una instrucci n SELECT SQL si la crea mediante una consulta definida en el Dise ador de consultas una vista definida en el Dise ador de vistas o c digo introducido para un evento o procedimiento Para obtener informaci n detallada sobre las vistas vea la parte 2 Buscar informaci n del Manual del usuario Este cap tulo trata los temas siguientes e Agregar consultas e Agregar informes y etiquetas e Integrar consultas e informes Agregar consultas Cuando agrega consultas a su aplicaci n puede combinar varios or genes de datos filtrar registros manipular datos y ordenar los resultados todo ello con la instrucci n SELECT SQL Al utilizar instrucciones SQL dispone de un control completo sobre los resultados obtenidos en sus consultas y sobre d nde se almacenan
113. s son f cilmente accesibles en todos los equipos en los que se ejecuta la aplicaci n tambi n puede necesitar una configuraci n de archivo de base Para definir una l nea de base para la configuraci n responda a las siguientes preguntas e Necesita su aplicaci n rutas comunes de sistema b e Ha establecido propiedades adecuadas de acceso a archivos e Se han establecido correctamente permisos de red para cada usuario Estructura de directorios y ubicaciones de archivos Si el c digo fuente hace referencia a rutas o a nombres de archivos absolutos es obligatorio que tales rutas y archivos existan en el momento de instalar la aplicaci n en cualquier otro PC Para evitar este caso puede seguir uno de estos procedimientos e Para obtener informaci n adicional sobre el uso de los archivos de configuraci n consulte el cap tulo 3 Configurar Visual FoxPro en la Gu a de instalaci n e Cree un directorio o una estructura de directorios independiente para mantener los archivos de origen apartados de los archivos de aplicaci n generados De esta forma puede comprobar las referencias de la aplicaci n terminada y saber exactamente los archivos que necesita distribuir e Use rutas de acceso relativas Establecer aserciones Puede incluir aserciones en el c digo para comprobar las hip tesis que tiene sobre el entorno de ejecuci n del c digo file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrup
114. sa un archivo de programa prg como archivo principal en la aplicaci n debe comprobar que incluya los comandos que gestionar n las tareas asociadas con las principales tareas de la aplicaci n El archivo principal no tiene que ejecutar comandos directamente para realizar todas las tareas Por ejemplo es frecuente llamar a procedimientos o funciones para gestionar tareas como inicializaci n del entorno y limpieza Nota Si us el Asistente para aplicaciones y le permiti crear el programa Main prg puede modificar el programa creado por el asistente en lugar de crear otro nuevo Los asistentes utilizan una clase especial para definir un objeto para la aplicaci n El programa principal incluye secciones para crear instancias y configurar el objeto Para generar un nico programa principal 1 Inicialice el entorno para ello abra bases de datos declare variables etc 2 Establezca la interfaz inicial de usuario para ello llame a un men o formulario 3 Establezca el bucle de eventos para ello ejecute el comando READ EVENTS 4 Ejecute el comando CLEAR EVENTS desde un men como un comando Salir o un bot n como un bot n del comando Salir El programa principal no deber a ejecutar este comando 5 Restablezca el entorno cuando salga de la aplicaci n Por ejemplo su programa principal podr a ser similar al siguiente file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los ele
115. sencilla de extraer informaci n del archivo de registro es convertirla en una tabla de modo que se puedan establecer filtros ejecutar consultas e informes ejecutar comandos y manipular la tabla de otras maneras La aplicaci n Analizador de trayecto crea un cursor a partir de los datos generados en el registro de trayecto y lo utiliza en una ventana para facilitar el an lisis El programa siguiente convierte en una tabla el archivo de texto creado por el registro de trayecto cFileName GETFILE DBF IF EMPTY cFileName RETURN ENDIF CREATE TABLE cFileName duration n 7 3 class c 30 procedure c 60 Iing Tp 3 file c 100 APPEND FROM GETFILE log TYPE DELIMITED Controlar errores de tiempo de ejecuci n Los errores de tiempo de ejecuci n se producen despu s de comenzar la ejecuci n de la aplicaci n Entre las acciones que podr an generar errores de tiempo de ejecuci n se encuentran la escritura en un archivo que no existe el intento de abrir una tabla que ya est abierta el intento de seleccionar una tabla que se ha cerrado la presencia de un conflicto de datos la divisi n de un valor entre cero etc Los comandos y funciones siguientes resultan tiles para anticiparse y gestionar los errores de tiempo de ejecuci n Para Use Llenar una matriz con informaci n de error AERROR Abrir la ventana De
116. suario sabr n lo que ha sucedido Dependiendo de los usuarios a los que est destinada la aplicaci n podr a suministrar m s informaci n en el caso de un error no controlado como el nombre y n mero de tel fono de la persona a la que se puede solicitar ayuda Retorno desde el c digo de control de errores Despu s de ejecutarse el c digo de control de errores se ejecuta la l nea de c digo que sigue a la que ha producido el error Si desea volver a ejecutar la l nea de c digo que ha producido el error cuando haya cambiado la situaci n que lo ha producido use el comando RETRY Nota Puede llamar al evento Error cuando el error encontrado no est asociado a una l nea del c digo Por ejemplo si llama al m todo CloseTables de un entorno de datos cuando AutoCloseTables est establecido como verdadero T y se libera el formulario se generar un error interno cuando Visual FoxPro intente volver a cerrar las tablas Puede interrumpir en este error pero no existe ninguna l nea de c digo para ejecutar RETRY Cap tulo 15 Optimizar aplicaciones Cuando utilice Visual FoxPro para dise ar y ejecutar aplicaciones querr obtener el m ximo rendimiento tanto de su sistema operativo como de Visual FoxPro y de su aplicaci n file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 64 de 87 Para obtener informaci n sobre la forma de obtener el m ximo rendimiento del equipo y de
117. sulta aparecer un mensaje de error que indique que la variable no se ha podido encontrar Si la variable no est definida en el c digo Visual FoxPro supondr que la variable est pre inicializada Cap tulo 13 Compilar una aplicaci n Puede crear f cilmente aplicaciones orientadas a objetos controladas por eventos de una en una Este enfoque modular le permite comprobar la funcionalidad de cada componente a medida que lo crea Cuando haya creado todos los componentes funcionales podr compilarlos en una nica aplicaci n que ensamblar los componentes ejecutables del proyecto formularios informes men s programas etc en un nico archivo que podr distribuir a los usuarios junto con los datos Para crear r pidamente un proyecto completo con el Marco de aplicaciones puede usar el Asistente para aplicaciones Una vez creado el proyecto el Generador de aplicaciones abrir el nuevo proyecto de modo que pueda agregar una base de datos tablas informes y formularios En este cap tulo se describe la forma de generar una aplicaci n t pica de Visual FoxPro Para obtener m s informaci n sobre el proceso de programaci n de aplicaciones de Visual FoxPro consulte el cap tulo 2 Programar una aplicaci n y el cap tulo 14 Probar y depurar aplicaciones Si desea distribuir la aplicaci n vea la parte 8 Distribuir aplicaciones El proceso de generaci n de aplicaciones requiere lo siguiente e Estructurar
118. sultado 5 El cliente recoge los datos del servidor a trav s de la red Este paso puede realizarse en una sola operaci n o el cliente puede solicitar que los resultados se env en en partes a medida que se file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 82 de 87 vayan necesitando Puede usar varias t cnicas para aumentar la velocidad de la recuperaci n o actualizaci n de los datos En la secci n siguiente se tratan estas estrategias Recuperar s lo los datos necesarios Actualizar tablas remotas de forma eficaz Enviar instrucciones en un lote Establecer el tama o del paquete Retrasar la recuperaci n de datos memo y binarios Almacenar localmente datos de consulta Crear reglas locales Obtener s lo los datos necesarios La mayor parte de las aplicaciones que usan datos remotos formularios e informes no necesitan tener acceso a todos los datos de una tabla a la vez Por tanto puede aumentar el rendimiento si crea vistas remotas que busquen o actualicen nicamente los campos y registros que desee con lo que se reduce al m nimo la cantidad de datos que deben transmitirse a trav s de la red Para crear consultas que minimicen el trabajo de recuperaci n de datos de or genes remotos siga estas sugerencias e Especifique s lo los campos que necesite No use la instrucci n SELECT FROM customers a menos que necesite todos los campos de la tabla e Incluya u
119. tas Para enviar los resultados a este destino Utilice esta cl usula Otra tabla INTO TABLE mitabla Matriz INTO ARRAY aMiMatriz Tabla temporal INTO CURSOR micursor Ventana activa TO SCREEN Ventana Examinar Predeterminado si no se especifica otro destino file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 4 de 87 Una vez que los resultados est n almacenados puede utilizar comandos para controlar c mo se integran los resultados almacenados para su presentaci n o impresi n Almacenar los resultados en una tabla matriz o cursor Puede almacenar los resultados de sus consultas en una tabla una matriz o un cursor para otros usos tales como completar formularios e imprimir informes y etiquetas Si desea almacenar los resultados s lo temporalmente env elos a una matriz o a un cursor Si lo que desea es almacenar los resultados definitivamente env elos a una tabla Para especificar una tabla como destino e Utilice la cl usula INTO de la instrucci n SELECT SQL para especificar un destino Este ejemplo muestra una cl usula INTO para una tabla SELECT FROM tastrade customer WHERE customer country Canad INTO TABLE mitabla Para especificar una matriz como destino e Utilice la cl usula INTO de la instrucci n SELECT SQL para especificar un destino El ejemplo siguiente muestra
120. timizable AND No optimizable No optimizable No optimizable OR No optimizable No optimizable file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 74 de 87 NOT No optimizable No optimizable Puede combinar expresiones totalmente optimizables con el operador OR para crear una expresi n que tambi n sea totalmente optimizable Expresi n totalmente optimizable FIRSTNAME CARLOS AND HIREDATE lt 01997 12 30 OR LASTNAME AND HIREDATE gt 01996 12 30 Para crear expresiones parcialmente optimizables combine una expresi n totalmente optimizable con una expresi n que no sea optimizable En el siguiente ejemplo el operador AND se utiliza para combinar estas expresiones Expresi n parcialmente optimizable FIRSTNAME FRED AND HIREDATE lt 01997 12 30 AND S LASTNAME Las expresiones parcialmente optimizables se pueden combinar para crear una expresi n que tambi n sea parcialmente optimizable Expresi n parcialmente optimizable FIRSTNAME CARLOS AND S LASTNAME OR FIRSTNAME PEDRO AND T LASTNAME La combinaci n de expresiones que no sean optimizables crea una expresi n que tampoco se puede optimizar Expresi n que no es optimizable CARLOS FIRSTNAME OR S LASTNAME OR MAIN STREET OR AVE STREET
121. tm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 22 de 87 3 En el rea Posici n del campo seleccione Borde superior de la banda y a continuaci n elija Aceptar 4 Haga doble clic en la parte inferior del control para mostrar el cuadro de di logo del control 5 Enel rea Posici n del campo seleccione Flotante y a continuaci n elija Aceptar Los dos valores de registro se imprimir n completamente y no se sobrescribir n Establecer las opciones de impresi n de un control Puede controlar cu ndo y c mo se imprime cada control de informe en el informe Para obtener m s informaci n sobre las opciones de impresi n consulte cuadro de di logo Imprimir Condiciones Suprimir valores repetidos Para controles de campo puede suprimir los valores repetidos para registros consecutivos de forma que el valor se imprima una vez para el primer registro pero no aparezca en los siguientes registros hasta que cambie Por ejemplo si va a imprimir una factura y uno de los campos contiene la fecha de la transacci n la fecha s lo se imprime una vez para transacciones que tuvieron lugar en esa fecha Para suprimir valores repetidos 1 Haga doble clic en el control para mostrar el cuadro de di logo del control 2 Elija Imprimir Condiciones para mostrar el cuadro de di logo Imprimir Condiciones Cuadro de di logo Imprimir Condiciones Imprimir Condiciones x r Imprimir valores repetidos Se
122. to de fecha en otro Opciones de formato para controles de informe Para controles de campo puede establecer varias opciones de formato para cada tipo de datos Para dar formato a un control de campo 1 Elija el control Campo 2 En el cuadro de di logo Expresi n de informe elija el bot n de di logo situado junto al cuadro Formato 3 En el cuadro de di logo Formato seleccione el tipo de datos para el campo Car cter Num rico o Fecha El rea Opciones de edici n muestra las opciones de formato disponibles para ese tipo de datos Nota Este tipo de datos s lo se aplica al control del informe Refleja el tipo de datos de la expresi n y no cambia el tipo de datos del campo en la tabla 4 Seleccione las opciones de alineaci n y formato que desee El cuadro de di logo Formato muestra opciones diferentes en funci n del tipo de datos que elija Tambi n puede crear una plantilla de formato si escribe caracteres en el cuadro Formato Alinear texto en un campo Puede alinear el contenido de campos en controles de dos formas Esta configuraci n no cambia la posici n del control del informe s lo el contenido en el espacio del control Para alinear el texto en un control de campo 1 Seleccione los controles que desea cambiar file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 17 de 87 2 En el men Formato elija Alineaci n de texto 3 En el submen
123. to y agr guelos con el Administrador de proyectos Si ha utilizado el Asistente para aplicaciones o el Administrador de proyectos para crear los archivos normalmente no necesitar hacer nada m s ya que el archivo se incluye autom ticamente en el proyecto Sin embargo existe una excepci n a lo anterior si la aplicaci n incluye un archivo que el usuario vaya a modificar Dado que los archivos incluidos son de s lo lectura deber marcar el archivo como excluido Para obtener m s detalles vea el apartado Referencias a archivos modificables m s adelante en este cap tulo Sugerencia Para obtener una lista de los tipos de archivos y extensiones utilizados en Visual FoxPro vea Extensiones y tipos de archivos Si un archivo existente ya no forma parte del proyecto puede agregarlo manualmente Para agregar un archivo a un proyecto manualmente 1 Enel Administrador de proyectos elija el tipo de componente que desea agregar para ello file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 40 de 87 selecci nelo en la jerarqu a y a continuaci n haga clic en Agregar 2 En el cuadro de di logo Abrir seleccione el archivo que desea agregar Visual FoxPro tambi n agrega archivos al proyecto si se ha hecho referencia a los mismos en un programa o formulario Por ejemplo si un programa del proyecto incluye la l nea siguiente Visual FoxPro agrega el archivo Orders scx
124. tos P gina 83 de 87 Para optimizar el proceso de actualizaci n de datos en or genes de datos remotos puede especificar la forma en que Visual FoxPro debe comprobar los registros modificados Para ello tiene que indicar la cl usula WHERE que Visual FoxPro debe generar para realizar la actualizaci n Imagine por ejemplo que est usando una vista basada en una tabla de clientes en un origen de datos remoto Ha creado la vista mediante una instrucci n SELECT SQL como la siguiente SELECT cust_id company address contact FROM customers WHERE region vpRegion Quiere actualizar los cuatro campos que ha especificado en la vista salvo el campo clave cust_ia En la tabla siguiente se presenta la cl usula WHERE que Visual FoxPro generar para cada una de las opciones disponibles en la cl usula SQL WHERE Nota La funci n OLDVAL devuelve la versi n preactualizada de los campos que se han modificado y la funci n CURVALC devuelve el valor actual almacenado en el origen de datos remoto Si compara estos valores Visual FoxPro puede determinar si el registro ha cambiado en el origen de datos remoto desde que se transfiri al equipo Valor Cl usula WHERE resultante S lo campos clave WHERE OLDVAL cust_id CURVAL cust_id CURVAL cust_id AND Campos clave y WHERE OLDVAL cust_id CURVAL lt mod_f1d2 gt AND OLDVAL lt mod_ 1d1 gt
125. tos de interrupci n Punto de interrupci n en una ubicaci n Puntos de interrupci n x Tipo Punto de interrupci n en la ubicaci n y Ubicaci n Cancelar erhand 5 Archivo ss El Ayuda Cuenta de pasos Expresi n pe Puntos de interrupci n en erhand 5 main prg Agregar Quitar Desactivar Borrar todas MV Mostrar los mensajes de los puntos de interrupci n Ejemplos de ubicaciones y archivos de puntos de interrupci n Ubicaci n Archivo D nde se suspende la ejecuci n ErrHandler CAMyappWMain prg La primera l nea ejecutable de un procedimiento denominado ErrHandler en Main prg Main 10 CAMyappWMain prg La d cima l nea del programa file CMempl hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 52 de 87 denominado Main Click CAMyappIForm scx La primera l nea ejecutable de cualquier procedimiento funci n m todo o evento denominado C1ick en Form scx cmdNext Click CAMyappWForm scx La primera l nea ejecutable asociada al evento Click de cmanext en Form scx cmdNext Click La primera l nea ejecutable del evento Click de cualquier control cuya ParentClass sea cmdNext en cualquier archivo Suspender la ejecuci n cuando los valores cambian Si desea saber cu ndo cambia el valor de una variable o una propiedad o cu ndo cambia una condici n del tiempo de ejecuci n pued
126. trar los valores almacenados en la ventana Locales La ventana Locales muestra todas las variables matrices objetos y miembros de objetos que est n visibles en cualquier programa procedimiento o m todo de la pila de llamadas Como opci n predeterminada los valores del programa que se est ejecutando actualmente se muestran en la ventana Locales Puede ver estos valores para otros programas o procedimientos de la pila de llamadas si elige los programas o procedimientos en la lista Locales para Ventana Locales Objeto 7 atemp Matriz atemp 1 1 test C atemp 1 2 7 N ctime 19 16 48 C Puede efectuar un an lisis descendente de matrices u objetos si hace clic en el signo m s situado junto al nombre de la matriz u objeto en las ventanas Locales e Inspecci n Cuando efect e el an lisis descendente podr ver los valores de todos los elementos de las matrices y las configuraciones de propiedades de los objetos Puede incluso cambiar los valores de las variables elementos de matrices y propiedades en las ventanas Locales e Inspecci n seleccionando la variable elemento de matriz o propiedad si hace clic en la columna Valor y escribe un valor nuevo Mostrar los valores almacenados en la ventana Inspecci n En el cuadro Inspecci n de la ventana Inspecci n escriba cualquier expresi n v lida de Visual FoxPro y presione ENTRAR El valor y el tipo de expresi n aparecen en la lista de l
127. una cl usula INTO para una matriz SELECT FROM tastrade customer WHERE customer country Canad INTO ARRAY aMiMatriz Para especificar un cursor como destino e Utilice la cl usula INTO de la instrucci n SELECT SQL para especificar un destino Este ejemplo muestra una cl usula INTO para un cursor llamado micursor SELEC x E FROM tastrade customer WHERE customer country Canad INTO CURSOR micursor Si crea una tabla o una matriz puede utilizarla como cualquier otra tabla o matriz en Visual FoxPro Si crea un cursor puede examinar o anexar su contenido El cursor se abre en el menor rea de trabajo disponible Puede tener acceso al mismo con el nombre que le ha dado en la instrucci n SELECT SQL Los dos procedimientos siguientes describen dos formas comunes para incluir en una aplicaci n los resultados de consultas almacenados en tablas y cursores file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 5 de 87 Rellenar un control de formulario Si desea mostrar los resultados de sus consultas en un formulario puede utilizar una tabla una matriz o un cursor para colocarlos en una cuadr cula un cuadro de lista o un cuadro combinado Para rellenar un control cuadro de lista o cuadro combinado con una tabla o cursor 1 Enel Dise ador de formularios modifique el formulario que tiene el control
128. una instrucci n SELECT SQL Para mostrar resultados en otra ventana activa e Defina una ventana mu strela para activarla y a continuaci n ejecute una consulta SQL u otro comando que muestre resultados en una ventana Este programa de ejemplo muestra la definici n para una ventana temporal titulada Principales clientes que muestra los nombres de las compa as con una facturaci n anual superior a los 50 000 Mostrar los resultados de la consulta en una ventana C digo Comentario frmMyForm createob3 form Crea e inicia un objeto ventana frmMyForm Left 1 temporal frmMyForm Top 1 frmMyForm Width 130 frmMyForm Height 25 frmMyForm Caption Principales clientes frmMyForm Show SELECT customer company_name Introduce una instrucci n SELECT SUM orders freight SQL FROM tastrade customer i file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 7 de 87 tastrade orders WHERE customer customer_id orders customer_id GROUP BY customer company_name HAVING SUM orders freight gt 5000 ORDER BY 2 DESC Agregar informes y etiquetas Despu s de recoger y organizar sus datos puede agregar informes o etiquetas a su aplicaci n para imprimir los datos o mostrarlos en pantalla Puede controlar los datos de su informe mediante los or genes de datos que elija o manipular y combinar datos sin manipular
129. y depuraci n resulten m s f ciles posteriormente entre ellos se incluyen e Crear un entorno de prueba e Establecer aserciones e Mostrar las secuencias de eventos Crear un entorno de prueba file C temp hhA455 htm 30 05 2000 Manual del programador Parte 4 Agrupar todos los elementos P gina 46 de 87 El entorno de sistema en el que piensa ejecutar una aplicaci n tiene la misma importancia que el entorno de datos que ha instalado para la propia aplicaci n Para garantizar la portabilidad y crear un contexto apropiado para las pruebas y la depuraci n debe tener en cuenta lo siguiente e El hardware y el software e Las rutas del sistema y las propiedades de archivo e La estructura de directorios y las ubicaciones de los archivos Hardware y software Para obtener la m xima portabilidad debe programar las aplicaciones en la plataforma com n de menor nivel en la que va a ejecutarlas Para establecer una plataforma de base e Programe las aplicaciones utilizando el modo de v deo com n m s bajo e Determine los requisitos b sicos para la RAM y el espacio de almacenamiento de medios incluyendo los controladores necesarios o el software que se ejecute de forma simult nea e Tenga en cuenta casos especiales de memoria archivo y bloqueo de registros para las versiones en red y aut noma de las aplicaciones Rutas del sistema y propiedades de archivos Con el fin de garantizar que todos los archivos de programa necesario
Download Pdf Manuals
Related Search
Related Contents
ENGLISH Agence Qualité Construction : « Écran de sous-toiture Samsung AHT18F1HEA User Manual D-303545 PowerMaster-10/30 G2 Guía del Instalador Trekstor i.Beat vision DM 1 GB User Manual VS18 DR USER MANUAL Copyright © All rights reserved.
Failed to retrieve file