Vous êtes sur la page 1sur 22

1. Base de Datos.........................................................................................................................

2
1.1. Base de Datos Relaciónales...............................................................................................3
2. Diseño de una Base de Datos..................................................................................................3
2.1. Las fases en el diseño de una Base de Datos....................................................................3
3. Creación y Visualización de una Base de Datos.......................................................................3
4. Modificación la estructura de una Base de Datos....................................................................4
5. Activación de una Base de Datos............................................................................................4
6. Introducción de información a una Base de Datos...................................................................4
6.1. Introducción de datos en un campo MEMO........................................................................4
6.2. Introducción de datos con el modo examinar (BROWSE)...................................................4
6.2.1. Ejercicio 1....................................................................................................................5
6.2.2. Ejercicio 2 (práctica guiada)........................................................................................5
6.2.3. Ejercicio 3 (práctica individual)...................................................................................6
7. Visualización de la información de una Base de Datos............................................................6
7.1. Seguimiento de los registros.............................................................................................6
8. Modificación de una Base de Datos.........................................................................................7
8.1. Edición de los registros de una Base de Datos..................................................................7
8.2. Uso del modo BROWSE......................................................................................................7
9. Supresión de registros.............................................................................................................7
10. Sustituciones globales con órdenes.......................................................................................7
11. Ordenación (SORT)................................................................................................................8
11.1. Ordenación según múltiples campos...............................................................................8
11.2. Ordenación de un subconjunto de una Base de Datos....................................................8
11.3. Ordenación de campos específicos.................................................................................9
11.3.1. Ejercicio 4..................................................................................................................9
12. Indexación.............................................................................................................................9
12.1. Tipos de índices.............................................................................................................10
12.2. Indexación selectiva......................................................................................................10
12.3. Indexación con base en múltiples campos....................................................................11
12.4. Indexación con base en campos de tipos diferentes.....................................................11
12.5. Como abrir una Base de Datos y archivos índice...........................................................11
12.6. Utilización de SET INDEX...............................................................................................11
12.7. Apertura de archivos índice...........................................................................................12
12.8. Utilización de la orden REINDEX....................................................................................12
12.8.1. Ejercicio 5................................................................................................................12
13. Búsqueda de información específica....................................................................................13
14. La orden COPY......................................................................................................................13
15. Introducción a los informes..................................................................................................14
15.1. Obtención de un informe rápido....................................................................................14
15.1.1. Ejercicio 6................................................................................................................14
15.1.2. Ejercicio 7................................................................................................................15
15.1.3. Ejercicio 8................................................................................................................15
16. Ordenes para programación.................................................................................................15
16.1. Modífy Command..........................................................................................................15
16.2. Do..................................................................................................................................15
16.3. @... SAY.........................................................................................................................15
16.4. @... GET........................................................................................................................15
16.4.1 Ejercicio 9.................................................................................................................15
16.4.2. Ejercicio 10..............................................................................................................16
16.4.3. Ejercicio 11..............................................................................................................17
16.4.4. Ejercicio 12..............................................................................................................18
16.4.5. Ejercicio 13..............................................................................................................18
16.4.6. Ejercicio 14..............................................................................................................19
16.4.7. Ejercicio 15..............................................................................................................20
16.4.8. Ejercicio 16..............................................................................................................21
16.4.9. Ejercicio 17..............................................................................................................21
16.4.7. Ejercicio 18...............................................................................................................22

1. Base de Datos
Es el núcleo de cualquier sistema de gestión de información al igual que cualquier colección de
información relacionada y agrupada en un elemento individual, lo que diferencia a una
colección de datos aleatorios de una Base de Datos es la forma como se organizan las
diferentes partes de la información. Esta se organiza en una Base de Datos en forma de tablas,
con una serie de filas y columnas.
Las filas se denominan registros y las columnas campos, los campos pueden contener cualquier
tipo de información, siempre que cada uno tenga el mismo tipo de datos. Los datos son la
información que conforma la Base de Datos.
Por ejemplo:
Nombre Dirección Ciudad Teléfono C. P.
Francisco Javier 8334-
Grecia 1234 San Nicolás 64120
Carmona 5969
California 8367-
Ma. Virginia García Guadalupe 62159
4567 3385
Venecia 8338-
José Luís López San Pedro 64155
8900 5977
San Diego 8367
Esther J. Martínez Guadalupe 65862
456 -3899
Santa 8338-
Gabriela Oliva Grecia 5231 63120
Catarina 8869
Ángel Guadalupe. 8344-
Potosí 7895 Escobedo 61159
Pérez 3388
Una Base de Datos o sistema de archivo computarizado, puede agilizar los procedimientos
tradicionales de almacenamiento y recuperación de información seguido en los sistemas de
archivo convencionales. Las Base de Datos computarizadas son compactas, por tanto, una Base

2
de Datos con miles de registros puede almacenarse en un solo disquete. Estas además son
flexibles pues ofrecen la posibilidad de examinar una misma información desde muy diferentes
puntos de vista.
1.1. Base de Datos Relaciónales
Un administrador de Base de Datos Relacional tiene la posibilidad de extraer información de
distintas tablas enlazadas por un campo común, los administradores de Base de Datos
Relacional cuentan con .la posibilidad de poder acceder simultáneamente a varios archivos.

2. Diseño de una Base de Datos


La creación de una Base de Datos sin la debida planificación conduce a menudo a estructuras
con pocos o muchos campos. El diseño de Base de Datos requiere determinar la forma como los
datos se almacenarán y la manera en que el usuario va a consultarlos. Durante el proceso se
requiere esquematizar sobre un papel la estructura del archivo y además definir 10s tipos o
campos de información que conformarán la Base de Datos.
2.1. Las fases en el diseño de una Base de Datos
1. Definición de los Datos. Debe crearse una lista de los campos relacionados con la
información
2. Que se desea gestionar. Es importante examinar en detalle la información para llegar
a determinar con exactitud los campos o tipos de datos que conformarán la Base de Datos.
Al principio puede enumerar más campos de los que conformarán la estructura final de la
Base de Datos, y después, durante el proceso de refinamiento de los datos, eliminar los
campos innecesarios.
3. Refinamiento de los Datos. Se trata de depurar y refinar la lista de campos establecida
en la fase inicial, de manera que se proporcione una descripción adecuada de los tipos de
datos necesarios. Es fundamental aceptar todo tipo de sugerencias por parte de los futuros
usuarios de la Base de Datos. Los posibles refinamientos que pueden efectuarse sobre los
campos se irán clarificando al acudir repetidamente a la lista inicial de estos.
4. Establecimiento de Relaciones entre Campos. Consiste en establecer las relaciones
entre los campos y determinar el orden de importancia entre éstos. Una manera de
determinar estas relaciones es preguntándose sobre los problemas que puede ser objeto
de consulta en Base de Datos. Es importante determinar las relaciones entre los datos, si
es que existen, las cuales están requeridas a la hora de usar Base de Datos. La capacidad
relacional significa que los datos de una Base de Datos pueden enlazarse con los de otra u
otras.

3. Creación y Visualización de una Base de Datos


