Você está na página 1de 30

Curso de Visual Foxpro Tercer Captulo El Administrador de Proyectos (I)

Proyectos
El proyecto es el ncleo de trabajo para la generacin de aplicaciones Visual FoxPro. Se utiliza para aadir ficheros nuevos a la aplicacin, modificar los existentes o borrarlos si ya no los necesitamos. Mediante el proyecto no necesitamos recordar qu ficheros se necesitan para generar la aplicacin, basta con pulsar en el botn Generar y la aplicacin se generar, encontrado automticamente todos los componentes necesarios.

Existen cinco pginas que identifican cada uno de los tipos de ficheros, ms una que incluyen todos las dems. Este es el contenido de cada una de ellas. 1.- Datos Engloba todos aquellos ficheros relacionados con el manejo de datos. Tipo Bases de datos Tablas libres Consultas Descripcin Referencias a todas las bases de datos incluidas en la aplicacin. Son tablas que no pertenecen a ninguna base de datos. Consultas SQL Para cada base de datos se guardan los siguientes datos: Tipo Tablas Vistas locales Vistas remotas Conexiones Procedimientos almacenados Descripcin Tablas .DBF asociadas a la base de datos. Consultas SQL actualizables. Vistas de otras tablas va ODBC. Conexiones que hacen posible las vistas remotas. Procedimientos incorporados a la base de datos.

2.- Documentos Incluyen los formularios, informes y etiquetas:

Tipo Formularios Informes Etiquetas

Descripcin Formularios de entrada de datos. Formatos de diseo de informes. Formatos de diseo de etiquetas. 3.- Bibliotecas de Clases Bibliotecas de clases visuales.

4.- Cdigo Cdigo fuente del programa, Bibliotecas FLL y otras aplicaciones APP/EXE generados con Visual FoxPro. Tipo Programas Bibliotecas API Aplicaciones Descripcin Programas .PRG y cualquier otro tipo de programas (SPR, MPR). Biblioteca .FLL construida en C. Otras aplicaciones Visual FoxPro.

5.- Otros Otro tipo de ficheros: mens, ficheros de texto, bitmap, etc. Tipo Mens Archivos de texto Otros archivos Descripcin Ficheros de definicin de mens .MNX. Ficheros de texto y ficheros de definicin de constantes .H Ficheros bitmap (BMP) y ficheros de iconos (.ICO)

Ajustes de la ventana del generador de proyectos Segn las necesidades del programador, la ventana del generador de proyectos puede adoptar varias posiciones y tamaos. En primer lugar, si el tamao de la ventana es demasiado grande, sta puede apilarse en el borde superior de la ventana, debajo de la barra de mens, al estilo de cualquier barra de herramientas. En ese momento, lo nico que se visualizar sern las seis pestaas de las pginas de objetos del generador de proyectos. Para acceder a cualquiera de las pginas, basta con pulsar en la etiqueta adecuada. Los botones de comando existentes en la parte derecha de la ventana de formularios se trasladan de forma automtica al men accesible desde el botn derecho del ratn. Es decir, para acceder a las propiedades de cualquier objeto, habr que pulsar el botn derecho del ratn.

Otra posibilidad de minimizar al mximo la ventana del generador de proyectos consiste en utilizar el botn de comando situado en la parte superior derecha de la ventana. Este botn de comando minimiza la ventana, convirtindola en una especie de barra de herramientas. Siguen estando accesibles todas las pginas de ficheros: sin embargo, para ver su contenido, es necesario pulsar en la pgina deseada y sta se visualiza debajo de la etiqueta elegida. Otra caracterstica interesante es que las pginas de datos se pueden mover a cualquier parte de la pantalla. Para ello es necesario que la ventana del generador de proyectos adopte una de las dos formas descritas anteriormente. Cuando desee cerrar la pgina, marque en el botn de comando de cierre. La pgina volver a estar disponible en la ventana del generador de proyectos. Cada vez que arrancamos Visual Foxpro, ste recuerda la posicin y tamao de la ventana del ltimo proyecto utilizado, siendo posible, adems, abrirlo cada vez.

Opciones de proyectos Existen dos pginas relacionadas con la edicin de proyectos. Son las pginas Ver y Proyectos.

Pginas Proyectos Mediante esta pgina configuramos el acceso a los distintos ficheros del proyecto Al hacer doble click en el proyecto Indica qu accin se realiza al pulsar doble clic en cualquier archivo del proyecto. Ejecutar el archivo seleccionado. Ejecuta el archivo seleccionado en caso de ser formulario, un informe, una etiqueta, un programa o un men. Modificar el archivo seleccionado. Modifica el archivo seleccionado en cualquier caso.

Pedir Asistentes Cuando se crea un nuevo fichero da opcin a utilizar un asistente para generar el mismo. Un asistente gua al usuario y le pide la informacin necesaria para poder generar el nuevo fichero de forma ms o menos automtica. Opciones del control de cdigo de origen Existen aplicaciones, como Visual SourceSafe, que permiten llevar un riguroso control sobre las modificaciones que un grupo de desarrollo efecta en un proyecto. Desde este grupo de opciones es posible indicar qu aplicacin vamos a utilizar y cmo se va a comportar cuando agreguemos, modifiquemos o eliminemos algn componente del proyecto. Opcin Proveedor de cdigo activo Descripcin Indica el nombre de la aplicacin que se va a utilizar como control.

Agregar automticamente nuevos proyectos al control de cdigo de origen Desproteger los archivos al modificarlos

Especifica si los nuevos proyectos que se vayan a crear se incluirn por defecto en la aplicacin de control de cdigo de origen. Los archivos sometidos al control de cdigo de origen se protegen para evitar que dos usuarios puedan realizar modificaciones al mismo tiempo. Esta opcin indica que si un archivo ya est siendo modificado por otro usuario, cuando un segundo usuario intente modificarlo, ver un mensaje de error, indicndole que no puede realizar modificaciones. Si elige esta opcin, cuando aada un nuevo archivo al proyecto, ste entrar a formar parte automticamente dentro del grupo de archivos bajo control de cdigo de origen. Cuando marca esta opcin, al quitar un archivo del proyecto se elimina automticamente del control de cdigo de origen. Si omite esta opcin, ste permanecer activo en el control de cdigo, aunque ya no est presente en el proyecto. Admite varios ficheros, a los cuales aplica el comando de control de origen, cuando se selecciona un comando desde el men de contexto. Indica el nombre del programa cuya misin es generar un fichero de texto representativo de los formularios, etiquetas, mens, informes, bibliotecas de clases cada vez que se protege el proyecto.

Agregar archivos al control de cdigo de origen al agregarlos al proyecto Quitar archivos del control de cdigo de origen al quitarlos del proyecto Mostrar el cuadro de dilogo para los comandos de men contextual Generacin de texto

