Revista Compus21_foxpro-Jose de la Rosa Vidal-

68
Guis del Usuario Revista Compus Prácticas FoxPro INTRODUCCION En este módulo daremos a conocer al estudiante el lenguaje de programación Visual Fox Pro 6.0. Se pretende familiarizar al alumno con el entorno de desarrollo de aplicaciones para base de datos. Visual Fox Pro pertenece a la familia Xbase lo que hace que su programación sea sencilla, estructurada y más fácil de entender tanto para programadores principiantes como programadores expertos. Es una potente herramienta orientada a objetos para la creación y administración de bases de datos y para el desarrollo de aplicaciones profesionales. Ofrece todo lo necesario para organizar la información en tablas, realizar consultas, crear bases de datos relacionales, programar aplicaciones, informes, etc. Prof. José de La Rosa Página 1

description

Realiza conferencias de Computación e Informática fullWindows todas las versiones: xp, vista, windows sevenOFFICE(word, excel, power point, access, utilitarios)Diseño Web( fireword, dreamweaver, flash, action script )Diseño Grafico(corelDraw, Indesing, Photoshop)Visual Basic.netMarketing en Redes SocialesInternetblogsforumposicionamientocanales virtualesManejo de reportes(Google, Analytcs)traficoportales webportales virtuales.Impacto asi Dinamicas en Oratoria.contcatanos: [email protected] movil: 51-997675681

Transcript of Revista Compus21_foxpro-Jose de la Rosa Vidal-

Guis del Usuario Revista Compus Prácticas FoxPro

INTRODUCCION

En este módulo daremos a conocer al estudiante el lenguaje de programación

Visual Fox Pro 6.0. Se pretende familiarizar al alumno con el entorno de desarrollo de

aplicaciones para base de datos.

Visual Fox Pro pertenece a la familia Xbase lo que hace que su programación sea

sencilla, estructurada y más fácil de entender tanto para programadores principiantes como

programadores expertos.

Es una potente herramienta orientada a objetos para la creación y administración de

bases de datos y para el desarrollo de aplicaciones profesionales. Ofrece todo lo necesario

para organizar la información en tablas, realizar consultas, crear bases de datos

relacionales, programar aplicaciones, informes, etc.

Prof. José de La Rosa Página 1

Guis del Usuario Revista Compus Prácticas FoxPro

VISUAL FOXPRO

Visual FoxPro es un gestor de base de datos, orientado a la programación de

objetos. Se dice esto porque utiliza objetos prediseñados, a la vez Visual FoxPro es una

aplicación que permite gestionar y manipular información organizada en una base de datos.

Puede elaborar consultas, informes, pantallas, menús y proyectos sobre una o varias

tablas.

Desarrolla aplicaciones en un ambiente orientado a objetos con características

cliente/servidor.

CONCEPTOS BÁSICOS:

Base de Datos: Una base de datos o banco de datos es un conjunto de datos pertenecientes

a un mismo contexto y almacenados sistemáticamente para su posterior uso. En este

sentido, una biblioteca puede considerarse una base de datos compuesta en su mayoría por

documentos y textos impresos en papel e indexados para su consulta.

Existen unos programas denominados sistemas gestores de bases de datos, abreviado

SGBD, que permiten almacenar y posteriormente acceder a los datos de forma rápida y

estructurada. Las propiedades de estos SGBD, así como su utilización y administración, se

estudian dentro del ámbito de la informática. Las Bases de datos se agrupan en tablas.

Tablas o entidades: Tabla en las bases de datos, se refiere al tipo de modelamiento de

datos, donde se guardan los datos recolectados por un programa. Su estructura general se

asemeja a la vista general de un programa de Hoja de cálculo.

Las tablas se componen de dos estructuras:

Campo: Corresponde al nombre de la columna. Debe ser único y además de tener un tipo

de dato asociado.

Registro: Corresponde a cada fila que compone la tabla. Allí se componen los datos y los

registros. Eventualmente pueden ser nulos en su almacenamientos.

En la definición de cada campo, debe existir un nombre único, con su tipo de dato

correspondiente. Esto es útil a la hora de manejar varios campos en la tabla, ya que cada

nombre de campo debe ser distinto entre sí.

A los campos se les puede asignar, además, propiedades especiales que afectan a los

registros insertados. El campo puede ser definido como índice o autoincrementable, lo cual

Prof. José de La Rosa Página 2

Guis del Usuario Revista Compus Prácticas FoxPro

permite que los datos de ese campo cambien solos o sean el principal indicar a la hora de

ordenar los datos contenidos.

Cada tabla creada debe tener un nombre único en la cada Base de Datos, haciéndola

accesible mediante su nombre o su sinónimo (dependiendo del tipo de base de datos

elegida).

Ingreso al programa:

Haga clic en el botón de Inicio.

Elija Programas.

Luego Microsoft Visual FoxPro.

Luego el icono de Microsoft Visual FoxPro 6.0

Descripción del Entorno del Programa:

BARRA DE MENÚS: Contiene órdenes para.

Archivo: Abrir, guardar, cerrar, revertir, importar, exportar, imprimir y preparar

página, abrir archivos utilizados recientemente y salir de un archivo o de

Visual FoxPro.

Edición: Deshacer operaciones, seleccionar y editar texto, buscar y reemplazar

características; vínculos e información sobre el objeto.

Ver: Visualizar las barras de herramientas.

Prof. José de La Rosa Página 3

Barra de TítuloBarra de Menús

Barra de Herramientas

Ventana de Comandos

Barra de Estado

Guis del Usuario Revista Compus Prácticas FoxPro

Herramientas: Asistentes, ortografía, macros, examinador de clases, ventanas de

seguimiento y de depuración y opciones.

Programa: Ejecutar, cancelar, reanudar, suspender y compilar.

Proyecto: Nuevo, agregar, modificar, ejecutar, quitar y cambiar nombre de archivos;

incluir, establecer principal y editar descripción; información de proyecto,

errores y generar; limpiar proyecto.

Ventana: Visualizar ventanas.

Ayuda: Contenido, búsqueda de ayuda y soporte técnico.

BARRA DE HERRAMIENTAS: Posee íconos para los accesos directos.

VENTANA COMANDOS: Se puede introducir órdenes para realizar unas tareas

específicas.

EL ADMINISTRADOR DE PROYECTOS:

EL Administrador de proyectos está organizado de forma muy parecida a un archivador.

Consta de varias fichas, tales como: TODO, DATOS, DOCUMENTOS, CLASES,

CODIGO y OTROS. Estas fichas le proporcionan un rápido y fácil acceso a los objetos

que utilizará en el proyecto. Cuando se desarrolla una aplicación se utilizan las técnicas de

ratón “señalar y pulsar” o “arrastrar y colocar” para poder acceder y manipular los

componentes de la aplicación.

PASOS PARA CREAR UN PROYECTO:

- Desde el Menú de Archivo de Visual FoxPro, seleccione  NUEVO

- Debajo del Botón de tipo de Archivo, selecciones PROYECTO

Prof. José de La Rosa Página 4

Guis del Usuario Revista Compus Prácticas FoxPro

- Pulse el botón NUEVO ARCHIVO

- Introduzca el nombre del proyecto.

- Pulse el Botón  CREAR.

- Establezca la vía de acceso del Proyecto desde la ventana de Comandos con la orden  

SET DEFAULT   TO   ejemplo:     SET DEFAULT TO  D:\VFP\PROYEC1

Una recomendación, cree un directorio para su aplicación y dentro de el, uno para

las tablas, otro para los informes, formularios y recursos (archivos BMP, librerías, etc.), es

importante mantener un orden, le ahorrara dolores de cabeza para ubicar un archivo, o

diferenciar cuales son externos (que deben acompañar al ejecutable, como son las tablas,

librerías, archivos BMP, etc.)

COMANDOS BÁSICOS PARA TRABAJAR CON PROYECTOS:

Create Project: Crea un nuevo Proyecto

Modify Project: Modifica la estructura del proyecto.

He aquí algunos de los elementos que se fijan en la configuración del sistema:

SAFETY = OFF && no avisa antes de sobrescribir archivos

Prof. José de La Rosa Página 5

Guis del Usuario Revista Compus Prácticas FoxPro

TALK= OFF && no despliega el progreso

ECHO= OFF && inicialmente desactiva el rastreo

DEBUG= ON && habilita el rastreo y la depuración

RESOURCE=FOXUSER && elige un archivo de recursos

RESOURCE=OFF && no se use hasta que se solicite

COMMAND= DO PROG && corre PROG al inicio

Otros comandos de configuración son:

SET CENTURY ON/OFF

SET CLOCK ON/OFF

SET DATE

SET DELETE ON/OFF

SET ECHO ON/OFF

SET SYSMENU

CREACIÓN DE UNA BASE DE DATOS:

En un proyecto, una base de datos se crea colocando la información en tablas con sus