Existen dos formas de crear una Base de Datos:
1. Introducir la orden CREATE en la ventana Comandos junto con el nombre del archivo de la
Base de Datos que se creará.
2. Consiste en abrir el menú Archivo, elegir Nuevo... ya continuación, seleccionar Tabla / DBF
en el cuadro de dialogo que aparece en la pantalla.
Cualquiera de los dos métodos da como resultado la aparición del cuadro de diálogo Estructura
de tabla, en el cual podrá definir el nombre, tipo y longitud de cada uno de los campos de la
Base de Datos. Aquí se mostrará una pantalla con casilla resaltadas donde podrá introducir los
nombres de los campos, los tipos, longitud y cantidad de cifras decimales.
Algunos tipos de campos se muestran a continuación:
Carácter Almacenan cadenas de caracteres, incluyendo letras, números, símbolos especiales y
espacios en blanco. Los campos de tipo carácter pueden tener una extensión máxima de 254
caracteres.
Numéric Se usan para almacenar números, con o sin cifras decimales. Sólo se aceptan números, el
os signo de punto decimal y el signo menos (guión). Introduce números hasta de 20 dígitos y
aunque no utilizan puntos para separar millares, puede obtenerlos para elaborar informes.

3
Flotante Son campos numéricos con puntos decimal flotante. FoxPro puede introducir números y un
signo menos (opcional), con una precisión que alcanza hasta los 15 dígitos.
Fecha Se usan para almacenar expresiones de fecha. FoxPro inserta automáticamente las barras de
separación (1) al introducir los seis dígitos de la fecha. En este caso, deben incluirse los ceros
necesarios a la izquierda para conseguir el formato de seis cifras, de lo contrario, es preciso
introducir las barras de separación manualmente.
Lógico Almacenan un valor lógico que se representa por una letra. El símbolo .T. o .Y. representa
el valor verdadero y .F. o .N. el valor falso.
Memo Permiten almacenar bloques de texto de gran extensión en cada uno de los registros. Un
campo memo puede contener texto de cualquier longitud (la única limitación que existe es la
de espacio disponible en disco duro).
General Este tipo de campo puede utilizarse para guardar imágenes, sonidos, documentos creados
con un procesador de textos, hojas de cálculo o cualquier tipo de datos que pueda pegarse
de otras aplicaciones Windows (incluyendo objetos Windows OLE y objetos enlazados e
incrustados).
Utilice los campos numéricos si su contenido tiene que intervenir en cualquier tipo de cálculo.
Los números que no forman parte de operaciones aritméticas (por ejemplo: los números de
teléfono) deben guardarse en campos de tipo carácter.

4. Modificación la estructura de una Base de Datos


Es frecuente que tras haber estado usando una Base de Datos durante algún tiempo decida
agrandar el tamaño de un campo, borrar algún otro o añadir campos para abarcar mayor
cantidad de información. Este tipo de operaciones se realizara por medio de la orden MODIFY
STRUCTURE.

5. Activación de una Base de Datos


Para iniciar a trabajar con una Base de Datos está debe seleccionarse. Esta acción se lleva a
cabo por medio de la orden USE, la sintaxis de esta orden es la siguiente:
USE <archivo>
Ejemplo: USE socios

6. Introducción de información a una Base de Datos


La orden que permite añadir registros es APPEND (la Base de Datos debe estar abierta con la
orden USE para poder añadir datos), la sintaxis de esta orden es la siguiente:
APPEND

6.1. Introducción de datos en un campo MEMO


La introducción de datos en un campo Memo es diferente a la que corresponde al resto de los
campos. Siempre que el cursor se encuentre en un campo Memo, se estará en el punto de
entrada de una ventana Memo que puede contener texto de cualquier extensión. Para entrar en
la ventana Memo puede hacer doble clic en el campo Memo y aparecerá en la pantalla y se
encontrará en el modo de edición del campo Memo, dentro de una ventana Memo permite
introducir de forma semejante a como se hace en los procesadores de texto.
6.2. Introducción de datos con el modo examinar (BROWSE)
Al realizar la introducción de datos de la manera anterior, existe la limitación de que no pueden
verse varios registros al mismo tiempo, hay ocasiones en que es preferible tener la información
en forma de tabla y otras en que resulta más conveniente trabajar en e.\ modo de la sección
anterior. Para presentar la Base de Datos en forma tabular se usa la orden BROWSE (la Base de
Datos debe estar abierta con la orden USE para poder añadir datos).
Aquí las teclas flecha arriba y flecha abajo sirven para desplazar el cursor entre los registros.
Utilice las teclas TAB y Mayús + TAB para desplazar el cursor entre los campos, se puede hacer
uso de la tecla rápida CTRL + D para añadir registros.

4
6.2.1.Ejercicio 1
1. ¿Qué es una Base de Datos?
R = _______________________________________________________________________________________
___________________________________________________________________________________________
2. Así se le denominan a las filas en una Base de Datos.
R = _______________________________________________________________________________________
3. Así se le denominan a las columnas en una Base de Datos.
R = _______________________________________________________________________________________
4. ¿Cuál es la diferencia entre una Base de Datos y una colección de datos aleatorios?
R = _______________________________________________________________________________________
___________________________________________________________________________________________
___________________________________________________________________________________________
___________________________________________________________________________________________
5. Así se le llama a la información que conforma una Base de Datos.
R = _______________________________________________________________________________________
6. Mencione algunas de las ventajas de las Base de Datos
R = _______________________________________________________________________________________
___________________________________________________________________________________________
7. Tiene la posibilidad de extraer información de distintas tablas enlazadas por un campo
común, además de contar con la posibilidad de poder acceder simultáneamente a varios
archivos.
R = _______________________________________________________________________________________
8. Mencione las fases para el diseño de una Base de Datos
R = _______________________________________________________________________________________
___________________________________________________________________________________________
___________________________________________________________________________________________
9. Instrucción con la que se puede crear una Base de Datos.
R = _______________________________________________________________________________________
10. Mencione y explique dos tipos de campos.
R = _______________________________________________________________________________________
___________________________________________________________________________________________
6.2.2.Ejercicio 2 (práctica guiada)
1. Teclee en la ventana Comando lo siguiente: DECIMAL
NOMBRE TIPO ANCHO
CREATE amigos ES
Carácte
nombres 20
2. Agregue los datos de la tabla para crear los r
campos    Carácte
apellidos 20
r
3. Al terminar lo anterior, de clic en botón OK. Carácte
telefono 10
r
4. A continuación le preguntará si desea agregar
Carácte
registros, de clic en Sí. Si da clic en No lo email
r
20
regresará a la ventana Comando, aquí deberá nacimient
teclear APPEND y ENTER. Fecha 8
o
Numéri
estatura c 4 2
o
5. Por último ingrese los siguientes datos.
NOMBRE APELLIDO TELEFON NACIMIENT ESTATUR
EMAIL
S S O O A
Fátima Velasco 8384-4578 fvv27@hotmail.com 12/02/79 1.58
mayraargu@yahoo.c
Mayra Argüello 8338-0160 16/07/78 1.54
om
Lorena E. A maya 8149-9151 loreamaya@hotmail 15/08/18 1.55