Pgina Ver Esta pgina permite definir qu elementos se van a visualizar Barra de estado Consiste en el rea inferior de la ventana. Se utiliza para visualizar diversa informacin acerca del estado de Visual FoxPro, por ejemplo, el alias de la tabla activa, el mensaje correspondiente a la opcin de men seleccionado, estado de las maysculas, insercin, etc. Modifica el estado de SET STATUS. Reloj Muestra el reloj en la barra de estado. Correspondiente al comando SET CLOCK. Resultado del comando Muestra el resultado de la ejecucin de un comando en la ventana principal de Visual FoxPro. Mensajes del sistema Habilita la visualizacin de los mensajes de sistema en la barra de estado. Correspondiente la comando SET NOTIFY. Lista de los proyectos usados recientemente Aade al men Archivo una lista de los proyectos utilizado recientemente. Abrir el ltimo proyecto al iniciar Abre el ltimo proyecto utilizado cada vez que arranca Visual FoxPro.

Generacin de proyectos Como objetivo final, un proyecto persigue la generacin de aplicaciones distribuibles e independientes. Existen tres tipos de ficheros como producto de la generacin de un proyecto: Fichero Aplicacin (APP) Descripcin Este tipo de ficheros slo se puede ejecutar desde el entorno de desarrollo Visual FoxPro. Son tiles para realizar las pruebas finales de un proyecto. Se deben generar ejecutables cuando la aplicacin est lista para ser instalada en otros lugares. Este ejecutables contiene todos los formularios, informes, etiquetas, programas, mens incluidos en el proyecto. Este tipo de fichero requiere la presencia de clase OLE pblicas definidas en el proyecto. Cuando se crea un fichero de este tipo, es posible hacer referencia a l desde cualquier otra aplicacin, puesto que lo que se acaba de crear es un servidor OLE.

Ejecutables (EXE)

DLL OLE (DLL)

Incluir/excluir archivos La aplicacin/ejecutable contiene todos los ficheros marcados como incluidos en el proyecto. De esta forma, se incluyen todos los formularios, programas, imgenes en la aplicacin. Por tanto, slo hay que llevar al destino de la instalacin la aplicacin/ejecutable. No es aconsejable, sin embargo, incluir ficheros que puedan modificarse en tiempo de ejecucin, tales como tablas, ficheros inicializacin (INI), si bien determinadas tablas que no se han de modificar pueden incluirse en el proyecto para que estn presentes en la aplicacin final. Para incluir/excluir ficheros, proceda del siguiente modo: 1. Pulse el botn derecho sobre el fichero que desee incluir/excluir. Del men de contexto que visualice, escoja la opcin correspondiente. Si un archivo ya estuviera incluido, la opcin que se visualiza es Excluir, de otro modo se visualiza Incluir. Escoja la opcin Incluir/Excluir del men Proyecto en la barra de mens estando posesionado en el archivo correspondiente en el proyecto.

2.

Establecer Principal Para poder generar una aplicacin, sta debe iniciarse desde un fichero de programa, formulario o men. Decimos entonces que este fichero es el inicio de toda la aplicacin, es decir, el

principal. Esta propiedad slo la puede tener uno de los ficheros incluidos en el proyecto. Para que un fichero tenga esta propiedad activada, se puede proceder de la siguiente forma:

Escoja Establecer principal del men de contexto que aparece al pulsar el botn derecho sobre el archivo. No es posible establecer como principal el archivo que est excluido del proyecto. Escoja Establecer principal del men Proyecto de la barra de mens.

Opciones de generacin Cuando se propone generar un proyecto, se le pide que complete una informacin relativa al modo en que se va a generar el prximo proyecto. La generacin y compilacin de los archivos relativos al proyecto se hace siempre de forma incremental, es decir, no se vuelven a compilar aquellos ficheros que no se han modificado desde la ltima generacin. Accin Cuando genere un proyecto, puede escoger una de las cuatro opciones que aqu detallamos: Volver a generar el proyecto. Comentemos acerca de esta opcin, en primer lugar, que el proyecto no slo guarda informacin acerca de los ficheros que lo componen, sino que, adems, incluye la versin compilada de los ficheros ejecutables, tales como formularios, programas, mens o procedimientos almacenados en la base de datos. Esta opcin permite volver a regenerar esta informacin sin necesidad de volver a generar una nueva versin de la aplicacin o el ejecutable. Como ya se ha comentado, la generacin siempre se hace de forma incremental. Generar aplicacin. Esta opcin compila todos los archivos y genera un fichero con extensin APP. Este fichero slo se puede ejecutar desde el entorno de desarrollo de VFP. Generar ejecutable. Esta opcin genera un fichero ejecutable (EXE) directamente desde el sistema operativo. De esta forma, se pueden distribuir aplicaciones libremente. Mediante el asistente de instalacin se pueden generar los disquetes necesarios para poder llevar a cabo la instalacin en otros PC. Generar DLL OLE. Cuando se escoge esta opcin, el tipo de fichero obtenido es una biblioteca de enlace dinmico (DLL) que puede utilizar desde cualquier otra aplicacin que soporte OLE, con la finalidad de ejecutar cualquier comando de VFP, o bien, una aplicacin completa.

Opciones Este grupo de opciones afectan directamente al modo en que se va a generar la aplicacin: Volver a compilar todos los archivos. Como ya se ha comentado anteriormente, cada vez que se genera el proyecto, slo se compilan aquellos archivos que han sido modificados desde la ltima generacin. Activando esta opcin impediremos la compilacin incremental y se volvern a compilar todos los archivos. Mostrar errores. Cuando se realiza la generacin y se producen errores de compilacin, se genera de forma automtica un fichero de seguimiento de errores. Este fichero tiene el mismo nombre que el proyecto que se pretende generar, pero con extensin .ERR. El hecho de activar esta opcin hace que se visualice por pantalla este fichero despus de realizar la compilacin. Ejecutar despus de generar. Esta opcin permite ejecutar la aplicacin automticamente despus de haber sido generada.

Control de Versiones Cuando se genera un ejecutable Windows, existe informacin adicional guardada dentro del propio ejecutable. Esta informacin abarca desde el copyright de la empresa al nmero de versin de la aplicacin. Numero de versin Se utiliza el nmero de versin para llevar un completo control sobre las compilaciones que se han efectuado y as poder comparar este nmero de versin con el existente en otras instalaciones. Se divide en tres campos; veamos cul es la utilidad de cada uno: Principal. Aqu indicamos el nmero de versin principal. Admite cuatro cifras. Secundaria. Nmero de versin secundaria. Admite cuatro cifras. Revisin. Admite cuatro cifras y corresponde al nmero de revisin o compilacin efectuados hasta el momento. Este nmero se autoincrementa cada vez que se compila si se activa la casilla Incrementar automticamente. De este modo es posible saber cuntas versiones se han realizado de la aplicacin hasta el momento actual.

Informacin de la versin Agrupadas en seis categoras, vemos una lista de caractersticas de la aplicacin. El contenido a aplicar para cada categora es el siguiente: Comentarios. Comentarios acerca del programa, utilidad o aplicacin. Nombre de organizacin. Nombre de la empresa a la que pertenecen los derechos de la aplicacin.

Descripcin del archivo. Descripcin de la aplicacin, en concreto del fichero ejecutable o biblioteca DLL en cuestin. Copyright legal. Datos de los derechos de copia de la aplicacin. Marcas comerciales legales. Nombre de las marcas registradas propietarias de la aplicacin. Nombre del producto. Nombre genrico del producto o marca.

Curso de Visual Foxpro Tercer Captulo El Administrador de Proyectos (II)

Informacin de proyecto