respectivas relaciones  utilizando de ventana de diseño.

Desde el administrador de proyectos, pulse la ficha DATOS.

- Desde la lista de apartados de datos seleccione BASE DE DATOS.

- Pulse el Botón NUEVO.

Prof. José de La Rosa Página 6

Guis del Usuario Revista Compus Prácticas FoxPro

- Escriba  el Nombre de la nueva base de datos.

- Pulse el botón  CREAR  (Debe aparecer la Ventana de Diseño de la Base de Datos )

                Al comenzar un nuevo proyecto, el generador estará vacío.  Se deben crear las

tablas para almacenar la información en contenedor (Ventana de Diseño) de la Base de

Datos y Luego se establecen la relaciones entre cada una de ellas.

Comandos Básicos para el manejo de de una Base de Datos

Create Database Crea una nueva Base de Datos.Modify Database Modifica la estructura de la Base de Datos.Open Database Abre una Base de Datos guardada.Close Database Cierra la Base de Datos.

Descripción de los botones de la Barra de herramientas (Diseñador de Base de

Datos):

Crear una nueva tabla.

Agregar una tabla existente

Eliminar una tabla seleccionada

Modificar una tabla seleccionada

Prof. José de La Rosa Página 7

Contendedor de la Base de Datos

Barra de herramientas para BD

Guis del Usuario Revista Compus Prácticas FoxPro

Creación de Vistas remotas

Creación de Vistas locales

Editar Procedimientos almacenados en la Base de Datos

Creación de Conexiones con vistas remotas

Examinar el contenido la tabla (BROWSE)

Los nombres de las tablas deben ser de una a ocho caracteres de largo y deben tener la

extensión predeterminada .dbf (database file: archivo de Base de Datos)

CREACIÓN DE TABLAS:

Las tablas pueden agregarse a una base de datos utilizando dos herramientas : El Asistente

de Tablas o el Generador de Tablas. Para realizarlo seguirm los pasos siguientes:

Click en el botón de Nueva tabla, aparecerá la ventana Nueva Tabla.

Se selecciona Nueva Tabla, luego aparece la ventana de guardar el archivo,

seleccione el directorio y el nombre de la tabla y luego presione el boton de guardar.

Nos aparecerá la ventana del Diseñador de tablas:

Comandos básicos para el manejo d las tablas:

Create <Nombre> Crea una nueva tabla.Use <Nombre> Selecciona la tabla respectiva.Use <Nombre> Alias <Alias> Abre la tabla y selecciona el área de trabajo en la cual se

desea trabajar.Use Cierra las tablas en el área de trabajo activo.

Prof. José de La Rosa Página 8

Guis del Usuario Revista Compus Prácticas FoxPro

Modify Structure Modifica la estructura de la tabla abierta.Select <N> Selecciona el área N de trabajo.

CREACIÓN DE CAMPOS:

Los campos no deben de contener caracteres especiales, fuera del carácter "Guión bajo", y

tampoco puede empezar con un número. Pueden ser cuales quiera de varios tipos:

Ingreso de campos: Igual que en las versiones anteriores, la definición de campos es igual.

Se introduce el nombre del campo, el tipo de datos que soportar y el tamaño. Los nombres

de los campos pueden tener hasta 254 caracteres sin espacios en blanco.

Tipos de Campos

Los campos no deben de contener caracteres especiales, fuera del carácter "Guión bajo", y

tampoco puede empezar con un número. Pueden ser cuales quiera de varios tipos:

Tipo Descripción Ejemplo

Carácter Texto alfanumérico La dirección de un cliente

Monetario Unidades monetarias Precio de compra

Numérico Números enteros o decimales de hasta 20 dígitos

Cantidad de artículos pedidos

Flotante Este no lo utilizaremos en este manual pues sólo sirve por compatibilidad con dBASE V, es equivalente al formato numérico.

 Población en el mundo.

Fecha Día, mes y año, el formato puede depender del estado del comando SET DATE

Fecha en que se realizó un pedido

FechaHora datos cronológicos que constan de día, mes, año, horas, minutos y segundos

Fecha y hora en que un empleado llegó al trabajo

Doble Puede guardar un valor numérico de signo flotante de doble precisión

Datos procedentes de experimentos que requieren un elevado grado de precisión

Entero Valores numéricos no decimales (números enteros)

Número de línea de un pedido

Lógico Verdadero o Falso Si se ha completado o no un pedido

Memo Texto alfanumérico de longitud indeterminada, similar a un procesador de texto

Notas de un registro telefónico sobre las llamadas

General Permite guardar datos tipo OLE, por Hoja de cálculo de Excel, un control

Prof. José de La Rosa Página 9

Guis del Usuario Revista Compus Prácticas FoxPro

ejemplo imágenes, sonidos u otros creados por una aplicación diferente.

ActiveX

Carácter (binario)

Igual que Character, pero los valores no se traducen cuando cambia la tabla de códigos

Las contraseñas de usuario almacenadas en una tabla y usadas en distintos países

Memo (binario)

Igual que Memo, pero los valores no se traducen cuando cambia la tabla de códigos

Un archivo de comandos de inicio de sesión empleado en distintos países

Definición del Display:

Formato: Es el formato de salida del campo, ejemplo si fuera númerico 9,999.99 o si fuera

carácter !!!!!!!!!!!!, para que solo acepte mayusculas

Máscara de entrada: Igual que el Format, lo único que es para la entrada de datos.

Título: Descripción mas precisa del campo, es de utilidad al diseñar los Formularios.

Definición de reglas de validación a nivel de campo:

La validación son triggers o eventos que se ejecutan a nivel de campo. Ejemplo: una

validación de un campo que solo acepte números positivos. (id > 0)

Regla: Es la regla de validación, ejemplo: id > 0, si queremos que acepte valores positivos.

Mensaje: Es el mensaje personalizado que queremos que aparezca en pantalla a la hora de

violarse la regla de validación del campo. Ejemplo : ‘Solo se aceptan números positivos’

(nota: el texto debe escribirse entre comillas).

Valor Predeterminado: (nota: hay que respetar el tipo de dato del Campo)

Proceso de Indexación:

Cuando haya creado una tabla, puede ordenar los datos para acelerar la obtención de datos

mediante índices. Con los índices, puede procesar rápidamente los registros para

mostrarlos, consultarlos o imprimir. También puede seleccionar registros, controlar si se

introducen valores duplicados en un campo y admitir relaciones entre tablas.

VFP ofrece cuatro tipos de índice diferentes, cada uno con características predeterminadas:

Principal

Candidato

Normal

Único

Prof. José de La Rosa Página 10

Guis del Usuario Revista Compus Prácticas FoxPro

Los índices principales, aseguran que sólo se introducen valores únicos en un campo y

determinan el orden en el que se procesan los registros. Puede crear un índice principal

para cada tabla si la tabla está incluida en la base de datos. Si la tabla ya tiene un índice

principal, agregue un índice candidato. Este índice es el que define el campo clave

Los índices candidatos, también imponen valores únicos y determinan en qué orden se

procesan los registros, como un índice primario. Puede tener varios índices candidatos por

tabla en bases de datos y en tablas libres.

Los índices normales, determinan el orden en que se procesan los registros pero permite

que se introduzcan valores duplicados en un campo. Puede agregar más de un índice

normal a una tabla.

Por compatibilidad con versiones anteriores, también puede crear un índice único que

selecciona y ordena un subconjunto de registros según la primera aparición de un valor en

el campo que especifique. Si quiere seleccionar registros de esta manera, es posible que

quiera crear una consulta o una vista en lugar de ello.

Por ejemplo si en este momento necesitáramos una lista de precios probablemente la

querríamos en orden alfabético y en otras ocasiones según el código, solucionaremos

ambos casos creando dos índices:

Relación entre Tablas:

Relación temporal: Es la que consigue usando el comando SET RELATION, su mismo

nombre lo indica la relación se efectúa solo por un instante, al dar la orden CLOSE DATA

se pedrera inmediatamente.

Relación permanente: se consigue al construir la base de datos, este tipo de relación es

persistente.

Comandos para vincular tablas:

SET RELATION TO

Crea una relación entre una base de datos padre, la que deberá estar abierta en el área de

trabajo actualmente seleccionada, y una base de datos hija, ya abierta en otra área de

trabajo.

SINTAXIS

Prof. José de La Rosa Página 11

Guis del Usuario Revista Compus Prácticas FoxPro

SET RELATION TO [<expresión1> INTO <expresión numérica1>|<expresión carácter1>]

Luego que creamos una tabla nos saldrá la siguiente ventana:

Si presionamos que SI nos aparecerá una nueva ventana en la cuál vamos a empezar a

rellenar los registros para dicha tabla.

Comandos para el manejo de registros:

Cuando utilizamos inicialmente una tabla de FoxPro, tú estás ubicado en el primer registro