5
com
decantu@hotmail.co
Dora E. Cantú 8370-5307 18/03/78 1.58
m
sledezma@latinmail
Sofía Ledezma 8145-7695 11/11/71 1.64
.com
6. Aparte de los datos anteriores agregue otras 5 personas. Verifique en la barra de estado la
información sobre la Base de Datos. Al terminar de agregar los 10 registros cierre la
ventana.
7. Teclee la siguiente línea: MODIFY STRUCTURE. Agregue un campo que se llame sexo, tipo
carácter, con un tamaño de uno.
6.2.3.Ejercicio 3 (práctica individual)
Diseñe una Base de Datos para controlar la información de los alumnos de esta escuela,
póngale el nombre EAO. Además introduzca 5 registros. Trate de utilizar casi todos los tipos de
campos.

7. Visualización de la información de una Base de Datos


Para examinar el contenido de una Base de Datos puede emplear las órdenes LIST o DISPLAY.
Si teclea la orden LIST se mostrará el contenido de la Base de Datos; no obstante, puede
presentar solo algunos campos, incluyendo sus nombres a, a continuación de LIST si especifica
más de un campo, deberá separar los nombres mediante comas. La sintaxis de LIST es la
siguiente:
LIST [camp01, camp02, ...] [TO PRINT]
Ejemplo: LIST nombres, apellidos
Donde camp01, campo2, ...corresponde a la lista de campos a mostrar. Mientras que TO PRINT lo
que hace es enviar el resultado a la impresora en lugar de la pantalla.
La orden DISPLAY permite obtener información en pantalla de registros de la Base de Datos, la
orden LIST muestra por omisión la totalidad de los registros, en tanto que DISPLAY sólo
muestra el registro actual. Para presentar más de un registro se requiere introducir un
argumento que especifique el alcance que tendrá la orden, como por ejemplo ALL o NEXT. Para
visual izar la Base de Datos completa teclee la siguiente línea DISPLAY ALL, la información se
detendrá tras completar una pantalla, reanudándose al pulsar una tecla. La sintaxis de la orden
DISPLAY es la siguiente:
DISPLAY [FIELDS campo1, camp02,...] [FOR condición]
Ejemplo: DISPLAY FIELDS nombres, apellidos FOR estatura>1.5
Hay ocasiones en que se conoce sólo parte de alguna información y es preciso localizarla
dentro de un campo, deberá
utilizar el siguiente formato:
DI
SPLAY FOR "texto a buscar" $campo
ejemplo: DISPLAY FOR "MA" $nombres
El texto a buscar es la cadena de caracteres a localizar y campo es el nombre del campo en el
que se ha de llevar a cabo la búsqueda, está misma técnica puede emplearse para localizar
datos dentro de un campo Memo.
7.1. Seguimiento de los registros
Por medio de la orden GO puede mover el puntero a un registro diferente, para colocar el
puntero en el primer registro del archivo. Con la orden GO TOP el puntero se coloca en el
primer registro de la Base de Datos, mientras que la orden GO BOTTOM lo coloca en el registro
final.

6
8. Modificación de una Base de Datos
Modificar el contenido de los registros y campos de una Base de Datos por medio de diversas
órdenes. La información de los registros puede editarse, por ejemplo: el nombre de una
persona, un número de teléfono en una lista de direcciones, incluso puede cambiar la
estructura de la Base de Datos añadiendo campos para nuevos elementos que no fueron
tenidos en cuenta al principio.
8.1. Edición de los registros de una Base de Datos
La orden CHANGE permite modificar los registros de una Base de Datos. Después de teclear
esta orden nos mostrará ventana (igual a la que aparece con la instrucción APPEND) con la
diferencia que aquí no se pueden agregar registros solamente se pueden modificar los que
existen en la Base de Datos.
8.2. Uso del modo BROWSE
Para entrar en el modo examinar teclee la orden BROWSE en la ventana Comando. Existen
otras opciones que pueden añadirse a esta orden, estas permiten bloquear los campos en una
posición para impedir que pueda quedar fuera de la visión al desplazar la pantalla la
combinación de CTRL con las flechas. Las opciones de BROWSE, que están disponibles,
proporcionan una mayor flexibilidad. La sintaxis de la orden BROWSE es la siguiente:
BROWSE [FIELDS campo1, campo2, ...] [FREEZE campo1]
ejemplo: BROWSE FIELDS nombres, apellidos, telefono FREEZE telefono
Por medio de la opción FIELDS, en combinación con la orden BROWSE, puede elegir los campos
específicos que se mostrarán al ejecutar esta orden, esta opción resulta especialmente útil
cuando sólo se desea editar una parte de la información.
ejemplo: BROWSE FIELDS nombres, apellidos, telefono
La opción FREEZE de la orden BROWSE permite limitar el proceso de edición a un campo
determinado. Está opción resulta muy útil cuando hay que modificar un campo en varios
registros; al emplearla la tecla Flecha derecha sitúa el cursor en el siguiente registro y no en el
siguiente campo. Esta opción también muestra otros campos pero únicamente se puede
modificar el que se encuentra especificado. ejemplo: BROWSE FREEZE telefono

9. Supresión de registros
Permite la utilización de dos órdenes, para borrar registros. Estás son DELETE y PACK.
La opción DELETE marca un registro para suprimirlo, pero sin llegar a eliminarlo, este método
permite marcar todos los registros que se desean suprimir en una sola operación. Si conoce el
número de registro que desea eliminar, puede introducir directamente la orden DELETE
RECORD <n>, donde n es el número de registro a suprimir, por ejemplo: DELETE RECORD 4.
Si posteriormente decide que es mejor no suprimir un registro, puede hacer uso de la orden
RECALL para deshacer la operación de marcado, para recuperar todos los registros deberá
teclear RECALL ALL, por ejemplo: RECALL RECORD 4.
Para evitar la aparición y el uso de registros que han sido marcados para ser borrados puede
activar la orden SET DELETED ON y para desactivar SET DELETED OFF.
Para borrar archivos completos puede hacer uso de la orden DELETE FILE, debe tener especial
cuidado en el momento de suprimir archivos ya que después de ejecutar la orden no existirá
ninguna posibilidad de recuperación.

10. Sustituciones globales con órdenes


Las órdenes de alcance global sirven para efectuar modificaciones en toda la Base de Datos y
no solo en un registro individual. Al utilizar opciones globales, la orden CHANGE localiza el
campo apropiado y luego pide al usuario que introduzca la modificación oportuna. La sintaxis
de esta orden es el siguiente:
CHANGE FIELDS campo FOR campo_clave = "nombre clave"

7
ejemplo: CHANGE FIELDS telefono FOR nombres = "Daniela"
Donde campo es el nombre del campo donde se realizarán los cambios y campo_clave es el
campo donde se llevará a cabo la búsqueda de nombre_clave. Es necesario encerrar esta
última cadena de caracteres entre comillas.
La orden REPLACE funciona de forma muy parecida a CHANGE, a excepción de que no pide al
usuario que introduzca la información después de localizar el campo. En lugar de esto, debe
especificarse el tipo de camino a operar en la misma orden, con
lo cual la modificación se realizará de forma automática, la sintaxis es la siguiente: .
REPLACE [ALL] campo WITH reemplazo [FOR condición]
ejemplo: REPLACE ALL email WITH "@garza.com" FOR apellidos = "Garza"
El parámetro alcance es opcional y se utiliza para determinar el número de registros que han
de ser analizados por REPLACE. Si se emplea ALL como alcance, se operará en la totalidad de
los registros. El parámetro campo indica el nombre del campo donde se realizará la sustitución,
en tanto que el parámetro reemplazo es la información que se insertará en los campos que
cumplan la condición.

