Vous êtes sur la page 1sur 21

Close Ad

GUIA DE FOXBASE
INTRODUCCION. QU ES UN ARCHIVO? Es un conjunto de registros que contienen informacin relativa a un conjunto de individuos u objetos y se almacenan como una unidad en los dispositivos de almacenamiento secundario de la computadora (disquetes disco duro). QU ES UNA BASE DE DATOS? Es una almacn de datos formalmente definido y exactamente controlado para ser usado en muchas aplicaciones diferentes. Hay dos enfoques para el almacenamiento de datos en un sistema basado en computadora. El primero consiste en guardar los datos en archivos individuales, cada uno de ellos nico para una aplicacin particular. El segundo enfoque involucra la construccin de una Base de Datos. Para comprender mejor cada uno, se comparan a travs de la siguiente tabla: SISTEMA DE PROCESAMIENTO DE ARCHIVOS Datos separados y aislados. Puesto que cada archivo almacena informacin especfica y se procesa de manera independiente. Si se requiere relacionar dos archivos los analistas y programadores debern decidir cul es la relacin, qu partes de cada archivo son necesarias y coordinar el procesamiento para que se presenten los datos correctos. Y si fueran ms de dos archivos? SISTEMA DE PROCESAMIENTO DE BASE DE DATOS Datos integrados. Aqu existe lo que se denomina Sistema Manejador de Base de Datos (DBMS) y los datos se almacenan en un medio sencillo llamado Base de Datos. Un programa de aplicacin puede ordenar al DBMS que acceda los datos del cliente, los datos de ventas o ambos. Es decir, el programador de la aplicacin slo especfica cmo debern combinarse los datos y el DBMS realiza las operaciones necesarias para conseguirlo. Duplicacin de los datos. Ocurre Menos duplicacin de los datos, cuando la informacin est debido a que cada grupo de datos se almacenada en archivos almacena en un solo lugar (clientes, independientes no relacionados. ventas, ...) resultan menos comunes los problemas de integridad de los datos; hay menor oportunidad de

Dependencia del programa de aplicacin. Esto ocurre porque el formato fsico de los archivos y registros son parte del cdigo de aplicacin; por lo tanto cuando se requiere hacer un cambio en los formatos de archivo, tambin deben modificarse los programas de aplicacin. Archivos incompatibles. Cada lenguaje tiene un formato especfico para sus archivos. As los archivos de Cobol no pueden combinarse o compararse con facilidad con los archivos en C, por ejemplo.

discrepancia entre las mltiples copias de los mismos elementos de datos. Independencia programa/datos. Los formatos de los registros se almacenan en la misma Base de Datos junto con los datos y son accedidos por el DBMS y no por los programas de aplicacin.

Fcil representacin de la vista de datos del usuario. Permite que los usuarios construyan su vista personal de los datos sin preocuparse por la forma en que estn fiscamente guardados los datos.

EN QUE CONSISTE EL MODELO DE BASE DE DATOS RELACIONAL? Es una forma particular de estructurar y procesar una Base de Datos. Para ello se basa en el Modelo Entidad Relacin; el cual se emplea para interpretar, especificar y documentar los requerimientos para sistemas de procesamiento de Base de Datos y se desarrolla a partir de un anlisis de requerimientos de los usuarios. Estos requerimientos se expresan en Tablas Entidades que requieren serNormalizadas para garantizar que cada tabla entidad tenga informacin de un slo tema. CULES SON LOS TIPOS DE RELACIONES VALIDOS? Partiendo de que el modelo de Base de Datos Relacional utiliza el Modelo Entidad Relacin, se explican, a continuacin, los tipos de relaciones que se pueden establecer entre archivos: RELACION 1:1: Este tipo de relacin implica que una entidad se relaciona de manera nica con otra entidad. Ejemplo: si tenemos la entidad EMPLEADO y EXTENSION TELEFONICA, la relacin entre estas dos es 1:1 puesto que a un empleado le corresponde slo una extensin telefnica. RELACION 1:N: Implica que una entidad puede relacionarse de manera nica con varias ocurrencias de otra entidad. Ejemplo: supongamos dos entidades DEPARTAMENTO y EMPLEADO, establecemos que un departamento puede tener varios empleados; pero un empleado slo puede pertenecer a un departamento por lo tanto la relacin es de 1 a muchos. El orden en este tipo de relacin es importante. La diferencia entre las relaciones 1:N y N:1 sucede debido a la diversa naturaleza de la entidad primaria que siempre aparece en la parte superior. RELACION N:M: En este caso varias ocurrencias de una entidad se relacionan con varias ocurrencias de otra entidad. Ejemplo: Entidades VUELO y

PASAJERO; un vuelo puede llevar muchos pasajeros y un pasajero puede tener muchos vuelos en su itinerario. QU ES EL FOXBASE? Es un lenguaje de programacin gestor de Base de Datos. Se considera de alto nivel porque sus instrucciones son escritas con palabras similares a los lenguajes humanos en general Ingls -, lo que facilita la escritura y fcil comprensin del programador.

CREACION DE LA BASE DE DATOS Y MANEJO. Antes de iniciar el trabajo con algunas rdenes de Foxbase; establezca su directorio de trabajo. Para ello siga estas instrucciones: a.- Cree, en su disquete, un subdirectorio con las iniciales de su nombre: A:\> MD ABCD () b.- Ubquese en el nuevo directorio: A:\> CD ABCD (). c.- Cargue el Foxbase : C:\> fox (). d.- Desde el punto indicativo de Foxbase, establezca la ruta por defecto: Set defa to A: e.- Establezca la ruta para buscar rdenes del Foxbase: Path C:\foxbase. Una vez establecido el ambiente de trabajo, se describirn una serie de rdenes que se ejecutarn desde el punto indicativo del Foxbase. Creando tablas: CREATE: Esta orden crea un nuevo archivo de Base de Datos y define su estructura. Sintaxis: CREATE nombre-archivo. Cuando se ejecuta esta orden se crear un archivo de base de datos con ese nombre; la extensin del nombre del archivo (.DBF) se aade automticamente. A continuacin proceda a crear las siguientes tablas:

CLIENTE.DBF Codcli C(6) Nomcli C(30) Cedula C(12) Telef C(12)

FACTURA.DBF Nrofact C(6) Codcli C(6) Fecha D(8) Montof N(12.2) Abonof N(12.2)

TRANSAC.DBF Nrofact C(6) Fecha D(8) Monto N(12.2) Referen C(16)

Una vez que usted haya escrito la orden CREATE desde el punto indicativo y establecido la estructura del archivo; el foxbase le preguntar si desea agregar registros, responda Y(es) y agregue informacin. Repita el proceso para cada archivo. Creando Indices: Un archivo ndice es una ordenacin virtual de la base de datos asociada, ya que ninguno de los registros en la base de datos asociada

est ordenado. As como el ndice de un libro es una seccin separada que indica dnde est localizada la informacin, unarchivo ndice del Foxbase es un archivo aparte que contiene informacin sobre la localizacin de registros individuales en la base de datos asociada. Para ello el archivo ndice consiste en al menos un campo de la base de datos asociada, acompaado del nmero de registro que corresponde a ste campo en la base de datos. La orden que permite crear un archivo ndice es: INDEX ON Sintaxis: INDEX ON nombre-campo TO nombre-arch-indice Proceda, ahora, a indexar el archivo cliente.DBF, creado anteriormente, ejecutando la siguiente secuencia de ordenes: USE CLIENTE INDEX ON CODCLI TO ICLICOD En primer lugar, se activ (puso en uso) el archivo que se quiere indexar (cliente) y luego se ejecut la orden de indexacin sobre ese archivo. El campo por el cual se index es cdigo de cliente y el nombre del archivo ndice creado es iclicod. Ntese que el nombre del archivo ndice procura establecer a qu archivo pertenece y por cul campo se index. Para observar los cambios producidos escriba LIST y observe la disposicin de los registros del archivo. Abriendo Archivos: Como se mencion previamente, la orden que permite abrir un archivo y ponerlo en uso, es USE. Sintaxis: USE nombre-archivo INDEX lista-arch-indice Observe que si un archivo de base de datos ya posee ndice, sta orden permite que se abran tambin los ndices asociados a dicho archivo. Ejemplo: supongamos que el archivo de cliente tambin se encuentra indexado por nombre de cliente; la orden use correspondiente sera: USE CLIENTE INDEX ICLICOD, ICLINOM. Abriendo Indices: En muchos casos usted crear y trabajar con ms de un archivo ndice para un archivo de base de datos. Pero slo puede trabajar con un archivo ndice cada vez. Si se listan ms de un archivo ndice con SET INDEX, todos ellos sern abiertos, pero slo el primero ser el activo. La orden SET INDEX convierte un archivo inactivo en activo. Sintaxis: SET INDEX TO nombre-arch-indice. Editando Archivos: APPEND: Esta orden aade registros a la base de datos. Cuando se ejecuta sta orden, se visualiza un registro en blanco y el Foxbase entra en modo de edicin a toda pantalla. Sintaxis: APPEND [BLANK] La opcin Blank es alternativa y si se usa, se aade un registro en blanco al final de la base de datos pero no se entra en modo de edicin. Con el archivo de clientes activo, ejecute la orden APPEND y agregue un registro cualquiera a ste archivo.

BROWSE: Esta orden visualiza un archivo de base de datos en la pantalla. Sintaxis: BROWSE [FIELDS lista-campos]

Si el archivo de base de datos es demasiado grande para caber en la pantalla, BROWSE slo visualizar los campos que quepan. Se pueden ver ms campos desplazndose hacia la derecha o la izquierda manteniendo pulsado CONTROL y pulsando las teclas direccionales de flecha izquierda y derecha. Los contenidos de cualquier campo pueden ser editados mientras se permanezca en el modo BROWSE. Para salvar los cambios que se hayan realizado, pulse CONTROL-END; para salir , pulse CONTROL-ESC. La opcin FIELDS visualizar slo los campos contenidos en lista-campos. Ejecute la orden Browse sobre el archivo activo. EDIT: Permite la edicin a toda pantalla de un registro del archivo de base de datos. Sintaxis: EDIT [RECORD n] Si no especifica un nmero de registro mediante RECORD, se editar el registro actual, identificado por la posicin actual del puntero de registros. Pruebe editar un registro cualquiera de su archivo activo. Eliminando Registros: La orden DELETE marca registros especficos para ser borrados. Si DELETE se usa sin nmero de registro, el que se marca es el registro actual. Sintaxis: DELETE [nmero-registros][alcance][FOR/WHILE condicin]. La orden PACK elimina los registros que han sido marcados para ser borrados por la orden DELETE. Sintaxis: PACK. La orden ZAP borra todos los registros de la base de datos activa. La orden ZAP es equivalente a la orden DELETE ALL seguida de una orden PACK. Sintaxis: ZAP. Listando Registros: La orden LIST proporciona una lista de los contenidos de la base de datos. Sintaxis: LIST [OFF][alcance][lista-campos][FOR condicion][TO PRINT] La opcin OFF evitar que se muestren los nmeros de los registros. La opcin alcance se usa para cuantificar los registros a ser listados. Si el alcance est ausente se asume ALL (todos). La opcin FOR especifica una condicin que se debe alcanzar para que un registro se liste. Si se usa la opcin TO PRINT, el listado se imprimir en la impresora. Ejemplo: LIST FOR codcli = 256; LIST codcli, nomcli Pruebe los diferentes formatos de la orden LIST sobre los archivos creados anteriormente. Listando Estructuras: La orden LIST STRU es la que permite realizar esta funcin. Sintaxis: LIST STRUCTURE [TO PRINT] Esta orden lista la estructura de un archivo de base de datos en uso, incluyendo el nombre, el nmero de registros, todos los nombres de los campos y la fecha de la ltima actualizacin. Si se usa la opcin TO PRINT, el listado saldr por la impresora.