de la tabla. Puedes mover este puntero de registro imaginario alrededor de la tabla, en

diversas formas:

Skip Mueve el puntero hacia adelante un registro

Skip -<N> mueve el puntero hacia los N registros atrás. (Retroceder)

Go TOP Mueve el puntero al primer registró

Go bottom Mueve el puntero al último registro en la tabla

Go +<N> Mueve el puntero del registro a los N registros adelante. (Avanzar)

* Prueba estos comandos primero digita uno de ellos y luego digita list y verás los

resultados.

Mencionaremos otros comandos que son de gran ayuda al momento de manipular los

datos:

APPEND Agrega registros a la base de datos seleccionada.

APPEND FROM Agrega registros desde otra tabla al final de los registros de la tabla

seleccionada.

APPEND BLANK Agrega un registro en blanco en la tabla abierta.

DELETE Borra el registro activo.

DELETE ALL Borra todos los registros de la tabla abierta.

DELETE ALL FOR <CONDICION> Borra todos los registros que cumplan con la

Condición.

Prof. José de La Rosa Página 12

Guis del Usuario Revista Compus Prácticas FoxPro

COPY FILE Copia cualquier tipo de archivos

COPY STRUCTURE Almacena la estructura de una base de datos en una nueva base

COPY TO Copia datos de una base de datos a un archivo

COUNT Determina el nùmero de registro en la base de datos

DISPLAY FILES Muestra información de base de datos

DISPLAY MEMORY Despliega la información de las variables de memoria

DISPLAY STATUS Despliega información de la condición de FOX

DISPLAY STRUCTURE Muestra la estructura de una base de datos

MODIFY COMMAND Abre una ventana de modificación de texto

REPLACE Actualiza los registros en una base de datos.

Otro tipo de comandos útiles para la manipulación de tablas y registros son las

FUNCIONES, las cuales se dividen en:

) Cadenas o manejo de caracteres: este grupo de funciones gestiona el manejo de

caracteres.

) Matemáticas: permiten efectauar operaciones con valores numéricos.

) Manejo de fechas y hora: se encarga de gesstionar las variables de tipo fecha.

) Lógicas: Se encargan de efectuar operaciones de tipo lógico.

) Funciones de converción de tipos: conviertes variables de un tipo a otro.

Funciones:

Son procesos internos programadores que pueden ser llamados desde cualquier punta de

Visual Fox lo que diferencia de los mandatos de las funciones es que estas devuelven un

valor. Aceptan una serie de parámetros, y se reconocen por el uso de paréntesis para

encerrar los argumentos, por ejemplo DATE( ) y TIME ( ).

Las funciones se dividen de la siguiente forma:

Tipos de datos

Funciones de manejo de cadenas de caracteres.

Funciones de conversión de tipos

Funciones de fecha y hora

Funciones de manejo de valores numéricos

Funciones definidas por los usuarios (FDU)

Prof. José de La Rosa Página 13

Guis del Usuario Revista Compus Prácticas FoxPro

Antes de mostrar ejemplos definiremos dos componentes que se hacen necesarios en la

manipulación de datos:

Constante: Son valores predefinidos que no cambian nunca por ejemplo: valor1=15478,

cadena=”abcd”.

Variable: Se utilizan como identificadores de secciones de memoria donde se guarda

información, por ejemplo: var1=campo1, var2=tabla.campo.

Las variables se pueden definir como: publicas, privadas y locales ejemplo:

PUBLIC nombre, apellidos

PRIVATE sueldo

Operadores relacionales:

Los operadores se utilizan en tiempo de ejecuciòn para unir dos o màs elementos del

lenguaje.

Operadores aritméticos

( ) Agrupa subexpresiones

**, ^ Exponenciación

*, / Multiplicaciòn y división

% Módulo (resto de la división)

+, - Suma y resta

Operadores relacionales:

< Menor que

> Mayor que

<= Menor o igual que

>= Mayor o igual que

= igual a

<>, #, ¡=Distinto de

$ Contenido en

Ahora te daremos unos ejemplos con funciones en Visual FoxPro.

* Declaración de variables

cadena1 = SPACE(15)

cadena2 = SPACE(15)

número = 0

Prof. José de La Rosa Página 14

Guis del Usuario Revista Compus Prácticas FoxPro

cuenta = 0

* Asignación de datos

cadena1 = “abcd efgh ijkl”

* utilizando la función LEN para contar el número de la cadena

? LEN(Cadena1) && imprime en pantalla 14

? Cadena2= SUSBTR(cadena1,1,4) && imprime en pantalla abad

? DTOC(DATE())

? SIN (0)

Índices:

Cuando se insertan registros en una tabla estos no se encuentran ordenados, para ello es

necesario utilizar comandos que nos permitan ordenar los registros de acorde a la

información que necesitamos.

Comando SORT

Clasifica un archivo de base de datos

SINTAXIS

SORT TO <archivo> ON <campo> [/A] [/D] [/C]

[,<campo2> [/A] [/D] [/C]..]

[ASCENDING | DESCENDING]

[<alcances>]

[FOR <expresión lógica1>] [WHILE <expresión lógica2>]

[FIELDS <lista de campos>]

EJEMPLO:

USE persona

SORT TO persona_ordenada ON nombre

USE persona_ordenada

Persona persona_ordenada

Juan Martínez

Roxana Cuellar

Margarita Rosales

Pedro López

Eduardo Garay

Eduardo Garay

Juan Martínez

Margarita Rosales

Pedro López

Roxana Cuellar

Comando INDEX ON

Prof. José de La Rosa Página 15

Guis del Usuario Revista Compus Prácticas FoxPro

Crea un índice en un archivo de índices compuestos o bien un archivo de índice simple.

SINTAXIS

INDEX ON campo TO nombre de archivo IDX | TAG etiqueta

[OF archivo CDX][FOR expresión lógica] [COMPACT][ASCENDING | DESCENDING]

[CANDIDATE |UNIQUE ][ADDITIVE]

EJEMPLO:

USE persona

INDEX ON nombre TO persona.idx

El comando INDEX ON crea una archivo índice llamado persona.idx, el cual tendrá el

índice de el archivo persona.

Una mejor forma de crear un índice y en el cual Fox trabaja a una mejor capacidad es

creando un índice compuesto.

INDEX ON nombre TAG persona

De la forma anterior se crea un archivo índice persona.CDX.

También se pueden crear índices combinados con dos o más campos por ejemplo: INDEX

ON UPPER(LEFT(apellido,10) + LEFT(nombre,10)) TO nombre.

Consultas:

Las consultas son pedidos de información a Base de Datos. Se utilizan las consultas

cuando queremos realizar pedidos de datos a una base de datos.

Creando una consulta: Para crear una nueva consulta se puede de ingresar al menú

Archivo, luego seleccionar el submenú Nuevo, y de la ventana que nos muestra seleccionar

la opción Consulta, seguidamente de Nuevo Archivo.

Creación de Consultas Por Asistente

Paso 1 - Seleccionar campos.

Prof. José de La Rosa Página 16

Guis del Usuario Revista Compus Prácticas FoxPro

En este caso como las tablas ya están relacionadas, según las estructuras de los índices indicados, el paso siguiente es el Paso 3 de filtro de registro. En Valor Vamos a Poner un dato de la tabla que corresponde al Código.

Paso 4 - Ordenar registros

Paso 4a -Limitar registros 5.Finalizar

Guarda la consulta con el nombre: consulta1Informes:

Los informes son la representación gráfica de las consultas y tablas que posee una Base de

datos, utilice el Diseñador de informes para crear y modificar informes.

Para crear rápidamente un diseño sencillo de info.

me, elija Informe rápido del menú Informe. Informe rápido le solicita la entrada de los

campos y el diseño que desea para su informe.

Prof. José de La Rosa Página 17

Guis del Usuario Revista Compus Prácticas FoxPro

Opciones de la ventana

Bandas

De forma predeterminada, el Diseñador de informes muestra tres bandas: Encabezado de

página, Detalle y Pie de página. En la parte inferior de cada banda hay una barra

separadora. El nombre de la banda aparece en la barra gris junto a una flecha azul, que

indica que la banda está encima, no debajo, de la barra gris.

Puede agregar las siguientes bandas a su informe.

Banda Se imprime Contenido típico

Encabezado de

columna

Una vez por columna Título de columna

Pie de columna Una vez por columna Resumen, totales

Encabezado de

grupo

Una vez por grupo Precede los datos siguientes

Pie de grupo Una vez por grupo Valores calculados para grupos de datos

Título Una vez por informe Título

Fecha o número de página

Logotipo de la compañía

Cuadro alrededor del título

Resumen Una vez por informe Totales

Texto como Suma total

Regla:

El Diseñador de informes tiene una regla vertical y otra horizontal que puede utilizar para

colocar de forma más precisa los objetos en las bandas. Utilice las reglas junto con el

comando Ver del menú Mostrar posición para ayudarle en la colocación de los objetos.