11. Ordenación (SORT)


Por medio de la es posible definir la organización del contenido de una Base de Datos de
diferentes formas. La sintaxis
general es'
SORT ON campo1, campo2, ... [/A | /C | /D] TO <nuevo_archivo> FOR condición
La sintaxis básica es la siguiente:
SORT ON campo [/A | /C | /D] TO <nuevo_archivo>
ejemplo: SORT ON apellidos TO amigos1
De esta manera se creará un archivo con el nombre nuevo_archivo se colocará en orden
ascendente los datos. Este tipo de ordenación hace que los campos de tipo carácter, los
numéricos y los de fecha sean clasificados por orden alfabético, numérico y cronológico,
respectivamente.
Si utiliza la opción /D los campos de tipo carácter se ordenarán en forma descendente (de la Z a
la A), los campos numéricos de! valor más alto al más bajo y los campos de fecha en orden
cronológico inverso, es decir, de la fecha más actual a la más antigua. Si desea que los
caracteres en mayúsculas y en minúsculas a la hora de la ordenación se consideren iguales
puede incluir la opción /C, opción que se ajusta al criterio del diccionario. Cada vez que se lleva
a cabo una operación de ordenación se crea un nuevo archivo.
11.1. Ordenación según múltiples campos
A veces es necesario realizar una ordenación teniendo en cuenta más de un campo, esto puede
llevarse a cabo relacionando dichos campos como parte de la orden SORT, separándolos por
comas. El campo que marcará el origen de la ordenación será aquel que figure en primer lugar
en la lista, un campo primario es aquél en el cual el primer tipo de ordenación. La sintaxis es la
siguiente:
SORT ON [/A | /C | /D] campo1, camp02 TO nuevo_archivo ejemplo: SORT ON /C apellidos,
nombres TO amigos2
11.2. Ordenación de un subconjunto de una Base de Datos
Si añade una instrucción FOR a la orden SORT puede crear archivos ordenados que contengan
tan sólo unos determinados
registros de la Base de Datos original, la sintaxis para esta orden es la siguiente:
SORT ON [/A | /C | /D] campo TO nuevo_archivo FOR condición

8
ejemplo: SORT ON apellidos TO amigos3 FOR estatura<1.68
11.3. Ordenación de campos específicos
Crear un archivo de incluya exclusivamente determinados campos de una Base de Datos de
origen, es posible sólo especificando la lista de los campos en la orden SORT, la sintaxis es la
siguiente:
SORT ON campo [/A | /C | /D] TO nuevo_archivo FIELDS lista_campos
ejemplo: SORT ON apellidos /C TO amigos4 FIELDS nombres, apellidos, telefono
11.3.1.Ejercicio 4
Ejecute las siguientes instrucciones y anote o explique lo que le mostraron cada una de ellas.
LIST
LIST apellidos, nombres, telefono _______________________________________________________________
DISPLAY ALL ____________________________________________________________________________________
GO TOP ________________________________________________________________________________________
DISPLAY ________________________________________________________________________________________
GO BOTTOM ____________________________________________________________________________________
DISPLAY ________________________________________________________________________________________
DISPLAY apellidos, nombres, telefono FOR estatura<1.50________________________________________
_________________________________________________________________________________________________
DISPLAY FOR "@yahoo.com" $email ____________________________________________________________
_________________________________________________________________________________________________
CHANGE ________________________________________________________________________________________
BROWSE _______________________________________________________________________________________
BROWSE FIELDS apellidos, nombres, email _____________________________________________________
BROWSE FREEZE telefono ______________________________________________________________________
BROWSE FIELDS apellidos, nombres, telefono FREEZE telefono__________________________________
_________________________________________________________________________________________________
DELETE RECORD 5 _____________________________________________________________________________
_________________________________________________________________________________________________
RECALL ALL ____________________________________________________________________________________
DELETE RECORD 4 _____________________________________________________________________________
PACK ___________________________________________________________________________________________
CHANGE FIELDS sexo FOR nombres = "Lorena" _________________________________________________
RE PLACE ALL sexo WITH "/" ____________________________________________________________________
Utilice la orden SORT para crear una base de datos ordenada mediante el campo apellidos y
nombres; que sólo contenga los campos apellidos, nombres, telefono y email.

12. Indexación
Un archivo índice consta al menos de un campo de una Base de Datos. Este campo puede
ordenarse alfabéticamente, numéricamente o cronológicamente y junto a cada entrada de
dicho campo, se incluye el número de registro que se utilizará como referencia en la Base de
Datos primaria u original, un archivo índice es una ordenación virtual de la Base de Datos
original, dado que en realidad se ordenan los registros de ésta.
Los archivos índices constituyen archivos independientes que contienen información relativa a
la localización de registros individuales en la Base de Datos original. Cuando se abre un archivo

9
de Base de Datos junto con el archivo de índice, el primer registro que se recupera no es en
realidad el que ocupa la posición inicial en la Base de Datos de partida, sino el que figura como
primero en el índice.
12.1. Tipos de índices
El primer método consiste en utilizar un archivo índice compuesto que posee la extensión CDX,
el cual contiene información sobre los diferentes índices que se han creado a partir del archivo
original.
La opción T AG de la orden INDEX almacena por omisión la información del índice en un archivo
índice compuesto, al cual se asigna de forma automática el mismo nombre que a la Base de
Datos original. Este archivo CDX, conocido como archivo CDX estructural, se abre y actualiza de
forma automática cada vez que se abre la Base de Datos.
El segundo método para indexar archivos consiste en crear archivos índice IDX individuales
para cada índice elegido. Con este procedimiento, la información correspondiente a cada índice
se almacena en un archivo independiente.
Estos archivos IDX pueden ser de dos tipos: archivo IDX compactos y archivos IDX no
compactos. Los primeros requieren menos espacio en el disco, pero los no compactos son
compatibles con las otras versiones de FoxPro.
El primer método de indexación, que hace uso de archivos índice compuestos para guardar
toda la información de índice es, sin duda mucho más eficaz. La sintaxis de esta orden es la
siguiente:
INDEX ON expresion TO archivo_indice [FOR condicion] [UNIQUE] [COMPACT]
Este tipo de orden INDEX dará lugar a un único índice IDX con toda la información de índice
FoxPro asigna automáticamente la extensión: IDX a todos los archivos de índice. Para crear un
archivo índice basado en el campo indicado, el cual incluirá todos los registros, utilice la
siguiente sintaxis:
INDEX ON campo TO archivo_indice
ejemplo: INDEX ON apellidos TO apami
La cláusula UNIQUE constituye un índice sin repeticiones. Esto puede resultar de utilidad
cuando se pretende omitir los registros duplicados. La expresión FOR permite efectuar archivos
indexados selectivos que contengan exclusivamente aquellos registros que cumplan
determinadas condiciones.
La cláusula COMPACT hace que el archivo índice sea almacenado en el formato compacto de
los archivos IDX. Si se omite está opción se creará una archivo no compacto IDX. Para añadir
nuevos índices a un archivo índice compuesto puede utilizar la sentencia TAG en la orden
INDEX. La sintaxis de esta orden es la siguiente:
INDEX ON expresion TAG etiqueta_indice [FOR] [UNIQUE] [COMPACT]
Esta sintaxis de a orden INDEX añade una etiqueta de índice al archivo compuesto estructural
(CDX). Si no existe el archivo, se creará al ejecutarse la orden; si existe uno con este nombre,
se añadirá una nueva etiqueta de índice.
12.2. Indexación selectiva
Es posible hacer uso de la cláusula FOR en combinación con la orden INDEX ON, la sintaxis es la
siguiente:
INDEX ON expresion TAG nombre_etíqueta FOR condicion
La condición FOR es cualquier expresión que pueda evaluarse verdaderamente o falsa, si desea
mantener compatibilidad con las versiones antiguas de FoxPro la sintaxis es la siguiente:
INDEX ON expresion TO archivo FOR condicion