Filtrando Registros: COPY FILE: Esta orden crea una copia idntica de un archivo. Se puede proporcionar la extensin en ambos. Sintaxis: COPY FILE nombre-arch-fuente TO nombre-arch-destino Ejemplo: COPY FILE informe.frm TO test.frm COPY STRU: sintaxis: COPY STRUCTURE TO nombre-archivo [FIELDS listacampos]. Copia la estructura de un archivo de base de datos activo en un nombre-archivo. Especificando FIELDS con lista-campos, slo se copiarn estos campos en la estructura. APPEND FROM: Se utiliza para copiar registros de un archivo de base de datos a otro. Sintaxis: APPEND FROM nombre-archivo [FOR condicin] Esta orden copia registros del nombre-archivo y los aade al archivo de base de datos activo. La opcin FOR especifica una condicin que se debe alcanzar para que se copie cualquier registro. SET FILTER: Visualiza slo aquellos registros de un archivo de base de datos que cumplan una condicin especfica. Sintaxis: SET FILTER TO condicin Ejemplo: Para visualizar slo aquellos registros que contengan el nombre Culver City en el campo ciudad durante una orden Display o List, introduzca: SET FILTER TO Culver City $ CIUDAD Relacionando Archivos: Uno de los principales procesos que se realizan en una base de datos relacional es establecer las relaciones entre los diferentes archivos que conforman dicha base de datos. El foxbase incluye una orden que permite ejecutar tal proceso: SET RELATION TO. Esta orden enlaza dos archivos a travs de un campo comn. Un campo comn es un campo que est presente en ambos archivos con el mismo nombre, la misma longitud y tipo y el mismo contenido. Sintaxis: SET RELATION TO expresin clave INTO alias. La expresin clave es el campo comn presente en ambos archivos. El alias es el nombre del archivo que se va a enlazar con el archivo activo. Un requerimiento importante de esta orden es que el archivo que se va a enlazar ha de estar indexado por el campo comn. Para observar el uso de sta orden ejecute el siguiente grupo de instrucciones: CLOSE ALL SELECT 1 USE CLIENTE INDEX ON CODCLI TO ICLICOD SELECT 2 USE FACTURA INDEX ON CODCLI TO IFACCLI SET RELATION TO CODCLI INTO CLIENTE

Aparentemente no ocurri nada, pero el Foxbase ya ha enlazado los dos archivos para comprobarlo ejecute las siguientes ordenes: GO 3 DISPLAY Observe la informacin del registro 3 del archivo factura. Para saber quin es ese cliente, ejecute: SELECT 1 DISPLAY Observe que el puntero del archivo cliente, se encuentra ubicado en el cliente cuyo cdigo corresponde al de la factura almacenada en el registro 3.

Creando Reportes: La orden adecuada para ello es CREATE REPORT. Sintaxis: CREATE REPORT. Crea un archivo de informe para producir informes. Una vez que el archivo de informe ha sido trazado con esta orden, el mismo puede ser visualizado o impreso con la orden REPORT FORM. Manejo de la Ayuda: Sintaxis : HELP [Comando] Muestra la ayuda correspondiente al comando deseado. Ejemplo: Help CREATE ( ayuda del comando CREATE )

QUIT : Esta orden cierra todos los archivos abiertos y sale del Foxbase al Entorno del Sistema Operativo.

INTRODUCCION A LA PROGRAMACION.

Declaracin de Variables: Sintaxis: STORE[expresin] TO [lista de variables] Crea e inicializa variables de memoria de cualquier tipo. Se puede asignar un valor hacia diversas variables utilizando una lista de variables. Si se utiliza el signo de igualdad, solamente puede utilizar una variable.