La escala de la regla viene determinada por las configuraciones de medidas de su sistema. Puede cambiar de la escala predeterminada del sistema (pulgadas o centímetros) a píxeles desde dentro de Visual FoxPro. Si desea cambiar al valor predeterminado del sistema, cambie la configuración de medidas de su sistema operativo.

Creación de Reportes Con Asistente.

Paso 1 - Seleccionar campos Paso 2 – Agrupar Registros

Prof. José de La Rosa Página 18

Guis del Usuario Revista Compus Prácticas FoxPro

Paso 3. Estilo Paso 4 - Distribución

Paso 5 - Orden---codi_peli Paso 6. Finalizar

3. PROGRAMACIÓN:

Conceptos:

Usualmente se agrupa el código fuente en archivos de programa. Un archivo de programa

esta compuesto de varias sentencias, que incluyen comandos, funciones y estructuras de

control de flujo.

El compilador traduce el contenido de estos archivos de texto ASCII a código interpretado.

En cuanto el compilador ha traducido el código fuente crea un archivo con extensión .FXP

que es el que va a utilizar a partir de ese momento. Cada vez que el programador

Prof. José de La Rosa Página 19

Guis del Usuario Revista Compus Prácticas FoxPro

introduce algún cambio en el archivo .PRG el compilador compara la fecha de ambos

archivos y crea una nueva versión compilada del programa.

Haciendo el código legible:

Espacios en blanco: Significan áreas vacías dentro del código de programa, también

espacios, tabulaciones o líneas vacías.

Sangrado: Sangrar es la mejor manera de optimizar el código. Es una práctica

común sangrar dentro de comandos pares anidados, por ejemplo:

DO… ENDDO

IF… ENDIF

SCAN..ENDSCAN

DOCASE...ENDCASE

WITH…ENDWITH

Mayúsculas y minúsculas: Muchos programadores utilizan mayúsculas y

minúsculas para distinguir entre los elementos del programa; mayúsculas para los

comandos y minúsculas para las variables.

Comentarios: Los comentarios pueden existir en una línea precedidos por un

asterisco y después de una línea de código, si están separados de && consecutivos.

Continuar líneas largas de código: Puede continuar líneas largas de código en la

siguiente línea insertando un “;” al final de la línea.

Una de las técnicas más útiles en la programación son los encabezados de programa, por

ejemplo:

* Nombre del programa : nombre

* Autor : Héctor Hernández

* Propósito : Dibujar cuadros en la pantalla

* Fecha : 12/12/2001

Comandos de Asignación:

Para crear variables de memoria y darles valores al mismo tiempo, escriba lo siguiente:

Input: Imprime por pantalla un mensaje y me da la opción para capturar un valor en una

variable.

X=3

STORE “lunes” TO día

Para solamente crearlas:

Prof. José de La Rosa Página 20

Guis del Usuario Revista Compus Prácticas FoxPro

PUBLIC a, b, c

PRIVATE x, y, z

LOCAL nombre, trabaja

DIMENSION nombres(3)

Declaración de Variables.

Las variables temporales se pueden declarar utilizando los comandos anteriores,

únicamente, hay que tomar en cuenta la forma en que se van a declarar o escribir, como

ejemplo: Nom_Empleado; NomEmpleado, si son variables de memoria se le puede

anteponer una ‘m ó x’ de la forma siguiente, mNom_Empleado; xNom_Empleado,

también se pueden declarar variables haciendo saber el tipo de datos que maneja por

ejemplo: cNom_Empleado, nSueldo_Empleado; dFecha_Ingreso, etc.

Operadores:

Los operadores + y – son, por supuesto, usados para añadir y substraer números, pero

también se pueden usar en campos de caracteres. El operador más eslabona dos

expresiones de caracteres, campos o variables de memoria, de forma que Fred + Smith;

producirá: FredSmith. El operador menos quita espacio rezagado.

Operadores cíclicos y ramificaciones:

Las operaciones cíclicas y de ramificación son los mecanismos para crear la lógica de un

programa, ejemplo:

FOR I=1 TO 10

? I && Imprime los números del 1 al 10

ENDFOR

SELECT clientes

SCAN

? Clientes.nombre&&Lee un archivo desde el inicio hasta el final

ENDSCAN

SELECT clientes

GO TOP

DO WHILE NOT EOF()

? Clientes.nombre&& Lee un archivo desde el inicio hasta el final

SKIP

ENNDO

Prof. José de La Rosa Página 21

Guis del Usuario Revista Compus Prácticas FoxPro

Puede salir de estas construcciones cíclicas en cualquier momento mediante el comando:

EXIT.

La ramificación en VF es controlada con la construcción IF.. ENDIF, por ejemplo:

IF I >10

? [El contador excedió 10]

ENDIF

Los contadores se utilizan a menudo para salir de operaciones cíclicas:

L=1

DO WHILE L=LEN(nombrelista)

IF [CRUZ]$ nombrelista(L)

SEEK nombrelista(L)

IF nombre= [John]

DO prgnombre

LOOP

ENDIF

ENDIF

ENDDO

Se recomienda que cuando se utiliza un operador cíclico, un operador condicional, o

cualquier otro operador que abra y cierre una estructura se escriba el comando primero y

luego se realice el proceso, esto para no perderse en la programación.

Tipos de comandos

Vamos a dividir los comandos según su funcionalidad en los siguientes tipos:

1. Base de datos: Todos los que sirven para manipular bases de datos, tablas y

campos.

2. Entorno: Entorno del sistema operativo y de Visual Fox Pro.

3. Acceso compartido a datos: Acceso multiusuario a tablas y base de datos.

4. Entrada y salida: Los que permiten la interfaz entre la computadora y el usuario.

5. Programación: Los que tienen relación con el entorno de desarrollo de aplicaciones.

4. FORMULARIOS:

Creando un Formulario:

Click en: Archivo > Nuevo > ( ) Formulario > Nuevo archivo

Diseñador de formulario

Prof. José de La Rosa Página 22

Guis del Usuario Revista Compus Prácticas FoxPro

Conceptos básicos:

Objeto: Una instancia de una clase que combina datos y procedimientos. Por ejemplo, un

control de un formulario en ejecución es un objeto.

Formulario: Se utilizan para visualizar e introducir cualquier tipo de información y son el

medio de comunicación entre el usuario y los datos.

Propiedades: Un atributo de un control, campo u objeto de base de datos que se establece

para definir una de las características del objeto o un aspecto de su comportamiento. Por

ejemplo, la propiedad Visible afecta a la visibilidad en tiempo de ejecución de un control.

Puede cambiar los valores de las propiedades de objeto mediante la ventana Propiedades.

Evento: Una acción, reconocida por un objeto, para la cual puede escribir código de

respuesta. Los eventos pueden estar generados por una acción del usuario, como hacer clic

con el mouse o presionar una tecla, por código de programa o por el sistema, como ocurre

con los cronómetros.

Método: Una acción que un objeto es capaz de realizar. Por ejemplo, los cuadros de lista

tienen métodos llamados AddItem, RemoveItem y Clear para mantener el contenido de las

listas.

Barra de herramientas: Una serie de botones en los que se hace clic para realizar tareas

frecuentes. Las barras de herramientas pueden flotar en su propia ventana o bien puede

acopladas en los extremos superior, inferior o laterales de la ventana principal de Visual

FoxPro. Puede personalizar las barras de herramientas suministradas con Visual FoxPro,

Prof. José de La Rosa Página 23

Guis del Usuario Revista Compus Prácticas FoxPro

así como crear barras de herramientas propias mediante la clase de base ToolBar incluida

con Visual FoxPro.

BARRAS DE HERRAMIENTAS:

Nos muestra los controles básicos y disponibles del Visual FoxPro,

estos son llamados clases bases.

Tipos de Controles: Los controles son aquellos objetos que se

colocan en un formulario.

VENTANA DE PROPIEDADES: Nos permite editar

las propiedades de un formulario o sus objetos. La

ventana de propiedades se compone de dos partes, la

sección de controles ubicado en la parte superior, en el

cual dentro de una lista desplegable se encuentran todos

los objetos seleccionados.

En la parte inferior se encuentran las propiedades

existentes, las cuales se pueden dividir en fichas.

VENTANA DE CÓDIGO (SCRIPT):

Al hacer doble clic en un objeto determinado, se

muestra la ventana de código. En esta ventana es donde se escriben las sentencias propias

de Visual FoxPro para detallar la aplicación generada.

Objetos y propiedades básicas

Form

El formulario es un objeto de tipo contenedor.

Prof. José de La Rosa Página 24

Guis del Usuario Revista Compus Prácticas FoxPro

Los conjuntos de formularios acogen a uno o más formularios, o incluso barra de

herramientas. Ala hora de ejecutar el conjunto de formularios, se activan todos los

formularios definidos en el mismo.