10
12.3. Indexación con base en múltiples campos
Existe la posibilidad de crear archivos índice basados en múltiples campos es similar a la
ordenación en función de varios campos. No obstante, existe una limitación ya que no es
posible indexar directamente por varios campos que no sean del mismo tipo. La sintaxis es la
siguiente:
INDEX ON camp01+camp02 TAG nombre_etiqueta
ejemplo: INDEX ON apellidos+nombres TAG nomap
Puede emplear está técnica para crear un archivo índice sobre cualquier número de campos de
un registro. El signo más (+) se utiliza siempre con la orden INDEX para ligar unos campos con
otros. Al igual que sucedía con la ordenación es posible indexar sobre múltiples campos, donde
la prioridad queda establecida por el orden de aparición en la línea de órdenes.
12.4. Indexación con base en campos de tipos diferentes
Una limitación de uso básico de la orden INDEX, consiste en la posibilidad de indexar
directamente con base en una combinación de campos de tipos diferentes. Por ejemplo.. no se
podría indexar con respecto a una combinación de los campos caracteres y numéricos
Para indexar campos numéricos combinados se requiere convertir en primer lugar las
expresiones numéricas a valores de cadena y utilizar después el signo más (+) para
combinarlos.
La función DTOC() permite convertir el contenido de un campo de fecha en una cadena de
caracteres con el formato año
mes-día. La función STR() permite convertir el contenido de un campo numérico en una cadena
de caracteres.
Para conseguir elaborar un índice de acuerdo con campos de diferentes tipos puede utilizar
ambas funciones en combinación con ordenes INDEX. La sintaxis normal de una orden INDEX,
cuando se combina con estas funciones es la siguiente:
INDEX ON campo_carácter+STR(campo_numérico)+DTOS(campo_fecha) TO archivo_índ
ejemplo: INDEX ON apellidos+STR(telefono)+DTOC(nacimiento) TO amigos
12.5. Como abrir una Base de Datos y archivos índice
Al abrir una Base de Datos mediante la orden USE existe la posibilidad de abrir
simultáneamente un archivo índice agregando una orden seguida del nombre del índice. Las
sintaxis son las siguientes:
Para los índices creados con: INDEX ON expresion TAG nombre_etiqueta
USE archivo ORDER nombre_etiqueta
Para los índices creados con: lNDEX ON expresion TO nombre_etiqueta
USE archivo INDEX nombre_etiqueta
Si trabaja con un archivo de índice compuesto con el mismo nombre que el de la Base de Datos
original (o archivo índice compuesto) no será necesario especificar el nombre del archivo índice
en la orden USE. Si existe el archivo índice compuesto estructural este es abierto de forma
automática. Si decide añadir etiquetas índices compuestos con nombres, puede activarlos al
mismo tiempo que abre la Base de Datos mediante la siguiente variación de la orden USE:
USE archivo INDEX archivo.cdx
12.6. Utilización de SET INDEX
Para que un índice tome el control de la forma de presentación de los registros debe activarse.
Cuando se crea un índice, éste queda automáticamente activado; la orden SET INDEX, por su
parte, permite activar un índice que no se encuentra activo.

11
Al hacer uso de la orden SET INDEX puede activar cualquiera de los índices existentes., la
sintaxis es la siguiente:
SET INDEX TO nombre_índice
12.7. Apertura de archivos índice
Es muy sencillo conocer en cualquier momento cuáles son los índices que están en uso por
medio de las órdenes LIST STATUS o DISPLAY STATUS. Un archivo índice activo es siempre un
archivo índice abierto, por lo que puede usar la orden SET IN DEX para abrir un archivo índice
que se encuentre cerrado.
Siempre que se realicen cambios o se añadan registros en una Base de Datos, FoxPro
actualizará de forma automática todos los archivos índice que se encuentren abiertos. Si desea,
podría cerrar todos los archivos índice y dejar abierta tan solo la Base de Datos original,
mediante la orden CLOSE INDEX.
12.8. Utilización de la orden REINDEX
Si modifico una Base de Datos y no se acordó de abrir un archivo índice del tipo IDX, podrá
actualizarlo aún mediante la orden REINDEX. La sintaxis es la siguiente:
REINDEX
La orden PACK hace que sean reindexados de forma automática todos los archivos índices.
12.8.1.Ejercicio 5
Ejecute las siguientes instrucciones y anote o explique lo que le mostraron cada una de ellas.
USE amigos
INDEX ON apellidos TO ami1 ____________________________________________________________________
BROWSE _______________________________________________________________________________________
CLOSE INDEX ___________________________________________________________________________________
INDEX ON apellidos TAG ami2 __________________________________________________________________
BROWSE _______________________________________________________________________________________
CLOSE INDEX ___________________________________________________________________________________
INDEX ON apellidos+nombres TAG ami3 ________________________________________________________
BROWSE _______________________________________________________________________________________
CLOSE INDEX ___________________________________________________________________________________
INDEX ON apellidos+DTOS(nacimiento)+STR(estatura) TAG ami4 _______________________________
BROWSE _______________________________________________________________________________________
CLOSE INDEX ___________________________________________________________________________________
CLOSE ALL _____________________________________________________________________________________
USE amigos INDEX ami1 ________________________________________________________________________
LlST ____________________________________________________________________________________________
CLOSE ALL _____________________________________________________________________________________
USE amigos ORDER ami2 _______________________________________________________________________
LIST ____________________________________________________________________________________________
CLOSEINDEX ___________________________________________________________________________________
SET INDEX TO ami1 _____________________________________________________________________________
LIST STATUS ____________________________________________________________________________________
DISPLAY STATUS _______________________________________________________________________________

12
13. Búsqueda de información específica
Existen dos órdenes que pueden utilizarse con archivos indexados: FIND y SEEK. Estás órdenes
permiten una rápida localización de información en un archivo indexado. Ambas órdenes se
describen pues tiene relación con los archivos indexados, estas órdenes sólo actúan sobre el
índice activo. Las órdenes FIND y SEEK se limitan a colocar el puntero sobre el registro
deseado.
Un problema de las órdenes FIND y SEEK es el requisito del archivo índice. La ventaja es que
tienen una mayor velocidad que la orden LOCATE.
Cuando se trata de localizar una cadena de caracteres, tanto FIND como SEEK permiten la
especificación de tan sólo los primeros caracteres de la cadena.
La sintaxis de la orden FIND es la siguiente:
FIND cadena_carácteres
Ejemplo: FIND "Monterrey"
La sintaxis de la orden SEEK es la siguiente:
SEEK n
Ejemplo: SEEK 5
Donde n puede ser un número, una cadena de caracteres (encerrada entre comillas) o una
variable.
Las órdenes LOCATE y CONTINUE permiten realizar búsquedas secuenciales (registro a registro)
sobre cualquier Base de Datos. Las órdenes FIND y SEEK funcionan de forma mucho más
rápida, pero sólo son utilizables sobre archivos indexados. La sintaxis es la siguiente:
LOCATE [alcance] FOR condición
Aquí condición es una expresión lógica que define la búsqueda. El parámetro alcance, que es
opcional, puede utilizarse para delimitar el número de registros sobre los cuales busc8r.
También puede introducir el parámetro REST, con lo cual se aplicará LOCATE a todos los
registros de la Base de Datos a partir de la posición del puntero.