La informacin mostrada en este cuadro de dilogo se divide en tres pginas. La funcin de este cuadro de dilogo es guardar informacin adicional al proyecto que se est desarrollando, as como modificar la inclusin/exclusin de archivos en la aplicacin o determinar el contenido de la informacin relativa a servidores OLE. PROYECTO En esta pgina se completa la informacin referente al autor, al directorio actual del proyecto o si ha de guardar informacin para depuracin (figura 2.9). Veamos cada una de las opciones:
Campo Datos del autor descripcin Este concepto agrupa los campos Autor, organizacin, Direccin, Ciudad, Estado, Pas, Cdigo Postal. Se utiliza para guardar la informacin relativa al autor de la aplicacin Directorio donde reside el proyecto. Fecha y hora de la ltima generacin. Nmero de archivos incluidos en el proyecto.

Local ltima generacin Archivos

Informacin de depuracin Codificado Adjuntar iconos

Indica si ha de guardar de informacin de depuracin en la aplicacin con el fin de visualizar el cdigo fuente cuando se active la ventana de depuracin. Crea una aplicacin codificada en la que no se puede visualizar ningn texto reconocible. Especifica el icono que va a asociar a la aplicacin. Este fichero ICO se guarda dentro de la aplicacin generada para poder ser visualizada en la ventana del explorador.

ARCHIVOS

Desde esta pgina se accede a la lista de archivos referenciados en el proyecto (figura 2.10). La lista est ordenada alfabticamente y muestra la siguiente informacin:

Columna Tipo Nombre ltima modificacin Incluido Pgina de cdigo

descripcin muestra un icono identificativo del tipo de archivo. Nombre fsico del archivo. Fecha de la ltima modificacin del archivo. Aparte del mtodo que se ha visto anteriormente para incluir/excluir archivos, se puede utilizar esta columna. Esta columna identifica la pgina de cdigos con la que fue creado el archivo en cuestin. Para que la informacin que se muestra en esta columna est actualizada, ser necesario utilizar el botn de comando Actualizar pginas de cdigo nativas.

SERVIDORES OLE

Si el objeto final es crear una aplicacin servidora OLE, es imprescindible consultar el contenido de esta pgina. Para cada clase definida en el servidor, se muestra la siguiente informacin:

Dato Biblioteca de clases Nombre de clase Creando instancias

Descripcin Nombre de la biblioteca de clases donde se ha definido esta clase. Nombre de la clase. Indica si se van a permitir ejecutar varias instancias del mismo servidor o, por el contrario, cuando se haga

referencia a esta clase va a ser la misma instancia siempre. Descripcin Archivo de ayuda Id. De contexto de ayuda Comentario asociado a la clase. Nombre del fichero HLP de ayuda. Nmero de tpico de ayuda.

DESARROLLO DE APLICACIONES PARA GRUPOS DE TRABAJO

El gran problema del desarrollo en equipo de aplicaciones complejas suele ser la coordinacin entre todos los usuarios que estn desarrollando mdulos a la vez. Una de las soluciones adoptadas hasta la fecha suele ser la de dividir la aplicacin en mdulos independientes y asignar a cada usuarios uno de esos mdulos. Sin embargo, la actual filosofa de desarrollo propuesta por Visual FoxPro impide continuar con esta prctica, dado que se suceden de forma continua cambios que van a efectuar a todos los usuarios. Veamos, por ejemplo, qu ocurre cuando alguien decide modificar una clase definida en una biblioteca de clases propia. Obviamente, si el usuario est trabajando con una copia local de la biblioteca de clases, slo l va a percibir los cambios que est efectuando, dejando a un lado el problema que pueda suponer que haya otros usuarios modificando la misma clase en su copia local. Por tanto, se hace necesario utilizar alguna herramienta que permita el desarrollo en equipo y permita mantener una nica versin de cada fichero para todos los usuarios. La herramienta se llama Visual SourceSafe, y es el complemento ideal para el desarrollo en equipo con Visual FoxPro.

CREACIN DEL CONTROL DE PROYECTOS Para que un proyecto pueda ser incluido en el control de cdigo de origen proporcionado por Visual SoucerSafe, hemos de seguir los siguientes pasos (figura 2.12):
1. 2. 3. Activar el proveedor de control de cdigo de origen. Se activa en la pgina Proyectos del cuadro de dilogo Opciones. Elegir la opcin Agregar proyecto al control de cdigo desde el men Proyecto si ya exista y no estaba bajo control de cdigo de origen. Agregar automticamente nuevos proyectos. Mantener esta opcin activa por defecto si se desea que todos los nuevos proyectos que se creen queden bajo el control de cdigo.

Cuando se han completado estos pasos, se muestra el cuadro de dilogo de peticin de cdigo de usuario, clave y base de datos correspondiente a Visual SourceSafe. En el siguiente cuadros de dilogos, al usuario se le pide que introduzca el nombre del proyecto que se desea crear en VSS. Todos los proyectos agregados al control de cdigo de origen dependen del directorio raz identificado como $/ dentro de la base de datos actual que ha sido seleccionada previamente desde la ventana de Login. Visual SourceSafe analiza a continuacin el contenido del proyecto especificado, mostrando el cuadro de dilogo que aparece en la figura 2.15. La finalidad del mismo es mostrar todos los archivos presentes en el fichero PJX de VFP, dejando al usuario la posibilidad de eliminar determinados archivos que no deban ser procesados por el control de cdigo de origen. Al finalizar todo ese proceso, el proyecto queda incluido dentro del control de cdigo y todas las modificaciones que se hagan sobre l quedaran reflejadas en la base de datos de VSS. Todos los archivos que estuvieran relacionados en el proyecto de VFP quedarn, a partir de ese momento, protegidos, para evitar que cualquier usuario que no utilice el control de cdigo de origen pueda modificarlos por error.

COMPARTIR PROYECTOS CON VSS Es realmente sencillo compartir ficheros entre grupos de desarrollo y que todos los cambios que realice cada uno individualmente queden registrados. Lo importante es que, aunque no se puedan compartir proyectos PJX, cada desarrollador trabaje con su copia del proyecto y acceda a los ficheros compartidos desde este. Debido a la alta integracin que existe entre VFP y vss, cada vez que se aade un nuevo fichero al proyecto, queda registrado bajo el control de cdigo. Cada nuevo usuario que pretenda acceder al mismo proyecto ha de unirse al grupo de desarrollo de la siguiente forma:
Proteger el proyecto desde SourceSafe. Esto se hace as para que se pueda realizar una proteccin completa del proyecto en el directorio local. Para ello elija la opcin Ckeck In desde el men secundario al pulsar sobre el nombre de proyecto. Combinar proyecto de control de cdigo de origen. Esta opcin est situada en el men Archivo. Tras elegirla, se muestra el cuadro de dilogo. Hemos de introducir la siguiente informacin: o o Nombre del directorio local. Especificamos el directorio donde se van a realizar las copias de los proyectos y los ficheros relacionados. Proyecto de origen. Seleccione el proyecto desde el que se pretende realizar la copia.

Antes de realizar las copias, se muestra el cuadro de dilogo como confirmacin de los cambios que se van a realizar. En cuanto haya finalizado el proceso se