Propiedad UsoCaption Título de la ventana o formaAutocenter Centra el formularioShowTips Para que se muestren los TooltipsClosable Visualiza el botón cerrar de la ventanaMaxButton Visualiza el botón maximizarMinButton Visualiza el botón minimizar ControlBox Visualiza el menú de control de la ventanaEventos o Métodos UsoInit Se dispara a la hora que se inicializan todos los objetos del

formularioLoad Se dispara antes que se inicialicen los objetos del formularios

(antes que el init)Destroy Se dispara al cerrar el formularioUnload Se dispara después de Destroy

Viñetas y cuadros de textoLas viñetas o Labels se utilizan para escribir etiquetas a los objetos.

Propiedad UsoCaption Título de la ventana o formaAlignment Especifica la alinación del textoName Nombre del objetoBackColor Color de fondoForeColor Color de la letra

Evento o Método UsoClick Se dispara al dar clic en el objetoMouseDown El evento MouseDown se desencadena al presionar un botón del

mouseMouseUp Ocurren cuando el usuario presiona (MouseDown) o suelta

(MouseUp) un botón del mouse

Los cuadros de texto sirven para capturar los datos de los campos.

Propiedades UsoControlSource Es la variable o nombre del campo al cual se hace referenciaValue Contenido de la variable o campo referenciado al ControlSourceVisible Si el control es visible al usuarioEnabled Si el control esta habilitado o noEvento o Método UsoClick Se dispara al dar clic en el objetoGotFocus Cuando el control toma el enfoque

Prof. José de La Rosa Página 25

Guis del Usuario Revista Compus Prácticas FoxPro

LostFocus Cuando el control pierde el enfoque

Botones de comandoUn control que está asociado a un comando. Cuando hace clic en el botón de comando en tiempo de ejecución, el comando asociado al botón se ejecuta.Propiedades UsoCaptio Etiqueta del comandoVisible Si el control es visible al usuarioEnabled Si el control esta habilitado

Evento o Método UsoClick Se dispara al dar clic en el objetoSetlFocus El cursor se va al objetoLostFocus Cuando el control pierde el enfoqueRefresh Refresca el objetoInit Se dispara a la hora que se se inicializa el objeto

Botones de opción y casillas de verificaciónUn control OptionButton muestra una opción que se puede activar o desactivar.

Propiedades UsoControlSource Es la variable o nombre del campo al cual hace referenciaValue Contenido de la variable o campo referenciado en

ControlSourceVisible Si el control es visible al usuarioEnabled Si el control esta habilitado o no

Evento o Método UsoInteractiveChange Se dispara cuando modificamos el campoInit Se dispara a la hora en que se inicializa el objetoClick Se dispara al dar click en el objetoValid Se dispara después de presionar Enter o Tab, se utiliza para

validarRefresh Refresca el objeto

Un control CheckBox muestra una X cuando está activado; la X desaparece cuando el control CheckBox se desactiva. Utilice este control para ofrecer al usuario una opción de tipo Verdadero o Falso o Sí o No. Puede usar controles CheckBox en grupos para mostrar múltiples opciones entre las cuales el usuario puede seleccionar una o más. También puede establecer el valor de CheckBox mediante programación con la propiedad Value.

Listas y cuadros combinadosLos cuadros de lista y los cuadros combinados presentan al usuario una lista de opciones. De forma predeterminada, las opciones se muestran verticalmente en una única columna, aunque también puede establecer múltiples columnas. Si el número de elementos supera a los que se pueden mostrar en el cuadro combinado o el cuadro de lista, aparecen automáticamente barras de desplazamiento en el control. El usuario puede entonces desplazarse por la lista hacia arriba o hacia abajo o de izquierda a derecha.

Prof. José de La Rosa Página 26

Guis del Usuario Revista Compus Prácticas FoxPro

Los cuadros de lista y los cuadros combinados son una manera efectiva de presentar al usuario gran cantidad de opciones en un espacio limitado.Propiedades UsoControlSource Variable a que hace referencia (campo donde se almacena el

valor de la lista)RowSource Tabla o query de los elementos de la listarowSourceType Tipo de la fuente (si es tabla o query)Visible Si el control es visible al usuarioEnabled Si el control esta habilitado o noBoundColumn Valor que retorna la lisa (número de la columna de Rowsource)BoundTo Especifica si el valor de la lista esta determinado por los valores

o por la propiedad ListIndex

Evento o Método UsoClick Se dispara al dar clic en el objetoSetlFocus El cursor se va al objetoLostFocus Cuando el control pierde el enfoqueRefresh Refresca el objetoInit Se dispara a la hora que se se inicializa el objeto

Cuadrícula:Un control que crea una cuadrícula y que le permite presentar los datos en un formato tabular. Los controles de tipo cuadrícula contienen encabezados de columna, columnas y controles de columna.