14. La orden COPY


Es orden permite copiar la totalidad o parte de un archivo de Base de Datos [a sintaxis es la
siguiente:
COPY TO [unidad:\[carpetas\]]archivo.ext [FIELDS lista_campos] [FOR condición]
Ejemplo: COPY TO a:\bds\amigos5 FIELDS apellidos, nombres FOR estatura>1.5
Donde unidad puede ser A, B, C, D...; carpetas son si se desean una o varias carpetas o
dirección de carpetas donde estará el archivo, archivo es el nombre del archivo donde se
copiaran los registros (la Base de Datos a ser copiada debe estar abierta con la orden USE para
poder añadir datos).
Al añadir la palabra FIELDS tras el nombre del archivo y especificar después una lista de
campos, se está informando a FoxPro que copie en la nueva Base de Datos sólo los campos que
figuran en la lista.
Cuando se usa con la orden COPY TO, la cláusula FOR opcional limita los registros que se
copiarán en el nuevo archivo; copia únicamente aquellos que cumplan la condición especificada
en la cláusula FOR.
nSin embargo si lo que desea es copiar solo la estructura de la Base de Datos la orden
adecuada es la siguiente:
COPY STRUCTURE TO archivo

13
15. Introducción a los informes
La creación de informes es el fin de una Base de Datos. Para obtener respuestas rápidas a
cuestiones específicas es posible efectuar consultas, en un informe rápido puede combinarse a
su vez con consultas o con órdenes selectivas, como SET FIL TER o SET FIELDS a fin de obtener
una mayor precisión, para crear informes personalizados e imprimir cartas o etiquetas de
correo puede hacer uso de! generador de informes. Los informes pueden dividirse en dos
grupos: los informes rápidos y los personalizados.
La opción informe rápido del menú informe, estos incluyen por lo general la totalidad de los
campos de la Base de Datos. Los nombres de campo elegidos en el diseño de la Base de Datos
son tomados por omisión como cabeceras de los mismos.
Los informes personalizados, por su parte, permiten una mayor adecuación a las necesidades
de cada momento, estos informes pueden contener cualquier tipo de datos que sea posible
extraer de los campos de la Base de Datos. Puede incluir información numérica, encabezados,
la fecha de impresión y el número de cada página.
15.1. Obtención de un informe rápido
Para crear un informe rápido, sólo ha y que abrir la Base de Datos e introducir en la ventana
Comandos la orden CREATE REPORT archivo. Donde archivo será el nombre que se le
asignará al reporte.
Haga clic en el botón distribución de campos: relativo a la disposición en columnas que se
encuentra a la izquierda.
Es posible que el informe sea mostrado en pantalla o incluso impreso, utilizando la orden
REPORT FORM. Al introducir esta orden con la sintaxis siguiente:
REPORT FORM archivo [TO PRINT]
Donde archivo corresponde al nombre del archivo reporte. Con la opción TO PRINT envía el
reporte a la impresora además de enviarlo a la pantalla.
Si no desea que aparezcan todos los campos en el informe, consiste en hacer clic en la casilla
de verificación de Campos (Fields...) y después en el botón MOVER (MOVE) para trasladarlo al
cuadro de lista Campos Seleccionados (Selected Fields); haga clic en el botón Aceptar (OK) del
cuadro de diálogo Informe rápido.
La otra forma de obtener un informe rápido con campos específicos consiste en utilizar la orden
SET FIELDS antes de crear el informe. La sintaxis de esta orden es la siguiente'
SET FIELDS TO camp01, campo2, campo3, ..., campoN
Esta orden hace que la Base de Datos tenga en apariencia, sólo los campos especificados en la
línea de órdenes. Una vez creado el informe, puede hacer que queden disponibles de nuevo los
campos restantes sin más que cerrar y abrir la Base de Datos o mediante la orden SET FIELDS
TO ALL.
15.1.1.Ejercicio 6
USE amigos INDEX ami1 ________________________________________________________________________
FIND "Ledezma" ________________________________________________________________________________
DISPLAY ________________________________________________________________________________________
SEEK5 __________________________________________________________________________________________
DISPLAY ________________________________________________________________________________________
CLOSE ALL _____________________________________________________________________________________
USE amigos ____________________________________________________________________________________
LOCA TE FOR nombres="Mayra" ________________________________________________________________

14
15.1.2.Ejercicio 7
1. Realice una copia de la base de datos amigos que contenga solo los campos apellidos,
nombres, telefono, email y que sean de sexo opuesto.
2. Copie la estructura de la base de datos amigos.
15.1.3.Ejercicio 8
Realice un informe rápido de la base de datos amigos.

16. Ordenes para programación


Para realizar o establecer el código de un programa para posteriormente ensamblarlo o unirlo
con otros programas son indispensables dos instrucciones MODIFY COMMAND y DO.
16.1. Modífy Command
Esta instrucción es usada para crear códigos de programas. La sintaxis es:
MODIFY COMMAND <nombre archivo>
Ejemplo: MODIFY COMMAND eje10
16.2. Do
Esta instrucción es usada para ejecutar los códigos de programas. La sintaxis es:
DO <nombre archivo>
Ejemplo: DO eje10
16.3. @... SAY
Esta instrucción es usada en códigos de programas para colocar el apuntador en determinada
coordenada par, posteriormente imprimir datos. La sintaxis es:
@ x, y SAY variable
Ejemplo: @ 03,05 SAY "Dame el nombre:"
16.4. @... GET
Esta instrucción es usada en códigos de programas para solicitar información determinada para
asignarla a una variable que se especifique. Para que funcione después de esta o varias de
estas instrucciones deben colocarse la sentencia READ. La sintaxis es:
@ x, y GET variable
ejemplo: @ 03,20 GET nombre
16.4.1 Ejercicio 9
Teclea el siguiente código y ejecútelo.
En la ventana COMMAND:
MODIFY COMMAND eje09

En la ventana eje09.prg
* eje09.prg
* en base de dos calificaciones determina,
* si tiene promedio aprobatorio o reprobatorio
CLOSE ALL && cierra todas las ventanas de trabajo de FoxPro
CLEAR && limpia la pantalla

* ********************************************
* inicialización de variables
matricula = 0
nombre = SPACE(30)
calif1 = 0
calif2=0

15
* *********************************************

* entrada de datos
@ 02,05 SAY "Teclee la matricula...";
GET matricula PICTURE "999";
RANGE 101,499
@ 03,05 SAY "Dame el nombre...";
GET nombre PICTURE "@!";
VALID NOT EMPTY(nombre)
@ 05,05 SAY "Dame la 1a. calificación...";
GET calif1. PICTURE "99";
RANGE 0,10
@ 07,05 SAY "Dame la 2ª. calificación...";
GET calif2 PICTURE "99";
RANGE 0,10
READ
promedio=(calif1+calif2)/2
?"Nombre...: "+nombre
?"Matricula...: "+STR(matricu1a)
?"1a. Calificación...: "+STR(calif1,2,0)
?"2a. Calificación...: "+STR(calif2,2,0)
?"Promedio...: "+STR(promedio,3,1)
IF promedio<7
?" ---> Reprobado"
ELSE
?" ---> Aprobado"
ENDIF

Al terminar de teclear el programa proceda a guardarlo con las teclas Control + S, enseguida
compile el programa seleccionando del Menú Programa, la opción Compilar, si le aparece una
ventana marcando un error verifique que las instrucciones del programa estén bien capturadas.
Cuando le aparezca el mensaje 0 errores en la barra de estado su programa ya no tendrá
errores y está listo para ser ejecutado, con el programa abierto presione las teclas Control + E,
o en la ventana COMMAND teclee DO eje09.
Capture los datos que se le indican y verifique si se realizan las operaciones correctamente.
Estas operaciones las realizará cada vez que termine de capturar un programa y desee
ejecutarlo para ver los resultados de este.
16.4.2.Ejercicio 10
Teclea el siguiente código y ejecútelo.
En la ventana COMMAND:
MODIFY COMMAND eje10

En la ventana eje10.prg
* eje10.prg
* en base de dos calificaciones determina,
* si tiene promedio aprobatorio o reprobatorio

CLOSE ALL && cierra todas las ventanas de trabajo de FoxPro


CLEAR && limpia la pantalla

* ********************************************
* inicialización de variables
matricula = 0
nombre = SPACE(30)
calif1 = 0
calif2=0
* *********************************************

* entrada de datos

16
@ 02,05 SAY "Teclee la matricula...";
GET matricula PICTURE "999";
RANGE 101,499;
VALID matricula > 100
@ 03,05 SAY "Dame el nombre...";
GET nombre PICTURE "@!";
VALID NOT EMPTY(nombre)
@ 05,05 SAY "Dame la 1a. calificación...";
GET calif1. PICTURE "99";
RANGE 0,10
@ 07,05 SAY "Dame la 2ª. calificación...";
GET calif2 PICTURE "99";
RANGE 0,10
READ
promedio=( calif1 +calif2 )/2
@ 09,05 SAY "Nombre..."+nombre
@ 10,05 SAY "Matricula..."+STR(matricu1a)
@ 11,05 SAY "1a. Calificación..."+STR(calif1,2,0)
@ 12,05 SAY "2a. Calificación..."+STR(calif2,2,0)
@ 13,05 SAY "Promedio..."+STR(promedio,3,1)

IF promedio<7
@ 14,05 SAY "---> Reprobado"
ELSE
@ 14,05 SAY "---> Aprobado"
ENDIF

16.4.3.Ejercicio 11
Teclea el siguiente código y ejecútelo.
En la ventana COMMAND:
MODIFY COMMAND eje11

En la ventana eje11.prg
* eje11.prg
close all
clear
* *********************************************
* inicialización de variables
op=1
DO WHILE op=1
CLEAR
radio=O
area=O
* *********************************************
@ 02,05 SAY "Dame el radio";
GET radio PICTURE "999.99";
VALlD radio > 0
READ
area=3.1416*radio*radio
@ 05,05 SAY "El area es ---> "
@ 05,21 SAY area PICTURE "99,999.99"
@ 07,05 SAY "Deseas continuar? [1]->Si [2]->No";
GET op PICTURE "9";
RANGE 1,2
READ
IF op=2
EXIT && provoca la salida del bucle "DO WHILE... ENDDO"
ENDIF
ENDDO

17
16.4.4.Ejercicio 12
Teclea el siguiente código y ejecútelo.
En la ventana COMMAND:
MODIFY COMMAND eje12

En la ventana eje12.prg
* eje12.prg
close all
clear
* ********************************************
* inicialización de variables
nombre = SPACE(30)
tp = l
cantidad = 0
pago = 0
* ******************************************* *
@ 02,05 SAY "Danle el nombre del cliente ";
GET nombre PICTURE "@!";
VALID NOT EMPTY(nombre)
@ 03,05 SAY "Danle el tipo de articulo <1,2,3>... ";
GET tp PICTURE "9";
RANGE 1,3
@ 04,05 SA y "Dame la cantidad de articulos ";
GET cantidad PICTURE "999";
VALID cantidad >= 1
READ

@ 10,05 SAY "Nombre "+nombre


@ 11,05 SAY "Debe pagar"

DO CASE
CASE tp=1
pago=cantidad*6.10
CASE tp=2
pago=cantidad*7.50
CASE tp=3
pago=cantidad*7.25
ENDCASE
@ 11,24 SAY pago PICTURE "$99,999.99"

16.4.5.Ejercicio 13
Teclea el siguiente código y ejecútelo.
En la ventana COMMAND:
MODIFY COMMAND eje13

En la ventana eje13.prg
* eje13.prg
DIMENSION precio(4) && Inicio de variable de una dimension (vector)
* *********************************
* inicialización de variables
cantidad = 0
tipo = 0
nombre = SPACE(30)
cuenta = 0
pago = 0
precio(1) = 5
precio(2) = 6
precio(3) = 9
* *********************************
CLOSE ALL
op=1
DO WHILE op=1

18
CLEAR
@ 05,05 SAY "Dame el nombre ";
GET nombre PICTURE "@!";
VALID NOT EMPTY(nombre)
@ 06,05 SAY "Dame No. de cuenta ";
GET cuenta PICTURE "999";
RANGE 1,999
@ 07,05 SAY "Cantidad de articulos ";
GET cantidad PICTURE "99";
RANGE 1,99
@ 08,05 SAY "Tipo de articulo <1-3>... ";
GET tipo PICTURE "9";
RANGE 1,3
READ
pago=cantidad*precio(tipo)
@ 10,10 SAY "Debe pagar... $ "
@ 10,26 SAY pago PICTURE "99,999.99"
@ 15,05 SAY "Continuar? [1]-Si [2]-No";
GET op PICTURE "9";
RANGE 1,2
READ
* **************************
* limpiar variables
cantidad = 0
tipo = 0
nombre = SPACE(30)
cuenta = 0
pago = 0
* **************************
IF op=2
EXIT && salir del bucle
ENDIF
ENDDO

16.4.6.Ejercicio 14
Teclee un programa que genere un archivo de salida a pal1ir de un archivo de entrada los
cuales contendrán:
Archivo de Entrada ESCUELA.DBF
Matricula Nombre Parcial 1 Parcial 2
mat_e nombre_e par1_e par2_e
Numéri 3 0 Carácte 20 Numéric 3 0 Numéric 3 0
co r o o
689 JUAN BARRERA 90 50
910 GLORIA MENDEZ 100 70
785 IRMA SALAS 60 50
956 SAUL ISLAS 70 85
758 LORENA RIVAS 95 55
Archivo de Salida PROMEDIO.DBF
Matricula Nombre Parcial 1 Parcial 2 Promedio
mat_s nombre_s par1_s par2_s promedio_s
Numéri 3 0 Carácte 20 Numéric 3 0 Numéric 3 0 Numéric 5 1
co r o o o
689 JUAN BARRERA 90 50
910 GLORIA MENDEZ 100 70
785 IRMA SALAS 60 50
956 SAUL ISLAS 70 85
758 LORENA RIVAS 95 55
Teclea el siguiente código y ejecútelo.
En la ventana COMMAND:
MODIFY COMMAND eje14

19
En la ventana eje14.prg
* escuela.prg
* arch-e escuela.dbf.
* arch-s promedio.dbf
* *********************************************
* inicialización de variables
mat_w = 0
nombre_w = SPACE(20)
promedio_w = 0
par1_w = 0
par2_w = 0
* *********************************************
SELECT 1 && area de trabajo para escuela.dbf
USE escuela
SELECT 2 && area de trabajo para promedio.dbf
USE promedio
* borrar todos los datos de la BD activa (promedio)
DELETE ALL
PACK
SELECT 1 && cambiar a la BO escuela
* lectura secuencial del archivo escuela.dbf
DO WHILE !EOF() && mientras no sea el final de la BO activa
* transferir los datos de la BO entrada a las variables del programa
mat_w = mat_e
nombre_w = nombre_e
par1_w = par1_e
par2_w = par2_e
promedio_w = (par1_w+par2~w)/2
SKIP && salta al siguiente registro de escuela.d
SELECT 2 && cambiar a la BD promedio
APPEND BLANK && abre un registro en blanco
* reemplaza los valores de las variables del programa
* a los campos de la BO activa (promedio)
REPLACE mat_s WITH mat_w
REPLACE nombre_s WITH nombre_w
REPLACE par1_s WITH par1_w
REPLACE par2_s WITH par2_w
REPLACE promedio_s WITH promedio_w
SELECT 1 && cambia a la BD escuela
ENDDO
SELECT 2 && cambia a la BD promedio
BROWSE && los datos de la BD salida (promedio)
CLOSE ALL

16.4.7.Ejercicio 15
Diseñe un programa que genere un archivo de salida a partir de un archivo de entrada los
cuales contendrán:
Archivo de Entrada EMPLEADO.DBF
Nombre del Horas Tarifa por hora
Empleado Trabajadas
nomemp_e hortra_e tarhor_e
Carácter 20 Numéri 2 0 Numéri 5 2
co co
JUAN MOLINA 30 4.50
DORA VELEZ 40 3.90
SARA CASTRO 45 4.70
SAUL HIDALGO 39 3.50
CLARA MORA 46 4.20
Archivo de Salida NOMINA.DBF
Nombre del Pago Bruto IMSS Pago Neto
Empleado
nomemp_s pagbru_s imss_s pagnet_s

20
Carácter 2 Numéri 7 2 Numéri 7 2 Numéri 7 2
0 co co co
JUAN MOLINA 135.00 6.48 128.52
DORA VELEZ 156.00 7.49 148.51
SARA CASTRO 211.50 10.15 201.35
SAUL HIDALGO 136.50 6.55 129.95
CLARA MORA 193.20 9.27 183.93
NOTA:
Pago Bruto = (Horas Trabajadas)*(Tarifa por Hora)
IMSS = (Pago Bruto) * (0.048)
Pago Neto = (Pago Bruto) -(IMSS)
16.4.8.Ejercicio 16
Diseñe un programa que genere un archivo de salida a partir de un archivo de entrada los
cuales contendrán:
Archivo de Entrada NOTA.DBF
No. Factura Nombre Venta
numfac_e nombre_e venta_e
Numéri 4 0 Carácte 20 Numéri 3 0
co r co
1596 RAFAEL SOSA 350
1852 PERLA VELA 90
1956 ROSA MENDEZ 260
1784 RAUL ZAVALA 55
2106 LAURA VAZQUEZ 195
Archivo de Salida FACTURA.DBF
No. Factura Nombre Venta %Descuento Importe Neto
numfac_s nombre_s venta_s desc_s impneto_s
Numéric 4 0 Carácte 20 Numéri 3 0 Numéri 2 0 Numéri 7 2
o r co co co
1596 RAFAEL SOSA 350 3 339.50
1852 PERLA VELA 90 2 88.20
1956 ROSA MENDEZ 260 3 252.20
1784 RAUL ZAVALA 55 2 53.90
2106 LAURA VAZQUEZ 195 3 189.15
NOTA:
a) Si el importe de Venta excede de $100.00 pesos se dará un 3% de Descuento, si el importe
de Venta es menor o igual a $100.00 se dará un 2% de Descuento.
b) Importe de descuento = (Importe de Venta)*((Porcentaje de descuento)/100)
c) Importe de descuento neto = (Importe de Venta) -(Importe de descuento)
16.4.9.Ejercicio 17
Diseñe un programa que genere un archivo de salida a partir de un archivo de entrada los
cuales contendrán:
Archivo de Entrada TARIFA.DBF
Nombre del Horas Tarifa por
Empleado Trabajadas hora
nomemp_e hortra_e tarhor_e
Carácter 20 Numér 2 0 Numér 5 2
ico ico
JUAN MOLINA 30 4.50
DORA VELEZ 40 3.90
SARA CASTRO 45 4.70
SAUL HIDALGO 39 3.50
CLARA MORA 46 4.20
Archivo de Salida SUELDO.DBF
Nombre del Sueldo