habr creado en el directorio local (C:\LOCAL), una copia del proyecto y todos los archivos relacionados del servidor (L:\MASTER). COMPARTIR FICHEROS DE UN PROYECTO ENTRE VARIOS USUARIOS Cmo compartimos los ficheros de un proyecto entre varios usuarios? Vamos a seguir las siguientes pautas:
Aadir nuevos archivos al proyecto. Cada vez que se aade un nuevo archivo al proyecto, entra a formar parte de proyecto generado en VFP Y VSS. Compartir los archivos del proyecto. Elija la opcin compartir Archivos del men Control de cdigo de origen, presente en Proyecto. Ver un cuadro de dilogo. Marque el proyecto de VSS del que desea compartir sus ficheros. En este caso, el proyecto se llama Admin, marque sobre l, y elija compartir (Share). Seguidamente se muestra un cuadro de dilogo que pide un nombre para el nuevo proyecto que se ha de crear, y a continuacin responda s cuando se le pregunte si desea crear el directorio. En este directorio se alojar el nuevo proyecto de VSS que contendr los archivos compartidos. Activar la opcin Agregar nuevos proyectos al cdigo de origen. De esta forma, todos los proyectos que se vayan creando sern controlados por VSS.

CONTROL DEL ESTADO DE UN FICHERO Cuando un miembro del grupo de trabajo se dispone a modificar un fichero incluido en un proyecto, ha de tener en cuenta el estado de ese fichero. Por ejemplo, si algn otro usuario est modificando un programa, si realiza modificaciones en este momento, ha de tener en cuenta que no ver las modificaciones del otro usuario hasta que ste lo cierre.

Estado Tilde Doble Tilde

Descripcin El archivo ha sido desprotegido en este proyecto. Por tanto, se puede volver a proteger desde ese proyecto. El archivo ha sido desprotegido en este proyecto y algn otro ms dentro del mismo grupo de desarrollo. Esto significa que hasta el ltimo usuario no haya protegido este fichero, no podr volver a proteger. El archivo ha sido desprotegido por otro usuario El archivo est protegido. Debe desprotegerlo para poder realizar modificaciones.

Figura Humana Candado

Flecha Flecha Cortada Signo de pregunta

El archivo ha sido combinado en base a varias versiones. Se puede proteger el archivo tras comprobar las modificaciones. El archivo se ha combinado, pero han aparecido conflictos que se han de resolver antes de proteger el archivo. En este caso no se puede determinar el estado del archivo.

TRABAJO DIARIO CON VSS El uso de VSS por parte de VFP es totalmente transparente de cara al usuario. Para crear, modificar o eliminar cualquier fichero incluido en el proyecto se han de seguir los mismos pasos que antes, sin ningn cambio aparente. Lo que ocurre es que, cuando intentamos modificar cualquier fichero, VSS nos advierte del cambio que vamos a hacer y nos pide desproteger el fichero (figura 2.22). Por qu? La razn es que cuando un proyecto se agrega al control de cdigo de origen, todos los ficheros de cdigo, exceptuando las bases de datos y tablas, quedan protegidos de slo lectura. Cualquier usuario que no forme parte del grupo de trabajo e intente modificar algn fichero no podr hacerlo a no ser que lo desproteja el fichero desde el sistema operativo. Usualmente, slo se permite a un usuario modificar un fichero, pero, de todos modos, se admite que varios usuarios modifiquen el mismo fichero. Es VSS el que se encarga posteriormente de combinar todas las modificaciones realizadas y obtener una versin final del archivo. Si un archivo est desprotegido, para el usuario que lo est modificando el smbolo que ver al lado del nombre del fichero ser distinto del usuario que estuviera modificando un proyecto compartido. ste vera una marca como la que aparece en la tabla indicando que existe otro usuario modificando el fichero en este momento. Para tener actualizados los estados de proteccin de cada fichero, se ha de pulsar F5.
Estado Candado Tilde Figura Humana Descripcin Protegido. Ningn usuario est haciendo modificaciones. Desprotegido. Usuario local. Protegido. Otros usuarios.

Cuando se realizan las modificaiones al fichero, se ha de volver a proteger, para que otro usuario pueda realizar los cambios que desee

Curso de Visual Foxpro

Tercer Captulo El Administrador de Proyectos (III)

CONTROL DE VERSIONES Entre el maremgnun de modificaciones realizadas por distintors programadores dentro de un grupo de desarrollo, es frecuente perder la pista a las que hace cada uno. Si alguien realiza un cambio y no lo comunica a los dems, pueden ocurrir pequeos desastres. Con VSS es posible seguir el rastro de todas las versiones, es decir, modificaciones, realizadas por todos los componentes de un grupo de trabajo. Para ver el historial de modificaciones de un fichero concreto, Pulse el botn derecho del ratn sobre el fichero y elija la opcin Mostrar Historial. Aparecer un cuadro de.

VER DIFERENCIAS Al elegir esta opcin, vamos a poder ver las diferencias existentes entre dos verciones. Esto quiere decir que veremos la vercin actual y la versin anterior al mismo tiempo. Para poder distinguir las diferencias, stas se marcan de distinto color. Veamos que cdigo de color se utilizan: Color Azul Rojo Verde Descripcin Lneas borradas. Lneas modificadas. Lneas insertadas.

En la parte superior de esta ventana vemos tres grupos de botones de comandos relacionados.

Botones

Descripcin Este primer grupo se utiliza para realizar bsquedas hacia delante y hacia atrs en todo el texto. Tiene una opcin muy interesante y es que permite marcar todas las lneas que contengan la cadena buscada. De este modo se puede hacer uso de estas marcas para ir directamente a ellas mediante el siguiente grupo de botones de comando.

El 1 Grupo

2 Grupo

Permiten marcar lneas para volver a ellas directamente sin tener que recorrer todo el cdigo. El primer botn permite marcar una lnea; los dos siguientes permiten ir a al marca anterior y posterior, repectivamente. El ltimo permite eliminar la marca actual. Ir a la anterior/siguiente diferencia.

3 Grupo

DISTRIBUCIN DE APLICACIONES Cuando la aplicacin ya est lista para ser distribuida, se genera un ejecutable y, mediante el asistente de instalacin, se generan los discos para su distribucin. Para ello necesitamos especificar un directorio de origen de la aplicacin, cuyo contenido se comprimir junto con las bibliotecas y ficheros del runtime de Visual FoxPro.

PASO 1. ENCONTRAR ARCHIVOS Para realizar correctamente la distribucin de una aplicacin, se han de copiar el archivo ejecutable y todos los que ste necesite en un directorio de distribucin. Considere que el ejecutable contiene todos los formularios, informes o mapas de bits marcados como incluidos en la aplicacin. Es conveniente, en informacin de proyecto, asignar un cono para identificar la aplicacin desde Windows. Tambin deber copiar en este directorio la basa de datos y las tablas relacionadas, as como todos los ficheros marcados como excluidos del proyecto. Posiblemente existan ficheros que no se incluyen directamente en un formulario o informe, y deber tener en cuenta que no se reflejan en el proyecto y, por tanto, no se guardan en el ejecutable. Ha de copiarlos tambin. Por ltimo, existen ficheros de aplicacin, bibliotecas de enlace dinmicos o controles OCX que tambin se han de copiar en el directorio de distribucin para que la aplicacin funcione correctamente una vez que se haya instalado en otro puesto de trabajo.