Entrada y Salida de Datos: Sintaxis: @(lnea,columna)SAY[expresin][PICTURE(clusula)][GET(variable)[PICT URE(clusula)]

@.. SAY ...GET: El comando @..SAY visualiza los datos en determinada posicin de la pantalla o impresora. La clusula GET permite la digitacin de una variable de memoria previamente iniciada. Esta digitacin puede tener formato creado por la opcin PICTURE. Para enviar los datos hacia la impresora es necesario utilizar el comando SET DEVICE TO PRINT antes del comando @. La clusula PICTURE sirve para dar formato al dato que se va a visualizar. La clusula PICTURE estar seguida por una cadena literal (un texto entre comillas) que contiene una serie de caracteres que indicarn el formato del dato que se va a imprimir. Estos caracteres se denominan se denominan plantillas o caracteres de formato. A continuacin sigue una tabla de los caracteres de formato y su uso: SIMBOLO SIGNIFICADO 9 Indica que se visualizar un dgito en el lugar del smbolo # Se visualizar un dgito A Se visualizar un dgito o una letra N Indica visualizacin de letras o nmeros X Visualizacin de cualquier carcter L Visualizacin de datos lgicos (.T. .F.) ! Visualiza siempre las letras en maysculas Por ejemplo, @ 1,1 SAY valor PICTURE 999,999.99.

Estructurales Condicionales: IF, ELSE Y ENDIF: Esta orden de toma de decisin debe comenzar siempre con IF y terminar con ENDIF. Las rdenes que se colocan entre el IF y el ENDIF determinan exactamente lo que ocurrir si la condicin es cierta, a menos que se encuentre un ELSE. Las rdenes IF y ENDIF se usan como un par que encierra un conjunto de rdenes. La orden ELSE es opcional y se usa en el cuerpo del IF-ENDIF como otro paso de decisin. La orden IF ELSE, seguida de varias rdenes, incluso la orden IF y la orden ENDIF, pueden ser usadas para decidir entre acciones en un programa. El formato de la orden es: IF condicin [orden...] [ELSE] [orden...] ENDIF Ejemplo: IF APELLIDO = Rojas ?APELLIDO ENDIF

La sentencia CASE: Se compone de un par DO CASE y ENDCASE. Todas las opciones se declaran entre el DO CASE y el ENDCASE. OTHERWISE se trata exactamente igual que el ELSE de la sentencia IF-ENDIF. El formato general es:

DO CASE Ejemplo: CASE condicin [rdenes...] [CASE condicin...] [orden...] [OTHERWISE] [rdenes...] ENDCASE

DO CASE CASE OPC=1 DO AGREGA CASE OPC=2 DO ELIMINA ENDCASE

La orden DO CASE, examina cada caso hasta que encuentra una condicin que es cierta, entonces ejecuta las rdenes de debajo del CASE hasta que encuentra el siguiente CASE o el ENDCASE, lo que ocurra antes. Estructura DO - WHILE: La orden DO WHILE siempre comienza el bucle y la orden ENDDO normalmente termina el bucle. La serie de rdenes contenidas en el bucle DO WHILE se continuar ejecutando hasta que la condicin especificada inmediatamente despus de la orden DO WHILE, ya no sea cierta. El formato es: DO WHILE condicin Ejemplo: DO WHILE .T. [rdenes] @ 8,15 SAY MENU PRINCIPAL ENDDO ENDDO MODIFY COMMAND : Esta orden pone en marcha el editor de programas del Foxbase. Para guardar los cambios se pulsa la tecla Ctrl-w o End , para Abortar la Operacin se Pulsa Esc. Ejemplo : Modify Command Menu ( Se crea el Programa Menu.prg )

DO: La orden DO arranca la ejecucin de un archivo. La extensin del nombre del archivo .PRG se asume a no ser que se especifique otra cosa. Sintaxis: DO nom-arch RETURN: La orden RETURN finaliza la ejecucin de un archivo. Si el archivo fue llamado por otro archivo, el control del programa es devuelto al otro archivo. Sintaxis: RETURN Una funcin puede contener ms de un comando RETURN. El primero que se ejecute termina la funcin. FUNCTION datos(p1,p2) IF (condicin) RETURN (.T.) ELSE RETURN (.F.) ENDIF

RUN: La orden RUN ejecuta un programa que no es del FOXBASE desde el entorno del FOXBASE y retorna el control a la lnea siguiente a a quella que contien el comando RUN. Es necesario que exista el programa COMMAND.COM para que el programa externo pueda ejecutarse. El programa debe tener la extensin .COM o .EXE Cuando el programa complete su ejecucin, el control ser devuelto al FOXBASE. Sintaxis: RUN nom-arch PARAMETERS: Recibe el contenido de variables de memoria, constantes y campos de archivo pasados por el comando DO...WITH, por la lnea de comandos del DOS cuando se especifica un programa o por la llamada de una PROCEDURE que no tena parmetros declarados dentro del parntesis. Sintaxis: PARAMETERS (lista) El comando PARAMETERS debe ser el primer comando ejecutable dentro de un programa, PROCEDURE o funcin PROCEDURE: La orden PROCEDURE identifica el comienzo de cada procedimiento de un archivo de procedimientos. Por ejemplo, un procedimiento sencillo: PROCEDURE ERROR1 @ 2,10 SAY Esa no es una fecha vlida. Pruebe de nuevo RETURN Un Procedimiento debe considerarse como un subprograma al que llama otro programa o Procedimiento. Un Procedimiento se diferencia de una funcin en que no retorna ningn valor. No es necesario que sea fijo el nmero de parmetros pasados hacia un Procedimiento, sin embargo, un Procedimiento puede recibir cuatro parmetros y pueden pasrsele solo tres debido a que uno de estos es opcional. Los parmetros de un Procedimiento pueden ser por valor o por referencia, dependiendo del modo como se llame. En el modo de llamado de funcin los parmetros se pasan por valor, en el modo de llamado de comando, por referencia. SET PROCEDURE TO: La orden SET PROCEDURE abre el archivo de procedimientos especificado. SET PROCEDURE se coloca en un archivo de rdenes que ser el que utilice los procedimientos del archivo. Slo se puede abrir un archivo de procedimientos y en l slo puede haber hasta 35 procedimientos. Sintaxis: SET PROCEDURE TO nombre del archivo. FUNCION: Una funcin es una rutina preprogramada que ejecuta una tarea o prueba especfica. Una funcin siempre retorna un valor. Una funcin puede tener uno o varios argumentos sobre los cuales acta, el usuario suministra esos argumentos. Funciones de Cadena: LEN( ) Retorna el nmero de caracteres de texto

LOWER( ) LTRIM( ) RTRIM( ) SUBSTR( ) TRIM( ) UPPER( ) VAL( )

Transforma el texto en minscula Remueve espacios iniciales en blanco Remueve espacios finales en blanco Extrae una subcadena Remueve espacios finales en blanco Transforma el texto en maysculas. Retorna el valor numrico de una cadena de caracteres.

Funciones de fecha: CTOD( ) DATE( ) DTOC( ) TIME( ) Convierte una cadena en fecha Retorna la fecha del sistema Transforma una fecha en cadena Retorna la hora del sistema

Funciones de Archivos: EOF() Retorna .T. si se encontr el final del archivo en uso. En caso contrario Devuelve .F. BOF() Retorna .T. si se lleg al comienzo del archivo en uso. En caso contrario Devuelve .F. FILE( ) Verifica la existencia de un archivo y retorna .T. si el nombre del archivo suministrado como argumento existe. RECNO( ) Retorna el nmero del registro actual del archivo en uso. Si no hay registros, asume el valor 0. RECCOUNT( ) Retorna el nmero total de registros del archivo en uso. Si no hay registros, asume el valor 0. FOUND( ) Retorna el valor lgico .T. si un comando FIND, LOCATE, CONTINUE o SEEK encuentra un registro. Para cada rea de trabajo existe un valor para la funcin FOUND( ). COMANDOS DE BUSQUEDA: LOCATE: Busca dentro de un conjunto de registros el primero que satisfaga la condicin especificada. Sintaxis: LOCATE [cubrimiento] [WHILE(condicin)][FOR(condicin)] Si no se especifica cubrimiento alguno, se asume ALL. Para continuar con la bsqueda de otros registros que cumplan la misma condicin se utiliza el comando CONTINUE. SEEK: Ejecuta una bsqueda del primer registro de un archivo indexado que est en uso y que posee una clave igual a la dada como argumento. Sintaxis: SEEK [clave] Si la clave es de tipo de caracteres, debe colocarse en comillas.

GO/GOTO: Mueve el puntero de registro para el registro indicado dentro del comando. Puede utilizarse GO como GOTO. Sintaxis: GO[TO] (expresin)[BOTTOM]/[TOP] GOTO TOP posiciona el puntero en el primer registro del archivo, y si se trata de un archivo indizado en el primer registro del ndice. Mientras que GO BOTTOM lo mover al final del archivo. SKIP: Mueve el puntero de registros a travs del archivo en uso o a travs de un archivo abierto en otra rea. Sintaxis: SKIP [alias][expresin] Si la expresin es positiva el puntero avanza y si es negativa retrocede dentro del archivo. Si se omite la expresin numrica el comando avanza un registro. Si el archivo est indexado, el comando sigue el orden del ndice. Sucede lo mismo si se encuentra un filtro activo. Si despus de un SKIP el puntero ha sido posicionado en el final del archivo, la funcin EOF( ) retorna .T. MANEJO DE LA PANTALLA: CREACION DE MENUS: En lneas generales, toda aplicacin se ejecuta a partir de un men que acciona programas, rutinas, o simplemente abre otros mens. El comando @..PROMPT..MESSAGE Este comando es parecido al comando @..SAY. Su finalidad es mostrar una opcin de un men. La sintaxis es la siguiente: @(lnea,columna) PROMPT[texto1] [MESSAGE texto2] Ejemplo: @5,10 PROMPT 1. PERSONAL MESSAGE Agregar personal El comando MENU TO: Permite la creacin de mens iluminados (en los cuales el cursor puede ser movido por los elementos que lo componen). Sintaxis: MENU TO (variable memoria)

Se utiliza junto con el comando PROMPT. El comando MENU TO iluminar, o sea, posicionar el cursor en el primer comando PROMPT y permitir que el cursor se mueva entre los PROMPT especificados. CREACION DE RECTANGULOS: El comando @..TO tiene como objetivo dibujar rectngulos con lneas sencillas o dobles en las coordenadas definidas por el usuario. La sintaxis de este comando es la siguiente: @(lnea1),(columna1) TO (lnea2),(columna2) [DOUBLE] Por ejemplo: @1,1 TO 20,30

BORRADO DE LA PANTALLA: @..CLEAR: Borra un rectngulo cuya esquina superior izquierda se especifica por el primer par de coordenadas y su esquina inferior derecha por el segundo par de coordenadas. Sintaxis: @ (lnea, columna) [CLEAR][TO (lnea,columna)] CLEAR: Limpia completamente la pantalla y deja el cursor en la esquina superior izquierda de la misma. Sintaxis: CLEAR. GRABADO DE LA PANTALLA: SAVE SCREEN: Graba una pantalla en la memoria o en una variable para su recuperacin posterior. Sintaxis: SAVE SCREEN [TO variable]

RESTAURACION DE PANTALLA: RESTORE SCREEN: Permite la recuperacin de pantallas que grab el comando SAVE SCREEN. Sintaxis: RESTORE SCREEN [FROM (varmen)] Este comando debera sustituirse por la funcin RESTSCREEN( ).

COLORES DE LA PANTALLA: SET COLOR TO: Se usa para seleccionar los colores y los atributos de visualizacin. Sintaxis: SET COLOR TO estndar [,realzado][,borde] Ejemplo: SET COLOR TO W+/B (letras blancas intensas con fondo azul).

COMANDOS PARA MANEJO DE LA IMPRESORA SET DEVICE TO PRINTER/SCREEN : Esta orden controla si las Ordenes @ son enviadas a la pantalla o a la impresora.

Ejemplo : Set devi to Print SET PRINTER TO:

( Direcciona la Salida a la Impresora )

Redirige la salida de la impresora al dispositivo del D.O.S. especificado. Ejemplo : Set printer to Salida.txt SET PRINTER ON/OFF: Cuando de Activa , dirige la salida a la impresora a la vez que sale por pantalla. Ejemplo : Set printer on SET PRINTER ON/OFF: Cuando de Activa , dirige la salida a la impresora a la vez que sale por pantalla. Ejemplo : Set printer on ( Activa la salida por Impresora ) ( Activa la salida por Impresora ) ( Direcciona la Impresora al Archivo .txt )

PROW() : Devuelve la Linea de Impreson actual . Ejemplo @ Prow()+1,10 Say CODIGO PCOL() : Devuelve la Columna de Impreson actual . Ejemplo @ Prow()+1,10 Say CODIGO

PROGRAMAS EJEMPLO A Continuacin se presentan varios programas ejemplo (Actualizacin y Consulta ) que hacen uso de los siguientes archivos de datos :
Structure for database: CLIENTE.DBF Number of data records: 9 Date of last update : 04/20/99 Field Field Name Type Width Dec 1 CODCLI Character 6 2 NOMCLI Character 30 3 CEDULA Character 12 4 TELEF Character 12 ** Total ** 61 Structure for database: FACTURA.DBF Number of data records: 13 Date of last update : 04/08/99 Field Field Name Type Width Dec 1 NROFACT Character 6 2 CODCLI Character 6 3 FECHA Date 8 4 MONTOF Numeric 12 2 5 ABONOF Numeric 12 2 ** Total ** 45 Structure for database: TRANSAC.DBF Number of data records: 4 Date of last update : 04/08/99 Field Field Name Type Width Dec 1 NROFACT Character 6 2 FECHA Date 8 3 MONTO Numeric 12 2 4 REFERN Character 16 ** Total ** 43

** EJEMPLO 02 ** INCLU1.PRG ** PROGRAMA DE INCLUIR CLIENTES SET TALK OFF USE CLIENTE INDEX CLIENTE1 STORE SPACE( LEN(CODCLI) ) TO XCOD && INICIA EL AUX. CODIGO EN BLANCO CLEAR @1,5 SAY "INCLUIR CLIENTES" @3,5 SAY "INTRODUZCA EL CODIGO DEL CLIENTE : " GET XCOD READ SEEK XCOD IF .NOT. FOUND() APPEND BLANK @5,5 SAY "NOMBRE : " GET NOMCLI @7,5 SAY "CEDULA : " GET CEDULA PICT "A-99.999.999" READ REPL CODCLI WITH XCOD REPL NOMCLI WITH NOMCLI REPL CEDULA WITH CEDULA WAIT "CLIENTE HA SIDO INCLUIDO . PULSE UNA TECLA " ELSE && MUESTRA LOS DATOS @5,5 SAY "NOMBRE : "+NOMCLI @7,5 SAY "CEDULA : "+CEDULA @9,5 SAY "EL CLIENTE YA EXISTE ! PULSE UNA TECLA " WAIT " " ENDIF RETURN ******* ** EJEMPLO 03 ** MODIF1.PRG ** PROGRAMA DE MODIFICAR CLIENTES USE CLIENTE INDEX CLIENTE1 STORE SPACE( LEN(CODCLI) ) TO XCOD && INICIA EL AUX. CODIGO EN BLANCO CLEAR

@1,5 SAY "MODIFICAR CLIENTES" @3,5 SAY "INTRODUZCA EL CODIGO DEL CLIENTE : " GET XCOD READ SEEK XCOD IF FOUND() @5,5 SAY "NOMBRE : " GET NOMCLI @7,5 SAY "CEDULA : " GET CEDULA READ WAIT " CLIENTE HA SIDO MODIFICADO . PULSE UNA TECLA " ELSE @4,5 SAY "CLIENTE NO EXISTE ! PULSE UNA TECLA " WAIT " " ENDIF RETURN ******* ** EJEMPLO 04 ** ELIMI1.PRG ** PROGRAMA DE ELIMINACION DE CLIENTES USE CLIENTE INDEX CLIENTE1 STORE SPACE( LEN(CODCLI) ) TO XCOD && INICIA EL AUX. CODIGO EN BLANCO STORE "S" TO RESP CLEAR @1,5 SAY "ELIMINAR CLIENTES" @3,5 SAY "INTRODUZCA EL CODIGO DEL CLIENTE : " GET XCOD READ SEEK XCOD IF FOUND() @5,5 SAY "NOMBRE : "+NOMCLI @7,5 SAY "CEDULA : "+CEDULA @9,5 SAY "ELIMINA S/N : " GET RESP PICT "!" VALID RESP $"SN" READ IF RESP = "S" DELETE && ELIMINACION LOGICA PACK && ELIMINACION FISICA ENDIF ELSE @4,5 SAY "CLIENTE NO EXISTE ! PULSE UNA TECLA " WAIT " " ENDIF RETURN ******** ** EJEMPLO 06 ** LISTA1.PRG ** REPORTE GENERAL DE CLIENTES POR PANTALLA CLEAR @1,1 TO 23,79 DOUBLE SELE 1 USE CLIENTE GO TOP STORE 1 TO LINEA,PAG && CONTADOR DE LINEAS Y PAGINAS @1,0 SAY " " && INICIO DE LINEA DO WHILE .NOT. EOF() IF LINEA = 1 @ROW()+1,05 SAY " EMPRESA TUI C.A. PAG : "+STR(PAG,6) @ROW()+1,05 SAY " LISTADO DE CLIENTES " @ROW()+1,05 SAY " CODIGO NOMBRE CEDULA " @ROW()+1,05 SAY REPLI("-",70) LINEA = 4 ENDIF ** IMPRIME CAMPOS @ROW()+1,5 SAY CODCLI @ROW(),COL()+5 SAY NOMCLI @ROW(),COL()+5 SAY CEDULA LINEA = LINEA + 1 SKIP ** FIN DE PAGINA IF LINEA > 21 .OR. EOF() @24,0 SAY " PRESIONE UNA TECLA " WAIT " " LINEA = 1 @2,2 CLEAR TO 22,78 && LIMPIA LA PANTALLA POR COORDENADAS @1,2 SAY " " && INICIA COMIENZO DE LINEA PAG = PAG + 1 ENDIF

ENDDO CLEAR CLOSE DATA RETURN ******* ** EJEMPLO 07 ** REPOR1.PRG ** REPORTE GENERAL DE CLIENTES POR IMPRESORA SET SAFETY OFF CLEAR WAIT " CONECTE IMPRESORA EN <ON-LINE> Y PULSE UNA TECLA " SET DEVI TO PRINT SELE 1 USE CLIENTE GO TOP STORE 1 TO LINEA,PAG && CONTADOR DE LINEAS Y PAGINAS DO WHILE .NOT. EOF() IF LINEA = 1 @PROW()+1,05 SAY " EMPRESA TUI C.A. PAG : "+STR(PAG,6) @PROW()+1,05 SAY " LISTADO DE CLIENTES " @PROW()+1,05 SAY " CODIGO NOMBRE CEDULA " @PROW()+1,05 SAY REPLI("-",70) LINEA = 4 ENDIF ** IMPRIME CAMPOS @PROW()+1,5 SAY CODCLI @PROW(),PCOL()+5 SAY NOMCLI @PROW(),PCOL()+5 SAY CEDULA LINEA = LINEA + 1 SKIP ** FIN DE PAGINA IF LINEA > 55 .OR. EOF() LINEA = 1 PAG = PAG + 1 EJECT ENDIF ENDDO SET DEVI TO SCREEN CLOSE DATA RETURN ******* ** EJEMPLO 14 ** REPOR3.PRG ** REPORTE GENERAL DE FACTURAS POR CLIENTE CLEAR @1,1 TO 23,79 DOUBLE SELE 1 USE CLIENTE INDEX CLIENTE1 SELE 2 USE FACTURA INDEX ON CODCLI TO FACTURA2 ** SELE 1 GO TOP STORE 1 TO LINEA,PAG && CONTADOR DE LINEAS Y PAGINAS STORE 0 TO CFACT,TOTALF,TOTALA DO WHILE .NOT. EOF() @1,2 SAY "" && INICIO DE LINEA @ROW()+1,05 SAY " EMPRESA TUI C.A. PAG : "+STR(PAG,6) @ROW()+1,05 SAY " CLIENTE : "+CODCLI+" "+NOMCLI @ROW()+1,05 SAY " FACTURA FECHA MONTO ABONO @ROW()+1,05 SAY REPLI("-",70) LINEA = 4 XSUBF = 0 && SUBTOTAL X CLIENTE SELE 2 && BUSCA LAS FACTURAS DEL CLIENTE SEEK A->CODCLI DO WHILE .NOT. EOF() .AND. CODCLI = A->CODCLI ** IMPRIME CAMPOS @ROW()+1,5 SAY NROFACT @ROW(),COL()+3 SAY FECHA @ROW(),COL()+3 SAY MONTOF PICT "9999999.99" @ROW(),COL()+3 SAY ABONOF PICT "9999999.99" @ROW(),COL()+3 SAY (MONTOF-ABONOF) PICT "9999999.99"

SALDO "

LINEA = LINEA + 1 XSUBF = XSUBF + MONTOF TOTALF = TOTALF + MONTOF TOTALA = TOTALA + ABONOF CFACT = CFACT + 1 SKIP ** FIN DE PAGINA IF LINEA > 21 .OR. EOF() .OR. CODCLI <> A->CODCLI @22,40 SAY "TOTAL MONTO : "+STR(XSUBF,12,2) @23,5 SAY " PRESIONE UNA TECLA " WAIT " " LINEA = 1 @2,2 CLEAR TO 22,78 && LIMPIA LA PANTALLA POR COORDENADAS @1,2 SAY "" && INICIA COMIENZO DE LINEA PAG = PAG + 1 ENDIF ENDDO SELE 1 SKIP ENDDO @10,05 SAY "TOTALES" @12,05 SAY "FACTURA : "+STR(CFACT,6) @12,40 SAY "MONTO : "+STR(TOTALF,12,2) @14,40 SAY "ABONO : "+STR(TOTALA,12,2) @16,40 SAY "SALDO : "+STR(TOTALF-TOTALA,12,2) @23,05 SAY " PRESIONE UNA TECLA " WAIT " " CLEAR CLOSE DATA RETURN ******** ** EJEMPLO 17 ** MENU1.PRG ** PROGRAMA PRINCIPAL SET DATE BRIT SET TALK OFF SET STAT OFF SET SAFETY OFF SET SCORE OFF SET CENTURY ON STORE .T. TO CICLO DO WHILE CICLO SET COLOR TO W+/B CLEAR @2,1 TO 22,79 DOUBLE @1,28 SAY "SISTEMA DE CUENTAS X COBRAR" @5,32 SAY " MENU PRINCIPAL " @6,32 SAY REPLI(CHR(205),16) @08,30 PROMPT " 1. ACTUALIZAR CLIENTES " MESSAGE " AGREGA Y MODIFICA CLIENTES " @10,30 PROMPT " 2. ACTUALIZAR FACTURAS " MESSAGE " AGREGA Y MODIFICA FACTURAS " @12,30 PROMPT " 3. LISTADO DE CLIENTES " MESSAGE " CONSULTA GENERAL DE CLIENTES " @14,30 PROMPT " 0. SALIR " MESSAGE " SALIR DEL SISTEMA " SET MESSAGE TO 23 MENU TO OP DO CASE CASE OP = 0 .OR. OP = 4 CICLO = .F. CASE OP = 1 DO ACTUA1 CASE OP = 2 DO ACTUA2 CASE OP = 3 DO LISTA1 ENDCASE ENDDO CLEAR RETURN ****** ** EJEMPLO 18 ** INDE1.PRG ** INDEXACION DE ARCHIVOS SET TALK OFF SET SAFETY OFF

DIMENSION V1(3),V2(3),V3(3) *-* VECTOR DE ARCHIVOS V1(1) = "CLIENTE" V1(2) = "FACTURA" V1(3) = "TRANSAC" *-* VECTOR DE CAMPOS A INDEXAR V2(1)="CODCLI" V2(2)="NROFACT" V2(3)="NROFACT" *-* VECTOR DE ARCHIVOS INDICES V3(1) = "CLIENTE1" V3(2) = "FACTURA1" V3(3) = "TRANSAC1" *-* @20,05 SAY "INDEXANDO ARCHIVOS .... " I=0 DO WHILE I<3 I=I+1 XARCH = V1(I) XCAMP = V2(I) XINDI = V3(I) USE &XARCH && MACROSUSTITUCION DEL ARCHIVO INDEX ON &XCAMP TO &XINDI ENDDO CLOSE DATA RETURN ******* ** EJEMPLO 08 ** ACTUA1.PRG ** ACTUALIZACION DE CLIENTES SET STAT OFF SET DATE BRIT SET TALK OFF SET SAFETY OFF SELE 1 USE CLIENTE SET INDEX TO CLIENTE1 SELE 2 USE FACTURA SET INDEX TO FACTURA1 ** SELE 1 SET FUNCTION 3 TO CHR(23)+"S" && ASIGNA OPCION "M" CON LA TECLA F3 SET FUNCTION 4 TO CHR(23)+"E" && ASIGNA OPCION "E" CON LA TECLA F4 DO WHILE .T. STORE SPACE(6) TO AXCODCLI STORE SPACE(30) TO AXNOMCLI STORE SPACE(12) TO AXCEDULA,AXTELEF STORE 0 TO AXNUEVO CLEAR @2,1 TO 22,79 DOUBLE @21,5 SAY "ESC- SALIR F3- MODIFICAR F4- ELIMINAR " @4,25 SAY " ACTUALIZACION DE CLIENTES " @6,5 SAY "CODIGO : " GET AXCODCLI READ IF AXCODCLI = SPACE(6) CLOSE DATA SET FUNCTION 3 TO SET FUNCTION 4 TO RETURN ENDIF SEEK AXCODCLI IF .NOT. FOUND() && SI NO EXISTE STORE "S" TO RESP @20,05 SAY "DESEA INCLUIR ? S/N : " GET RESP PICT "!" READ IF RESP = "N" LOOP ELSE AXNUEVO = 1 && INDICA QUE EL REGISTRO ES NUEVO ENDIF ELSE && SI EXISTE AXNOMCLI = NOMCLI AXCEDULA = CEDULA

AXTELEF = TELEF ENDIF && CICLO DE LECTURA DO WHILE .T. @08,05 SAY "CEDULA : " GET AXCEDULA PICT "A-99.999.999" @09,05 SAY "NOMBRE : " GET AXNOMCLI @10,05 SAY "TELEFONO : " GET AXTELEF READ STORE "S" TO RESP @20,05 SAY "DATOS CORRECTOS ? S/N : " GET RESP PICT "!" READ STORE " EL REGISTRO HA SIDO GRABADO ! " TO ERROR DO CASE CASE RESP = "E" EXIT CASE RESP = "N" EXIT CASE AXNOMCLI = SPACE(30) ERROR = " ERROR : EL NOMBRE HA SIDO OMITIDO " CASE AXCEDULA = SPACE(12) ERROR = " ERROR : LA CEDULA HA SIDO OMITIDA " CASE RESP = "S" EXIT ENDCASE @24,05 SAY ERROR ENDDO IF RESP = "E" .AND. AXNUEVO = 0 && OPCION DE ELIMINACION SELE 2 LOCATE FOR CODCLI = AXCODCLI IF FOUND() WAIT "ERROR : EL CLIENTE TIENE FACTURAS ... " ELSE SELE 1 DELETE PACK WAIT " REGISTRO ELIMINADO ! PRESIONE UNA TECLA ... " ENDIF ENDIF SELE 1 IF RESP = "S" && DATOS VALIDOS IF AXNUEVO = 1 APPEND BLANK REPL CODCLI WITH AXCODCLI ENDIF REPL NOMCLI WITH AXNOMCLI REPL CEDULA WITH AXCEDULA REPL TELEF WITH AXTELEF WAIT " REGISTRO ALMACENADO ! PRESIONE UNA TECLA ... " ENDIF ENDDO RETURN ******* ** EJEMPLO 16 ** LISTA3.PRG ** RESUMEN DE CLIENTES POR PANTALLA CLEAR @1,1 TO 23,79 DOUBLE SELE 1 USE CLIENTE INDEX CLIENTE1 SELE 2 USE FACTURA INDEX ON CODCLI TO FACTURA2 SET RELATION TO CODCLI INTO A SELE 3 USE TEMPO1 ZAP && INICIALIZA EL TEMPORAL ** SELE 2 GO TOP DO WHILE .NOT. EOF() @5,10 SAY "PROCESANDO REGISTRO : "+STR(RECNO(),6) XCOD = CODCLI STORE 0 TO XFAC,XMON,XABO XNOM = A->NOMCLI && GUARDA EL NOMBRE DEL CLIENTE **

DO WHILE .NOT. EOF() .AND. CODCLI = XCOD XMON = XMON + MONTOF XABO = XABO + ABONOF XFAC = XFAC + 1 SKIP ENDDO *** SELE 3 && INCLUYE EN EL TEMPORAL APPEND BLANK REPL CODCLI WITH XCOD REPL NOMCLI WITH XNOM REPL FACTURAS WITH XFAC REPL MONTOS WITH XMON REPL ABONOS WITH XABO *** SELE 2 && REGRESA AL AREA DE FACTURAS ENDDO ***** SELE 3 GO TOP BROW NOMENU NOAPPEND NOMODIFY && ABRE EL TEMPORAL SOLO PARA CONSULTA CLEAR CLOSE DATA RETURN *******

Sponsored by

Vous aimerez peut-être aussi