21
Empleado
nomemp_e sueldo_s
Carácter 20 Numér 7 2
ico
JUAN MOLINA 135.00
DORA VELEZ 156.00
SARA CASTRO 229.00
SAUL HIDALGO 136.50
CLARA MORA 214.20
NOTA:
Sueldo = (Horas trabajadas)*(Tarifa por Hora)+(horas extra)*(3.5)
Las horas extras son aquellas que pasan 40 y las normales son 40 o menos.
16.4.7. Ejercicio 18
Escriba un programa que genere un archivo de salida a partir de un archivo de entrada los
cuales contendrán:
Archivo de Entrada VENTA.DBF
Nombre del Código Importe 1 Importe 2
Empleado
nomemp_e Cod_e imp1_e imp2_e
Carácter 20 Numér 1 0 Numér 3 0 Numér 3 0
ico ico ico
RAUL GARZA 2 530 150
AIDA SANCHEZ 1 50 15
HILDA IBARRA 3 45 10
YAZMIN IGLESIAS 2 630 20
EDGAR PEREZ 3 30 25
Archivo de Salida COMISION.DBF
Nombre del Importe
Empleado Ganado
nomemp_s Impgan_s
Carácter 20 Numér 7 2
ico
RAUL GARZA 530.00
AIDA SANCHEZ 750.00
HILDA IBARRA 486.00
YAZMIN IGLESIAS 630.00
EDGAR PEREZ 810.00
NOTA'
a) Si es salario (código 1), multiplique el importe 1 por el importe 2 para obtener el importe de
lo ganado.
b) Si es sueldo (código 2), el importe de lo ganado es igual al importe 1.
c) Si es comisión (código 3), multiplique el importe 1 por el importe 2 y agregue un 8%
adicional para obtener el importe de lo ganado.

22

Vous aimerez peut-être aussi