PASO 2. IDENTIFICAR COMPONENTES Existe un componente obligatorio que se ha de instalar siempre junto con la aplicacin la primera vez que se instala. Se trata del runtime de Visual FoxPro. Pero existen otros componentes adicionales que probablemente tambin se deban instalar. Veamos cuales son: Rutimes de Microsoft Graph 5.0. Se debe instalar si la aplicacin hace uso de este componente. Controladores de ODBC. Se han de instalar los componentes ODBC necesarios si se accede a otras fuentes de datos externas. Desde esta opcin se eligen los componentes pertinentes. Servidores OLE. En el caso de que la aplicacin contenga servidores OLE, se agregarn a esta lista aquellos que se tengan que registrar en el momento que se realice la instalacin en el cliente.

PASO 3. CREAR DIRECTORIO IMAGEN DE DISCO La forma en que se distribuye una aplicacin puede variar dependiendo del formato del soporte elegido para su distribucin. Actualmente se pueden usar disquetes de 3 1/2 y de 5 1/4 pulgadas, pero se va imponiendo el uso del CD-ROM como soporte; entonces, lo adecuado puede ser la opcin de instalacin en red.

PASO 4. ESPECIFICAR OPCIONES DE INSTALACIN Durante la instalacin se puede pedir informacin acerca de la empresa propietaria de los derechos de copia, as como el nombre de la aplicacin que se est instalando. Despus de realizar la instalacin, puede ser necesario configurar sta para su correcto funcionamiento o mostrar la informacin de los cambios realizados en la ltima instalacin. De esto se encarga el cuadro de texto inferior, que llama a un ejecutable inmediatamente despus de finalizar la instalacin. En este caso se ha puesto como ejemplo abrir el fichero leame.txt mediante el programa Bloc de notas (Notepad).

PASO 5. ESPECIFICAR DESTINO PREDETERMINADO En este paso se indica el directorio donde se va a instalar la aplicacin por defecto. Dependiendo del nivel de usuario requerido, se le puede dejar libertad de eleccin de grupo y directorio de trabajo.

PASO 6. CAMBIAR CONFIGURACIONES DE ARCHIVO Antes de finalizar definitivamente la generacin de los directorios de instalacin, vemos una lista de todos los archivos que se van a comprimir y distribuir. Veamos una cuadrcula con la lista de archivos: Columna Archivo Directorio de destino Descripcin Nombre del archivo. Ubicacin final del archivo. Admite tres posibles lugares: AppDir. Directorio de la aplicacin. Depender del nombre que le haya dado el usuario durante la instalacin.

WinDir. Directorio donde est instalado Windows. Depende del nombre que le haya dado el usuario en la instalacin de Windows.

WinSysDir. Directorio de sistema de Windows 95, llamado siempre System y dentro del directorio de

instalacin de Windows (Windir). Elemento del administrador de programas Activex Indica si el archivo crear un acceso directo en el grupo donde se ha instalado la aplicacin. Usualmente puede ser la aplicacin ejecutable, pero tambin puede llamarse a un editor de texto con el fin de editar las ltimas modificaciones, o un fichero de ayuda de la aplicacin. Cuando se incluya algn control Activex en el directorio de instalacin, ste es detectado como tal. Los controles Activex se instalan siempre en el directorio WinSysDir de forma automtica al instalar la aplicacin.

ELEMENTO DEL ADMINISTRADOR DE PROGRAMAS Trato aparte merece este tema, pues es bastante importante. La finalidad de esta casilla de verificacin es abrir un cuadro de dilogo con el que cumplimentar la informacin acerca de este archivo. Contiene tres cuadros de texto, cuyo significado se muestra a continuacin: Campo Descripcin Lnea de comando Descripcin Descripcin de la aplicacin. Aparece como descripcin de acceso directo en el grupo creado durante la instalacin. Especifica la lnea de comando del acceso directo. Se utiliza la macro %s como sustitucin del nombre del directorio de instalacin. Si se incluye una referencia concreta a un directorio que no coincide con el nombre que le a dado el usuario durante la instalacin, probablemente no funcione correctamente. Especifica el icono asociado al acceso directo. Es necesario que este icono est presente en el directorio de instalacin.

Icono

INFORME DE INSTALACIN El paso 7 permite la finalizacin del asistente e inicia la secuencia de compresin de archivo y distribucin en directorios. Los elementos de runtime de VFP se comprime en el directorio Distrib.Src situado a nivel de directorio de instalacin de VFP (por ejemplo, c:\vfp). De los componentes elegidos en el paso 2, se copiarn comprimidos en el directorio Compress, junto con los archivos comprimidos de la instalacin.

ESTRUCTURA DE DIRECTORIO DE DISTRIBUCIN Del directorio de distribucin parten varios subdirectorios importantes. Por una parte, el directorio Compress, que contiene todos los ficheros de la aplicacin, el rutime de Fox y los componentes elegidos. Por otra parte, los directorios de distribucin segn el dispositivo elegido. Se llama Disk12, Disk144 y Netsetup. Cada uno de ellos contiene los mismos ficheros que el directorio Compress, distribuidos segn sus necesidades de espacio. En este caso, la instalacin ha generado 4 disquetes de 5 1/4 y 4 disquetes de 3 1/2.

CREACIN DEL DIRECTORIO DE DISTRIBUCIN Para este cometido se puede utilizar una utilidad creada a tal efecto. Consiste en un formulario que, en base a un proyecto y un directorio de destino, copia todos los ficheros relacionados en el proyecto, incluyendo el ejecutable, en el directorio de destino. Para que el directorio de instalacin no contenga archivo fuente, se ha de incluir en el campo Comentarios del fichero que se desee incluir en la instalacin final un asterisco (*).

CmdAceptar.Click()
Local lExisteProyecto , ; lExisteDirectorio lExisteProyecto=FILE (THISFORM.cProyecto) lExisteDirectorio=Directory (THISFORM.cDirectorio) DO CASE CASE EMPTY (TH ISFORM.cProyecto) =MessageBox ([debe indicar un proyecto], 48, [error]) THISFORM.setFocus ([TXTPROYECTO]) RETURN CASE EMPTY (THISFORM.cDirectorio) =MessageBox ([debe indicar el directorio destino],; 48, [error]) THISFORM.SetFocus([TXTDIRECTORIO]) RETURN CASE !lExisteProyecto =MessageBox ([No Existe el proyecto solicitado],48, [error]) THISFORM.SetFocus([TXTPROYECTO]) RETURN CASE !lExisteDirectorio IF MessageBox ([No existe el directorio solicitado,; ]+CHR(13)+[Desea crearlo?],32, [Pregunta])= 1 MD (THISFORM.cDirectorio) ENDIF ENDCASE THISFORM.Instalar() THISFORM.Hide() THISFORM.Release()

Este evento se asegura de que no se produzca ningn error durante la introduccin de datos. Comprueba que se hayan introducido los nombres de proyecto y de directorio. Tambin comprueba que el proyecto exista, si es que se ha introducido desde el cuadro de texto. Y finalmente, se el directorio que el usuario especifica no existe, se le pregunta si desea crearlo.

