M anualde Program ación en Foxpro Por Angel Luis Almaraz Gonzalez www.microshopnet.net
[email protected] ElFoxpro en m odo program ación,es la form a com o se puede almacenar un conjunto de órdenes en un archivo llam ado program a,elcualposteriorm ente será ejecutado.
Orden MODIFY COMMAND Propósito : Perm ite creary editarun program a en Foxpro (con extensión .PR G ), o tam bién cualquierarchivo de texto. Sintaxis : MODIFY COMMAND [D:][CAMINO]NOMBRE[.EXT] Si la unidad y el camino no son especificados, se asumirá la unidad y camino por defecto.cuando se usa Modify Command, Foxpro busca el archivo indicado; si el archivo no existe entonces se crea uno, de lo contrario éste será editado. Cada vez que un archivo es grabado la versión previa es grabado en un archivo de seguridad con extensión .BAK. Al crear un programa, para grabarlo presionaremos las teclas [Ctrl]+[W]. Si desea salir sin grabar presionaremos la tecla [Esc].
Orden DO
Propósito : Permite ejecutar un programa anteriormente creado. Sintaxis : DO [D:][CAMINO]NOMBRE[.EXT]
Orden TYPE Propósito : Permite visualizar el contenido de un archivo programa. Sintaxis: TYPE[D:][CAMINO]NOMBRE[.EXT]
ESTRUCTURA DE UN PROGRAMA Preámbulo Contiene informacion tal como: el nombre del programa, que hace, quién lo escribió, la fecha y una breve historia sobre su edición. Ejemplo: *--------------------------------------------------------------------------------------* *PROGRAMA : STOCK.PRG *DESCRIPCION: CONTROL DE STOCK *AUTOR : LUIS LOZADA PORTAL *FECHA : 05 DE NOVIEMBRE DE 1998 *--------------------------------------------------------------------------------------* Area de Seteos Define los comandos SET que el programa necesita para trabajar eficientemente. En esta parte se puede especificar la relaciones entre las bases de datos, activar los archivos indexados así como inicialización de las variables de memoria, etc. Ejemplo: SET STATUS off SET HEADING off USE personal ORDER codi NUM=0 Cuerpo de Programa Contiene los comandos que hacen trabajar al programa. Ejemplo: LOCATE FOR apel="VARGAS" DISPLAY nomb,apel,sbas Sección de Cierre Aquí se cierran las bases de datos y se restablecen los valores de los comandos SET. Ejemplo: USE SET STATUS on SET HEADING on RETURN
ORDENES DE ENTORNO Para modificar el entorno de Foxpro y ajustarlo a nuestras necesidades, debemos usar las órdenes Sets denominadas también Seteos.La opción por defecto está en mayúscula. Sintaxis
SET STATUS on/OFF
SET HEADING on/off
Propósito
Activa la línea de estado.
Muestra el nombre de los campos cuando se usa las ór LIST o DISPLAY.
SET TALK on/off
Muestra los mensajes interactivos que retornan órdene Replace, Index, Copy, Calculate, Locate, etc.
SET BELL on/off
Emite un sonido cuando el cursor alcanza el final de un
SET SCOREBOARD on/off
Muestra el estado de las teclas CapsLock, Ins y Numlo fila cero cuando se desactiva la línea de estado.
VARIBLES DE MEMORIA
Definición : Son espacios de memoria que permiten almacenar datos temporalmente fuera de la estructura de la Base de Datos. Estos espacios de memoria poseen un nombre que los identifica y quedan definidos según el dato que almacenan. CREACION DE VARIABLES Ejemplos: Variable cuyo nombre es CLASE de tipo carácter y cuyo cont CLASE="FOXPRO" "FOXPRO". NUM=0
Variable cuyo nombre es NUM de tipo numérica y cuyo conte 0.
FEC={10/19/78}
Variable cuyo nombre es FEC de tipo fecha y almacena la fech Octubre de 1978.
VAR=.T.
Variable cuyo nombre es VAR de tipo lógico con un estado de .T..
Orden DISPLAY MEMORY
Propósito : Lista las variables de memoria. Sintaxis : DISPLAY MEMORY [TO PRINTER] LIST MEMORY[TO PRINTER] Se debe evitar que el nombre de una variable sea igual al nombre de un campo o de un comando resrevado por FOXPRO.
Orden STORE Propósito : Permite asignar un dato a un conjunto de variables. Sintaxis: STORE [DATO] TO [LISTA DE VARIABLES] Ejemplo: Si desea inicializar con 0 a las variables N1, N2 y N3, procederíamos de la siguiente manera: N1=0 N2=0 N3=0 Mejor hubiera sido inicializar simultáneamente el 0 a éstas variables, así: STORE 0 TO N1, N2, N3
Orden WAIT Propósito : Permite detener la ejecución de un programa y espera el ingreso de información proveniente del teclado. Sintaxis : WAIT [expresión] [WINDOW][TIMEOUT(expN)] Donde: expresión : Es un mensaje ilustrativo para el usuario. Si se omite, FOXPRO enviará el mensaje por defecto, que es: "Press any key to continue..." WINDOW : Se utiliza para enviar el mensaje dentro de una ventana de mensajes, en la esquina superior derecha. TIMEOUT expn : Es el tiempo en segundos que estará la orden WAIT sin que se reciba información. Ejemplos: 1.Para detener la ejecución de un programa, ingresemos la orden WAIT en cualquier parte del programa, así: WAIT el programa cuando ejecute la orden WAIT enviará el mensaje por defecto: Press any key to continue... 2.Si sedesa especificar un mensaje diferente con la orden WAIT, como por ejemplo:
WAIT "Presione ENTER para seguir..." el programa mostrará exactamente dicho mensaje al momento de ejecutar dicha orden, así: Presione ENTER para seguir...
Orden @...SAY...GET Propósito : Permite editar una variable o un campo en una posición de la pantalla, permitiendo su modificación. Para activar los GETS definidos previamente se debe hacer uso del comando READ. Sintaxis : @F,C[SAY "mensaje"][GET(variable|campo)][PICTURE(formato)] Donde: F : Es el número de fila en le rango 0 - 24. C
: Es el número de columna en le rango 0 - 79.
mensaje
: Es un mensaje que ayuda al usuario a ingresar el dato desde el teclado.
variable|campo :
Variable o campo a editar.
Picture : Permite establecer un formato de entrada o de salida para los datos, además de restringir el tipo de dato que puede ser ingresado a un campo o variable de memoria. Formato : Especifica un formato mediante el cual se deben ingresar los datos. El formato puede consistir de una función o una máscara y debe estar delimitada por comillas.
Orden READ Propósito : Permite activar uno o más @...SAY...GET. Sintaxis : READ
Formato para Capturar o Presentar Datos Es la manera como se pueden ingresar o presentar los datos en pantalla usando la orden @...SAY...GET. Si se utiliza PICTURE (Máscara) se llama Máscara. Si se utiliza PICTURE (Función) se llama Función.
Máscara
Descripción
A N ! 9
Permite el ingreso de sólo letras para datos carácter (cada A es para representar un sólo caracter). Permite el ingreso sólo de letras y dígitos para datos tipo carácter. Convierte la minúscula a mayúscula (cada símbolo es para un carácter). Permite el ingreso de sólo dígitos para datos tipo carácter y dígitos y signos para datos númericos.
Descripción
Función A ! E Z M
Sólo carácteres de tipo alfabético. C onvertira m ayú sculas todos los carácters alfabéticos. Formato de fecha Europeo (dd/mm/aa). Sustituye con espacios un campo con valor igual a 0 (cero) Perm ite la creación de una lista de opciones m ú ltiples,las m ism as que se deben separar por comas.
Una función se usa anteponiéndole el símbolo @ Clausula COLOR en @...SAY Sintaxis: @F,C SAY "Expresión" COLOR Donde: Expresión: Puede ser una combinación de campos, variables de memoria, operadores, funciones, mensajes, etc. Si se necesita mostrar en pantalla mas de una expresión, se deberá convertir todas las expresiones a carácter y luego conctenarlas. De número a carácter usando STR( ) o de fecha a carácter usando DTOC( ) o DTOS( ). COLOR (color): Se usa para reportar los datos de una expresión con un color diferente al estándar.
COLOR
PROPOSITO
I
Video Inverso
U
Subrayado
X
Vacío (usado para elingreso de claves)
W
Blanco
N
Negro
W/N
Video Normal
B
Azul
BG
Cyan
G
Verde
GR
C afé
GR+
Amarillo
R RB
Rojo Magenta
*
Parpadeante
+
Alta intensidad
Los Símbolos+ o * se deben utilizar después de especificar el color para la expresión, así: Color W/N+
Orden @...BOX Propósito : Permite dibujar un recuadro en la pantalla. Sintaxis :
@f1,c1,f2,c2 BOX [(expresion)] Donde: f1, c1 f2,c2
: Coordenadas del primer punto ubicado en la esquina superior izquierda. : Coordenadas del segundo punto ubicado en la esquina inferior derecha.
Expresión
: Especifica los caracteres que formarán el cuadro.
Cuando no se especifica la expresión después de Box, se crea un recuadro de línea simple.
Orden @...CLEAR Propósito : Permite borrar un sector de la pantalla. Sintaxis : @f1,c1 [CLEAR( TO f2,c2)]
Orden @...FILL Propósito : Permite cambiar los colores de una detrminada área de la pantalla. Sintaxis : @f1,c1 FILL TO f2,c2 [COLOR(color)] Ejemplo: 1. @5,10 FILL TO 15,40 COLOR R
ESTRUCTURAS CONDICIONALES Una estructura condicional es aquella que al evaluar una condición realiza una determinada acción.
Orden IF...ENDIF Propósito : Permite ejecutar una sección del programa evaluando una condición. Sintaxis 1: IF
Bloque de Ordenes ENDIF Sintaxis 2: IF Bloque de Ordenes1 ELSE Bloque de Ordenes2 ENDIF IF ANIDADOS Se denomina así cuando se usa simultaneamente varias estructuras condicionales IF. Sintaxis 3: IF Bloque de Ordenes1 ELSE IF Bloque de Ordenes2 ELSE Bloque de Ordenes3 ENDIF ENDIF Función FOUND( ) Propósito: Un valor verdaero, si la búsqueda con SEEK tuvo éxito, en caso contrario reporta falso. Sintaxis: Found ( ) Ejemplo: Hacer un Programa que permita eliminar registros de la base de datos "Alumnos" USE Alumnos Order codi Cod=spac(6) @5,10 SAY "Ingrese Codigo:" GET cod PICT "@!AAAA99" read SEEK cod IF FOUND( )
*Tuvo éxito la bú squeda* Delete Pack
ELSE @10,10 SAY "Codigo No Registrado" ENDIF WAIT USE ...
Función SEEK( ) Propósito: Retorna verdadero si la búsqueda. con SEEK fue exitosa, caso contrario reportará falso. Sintaxis: SEEK ( ) Ejemplo: Hacer un Programa que permita ingresar registros de la base de datos "Alumnos" USE Alumnos Order codi Cod=spac(6) @5,10 SAY "Ingrese Codigo:" GET cod PICT "@!AAAA99" read IF SEEK (cod)
*Tuvo éxito la bú squeda*
@10,10 SAY "codigo ya Existente" ELSE : Pedir todos los datos : APPEND BLANK REPLACE : ENDIF
Orden DO WHILE Propósito : Permite la ejecución de un grupo de ordenes mientras que la condición sea cierta. Sintaxis : DO WHILE : : [LOOP] [EXIT] ENDDO Donde: LOOP
: Regresa a evaluar la condición.
EXIT : Direcciona la salida con el DO WHILE hacia la siguiente orden que siga a ENDDO.
Bucle Infinito DO WHILE .T. ?"FOX" ENDDO Ingresa en pantalla la palabra FOX infinidad de veces. Para detener ésta impresión presionar la tecla ESC. Bucle Infinito X=0 DO WHILE X