Propiedades UsoRecordSource Nombre de la tablaVisible Si el control es viisible al usuarioEnabled Si el control esta habilitado o noColumnCount Número de columnas del GrisDeleteMark Permite registro para borrar (Aparece en la parte izquierda del

Gris

Evento o Método UsoClick Se dispara al dar clic en el objetoSetlFocus El cursor se va al objetoLostFocus Cuando el control pierde el enfoqueRefresh Refresca el objetoInit Se dispara a la hora que se inicializa el objeto

Imágenes, controles OLE, timer, Marcos de páginaUn control que le permite incluir imágenes en un formulario.Hipervinculo con cualquier tipo de aplicación.Un control Timer puede ejecutar código a intervalos periódicos produciendo un evento Timer.Un marco de página es un objeto contenedor que contiene páginas. A su vez, las páginas contienen controles. Las propiedades pueden establecerse a nivel de marco de página, de página o de control.

Prof. José de La Rosa Página 27

Guis del Usuario Revista Compus Prácticas FoxPro

Uso de Clases

Los diseñadores ActiveX pueden proporcionar interfaces visuales para tareas que, de otro

modo, requerirían una gran cantidad de código. Por ejemplo, el diseñador UserConnection

incluido en la Edición Empresarial de Visual Basic proporciona herramientas visuales para

definir consultas de bases de datos complejas. En tiempo de ejecución, dichas consultas se

pueden invocar con muy poco código.

Similitudes entre los diseñadores ActiveX y los diseñadores integrados

Los diseñadores ActiveX son como los diseñadores de formularios en los siguientes

aspectos:

Los diseñadores ActiveX producen clases a partir de las cuales puede crear

objetos. Estas clases aparecen en la ventana Proyecto, igual que las clases de

formulario.

Las clases creadas con un diseñador ActiveX tienen sus propios módulos de

código, en los que puede escribir código para los procedimientos de evento

proporcionados por el diseñador.

Puede personalizar una clase si agrega propiedades, métodos y eventos a los

proporcionados por el diseñador ActiveX.

Los objetos creados a partir de las clases diseñadas pueden tener

características diferentes en tiempo de diseño y en tiempo de ejecución.

La ventana de diseño del diseñador ActiveX está totalmente integrada en el

entorno de desarrollo. Puede modificar su tamaño y configurarla de la misma forma

que las ventanas de diseño incorporadas.

Puede agregar al proyecto tantas instancias de un diseñador ActiveX como

considere necesario, de la misma forma que puede agregar tantos diseñadores de

formularios como quiera.

Prof. José de La Rosa Página 28

Guis del Usuario Revista Compus Prácticas FoxPro

Prof. José de La Rosa Página 29

Guis del Usuario Revista Compus Prácticas FoxPro

PRACTICAS VISUAL FOXPRO

PRACTICA BASE DE DATOS:Realizar las siguientes tablas para la base de datos Pizzería:

Para llevar a cabo la Práctica Realiza los Siguientes pasos:

1. Crea un nuevo Proyecto con el nombre Pizza2. en el administrador de proyectos en la Ficha Datos, Selecciona la opción

Databases, y después la opción Nuevo, para crear la base de datos con el nombre Pizzería.

3. En el diseñador de Base de datos da un clic en la opción Nueva tabla. y haz lo sig;

4. Guarda esta tabla con el nombre de Pizza

Prof. José de La Rosa Página 30

En la Ficha Índices, selecciona Clave_pizza como principal.

Guis del Usuario Revista Compus Prácticas FoxPro

5. Ahora deberás crear otra tabla nueva con los siguientes campos.

6. Guarda esta tabla con el nombre de tamaños.

7. Ahora deberás crear una tercera tabla con los datos siguientes:

8. Guarda esta tabla con el nombre de Venta.

9. por ultimo deberás crear otra tabla como sigue:

10. Esta tabla la guardas con el nombre factura

Prof. José de La Rosa Página 31

En la Ficha Índices, selecciona Clave_tamaño como principal

Guis del Usuario Revista Compus Prácticas FoxPro

11. Crea las relaciones entre las tablas de tal form que te queden de la siguiente manera:

12. Ahora debemos introducir los datos a las tablas, comenzaremos por la tabla Pizza y la llenaremos como sigue:

Clave_Pizza Nombrean Anchoaspe Peperoniha Hawaianasa salami

13. seguimos con la tabla Tamaño

Clave_tamaño Tamañoch Chicame Medianagr Grande

14. Y Continuamos con la tabla Venta

Clave_Pizza Clave_Tamaño Precioan ch $ 20.00an me $ 25.00an gr $ 30.00pe ch $ 60.00pe me $ 65.00pe gr $ 80.00ha ch $ 55.00ha me $ 60.00ha gr $ 68.00sa ch $ 63.00sa me $ 87.00sa gr $ 98.00

15. ahora crearemos una tabla a partir de una consulta, en la ventana explorador de proyectos en la pestaña datos selecciona consulta y después nuevo

16. Visual Fox te preguntara que tablas quieres agregar para la realización de tu consulta, para eso tu debes agregar las siguientes tablas: Tamaña, Venta y Pizza.

Prof. José de La Rosa Página 32

Guis del Usuario Revista Compus Prácticas FoxPro

17. Una vez con las tablas agregadas, en la ventana diseñador de consultas en la ficha campos, debemos escoger cuales son los campos que nosotros queremos que nos muestre la consulta, pues bien vamos a seleccionar los siguientes: Pizza.nombre, tamaño.tamaño, Venta.Precio, por ultimo agregaremos una expresión como campo para esto en la misma ventana busca la opción funciones y expresiones y aparecerá la ventana siguiente:

18. Cuando esta ventana aparezca lo primero que debemos de hacer es seleccionar de la parte funciones Cadena, la opción “texto”, Luego en la parte de abajo donde dice Desde tabla Selecciona la tabla Pizza, en el cuadro campos aparecerán los campos de la tabla pizza de ese cuadro da doble clic al campo clave_pizza, una vez esto hecho en el cuadro expresión deberá de aparecer el siguiente texto: “Pizza.cleve.pizza”, una ves con esto ve otra vez a la lista Cadena y ahora selecciona el símbolo +, el símbolo aparecerá dentro de las comillas, salte de las comillas y pon un guion(-), la expresión deberá quedar: “Pizza.cleve.pizza+”-, ahora con lo que ya vimos has que la expresión final quede de la siguiente forma, recuerda que para sacar los campo de Tamaño primero debes seleccionar la tabla tamaño de Desde tabla.

Prof. José de La Rosa Página 33

Guis del Usuario Revista Compus Prácticas FoxPro

19. Una vez que tengas la Expresión da un clic al botón aceptar y después un clic en Agregar. Te deberá quedar como en la pantalla siguiente:

20. Realizar consultas diferentes para la base de datos:

PRACTICAS CON PROGRAMACIÓN:Objetivos

Luego de completar este laboratorio, el estudiante será capaz de:

Identificar los elementos del entorno integrado de desarrollo de Microsoft Visual FoxPro 6.0.

Prof. José de La Rosa Página 34

Guis del Usuario Revista Compus Prácticas FoxPro

Implementar soluciones mediante programación clásica. Declarar y asignar valores tanto a las variables de memoria como a los arreglos. Analizar como es el flujo de control de un programa. Crear funciones y procedimientos definidos por el usuario.

ConsideracionesPara el desarrollo del presente laboratorio Ud. deberá crear una carpeta D:\P_VFP\

PROGRAMA, para guardar sus trabajos correspondientes a este laboratorio.

Aplicación Nº 1En este primer ejercicio vamos a escribir un programa que lea tres números enteros

y determine el número mayor, el número central y el número menor. Debemos asumir que los tres números son siempre distintos.

Para el desarrollo de la presente aplicación ingresar a Microsoft Visual FoxPro. En la Ventana de Comandos digite la siguiente orden:

Modify Command Aplicacion01

A continuación se debe presentar el Editor de programas. En dicha ventana proceda a ingresar el código que se indica:

Close AllClearInput “Ingrese el valor de A?” To nAInput “Ingrese el valor de B?” To nBInput “Ingrese el valor de C?” To nCIf nA > nB Then

nMay = nA nMen = nBElse

nMay = nB nMen = nAEndIfIf nC > nMay Then nCen = nMay nMay = nCElse

If nC > nMen Then nCen = nC Else nCen = nMen nMen = nC EndIfEndIf? “Mayor =” + Str(nMay)? “Central =” + Str(nCen)? “Menor =” + Str(nMen)

Prof. José de La Rosa Página 35

Guis del Usuario Revista Compus Prácticas FoxPro

Para ejecutar su programa dar click en el botón Ejecutar ( ! ) de la Barra de herramientas Estándar, o realizar la combinación Ctrl. + E

Para volver a ejecutar su programa digitar la siguiente orden desde la Ventana de Comandos:

Do Aplicaion01

Aplicación Nº 2Un restaurante ofrece un descuento del 10% para consumos entre S/. 30.00 y S/.

50.00; un descuento del 20% para consumos mayores a S/. 50.00 nuevos soles; para todos los demás casos no se aplica ningún tipo de descuento. El ejercicio consiste en elaborar una programa que permita determinar el importe a pagar por el consumidor.

Para el desarrollo de la presente aplicación abrir una nueva ventana de edición e ingresar el siguiente código:

Close AllClearDo While .T.

Input “Consumo S/.” To nConsumoIf Type (“nConsumo”) = “N”

ExitEndIf

EndDoDo Case

Case nConsumo >= 30 And nConsumo <= 50nImporte = nConsumo * 0.9

Case nConsumo > 50nImporte = nConsumo * 0.8

OtherwisenImporte = nConsumo

EndCase? “Importe a pagar S/.” + Str(nImporte)

Aplicación Nº 3El ejercicio consiste en escribir un programa que lea “ n ” enteros y calcule la suma

total, la media aritmética, el máximo y el mínimo de los datos.

Para el desarrollo de la presente aplicación, de manera análoga que para los casos anteriores abrir una nueva ventana de edición e ingresar el siguiente código:

Close AllClearInput “Ingrese cantidad de números?” To nNDeclare aVector(nN)For nI = 1 To nN

Input “Número [” + Str(nI) + “]?” To aVector(nI)NextnMax = aVector[1]

Prof. José de La Rosa Página 36

Guis del Usuario Revista Compus Prácticas FoxPro

nMin = aVector[1]nSuma = 0For nI = 1 To nN

nSuma = nSuma + aVector[nI]If aVector[nI] > nMax Then

nMax = aVector[nI]EndIf

If aVector[nI] < nMin Then nMin = aVector[nI] EndIf NextnMedia = nSuma / nN? “Suma =” + Str(nSuma)? “Media =” + Str(nMedia, 10, 2)? “Máximo=” + Str(nMax)? “Mínimo=” + Str(nMin)

Aplicación Nº 4A continuación vamos a escribir una función que reciba como argumento de

entrada una cadena de caracteres y la devuelva en forma inversa, por ejemplo si se ingresa la cadena CORAZON deberá retornar NOZAROC.

Para el desarrollo de esta aplicación proceda de manera similar a los casos anteriores e ingresar el código que se muestra:

Close AllClearAccept “Ingrese una cadena?” To cCadena? “Cadena invertida =” + CadInv(cCadena)

Function CadInvParameters cCadenanN = Len(Alltrim(cCadena))Declare cTemporal(nN)For nI = 1 To nN

cTemporal(nI) = SubStr(cCadena, nI, 1)NextcInvertida = “”For nJ = nN To 1 Step -1

cInvertida = cInvertida + cTemporal(nJ)Next J

Return cInvertida

PRACTICAS CON FORMULARIOSObjetivos

Luego de completar este laboratorio, el estudiante será capaz de:

Implementar soluciones mediante programación orientada a objetos. Manejar las diferentes propiedades y eventos del formulario. Añadir controles a un formulario.

Prof. José de La Rosa Página 37

Guis del Usuario Revista Compus Prácticas FoxPro

Establecer las propiedades de los controles. Trabajar con procedimientos de eventos.

ConsideracionesPara el desarrollo del presente laboratorio Ud. deberá crear una carpeta D:\P_VFP\

FORMULARIO, para guardar sus trabajos correspondientes a este laboratorio.

Aplicación Nº 1Este ejercicio consiste en elaborar un formulario que permita leer un número entero

y visualice su tabla de multiplicar. Para construir la tabla de multiplicar vamos a utilizar un control cuadro de edición, el cual tiene propiedades similares a un cuadro de texto, pero permite escribir texto en líneas diferentes.

Para el desarrollo de esta aplicación, proceda a ubicar los siguientes controles en el formulario:

1 etiqueta1 caja de texto1 cuadro de edición1 botón de comandos

En seguida proceda a establecer las propiedades según se indica:

Form1Name FrmTablaCaption Tabla de multiplicarMaxButton .F.-FalsoMinButton .F.-Falso

Label1Name LblNumeroCaption Ingrese un número:

Prof. José de La Rosa Página 38

Guis del Usuario Revista Compus Prácticas FoxPro

Text1Name TxtNumeroAlignment 2-Centro

Edit1Name EdtTablaScrollBars 2-Vertical

Command1Name CmdLimpiarCaption \<LimpiarDefault .T.-Verdadero

Una vez diseñada la interfaz, proceda a ingresar el código que se indica a continuación:

Objeto: TxtNumero Procedimiento: InteractiveChange

nN = Val(Thisform.TxtNumero.Value)cS = “”For nI = 0 To 12

nP = nN * nIcS = cS + Str(nN) + “ * ” + Str(nI) + “ = ” + Str(nP) ;

+ Chr(13)NextThisform.EdtTabla.Value = cSThisform.Refresh

Objeto: CmdLimpiar Procedimiento: Click

Thisform.TxtNumero.Value = “”Thisform.EdtTabla.Value = “”Thisform.Refresh

Aplicación Nº 2Este ejercicio consiste en elaborar una aplicación que permita cambiar el aspecto de

una caja de texto. El usuario debe elegir el tipo de fuente a utilizar, el estilo, el color y el tamaño. El diseño de la interfaz debe ser similar a:

Prof. José de La Rosa Página 39

Guis del Usuario Revista Compus Prácticas FoxPro

Para el desarrollo de esta aplicación, proceda a ubicar los siguientes controles en el formulario:

5 etiquetas1 caja de texto1 cuadro combinado1 lista3 casillas de verificación1 grupo de botones de opción1 botón de comando

En seguida proceda a establecer las propiedades según se indica:

Form1Name FrmEditorAutoCenter .T.-VerdaderoCaption EditorMaxButton .F.-FalsoMinButton .F.-Falso

Label1Name LblTextoCaption Texto

Label2Name LblFuenteCaption Fuente

Label3Name LblTamañoCaption Tamaño

Label4Name LblEstiloCaption Estilo

Label5Name LblColor

Prof. José de La Rosa Página 40

Guis del Usuario Revista Compus Prácticas FoxPro

Caption Color

Combo1Name CboFuente

List1Name LstTamaño

Text1Name TxtTextoForeColor 255, 0, 0

Check1Name ChkNegritaCaption NegritaFontBold .T.-Verdadero

Check2Name ChkCursivaCaption CursivaFontItalic .T.-Verdadero

Check3Name ChkSubrayadoCaption SubrayadoFontUnderline .T.-Verdadero

OptionGroup1ButtonCount 3

Option1Name OptRojoForeColor 255, 0, 0

Option2Name OptVerdeForeColor 0, 255, 0

Option3Name OptAzulForeColor 0, 0, 255

Command1Name CmdSalirCaption \<SalirDefault .T.-Verdadero

Prof. José de La Rosa Página 41

Guis del Usuario Revista Compus Prácticas FoxPro

Una vez establecidas las propiedades de la interfaz, proceda a ingresar el código que se muestra a continuación:

Objeto: FrmEditor Procedimiento: Init

Thisform.CboFuente.AddItem(“Arial”)Thisform.CboFuente.AddItem(“Arial Black”)Thisform.CboFuente.AddItem(“Courier New”)Thisform.CboFuente.AddItem(“Garamond”)Thisform.CboFuente.AddItem(“Impact”)Thisform.CboFuente.AddItem(“MS Sans Serif”)Thisform.CboFuente.AddItem(“Technical”)Thisform.CboFuente.AddItem(“Times New Roman”)For nI = 8 To 20 Step 2

Thisform.LstTamaño.AddItem(Alltrim(Str(nI))) Next

Objeto: FrmEditor Procedimiento: QueryUnload

#DEFINE vfpYesNo 4#DEFINE vfpYes 6#DEFINE vfpQuestion 32If MessageBox(“¿Desea terminar la aplicación?”, ;

vfpQuestion + vfpYesNo, “Pregunta”) = vfpYes ThenRelease Thisform