THISFORM.Instalar()
* Declaracin de variables ******************************* LOCAL cNombre, cDestino * Activamos fichero de procedimientos ************************************** SET PROCEDURE TO UTILES * Inicializacin de variables ************************************** cNombre = SoloNombre (THISFORM.cProyecto) cRuta = ADDBS(SoloCamino(THISFORM.cProyecto)) cDestino = ADDBS(THISFORM.cDirectorio) * Nombre del fichero ejecutable ********************************* cEjecutable = cRuta + cNombre + [.EXE] * Abrimos el proyecto **********************

USE (THISFORM.cProyecto) IN 0 ALIAS Proyecto SELECT Proyecto * Copiamos el ejecutable ************************* COPY FILE (cEjecutable) TO (cDestino+cNombre+[.EXE]) * Si existe una base de datos * detectar si se ha de copiar tambin ************************************** LOCATE FOR TYPE=[d] IF FOUND() * Guardamos el nombre de la base de datos ****************************************** cBaseDatos = LEFT(PROYECTO.NAME,LEN(PROYECTO.NAME)-1) cDirDatos = SoloCamino(cBaseDatos) * Indica si la base de datos est * en otro disco *********************************** lDisco = [:] $ cBaseDatos * Indica si la referencia a la * base de datos es relativa ********************************* lRelativo = [..] $ cBaseDatos IF !lRelativo and !lDisco cDirBaseDatos = cRuta + addbs (cDirDatos) cDirBaseDatosDestino= cDestino + cDirDatos ENDIF MD (cDirBaseDatosDestino) * Copiamos el directorio donde est * la base de datos ************************************** COPY FILE (cDirBaseDatos + [*.*]) TO (cDirBaseDatosDestino) ENDIF * Cerramos el proyecto *********************** SELECT PROYECTO USE

Este mtodo realiza la copia de ficheros del directorio original en el de instalacin. Copia tambin las bases de datos y tablas relacionadas teniendo en cuenta el directorio donde estn. Se asume tambin que las bases de datos y tablas se encuentran en el mismo directorio.

Algunos trucos tiles para Visual Foxpro ( Parte 2)


Por Luis Mara Guayn - Tucumn - Argentina

P: Como hacer una busqueda incremental con un TextBox en un Grid? R: *---------------------------------------------------------------------* Para hacer una BUSQUEDA INCREMENTAL en un Formulario, debemos poner un * TextBox (Text1) y una Grilla (Grid1). * En el Entorno de datos insertaremos la tabla (MiTabla) * En el mtodo InteractiveChange del TexBox * escribir el siguiente cdigo: *---------------------------------------------------------------------*--- InteractiveChange --local lc, lnRecno Select MiTabla lc = allt(This.Value) lnRecno = recno() if MiTabla.Nombre >= lc

if not bof() skip -1 endif if MiTabla.Nombre < lc && debe quedar donde estaba if lnRecno <= recc() go recno() else go bott endif return endif if not empty(order()) && busqueda con indice seek lc else go top locate rest for MiTabla.Nombre=lc while MiTabla.Nombre <= lc nooptimize endif else locate rest for MiTabla.Nombre=lc while MiTabla.Nombre <= lc nooptimize endif if lnRecno # recno() ThisForm.Grid1.SetFocus && el nombre del TextBox ThisForm.Text1.SetFocus && el nombre del Grid endif return *--- END InteractiveChange --*---------------------------------------------------------------------* NOTA: SE DEBE TENER LAS SIGUIENTES CONSIDERACIONES: * -La tabla debe estar ordenada ASCENDENTEMENTE o existir un indice * por Nombre y estar seleccionado (el mtodo busca si hay un * SET ORDER establecido) * -Fijarte bien el nombre del TexBox y del Grid para invocar el * mtodo SetFocus (en el ejemplo Grid1 y Text1) * -Fijarte el alias de la tabla del grid (en el ejemplo MiTabla) * -Conviene que los nombres estn en maysculas y aadir en la * propiedad Format del TextBox = ! para que sean ingresados en maysculas * -Conviene que la propiedad del Grid RecordMark = .T. para que se vea * el registro marcado, o manejar el color del registro seleccionado *----------------------------------------------------------------------

Instrucciones de Manejo de Bases de Datos


CREATE DATABASE Crea una BD nueva y la activa automticamente. OPEN DATABASE Permite abrir una BD creada previamente El parmetro EXCLUSIVE posibilita que la BD se puede modificar independientemente del estado del comando SET EXCLUSIVE.

Otro parmetro comprueba la integridad de la informacin de la BD, VALIDATE. Es conveniente incorporarlo dentro de nuestra aplicacin cuando abramos la BD. Abrir una BD no implica que se carguen en memoria las tablas contenidas, sino que posteriormente debemos abrirlas mediante el comando USE. SET DATABASE Establece la BD activa en el caso de que tengamos varias en memoria. Tambin es posible esto utilizando la barra de herramientas Estndar de Visual Foxpro. MODIFY DATABASE Abre el Generador de BD para que se proceda a los cambios precisos. DELETE DATABASE Elimina una BD y las referencias que tengan las tablas contenidas con la BD. Es importante utilizar esta instruccin en vez de borrar los archivos directamente en el sistema operativo, ya que las cabeceras de las tablas seguirn teniendo informacin sobre la BD que las contena y al ir abrirlas nos saldr un error. Si queremos borrar la BD como las tablas contenidas podemos incluir el argumento DELETETABLES PACK DATABASE Despus de haber quitado una tabla de una BD, permanece el hueco de dicha tabla, ya que se realiza internamente un borrado lgico. Al igual que con los registros de una tabla, disponemos de la posibilidad de empaquetar los datos y borrar fsicamente las tablas. VALIDATE DATABASE Tiene la misma funcin del parmetro VALIDATE del comando OPEN DATABASE, y lo que hace es comprobar la integridad de la BD. Tiene un parmetro, RECOVER, que muestra ventanas de dilogo para localizar las referencias invlidas; ahora bien, slo se puede utilizar en la ventana de comandos, ya que en un programa dara error. CLOSE DATABASE Cierra la BD actual y sus tablas. Se especifica ALL, cierra todas las BD abiertas, junto a las tablas contenidas. Otra posibilidad para cerrar tablas, tanto contenidas como libres, es CLOSE ALL. DBC() Devuelve el nombre de la BD actual y su ruta de acceso. DBUSED()

Mediante esta funcin podemos saber si una BD est en uso DISPLAY DATABASE Muestra informacin sobre la BD (Diccionario de Datos)

Instrucciones de Manejo de Tablas dependientes


Display Tables / List Tables Permite saber cules son las tablas que se encuentran dentro de la BD, as como su ruta de acceso. Add Table Aade una tabla libre a una BD. Si queremos modificar el nombre para que sea de mayor longitud, podemos incluir la clusula NAME seguida del nuevo nombre. Remove Table Elimina una tabla de la BD que la contiene y la convierte en una tabla libre. Por tanto, perderemos todas las propiedades, indices principales, etc., as como relcaiones que se pudiesen haber creado con otras tablas. Si adems de quitarla de la BD deseamos eliminarla del disco, podemos poner el parmetro DELETE Free Table Es equivalente al comando anterior, pero se diferencia de ste en que no hace falta tener abierta la BD para converit en libre la tabla. Lo que hace es quitar la referencia de la cabecera de la tabla. No es conveniente utilizarlo cuando existe la BD, ya que puede ocurrir que la tabla quede daada. Slo es aconsejable cuando se ha borrado la BD y las tablas continan con la llamada a dicha BD Drop Table Elimina una tabla de la BD y tambin la borra del disco. Podemos incluir el argumento NORECYCLE para que no se quede en la papelera de Windows95 InDbc() Devuelve verdadero si el objeto por el que se pregunta se encuentra dentro de la BD activa. Se indica como segundo parmetro el tipo de objeto que es, bien TABLE, INDEX, FIELD, VIEW o CONNECTION.

Instrucciones Generales de Manejo de Tablas


Una vez que tenemos abierta la BD o cuando queramos manejar una tabla libre, debemos utilizar la siguiente relacin de instrucciones. Muchas de ellas todava son las mismas que estaban disponibles en los comienzos de Xbase. Use Es el comando de tablas por excelencia. Sin ningn tipo de parmetro, slo seguido del nombre de la tabla, permite abrirla. Se carga automticamente en el rea activa. Adems de ello, si existe un archivo de ndices, se abrir tambin junto a la tabla; ahora bien, sta no se ordenar salvo que se lo pidamos expresamente mediante el argumento ORDER TAG. Si deseamos que la tabla se abra en una determinada rea se lo podemos indicar mediante IN seguido del nmero de rea. Si lo que preferimos es que VFP tome la primer rea no asignada, pondremos el valor 0 (cero) en el nmero de rea. Las tablas se cargan en el rea con el nombre que tiene el archivo .DBF, si queremos cambiarlo podemos utilizar el parmetro ALIAS seguido del nuevo nombre. Lo normal es no complicarse la vida y dejar tal cual. Para abrir una tabla de forma exclusiva podemos incluir EXCLUSIVE. Para hacerlo de manera compartida tenemos el parmetro SHARED. Un ejemplo tpico podra ser: USE tabla ORDER TAG codigo IN 0 Select Una vez que una tabla est abierta tenemos dos formas de hacer referencia a sus campos, bien mediante el alias un punto y el nombre del campo (tabla1.codigo) o situndonos previamente en el rea de la tabla correspondiente y llamando al campo directamente con su nombre. Para cambiar de rea tan slo hace falta acompaar el SELECT con el nmero de rea, o bien, poner el alias de la tabla. Como regla general para la programacin, no es muy aconsejable abusar de los SELECT, ya que ralentizan la ejecucin de los programas. Siempre que podamos sustituirlo por otro otro tipo de comandos, sobre todo SQL, no debemos dudarlo. Append Blank Permite crear un registro registro nuevo. Si queremos crearlo en una tabla que no es la de rea activa, podemos incluir el argumento IN como se hace en el USE. Si es posible, es mejor utilizar el comando INSERT INTO, ya que sustituye tanto al APPEND BLANK como al REPLACE.

Replace Este comando permite modificar la informacin de cada campo de una tabla. Su sintaxis es: REPLACE campo WITH datos Se pueden concatenar varios campos mediante comas. Esto es lo correcto, no debemos repetir el REPLACE. Cada uno de ellos produce un bloqueo de red, lo que ralentiza el programa. Si es posible, es mejor utilizar el UPDATE SQL. Delete Borra de manera lgica el registro donde est situado el puntero en la tabla. Es posible borrar selectivamente mediante los argumentos FOR o WHILE. Asimismo podemos borrar todos los registros mediante DELETE ALL. Tambin podemos utilizar el IN al igual que en comandos anteriores. Para trabajar slo con registros no marcados para borrar debemos utilizar el comando SET DELETE ON. Recall Recupera un registro borrado lgicamente. Como en el DELETE podemos recuperar todos los registros mediante ALL o algunos con el FOR o el WHILE. Pack Elimina fsicamente todos los registros con la marca de borrado y actualiza el archivo de ndices, as cmo los archivos .FPT que contienen los campos memo. Es importante es ltimo, ya que los campos memo de los registros borrados pueden ocupar mucho espacio. NO se debe utilizar en ningn caso el comando ZAP para eliminar todos los registros, ya que no borra los campos memo asociados.

Instrucciones de Bsqueda en Tablas


Skip Avanza o retrocede secuencialmente tantos registros como se le indique. Hay que controlar en todo momento que el retraso y el avance no desborden el principio del fichero y el final. Para ello, podemos utilizar las dos funciones siguientes. Bof() Devuelve .T. si se ha encontrado el principio de fichero, esto es, que el puntero est ms all del primer registro.

Eof() Devuelve verdadero al llegar el puntero al final del fichero, cuando est ms all del ltimo registro. Go Permite ir directamente a un registro, bien sea mediante su nmero de registro, o bien, al primer registro con GO TOP o al ltimo, GO BOTTOM. Siempre teniendo en cuenta el orden fsico en el caso de ir a un registro segn su nmero. En el caso de TOP y BOTTOM depender del orden de la tabla. Este comando permite mover punteros en otra rea mediante la clusula IN. Seek Realiza una bsqueda directa de un valor dentro del archivo de ndices, situndose el puntero en ese registro en el caso de encontrarse, o bien accediendo al final de fichero en caso contrario. Found() Permite saber si un determinado valor buscado se ha encontrado o no. Se debe poner justo despus de la instruccin de bsqueda. Seek() Sustituye a las dos instrucciones anteriores y al SET ORDER, lo que le convierte en una funcin altamente til y que debemos implementar en nuestro cdigo siempre que sea posible. Un ejemplo podra ser: IF SEEK("001", "tabla1","codcod") ?"Encontrado" ENDIF Donde "001" es el valor buscado, "tabla1" es la tabla donde se busca y "codcod" el tag por el cul se va a realizar la bsqueda. Por tanto, no hace falta ordenar previamente la tabla por este ndice. Se la funcin devuelve .T. es que se ha encontrado el valor. Do While Este bucle, clsico donde los haya, permite realizar una bsqueda en toda la tabla de sigueinte forma DO WHILE !EOF() SKIP ENDIF

Avanza por toda la tabla hasta que encuentra el final de fichero. Scan Equivalente al bucle anterior, y mucho ms prctico, es el SCAN, que adems de recorrer automticamente toda la tabla permite filtrar la bsqueda mediante las clusulas FOR y WHILE. Es importante saber por qu registro comienza la bsqueda. En el caso del SCAN sin ms, siempre empieza desde el primer registro. Sin embargo, con el WHILE empezar desde el registro donde est situado el puntero en ese momento. Tambin es fundamental volver al rea de la tabla sobre la que se est haciendo el SCAN si nos hemos situado en otra dentro del bucle para realizar alguna operacin. Tampoco debemos mover nosotros el puntero dentro de l, ya que puede causar prdidas de informacin. Para salir del bucle repentinamente podemos incluir el comando EXIT. Si lo que queremos es saltar a la condicin emitiremos un LOOP.

Instrucciones de Clculos en Tablas