ElseNoDefault

EndIf

Objeto: CboFuente Procedimiento: Click

Thisform.TxtTexto.FontName = Thisform.CboFuente.ValueThisform.Refresh

Objeto: LstTamaño Procedimiento: Click

nTamaño = Val(Thisform.LstTamaño.Value)Thisform.TxtTexto.FontSize = nTamañoThisform.Refresh

Objeto: ChkNegrita Procedimiento: Click

If Thisform.ChkNegrita.Value = 1 ThenThisform.TxtTexto.FontBold = .T.

ElseThisform.TxtTexto.FontBold = .F.

EndIfThisform.RefreshObjeto: ChkCursiva Procedimiento: Click

Prof. José de La Rosa Página 42

Guis del Usuario Revista Compus Prácticas FoxPro

If Thisform.ChkCursiva.Value = 1 ThenThisform.TxtTexto.FontItalic = .T.

ElseThisform.TxtTexto.FontItalic = .F.

EndIfThisform.Refresh

Objeto: ChkSubrayado Procedimiento: Click

If Thisform.ChkSubrayado.Value = 1 ThenThisform.TxtTexto.FontUnderline = .T.

ElseThisform.TxtTexto.FontUnderline = .F.

EndIfThisform.Refresh

Objeto: OptRojo Procedimiento: Click

Thisform.TxtTexto.ForeColor = RGB(255, 0, 0)Thisform.Refresh

Objeto: OptVerde Procedimiento: Click

Thisform.TxtTexto.ForeColor = RGB(0, 255, 0)Thisform.Refresh

Objeto: OptAzul Procedimiento: Click

Thisform.TxtTexto.ForeColor = RGB(0, 0, 255)Thisform.Refresh

Objeto: CmdSalir Procedimiento: Click

Thisform.QueryUnload

Bases de Datos con formulario:

Movimiento entre registros:Realizar la siguiente base de datos denominada COMPAÑÍA, y relacionar las tablas:

Prof. José de La Rosa Página 43

Guis del Usuario Revista Compus Prácticas FoxPro

Crear el siguiente formulario:

A todas las cajas de texto asigne la propiedad ENABLED = .f.Oculte los Botones, Guardar y Guardar Cambios, con la propiedad VISIBLE=.f.

Codigo para los Botonos:Boton Primero Procedimiento:ClickGo topThisform.refresh

Boton Anterior Procedimiento:ClickIf .Not. bof () then

Skip -1Else

Go bottomEndIfThisform.refresh

Boton Siguiente Procedimiento:ClickIf .Not. eof() then

Skip +1Else

Go TopEndIfThisform.refresh

Boton Primero Procedimiento:ClickGo BottomThisform.refresh

Boton Salir Procedimiento:ClickRelease Thisform

Prof. José de La Rosa Página 44

Guis del Usuario Revista Compus Prácticas FoxPro

Boton Eliminar Procedimiento:ClickMensaje= MESSAGEBOX(“Desea eliminar el Registro”,4+32+256,”Eliminar”)Do Case

Case mensaje=6DeletePackGo TopThisform.refresh

Case mensaje=7Thisform.refresh

EndCase

Boton Agregar Procedimiento:Click*Habilite todas las cajas de texto con la propiedad Enabled y muestre el boton Guardar con *la propiedad Visible Ejm: *Thisform.txtcod_empleado.enabled=.t.*Thisform.cguardar.visible=.t.Go BottomThisform.refreshAppend blankThisform.refresh

Boton Guardar Procedimiento:ClickMensaje= MESSAGEBOX(“Desea Guardar el Registro”,4+32+256,”Guardar”)Do Case

Case mensaje=6Thisform.refresh

Case mensaje=7Delete Pack

EndCase*Desabilite todas las cajas de texto con la propiedad Enabled y oculte el Botón Guardar *con la propiedad Visible Ejm:*Thisform.txtcod_empleado.enabled=.f.*Thisform.cguardar.visible=.f.

Thisform.refresh

Boton Editar Procedimiento:Click*Habilite todas las cajas de texto con la propiedad Enabled y muestre el boton Guardar *Cambios con la propiedad Visible Ejm: *Thisform.txtcod_empleado.enabled=.t.*Thisform.cguardar.cambios.visible=.t.

Mensaje= MESSAGEBOX(“Desea Guardar el Registro”,4+32+256,”Guardar”)Do Case

Case mensaje=6Thisform.refresh

Case mensaje=7

Prof. José de La Rosa Página 45

Guis del Usuario Revista Compus Prácticas FoxPro

Delete Pack

EndCaseThisform.refresh

Boton Guardar Camhios Procedimiento:Click*Desabilite todas las cajas de texto con la propiedad Enabled y oculte el Botón Guardar *Cambios con la propiedad Visible Ejm:*Thisform.txtcod_empleado.enabled=.f.*Thisform.cguardarcambios.visible=.f.Thisform.refresh

Laboratorio Nº 02Realizaremos el siguiente formulario de Facturación, para ello las indicaciones se encuentran en la parte inferior:

Carguemos Visual FoxPro

1. Para simular una Entidad vamos a crear las siguientes tablas en la Base de Datos Ventas, a las tablas Artículos y Clientes ingresar algunos registros.

Articulo.dbf Clientes.DBF

Artcod C 3 ClieCod C 3ArtDet C 40 ClieNom C 40ArtPre N 10 3 ClieRuc C 8ArtStk N 4

GuiaEnc.DBF Guiadet.DBFNguia C 6 Nguia C 6ClieCod C 3 ArtCod C 3IGV N 7 2 ArtDet C 40Total N 10 2 PreUni N 7 2

Cant N 5SubTotal N 10 2

Prof. José de La Rosa Página 46

Guis del Usuario Revista Compus Prácticas FoxPro

Temporal.DBFNguia C 6ArtCod C 3ArtDet C 40PreUni N 7 2Cant N 5SubTotal N 10 2Nota: Indexar la tabla GuiaEnc, campo Nguia con etiqueta Nguia

2. Creamos Nuevo formulario luego insertamos los objetos que se muestran en el grafico inferior.

3. Para el Entorno de Datos asignamos las cinco tablas creadas anteriormente

4. En tiempo de Diseño

Modificamos las propiedades de los objetos según la tabla siguiente:

Prof. José de La Rosa Página 47

Objeto: Propiedad Valor Objeto: Propiedad ValorControlSource Clientes.Clienom Alignment 2. CentroName CmbCliente DisableBackColor A Criterio del Usuario

Combo1 Row SourceType Campos Text1 DisableForeColor A Criterio del Usuario

Row Source Clientes.Clienom Enabled FALSOStyle 2. Lista desplegable Name txtNguiaValue 1 FontName A Criterio del Usuario

Alignment 2. Centro Column Count 4DisableBackColor A Criterio del Usuario Deleted mark .F. Falso

Text2 DisableForeColor A Criterio del Usuario Grid1 Name grdDetalle

Enabled FALSO RecordSource TemporalName TxtTotal BackColor A Criterio del UsuarioFontName A Criterio del Usuario GridLineColor Azul

Guis del Usuario Revista Compus Prácticas FoxPro

Antes de continuar con más cambios, vamos a insertar objetos Combo y Spinner en la columna1 y columna2 del Grid respectivamente, para ello prepare el control de Formularios luego:

Seleccione el objeto: Grid

Presione sobre ella : Botón DerechoSeleccione : ModificarHacemos Click en : ComboLuego Click sobre ab debajo de: Header1 de la primera columna del gridHacemos Click en : SpinnerLuego Click sobre ab debajo de: Header1 de la Segunda columna del gridSalimos de edición haciendo Click fuera del Grid

Presionamos Botón derecho sobre el GridPropiedades

Hacemos Clic en: grdDetalleSeleccionamos : Column1

Current ControlClic en Text1seleccionamos Combo1

Similar debe hacerlo para Spinner de la Segunda Columna

Continuamos cambiando el valor de las propiedades de los siguientes objetos:

Prof. José de La Rosa Página 48

Objeto: Propiedad Valor Objeto: Propiedad ValorControlSource Temporal.Artdet ControlSource Temporal.Artpre

Column1 CurrentControl Combo1 Column3 Name ColPreUniName ColDescripcion ReadOnly .T. Verdadero

ControlSource Temporal.Artdet ControlSource Temporal.SubTotalColumn2 CurrentControl Spinner1 Column2 Name ColSubTotal

Name ColDescripcion ReadOnly .T. Verdadero

Alignment 2. Medio Centro Alignment 2. Medio CentroHeader1 Caption Descripcion Header3 Caption Precio

FontBold .T. Verdadero FontBold .T. Verdadero

Alignment 2. Medio Centro Alignment 2. Medio CentroHeader2 Caption Cantidad Header4 Caption SubTotal

FontBold .T. Verdadero FontBold .T. Verdadero

ControlSource Temporal.Cant

ControlSource Temporal.ArtDet KeyboardHighValue 99Name CmbDescripcion KeyboardLowValue 1

Combo1 RowSourceType 6. Campos Spinner1 Name SpnCantidadRowSource Articulo.ArtDet Style 2. Lista DesplegableStyle 2. Lista Desplegable SpinnerHighValue 99Value 1 SpinnerLowValue 1

Value 1

Guis del Usuario Revista Compus Prácticas FoxPro

Más propiedadesNota: Caption de Labels ver el Grafico

Diseño en tiempo de Ejecución:

Digitaremos los siguientes códigos, según como se indican a continuación

Objeto: Formulario Principal (Form1) Evento Init

Public srecset multilock onset talk offset safety offset exclusive on

SELECT GUIAENC = cursorsetprop("buffering",3)set order to tag Nguiago bottomthisform.txtnguia.value = right("00000"+alltrim(str(val(nguia)+1)),6)append blankreplace nguia with thisform.txtnguia.value

Select temporaldele allset dele onappend blankreplace nguia with thisform.txtnguia.valuesrec=recno()thisform.grdDetalle.refreshthisform.txttotal.value=0

Evento Destroy SELECT GUIAENC =Tablerevert (.t.)SELECT TEMPORAL

Objeto: Cmbdescripcion Evento: Click If len(allt(thisform.grddetalle.coldescripcion.cmbdescripcion.value))>0

thisform.grddetalle.colcantidad.spncantidad.setfocuselse

thisform.grddetalle.coldescripcion.cmbdescripcion.setfocusendifthisform.refresh

Prof. José de La Rosa Página 49

Objeto: Propiedad Valor Objeto: Propiedad Valor

Command1 Caption \<Nuevo Command3 Caption \<GuardarName cmdNuevo Name cmdGuardar

Command2 Caption \<Agregar Command4 Caption \<SalirName cmdAgregar Name cmdSalir

Command2 Caption \<Agregar Command4 Caption \<Salir

Text1 Name txtNguia Text2 Name txtSubTotal

Guis del Usuario Revista Compus Prácticas FoxPro

Evento: Interactivechange SELECT temporalgo srecreplace artcod with articulo.artcodreplace preuni with articulo.artprereplace subtotal with thisform.grddetalle.colcantidad.spncantidad.value*preunisum subtotal to ntotalgo srecthisform.txttotal.value=ntotalthisform.grddetalle.colcantidad.spncantidad.value=1thisform.refresh

Evento: LostFocus

if len(allt(thisform.grddetalle.coldescripcion.cmbdescripcion.value))>0thisform.grddetalle.colcantidad.spncantidad.setfocus

elsethisform.grddetalle.coldescripcion.cmbdescripcion.setfocus

endifthisform.refresh

Objeto: spnCantidad Evento: InteractiveChange select temporalreplace subtot with thisform.grddetalle.colcantidad.spncantidad.value*preuninrec=recno()sum subtotal to ntotalgo nrecthisform.txttotal.value=ntotalthisform.refresh

Evento: LostFocus

thisform.grddetalle.coldescripcion.cmbdescripcion.setfocus

Objeto: cmbCliente Evento: Click SELECT GUIAENCreplace cliecod with cliente.cliecodthisform.grddetalle.coldescripcion.cmbdescripcion.setfocusTHISFORM.REFRESH

Objeto: cmdAgregar Evento: Click public srecSELECT TEMPORALif len(allt(artdet))>0

append blanksrec=recno()thisform.grddetalle.colcantidad.spncantidad.value=1

endifreplace nguia with thisform.txtnguia.valuethisform.grddetalle.coldescripcion.cmbdescripcion.setfocusthisform.refresh

Prof. José de La Rosa Página 50

Guis del Usuario Revista Compus Prácticas FoxPro

Objeto: cmdNuevo Evento: Click Public srecselect temporaldele allset dele onappend blankreplace nguia with thisform.txtnguia.valuesrec=recno()thisform.grddetalle.refreshthisform.txttotal.value=0thisform.refresh

Objeto: cmdGuardar Evento: Click SELECT GUIAENCreplace igv with thisform.txttotal.value*0.18replace total with thisform.txttotal.value=tableupdate(.t.)

SELECT TEMPORAL Scan

insert into guiadet(nguia,artcod,artdet,preuni,cant,subtotal);values(temporal.nguia,temporal.artcod,temporal.artdet,;

temporal.preuni,temporal.cant,temporal.subtotal) EndScan

SELECT GUIAENCset order to tag Nguiago bottomthisform.txtnguia.value=right("00000"+alltrim(str(val(nguia)+1)),6)

Objeto: cmdSalir Evento: Click SELECT GUIAENC=tablerevert(.t.)SELECT TEMPORALrelease thisform

Guardar y Probar la Ejecución.Realizar los cambios respectivos, hasta presentar similar al presente modelo.

Queda para el usuario hacer los últimos toques, para que resulte un buen diseño.

Prof. José de La Rosa Página 51