En relacin con los recorridos de las tablas y directamente relacionados con ellos, estn los comandos que realizan clculo para un nmero determinado de registros. Realmente podramos sustituir por el comando SELECT-SQL, con funciones de grupo. Average Realiza la media de un campo o campos correspondientes a una serie de registros, determinados por la clusula FOR o WHILE que se incluya. Se puede mandar el resultado a una variable o varias dependiendo de los campos promediados. Sum Equivale al anterior pero realiza una suma Count() En este caso, esta instruccin cuenta registros dependiendo del ndice y del estado de eliminacin. Reccount() Si queremos obviar el estado de los registros, podemos utilizarlo. Por lo dicho, contar todos los registros. No se pueden incluir clusulas FOR y WHILE. Se puede incluir el rea o el alias de la tabla a contar entre parntesis.

El Sistema de Almacenamiento en Buffer

Bsicamente, consiste en la creacin automtica de un espacio de memoria destinado a guardar el o los registros que se estn editando sin que tengamos que realizar ningn tipo de movimiento a ese buffer ni poner una sola lnea de programa. El proceso est generado internamente por el VFP. Lo nico que debemos hacer es comprobar si se ha producido alguna modificacin por parte del usuario y, por ltimo, guardar o descartar los cambios. El sistema de almacenamiento en buffer permite, adems de facilitar el mantenimiento de las tablas, poder controlar el funcionamiento en red. Existe la tcnica de bloqueo en cuanto se produce una modificacin, que es lo que llamamos bloqueo pesimista; o por otro lado , dejar absoluta libertad a los usuarios de la red bloqueando slo a la hora de grabar, que es lo que se llama bloqueo optimista. VFP dispone de tres buffer para guardar los datos: 1er buffer, contiene los valores que el usuario est viendo en pantalla 2do buffer, guarda la informacin original que tena la tabla 3er buffer, almacena el valor ms reciente recibido de la red. El almacenamiento en buffer se activa a travs de la funcin CURSORSETPROP(). Por cada tabla que vayamos abriendo tendremos que poner un CURSORSETPROP. La sintaxis vara dependiendo del tipo de almacenamiento que deseemos, siguiendo el formato: CURSORSETPROP("Buffering", <tipo de almacenamiento>) En tipo de almacenamiento podremos indicar cinco tipos: Valor
1 2

Significado
No se activa el almacenamiento en buffer, por tanto no lo utilizaremos El bloqueo ser a nivel de registro y pesimista. El registro permanecer bloqueado hasta que se grabe la modificacin. El bloqueo tambin tiene lugar a nivel de registro, aunque optimista. Por lo tanto, se produce el bloqueo cuando se actualiza la modificacin o se produce un desplazamiento a otro registro Bloqueo pesimista a nivel de tabla. Funciona igual que a nivel de registro Bloqueo optimista a nivel de tabla. Se produce cuando se actualizan las modificaciones

4 5

Para todos los casos debemos tener, adems del acceso no exclusivo ( SET EXCLUSIVE OFF), el SET MULTILOCKS ON. Despus de incluir esta introduccin ya podremos aprovecharnos de las bondades del sistema.

Cmo comprobar si ha habido modificaciones Cuando se utiliza el buffer a nivel de registro utilizaremos la funcin GETFLDSTATE() Sintaxis: =GETFLDSTATE(<nombre o No. de campo>, <alias>) o tambin: =GETFLDSTATE(-1, <alias>) El 1 es para saber todos los estados de los registros. Los valores que nos puede devolver son:
Valor 1 2 3 Significado El campo no ha sido modificado ni eliminado Ese ha editado el campo o ha cambiado el estado de eliminacin No se ha editado el campo de un registro aadido o no ha cambiado el estado de eliminacin del registro aadido ( o sea se inserto el registro en blanco y no introdujo informacin ) Se ha editado el campo de un registro aadido o ha cambiado el estado de eliminacin para el registro aadido

El cdigo tpico para saber si ha habido algn tipo de modificacin sobre la registro actual sera: IF "2"$GETFLDSTATE(-1) OR "3"$GETFLDSTATE(-1) ; OR "4"$GETFLDSTATE(-1) =MESSAGEBOX("Ha habido alguna modificacin") ENDIF

Cuando se utiliza el buffer a nivel de tabla utilizaremos la funcin GETNEXTMODIFIED() , que devuelve el nmero del primer registro que encuentra modificado. La bsqueda se da a partir del parmetro <No. de registro>. Sintaxis: =GETNEXTMODIFIED(<No. de registro>,<alias>) Cmo actualizar la tabla El ltimo paso ser guardar o descartar las modificaciones. Para ello se dispone de dos funciones: TABLEUPDATE() y TABLEREVERT(). Hay que recordar que visualmente estamos trabajando sobre una tabla intermedia y que esa informacin ha de ser volcada a la tabla fsica. Este paso vara dependiendo del tipo de almacenamiento que hayamos designado. TABLEUPDATE() Sintaxis: =TABLEUPDATE(<nmero de filas>, <forzar actualizacin red>, <alias>, <array para error>) Al actualizar la tabla fsica le podemos decir que lo haga slo para el registro en el que se est o para todos los registros de la tabla. El primer parmetro est destinado a este fin. Los valores que puede tomar son: <nmero de filas>
Valor 0 Significado Por defecto. Se actualiza el registro en el que est el puntero sea cual sea el tipo de almacenamiento Se actualizarn todos los registros si el almacenamiento es a nivel de tabla y slo el registro actual si el almacenamiento se estableci a nivel de registro Igual funcionamiento que el valor 1 pero en este caso VFP no emite un error si la actualizacin no termin con xito.

<forzar actualizacin red> Este parmetro se utiliza para forzar la actualizacin en red en el caso que dos usuarios estn modificando el mismo registro ( en el caso del buffer optimista) TABLEREVERT() Sintaxis:

=TABLEREVERT(<todas las filas>,<alias>) Tendremos que poner .T. para que se produzca el descarte de los cambios realizados en todos los registros

Transacciones
Una de las mejoras que se han implementado en esta nueva versin es la posibilidad de controlar de manera ms precisa, y sobre todo robusta, el paso de informacin entre el servidor y los clientes, referida naturalmente al grave problema que surge cuando falla la conexin entre los dos en el preciso momento en que est actualizando una determinada informacin. Este problema se evita con el control transaccional. En VFP consiste en incluir dentro de un BEGIN TRANSACTION y un END TRANSACTION la serie de comandos que realizan la actualizacin requerida. Si por cualquier causa se corta la conexin sin haber finalizado la transaccin, sta no se realiza. Por tanto, tendremos las tablas como antes del corte, esto es posible gracias a que los cambios se van guardando en memoria hasta que llega el END TRANSACTION, que es cuando se vuelca de golpe toda la informacin. Otros lenguajes permiten continuar la transaccin donde se par, VFP no; pero es ms que suficiente. Tambin es posible suspender la transaccin si encontramos una razn para ello, como puede ser que una tabla est bloqueada. Entonces bastar con enviar un comando ROLLBACK para restaurar todas las tablas con los valores previos a la transaccin. No es conveniente abusar de las transacciones ya que stas bloquean todas las tablas que participan en la misma, por lo que ningn usuarios de la red podr acceder a ellas. Slo debemos utilizarla si cuando vayamos a actualizar la informacin de varias tablas, y una de ellas no tenga los valores correctos, implique un grave perjuicio para los clculos de la aplicacin. Nunca debemos usarlas para la actualizacin de una tabla.

Você também pode gostar