SlideShare una empresa de Scribd logo
1 de 84
Descargar para leer sin conexión
Curso de Visual Foxpro
Entorno de Desarrollo de Visual Foxpro (I)
Temas que abordaremos en este Capítulo:
Introducción
Instalación - Formatos

Aprendizaje - Ayuda 
Conceptos - Eventos - Controles

Tipos de Ficheros - Tipos de Datos.

Control de Flujo del Programa

El entorno de desarrollo (Administrador de proyectos- Diseñadores y
Asistentes) (Próxima entrega)

Gestión de Ficheros - Creación de Tabla mediante asistente. (Próxima entrega)



Introducción
Visual Foxpro es uno de los gestores de Bases de Datos relacionales más
rápido y flexible del mercado, disponiendo de un complejo entorno de desarrollo
totalmente orientado al objeto y altamente integrado en el sistema operativo Windows
95. Como cualquier otra aplicación Windows estándar, Visual Foxpro soporta
interfaces MDI, barras de herramientas, ayuda sensible al contexto, múltiples fuentes,
acceso a bibliotecas de enlace dinámico (DLL), etc.
Aparte del acceso a tablas en formato nativo de Visual FoxPro, se puede
acceder virtualmente a cualquier fuente de datos cuyo acceso se pueda hacer através
de ODBC (Open Database Connectivity). Este estándar, definido como
Conectividad Abierta de Bases de Datos, permite abrir y consultar diversas bases
de datos a través de un conjunto de controladores, utilizando SQL como lenguaje de
consulta.
Con el advenimiento de Visual Fox, los desarrolladores de aplicaciones tienen
acceso a multitud de eventos y opciones que los programadores de Visual Basic y
Visual C tuvieron durante años. Se elimina la necesidad del uso del READ y su
confusa nidificación (Fundational read).
Se aprovechan algunas de las innovaciones que incorporó el Visual Basic, que tuvo
liderazgo en simplificaciones tales que le dieron alcance masivo a la programación. En esta
clase examinaremos, entre otras cosas, qué son los formularios, eventos y controles, y cómo
se usan

1
2.- INSTALACION - FORMATOS
Se puede instalar en Windows 95 / 98 o NT, dado que sólo viene un instalador de
32 bits. Al igual que Visual Basic 5, no funcionará en Windows 3.X. Para esta
plataforma puede usar Fox Pro 2.6 para Windows, que no es un lenguaje Visual.
Formatos: tiene una sola versión completa y también forma parte del paquete
Visual Estudio (conjunto de lenguajes visuales y SQL Server 6.5).
La instalación básicamente consiste en ejecutar el programa INSTALAR (versión
española) o SETUP (versión en inglés), y seguir los diálogos. Por omisión se instala
en la carpeta C:VFP, pero si lo desea Ud. puede cambiarla.
Con la instalación mínima se requieren 25 Mg de espacio en disco, con la típica
alrededor de 100 Mg, y completa puede ocupar cerca de 200 Mg, incluyendo la
documentación en línea (Carpeta C:VFPONLINE) y los audiovisuales explicativos en
inglés (carpeta C:VFPONLINEMEDIA de casi 60 Mg).
Por omisión deja todo esto (documentación y audiovisuales para su uso desde el
CD para economizar espacio, pero puede copiarlos al disco rígido sí desea acceso
más rápido y no tiene problemas de espacio en disco.
Equipo Mínimo:
 Un PC compatible con IBM® con Windows 95 / 98, aunque
funciona con un procesador 486 a 50MHz se recomienda algo
superior (típicamente Pentium 166 /200 Mhz con 32 MG RAM).
 Un mouse o ratón.
 Se recomienda un monitor VGA o de mayor resolución,
preferiblemente color.

3.- Aprendizaje
Vea en menú de Ayuda, (ALT + U, D), "Documentación" que pone en pantalla a
todos los manuales. Podría empezar por ej. por la “Guía de Instalación”, “Manual del
Usuario”, "Manual del Programador", “Referencia del Lenguaje”, etc..
Más adelante podrá usar ese mismo menú de Ayuda - Aplicaciones Ejemplo. Y
estudiar los casos típicos que allí se explican.

4.- Ayuda
Vea en la Ayuda, (ALT + U), Temas de ayuda, y también aplicaciones de ejemplo
que se pueden ejecutar y estudiar, Microsoft en la Web (Si tiene Internet), Soporte
técnico, etc.
También está la ayuda sensible al contexto (F1), el índice temático, y la opción
Buscar.
En la ayuda se puede imprimir, seleccionar, copiar, y luego pegar en un
procesador de textos cualquiera.

5.- Conceptos
Cómo funciona Windows:
Mensajes: Todo lo que sucede dentro de Windows es el resultado del envío de
un mensaje. Cuando se hace clic en una tecla o botón, cuando cambia el tamaño a
una ventana, cuando un carácter se digita dentro de una caja de edición, cuando se
mueve el puntero del mouse, etc., Windows envía un mensaje informando de dicha
situación.

2
El volumen de mensajes generados en cada segundo es tremendo. Una queja
común entre los programadores de C++ que comienzan a trabajar en lenguajes del
tipo del Fox, es que pierden la habilidad de interceptar cientos de mensajes que Windows envía.
El Fox 2.6 para Windows está basado en un sistema de ventanas creado para
DOS, que no se basa en mensajes. Además de crear la ventana gráficamente, el
objetivo era generar código fuente de Fox rápidamente (SPR), además de generar la
entidad “ventana” utilizable (SCX).
Fox tuvo que ser mejorado para permitirle a los desarrolladores tener este tipo
de fundamento, además de permitirle interceptar esta clase de mensajes, llegándose
así a la versión visual, con el agregado del concepto “Formulario” (En inglés, Form).
Ventana: La del explorador, un botón es una ventana, un documento de Word,
un icono, una caja de textos, botones de opción, una barra de menú, etc. todas son
ventanas.

Formularios
Visual Fox Pro tiene un nombre especial para una pantalla: formulario o Form.
Un formulario no es nada mas que una ventana común de Windows, pero a un
nivel mayor de abstracción.
Se podría pensar un formulario, por ejemplo, como un conjunto auto-contenido
de objetos sin tener que preocuparse por una gran cantidad de detalles por cuales se
preocuparía un programador de C.
“Auto contenidos” quiere significar que el formulario tiene propiedades que
pueden ser alteradas para controlar la apariencia y comportamiento del formulario, y
eventos que se disparan cuando ciertos mensajes se envían a los mismos.
Una pantalla de entrada o ventana construida usando el constructor de
pantallas de Fox 2.6 (Screen Builder) no es un objeto, aunque le dé la ilusión de que
es así.
Cuando se examina el código generado por Fox Pro 2.6 se puede ver la
sentencia DEFINE WINDOW, las sentencias GET / SAY, y finalmente la sentencia
READ que causa que Fox entre en estado de espera para permitirle al usuario ingresar datos.
Cuando Ud. diseña un formulario en Visual Fox, lo hace casi igual que en
Visual Basic y, a diferencia de lo que ocurría en Fox 2.6 para Windows, el formulario
es un objeto, porque tiene propiedades que manipulan la apariencia del formulario, o
cambian la forma en que se comporta.
Se puede fijar los valores (numéricos o alfabéticos) de dichas propiedad tanto a
tiempo de diseño usando la ventana de propiedades, como durante la ejecución de
un programa (tiempo de ejecución o en inglés, runtime).
A cada formulario se le asigna un único nombre (propiedad Name), y una vez
que tiene un nombre se lo puede referenciar tanto dentro como fuera del mismo
formulario.

3
Por ejemplo, suponga que tiene un formulario al que llama frmCliente y desea
cambiar el título de dicho formulario (propiedad Caption), se puede referencia dicha
propiedad utilizando la sintaxis del punto como sigue:
frmCliente.Caption = “ALTAS”

y usando la misma notación puede colocar el título de una ventana en la
variable lctitulo, usando la sentencia:
lctitulo = frmCliente.Caption
La principal ventaja de utilizar propiedades de objetos contra los distintos
comandos usados hasta ahora, es la consistencia: más que recordar muchos
diferentes comandos (probablemente cada uno con diferente sintaxis), solamente se
tiene que acordar el nombre de la propiedad, y la sintaxis es la misma.

Eventos
Todo lo que ocurra en Windows es el resultado de enviar un mensaje. Visual
Fox previene que Ud. se las tenga que ver con cientos de diferentes mensajes usando
la noción de evento.
Un evento es una acción reconocida por un objeto, tal como el clic de un ratón,
o la presión de una tecla en el teclado. Cuando Ud. hace clic con el ratón en un
formulario, Windows envía un mensaje al formulario diciéndole que alguien ha hecho
clic sobre él.
Entonces Visual Fox dispara el evento clic del formulario en respuesta a dicho
mensaje. Ud. solamente debe escribir la parte de código que se ejecutará cuando
dicho evento ocurra.
Por ejemplo, puede poner código que cambie el color de fondo del formulario
(Propiedad BackColor) en respuesta a dicho evento.
En la siguiente tabla están algunos de los eventos más comunes del objeto formulario:
Evento

Se dispara cuando...

Load
DblClick
MouseMove
Resize
GotFocus

Se carga el formulario por primera vez.
El usuario hace doble clic en el formulario.
El ratón se mueve sobre el formulario.
Se cambia de tamaño del formulario
Formulario “en foco”, desde otro
formulario se hace clic en éste.
Se hace clic fuera del formulario

Lost Focus

Controles
Son aquellos objetos gráficos a través de los cuales los usuarios pueden recibir
y responder a los distintos tipos de mensajes Windows, de forma similar a las que lo
hacía el formulario. Otra definición de control: son una instancia de una clase,
combinada con datos y procedimientos.
Ejemplo: botón (push button), cajas de edición (edit boxes), cajas de texto (text
boxes), líneas, texto o etiquetas (labels), etc.

4
Los controles pueden ser vistos como objetos autocontenidos, con propiedades
que le permiten manipular su propia apariencia, comportamiento, y responder a los
eventos mediante código escrito (programación).
Al igual que pasaba con los formularios, los controles tiene un único nombre
(Propiedad Name), y se puede cambiar cualquier propiedad usando la notación del
punto.
Por ejemplo, para hacer que el texto (propiedad Text) que está en una caja de
texto (text Box) que se llama txtCaja desde y hacia la variable lcVar, se usará:
txtCaja.Text = lcVar
lcVar = txtCaja.Text

Algunas propiedades son únicas para un determinado control (no existen en
otros controles), pero existen otras que son comunes a todos los controles, por
ejemplo:
Propiedad

Significado

Enabled
FontName
Left

El control está habilitado
Nombre tipografía usada (caracteres)
posición del borde izquierdo del control
referida a su ventana contenedora
True (verdadero) si está visible.

Visible

Los controles pueden responder a eventos disparados tanto por acción del usuario como directamente desde el sistema.
Por ejemplo, si el usuario hace clic sobre un control botón de apretar (push
button), Windows le informa enviándole un mensaje a dicho control que ha sido apretado (clicked). El control o botón entonces dispara el evento Clic, y ejecuta el código
colocado o asignado a dicho evento.
Al igual que las propiedades, algunos eventos son inherentes a dicho control y
no existen en otros, pero hay eventos comunes a todos los controles, como serían los
siguientes caso típico:
Evento

Se dispara cuando...

Click
MouseMove
GotFocus

el usuario hace click sobre el control
El ratón se mueve sobre el control.
Control “en foco”, desde otro control se
hace clic en éste.
Se hace clic en otro control

Lost Focus

Controles “Custom”
Uno de los principales factores que contribuyeron al éxito del Visual Basic fue
la “explosión” en el mercado de controles suministrados por fabricantes externos o
terceras partes.
Estos controles aparecen en la paleta de controles del Visual Fox Pro junto con
los controles normales (built-in) y se manipulan de forma similar (fijando valores a sus
propiedades y codificando rutinas que dan respuesta a ciertos eventos).
Estos controles cubren un amplio espectro desde botones y cajas de texto
mejoradas, hasta complejas hojas de cálculo (grid) o gráficos comerciales (Pinacle
Graph).
5
Dichos controles estaban escritos generalmente en C y empaquetados en una
clase especial de librerías dinámicas (como las DLL) que verdaderamente extendieron
la eficacia del lenguaje, por lo que fueron llamadas. VBX (Visual Basic eXtensions),
luego OCX y actualmente se los llama ACTIVE X, ahora también soportados todos
ellos por Visual Fox Pro, que ahora en la versión 5, puede crear bibliotecas de enlace
dinámico o DLL.

6.- Tipos de Datos
Los datos con los que se trabaja probablemente incluyan períodos de
tiempo, dinero y elementos contables, así como fechas, nombres, descripciones,
etc.
Cada dato corresponde a un determinado tipo, es decir, pertenece a una
categoría de datos que se manipula de maneras similares.
Se podría trabajar directamente con estos datos sin almacenarlos, si bien
perdería la mayor parte de la flexibilidad y potencia que ofrece Visual FoxPro.
Visual FoxPro aporta numerosos contenedores de almacenamiento con el fin de
ampliar su capacidad para manipular fácilmente los datos.

Tipos de datos
Los tipos de datos determinan la manera en que se almacenan los datos y la
forma en que se pueden utilizar tales datos.
Puede multiplicar dos números, pero no puede multiplicar caracteres. Puede
imprimir caracteres en mayúsculas, pero no es posible imprimir números en
mayúsculas.
En la siguiente tabla se enumeran algunos de los principales tipos de datos
de Visual FoxPro.

Tabla de Tipos de datos
Tipo

Byte

Numérico

8

Moneda
(Currency)
Character

8

Logical
Fecha - Fecha
y hora (Date DateTime)

1á
256
1
8

RANGO - Ejemplo
–.9999999999E+19 a

.9999999999E+20
– 922337203685477.5808 a
922337203685477.5807
“Prueba”
“123”
“01/01/95”
.T.(verdadero)
.F. (falso)
{01/01/95}
{01/01/95 12:30:00 pm}
01/01/0100 hasta 31/12/9999

Tipos de campos
Tipo

Byte

Ejemplos

Numérico

1 á 20 –.9999999999E+19 a

Punto Flotante

1 á 20 –.9999999999E+19 a

.9999999999E+20

6
4

.9999999999E+20
Texto longitud variable Máximo según memoria
+/–4.94065645841247E-324
a +/–8.9884656743115E307
“Prueba” “123” “01/01/95”
Cualquier caracter
.T.(verdadero)
.F. (falso)
–2147483647 a 2147483646

10

Sin tabla de códigos

10
4

Sin tabla de códigos
Limitado por
Memoria disponible
{01/01/95}

Memo

4

Doble
Precisión
Character

8

Logical
Integer
(Entero)
Carácter
(Binario)
Memo (Binario)
General
(Obj.OLE)
Fecha - Fecha
y hora (Date DateTime)

1á
254
1

8

{01/01/95 12:30:00 pm}

Contenedores de datos
Los contenedores de datos le permiten realizar las mismas operaciones con
varios datos.
Por ejemplo, sumar las horas que ha trabajado un empleado, multiplicarlas
por el salario por hora y restar los impuestos para determinar el sueldo que ha
percibido el empleado.
Deberá realizar estas operaciones para cada empleado y para cada período
de pago.
Si almacena esta información en contenedores y realiza las operaciones
sobre éstos, bastará con sustituir los datos antiguos por los nuevos datos y volver
a ejecutar el mismo programa.
En la siguiente tabla se enumeran algunos de los principales contenedores
de datos disponibles en Visual FoxPro:

Contenedores de datos
Tipo

Descripción

Variables Elementos individuales de datos
almacenados en la memoria
RAM (memoria de acceso
aleatorio) del PC.
Registro Varias filas de campos
s de
predeterminados, cada uno de
tabla
los cuales puede contener un
dato definido previamente. Las
tablas se guardan en disco.
Matrices Varios elementos de datos
almacenados en la memoria
RAM.

7
Uso de operadores
Los operadores se utilizan para vincular los datos formando expresiones. Las
expresiones producen un resultado que se puede asignar a un variable o campo
mediante un operador (el operador de asignación o el signo igual).
Operador =
Tipos de datos válidos
Ejemplo

Todos

?n=7

Resultado Imprime .T. si el valor almacenado en la variable es 7; de lo contrario,

imprime .F.
Operador +
Tipos de datos válidos

Numeric, Character,Date, DateTime
Ejemplo
Resultado

? "Fox" + "Pro"

Imprime “FoxPro”

Operador *, /
Tipos de datos válidos
Numeric
Ejemplo
? 5 * 5
Resultado
Imprime 25

TABLA DE Funciones de CONVERSIÓN entre tipos de datos.
Tipo ORIGEN

FUNCION

Tipo
DESTINO

Carácter o
Memo
Numérico,
Flot, Doble o
Entero
Numérico
Moneda
Carácter o
Memo
Fecha

VAL ( )

Numérico

STR( )

Caracter

NTOM( )
MTON( )
CTOD( )

Moneda
Numérico
Fecha

Carácter
Carácter
Binario
Carácter o
Memo
FechaHora
Fecha
FechaHora
Lógico

DTOC o Carácter
DTOS
CTOBIN( ) Carácter
Binario
BINTOC( ) Carácter
CTOT( )

FechaHora

TTOC( )
DTOT( )
TTOD( )
IIF( )

Carácter
FechaHora
Fecha
Cualquiera

FUNCION TYPE
Evalúa una expresión de caracteres y devuelve el tipo de datos de su
contenido.
8
Sintaxis TYPE (cExpresión)
Tipos devueltos: Character
Argumentos: cExpresión Especifica la expresión que va a ser evaluada, que
puede tratarse tanto de una variable como de un campo, de un campo de memoria o
de cualquier otra expresión.
La expresión tiene que pasarse como una cadena de caracteres, hay que
entrecomillar los nombres de variables de memoria, de campos, etc. Si no entrecomilla
la expresión, la función TYPE( ) devolverá “U” (expresión indefinida).

Tipo de datos

Carácter
devuelto

Character
Numeric (también flotante,
doble y entero)
Currency
Date
DateTime
Logical
Memo
Object
General
Indefinido

C
N
Y
D
T
L
M
O
G
U

Jerarquía de operadores
El orden de prioridades según el cual se aplican los operadores al evaluar una
expresión matemática, se llama en Visual FoxPro, la precedencia de los operadores,
que es de mayor a menor jerarquía:






( ) (agrupamiento de subexpresiones),
^ o ** (exponenciación),
* y / (multiplicación y división),
% (módulo),
+ y – (suma y resta).

Control del flujo del programa
Visual FoxPro incluye una categoría especial de comandos que “envuelven” a
otros comandos y funciones, determinando cuándo y con qué frecuencia se ejecutan
los otros comandos y funciones.
Estos comandos permiten realizar bifurcaciones condicionales y bucles, dos
herramientas de programación sumamente potentes.
Una estructura de control muy usada es la estructura condicional SI (IF en
inglés). De la ayuda de Vfox sacamos lo siguiente:
IF : Ejecuta condicionalmente un conjunto de comandos dependiendo del
resultado de una expresión lógica.
Sintaxis
IF lExpresión [THEN]
Comandos
[ELSE
Comandos]
9
ENDIF
Argumentos:
lExpresión
Especifica la expresión lógica evaluada. Si lExpresión da como
resultado verdadero (.T.), se ejecutarán cualesquiera instrucciones posteriores a IF y
anteriores a ELSE o ENDIF (lo que suceda primero).


Si lExpresión es falsa y se incluye ELSE, se ejecutan los comandos
situados después de ELSE y antes de ENDIF.

Si lExpresión es falsa (.F.) y no e incluye ELSE, se pasarán por alto
todas las instrucciones entre IF y ENDIF. En este caso la ejecución del programa
continuará con la primera línea de comando a continuación de ENDIF.
Comentarios : Puede anidar IF ... ENDIF dentro de otro bloque IF ... ENDIF.

Los comentarios precedidos de && se pueden colocar en la misma línea
después de IF, ELSE y ENDIF. Estos comentarios se pasan por alto durante la
compilación y la ejecución del programa.

Continua...

Curso de Visual Foxpro
Entorno de Desarrollo de Visual Foxpro (II)
(Diseñadores y Asistentes - Gestión de Ficheros - Creación
de Tabla mediante asistente)
Toda la interfaz de desarrollo incorporada por "Visual Foxpro" está orientada a
la generación rápida de aplicaciones (RAD). El objetivo final es la generación de
aplicaciones seguras en un tiempo razonablemente pequeño. Todo esto se consigue
dejando que el trabajo a bajo nivel lo efectúe el sistema, quedando para el
programador el aspecto visual y el análisis de la aplicación. Para conseguir este fin,
Visual Foxpro incorpora el siguiente conjunto de herramientas:

Administrador de proyectos
Visual Foxpro incorpora un potente gestor de proyectos que centraliza la
gestión de todos los archivos manejados por una aplicación. A partir de la información
contenida en un proyecto se generan las aplicaciones que pueden ser distribuidas

10
libremente a todos los usuarios. Además, Visual Foxpro incorpora una herramienta
que asiste al programador para crear disquetes de instalación que incluyan toda la
información necesaria para instalar esta aplicación en otros ordenadores.
Diseñador de Bases de Datos
Como apoyo al sistema, incorpora un potente gestor de bases de datos. Este
gestor maneja bases de datos que actúan como referente de la información adicional
relacionada con tablas, índices, relaciones, reglas de validación, integridad referencias
y un sin número más de información. De esta forma, una base de datos mantiene
actualizada y centralizada toda la información de funcionamiento de las tablas que con
ella están relacionadas. Por ejemplo, cada vez que se modifica un registro en una
tabla perteneciente a una base de datos, se comprueban las reglas de modificación
para esta tabla. Si por cualquier razón no es posible actualizar la tabla porque una de
las reglas de validación ha fallado, se devuelve la tabla a su estado original,
advirtiendo, por supuesto, al usuario de esta eventualidad.
Diseñador de formularios
Totalmente orientados al objeto, permiten diseñar el aspecto gráfico final de una
aplicación. Permiten la inclusión de objetos estándar en Windows, tales como casillas
de verificación, grupos de opciones, marcos de página, imágenes, controles OLE.
Gracias al diseñador de clases visuales, se pueden crear nuevos tipos de controles
que pueden ser incorporados como cualquier otro control a un formulario. Gestionan
de forma transparente al usuario el entorno de datos asociado para cada formulario.
En este entorno de datos es posible incluir cualquier tabla, vista local o remota definida
en una base de datos. Pero no sólo eso, es posible que cada entorno de datos sea
privado para cada formulario. De esta forma pueden abrirse varias instancias de un
mismo formulario sin que existan problemas de colisión de datos entre las dos
instancias definidas.
Diseñador de informes y etiquetas
A la hora de visualizar datos, ya sea por pantalla o impresora, Visual FoxPro
incorpora un potente diseñador de informes y etiquetas. En un informe se pueden
definir objetos dentro de las tres bandas, cabecera, pie o detalle, y, además, distribuir
el informe en varios grupos que muestren el resultado de cálculos sumatorios u otros
realizados desde el propio formulario.
A estas prestaciones hay que añadir la posibilidad de incluir en el entorno de
datos del propio informe cualquier tabla o vista definida en la base de datos, tal como
se ha comentado en referencia a los formularios.
Diseñador de menús
Este diseñador se utiliza para crear menús personalizados en la aplicación y así
sustituir el menú incorporado por Visual FoxPro. El sistema utilizado se basa en la
creación de unos ficheros donde están las definiciones de menú. A posteriori, la
información contenida en estos ficheros de menú es analizada por un generador de
código con la finalidad de generar de forma automática código fuente con las
definiciones de menú.
Asistentes
Para usuarios incipientes, los asistentes pueden ayudar a crear nuevos tipos de
ficheros de forma sencilla y rápida. No por ello se elimina la posibilidad de modificar
los ficheros creados, ya que éstos pueden ser alterados posteriormente mediante su
diseñador correspondiente.
Los generadores de controles ayudan en la creación de nuevos controles
insertados en los formularios. Estos generadores se encuentran totalmente abiertos y
el usuario puede incorporar sus propios generadores.
11
Diseñador de consultas y vistas
Cuando se trata de recuperar información, los generadores de consultas y vistas
constituyen un apoyo indispensable para poder generar expresiones SQL. Si estas
sentencias extraen información de la propia base de datos, se denominan vistas
locales. Cuando estas vistas extraen información de una base de datos externa, se
denominan vistas remotas.
Apariencia de la ventana de sistema
El sistema intérprete se basa en la utilización de la ventana Comandos. Desde
esta ventana se escriben sentencias que usualmente provocan una acción por parte
del sistema de desarrollo. Así, desde la ventana de comandos se puede abrir tablas,
examinar su contenido, crear programas, compilarlos, etc.
Aparte de la ventana de comandos, cualquier acción se puede realizar desde el
menú de sistema, o bien desde la barra de herramientas activa. Es posible
personalizar el menú de sistema y cualquier barra de herramientas, o incluso crear
nuevas barras de herramientas según las necesidades del usuario.

Tipos de Ficheros
Como se han dicho, el proyecto guarda información acerca de la localización de
cada archivo. Como ayuda se presenta una lista de las posibles extensiones
asociadas con cada tipo de ficheros y una breve descripción de cada tipo.
Tipo
Proyecto

Extensiones
relacionadas
PJX, PJT

Descripción

Bases de Datos

DBC, DCX, DCT

Formulario

SCX,SCT

Bibliotecas de
Clases Visuales
Tablas

VCX,VCT
DBF,FPT

Bibliotecas conteniendo varias clases
definidas por el usuario.
Tablas y fichero memo asociados.

Índices

CDX,IDX

Ficheros índice compactos y simples.

Documentación

ACT

Informes

FRX,FRT

Fichero conteniendo el diagrama de
acciones de un fichero PRG generado
por el asistente de documentación.
Informes.

Etiquetas

LBX,LBT

Etiquetas.

Librerías Windows

DLL

Librería de enlace dinámico Windows

Errores

ERR

Fichero de seguimiento de errores de
compilación.

Núcleo central de desarrollo. Efectúa
el seguimiento a todos los ficheros
relacionados con una aplicación.
Tabla contenedora para información
relacionada con tablas, índices,
relaciones, vistas y conexiones.
Ficheros de definición de formularios.

12
Ejecutables

EXE

Fichero ejecutable Visual Foxpro.

Macros

FKY

Fichero de definición de macros.

Bibliotecas API

FLL

Programas

PRG,FXP

Biblioteca
de
enlace
dinámico
Windows.
Programa Fuente y Compilado.

Ayuda

HLP

Fichero de ayuda gráfica.

Memoria

MEM

Menús

MNX,MNT

Fichero de almacenamiento
variables de memoria.
Fichero de definición de menús.

Menús generados

MPR,MPX

Control OLE

OCX

Fichero generado y compilado. A
partir de una definición de menús.
Fichero control ActiveX

Consulta SQL

QPR,QPX

Fichero de consulta SQL.

Copias de seguridad

TBK,BAK

Texto

TXT

Copias de seguridad de diversos
ficheros.
Ficheros de Texto.

Constantes

H

Fichero de constantes predefinidas.

de

Gestión de ficheros
Desde el menú Archivo se realizan las acciones relacionadas con archivos. Consta de
las opciones:
Opción
Nuevo
Abrir
Cerrar
Guardar
Guardar como...
Revertir

Descripción
Crea un nuevo fichero de cualquier tipo
Abre un fichero de cualquier tipo.
Cierra el archivo en uso.
Actualiza las modificaciones efectuadas al fichero actual en
disco.
Salva el fichero actual en disco con un nuevo nombre.
Recupera la versión guardada en disco del fichero actual.

Cuando se desea crear un nuevo fichero, se muestra el cuadro de diálogo tal
como vemos en la Figura. Este cuadro de diálogo permite seleccionar el tipo de fichero
que se desea crear. Existen diversos tipos de ficheros que permiten su creación
mediante asistentes, que facilitan enormemente la tarea de crear nuevos ficheros.

Los Asistentes
Los asistentes proporcionan el método más eficaz y sencillo de apoyo a los nuevos
usuarios en Visual Foxpro. Cubren prácticamente todos los tipos de ficheros básicos

13
que se pueden crear, desde tablas a formularios, pasando por informes, consultas, etc.
Veamos cuáles son:
Asistentes
Asistente para formularios
Asistente para formularios
uno a varios
Asistentes para tablas
Asistente para importar
datos a tablas
Asistente para tablas
dinámicas
Asistentes para consultas
Asistente para tablas de
referencias cruzadas
Asistentes para gráficos
Asistente para informes
Asistente para informes de
uno a varios
Asistente para informes
de grupos/totales
Asistentes para etiquetas
Asistente para combinación
de correspondencia
Asistente para vistas

Asistente para vista remota

Descripción
Crea nuevos formularios. Crea ficheros de tipo
SCX.
Crea formularios con soporte de ficheros
relacionados de uno a muchos. Crea ficheros
SCX.
Crea nuevas tablas libres o definidas en una base
de datos. Crea ficheros de tipo DBF.
Importa datos a una tabla procedentes de otro
origen.
Crea tablas de hoja de cálculo utilizables desde
Microsoft Excel.
Crea consultas con sentencias SQL almacenadas
en ficheros de tipo QPR.
Crea una consulta en formato hoja de cálculo.
Crea ficheros de tipo QPR.
Crea un nuevo gráfico en Microsoft Graph a
partir de la información contenida en una tabla.
Crea una nueva definición de informe. El tipo de
fichero creado es FRX.
Crea una nueva definición de informe
relacionando una tabla primaria con otra
secundaria. Crea fichero de tipo FRX.
Crea un informe con definición de resumen para
grupos y totales. Crea ficheros de tipo FRX.
Crea un nuevo fichero de definición para imprimir
etiquetas postales. Crea un fichero de tipo LBX.
Crea un origen de datos compatible con el
procesador de texto Microsoft Word o cualquier
otro.
Crea una nueva definición de vista en una base de
datos. La información generada por este asistente
se guarda en una base de datos DBC.
Crea una nueva definición de vista remota. El fin
es acceder a otro tipo de información contenida a
su vez en un servidor de datos. Esta nueva vista
se almacena en una base de datos DBC.

Crear una nueva tabla mediante el asistente
Para crear una nueva tabla mediante el Asistente para tablas, debe proceder
de alguna de estas dos formas:



Desde el menú Herramientas, escoja el submenú Asistentes. De este
menú, escoja la opción Tabla.
Desde el menú principal, escoja del menú Archivo la opción Nuevo CTL+N
o escoja el botón de comando Nuevo de la barra de herramientas Estándar.
Visualice a continuación el cuadro de diálogo para la elección del nuevo tipo
de fichero a crear. Escoja Tabla y pulse en el botón de comandos Asistente.

14
El asistente genera una nueva tabla siguiendo tácticamente una serie de pasos que
conducen a confeccionar una tabla y sus índices correspondientes.
Paso 1. Seleccionar campos
Este paso trata de determinar los campos que se van a definir en la nueva tabla, a
partir de unas definiciones estándar aportadas por el propio asistente. De esta forma,
se puede crear una nueva tabla basándose en tipos más o menos ajustados a las
necesidades del usuario.
Paso 2. Opciones de campos
Puede que las definiciones de campo no se ajusten exactamente a las necesidades
del usuario. Para esto existe este paso, permitiendo la modificación de los parámetros
definitorios de un campo, como son su nombre, el título, el tipo, el ancho, decimales y
soporte de valores nulos. Bien, en cuanto al título, sólo hay que hacer una
diferenciación, y es que si no hay una base de datos definida y abierta en el sistema,
no se puede crear o modificar un título asociado a un campo. Esta es una de las
características aportadas por las bases de datos, la posibilidad de ampliar la
información relativa a tablas. Otro caso es el nombre del campo: si no existe una base
de datos abierta, no se puede ampliar su descripción más allá de diez caracteres.
Como se verá más adelante, es posible asignar nombres de campo hasta 255
caracteres.
Paso 3. lndexación
Para poder localizar cualquier tipo de información de una tabla es necesario recurrir a
la creación de índices. Los índices proporcionan un método rápido de localización de
registros basándose en expresiones. La expresión a localizar se va comparando con el
contenido del índice, hasta localizar el registro cuyo valor en la clave de índice
coincide con la expresión buscada.

Paso 4. Finalizar
Una vez que se han recorrido los pasos correctamente, se procede a generar una
tabla. Adicionalmente, el asistente nos permite examinar la tabla tal como ha quedado
o modificarla mediante el diseñador de tablas para añadirle prestaciones adicionales

Manejo de tablas
Suponiendo que hubiéramos elegido la opción Guardar la tabla y examinarla
en el Asistente para tablas, obtendría una nueva ventana Examinar con la nueva
tabla vacía.
Lo que aquí vemos es una ventana típica utilizada para examinar tablas. En este
caso estamos visualizando una tabla con registros. Dentro de la ventana distinguimos
varios apartados.




Columnas Dependiendo del tamaño de la ventana Examinar, se muestran
más o menos columnas. Cada columna visualiza en el encabezado el
nombre del campo, o bien, el título definido en la base de datos para este
campo. Usualmente, marcando en el título de un campo y arrastrándolo a
una nueva posición, modificamos el orden de visualización de columnas.
Selección de celda. Para indicar en qué registro está posicionado, existe un
indicador situado a la izquierda de la primera columna visualizada. Este
indicador una flecha indicando que el puntero de registro está posicionado
en esa fila. Asimismo, la celda que tiene el enfoque de lectura visualiza el
cursor de edición y está remarcada con un cuadro cuyos bordes son
15


ligeramente mayores que las líneas separadoras. Como se puede observar
en la figura, todas las funciones de edición están disponibles, tales como
marcar un determinado segmento de caracteres, insertar o incluso marcar
todo el contenido del campo.
Estado del registro. Adyacente al indicador de registro se encuentra el
indicador de estado de la marca de eliminación. Si el registro está marcado
para borrar, este cuadro cambia su contenido de color negro.

Edición de registro interactivo
Desde la venta Comando se pueden utilizar estos comandos para abrir la ventana
Examinar y realizar modificaciones en cualquier tabla.

Comando/Función
APPEND [BLANK]
[IN nÁreaTrabajo | cAliasTabla]
[NOMENU]
BROWSE y CHANGE/EDIT
MODIFY GENERAL CampoGeneral1
[,CampoGeneral2 ...]
[NOMODIFY]
[NOWAIT]
[[WINDOW NombreVentana1]
[IN [WINDOW] NombreVentana2 |
IN SCREEN]]
MODIFY MEMO CampoMemo1
[,CampoMemo2 ...]
[NOEDIT]
[NOMENU]
[NOWAIT]
[RANGE nCarácterInicial,
nCarácterFinal]
[[WINDOW NombreVentana1]
[IN [WINDOW ] NombreVentana2 |
IN SCREEN]]
[SAME]
[SAVE]

Descripción
Abre la ventana Cambiar para añadir
registros a una tabla interactivamente.
Abren las ventanas Examinar y Cambiar,
respectivamente.
Abre una nueva ventana para poder editar
un campo de tipo general.

Abre una nueva ventana para permitir
editar un campo de tipo memo.

Opciones del menú tabla
Cuando se abre una nueva ventana Examinar, se crea un nuevo menú en la
barra de menús de sistema. El menú Tabla contiene las opciones básicas para el
manejo de tablas. Veamos algunas:
Añadir un nuevo registro
Elija la opción Añadir nuevo registro, o bien, pulse la combinación de teclas
CTRL+Y. Se inserta un nuevo registro en la tabla que se está examinando. También
es posible añadir registros desde la ventana Comandos emitiendo alguna de las
sentencias:
APPEND BLANK

16
APPEND
Cambiar el estado de la marca borrado
Cuando un registro ya no se hace necesario se marca como borrado. Este es el
paso previo a la eliminación de todos los registros marcados, cuyo proceso requiere el
uso del comando PACK. Como es evidente, también se puede realizar esta acción
como todas las demás, desde la ventana Comandos, mediante la sentencia
DELETE
Otra posibilidad interesante es alternar el estado del registro utilizando un cuadro
situado al lado del marcador de registro. Pulsando alternativamente en este cuadro,
modificamos el estado de la marca de borrado.
Ir a un registro determinado
Se puede ir a un registro determinado modificando la celda activa mediante el
ratón y las barras de desplazamiento vertical, o el teclado mediante los cursores. Pero
también se utilizar el submenú Ir al registro, cuyo contenido analizado es el siguiente:
Opcion
Primero

Último

Siguiente

Anterior

Registro número

Descripción
Va al primer registro de la tabla.
Desde la ventana Comandos habría
que utilizar:
GO TOP
Va al último registro de la tabla.
Desde la ventana Comandos habrá
que escribir:
GO BOTTOM
Posiciona el puntero de registro en el
siguiente registro. Obteniendo el
mismo resultado que utilizando esta
sentencia
desde
la
ventana
Comandos:
SKIP 1
Posiciona el puntero en el registro
anterior.
Desde
la
ventana
Comandos:
SKIP -1
Cambia el puntero de registro a un
registro específico. Desde la ventana
Comando habría que emitir la
siguiente sentencia:
GO nRegistro

Encontrar

Donde nRegistro es el número de
registro donde se desea posicionar el
puntero de registro.
Encuentra el registro que cumpla la
expresión de búsqueda. Veremos
más adelante la sintaxis del comando
17
LOCATE utilizado por esta opción de
menú

Continua...

Curso de Visual Foxpro
Entorno de Desarrollo de Visual Foxpro (III)
(Diseñadores y Asistentes - La ventana Sesión de datos Manejo de Registros Borrados - Importación/Exportación de
Datos - Asistente para importar datos
- Formularios - Crear un Formulario Rápido)

Búsqueda de registros
Al realizar una consulta en busca de uno o varios registros que cumplan los
criterios de búsqueda en una tabla es necesario aclarar algunos conceptos básicos.
Por una parte, el ámbito donde se va a realizar la consulta, que puede restringirse a
todos los registros de la tabla, los 10 siguientes o cualquier combinación válida.
Por otra parte, existe el concepto de expresión de búsqueda. Una expresión de
búsqueda se evalúa y compara con el registro activo. Si no se cumple la expresión de
búsqueda, continúa con el siguiente registro, y así hasta llegar al final de la tabla. Se
puede comprobar si una búsqueda ha tenido éxito observando en qué posición se
encuentra el puntero de registro.
Por último, esta búsqueda continúa mientras se cumpla una segunda
expresión. Es decir, se recorre toda la tabla mientras esta expresión sea verdadera; en
cuanto evalúe a falsa, finaliza la búsqueda, aunque no haya recorrido toda la tabla.
Cuando se elige la opción Encontrar del submenú Ir al registro, se visualiza el
cuadro de diálogo, que resume los tres conceptos que se acaban de perfilar. La
utilidad de este cuadro de diálogo es construir a partir de la información introducida en
el mismo una sentencia completa utilizando el comando LOCATE. Por tanto, lo que
vaya introduciendo en este cuadro de diálogo se incorporará como argumento tras el
comando LOCATE. Cuando se pulse en el botón de comando Encontrar, la sentencia
LOCATE se emite desde la ventana Comandos.
Veamos estos conceptos aplicados a la búsqueda de registros.
Alcance

18
El Alcance delimita la cantidad de registros que se van a procesar e incluso
desde y hasta qué registro va a cubrir la búsqueda. Cuando se aceptan las
modificaciones introducidas en este cuadro de diálogo se añaden los argumentos
necesarios en la sentencia LOCATE.
Alcance

Argumento

Descripción

Todos

ALL

Incluye la totalidad de los registros en la
búsqueda. El límite de búsqueda va desde el
registro número 1 hasta el último.

Siguiente

NEXT n

Incluye sólo los n registros siguientes al actual en
la búsqueda. Es decir, especificando 10 en el
cuadro de texto, incluirá sólo los 10 siguientes
registros a partir del actual en la búsqueda. Por lo
tanto, el límite se centra desde el registro actual
hasta el número de registros especificados.

Registros

RECORD n

La búsqueda se limita únicamente al número de
registro especificado por este cuadro de texto.

Restantes

REST

Comienza la búsqueda a partir del registro actual
y continúa hasta el final de la tabla. Por tanto, el
intervalo de búsqueda se limita desde el registro
actual al último de la tabla.

Cláusula FOR
Este es el núcleo básico de toda sentencia de búsqueda. Veremos que hay
multitud de comandos que pueden incorporar esta cláusula para delimitar aquellos
registros que cumplen los criterios especificados por esta misma cláusula.
Cuando se elige este botón de comando, se activa el generador de expresiones
de Visual Foxpro. Esta es una herramienta de gran utilidad para la construcción de
expresiones, desde la más simple hasta la más compleja. Veremos el generador de
expresiones más ampliamente en secciones siguientes.
Para confeccionar el ejemplo que veremos, ha bastado elegir el campo del
cuadro de lista Campos. A continuación se ha escrito la comparación. Por tanto,
estamos buscando aquel registro cuyo nombre de empresa sea igual a Centro, o al
menos comience con esos caracteres.
Cláusula WHILE
La selección de registros efectuada mediante la cláusula FOR se refiere a toda
la tabla por completo, y eso precisamente se diferencia de la cláusula WHILE. Esta
última restringe el ámbito de búsqueda a que la expresión lógica incluida con esta
cláusula sea cierta. En el momento en que no se cumpla la expresión, el comando que
incluye esta cláusula finaliza inmediatamente.
Por esta razón se puede decir que en este caso la búsqueda se realizará
mientras se cumpliera la cláusula WHILE, finalizando la búsqueda cuando no se
cumpliera, aunque no se hubiera recorrido toda la tabla.

19
La ventana Sesión de datos
Este cuadro de diálogo se utiliza como gestor para las tablas abiertas. Consta
de dos cuadros de lista que visualizan, por una parte, las tablas abiertas y, por otra, las
relaciones establecidas entre ellas. Cada tabla tiene asociadas una serie de
propiedades a las cuales es posible acceder desde el botón de comando
Propiedades. Asimismo, es posible abrir, cerrar tablas o establecer nuevas relaciones
entre las tablas abiertas. Pero la función primordial puede ser la de examinar el
contenido de la tabla seleccionada en el cuadro de lista Alias utilizando el botón de
comando Examinar. La particularidad de esta opción reside en que se recupera el
estado en que se cerró la ventana Examinar para esa tabla la última vez, incluyendo
tamaño y posición de la ventana o el tipo y tamaño de la fuente utilizada.

Modificar las propiedades de la Tabla
Cuando se pulsa el botón de comando Propiedades, se accede al cuadro de
diálogo utilizado para modificar las propiedades de la tabla abierta en el área de
trabajo actual. Entre las opciones que se pueden controlar desde este cuadro se
encuentra la posibilidad de activar un índice determinado, filtrar los registros de una
tabla o restringir la información que se muestra en una ventana Examinar
predeterminada.
Búfer de datos
El búfer de datos se activa si se elige la opción Activar almacenamiento en
búfer de datos. Esto significa que los cambios que se efectúen sobre la tabla no
serán actualizados en forma inmediata, y dependiendo del tipo de búfer de datos
elegidos, son potencialmente descartables en un momento determinado.
Siempre es posible cambiar el estado del búfer de datos, y de hecho, si no se
indica lo contrario, la tabla no se abre inicialmente con ningún búfer de datos activo.
Por tanto, si se desea utilizar el búfer de datos, es necesario activarlo desde este
cuadro de diálogo, o bien, desde la ventana Comandos mediante la función DBSET
PROP().
Selección de índice
Desde este cuadro combinado se elige el orden activo para el área de trabajo
actual. Se muestran en él todas las etiquetas del índice definidas para esta tabla. De
este modo se pueden utilizar el comando SEEK y la función SEEK() para encontrar el
registro que cumpla el criterio de búsqueda.
Filtro de datos
Desde el cuadro de texto o utilizando el generador de expresiones, llamado al
pulsar el botón de comando, generamos una expresión de filtro de datos. Esto significa
que cuando abramos una ventana Examinar para esta tabla, sólo se van a visualizar
aquellos registros que cumplan la condición escrita aquí.
Filtro de campos

20
Del mismo modo que se establecen filtros para visualizar una parte de los
datos presentes en una tabla, es posible realizar una acción análoga con las columnas
definidas en una tabla. De este modo, sólo aparecen en la ventana Examinar aquellas
columnas pedidas en esta opción.

Examinar
La Ventana Examinar tiene una serie de características interesantes, entre las
cuales podemos destacar las siguientes:
Modificar el aspecto de las columnas
Las columnas de datos pueden cambiar su posición y tamaño.
Definición de particiones
Una Ventana Examinar puede dividirse verticalmente en dos particiones. Cada
partición puede funcionar de forma independiente y presentar un aspecto distinto.
Fuentes
Cualquier fuente definida en Windows puede utilizarse para visualizar, en
cualquier tamaño y tipo, información en una ventana Examinar.

Abrir y Cerrar tablas
Estos dos botones de comando permiten abrir y cerrar tablas. Cuando se pulsa
en el botón de comando Abrir se selecciona la última área de datos activa y se abre
en esa área. Si existe una tabla seleccionada en la lista de alias activo, el comando de
cierre se refiere al área que está ocupando esa tabla.

Establecer relaciones
Si existen al menos dos tablas abiertas, es posible establecer relaciones entre
ambas. La forma de establecer relaciones entre la s dos consiste en pulsar el botón de
comando Relaciones teniendo una de las dos seleccionada en el cuadro de lista
Alias. En ese momento, en el cuadro de lista Relaciones aparece la tabla elegida.
Para establecer una relación entre las dos tablas es necesario saber qué
campo de la tabla principal - la que se eligió en primer lugar - hay que buscar en la
tabla secundaria. Eso es precisamente lo que se le pide al usuario cuando se
establece una nueva relación. En primer lugar elegimos un campo de la tabla principal,
y a continuación, el orden activo en la tabla secundaria.

Manejar registros borrados
La eliminación de registros puede realizarse de tres formas distintas, desde la
ventana Examinar, utilizando el marcador de registros borrados; desde la opción
Alternar marca de eliminación del menú Tabla, o bien, mediante el comando
DELETE desde la ventana Comandos.

21
El efecto inmediato es que el registro actual queda marcado para borrar y se
requiere la posterior intervención del comando PACK, que elimina definitivamente de
la tabla todos aquellos registros marcados para borrar.
Recuperar registros
Se puede alternar la marca de borrado de un registro determinado. Esto se
consigue de tres formas distintas: desde la propia ventana Examinar, mediante la
opción Alternar marca de eliminación, presente en el menú Tabla, o mediante el
comando RECALL.
Eliminar un conjunto de registros
Para evitar la necesidad de ir marcando cada registro individualmente, se
recurre al marcaje de varios registros de una vez. Para ello podemos utilizar la opción
Eliminar registros del menú Tabla o bien el comando DELETE.
Eliminar registros marcados
Los registros marcados como borrados permanecen en la tabla hasta que no
se invoca el comando PACK o se utiliza la opción Desmarcar registros del menú
Tabla. La finalidad de este comando es eliminar físicamente todos los registros
marcados. Después de efectuar esta operación no será posible recuperar los registros
eliminados de ninguna forma.

Uso de registros borrados
A continuación se detallan todos los comandos y funciones relacionados con el
uso de registros borrados.
Comando/Función
DELETE [Alcance] [FOR lExpresión1]
[WHILE lExpresión2]
[IN nÁreaTrabajo | cAliasTabla]
[NOOPTIMIZE]
DELETE FROM
[NombreBaseDatos!]NombreTabla
[WHERE CondiciónFiltro1
[AND | OR CondiciónFiltro...]]
DELETE ([cAliasTabla | nÁreaTrabajo])
RECALL
[Alcance] [FOR lExpresión1]
[WHILE lExpresión2]
[NOOPTIMIZE]
PACK [MEMO] [DBF]

SET DELETED ON|OF

Descripción
Borra uno o más registros de una tabla.
Puede utilizarse el alcance o las
expresiones FOR y WHILE para
determinar el rango de registros a borrar.
Marca registros para eliminar mediante
SQL

Indica si el registro actual está marcado
para borrar.
Recupera uno o más registros marcados
para borrar. Puede utilizarse la cláusula
de alcance o las expresiones FOR y
WHILE para delimitar el rango de registro
a recuperar.
Elimina de la tabla activa todos los
registros marcados para borrar. Indicando
la cláusula MEMO compacta el espacio
utilizado por el archivo de campos memo
FPT. Si se incluye la cláusula DBF, se
ignora la compactación del archivo memo.
Indica si los registros marcados para
22
ZAP
[IN nÁreaTrabajo | cAliasTabla]
BLANK
[FIELDS ListaCampos]
[Alcance]
[FOR lExpresión1]
[WHILE lExpresión2]
[NOOPTIMIZE]

borrar están disponibles cuando se utilizan
otros comandos.
Elimina todos los registros de la tabla
especificada, estén o no marcados para
borrar.
Borra toda la información de uno o más
registros sin marcarlos para borrar.

Reemplazar valores en campos
Mediante la ventana Examinar, tal como hemos ido viendo hasta ahora, es
posible alternar el contenido de uno o más registros. Sin embargo, a veces se hace
necesario modificar un grupo de registros de una vez sin necesidad de ir cambiando el
valor de uno en uno.
Para efectuar esta operación encontramos la opción Reemplazar campo en el
menú Tabla. Esta opción muestra un cuadro de diálogo que permite efectuar este tipo
de modificaciones masivas.

Importación/Exportación de datos
Tan importante como el dominio sobre los datos a los que podemos acceder
mediante el gestor de tablas es la posibilidad de acceder a los datos contenidos en
ficheros creados por otras aplicaciones. De esta forma podemos extraer información
de los mismos, tratarla y, si resulta útil, enviarla de nuevo al tipo de datos de origen.
Comando/Función
EXPORT

IMPORT

APPEND FROM
APPEND MEMO
COPY TO

Descripción
Exporta datos de una tabla de Visual
FoxPro a cualquiera de los tipos
soportados.
Importa datos desde un fichero de datos
externo en alguno de los formatos
soportados.
Agrega registros de otra tabla al final de la
tabla activa.
Copia en un campo memo el contenido de
un archivo de texto.
Crea una tabla nueva a partir del
contenido de la tabla activa.

Importar datos
Microsoft Visual FoxPro soporta los siguientes tipos de ficheros, de los cuales
puede extraerse información si elegimos la opción Importar del menú Archivo:

Tipo
Microsoft Excel 5.0 (XLS)

Descripción
Esta opción permite importar datos de
hojas de cálculo creadas con Microsoft
Excel 5.0.

23
Microsoft Excel 2.0, 3.0 y 4.0 (XLS)

Lotus 1-2-3 3.x (WK3)

Lotus 1-2-3 2.x (WK1)

Lotus 1-2-3 1-A (WKS)

Paradox 3.5 y 4.0 (DB)
Symphony 1.10 (WR1)

Symphony 1.01 (WRK)

FrameWork II (FW2)

Multiplan 4.01 (MOD)
RapidFile (RPD)

Esta opción importa datos de hojas de
cálculo de Microsoft Excel Versiones 2.0,
3.0 y 4.0.
Importa datos procedentes de una hoja de
cálculo realizada con Lotus 1-2-3 versión
3.x.
Importa datos procedentes de una hoja de
cálculo realizada con Lotus 1-2-3 versión
2.x.
Importa datos procedentes de una hoja de
cálculo realizada con Lotus 1-2-3 versión
1-A
Importa datos procedentes de la base de
datos Paradox en su versión 3.5 y 4.0.
Permite importar datos procedentes de la
hoja de cálculo del paquete integrado
Symphony versión 1.10.
Permite importar datos procedentes de la
hoja de cálculo del paquete integrado
Symphony versión 1.01.
Permite importar datos procedentes de la
hoja de cálculo del paquete integrado
FrameWork II.
Permite importar datos procedentes de la
hoja de cálculo Multiplan versión 4.01.
Importa datos procedentes de RapidFile

Asistente para importar datos
Este asistente es adecuado en aquellas ocasiones en las que se necesita
moldear algunos aspectos de la importación de datos. Este sencillo pero potente
asistente permite especificar el origen y destino de los datos, ver qué datos se están
importando directamente y especificar el nombre y tipo de cada uno de los campos
que se están importando.
Paso 1. Archivos de origen y de destino.
En este primer paso especificamos el tipo de fichero de datos del que se
van a extraer los datos. A continuación se indica el fichero de datos y,
por último, el nombre de la tabla sobre la que se van a copiar los
registros importados.
Paso 2. Determinar el formato de los datos
En este se puede tener una vista previa de la información que se
pretende importar. Esto es importante, pues permite identificar
correctamente los datos que pretendemos insertar, ya que podemos
volver atrás y especificar otro origen de datos en cualquier momento.
Paso 3. Definir campos importados
Antes de efectuar la importación de datos podemos ver la estructura de
la información. Esta pantalla permite el cambio de los siguientes
parámetros: Nombre, Tipo, Ancho y posiciones Decimales.
Paso 3ª. Especificar opciones internacionales.

24
A la vista de la información, se puede alternar unas cuantas
propiedades de la información a importar. Por ejemplo, si se ha
especificado un archivo de texto como origen de datos, podemos
modificar diversos aspectos de esta transformación, tal como especificar
el carácter separador de campos.

Formularios. Introducción
En principio, la ventana Examinar puede se suficiente herramienta para la
visualización y modificación de tablas, pero, además, podemos utilizar formularios para
dar una presencia más útil y versátil a la misma información.
Los formularios contienen cualquier tipo de control, desde etiquetas, pasando
por cuadros de texto, cuadros de edición, hasta cuadros combinados o cuadros de
lista. Existe un número suficiente de controles disponibles de forma estándar,
pudiéndose ampliar esta lista con controles diseñados por el propio usuario o controles
universales OCX.
Un formulario tiene asociado un entorno de datos que permite abrir y cerrar de
forma automática las tablas que el mismo formulario necesita. Incluso es posible
utilizar el resultado de consultas de una base de datos.
Otra característica importante relativa a los controles insertables en un
formulario es la vinculación que pueden mantener con un origen de datos. Esto quiere
decir que un control puede visualizar y editar directamente el contenido de un campo
de una tabla. Por ejemplo, podemos definir que un cuadro de lista edite el campo
relativo al nombre de un producto definido en la tabla Productos, o una casilla de
verificación indicando si ese producto dispone de existencia suficientes. En definitiva,
se trata de visualizar información de forma que el usuario identifique claramente el tipo
de información que necesita para tomar decisiones.

Crear un formulario rápido
La forma más sencilla de crear formularios es, en principio, recurrir al asistente
para la creación de formularios. Puede llamar a este asistente cuando crea un nuevo
formulario, o bien desde el menú Asistentes, escogiendo la opción Formulario.
Como datos básicos, tal como se va a comprobar a continuación, este asistente
sólo necesita una tabla y qué campos de la misma van a participar en la generación
del nuevo formulario. El orden en el que van a figurar en el formulario definitivo
depende del orden que se vayan eligiendo desde el cuadro de lista Campos
disponibles hacia el cuadro de lista Campos seleccionados.
Paso 1. Selección de campos
El primer paso consiste en la elección de tabla y campos. Como dato
esencial se necesita una tabla, de la cual se van a tomar las
definiciones de determinados campos con el fin de confeccionar
controles para su visualización y edición desde el nuevo formulario.
Como dato interesante se puede comentar el hecho de que este
generador utiliza como etiquetas de campo, es decir, el texto que figura
delante de cada uno de los controles de edición, el encabezado que se
haya definido en la base de datos si la tabla pertenece a una.
Paso 2. Estilo

25
Existe una serie de estilos predefinidos que el asistente utiliza como
patrón en el momento de generar el aspecto visual general del
formulario y cada uno de los controles que lo contienen. Esta prestación
se completa con la posibilidad de elegir botones de comando gráfico o
de texto. Estos botones de comando situados en la parte inferior del
nuevo formulario permiten mover el puntero de registro del primer al
último registro, o bien, al anterior o siguiente con respecto al registro
que se está visualizando actualmente. Pueden, además, insertar o
eliminar registros de la tabla.
Paso 3. Orden.
Si la tabla no dispone de una secuencia de ordenación, lo que hace este
paso es permitir crear una a partir de hasta tres campos de la tabla
origen de datos. Este orden será utilizado en los desplazamientos hacia
atrás o adelante cuando se utilizan los botones de comando de
desplazamientos por registros.
Paso 4. Finalizar
Como información final, el asistente necesita saber el título del
formulario y qué deseamos hacer con él. A este último respecto
tenemos tres opciones: guardar el formulario para poder ejecutarlo o
modificarlo posteriormente, generar y ejecutar el formulario o bien, y por
último, generar el formulario y modificarlo mediante el generador de
formularios.
Antes de elegir cualquiera de las tres opciones, podemos ver una presentación
del formulario en proceso de generación, con el fin de alterar cualquier información de
las que se han definido en los tres pasos anteriores.
Ejecutar el nuevo formulario
Una vez que se ha generado el formulario y tras realizar unas pequeñas
modificaciones podemos obtener un formulario. Como se podrá observar, en la parte
superior del formulario figura el título elegido para el mismo: Empleados

Macros
Existen multitud de situaciones donde repetimos hasta la saciedad la misma
secuencia de teclas: al abrir un proyecto, al abrir una pantalla, al compilar, etc. Las
macros pueden ayudar a que la secuencia de teclas que tengamos que utilizar se
reduzca lo más posible y de esta forma aprovechemos mejor el tiempo. Las macros
permiten grabar secuencias de caracteres y asociarlas a una combinación de teclas.
De esta forma, la pulsación de esta combinación de teclas a posteriori ejecuta la
secuencia de caracteres guardada.

Las Macros de sistema
Quizá la macro más conocida, pero no por ello reconocida como tal, sea F1,
utilizada para activar la ayuda de sistema. Existen otras macros más que vamos a ver

26
a continuación y que son las que incorpora Visual FoxPro en el momento de ser
instalado:
Macro

Descripción

Acción

F2

Abre la ventana Sesión de Datos

Ejecuta la siguiente secuencia de teclas:
SET (INTRO).
Es decir, escribe en la ventana de
comandos el comando SET y a
continuación la tecla INTRO.

F3

Lista los registros de la tabla
activa por pantalla

Ejecuta la siguiente secuencia de teclas:
LIST (INTRO).
Tal como hemos visto en la macro
anterior, escribe en la ventana de
comandos el comando LIST y a
continuación la tecla INTRO.

F4

Efectúa un directorio por pantalla

Ejecuta la siguiente secuencia de teclas:
DIR (INTRO).

F5

Muestra la estructura de la tabla
activa por pantalla

Ejecuta la siguiente secuencia de teclas:
DISPLAY STRUCTURE (INTRO).

F6

Muestra el estado del sistema por
pantalla

Ejecuta la siguiente secuencia de teclas:
DISPLAY STATUS (INTRO).

F7

Muestra el contenido de la
memoria por pantalla

Ejecuta la siguiente secuencia de teclas:
DISPLAY MEMORY (INTRO).

F8

Muestra el contenido del registro
actual de la tabla activa por
pantalla

Ejecuta la siguiente secuencia de teclas:
DISPLAY (INTRO).

F9

Abre la ventana de inserción de
nuevos registros en formato ficha
de la tabla activa

Ejecuta la siguiente secuencia de teclas:
APPEND (INTRO).

¿Cómo grabar una macro?
Es muy sencillo; para ello basta con pulsar las teclas MAYÚSCULAS-F10.
Visualizamos un cuadro de diálogo pidiendo la combinación de teclas a la cual vamos
a asociar la secuencia de teclas que están a punto de ser grabadas. Es decir, cada
vez que pulsemos la secuencia de teclas que se indica en este momento, se repetirá
las teclas pulsadas a continuación de la salida de este cuadro de diálogo.
Cuando pulsemos Aceptar en este cuadro de diálogo, todas las teclas
pulsadas quedarán registradas en la macro llamada Control-Alt-F, invocada siempre
que se pulse la combinación de teclas CTRL-ALT-F.
Conozcamos los nombres de cada una de las teclas para poder identificarlas
correctamente.
Nomenclatura de teclas
Tecla

Nombre



LEFTARROW

27


RIGHTARROW



UPARROW



DNNARROW

Inicio (Home)

HOME

Fin (End)

END

AvPág (Page Up)

PGUP

RePág (Page Down)

PGDN

Sup (Del)

DEL

Borrar (Backspace)

BACKSPACE

Borrar espaciadora (Spacebar)

SPACEBAR

Ins

INS

Tabulador

TAB

Retroceder tabulador (Shift Tab)

BACKTAB

Intro (Enter)

ENTER

F1 a F12

F1, F2, F3 ...

Ctrl+F1 a Ctrl+F12

Ctrl+F1, Ctrl+F2...

Shift+F1 a Shift+F12

Shift+F1, Shift+F12...

Alt+F1 a Alt+F12

Alt+F1, Alt+F2, Alt+F3...

Alt+0 a Alt+9

Alt+0, Alt+1, Alt+2...

Alt+A a Alt+Z

Alt+A, Alt+B, Alt+C...

Ctrl+

Ctrl+LEFTARROW

Ctrl+

Ctrl+RIGHTARROW

Ctrl+inicio

Ctrl+HOME

Ctrl+Fin

Ctrl+END

Ctrl+AvPág

Ctrl+PGUP

Ctrl+RePág

Ctrl+PGDN

Ctrl+A a Ctrl+Z

Ctrl+A, Ctrl+B, Ctrl+C...

Botón derecho ratón

RIGHTMOUSE

Botón izquierdo ratón

LEFTMOUSE

Cualquier botón del ratón

MOUSE

Esc

ESC

¿Cómo visualizar y editar las macros activas?
Para acceder al cuadro de diálogo para el mantenimiento de macros elija la
opción Macros del menú Tools. Se visualiza una ventana, esta ventana está
subdividida en los siguientes elementos:
 Lista de macros definidas. Este cuadro de lista visualiza los nombres de
las macros definidas en este momento en el sistema. Cada elemento de la

28
lista visualiza el nombre que se le ha dado a la macro, no la tecla que
invoca a la misma, aunque normalmente suele coincidir el nombre que se
le da a la macro con la combinación de teclas que la ejecuta.
 Grabar. Inicia la secuencia de grabación de una macro. Es similar a la
pulsación de las teclas MAYÚSCULAS+F10.
 Nueva. Crea una macro nueva.
 Editar. Edita el contenido de una macro existente.
 Borrar. Borra una macro definida.
 Conjunto de macros. Los botones de comando definidos en esta zona
permiten recuperar un conjunto de macros guardadas en un fichero, salvar
las existentes en un fichero o hacer que las macros definidas en este
momento sean las predeterminadas cada vez que se arranca Visual
FoxPro.
Grabación de macros
Este ejemplo trata de una macro para crear un nuevo proyecto cada vez que se
pulsa la tecla F3. Se puede iniciar la secuencia de grabación de la macro de dos
formas:
 Pulsar la combinación de teclas MAYÚSCULAS-F10.
 Escoger del cuadro de diálogo que aparece al pulsar Tools-Macros la
opción Record.
En cualquier de los dos casos se visualiza el cuadro de diálogo
correspondiente. A continuación pulsaremos F3 para que quede registrada como tecla
de inicio de la macro. Como nombre de macro la vamos a llamar NuevoProyecto.
Dado que ya existe la macro F3 definida en el sistema, vemos una ventana de
alerta advirtiendonos esta circunstancia. Esta ventana admite tres repuesta totalmente
distintas:
a) Sobrescribir. Esta será la acción lógica que escogeremos para continuar
con este ejemplo. Vamos a sobreescribir el contenido de la macro F3 con
las teclas que vamos a dejar registradas a continuación.
b) Añadir pulsaciones. Como veremos más adelante, es posible añadir a
una macro existentes nuevas pulsaciones al final de la misma.
c) Cancelar. Cancela la grabación de la macro.
Desde el momento en que hemos pulsado sobre el botón de comando
Sobrescribir, todas las teclas que se pulsen a partir de ese momento quedarán
registradas en la definición de la macro NuevoProyecto.
El objetivo de esta macro es escribir de forma automática en la ventana de
comando la instrucción CREATE PROJECT y a continuación la tecla Intro.
 Para asegurar que vamos a escribir en la ventana de comandos, la
activamos mediante CTRL-F2. Por tanto pulsamos:
Ctrl-F2

29


A continuación, sobre la ventana de comando, continuamos escribiendo
la instrucción CREATE PROJECT y por último pulsamos Intro.

Cuando se haya pulsado intro, se visualiza el cuadro de diálogo de apertura
de ficheros. En este momento y para finalizar la grabación de la macro, volvemos a
pulsar MAYÚSCULA-F10. Vemos el cuadro de diálogo:
 Insertar literal. Inserta en la definición de macro la tecla tal cual se ha
pulsado.
 Insertar pausa. Este botón de comando permite insertar una pausa en la
macro de dos formas distintas:



Tecla para reanudar: Cuando se inserta una pausa de este tipo en
una macro, ésta no reanuda su ejecución hasta que no se pulsa
una tecla.
Segundos. Esta pausa paraliza momentáneamente la macro los
segundos especificados en el control numérico.

Pulsamos Aceptar y finalizamos la grabación de la macro.
De esta forma, cada vez que deseemos crear un fichero nuevo de proyecto, tan
sólo tendremos que pulsar F3.
Edición de macros
Dado que a veces es difícil recordar la secuencia de teclas que conducen a
realizar una acción, es posible que cometamos errores. No hay problema, puesto que
es posible introducir nuevas pulsaciones o eliminarlas en cualquier lugar de la macro.
Para modificar el contenido de una macro, sigamos los siguientes pasos:
1. Elija la opción Macros del menú Herramientas.
2. Seleccione de la lista de macros definidas la que desee modificar. Para editar la
macro, pulse el botón de comando Editar. Aparecerá un cuadro de diálogo.
En el ejemplo anterior habíamos creado una macro (NuevoProyecto) que se activaba
mediante la pulsación de la tecla F3. Veamos su contenido:
(CTRL+F2)CRATE(SPACEBAR)PROJECT(ENTER).
Tal como se grabó, en primer lugar detectó la pulsación de la combinación de teclas
CTRL+F2 para asegurar que escribíamos en la ventana comando. A continuación, el
texto CREATE PROJECT separado por un espacio, y finalmente, la tecla INTRO.

Continua...

30
31
Laboratorio Nº 1
Objetivo: Creación de tablas libres y dependientes, Bases de Datos, Relaciones
temporales y permanentes, Integridad Referencial.
(El usuario debe tener Instalado en su PC. Visual FoxPro 5.0)
Nota: Sr. Usuario siga la secuencia paso a paso, mayormente todo será vía menú .

1.- Cargando el Sistema desde Windows 98/95:
Haga Click en Menú:
 Inicio
 Programas
 Microsoft Visual FoxPro
 Microsoft Visual FoxPro 5.0

Carga completada (Esto debe estar observando en su pantalla), luego digite en la Ventana de
Comandos:
RUN MD C:PRACTICA <Enter>
Esta orden: Crea una Carpeta
SET DEFA TO C:PRACTICA <Enter>
“
: Activa Carpeta por Defecto

2.- Creación de una Tabla Libre
Nos proponemos ahora, crear una tabla Libre, para lo cal Ud. Haga:
Click en las siguiente opciones desde el Menú Principal:
Archivo
Nuevo
() Tabla
Nuevo Archivo
Ver la siguiente Figura
(Pag. 2)

32
Viendo la pantalla de la derecha,
Seleccione la carpeta donde
desea guardar su tabla.
Guardar en: PRACTICA
Nombre de la Tabla: CLIENTES
Guardar como tipo: Tabla /DBF

Luego Click en Guardar

En las siguientes líneas tiene Ud. La estructura de la tabla Clientes.
CLIENTES.DBF
Nombre de Campo
ClieCod
ClieNom
ClieApe
ClieDir
ClieRuc

Tipo
C
C
C
C
C

Ancho
3
40
40
40
8

Decimales

Descripción
Código del Cliente
Nombre del Cliente
Apellidos: Paterno y Materno
Dirección del Cliente
Número de RUC del Cliente

En esta pantalla es
donde Ud. Va ha
diseñar la estructura
de la tabla.
Adelante Ud.
Nota:

No
presione
ENTER, si desea pasar, de
una línea a otra. VFP,
puede interpretar, que ya,
a terminado. Para este fin
utilice la tecla TAB ó el
MOUSE.

Después de haber terminado, Haga Click en: ACEPTAR
Aparecerá la siguiente consulta:

33
Responda afirmativamente, haciendo Click en Sí. Luego, ingrese par de registros.
TABLAS DEPENDIENTES
Las siguientes tablas, cuya estructura se muestra en la parte inferior, las vamos a crear como tablas
dependientes.
ARTICULO.DBF
ArtCod
ArtNom
ArtPre
ArtStock
ArtFoto

C
C
N
N
G

FACTURAS.DBF
3
25
7
5
4

2
0

NumFac
FecVen
ArtCod
ClieCod
Cant
PreVen

C
T
C
C
N
N

5
8
3
3
5
8 2

Para lo cual, debemos crear primero la BASE DE DATOS a quien va estar asociado, nuestras tablas.

Creación de una Base de Datos
Crearemos nuestra Base de Datos, haciendo Click, en las siguientes opciones, iniciando desde el MENU
PRINCIPAL.
Click en: (En otras latitudes dicen Pinchar, en lugar de decir Click:)
Archivo
Nuevo
(*) Base de Datos
Nuevo Archivo
Aparece el gráfico de la derecha,
Digitar en:
Base de datos: Ventas
Luego Click en: Guardar
Luego aparecerá el gráfico de la
parte inferior.

Creación de una Tabla Dependiente
Para crear tablas dependientes, de nuestra Base de datos, existen muchas formas, pero una de ellas, es del
siguiente modo:
Llevamos el Mouse sobre el área
libre de la Base de Datos y luego,
presionamos el Botón Derecho de
la misma.
En el menú contextual, eligimos:
Nueva Tabla,
y otra vez Click en
Nueva Tabla

34
Asignar nombre de tabla:
ARTICULO
Luego Click en:
GUARDAR
Observe el gráfico inferior y diseñe la estructura de las tablas dependientes, las estructuras se encuentran
en la página anterior.

Nota: Observe este gráfico y la de Clientes ( Página 2), ambos son de creación de estructuras, pero tienen una
marcada diferencia.

Finalmente, cuando haya terminado a crear la estructura. Haga Click en opción:
Aceptar
e introduzca los datos correspondientes ( dos registros como mínimo).
Ahora, usando los pasos anteriores se le pide a Ud. Crear la tabla:

FACTURAS.DBF
Al final de un trabajo arduo, Ud. deberá llegar a la siguiente presentación:

35
En estos momentos tenemos Articulo y Facturas como se observa en el gráfico anterior, pero al
inicio habíamos creado CLIENTES.DBF, como una tabla libre, el cual ahora desearíamos que forme
parte de nuestra Base de Datos de nombre Ventas, para tal fin haremos los siguientes pasos:

Conversión de Tabla Libre en Dependiente
Click en:


Botón Derecho del Mouse, sobre el diseñador de Base de Datos



Agregar tabla



Doble Click en Clientes

(Opción del Menú Contextual)

Luego tendremos, como muestra la sgte. figura:

Relaciones:
Con la finalidad de manipular simultáneamente, datos de las tres tablas, debemos relacionar
estas. Para ello, no debemos olvidar, las dos condiciones principales para la existencia de Relaciones:

1.

Se debe garantizar existencia de Campos Claves ó Llaves, entre las tablas participantes (datos
iguales ó coincidentes, del mismo tipo y aveces del mismo tamaño. Pero no necesariamente con
nombres iguales).

2.

Se debe indexar las tablas por su campo clave:
-

Tablas hijo de tipo principal ó Candidato, y

-

Tablas padre de tipo Normal (Aquí, sobre todos sus campos claves)

El autor duda de su comprensión. Por tanto, antes de continuar le interrumpe para hacerle la
siguiente consulta:

36
Entre Clientes y Facturas. ¿A qué campos de ellas, los podría considerar como campos Claves?

.......................
y
..........................,
.............................................................................................

¿Y

porqué?

En el cuadro inferior, escriba los campos claves de las tablas, asimismo identifique tablas hijo y
Padre

Nombre Tabla

Nombre del Campo Clave

tipo de tabla (Padre ó Hijo)

Clientes.dbf

........................................

..................................

Articulo.dbf

.........................................

..................................

Facturas.dbf

.........................................

..................................

INDEXACION:
Dada las reglas anteriores y cumpliendo exactamente, iniciamos a indexar las tablas. Como un
ejemplo, de qué manera se realizan, se hace aquí una indexación, para la tabla CLIENTES.

Nota: Para el resto de las tablas, el usuario, deberá seguir la misma secuencia. Es aquí donde el
usuario podrá usar su razonamiento y su habilidad de comprensión. Caso contrario, puede volver a leer
las líneas anteriores.

Indexación de Clientes.dbf
1.

Ubicar el puntero del Mouse sobre la tabla Clientes
y presionar el botón

Derecho del Mouse
2.

En el menú Contextual, hacer Click sobre:

Modificar
3. Hacer Click en la ficha: índices (ver fig. inferior)

37
3.

Digitar el nombre de la etiqueta (Tag) para nuestro
archivo índice (ver graf.). Asignamos por ejemplo el mismo nombre del campo (aunque no
siempre debe ser así). Digitar:

Cliecod
4.

Seleccionamos el tipo de índice, sabemos que
Clientes es tabla hijo, por tanto que sea:

Principal
5.

...
6.

El ficha de Expresión, podemos Digitar, la
expresión ó el nombre del campo, por el cal deseamos, que nuestra sea indexada. Pero
mucho mejor Es hacer Click en:
(Punto Punto)

que se encuentra al costado de expresión.

Llegamos a la ventana que se muestra en la siguiente
página. Aquí usando: Funciones (matemáticas, lógicas, fecha y Cadena), Variables y
Campos, podemos preparar una expresión índice, por muy complicadas que este fuera.
Nuestro caso Es sencillo. Hacemos Doble Click sobre el campo:

ClieCod

de la lista de campos.

7.

Hacemos Click en:

Aceptar

de esta ventana de expresiones.

8.

Habremos vuelto a la ventana anterior, en ella
también hacemos Click en:

38
Aceptar

que se encuentra en esta ventana.

Venta de expresión

Finalmente Visual FoxPro, nos hace la siguiente consulta:

Podemos responder Afirmativamente.

De esta manera, habremos indexado, la tabla Clientes. Observe su pantalla. La tabla Clientes
tiene un índice que se muestra identificado por una llavecita, por ser de tipo principal.

39
Ahora,
Ud.
tiene la dura tarea de
indexar,
las otras
tablas (Articulo y
Facturas).

Al final del
camino,
como
alumbrase una luz.
Deberá
mostrar una figura,
como se muestra en la
parte derecha.

Así, hemos
terminado el tema de
índexaciones. Ahora
nos toca hacer la
Relación.

(2)Ejecución de la Relación
Haga Click en:


Indice ClieCod de Clientes y arrastre hacia el índice ClieCod de Facturas y libere el Mouse. (esto es
arrastrar la etiqueta de índice hijo hacia el padre).



Haga similar con el índice ArtCod de Articulo y arrastre

Luego debe una presentación similar a la siguiente gráfica

40
Bueno, hasta aquí parece que todo va bien.

Después de tanto trabajar, no quisiéramos que el resultado sea un desastre. Por ello, primero
vamos a verificar los datos de los campos claves.
Para ello haga doble Click en cada una de las tablas y con la ayuda del Mouse, puede mostrar
igual que en pantalla inferior, las tablas abiertas. Así asegurése que haya datos comunes ó iguales en los
campos claves, tanto en la tabla padre e hijos (ver figura)

Finalmente para poder mostrar ó examinar la información de la Base de Datos (anteriormente
preparados) vamos ha crear una Vista rápida. Es de notar que no podemos usar con toda elegancia el
comando Browse, como lo hacíamos ante una relación temporal.

CREACION DE VISTA:
Las vistas como un archivo virtual, se crean ejecutando la siguiente secuencia:

Desde menú principal.

Haga Click en:

Archivo

Menú Principal

Nuevo

Submenú del menú Archivo

() Vista
Nuevo Archivo

Tipo de archivo a crear
Vista personalizada.

41
Ahora aparece una ventana, mostrando las tablas origen para la vista a preparar, haga:


Doble Click en :



Clientes

Luego las tablas hijo.





Facturas
Articulo

Después hacemos Click en :

Tabla padre

Cerrar
En la ficha Campos, seleccione, los siguientes campos, haciendo:



Doble Click en:


Facturas.Numfac



Facturas.ArtCod



Facturas.Cliecod



Facturas.Cant



Facturas.Preven



 Articulo.ArtPre
 Articulo.ArtStock
 Clientes.ClieNom
 Clientes.ClieApe
 Clientes.ClieDir
Articulo.Nom

Debe mostrarse un gráfico similar.
Preparada la vista y seleccionada los campos, lo que esperamos es ejecutar, para ver el resultado.

42
Existen varias maneras, pero la más fácil, es talvez, hacer click en el símbolo (  ) (Signo de
Admiración)
Que se encuentra en la Barra de herramientas. Otra forma es presionar Botón Derecho y ejecutar
Consulta

Mas o menos así debe ser el resultado, si no observa ningún dato en esta ventana, debe haber
fallado: bien en los campos claves , en la preparación de índices ó talvez en el arrastre de etiquetas.
Puede volver a revisar y luego ejecutar la vista.

Fin del laboratorio

43
Laboratorio Nº 2

Objetivo: Creación de Vistas y Consultas y comparación entre ellas
1.- Cargando Visual FoxPro desde el Sistema Oper. Windows 98
Haga Click en Menú:
 Inicio
 Programas
 Microsoft Visual FoxPro
 Microsoft Visual FoxPro 5.0

2.- Abrir Una Base de Datos Ventas
Hacer Click en:

Archivo
Abrir


En
Buscar
en:
seleccione la carpeta:

Practica.


En: Archivos de tipo:
seleccione:

Base de Datos
(*.dbc)
Luego haga doble
Click en:

Ventas .

44
La siguiente pantalla, muestra la base de datos VENTAS, abierta.

Similar como hicimos en el primer laboratorio, vamos a crear vistas.

CREACION DE VISTA:

Haga Click en:

Archivo
Nuevo
() Vista (ver gráfico)
Nuevo Archivo

En la siguiente pantalla se observa, a seleccionar la clase del fuente para vista a crearse (tablas ó
de vistas anteriores)

45
Asumiendo que se van ha crear vistas desde tablas, haga doble Click en:
Facturas,

luego en:

Clientes

y

Articulo.


Finalmente haga Click en Cerrar

En la siguiente página, tenemos el generador de vistas. Ya conocida en el laboratorio anterior

46
Nota: Las tablas fuente (facturas, Clientes y Articulo), no deben repetirse, si eso no fuera el caso, borrar la
tabla que se está cargado mas de una vez
.

Debajo de las tablas, se podrá observar las fichas: Campos, Combinación, Filtro, ordenar por,
Agrupar por, Criterio de actualización y Varios.


En la Ficha Campos: Seleccionemos los siguientes campos:


Facturas.Numfac



Facturas.ArtCod



Facturas.Cliecod



Facturas.Cant



Facturas.Preven

 Articulo.ArtPre
 Articulo.ArtStock
 Clientes.ClieNom
 Clientes.ClieApe
 Clientes.ClieDir



Articulo.Nom

Haciendo doble CLICK en la misma.


Para probar que todo va bien, haga Click en Botón EJECUTAR ( ! ) de la barra de herramientas.
ó presione Botón Derecho y Ejecutar Consulta

Nota: Si no observa ningún dato, revisar datos del campo clave (en la BD) ó la relación y los índices

Si cree conveniente, antes de iniciar a usar las fichas, puede pedir al Asistente del Lab.,
una breve explicación de la función de cada una de las fichas. Caso que Ud. Es un autodidacta,
puede recurrir al material bibliográfico. Ejm. Rubén Iglesias

Esta podría ser una breve explicación:

Ficha: Combinación.- Muestra el tipo de enlace entre tablas: Interna, Izquierda, Derecha y
Full
Filtro

.- Especifica la condición que debe cumplir los registros a visualizar.

Ordenar por .- Provee opción de clasificar en forma ascendente ó descendente.
Agrupar por .- Facilita crear grupos de datos
Criterios de Actualización.- ofrece las maneras como se debe actualizar nuestros
datos
Varios

.- Si serán afectados todos los registros y los duplicados.

En la siguiente página, usaremos la ficha filtro, para realizar ó resolver las ciertas
interrogantes.
47
Tales como: deseamos saber qué artículos han sido facturadas un día viernes a las 10 de la
mañana, cuantas ventas se transaron con precio inferior al costo de compra, etc.

Extracción de Datos:


Hacemos Click en ficha FILTRO



En nombre de campo seleccionamos un campo ó preparamos una expresión.



En Criterios asignamos el operador.



En ejemplo completamos la condición

Ejm:

Facturas.Cant

=

50

(ver gráfico)

Esta condición significa, que deseamos observar o mostrar aquellos Artículos facturados,
cuya cantidad sea igual a 50 unidades. Para ver ejecutamos haciendo:


Click en botón EJECUTAR, y la siguiente sería un ejemplo:

Ahora, estimado usuario, después de una amena explicación, creo que está en la posibilidad

48
de resolver, las siguientes interrogantes, sobre nuestra base de datos.

Mostrar: Artículos facturados con las siguientes condiciones:

1.

Cuyo Nombre del artículo empiece con la letra “A”

2.

Cuya fecha de venta sea un Viernes

3.

Cuya cantidad sea mayor que 30 y stock menor ó igual a 20

4.

Tenga hora de venta a las 10 de la mañana

5.

Fecha de venta Viernes 13 a las 08 de la mañana, ordenado por fecha.

6.

Fecha de venta 28 de Julio a las 10:30 AM (Es un buen peruano, que trabajó este día)

7.

Precio de Compra sea mayor que precio de venta (Remate)

2.- Retire todas las condiciones, y en la ficha agrupar por, elija Nombre del Cliente para agrupar,
y Ejecute. Luego diga sus observaciones y conclusiones.

Terminada nuestra labor, hacemos click en botón cerrar de la ventana vista.

Ante consulta anterior, responda afirmativamente (Sí) y luego asigne un nombre, para vista (ejm.
Vista1). Finalmente haga Click en Aceptar.

CREACION DE CONSULTAS
Las consultas, a diferencia de vistas, son archivos reales.

Para crear consultas hacemos:

49
Click en:


Archivo



Nuevo



() Consulta



Nuevo Archivo



Similar que en Vistas, hacemos doble en:



Clientes y




Facturas

Articulo

Seleccione los siguientes campos:


Facturas.Numfac
Clientes.ClieApe



Facturas.FecVen
Clientes.ClieDir



Facturas.ArtCod
Articulo.ArtNom



Facturas.Cliecod
Articulo.ArtPre



Facturas.Cant
Aritculo.ArtStock



Facturas.PreVen



Clientes.ClieNom



Haga Click en Ejecutar de la Barra de herramientas, observe y cierre el previo.



Haga Click en Consulta del Menú principal



Luego en opción: Ver SQL

SELECT Facturas.numfac, Facturas.fecven, Facturas.cant, Facturas.preven,;
Clientes.clienom, Clientes.clieape, Clientes.cliedir, Clientes.clieruc,;
Articulo.artnom, Articulo.artpre, Articulo.artstock;
FROM ventas!clientes INNER JOIN ventas!facturas;
INNER JOIN ventas!articulo ;

50
ON Articulo.artcod = Facturas.artcod ;
ON Clientes.cliecod = Facturas.cliecod



Haga Click en Consulta del menú principal



Click en Opción: Destino de Consulta

Observamos que por defecto está seleccionado destino Examinar para la consulta.

1.

Seleccionamos Cursor


Asignamos un nombre (ejm): UNI



Click en Aceptar, luego



Click en Ejecutar
¿Llegó a observar algo?, Continue

2.

Haga Click en Menú: Consulta
Destino de la Consulta, y
Seleccione Tabla, en esta oportunidad.


Asigne nombre (ejm): CEPS



Click en Aceptar



Click en Ejecutar
¿Esta vez sí observó, algo?. Talvez tu respuesta es NADA.

51
En verdad tiene razón, la respuesta es que, en la primera vez ha creado una tabla temporal
(Cursor) y ha enviado a la memoria del computador. Y la segunda ha creado una tabla, que por su puesto
debe haberse guardado en el disco duro, en la carpeta por defecto de su computador.

Como comprobar lo que se dice?
Paso 1.- Haga Click el menú Ventana (Menú principal), luego en Sesión de Datos. Vea si existe
tablas UNI y CEPS cargadas en diferentes áreas. (justificada su existencia)

Paso 2.- Presione la combinación de teclas: Ctrl+F2
Digite: DIR y presione Enter
Tenga Presionado simultáneamente las teclas: Ctrl+Shift+Alt
(Debe estar observando la existencia del CEPS.DBF)
Interrogante: No se observa UNI que sucede? ó ¿que es realmente UNI?

3.

Consulta, Destino de la Consulta, Pantalla (Observando datos en toda la pantalla)



Ejecutar



4.

Aceptar

Ctrl+Shift+Alt

Consulta, Destino de la Consulta, Informe (Generando Informes vía Consulta)



Haga Click en Barra de Asistente ( a la derecha de:
Abrir informe.. ver gráfico anterior)



Se observa una pantalla con tres opciones, ubique el

52
cursor sobre: Asistente para Informes, y haga Click en: Aceptar. Tendremos la siguiente
figura.



Seleccione todos los campos de: Articulo, haciendo Click en doble Flecha, luego click en: Siguiente



Seleccione el estilo de informe que desearía preparar y luego haga Click en: Siguiente



Puede cambiar si gusta: Número de Columnas, distribución de campos y Orientación del papel, luego
haga Click en: Siguiente



Puede Ordenar los artículos, ejm: por nombres, para ello haga doble Click en ArtNom, Ascendente y
Click en: Siguiente



Click en: Presentación Preliminar

Eh aquí algo de presentación preliminar de un reporte

53
5.

Por ahora hasta aquí el Laboratorio, si el tiempo ya no lo permite.

6.

Archivo, Quit

Fin del Laboratorio 2

Gracias...

Laboratorio No 03
Objetivo: Crear un informe personalizado, simples y con quiebres ó grupos.

54
Abrir Base de Datos ventas

0.

Click en: Archivo, Abrir, Tipo de archivo: Base de Datos, luego doble Click en Ventas.

Creación de Vistas
Deseamos preparar, tres informes, para lo cual vamos ha crear tres vistas:

1.

Crear una vista con los siguientes campos:


Facturas.numfac



Facturas.fecven



Facturas.cant



Facturas.preven



Clientes.clienom



Clientes.clieape



Clientes.cliedir



Clientes.clieruc



Articulo.artnom



Articulo.artpre



Articulo.artstock;

2.

Ejecutar y guardar presionando Ctrl+W, asigne nombre Vista01, luego haga Click en Aceptar.

3.

Cree otra vista, esta vez agregar el campo Facturas.ClieCod a la lista anterior. Ingrese a la ficha:
Ordenar por, haga doble Click en Cliecod, Ejecutar y Guardar (presionando Ctrl+W ) con el
nombre Vista02

4.

Crear otra Vista usando los mismos campos anteriores, pero esta vez ordenar por los campos:
FecVen, ClieCod y NumFac (para ello haga primero Doble Click en: FecVen, luego en ClieCod y
finalmente enNumFac) y guarde como Vista03.

55
Aquí se observan las tres vistas, que nos servirán para preparar nuestros informes.

CREACION DE INFORMES
Para crear nuestro informes, iniciamos haciendo:

Click en:
1.

Archivo

2.

Nuevo

3.

() Informe

4.

Nuevo Archivo.

En la siguiente pantalla se muestra el diseñador de informes, las bandas y el menú contextual

Diseñador de Informes compuesta de tres Bandas (ver gráfico).

Necesitamos indicar el origen de datos para nuestro
informe, para lo cual vamos damos la secuencia a seguir:

1.

En el área del diseñador, presione Botón Derecho

2.

En el menú contextual, Elija: Entorno de datos

3.

Dentro del Entorno de datos, Presione Botón Derecho

56
4.

En el menú contextual, Elija: Agregar

5.

Seleccione, opción: ()Vistas (ver gráfico)

6.

Haga Doble Click en Vista01

7.

Luego, Click en: Cerrar

Usando el Mouse acomode el diseñador de informes y el entorno de datos, de tal como que
quede, tal como se muestra en la figura, de la siguiente página.

1.

Si no tiene la barra de controles de informe



Haga Click en: Menú Ver



Barra de Herramientas...



Marcar como en el gráfico de parte derecha.



Luego, Click en: Aceptar

57
Nuevamente acomode las figuras, por ejm. puede ser como observa en la parte inferior.

Luego. Vamos a iniciar a preparar el informe. Para lo cual, debemos tener presente el resultado
que deseamos obtener. En la siguiente página se muestra un previo de lo que queremos conseguir
diseñando un informe, con nuestro diseñador y que imprima el modelo propuesto.

58
Para poder obtener este resultado. Usando los botones del control de informes, prepare Ud. un
diseñador de informes del siguiente modelo.

1.

Si desea Digitar un texto en el diseñador de informes, haga Click sobre el botón que tiene la letra A
del control de Informes y en seguida haga Click en el lugar donde desea Digitar.

2.

Si desea agregar, una función ó variable, haga click en botón ab del control de informes. Luego
sobre el diseñador.

3.

Si desea agregar un campo, lo puede arrastrar desde la vista, que se encuentra a la derecha, del
diseñador.

Nota: Nombre de la Empresa, Descripción, Precio, Nota .. y Pag. Son etiquetas, mientras Date()
es función, _Pageno es una variable. Finalmente ArtNom y ArtPre son campos que se encuentran en el
Entorno de Datos.

Para ver un Previo:


Haga Click en el Botón Derecho, luego seleccione: Preliminar (observará un previo)



Lo anterior también lo puede realizar haciendo Click en botón de Hoja y Lupa de la barra de
herramientas. Esta vez el botón del signo de Admiración Es para Imprimir.



Puede ir observando su avance, cada vez que crea necesario. Si desea mejorar la presentación haga
click en el objeto, luego Click en formato y fuente. Cambie y mejore su presentación



Para prevenir pérdida de archivos, puede ir guardando el Informe con el Nombre: Informe1
Para ello haga click en Menú:: Archivo
Guardar.

Informe No 2.- debemos preparar otro informe, similar al que se muestra en la parte inferior.

59
Observe que está agrupado por Clientes, ordenado por descripción y con un sub-total por

clientes.

Para preparar nuestro segundo informe, podemos re-utilizar diseño del informe anterior.
Guardando la primera y luego guardando con nuevo nombre. Para ello utilice
Archivo
Guardar como
Asigne nombre informe2

luego puede modificar sobre ella.

Pasos:


Modificar Lista de Precios por Informe de ventas

Creación de Grupo ó quiebre:


Click en Menú:


Informe



Agrupar datos

60


Sobre ventana de agrupar datos, en el área en
blanco de: expresiones de agrupación, podemos Digitar la expresión del quiebre, pero
hacemos Click en:

...

(Punto punto )



Luego haga, Doble click sobre:

Vista2.ClieCod

(ver gráfico)



Finalmente Click en: Aceptar

El diseñador que logre, nuestro propósito será similar al gráfico siguiente:

Observe que el monto, subtotal y total
son expresiones como (Cantidad) * (Precio
de Venta) (Vista2.Cant*Vista2.PreVen) (ver
gráfico)

61
Para que Subtotal y total, muestre la suma, hacemos:
Click Derecho sobre el objeto que representa la expresión (Cant*Preven), luego click, en la
opción: Propiedades.

Luego en la ventana que se presente, mostrará un
grupo de opciones, seleccionamos la opción Cálculos,
haciendo Click sobre ella.

Finalmente en el gráfico de la parte derecha,
seleccionamos opción SUMA

Para terminar, hacemos click en: Aceptar.
En esta pantalla y en la otra

De esta manera, habremos creado el segundo reporte.

Reporte con mas un Grupo

62
El siguiente gráfico, muestra un Modelo, de un reporte con más de un grupo. Esta agrupado por
Mes, clientes y Número de factura. Tiene un sub-total de cada factura , mes y por página. Asimismo el
número de factura se imprime a la altura de los otros datos y no se repite.

El modelo de Informe a prepararse.

El diseñador de Informes, que genera este tipo de reportes, se encuentra en la siguiente página.

1.

Haga Click en el Botón Ver Clases del Control de Formularios ( Esta se encuentra al lado derecho de
la Flecha)

2. Elija Agregar

63
Modelo de diseñador

Suerte en preparar el informe propuesto:

Fin del laboratorio.

64
Laboratorio No 4
Objetivo: Sentar las bases de la Programación Orientada a Objetos, crear formularios y
codificar.

Formulario: Una clase contenedora. Una colección de una o más páginas que se comporta como
una ventana o un cuadro de diálogo estándar. Un formulario contiene controles para mostrar y modificar
datos. Los formularios pueden estar contenidos dentro de un conjunto de formularios.

Creando un Formulario:

Click en:
Archivo
Nuevo
( ) Formulario
Nuevo archivo

65
Diseñador de formulario

Nota: para hacer diseño en formulario, también utilizaremos los controles, tal como se observan en la
pantalla anterior. Similar como lo hacía en Informes, hacer Click en control A, luego hacer Click en el formulario.
De esta manera estará creando un Label (Etiqueta), para Text lo hará con ab, etc.

En esta oportunidad vamos a diseñar, un formulario que nos pida Digitar un texto y que esta al
ser aceptado, se refleje como un nuevo mensaje en el título del formulario.

Pasos a seguir:

1.

Haga Click en control A

2.

Lleve el Mouse sobre el formulario y haga click en ella

3.

Haga Clicke en Control ab

4.

Lleve el Mouse sobre alguna ubicación del formulario, donde crea sea útil y haga Click en ella.

5.

Supongo que ya entendió, como funciona esto. Complete lo resto, hasta que su pantalla presente
similar al siguiente gráfico.

66
El usuario a de observar, que en el formulario existen cuatro objetos

Cada objeto del formulario anterior, lleva un nombre por defecto. Pero nosotros como buenos
programadores, las podemos cambiar a nuestra voluntad. Y eso los vamos a hacer.

6.

Presione Botón Derecho del Mouse, sobre Label1, y luego haga Click en Propiedades.

7.

En la lista de propiedades, ubique propiedad NAME y haga click en ella.

8.

Al costado del símbolo de función fx, aparece label1 en azul, Digite obre ella lblmensage.

9.

Haga click en Text1, esta vez también vuelve a aparecer, el nombre inicial, cambie por Txtmensaje.

10. Asigne Ud. los nombres a los objetos que faltan: Comand1 como CmdAceptar y Command2 por
CmdSalir
Ahora vamos a cambiar la etiqueta (titulo) de los objetos (recuerde text no lo tiene), los pasos
son los mismos, esta vez la propiedad que satisface nuestra necesidad es: CAPTION

67
11.

Aquí se dan un listado de las etiquetas para los Objetos (reconocidos por sus nuevos nombres).
Etiqueta

Objeto
Digite un Texto
LblMensaje
Aceptar
CmdAceptar
Salir
CmdSalir

Hasta aquí Ud. ha aprendido, cambiar nombre y título del Objeto.

12. Aquí se muestra un ejemplo a donde debemos llegar, cuando nuestro formulario ya esté completamente
preparado y ejecutándose:

68
El título actual del formulario se observa como: “ Universidad Nacional de Ingeniería”, pero ya
hemos digitado en Txtmensaje, el mensaje: “Centro de Extensión y Proyección Social”. VFP, para cambiar el
título, está solo a la espera que el usuario haga Click en Aceptar ó presione la tecla: Enter.
Pero si el usuario desea abandonar el sistema, puede presionar ESC. ó hacer click en Salir. Asimismo
al acercar el Mouse sobre cualquiera de los botones comando, esta debe hacer mostrar un mensaje de ayuda,
explicando lo que debe suceder si hace Click sobre ella.

Para que VFP, haga todo lo que hemos echo mención en la parte anterior, haga los siguientes pasos:

13. Seleccione el Objeto CmdAceptar (Aceptar) y cambie las propiedades:
DEFAULT por

.T. (Verdadero)

enTOOL TIP TEXT, Digite el texto: Click Aquí Actualiza el Título del Formulario
14. Similar en el Objeto CmdSalir (Salir):
CANCEL por
en

.T. (Verdadero)

TOOL TIP TEXT, Digite el texto: Termina la ejecución del sistema.

15. Haga Click en título del Formulario, luego en la lista de propiedades busque:
SHOW TIPS. Cambie por .T. – Verdadero ( Show Tips pertenece al formulario, y nó a otro
objeto cualquiera)

Tiempo de Ejecución:
16. Haga doble Click en Aceptar, luego Digite tal como observa en la figura:

Presione Ctrl+W, para Salir y guardar

17. Similar que en la parte anterior haga sobre el objeto Salir, esta vez Digite:
Release Thisform
18. Ejecutar el Formulario:
Haga Click en botón Ejecutar ( ! ),

69
19. A la consulta anterior, responda Sí y guarde.
20. Debe ejecutarse sin problemas, caso contrario consulte con su asistente.

PARTE 2
Vamos a preparar un formulario aplicativo, a la Base de Datos. Por ejemplo: hacer
mantenimiento de la tabla Articulo.dbf.

Pasos a seguir:
3.

Abrir la Base de Datos
Archivo
Abrir
Base de Datos: Ventas

4.

Crear un Nuevo Formulario
Archivo
Nuevo
( ) Formulario
Nuevo Archivo

5.

Presionar: Botón Derecho, sobre el área del Formulario

6.

Click en: Entorno de datos (del Menú contextual)

7.

Doble Click en Articulo.dbf

8.

Usando Mouse, puede presentar similar ala figura.

70
9.

Podemos crear en nuestro formulario, los objetos: Etiquetas, Texts y Commands, luego con la
propiedad: Control Source direccionar a los campos de la tabla. Pero esta vez, vamos a hacer uno
más simple:

10. Haga Click sobre la palabra Campos de Articulo y arrastre hacia el formulario y suelte.

Así debe de observarse, los campos

11. Haga Click en cada objeto y re-ubicar los objetos, asimismo cambie el título de las etiquetas.
( Observe el siguiente gráfico)

71
(Aquí debe llegar, usando propiedad: Caption)

12. Haga Click en el Botón Ver Clases del Control de Formularios ( Esta se encuentra al lado derecho de
la Flecha)

13. Elija Agregar
14. buscar la Carpeta WIZARDS, que se encuentra dentro de la carpeta del Visual FoxPro.

15. Haga Doble Click en, objeto Wizstyle.

16. En el siguiente gráfico, se observa una gama de botones de clases. Ubique aquel botón de nombre
PICBTNS (Para ello utilizará los Tool Tip Text de cada botón. En el siguiente gráfico, este botón
se encuentra en la quinta fila y cuarta columna)

72
17. Haga Click sobre el formulario debajo de Stock
18. Vuelva a acomodar similar al siguiente gráfico .

19. Guardar (asigne el nombre que desee)
20. Ejecutar

21. Suerte
Pruebe.

y

73
INSTRUCCIONES DE PROGRAMACIÓN.
El Foxpro en modo programación, es la forma como se puede almacenar un
conjunto de órdenes en un archivo llamado programa, el cual posteriormente
será ejecutado.
Orden MODIFY COMMAND

Propósito : Permite crear y editar un programa en Foxpro (con extensión
.PRG), o también cualquier archivo de texto.
Sintaxis :
MODIFY COMMAND [D:][CAMINO]NOMBRE[.EXT]
Si la unidad y el camino no son especificados, se asumirá la unidad y camino por
defecto.cuando se usa Modify Command, Foxpro busca el archivo indicado; si el
archivo no existe entonces se crea uno, de lo contrario éste será editado. Cada vez que
un archivo es grabado la versión previa es grabado en un archivo de seguridad con
extensión .BAK. Al crear un programa, para grabarlo presionaremos las teclas
[Ctrl]+[W]. Si desea salir sin grabar presionaremos la tecla [Esc].
Orden DO

Propósito : Permite ejecutar un programa anteriormente creado.
Sintaxis :
DO [D:][CAMINO]NOMBRE[.EXT]
Orden TYPE

Propósito : Permite visualizar el contenido de un archivo programa.
Sintaxis:
TYPE[D:][CAMINO]NOMBRE[.EXT]
ESTRUCTURA DE UN PROGRAMA

Preámbulo
Contiene informacion tal como: el nombre del programa, que hace, quién lo escribió, la
fecha y una breve historia sobre su edición.
Ejemplo:
*--------------------------------------------------------------------------------------*
*PROGRAMA : STOCK.PRG
*DESCRIPCION: CONTROL DE STOCK
*AUTOR : LUIS LOZADA PORTAL
*FECHA : 05 DE NOVIEMBRE DE 1998
*--------------------------------------------------------------------------------------*
Area de Seteos
Define los comandos SET que el programa necesita para trabajar eficientemente. En
esta parte se puede especificar la relaciones entre las bases de datos, activar los archivos
indexados así como inicialización de las variables de memoria, etc.

74
Libprogen 4-cursodevisualfoxpro
Libprogen 4-cursodevisualfoxpro
Libprogen 4-cursodevisualfoxpro
Libprogen 4-cursodevisualfoxpro
Libprogen 4-cursodevisualfoxpro
Libprogen 4-cursodevisualfoxpro
Libprogen 4-cursodevisualfoxpro
Libprogen 4-cursodevisualfoxpro
Libprogen 4-cursodevisualfoxpro
Libprogen 4-cursodevisualfoxpro

Más contenido relacionado

La actualidad más candente

La actualidad más candente (18)

Luz saia
Luz saiaLuz saia
Luz saia
 
ACCESS
ACCESSACCESS
ACCESS
 
Visual basic
Visual basicVisual basic
Visual basic
 
Ebook manual de-nvu
Ebook manual de-nvuEbook manual de-nvu
Ebook manual de-nvu
 
Microsoft access
Microsoft accessMicrosoft access
Microsoft access
 
Introducción a Openoffice Writer
Introducción a Openoffice WriterIntroducción a Openoffice Writer
Introducción a Openoffice Writer
 
Que es windows[1]
Que es windows[1]Que es windows[1]
Que es windows[1]
 
Flor vergara
Flor vergaraFlor vergara
Flor vergara
 
Prosesadores de texto word 7
Prosesadores de texto word 7Prosesadores de texto word 7
Prosesadores de texto word 7
 
Guia de virtual box 5.0
Guia de virtual box 5.0Guia de virtual box 5.0
Guia de virtual box 5.0
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Microsoft word u1
Microsoft word u1Microsoft word u1
Microsoft word u1
 
JavaScript
JavaScriptJavaScript
JavaScript
 
Kompezer
KompezerKompezer
Kompezer
 
Visual basic
Visual basicVisual basic
Visual basic
 
Manual para visual_c_luis_ocampo
Manual para visual_c_luis_ocampoManual para visual_c_luis_ocampo
Manual para visual_c_luis_ocampo
 
Que es dreamweaver
Que es dreamweaverQue es dreamweaver
Que es dreamweaver
 
Writer y Calc
Writer y CalcWriter y Calc
Writer y Calc
 

Similar a Libprogen 4-cursodevisualfoxpro

Republica bolivariana de_venezuela
Republica bolivariana de_venezuelaRepublica bolivariana de_venezuela
Republica bolivariana de_venezuelaGabrielSaracheHernan
 
Curso de visual fox pro - Desprotejido para Imprimirlo
Curso de visual fox pro - Desprotejido para ImprimirloCurso de visual fox pro - Desprotejido para Imprimirlo
Curso de visual fox pro - Desprotejido para Imprimirlohmosquera
 
Apuntes Curso Word 2016 inicial medio Tema 1.docx
Apuntes Curso Word 2016 inicial medio Tema 1.docxApuntes Curso Word 2016 inicial medio Tema 1.docx
Apuntes Curso Word 2016 inicial medio Tema 1.docxPaquitoFlauta
 
Guia de-autoaprendizaje-vfp-5-0
Guia de-autoaprendizaje-vfp-5-0Guia de-autoaprendizaje-vfp-5-0
Guia de-autoaprendizaje-vfp-5-0Koffe Revolution
 
Proyecto visual basic
Proyecto visual basicProyecto visual basic
Proyecto visual basicchivas2455
 
Aplicaciones de escritorio con base de datos
Aplicaciones de escritorio con base de datosAplicaciones de escritorio con base de datos
Aplicaciones de escritorio con base de datosteresanorato
 
Trabajo nticx carolinaperez
Trabajo nticx carolinaperezTrabajo nticx carolinaperez
Trabajo nticx carolinaperezBlingBling123
 
Informe programacion 10% adrian reinoza
Informe programacion 10% adrian reinozaInforme programacion 10% adrian reinoza
Informe programacion 10% adrian reinozaadrianreinoza
 
Practicas de Visual Basic 6
Practicas de Visual Basic 6Practicas de Visual Basic 6
Practicas de Visual Basic 6Brenda Roque
 
Emmanuel vargas
Emmanuel vargasEmmanuel vargas
Emmanuel vargasdoubtfire
 
Instituto universitario politecnico
Instituto universitario politecnicoInstituto universitario politecnico
Instituto universitario politecnicoKarolayFinol
 
Lenguaje de programacion de visual basic
Lenguaje de programacion de visual basicLenguaje de programacion de visual basic
Lenguaje de programacion de visual basicRosa Marina Mosquera
 

Similar a Libprogen 4-cursodevisualfoxpro (20)

Republica bolivariana de_venezuela
Republica bolivariana de_venezuelaRepublica bolivariana de_venezuela
Republica bolivariana de_venezuela
 
Ismerai
IsmeraiIsmerai
Ismerai
 
Curso de visual fox pro - Desprotejido para Imprimirlo
Curso de visual fox pro - Desprotejido para ImprimirloCurso de visual fox pro - Desprotejido para Imprimirlo
Curso de visual fox pro - Desprotejido para Imprimirlo
 
Visual Basic 2008
Visual Basic 2008Visual Basic 2008
Visual Basic 2008
 
Apuntes Curso Word 2016 inicial medio Tema 1.docx
Apuntes Curso Word 2016 inicial medio Tema 1.docxApuntes Curso Word 2016 inicial medio Tema 1.docx
Apuntes Curso Word 2016 inicial medio Tema 1.docx
 
Guia de-autoaprendizaje-vfp-5-0
Guia de-autoaprendizaje-vfp-5-0Guia de-autoaprendizaje-vfp-5-0
Guia de-autoaprendizaje-vfp-5-0
 
Proyecto visual basic
Proyecto visual basicProyecto visual basic
Proyecto visual basic
 
Aplicaciones de escritorio con base de datos
Aplicaciones de escritorio con base de datosAplicaciones de escritorio con base de datos
Aplicaciones de escritorio con base de datos
 
Trabajo nticx carolinaperez
Trabajo nticx carolinaperezTrabajo nticx carolinaperez
Trabajo nticx carolinaperez
 
Informe programacion 10% adrian reinoza
Informe programacion 10% adrian reinozaInforme programacion 10% adrian reinoza
Informe programacion 10% adrian reinoza
 
Word
Word Word
Word
 
Raul andrade
Raul andradeRaul andrade
Raul andrade
 
procesador de texto
procesador de textoprocesador de texto
procesador de texto
 
Practicas de Visual Basic 6
Practicas de Visual Basic 6Practicas de Visual Basic 6
Practicas de Visual Basic 6
 
Emmanuel vargas
Emmanuel vargasEmmanuel vargas
Emmanuel vargas
 
Instituto universitario politecnico
Instituto universitario politecnicoInstituto universitario politecnico
Instituto universitario politecnico
 
Unidad III
Unidad IIIUnidad III
Unidad III
 
Daniel palacios word
Daniel palacios wordDaniel palacios word
Daniel palacios word
 
Lenguaje de programacion de visual basic
Lenguaje de programacion de visual basicLenguaje de programacion de visual basic
Lenguaje de programacion de visual basic
 
Visual Basic
Visual BasicVisual Basic
Visual Basic
 

Último

CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 

Último (15)

CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 

Libprogen 4-cursodevisualfoxpro

  • 1. Curso de Visual Foxpro Entorno de Desarrollo de Visual Foxpro (I) Temas que abordaremos en este Capítulo: Introducción Instalación - Formatos  Aprendizaje - Ayuda  Conceptos - Eventos - Controles  Tipos de Ficheros - Tipos de Datos.  Control de Flujo del Programa  El entorno de desarrollo (Administrador de proyectos- Diseñadores y Asistentes) (Próxima entrega)  Gestión de Ficheros - Creación de Tabla mediante asistente. (Próxima entrega)   Introducción Visual Foxpro es uno de los gestores de Bases de Datos relacionales más rápido y flexible del mercado, disponiendo de un complejo entorno de desarrollo totalmente orientado al objeto y altamente integrado en el sistema operativo Windows 95. Como cualquier otra aplicación Windows estándar, Visual Foxpro soporta interfaces MDI, barras de herramientas, ayuda sensible al contexto, múltiples fuentes, acceso a bibliotecas de enlace dinámico (DLL), etc. Aparte del acceso a tablas en formato nativo de Visual FoxPro, se puede acceder virtualmente a cualquier fuente de datos cuyo acceso se pueda hacer através de ODBC (Open Database Connectivity). Este estándar, definido como Conectividad Abierta de Bases de Datos, permite abrir y consultar diversas bases de datos a través de un conjunto de controladores, utilizando SQL como lenguaje de consulta. Con el advenimiento de Visual Fox, los desarrolladores de aplicaciones tienen acceso a multitud de eventos y opciones que los programadores de Visual Basic y Visual C tuvieron durante años. Se elimina la necesidad del uso del READ y su confusa nidificación (Fundational read). Se aprovechan algunas de las innovaciones que incorporó el Visual Basic, que tuvo liderazgo en simplificaciones tales que le dieron alcance masivo a la programación. En esta clase examinaremos, entre otras cosas, qué son los formularios, eventos y controles, y cómo se usan 1
  • 2. 2.- INSTALACION - FORMATOS Se puede instalar en Windows 95 / 98 o NT, dado que sólo viene un instalador de 32 bits. Al igual que Visual Basic 5, no funcionará en Windows 3.X. Para esta plataforma puede usar Fox Pro 2.6 para Windows, que no es un lenguaje Visual. Formatos: tiene una sola versión completa y también forma parte del paquete Visual Estudio (conjunto de lenguajes visuales y SQL Server 6.5). La instalación básicamente consiste en ejecutar el programa INSTALAR (versión española) o SETUP (versión en inglés), y seguir los diálogos. Por omisión se instala en la carpeta C:VFP, pero si lo desea Ud. puede cambiarla. Con la instalación mínima se requieren 25 Mg de espacio en disco, con la típica alrededor de 100 Mg, y completa puede ocupar cerca de 200 Mg, incluyendo la documentación en línea (Carpeta C:VFPONLINE) y los audiovisuales explicativos en inglés (carpeta C:VFPONLINEMEDIA de casi 60 Mg). Por omisión deja todo esto (documentación y audiovisuales para su uso desde el CD para economizar espacio, pero puede copiarlos al disco rígido sí desea acceso más rápido y no tiene problemas de espacio en disco. Equipo Mínimo:  Un PC compatible con IBM® con Windows 95 / 98, aunque funciona con un procesador 486 a 50MHz se recomienda algo superior (típicamente Pentium 166 /200 Mhz con 32 MG RAM).  Un mouse o ratón.  Se recomienda un monitor VGA o de mayor resolución, preferiblemente color. 3.- Aprendizaje Vea en menú de Ayuda, (ALT + U, D), "Documentación" que pone en pantalla a todos los manuales. Podría empezar por ej. por la “Guía de Instalación”, “Manual del Usuario”, "Manual del Programador", “Referencia del Lenguaje”, etc.. Más adelante podrá usar ese mismo menú de Ayuda - Aplicaciones Ejemplo. Y estudiar los casos típicos que allí se explican. 4.- Ayuda Vea en la Ayuda, (ALT + U), Temas de ayuda, y también aplicaciones de ejemplo que se pueden ejecutar y estudiar, Microsoft en la Web (Si tiene Internet), Soporte técnico, etc. También está la ayuda sensible al contexto (F1), el índice temático, y la opción Buscar. En la ayuda se puede imprimir, seleccionar, copiar, y luego pegar en un procesador de textos cualquiera. 5.- Conceptos Cómo funciona Windows: Mensajes: Todo lo que sucede dentro de Windows es el resultado del envío de un mensaje. Cuando se hace clic en una tecla o botón, cuando cambia el tamaño a una ventana, cuando un carácter se digita dentro de una caja de edición, cuando se mueve el puntero del mouse, etc., Windows envía un mensaje informando de dicha situación. 2
  • 3. El volumen de mensajes generados en cada segundo es tremendo. Una queja común entre los programadores de C++ que comienzan a trabajar en lenguajes del tipo del Fox, es que pierden la habilidad de interceptar cientos de mensajes que Windows envía. El Fox 2.6 para Windows está basado en un sistema de ventanas creado para DOS, que no se basa en mensajes. Además de crear la ventana gráficamente, el objetivo era generar código fuente de Fox rápidamente (SPR), además de generar la entidad “ventana” utilizable (SCX). Fox tuvo que ser mejorado para permitirle a los desarrolladores tener este tipo de fundamento, además de permitirle interceptar esta clase de mensajes, llegándose así a la versión visual, con el agregado del concepto “Formulario” (En inglés, Form). Ventana: La del explorador, un botón es una ventana, un documento de Word, un icono, una caja de textos, botones de opción, una barra de menú, etc. todas son ventanas. Formularios Visual Fox Pro tiene un nombre especial para una pantalla: formulario o Form. Un formulario no es nada mas que una ventana común de Windows, pero a un nivel mayor de abstracción. Se podría pensar un formulario, por ejemplo, como un conjunto auto-contenido de objetos sin tener que preocuparse por una gran cantidad de detalles por cuales se preocuparía un programador de C. “Auto contenidos” quiere significar que el formulario tiene propiedades que pueden ser alteradas para controlar la apariencia y comportamiento del formulario, y eventos que se disparan cuando ciertos mensajes se envían a los mismos. Una pantalla de entrada o ventana construida usando el constructor de pantallas de Fox 2.6 (Screen Builder) no es un objeto, aunque le dé la ilusión de que es así. Cuando se examina el código generado por Fox Pro 2.6 se puede ver la sentencia DEFINE WINDOW, las sentencias GET / SAY, y finalmente la sentencia READ que causa que Fox entre en estado de espera para permitirle al usuario ingresar datos. Cuando Ud. diseña un formulario en Visual Fox, lo hace casi igual que en Visual Basic y, a diferencia de lo que ocurría en Fox 2.6 para Windows, el formulario es un objeto, porque tiene propiedades que manipulan la apariencia del formulario, o cambian la forma en que se comporta. Se puede fijar los valores (numéricos o alfabéticos) de dichas propiedad tanto a tiempo de diseño usando la ventana de propiedades, como durante la ejecución de un programa (tiempo de ejecución o en inglés, runtime). A cada formulario se le asigna un único nombre (propiedad Name), y una vez que tiene un nombre se lo puede referenciar tanto dentro como fuera del mismo formulario. 3
  • 4. Por ejemplo, suponga que tiene un formulario al que llama frmCliente y desea cambiar el título de dicho formulario (propiedad Caption), se puede referencia dicha propiedad utilizando la sintaxis del punto como sigue: frmCliente.Caption = “ALTAS” y usando la misma notación puede colocar el título de una ventana en la variable lctitulo, usando la sentencia: lctitulo = frmCliente.Caption La principal ventaja de utilizar propiedades de objetos contra los distintos comandos usados hasta ahora, es la consistencia: más que recordar muchos diferentes comandos (probablemente cada uno con diferente sintaxis), solamente se tiene que acordar el nombre de la propiedad, y la sintaxis es la misma. Eventos Todo lo que ocurra en Windows es el resultado de enviar un mensaje. Visual Fox previene que Ud. se las tenga que ver con cientos de diferentes mensajes usando la noción de evento. Un evento es una acción reconocida por un objeto, tal como el clic de un ratón, o la presión de una tecla en el teclado. Cuando Ud. hace clic con el ratón en un formulario, Windows envía un mensaje al formulario diciéndole que alguien ha hecho clic sobre él. Entonces Visual Fox dispara el evento clic del formulario en respuesta a dicho mensaje. Ud. solamente debe escribir la parte de código que se ejecutará cuando dicho evento ocurra. Por ejemplo, puede poner código que cambie el color de fondo del formulario (Propiedad BackColor) en respuesta a dicho evento. En la siguiente tabla están algunos de los eventos más comunes del objeto formulario: Evento Se dispara cuando... Load DblClick MouseMove Resize GotFocus Se carga el formulario por primera vez. El usuario hace doble clic en el formulario. El ratón se mueve sobre el formulario. Se cambia de tamaño del formulario Formulario “en foco”, desde otro formulario se hace clic en éste. Se hace clic fuera del formulario Lost Focus Controles Son aquellos objetos gráficos a través de los cuales los usuarios pueden recibir y responder a los distintos tipos de mensajes Windows, de forma similar a las que lo hacía el formulario. Otra definición de control: son una instancia de una clase, combinada con datos y procedimientos. Ejemplo: botón (push button), cajas de edición (edit boxes), cajas de texto (text boxes), líneas, texto o etiquetas (labels), etc. 4
  • 5. Los controles pueden ser vistos como objetos autocontenidos, con propiedades que le permiten manipular su propia apariencia, comportamiento, y responder a los eventos mediante código escrito (programación). Al igual que pasaba con los formularios, los controles tiene un único nombre (Propiedad Name), y se puede cambiar cualquier propiedad usando la notación del punto. Por ejemplo, para hacer que el texto (propiedad Text) que está en una caja de texto (text Box) que se llama txtCaja desde y hacia la variable lcVar, se usará: txtCaja.Text = lcVar lcVar = txtCaja.Text Algunas propiedades son únicas para un determinado control (no existen en otros controles), pero existen otras que son comunes a todos los controles, por ejemplo: Propiedad Significado Enabled FontName Left El control está habilitado Nombre tipografía usada (caracteres) posición del borde izquierdo del control referida a su ventana contenedora True (verdadero) si está visible. Visible Los controles pueden responder a eventos disparados tanto por acción del usuario como directamente desde el sistema. Por ejemplo, si el usuario hace clic sobre un control botón de apretar (push button), Windows le informa enviándole un mensaje a dicho control que ha sido apretado (clicked). El control o botón entonces dispara el evento Clic, y ejecuta el código colocado o asignado a dicho evento. Al igual que las propiedades, algunos eventos son inherentes a dicho control y no existen en otros, pero hay eventos comunes a todos los controles, como serían los siguientes caso típico: Evento Se dispara cuando... Click MouseMove GotFocus el usuario hace click sobre el control El ratón se mueve sobre el control. Control “en foco”, desde otro control se hace clic en éste. Se hace clic en otro control Lost Focus Controles “Custom” Uno de los principales factores que contribuyeron al éxito del Visual Basic fue la “explosión” en el mercado de controles suministrados por fabricantes externos o terceras partes. Estos controles aparecen en la paleta de controles del Visual Fox Pro junto con los controles normales (built-in) y se manipulan de forma similar (fijando valores a sus propiedades y codificando rutinas que dan respuesta a ciertos eventos). Estos controles cubren un amplio espectro desde botones y cajas de texto mejoradas, hasta complejas hojas de cálculo (grid) o gráficos comerciales (Pinacle Graph). 5
  • 6. Dichos controles estaban escritos generalmente en C y empaquetados en una clase especial de librerías dinámicas (como las DLL) que verdaderamente extendieron la eficacia del lenguaje, por lo que fueron llamadas. VBX (Visual Basic eXtensions), luego OCX y actualmente se los llama ACTIVE X, ahora también soportados todos ellos por Visual Fox Pro, que ahora en la versión 5, puede crear bibliotecas de enlace dinámico o DLL. 6.- Tipos de Datos Los datos con los que se trabaja probablemente incluyan períodos de tiempo, dinero y elementos contables, así como fechas, nombres, descripciones, etc. Cada dato corresponde a un determinado tipo, es decir, pertenece a una categoría de datos que se manipula de maneras similares. Se podría trabajar directamente con estos datos sin almacenarlos, si bien perdería la mayor parte de la flexibilidad y potencia que ofrece Visual FoxPro. Visual FoxPro aporta numerosos contenedores de almacenamiento con el fin de ampliar su capacidad para manipular fácilmente los datos. Tipos de datos Los tipos de datos determinan la manera en que se almacenan los datos y la forma en que se pueden utilizar tales datos. Puede multiplicar dos números, pero no puede multiplicar caracteres. Puede imprimir caracteres en mayúsculas, pero no es posible imprimir números en mayúsculas. En la siguiente tabla se enumeran algunos de los principales tipos de datos de Visual FoxPro. Tabla de Tipos de datos Tipo Byte Numérico 8 Moneda (Currency) Character 8 Logical Fecha - Fecha y hora (Date DateTime) 1á 256 1 8 RANGO - Ejemplo –.9999999999E+19 a .9999999999E+20 – 922337203685477.5808 a 922337203685477.5807 “Prueba” “123” “01/01/95” .T.(verdadero) .F. (falso) {01/01/95} {01/01/95 12:30:00 pm} 01/01/0100 hasta 31/12/9999 Tipos de campos Tipo Byte Ejemplos Numérico 1 á 20 –.9999999999E+19 a Punto Flotante 1 á 20 –.9999999999E+19 a .9999999999E+20 6
  • 7. 4 .9999999999E+20 Texto longitud variable Máximo según memoria +/–4.94065645841247E-324 a +/–8.9884656743115E307 “Prueba” “123” “01/01/95” Cualquier caracter .T.(verdadero) .F. (falso) –2147483647 a 2147483646 10 Sin tabla de códigos 10 4 Sin tabla de códigos Limitado por Memoria disponible {01/01/95} Memo 4 Doble Precisión Character 8 Logical Integer (Entero) Carácter (Binario) Memo (Binario) General (Obj.OLE) Fecha - Fecha y hora (Date DateTime) 1á 254 1 8 {01/01/95 12:30:00 pm} Contenedores de datos Los contenedores de datos le permiten realizar las mismas operaciones con varios datos. Por ejemplo, sumar las horas que ha trabajado un empleado, multiplicarlas por el salario por hora y restar los impuestos para determinar el sueldo que ha percibido el empleado. Deberá realizar estas operaciones para cada empleado y para cada período de pago. Si almacena esta información en contenedores y realiza las operaciones sobre éstos, bastará con sustituir los datos antiguos por los nuevos datos y volver a ejecutar el mismo programa. En la siguiente tabla se enumeran algunos de los principales contenedores de datos disponibles en Visual FoxPro: Contenedores de datos Tipo Descripción Variables Elementos individuales de datos almacenados en la memoria RAM (memoria de acceso aleatorio) del PC. Registro Varias filas de campos s de predeterminados, cada uno de tabla los cuales puede contener un dato definido previamente. Las tablas se guardan en disco. Matrices Varios elementos de datos almacenados en la memoria RAM. 7
  • 8. Uso de operadores Los operadores se utilizan para vincular los datos formando expresiones. Las expresiones producen un resultado que se puede asignar a un variable o campo mediante un operador (el operador de asignación o el signo igual). Operador = Tipos de datos válidos Ejemplo Todos ?n=7 Resultado Imprime .T. si el valor almacenado en la variable es 7; de lo contrario, imprime .F. Operador + Tipos de datos válidos Numeric, Character,Date, DateTime Ejemplo Resultado ? "Fox" + "Pro" Imprime “FoxPro” Operador *, / Tipos de datos válidos Numeric Ejemplo ? 5 * 5 Resultado Imprime 25 TABLA DE Funciones de CONVERSIÓN entre tipos de datos. Tipo ORIGEN FUNCION Tipo DESTINO Carácter o Memo Numérico, Flot, Doble o Entero Numérico Moneda Carácter o Memo Fecha VAL ( ) Numérico STR( ) Caracter NTOM( ) MTON( ) CTOD( ) Moneda Numérico Fecha Carácter Carácter Binario Carácter o Memo FechaHora Fecha FechaHora Lógico DTOC o Carácter DTOS CTOBIN( ) Carácter Binario BINTOC( ) Carácter CTOT( ) FechaHora TTOC( ) DTOT( ) TTOD( ) IIF( ) Carácter FechaHora Fecha Cualquiera FUNCION TYPE Evalúa una expresión de caracteres y devuelve el tipo de datos de su contenido. 8
  • 9. Sintaxis TYPE (cExpresión) Tipos devueltos: Character Argumentos: cExpresión Especifica la expresión que va a ser evaluada, que puede tratarse tanto de una variable como de un campo, de un campo de memoria o de cualquier otra expresión. La expresión tiene que pasarse como una cadena de caracteres, hay que entrecomillar los nombres de variables de memoria, de campos, etc. Si no entrecomilla la expresión, la función TYPE( ) devolverá “U” (expresión indefinida). Tipo de datos Carácter devuelto Character Numeric (también flotante, doble y entero) Currency Date DateTime Logical Memo Object General Indefinido C N Y D T L M O G U Jerarquía de operadores El orden de prioridades según el cual se aplican los operadores al evaluar una expresión matemática, se llama en Visual FoxPro, la precedencia de los operadores, que es de mayor a menor jerarquía:      ( ) (agrupamiento de subexpresiones), ^ o ** (exponenciación), * y / (multiplicación y división), % (módulo), + y – (suma y resta). Control del flujo del programa Visual FoxPro incluye una categoría especial de comandos que “envuelven” a otros comandos y funciones, determinando cuándo y con qué frecuencia se ejecutan los otros comandos y funciones. Estos comandos permiten realizar bifurcaciones condicionales y bucles, dos herramientas de programación sumamente potentes. Una estructura de control muy usada es la estructura condicional SI (IF en inglés). De la ayuda de Vfox sacamos lo siguiente: IF : Ejecuta condicionalmente un conjunto de comandos dependiendo del resultado de una expresión lógica. Sintaxis IF lExpresión [THEN] Comandos [ELSE Comandos] 9
  • 10. ENDIF Argumentos: lExpresión Especifica la expresión lógica evaluada. Si lExpresión da como resultado verdadero (.T.), se ejecutarán cualesquiera instrucciones posteriores a IF y anteriores a ELSE o ENDIF (lo que suceda primero).  Si lExpresión es falsa y se incluye ELSE, se ejecutan los comandos situados después de ELSE y antes de ENDIF.  Si lExpresión es falsa (.F.) y no e incluye ELSE, se pasarán por alto todas las instrucciones entre IF y ENDIF. En este caso la ejecución del programa continuará con la primera línea de comando a continuación de ENDIF. Comentarios : Puede anidar IF ... ENDIF dentro de otro bloque IF ... ENDIF. Los comentarios precedidos de && se pueden colocar en la misma línea después de IF, ELSE y ENDIF. Estos comentarios se pasan por alto durante la compilación y la ejecución del programa. Continua... Curso de Visual Foxpro Entorno de Desarrollo de Visual Foxpro (II) (Diseñadores y Asistentes - Gestión de Ficheros - Creación de Tabla mediante asistente) Toda la interfaz de desarrollo incorporada por "Visual Foxpro" está orientada a la generación rápida de aplicaciones (RAD). El objetivo final es la generación de aplicaciones seguras en un tiempo razonablemente pequeño. Todo esto se consigue dejando que el trabajo a bajo nivel lo efectúe el sistema, quedando para el programador el aspecto visual y el análisis de la aplicación. Para conseguir este fin, Visual Foxpro incorpora el siguiente conjunto de herramientas: Administrador de proyectos Visual Foxpro incorpora un potente gestor de proyectos que centraliza la gestión de todos los archivos manejados por una aplicación. A partir de la información contenida en un proyecto se generan las aplicaciones que pueden ser distribuidas 10
  • 11. libremente a todos los usuarios. Además, Visual Foxpro incorpora una herramienta que asiste al programador para crear disquetes de instalación que incluyan toda la información necesaria para instalar esta aplicación en otros ordenadores. Diseñador de Bases de Datos Como apoyo al sistema, incorpora un potente gestor de bases de datos. Este gestor maneja bases de datos que actúan como referente de la información adicional relacionada con tablas, índices, relaciones, reglas de validación, integridad referencias y un sin número más de información. De esta forma, una base de datos mantiene actualizada y centralizada toda la información de funcionamiento de las tablas que con ella están relacionadas. Por ejemplo, cada vez que se modifica un registro en una tabla perteneciente a una base de datos, se comprueban las reglas de modificación para esta tabla. Si por cualquier razón no es posible actualizar la tabla porque una de las reglas de validación ha fallado, se devuelve la tabla a su estado original, advirtiendo, por supuesto, al usuario de esta eventualidad. Diseñador de formularios Totalmente orientados al objeto, permiten diseñar el aspecto gráfico final de una aplicación. Permiten la inclusión de objetos estándar en Windows, tales como casillas de verificación, grupos de opciones, marcos de página, imágenes, controles OLE. Gracias al diseñador de clases visuales, se pueden crear nuevos tipos de controles que pueden ser incorporados como cualquier otro control a un formulario. Gestionan de forma transparente al usuario el entorno de datos asociado para cada formulario. En este entorno de datos es posible incluir cualquier tabla, vista local o remota definida en una base de datos. Pero no sólo eso, es posible que cada entorno de datos sea privado para cada formulario. De esta forma pueden abrirse varias instancias de un mismo formulario sin que existan problemas de colisión de datos entre las dos instancias definidas. Diseñador de informes y etiquetas A la hora de visualizar datos, ya sea por pantalla o impresora, Visual FoxPro incorpora un potente diseñador de informes y etiquetas. En un informe se pueden definir objetos dentro de las tres bandas, cabecera, pie o detalle, y, además, distribuir el informe en varios grupos que muestren el resultado de cálculos sumatorios u otros realizados desde el propio formulario. A estas prestaciones hay que añadir la posibilidad de incluir en el entorno de datos del propio informe cualquier tabla o vista definida en la base de datos, tal como se ha comentado en referencia a los formularios. Diseñador de menús Este diseñador se utiliza para crear menús personalizados en la aplicación y así sustituir el menú incorporado por Visual FoxPro. El sistema utilizado se basa en la creación de unos ficheros donde están las definiciones de menú. A posteriori, la información contenida en estos ficheros de menú es analizada por un generador de código con la finalidad de generar de forma automática código fuente con las definiciones de menú. Asistentes Para usuarios incipientes, los asistentes pueden ayudar a crear nuevos tipos de ficheros de forma sencilla y rápida. No por ello se elimina la posibilidad de modificar los ficheros creados, ya que éstos pueden ser alterados posteriormente mediante su diseñador correspondiente. Los generadores de controles ayudan en la creación de nuevos controles insertados en los formularios. Estos generadores se encuentran totalmente abiertos y el usuario puede incorporar sus propios generadores. 11
  • 12. Diseñador de consultas y vistas Cuando se trata de recuperar información, los generadores de consultas y vistas constituyen un apoyo indispensable para poder generar expresiones SQL. Si estas sentencias extraen información de la propia base de datos, se denominan vistas locales. Cuando estas vistas extraen información de una base de datos externa, se denominan vistas remotas. Apariencia de la ventana de sistema El sistema intérprete se basa en la utilización de la ventana Comandos. Desde esta ventana se escriben sentencias que usualmente provocan una acción por parte del sistema de desarrollo. Así, desde la ventana de comandos se puede abrir tablas, examinar su contenido, crear programas, compilarlos, etc. Aparte de la ventana de comandos, cualquier acción se puede realizar desde el menú de sistema, o bien desde la barra de herramientas activa. Es posible personalizar el menú de sistema y cualquier barra de herramientas, o incluso crear nuevas barras de herramientas según las necesidades del usuario. Tipos de Ficheros Como se han dicho, el proyecto guarda información acerca de la localización de cada archivo. Como ayuda se presenta una lista de las posibles extensiones asociadas con cada tipo de ficheros y una breve descripción de cada tipo. Tipo Proyecto Extensiones relacionadas PJX, PJT Descripción Bases de Datos DBC, DCX, DCT Formulario SCX,SCT Bibliotecas de Clases Visuales Tablas VCX,VCT DBF,FPT Bibliotecas conteniendo varias clases definidas por el usuario. Tablas y fichero memo asociados. Índices CDX,IDX Ficheros índice compactos y simples. Documentación ACT Informes FRX,FRT Fichero conteniendo el diagrama de acciones de un fichero PRG generado por el asistente de documentación. Informes. Etiquetas LBX,LBT Etiquetas. Librerías Windows DLL Librería de enlace dinámico Windows Errores ERR Fichero de seguimiento de errores de compilación. Núcleo central de desarrollo. Efectúa el seguimiento a todos los ficheros relacionados con una aplicación. Tabla contenedora para información relacionada con tablas, índices, relaciones, vistas y conexiones. Ficheros de definición de formularios. 12
  • 13. Ejecutables EXE Fichero ejecutable Visual Foxpro. Macros FKY Fichero de definición de macros. Bibliotecas API FLL Programas PRG,FXP Biblioteca de enlace dinámico Windows. Programa Fuente y Compilado. Ayuda HLP Fichero de ayuda gráfica. Memoria MEM Menús MNX,MNT Fichero de almacenamiento variables de memoria. Fichero de definición de menús. Menús generados MPR,MPX Control OLE OCX Fichero generado y compilado. A partir de una definición de menús. Fichero control ActiveX Consulta SQL QPR,QPX Fichero de consulta SQL. Copias de seguridad TBK,BAK Texto TXT Copias de seguridad de diversos ficheros. Ficheros de Texto. Constantes H Fichero de constantes predefinidas. de Gestión de ficheros Desde el menú Archivo se realizan las acciones relacionadas con archivos. Consta de las opciones: Opción Nuevo Abrir Cerrar Guardar Guardar como... Revertir Descripción Crea un nuevo fichero de cualquier tipo Abre un fichero de cualquier tipo. Cierra el archivo en uso. Actualiza las modificaciones efectuadas al fichero actual en disco. Salva el fichero actual en disco con un nuevo nombre. Recupera la versión guardada en disco del fichero actual. Cuando se desea crear un nuevo fichero, se muestra el cuadro de diálogo tal como vemos en la Figura. Este cuadro de diálogo permite seleccionar el tipo de fichero que se desea crear. Existen diversos tipos de ficheros que permiten su creación mediante asistentes, que facilitan enormemente la tarea de crear nuevos ficheros. Los Asistentes Los asistentes proporcionan el método más eficaz y sencillo de apoyo a los nuevos usuarios en Visual Foxpro. Cubren prácticamente todos los tipos de ficheros básicos 13
  • 14. que se pueden crear, desde tablas a formularios, pasando por informes, consultas, etc. Veamos cuáles son: Asistentes Asistente para formularios Asistente para formularios uno a varios Asistentes para tablas Asistente para importar datos a tablas Asistente para tablas dinámicas Asistentes para consultas Asistente para tablas de referencias cruzadas Asistentes para gráficos Asistente para informes Asistente para informes de uno a varios Asistente para informes de grupos/totales Asistentes para etiquetas Asistente para combinación de correspondencia Asistente para vistas Asistente para vista remota Descripción Crea nuevos formularios. Crea ficheros de tipo SCX. Crea formularios con soporte de ficheros relacionados de uno a muchos. Crea ficheros SCX. Crea nuevas tablas libres o definidas en una base de datos. Crea ficheros de tipo DBF. Importa datos a una tabla procedentes de otro origen. Crea tablas de hoja de cálculo utilizables desde Microsoft Excel. Crea consultas con sentencias SQL almacenadas en ficheros de tipo QPR. Crea una consulta en formato hoja de cálculo. Crea ficheros de tipo QPR. Crea un nuevo gráfico en Microsoft Graph a partir de la información contenida en una tabla. Crea una nueva definición de informe. El tipo de fichero creado es FRX. Crea una nueva definición de informe relacionando una tabla primaria con otra secundaria. Crea fichero de tipo FRX. Crea un informe con definición de resumen para grupos y totales. Crea ficheros de tipo FRX. Crea un nuevo fichero de definición para imprimir etiquetas postales. Crea un fichero de tipo LBX. Crea un origen de datos compatible con el procesador de texto Microsoft Word o cualquier otro. Crea una nueva definición de vista en una base de datos. La información generada por este asistente se guarda en una base de datos DBC. Crea una nueva definición de vista remota. El fin es acceder a otro tipo de información contenida a su vez en un servidor de datos. Esta nueva vista se almacena en una base de datos DBC. Crear una nueva tabla mediante el asistente Para crear una nueva tabla mediante el Asistente para tablas, debe proceder de alguna de estas dos formas:   Desde el menú Herramientas, escoja el submenú Asistentes. De este menú, escoja la opción Tabla. Desde el menú principal, escoja del menú Archivo la opción Nuevo CTL+N o escoja el botón de comando Nuevo de la barra de herramientas Estándar. Visualice a continuación el cuadro de diálogo para la elección del nuevo tipo de fichero a crear. Escoja Tabla y pulse en el botón de comandos Asistente. 14
  • 15. El asistente genera una nueva tabla siguiendo tácticamente una serie de pasos que conducen a confeccionar una tabla y sus índices correspondientes. Paso 1. Seleccionar campos Este paso trata de determinar los campos que se van a definir en la nueva tabla, a partir de unas definiciones estándar aportadas por el propio asistente. De esta forma, se puede crear una nueva tabla basándose en tipos más o menos ajustados a las necesidades del usuario. Paso 2. Opciones de campos Puede que las definiciones de campo no se ajusten exactamente a las necesidades del usuario. Para esto existe este paso, permitiendo la modificación de los parámetros definitorios de un campo, como son su nombre, el título, el tipo, el ancho, decimales y soporte de valores nulos. Bien, en cuanto al título, sólo hay que hacer una diferenciación, y es que si no hay una base de datos definida y abierta en el sistema, no se puede crear o modificar un título asociado a un campo. Esta es una de las características aportadas por las bases de datos, la posibilidad de ampliar la información relativa a tablas. Otro caso es el nombre del campo: si no existe una base de datos abierta, no se puede ampliar su descripción más allá de diez caracteres. Como se verá más adelante, es posible asignar nombres de campo hasta 255 caracteres. Paso 3. lndexación Para poder localizar cualquier tipo de información de una tabla es necesario recurrir a la creación de índices. Los índices proporcionan un método rápido de localización de registros basándose en expresiones. La expresión a localizar se va comparando con el contenido del índice, hasta localizar el registro cuyo valor en la clave de índice coincide con la expresión buscada. Paso 4. Finalizar Una vez que se han recorrido los pasos correctamente, se procede a generar una tabla. Adicionalmente, el asistente nos permite examinar la tabla tal como ha quedado o modificarla mediante el diseñador de tablas para añadirle prestaciones adicionales Manejo de tablas Suponiendo que hubiéramos elegido la opción Guardar la tabla y examinarla en el Asistente para tablas, obtendría una nueva ventana Examinar con la nueva tabla vacía. Lo que aquí vemos es una ventana típica utilizada para examinar tablas. En este caso estamos visualizando una tabla con registros. Dentro de la ventana distinguimos varios apartados.   Columnas Dependiendo del tamaño de la ventana Examinar, se muestran más o menos columnas. Cada columna visualiza en el encabezado el nombre del campo, o bien, el título definido en la base de datos para este campo. Usualmente, marcando en el título de un campo y arrastrándolo a una nueva posición, modificamos el orden de visualización de columnas. Selección de celda. Para indicar en qué registro está posicionado, existe un indicador situado a la izquierda de la primera columna visualizada. Este indicador una flecha indicando que el puntero de registro está posicionado en esa fila. Asimismo, la celda que tiene el enfoque de lectura visualiza el cursor de edición y está remarcada con un cuadro cuyos bordes son 15
  • 16.  ligeramente mayores que las líneas separadoras. Como se puede observar en la figura, todas las funciones de edición están disponibles, tales como marcar un determinado segmento de caracteres, insertar o incluso marcar todo el contenido del campo. Estado del registro. Adyacente al indicador de registro se encuentra el indicador de estado de la marca de eliminación. Si el registro está marcado para borrar, este cuadro cambia su contenido de color negro. Edición de registro interactivo Desde la venta Comando se pueden utilizar estos comandos para abrir la ventana Examinar y realizar modificaciones en cualquier tabla. Comando/Función APPEND [BLANK] [IN nÁreaTrabajo | cAliasTabla] [NOMENU] BROWSE y CHANGE/EDIT MODIFY GENERAL CampoGeneral1 [,CampoGeneral2 ...] [NOMODIFY] [NOWAIT] [[WINDOW NombreVentana1] [IN [WINDOW] NombreVentana2 | IN SCREEN]] MODIFY MEMO CampoMemo1 [,CampoMemo2 ...] [NOEDIT] [NOMENU] [NOWAIT] [RANGE nCarácterInicial, nCarácterFinal] [[WINDOW NombreVentana1] [IN [WINDOW ] NombreVentana2 | IN SCREEN]] [SAME] [SAVE] Descripción Abre la ventana Cambiar para añadir registros a una tabla interactivamente. Abren las ventanas Examinar y Cambiar, respectivamente. Abre una nueva ventana para poder editar un campo de tipo general. Abre una nueva ventana para permitir editar un campo de tipo memo. Opciones del menú tabla Cuando se abre una nueva ventana Examinar, se crea un nuevo menú en la barra de menús de sistema. El menú Tabla contiene las opciones básicas para el manejo de tablas. Veamos algunas: Añadir un nuevo registro Elija la opción Añadir nuevo registro, o bien, pulse la combinación de teclas CTRL+Y. Se inserta un nuevo registro en la tabla que se está examinando. También es posible añadir registros desde la ventana Comandos emitiendo alguna de las sentencias: APPEND BLANK 16
  • 17. APPEND Cambiar el estado de la marca borrado Cuando un registro ya no se hace necesario se marca como borrado. Este es el paso previo a la eliminación de todos los registros marcados, cuyo proceso requiere el uso del comando PACK. Como es evidente, también se puede realizar esta acción como todas las demás, desde la ventana Comandos, mediante la sentencia DELETE Otra posibilidad interesante es alternar el estado del registro utilizando un cuadro situado al lado del marcador de registro. Pulsando alternativamente en este cuadro, modificamos el estado de la marca de borrado. Ir a un registro determinado Se puede ir a un registro determinado modificando la celda activa mediante el ratón y las barras de desplazamiento vertical, o el teclado mediante los cursores. Pero también se utilizar el submenú Ir al registro, cuyo contenido analizado es el siguiente: Opcion Primero Último Siguiente Anterior Registro número Descripción Va al primer registro de la tabla. Desde la ventana Comandos habría que utilizar: GO TOP Va al último registro de la tabla. Desde la ventana Comandos habrá que escribir: GO BOTTOM Posiciona el puntero de registro en el siguiente registro. Obteniendo el mismo resultado que utilizando esta sentencia desde la ventana Comandos: SKIP 1 Posiciona el puntero en el registro anterior. Desde la ventana Comandos: SKIP -1 Cambia el puntero de registro a un registro específico. Desde la ventana Comando habría que emitir la siguiente sentencia: GO nRegistro Encontrar Donde nRegistro es el número de registro donde se desea posicionar el puntero de registro. Encuentra el registro que cumpla la expresión de búsqueda. Veremos más adelante la sintaxis del comando 17
  • 18. LOCATE utilizado por esta opción de menú Continua... Curso de Visual Foxpro Entorno de Desarrollo de Visual Foxpro (III) (Diseñadores y Asistentes - La ventana Sesión de datos Manejo de Registros Borrados - Importación/Exportación de Datos - Asistente para importar datos - Formularios - Crear un Formulario Rápido) Búsqueda de registros Al realizar una consulta en busca de uno o varios registros que cumplan los criterios de búsqueda en una tabla es necesario aclarar algunos conceptos básicos. Por una parte, el ámbito donde se va a realizar la consulta, que puede restringirse a todos los registros de la tabla, los 10 siguientes o cualquier combinación válida. Por otra parte, existe el concepto de expresión de búsqueda. Una expresión de búsqueda se evalúa y compara con el registro activo. Si no se cumple la expresión de búsqueda, continúa con el siguiente registro, y así hasta llegar al final de la tabla. Se puede comprobar si una búsqueda ha tenido éxito observando en qué posición se encuentra el puntero de registro. Por último, esta búsqueda continúa mientras se cumpla una segunda expresión. Es decir, se recorre toda la tabla mientras esta expresión sea verdadera; en cuanto evalúe a falsa, finaliza la búsqueda, aunque no haya recorrido toda la tabla. Cuando se elige la opción Encontrar del submenú Ir al registro, se visualiza el cuadro de diálogo, que resume los tres conceptos que se acaban de perfilar. La utilidad de este cuadro de diálogo es construir a partir de la información introducida en el mismo una sentencia completa utilizando el comando LOCATE. Por tanto, lo que vaya introduciendo en este cuadro de diálogo se incorporará como argumento tras el comando LOCATE. Cuando se pulse en el botón de comando Encontrar, la sentencia LOCATE se emite desde la ventana Comandos. Veamos estos conceptos aplicados a la búsqueda de registros. Alcance 18
  • 19. El Alcance delimita la cantidad de registros que se van a procesar e incluso desde y hasta qué registro va a cubrir la búsqueda. Cuando se aceptan las modificaciones introducidas en este cuadro de diálogo se añaden los argumentos necesarios en la sentencia LOCATE. Alcance Argumento Descripción Todos ALL Incluye la totalidad de los registros en la búsqueda. El límite de búsqueda va desde el registro número 1 hasta el último. Siguiente NEXT n Incluye sólo los n registros siguientes al actual en la búsqueda. Es decir, especificando 10 en el cuadro de texto, incluirá sólo los 10 siguientes registros a partir del actual en la búsqueda. Por lo tanto, el límite se centra desde el registro actual hasta el número de registros especificados. Registros RECORD n La búsqueda se limita únicamente al número de registro especificado por este cuadro de texto. Restantes REST Comienza la búsqueda a partir del registro actual y continúa hasta el final de la tabla. Por tanto, el intervalo de búsqueda se limita desde el registro actual al último de la tabla. Cláusula FOR Este es el núcleo básico de toda sentencia de búsqueda. Veremos que hay multitud de comandos que pueden incorporar esta cláusula para delimitar aquellos registros que cumplen los criterios especificados por esta misma cláusula. Cuando se elige este botón de comando, se activa el generador de expresiones de Visual Foxpro. Esta es una herramienta de gran utilidad para la construcción de expresiones, desde la más simple hasta la más compleja. Veremos el generador de expresiones más ampliamente en secciones siguientes. Para confeccionar el ejemplo que veremos, ha bastado elegir el campo del cuadro de lista Campos. A continuación se ha escrito la comparación. Por tanto, estamos buscando aquel registro cuyo nombre de empresa sea igual a Centro, o al menos comience con esos caracteres. Cláusula WHILE La selección de registros efectuada mediante la cláusula FOR se refiere a toda la tabla por completo, y eso precisamente se diferencia de la cláusula WHILE. Esta última restringe el ámbito de búsqueda a que la expresión lógica incluida con esta cláusula sea cierta. En el momento en que no se cumpla la expresión, el comando que incluye esta cláusula finaliza inmediatamente. Por esta razón se puede decir que en este caso la búsqueda se realizará mientras se cumpliera la cláusula WHILE, finalizando la búsqueda cuando no se cumpliera, aunque no se hubiera recorrido toda la tabla. 19
  • 20. La ventana Sesión de datos Este cuadro de diálogo se utiliza como gestor para las tablas abiertas. Consta de dos cuadros de lista que visualizan, por una parte, las tablas abiertas y, por otra, las relaciones establecidas entre ellas. Cada tabla tiene asociadas una serie de propiedades a las cuales es posible acceder desde el botón de comando Propiedades. Asimismo, es posible abrir, cerrar tablas o establecer nuevas relaciones entre las tablas abiertas. Pero la función primordial puede ser la de examinar el contenido de la tabla seleccionada en el cuadro de lista Alias utilizando el botón de comando Examinar. La particularidad de esta opción reside en que se recupera el estado en que se cerró la ventana Examinar para esa tabla la última vez, incluyendo tamaño y posición de la ventana o el tipo y tamaño de la fuente utilizada. Modificar las propiedades de la Tabla Cuando se pulsa el botón de comando Propiedades, se accede al cuadro de diálogo utilizado para modificar las propiedades de la tabla abierta en el área de trabajo actual. Entre las opciones que se pueden controlar desde este cuadro se encuentra la posibilidad de activar un índice determinado, filtrar los registros de una tabla o restringir la información que se muestra en una ventana Examinar predeterminada. Búfer de datos El búfer de datos se activa si se elige la opción Activar almacenamiento en búfer de datos. Esto significa que los cambios que se efectúen sobre la tabla no serán actualizados en forma inmediata, y dependiendo del tipo de búfer de datos elegidos, son potencialmente descartables en un momento determinado. Siempre es posible cambiar el estado del búfer de datos, y de hecho, si no se indica lo contrario, la tabla no se abre inicialmente con ningún búfer de datos activo. Por tanto, si se desea utilizar el búfer de datos, es necesario activarlo desde este cuadro de diálogo, o bien, desde la ventana Comandos mediante la función DBSET PROP(). Selección de índice Desde este cuadro combinado se elige el orden activo para el área de trabajo actual. Se muestran en él todas las etiquetas del índice definidas para esta tabla. De este modo se pueden utilizar el comando SEEK y la función SEEK() para encontrar el registro que cumpla el criterio de búsqueda. Filtro de datos Desde el cuadro de texto o utilizando el generador de expresiones, llamado al pulsar el botón de comando, generamos una expresión de filtro de datos. Esto significa que cuando abramos una ventana Examinar para esta tabla, sólo se van a visualizar aquellos registros que cumplan la condición escrita aquí. Filtro de campos 20
  • 21. Del mismo modo que se establecen filtros para visualizar una parte de los datos presentes en una tabla, es posible realizar una acción análoga con las columnas definidas en una tabla. De este modo, sólo aparecen en la ventana Examinar aquellas columnas pedidas en esta opción. Examinar La Ventana Examinar tiene una serie de características interesantes, entre las cuales podemos destacar las siguientes: Modificar el aspecto de las columnas Las columnas de datos pueden cambiar su posición y tamaño. Definición de particiones Una Ventana Examinar puede dividirse verticalmente en dos particiones. Cada partición puede funcionar de forma independiente y presentar un aspecto distinto. Fuentes Cualquier fuente definida en Windows puede utilizarse para visualizar, en cualquier tamaño y tipo, información en una ventana Examinar. Abrir y Cerrar tablas Estos dos botones de comando permiten abrir y cerrar tablas. Cuando se pulsa en el botón de comando Abrir se selecciona la última área de datos activa y se abre en esa área. Si existe una tabla seleccionada en la lista de alias activo, el comando de cierre se refiere al área que está ocupando esa tabla. Establecer relaciones Si existen al menos dos tablas abiertas, es posible establecer relaciones entre ambas. La forma de establecer relaciones entre la s dos consiste en pulsar el botón de comando Relaciones teniendo una de las dos seleccionada en el cuadro de lista Alias. En ese momento, en el cuadro de lista Relaciones aparece la tabla elegida. Para establecer una relación entre las dos tablas es necesario saber qué campo de la tabla principal - la que se eligió en primer lugar - hay que buscar en la tabla secundaria. Eso es precisamente lo que se le pide al usuario cuando se establece una nueva relación. En primer lugar elegimos un campo de la tabla principal, y a continuación, el orden activo en la tabla secundaria. Manejar registros borrados La eliminación de registros puede realizarse de tres formas distintas, desde la ventana Examinar, utilizando el marcador de registros borrados; desde la opción Alternar marca de eliminación del menú Tabla, o bien, mediante el comando DELETE desde la ventana Comandos. 21
  • 22. El efecto inmediato es que el registro actual queda marcado para borrar y se requiere la posterior intervención del comando PACK, que elimina definitivamente de la tabla todos aquellos registros marcados para borrar. Recuperar registros Se puede alternar la marca de borrado de un registro determinado. Esto se consigue de tres formas distintas: desde la propia ventana Examinar, mediante la opción Alternar marca de eliminación, presente en el menú Tabla, o mediante el comando RECALL. Eliminar un conjunto de registros Para evitar la necesidad de ir marcando cada registro individualmente, se recurre al marcaje de varios registros de una vez. Para ello podemos utilizar la opción Eliminar registros del menú Tabla o bien el comando DELETE. Eliminar registros marcados Los registros marcados como borrados permanecen en la tabla hasta que no se invoca el comando PACK o se utiliza la opción Desmarcar registros del menú Tabla. La finalidad de este comando es eliminar físicamente todos los registros marcados. Después de efectuar esta operación no será posible recuperar los registros eliminados de ninguna forma. Uso de registros borrados A continuación se detallan todos los comandos y funciones relacionados con el uso de registros borrados. Comando/Función DELETE [Alcance] [FOR lExpresión1] [WHILE lExpresión2] [IN nÁreaTrabajo | cAliasTabla] [NOOPTIMIZE] DELETE FROM [NombreBaseDatos!]NombreTabla [WHERE CondiciónFiltro1 [AND | OR CondiciónFiltro...]] DELETE ([cAliasTabla | nÁreaTrabajo]) RECALL [Alcance] [FOR lExpresión1] [WHILE lExpresión2] [NOOPTIMIZE] PACK [MEMO] [DBF] SET DELETED ON|OF Descripción Borra uno o más registros de una tabla. Puede utilizarse el alcance o las expresiones FOR y WHILE para determinar el rango de registros a borrar. Marca registros para eliminar mediante SQL Indica si el registro actual está marcado para borrar. Recupera uno o más registros marcados para borrar. Puede utilizarse la cláusula de alcance o las expresiones FOR y WHILE para delimitar el rango de registro a recuperar. Elimina de la tabla activa todos los registros marcados para borrar. Indicando la cláusula MEMO compacta el espacio utilizado por el archivo de campos memo FPT. Si se incluye la cláusula DBF, se ignora la compactación del archivo memo. Indica si los registros marcados para 22
  • 23. ZAP [IN nÁreaTrabajo | cAliasTabla] BLANK [FIELDS ListaCampos] [Alcance] [FOR lExpresión1] [WHILE lExpresión2] [NOOPTIMIZE] borrar están disponibles cuando se utilizan otros comandos. Elimina todos los registros de la tabla especificada, estén o no marcados para borrar. Borra toda la información de uno o más registros sin marcarlos para borrar. Reemplazar valores en campos Mediante la ventana Examinar, tal como hemos ido viendo hasta ahora, es posible alternar el contenido de uno o más registros. Sin embargo, a veces se hace necesario modificar un grupo de registros de una vez sin necesidad de ir cambiando el valor de uno en uno. Para efectuar esta operación encontramos la opción Reemplazar campo en el menú Tabla. Esta opción muestra un cuadro de diálogo que permite efectuar este tipo de modificaciones masivas. Importación/Exportación de datos Tan importante como el dominio sobre los datos a los que podemos acceder mediante el gestor de tablas es la posibilidad de acceder a los datos contenidos en ficheros creados por otras aplicaciones. De esta forma podemos extraer información de los mismos, tratarla y, si resulta útil, enviarla de nuevo al tipo de datos de origen. Comando/Función EXPORT IMPORT APPEND FROM APPEND MEMO COPY TO Descripción Exporta datos de una tabla de Visual FoxPro a cualquiera de los tipos soportados. Importa datos desde un fichero de datos externo en alguno de los formatos soportados. Agrega registros de otra tabla al final de la tabla activa. Copia en un campo memo el contenido de un archivo de texto. Crea una tabla nueva a partir del contenido de la tabla activa. Importar datos Microsoft Visual FoxPro soporta los siguientes tipos de ficheros, de los cuales puede extraerse información si elegimos la opción Importar del menú Archivo: Tipo Microsoft Excel 5.0 (XLS) Descripción Esta opción permite importar datos de hojas de cálculo creadas con Microsoft Excel 5.0. 23
  • 24. Microsoft Excel 2.0, 3.0 y 4.0 (XLS) Lotus 1-2-3 3.x (WK3) Lotus 1-2-3 2.x (WK1) Lotus 1-2-3 1-A (WKS) Paradox 3.5 y 4.0 (DB) Symphony 1.10 (WR1) Symphony 1.01 (WRK) FrameWork II (FW2) Multiplan 4.01 (MOD) RapidFile (RPD) Esta opción importa datos de hojas de cálculo de Microsoft Excel Versiones 2.0, 3.0 y 4.0. Importa datos procedentes de una hoja de cálculo realizada con Lotus 1-2-3 versión 3.x. Importa datos procedentes de una hoja de cálculo realizada con Lotus 1-2-3 versión 2.x. Importa datos procedentes de una hoja de cálculo realizada con Lotus 1-2-3 versión 1-A Importa datos procedentes de la base de datos Paradox en su versión 3.5 y 4.0. Permite importar datos procedentes de la hoja de cálculo del paquete integrado Symphony versión 1.10. Permite importar datos procedentes de la hoja de cálculo del paquete integrado Symphony versión 1.01. Permite importar datos procedentes de la hoja de cálculo del paquete integrado FrameWork II. Permite importar datos procedentes de la hoja de cálculo Multiplan versión 4.01. Importa datos procedentes de RapidFile Asistente para importar datos Este asistente es adecuado en aquellas ocasiones en las que se necesita moldear algunos aspectos de la importación de datos. Este sencillo pero potente asistente permite especificar el origen y destino de los datos, ver qué datos se están importando directamente y especificar el nombre y tipo de cada uno de los campos que se están importando. Paso 1. Archivos de origen y de destino. En este primer paso especificamos el tipo de fichero de datos del que se van a extraer los datos. A continuación se indica el fichero de datos y, por último, el nombre de la tabla sobre la que se van a copiar los registros importados. Paso 2. Determinar el formato de los datos En este se puede tener una vista previa de la información que se pretende importar. Esto es importante, pues permite identificar correctamente los datos que pretendemos insertar, ya que podemos volver atrás y especificar otro origen de datos en cualquier momento. Paso 3. Definir campos importados Antes de efectuar la importación de datos podemos ver la estructura de la información. Esta pantalla permite el cambio de los siguientes parámetros: Nombre, Tipo, Ancho y posiciones Decimales. Paso 3ª. Especificar opciones internacionales. 24
  • 25. A la vista de la información, se puede alternar unas cuantas propiedades de la información a importar. Por ejemplo, si se ha especificado un archivo de texto como origen de datos, podemos modificar diversos aspectos de esta transformación, tal como especificar el carácter separador de campos. Formularios. Introducción En principio, la ventana Examinar puede se suficiente herramienta para la visualización y modificación de tablas, pero, además, podemos utilizar formularios para dar una presencia más útil y versátil a la misma información. Los formularios contienen cualquier tipo de control, desde etiquetas, pasando por cuadros de texto, cuadros de edición, hasta cuadros combinados o cuadros de lista. Existe un número suficiente de controles disponibles de forma estándar, pudiéndose ampliar esta lista con controles diseñados por el propio usuario o controles universales OCX. Un formulario tiene asociado un entorno de datos que permite abrir y cerrar de forma automática las tablas que el mismo formulario necesita. Incluso es posible utilizar el resultado de consultas de una base de datos. Otra característica importante relativa a los controles insertables en un formulario es la vinculación que pueden mantener con un origen de datos. Esto quiere decir que un control puede visualizar y editar directamente el contenido de un campo de una tabla. Por ejemplo, podemos definir que un cuadro de lista edite el campo relativo al nombre de un producto definido en la tabla Productos, o una casilla de verificación indicando si ese producto dispone de existencia suficientes. En definitiva, se trata de visualizar información de forma que el usuario identifique claramente el tipo de información que necesita para tomar decisiones. Crear un formulario rápido La forma más sencilla de crear formularios es, en principio, recurrir al asistente para la creación de formularios. Puede llamar a este asistente cuando crea un nuevo formulario, o bien desde el menú Asistentes, escogiendo la opción Formulario. Como datos básicos, tal como se va a comprobar a continuación, este asistente sólo necesita una tabla y qué campos de la misma van a participar en la generación del nuevo formulario. El orden en el que van a figurar en el formulario definitivo depende del orden que se vayan eligiendo desde el cuadro de lista Campos disponibles hacia el cuadro de lista Campos seleccionados. Paso 1. Selección de campos El primer paso consiste en la elección de tabla y campos. Como dato esencial se necesita una tabla, de la cual se van a tomar las definiciones de determinados campos con el fin de confeccionar controles para su visualización y edición desde el nuevo formulario. Como dato interesante se puede comentar el hecho de que este generador utiliza como etiquetas de campo, es decir, el texto que figura delante de cada uno de los controles de edición, el encabezado que se haya definido en la base de datos si la tabla pertenece a una. Paso 2. Estilo 25
  • 26. Existe una serie de estilos predefinidos que el asistente utiliza como patrón en el momento de generar el aspecto visual general del formulario y cada uno de los controles que lo contienen. Esta prestación se completa con la posibilidad de elegir botones de comando gráfico o de texto. Estos botones de comando situados en la parte inferior del nuevo formulario permiten mover el puntero de registro del primer al último registro, o bien, al anterior o siguiente con respecto al registro que se está visualizando actualmente. Pueden, además, insertar o eliminar registros de la tabla. Paso 3. Orden. Si la tabla no dispone de una secuencia de ordenación, lo que hace este paso es permitir crear una a partir de hasta tres campos de la tabla origen de datos. Este orden será utilizado en los desplazamientos hacia atrás o adelante cuando se utilizan los botones de comando de desplazamientos por registros. Paso 4. Finalizar Como información final, el asistente necesita saber el título del formulario y qué deseamos hacer con él. A este último respecto tenemos tres opciones: guardar el formulario para poder ejecutarlo o modificarlo posteriormente, generar y ejecutar el formulario o bien, y por último, generar el formulario y modificarlo mediante el generador de formularios. Antes de elegir cualquiera de las tres opciones, podemos ver una presentación del formulario en proceso de generación, con el fin de alterar cualquier información de las que se han definido en los tres pasos anteriores. Ejecutar el nuevo formulario Una vez que se ha generado el formulario y tras realizar unas pequeñas modificaciones podemos obtener un formulario. Como se podrá observar, en la parte superior del formulario figura el título elegido para el mismo: Empleados Macros Existen multitud de situaciones donde repetimos hasta la saciedad la misma secuencia de teclas: al abrir un proyecto, al abrir una pantalla, al compilar, etc. Las macros pueden ayudar a que la secuencia de teclas que tengamos que utilizar se reduzca lo más posible y de esta forma aprovechemos mejor el tiempo. Las macros permiten grabar secuencias de caracteres y asociarlas a una combinación de teclas. De esta forma, la pulsación de esta combinación de teclas a posteriori ejecuta la secuencia de caracteres guardada. Las Macros de sistema Quizá la macro más conocida, pero no por ello reconocida como tal, sea F1, utilizada para activar la ayuda de sistema. Existen otras macros más que vamos a ver 26
  • 27. a continuación y que son las que incorpora Visual FoxPro en el momento de ser instalado: Macro Descripción Acción F2 Abre la ventana Sesión de Datos Ejecuta la siguiente secuencia de teclas: SET (INTRO). Es decir, escribe en la ventana de comandos el comando SET y a continuación la tecla INTRO. F3 Lista los registros de la tabla activa por pantalla Ejecuta la siguiente secuencia de teclas: LIST (INTRO). Tal como hemos visto en la macro anterior, escribe en la ventana de comandos el comando LIST y a continuación la tecla INTRO. F4 Efectúa un directorio por pantalla Ejecuta la siguiente secuencia de teclas: DIR (INTRO). F5 Muestra la estructura de la tabla activa por pantalla Ejecuta la siguiente secuencia de teclas: DISPLAY STRUCTURE (INTRO). F6 Muestra el estado del sistema por pantalla Ejecuta la siguiente secuencia de teclas: DISPLAY STATUS (INTRO). F7 Muestra el contenido de la memoria por pantalla Ejecuta la siguiente secuencia de teclas: DISPLAY MEMORY (INTRO). F8 Muestra el contenido del registro actual de la tabla activa por pantalla Ejecuta la siguiente secuencia de teclas: DISPLAY (INTRO). F9 Abre la ventana de inserción de nuevos registros en formato ficha de la tabla activa Ejecuta la siguiente secuencia de teclas: APPEND (INTRO). ¿Cómo grabar una macro? Es muy sencillo; para ello basta con pulsar las teclas MAYÚSCULAS-F10. Visualizamos un cuadro de diálogo pidiendo la combinación de teclas a la cual vamos a asociar la secuencia de teclas que están a punto de ser grabadas. Es decir, cada vez que pulsemos la secuencia de teclas que se indica en este momento, se repetirá las teclas pulsadas a continuación de la salida de este cuadro de diálogo. Cuando pulsemos Aceptar en este cuadro de diálogo, todas las teclas pulsadas quedarán registradas en la macro llamada Control-Alt-F, invocada siempre que se pulse la combinación de teclas CTRL-ALT-F. Conozcamos los nombres de cada una de las teclas para poder identificarlas correctamente. Nomenclatura de teclas Tecla Nombre  LEFTARROW 27
  • 28.  RIGHTARROW  UPARROW  DNNARROW Inicio (Home) HOME Fin (End) END AvPág (Page Up) PGUP RePág (Page Down) PGDN Sup (Del) DEL Borrar (Backspace) BACKSPACE Borrar espaciadora (Spacebar) SPACEBAR Ins INS Tabulador TAB Retroceder tabulador (Shift Tab) BACKTAB Intro (Enter) ENTER F1 a F12 F1, F2, F3 ... Ctrl+F1 a Ctrl+F12 Ctrl+F1, Ctrl+F2... Shift+F1 a Shift+F12 Shift+F1, Shift+F12... Alt+F1 a Alt+F12 Alt+F1, Alt+F2, Alt+F3... Alt+0 a Alt+9 Alt+0, Alt+1, Alt+2... Alt+A a Alt+Z Alt+A, Alt+B, Alt+C... Ctrl+ Ctrl+LEFTARROW Ctrl+ Ctrl+RIGHTARROW Ctrl+inicio Ctrl+HOME Ctrl+Fin Ctrl+END Ctrl+AvPág Ctrl+PGUP Ctrl+RePág Ctrl+PGDN Ctrl+A a Ctrl+Z Ctrl+A, Ctrl+B, Ctrl+C... Botón derecho ratón RIGHTMOUSE Botón izquierdo ratón LEFTMOUSE Cualquier botón del ratón MOUSE Esc ESC ¿Cómo visualizar y editar las macros activas? Para acceder al cuadro de diálogo para el mantenimiento de macros elija la opción Macros del menú Tools. Se visualiza una ventana, esta ventana está subdividida en los siguientes elementos:  Lista de macros definidas. Este cuadro de lista visualiza los nombres de las macros definidas en este momento en el sistema. Cada elemento de la 28
  • 29. lista visualiza el nombre que se le ha dado a la macro, no la tecla que invoca a la misma, aunque normalmente suele coincidir el nombre que se le da a la macro con la combinación de teclas que la ejecuta.  Grabar. Inicia la secuencia de grabación de una macro. Es similar a la pulsación de las teclas MAYÚSCULAS+F10.  Nueva. Crea una macro nueva.  Editar. Edita el contenido de una macro existente.  Borrar. Borra una macro definida.  Conjunto de macros. Los botones de comando definidos en esta zona permiten recuperar un conjunto de macros guardadas en un fichero, salvar las existentes en un fichero o hacer que las macros definidas en este momento sean las predeterminadas cada vez que se arranca Visual FoxPro. Grabación de macros Este ejemplo trata de una macro para crear un nuevo proyecto cada vez que se pulsa la tecla F3. Se puede iniciar la secuencia de grabación de la macro de dos formas:  Pulsar la combinación de teclas MAYÚSCULAS-F10.  Escoger del cuadro de diálogo que aparece al pulsar Tools-Macros la opción Record. En cualquier de los dos casos se visualiza el cuadro de diálogo correspondiente. A continuación pulsaremos F3 para que quede registrada como tecla de inicio de la macro. Como nombre de macro la vamos a llamar NuevoProyecto. Dado que ya existe la macro F3 definida en el sistema, vemos una ventana de alerta advirtiendonos esta circunstancia. Esta ventana admite tres repuesta totalmente distintas: a) Sobrescribir. Esta será la acción lógica que escogeremos para continuar con este ejemplo. Vamos a sobreescribir el contenido de la macro F3 con las teclas que vamos a dejar registradas a continuación. b) Añadir pulsaciones. Como veremos más adelante, es posible añadir a una macro existentes nuevas pulsaciones al final de la misma. c) Cancelar. Cancela la grabación de la macro. Desde el momento en que hemos pulsado sobre el botón de comando Sobrescribir, todas las teclas que se pulsen a partir de ese momento quedarán registradas en la definición de la macro NuevoProyecto. El objetivo de esta macro es escribir de forma automática en la ventana de comando la instrucción CREATE PROJECT y a continuación la tecla Intro.  Para asegurar que vamos a escribir en la ventana de comandos, la activamos mediante CTRL-F2. Por tanto pulsamos: Ctrl-F2 29
  • 30.  A continuación, sobre la ventana de comando, continuamos escribiendo la instrucción CREATE PROJECT y por último pulsamos Intro. Cuando se haya pulsado intro, se visualiza el cuadro de diálogo de apertura de ficheros. En este momento y para finalizar la grabación de la macro, volvemos a pulsar MAYÚSCULA-F10. Vemos el cuadro de diálogo:  Insertar literal. Inserta en la definición de macro la tecla tal cual se ha pulsado.  Insertar pausa. Este botón de comando permite insertar una pausa en la macro de dos formas distintas:   Tecla para reanudar: Cuando se inserta una pausa de este tipo en una macro, ésta no reanuda su ejecución hasta que no se pulsa una tecla. Segundos. Esta pausa paraliza momentáneamente la macro los segundos especificados en el control numérico. Pulsamos Aceptar y finalizamos la grabación de la macro. De esta forma, cada vez que deseemos crear un fichero nuevo de proyecto, tan sólo tendremos que pulsar F3. Edición de macros Dado que a veces es difícil recordar la secuencia de teclas que conducen a realizar una acción, es posible que cometamos errores. No hay problema, puesto que es posible introducir nuevas pulsaciones o eliminarlas en cualquier lugar de la macro. Para modificar el contenido de una macro, sigamos los siguientes pasos: 1. Elija la opción Macros del menú Herramientas. 2. Seleccione de la lista de macros definidas la que desee modificar. Para editar la macro, pulse el botón de comando Editar. Aparecerá un cuadro de diálogo. En el ejemplo anterior habíamos creado una macro (NuevoProyecto) que se activaba mediante la pulsación de la tecla F3. Veamos su contenido: (CTRL+F2)CRATE(SPACEBAR)PROJECT(ENTER). Tal como se grabó, en primer lugar detectó la pulsación de la combinación de teclas CTRL+F2 para asegurar que escribíamos en la ventana comando. A continuación, el texto CREATE PROJECT separado por un espacio, y finalmente, la tecla INTRO. Continua... 30
  • 31. 31
  • 32. Laboratorio Nº 1 Objetivo: Creación de tablas libres y dependientes, Bases de Datos, Relaciones temporales y permanentes, Integridad Referencial. (El usuario debe tener Instalado en su PC. Visual FoxPro 5.0) Nota: Sr. Usuario siga la secuencia paso a paso, mayormente todo será vía menú . 1.- Cargando el Sistema desde Windows 98/95: Haga Click en Menú:  Inicio  Programas  Microsoft Visual FoxPro  Microsoft Visual FoxPro 5.0 Carga completada (Esto debe estar observando en su pantalla), luego digite en la Ventana de Comandos: RUN MD C:PRACTICA <Enter> Esta orden: Crea una Carpeta SET DEFA TO C:PRACTICA <Enter> “ : Activa Carpeta por Defecto 2.- Creación de una Tabla Libre Nos proponemos ahora, crear una tabla Libre, para lo cal Ud. Haga: Click en las siguiente opciones desde el Menú Principal: Archivo Nuevo () Tabla Nuevo Archivo Ver la siguiente Figura (Pag. 2) 32
  • 33. Viendo la pantalla de la derecha, Seleccione la carpeta donde desea guardar su tabla. Guardar en: PRACTICA Nombre de la Tabla: CLIENTES Guardar como tipo: Tabla /DBF Luego Click en Guardar En las siguientes líneas tiene Ud. La estructura de la tabla Clientes. CLIENTES.DBF Nombre de Campo ClieCod ClieNom ClieApe ClieDir ClieRuc Tipo C C C C C Ancho 3 40 40 40 8 Decimales Descripción Código del Cliente Nombre del Cliente Apellidos: Paterno y Materno Dirección del Cliente Número de RUC del Cliente En esta pantalla es donde Ud. Va ha diseñar la estructura de la tabla. Adelante Ud. Nota: No presione ENTER, si desea pasar, de una línea a otra. VFP, puede interpretar, que ya, a terminado. Para este fin utilice la tecla TAB ó el MOUSE. Después de haber terminado, Haga Click en: ACEPTAR Aparecerá la siguiente consulta: 33
  • 34. Responda afirmativamente, haciendo Click en Sí. Luego, ingrese par de registros. TABLAS DEPENDIENTES Las siguientes tablas, cuya estructura se muestra en la parte inferior, las vamos a crear como tablas dependientes. ARTICULO.DBF ArtCod ArtNom ArtPre ArtStock ArtFoto C C N N G FACTURAS.DBF 3 25 7 5 4 2 0 NumFac FecVen ArtCod ClieCod Cant PreVen C T C C N N 5 8 3 3 5 8 2 Para lo cual, debemos crear primero la BASE DE DATOS a quien va estar asociado, nuestras tablas. Creación de una Base de Datos Crearemos nuestra Base de Datos, haciendo Click, en las siguientes opciones, iniciando desde el MENU PRINCIPAL. Click en: (En otras latitudes dicen Pinchar, en lugar de decir Click:) Archivo Nuevo (*) Base de Datos Nuevo Archivo Aparece el gráfico de la derecha, Digitar en: Base de datos: Ventas Luego Click en: Guardar Luego aparecerá el gráfico de la parte inferior. Creación de una Tabla Dependiente Para crear tablas dependientes, de nuestra Base de datos, existen muchas formas, pero una de ellas, es del siguiente modo: Llevamos el Mouse sobre el área libre de la Base de Datos y luego, presionamos el Botón Derecho de la misma. En el menú contextual, eligimos: Nueva Tabla, y otra vez Click en Nueva Tabla 34
  • 35. Asignar nombre de tabla: ARTICULO Luego Click en: GUARDAR Observe el gráfico inferior y diseñe la estructura de las tablas dependientes, las estructuras se encuentran en la página anterior. Nota: Observe este gráfico y la de Clientes ( Página 2), ambos son de creación de estructuras, pero tienen una marcada diferencia. Finalmente, cuando haya terminado a crear la estructura. Haga Click en opción: Aceptar e introduzca los datos correspondientes ( dos registros como mínimo). Ahora, usando los pasos anteriores se le pide a Ud. Crear la tabla: FACTURAS.DBF Al final de un trabajo arduo, Ud. deberá llegar a la siguiente presentación: 35
  • 36. En estos momentos tenemos Articulo y Facturas como se observa en el gráfico anterior, pero al inicio habíamos creado CLIENTES.DBF, como una tabla libre, el cual ahora desearíamos que forme parte de nuestra Base de Datos de nombre Ventas, para tal fin haremos los siguientes pasos: Conversión de Tabla Libre en Dependiente Click en:  Botón Derecho del Mouse, sobre el diseñador de Base de Datos  Agregar tabla  Doble Click en Clientes (Opción del Menú Contextual) Luego tendremos, como muestra la sgte. figura: Relaciones: Con la finalidad de manipular simultáneamente, datos de las tres tablas, debemos relacionar estas. Para ello, no debemos olvidar, las dos condiciones principales para la existencia de Relaciones: 1. Se debe garantizar existencia de Campos Claves ó Llaves, entre las tablas participantes (datos iguales ó coincidentes, del mismo tipo y aveces del mismo tamaño. Pero no necesariamente con nombres iguales). 2. Se debe indexar las tablas por su campo clave: - Tablas hijo de tipo principal ó Candidato, y - Tablas padre de tipo Normal (Aquí, sobre todos sus campos claves) El autor duda de su comprensión. Por tanto, antes de continuar le interrumpe para hacerle la siguiente consulta: 36
  • 37. Entre Clientes y Facturas. ¿A qué campos de ellas, los podría considerar como campos Claves? ....................... y .........................., ............................................................................................. ¿Y porqué? En el cuadro inferior, escriba los campos claves de las tablas, asimismo identifique tablas hijo y Padre Nombre Tabla Nombre del Campo Clave tipo de tabla (Padre ó Hijo) Clientes.dbf ........................................ .................................. Articulo.dbf ......................................... .................................. Facturas.dbf ......................................... .................................. INDEXACION: Dada las reglas anteriores y cumpliendo exactamente, iniciamos a indexar las tablas. Como un ejemplo, de qué manera se realizan, se hace aquí una indexación, para la tabla CLIENTES. Nota: Para el resto de las tablas, el usuario, deberá seguir la misma secuencia. Es aquí donde el usuario podrá usar su razonamiento y su habilidad de comprensión. Caso contrario, puede volver a leer las líneas anteriores. Indexación de Clientes.dbf 1. Ubicar el puntero del Mouse sobre la tabla Clientes y presionar el botón Derecho del Mouse 2. En el menú Contextual, hacer Click sobre: Modificar 3. Hacer Click en la ficha: índices (ver fig. inferior) 37
  • 38. 3. Digitar el nombre de la etiqueta (Tag) para nuestro archivo índice (ver graf.). Asignamos por ejemplo el mismo nombre del campo (aunque no siempre debe ser así). Digitar: Cliecod 4. Seleccionamos el tipo de índice, sabemos que Clientes es tabla hijo, por tanto que sea: Principal 5. ... 6. El ficha de Expresión, podemos Digitar, la expresión ó el nombre del campo, por el cal deseamos, que nuestra sea indexada. Pero mucho mejor Es hacer Click en: (Punto Punto) que se encuentra al costado de expresión. Llegamos a la ventana que se muestra en la siguiente página. Aquí usando: Funciones (matemáticas, lógicas, fecha y Cadena), Variables y Campos, podemos preparar una expresión índice, por muy complicadas que este fuera. Nuestro caso Es sencillo. Hacemos Doble Click sobre el campo: ClieCod de la lista de campos. 7. Hacemos Click en: Aceptar de esta ventana de expresiones. 8. Habremos vuelto a la ventana anterior, en ella también hacemos Click en: 38
  • 39. Aceptar que se encuentra en esta ventana. Venta de expresión Finalmente Visual FoxPro, nos hace la siguiente consulta: Podemos responder Afirmativamente. De esta manera, habremos indexado, la tabla Clientes. Observe su pantalla. La tabla Clientes tiene un índice que se muestra identificado por una llavecita, por ser de tipo principal. 39
  • 40. Ahora, Ud. tiene la dura tarea de indexar, las otras tablas (Articulo y Facturas). Al final del camino, como alumbrase una luz. Deberá mostrar una figura, como se muestra en la parte derecha. Así, hemos terminado el tema de índexaciones. Ahora nos toca hacer la Relación. (2)Ejecución de la Relación Haga Click en:  Indice ClieCod de Clientes y arrastre hacia el índice ClieCod de Facturas y libere el Mouse. (esto es arrastrar la etiqueta de índice hijo hacia el padre).  Haga similar con el índice ArtCod de Articulo y arrastre Luego debe una presentación similar a la siguiente gráfica 40
  • 41. Bueno, hasta aquí parece que todo va bien. Después de tanto trabajar, no quisiéramos que el resultado sea un desastre. Por ello, primero vamos a verificar los datos de los campos claves. Para ello haga doble Click en cada una de las tablas y con la ayuda del Mouse, puede mostrar igual que en pantalla inferior, las tablas abiertas. Así asegurése que haya datos comunes ó iguales en los campos claves, tanto en la tabla padre e hijos (ver figura) Finalmente para poder mostrar ó examinar la información de la Base de Datos (anteriormente preparados) vamos ha crear una Vista rápida. Es de notar que no podemos usar con toda elegancia el comando Browse, como lo hacíamos ante una relación temporal. CREACION DE VISTA: Las vistas como un archivo virtual, se crean ejecutando la siguiente secuencia: Desde menú principal. Haga Click en: Archivo Menú Principal Nuevo Submenú del menú Archivo () Vista Nuevo Archivo Tipo de archivo a crear Vista personalizada. 41
  • 42. Ahora aparece una ventana, mostrando las tablas origen para la vista a preparar, haga:  Doble Click en :   Clientes Luego las tablas hijo.   Facturas Articulo Después hacemos Click en : Tabla padre Cerrar En la ficha Campos, seleccione, los siguientes campos, haciendo:  Doble Click en:  Facturas.Numfac  Facturas.ArtCod  Facturas.Cliecod  Facturas.Cant  Facturas.Preven   Articulo.ArtPre  Articulo.ArtStock  Clientes.ClieNom  Clientes.ClieApe  Clientes.ClieDir Articulo.Nom Debe mostrarse un gráfico similar. Preparada la vista y seleccionada los campos, lo que esperamos es ejecutar, para ver el resultado. 42
  • 43. Existen varias maneras, pero la más fácil, es talvez, hacer click en el símbolo (  ) (Signo de Admiración) Que se encuentra en la Barra de herramientas. Otra forma es presionar Botón Derecho y ejecutar Consulta Mas o menos así debe ser el resultado, si no observa ningún dato en esta ventana, debe haber fallado: bien en los campos claves , en la preparación de índices ó talvez en el arrastre de etiquetas. Puede volver a revisar y luego ejecutar la vista. Fin del laboratorio 43
  • 44. Laboratorio Nº 2 Objetivo: Creación de Vistas y Consultas y comparación entre ellas 1.- Cargando Visual FoxPro desde el Sistema Oper. Windows 98 Haga Click en Menú:  Inicio  Programas  Microsoft Visual FoxPro  Microsoft Visual FoxPro 5.0 2.- Abrir Una Base de Datos Ventas Hacer Click en: Archivo Abrir  En Buscar en: seleccione la carpeta: Practica.  En: Archivos de tipo: seleccione: Base de Datos (*.dbc) Luego haga doble Click en: Ventas . 44
  • 45. La siguiente pantalla, muestra la base de datos VENTAS, abierta. Similar como hicimos en el primer laboratorio, vamos a crear vistas. CREACION DE VISTA: Haga Click en: Archivo Nuevo () Vista (ver gráfico) Nuevo Archivo En la siguiente pantalla se observa, a seleccionar la clase del fuente para vista a crearse (tablas ó de vistas anteriores) 45
  • 46. Asumiendo que se van ha crear vistas desde tablas, haga doble Click en: Facturas, luego en: Clientes y Articulo.  Finalmente haga Click en Cerrar En la siguiente página, tenemos el generador de vistas. Ya conocida en el laboratorio anterior 46
  • 47. Nota: Las tablas fuente (facturas, Clientes y Articulo), no deben repetirse, si eso no fuera el caso, borrar la tabla que se está cargado mas de una vez . Debajo de las tablas, se podrá observar las fichas: Campos, Combinación, Filtro, ordenar por, Agrupar por, Criterio de actualización y Varios.  En la Ficha Campos: Seleccionemos los siguientes campos:  Facturas.Numfac  Facturas.ArtCod  Facturas.Cliecod  Facturas.Cant  Facturas.Preven  Articulo.ArtPre  Articulo.ArtStock  Clientes.ClieNom  Clientes.ClieApe  Clientes.ClieDir  Articulo.Nom Haciendo doble CLICK en la misma.  Para probar que todo va bien, haga Click en Botón EJECUTAR ( ! ) de la barra de herramientas. ó presione Botón Derecho y Ejecutar Consulta Nota: Si no observa ningún dato, revisar datos del campo clave (en la BD) ó la relación y los índices Si cree conveniente, antes de iniciar a usar las fichas, puede pedir al Asistente del Lab., una breve explicación de la función de cada una de las fichas. Caso que Ud. Es un autodidacta, puede recurrir al material bibliográfico. Ejm. Rubén Iglesias Esta podría ser una breve explicación: Ficha: Combinación.- Muestra el tipo de enlace entre tablas: Interna, Izquierda, Derecha y Full Filtro .- Especifica la condición que debe cumplir los registros a visualizar. Ordenar por .- Provee opción de clasificar en forma ascendente ó descendente. Agrupar por .- Facilita crear grupos de datos Criterios de Actualización.- ofrece las maneras como se debe actualizar nuestros datos Varios .- Si serán afectados todos los registros y los duplicados. En la siguiente página, usaremos la ficha filtro, para realizar ó resolver las ciertas interrogantes. 47
  • 48. Tales como: deseamos saber qué artículos han sido facturadas un día viernes a las 10 de la mañana, cuantas ventas se transaron con precio inferior al costo de compra, etc. Extracción de Datos:  Hacemos Click en ficha FILTRO  En nombre de campo seleccionamos un campo ó preparamos una expresión.  En Criterios asignamos el operador.  En ejemplo completamos la condición Ejm: Facturas.Cant = 50 (ver gráfico) Esta condición significa, que deseamos observar o mostrar aquellos Artículos facturados, cuya cantidad sea igual a 50 unidades. Para ver ejecutamos haciendo:  Click en botón EJECUTAR, y la siguiente sería un ejemplo: Ahora, estimado usuario, después de una amena explicación, creo que está en la posibilidad 48
  • 49. de resolver, las siguientes interrogantes, sobre nuestra base de datos. Mostrar: Artículos facturados con las siguientes condiciones: 1. Cuyo Nombre del artículo empiece con la letra “A” 2. Cuya fecha de venta sea un Viernes 3. Cuya cantidad sea mayor que 30 y stock menor ó igual a 20 4. Tenga hora de venta a las 10 de la mañana 5. Fecha de venta Viernes 13 a las 08 de la mañana, ordenado por fecha. 6. Fecha de venta 28 de Julio a las 10:30 AM (Es un buen peruano, que trabajó este día) 7. Precio de Compra sea mayor que precio de venta (Remate) 2.- Retire todas las condiciones, y en la ficha agrupar por, elija Nombre del Cliente para agrupar, y Ejecute. Luego diga sus observaciones y conclusiones. Terminada nuestra labor, hacemos click en botón cerrar de la ventana vista. Ante consulta anterior, responda afirmativamente (Sí) y luego asigne un nombre, para vista (ejm. Vista1). Finalmente haga Click en Aceptar. CREACION DE CONSULTAS Las consultas, a diferencia de vistas, son archivos reales. Para crear consultas hacemos: 49
  • 50. Click en:  Archivo  Nuevo  () Consulta  Nuevo Archivo  Similar que en Vistas, hacemos doble en:   Clientes y   Facturas Articulo Seleccione los siguientes campos:  Facturas.Numfac Clientes.ClieApe  Facturas.FecVen Clientes.ClieDir  Facturas.ArtCod Articulo.ArtNom  Facturas.Cliecod Articulo.ArtPre  Facturas.Cant Aritculo.ArtStock  Facturas.PreVen  Clientes.ClieNom  Haga Click en Ejecutar de la Barra de herramientas, observe y cierre el previo.  Haga Click en Consulta del Menú principal  Luego en opción: Ver SQL SELECT Facturas.numfac, Facturas.fecven, Facturas.cant, Facturas.preven,; Clientes.clienom, Clientes.clieape, Clientes.cliedir, Clientes.clieruc,; Articulo.artnom, Articulo.artpre, Articulo.artstock; FROM ventas!clientes INNER JOIN ventas!facturas; INNER JOIN ventas!articulo ; 50
  • 51. ON Articulo.artcod = Facturas.artcod ; ON Clientes.cliecod = Facturas.cliecod  Haga Click en Consulta del menú principal  Click en Opción: Destino de Consulta Observamos que por defecto está seleccionado destino Examinar para la consulta. 1. Seleccionamos Cursor  Asignamos un nombre (ejm): UNI  Click en Aceptar, luego  Click en Ejecutar ¿Llegó a observar algo?, Continue 2. Haga Click en Menú: Consulta Destino de la Consulta, y Seleccione Tabla, en esta oportunidad.  Asigne nombre (ejm): CEPS  Click en Aceptar  Click en Ejecutar ¿Esta vez sí observó, algo?. Talvez tu respuesta es NADA. 51
  • 52. En verdad tiene razón, la respuesta es que, en la primera vez ha creado una tabla temporal (Cursor) y ha enviado a la memoria del computador. Y la segunda ha creado una tabla, que por su puesto debe haberse guardado en el disco duro, en la carpeta por defecto de su computador. Como comprobar lo que se dice? Paso 1.- Haga Click el menú Ventana (Menú principal), luego en Sesión de Datos. Vea si existe tablas UNI y CEPS cargadas en diferentes áreas. (justificada su existencia) Paso 2.- Presione la combinación de teclas: Ctrl+F2 Digite: DIR y presione Enter Tenga Presionado simultáneamente las teclas: Ctrl+Shift+Alt (Debe estar observando la existencia del CEPS.DBF) Interrogante: No se observa UNI que sucede? ó ¿que es realmente UNI? 3. Consulta, Destino de la Consulta, Pantalla (Observando datos en toda la pantalla)   Ejecutar  4. Aceptar Ctrl+Shift+Alt Consulta, Destino de la Consulta, Informe (Generando Informes vía Consulta)  Haga Click en Barra de Asistente ( a la derecha de: Abrir informe.. ver gráfico anterior)  Se observa una pantalla con tres opciones, ubique el 52
  • 53. cursor sobre: Asistente para Informes, y haga Click en: Aceptar. Tendremos la siguiente figura.  Seleccione todos los campos de: Articulo, haciendo Click en doble Flecha, luego click en: Siguiente  Seleccione el estilo de informe que desearía preparar y luego haga Click en: Siguiente  Puede cambiar si gusta: Número de Columnas, distribución de campos y Orientación del papel, luego haga Click en: Siguiente  Puede Ordenar los artículos, ejm: por nombres, para ello haga doble Click en ArtNom, Ascendente y Click en: Siguiente  Click en: Presentación Preliminar Eh aquí algo de presentación preliminar de un reporte 53
  • 54. 5. Por ahora hasta aquí el Laboratorio, si el tiempo ya no lo permite. 6. Archivo, Quit Fin del Laboratorio 2 Gracias... Laboratorio No 03 Objetivo: Crear un informe personalizado, simples y con quiebres ó grupos. 54
  • 55. Abrir Base de Datos ventas 0. Click en: Archivo, Abrir, Tipo de archivo: Base de Datos, luego doble Click en Ventas. Creación de Vistas Deseamos preparar, tres informes, para lo cual vamos ha crear tres vistas: 1. Crear una vista con los siguientes campos:  Facturas.numfac  Facturas.fecven  Facturas.cant  Facturas.preven  Clientes.clienom  Clientes.clieape  Clientes.cliedir  Clientes.clieruc  Articulo.artnom  Articulo.artpre  Articulo.artstock; 2. Ejecutar y guardar presionando Ctrl+W, asigne nombre Vista01, luego haga Click en Aceptar. 3. Cree otra vista, esta vez agregar el campo Facturas.ClieCod a la lista anterior. Ingrese a la ficha: Ordenar por, haga doble Click en Cliecod, Ejecutar y Guardar (presionando Ctrl+W ) con el nombre Vista02 4. Crear otra Vista usando los mismos campos anteriores, pero esta vez ordenar por los campos: FecVen, ClieCod y NumFac (para ello haga primero Doble Click en: FecVen, luego en ClieCod y finalmente enNumFac) y guarde como Vista03. 55
  • 56. Aquí se observan las tres vistas, que nos servirán para preparar nuestros informes. CREACION DE INFORMES Para crear nuestro informes, iniciamos haciendo: Click en: 1. Archivo 2. Nuevo 3. () Informe 4. Nuevo Archivo. En la siguiente pantalla se muestra el diseñador de informes, las bandas y el menú contextual Diseñador de Informes compuesta de tres Bandas (ver gráfico). Necesitamos indicar el origen de datos para nuestro informe, para lo cual vamos damos la secuencia a seguir: 1. En el área del diseñador, presione Botón Derecho 2. En el menú contextual, Elija: Entorno de datos 3. Dentro del Entorno de datos, Presione Botón Derecho 56
  • 57. 4. En el menú contextual, Elija: Agregar 5. Seleccione, opción: ()Vistas (ver gráfico) 6. Haga Doble Click en Vista01 7. Luego, Click en: Cerrar Usando el Mouse acomode el diseñador de informes y el entorno de datos, de tal como que quede, tal como se muestra en la figura, de la siguiente página. 1. Si no tiene la barra de controles de informe  Haga Click en: Menú Ver  Barra de Herramientas...  Marcar como en el gráfico de parte derecha.  Luego, Click en: Aceptar 57
  • 58. Nuevamente acomode las figuras, por ejm. puede ser como observa en la parte inferior. Luego. Vamos a iniciar a preparar el informe. Para lo cual, debemos tener presente el resultado que deseamos obtener. En la siguiente página se muestra un previo de lo que queremos conseguir diseñando un informe, con nuestro diseñador y que imprima el modelo propuesto. 58
  • 59. Para poder obtener este resultado. Usando los botones del control de informes, prepare Ud. un diseñador de informes del siguiente modelo. 1. Si desea Digitar un texto en el diseñador de informes, haga Click sobre el botón que tiene la letra A del control de Informes y en seguida haga Click en el lugar donde desea Digitar. 2. Si desea agregar, una función ó variable, haga click en botón ab del control de informes. Luego sobre el diseñador. 3. Si desea agregar un campo, lo puede arrastrar desde la vista, que se encuentra a la derecha, del diseñador. Nota: Nombre de la Empresa, Descripción, Precio, Nota .. y Pag. Son etiquetas, mientras Date() es función, _Pageno es una variable. Finalmente ArtNom y ArtPre son campos que se encuentran en el Entorno de Datos. Para ver un Previo:  Haga Click en el Botón Derecho, luego seleccione: Preliminar (observará un previo)  Lo anterior también lo puede realizar haciendo Click en botón de Hoja y Lupa de la barra de herramientas. Esta vez el botón del signo de Admiración Es para Imprimir.  Puede ir observando su avance, cada vez que crea necesario. Si desea mejorar la presentación haga click en el objeto, luego Click en formato y fuente. Cambie y mejore su presentación  Para prevenir pérdida de archivos, puede ir guardando el Informe con el Nombre: Informe1 Para ello haga click en Menú:: Archivo Guardar. Informe No 2.- debemos preparar otro informe, similar al que se muestra en la parte inferior. 59
  • 60. Observe que está agrupado por Clientes, ordenado por descripción y con un sub-total por clientes. Para preparar nuestro segundo informe, podemos re-utilizar diseño del informe anterior. Guardando la primera y luego guardando con nuevo nombre. Para ello utilice Archivo Guardar como Asigne nombre informe2 luego puede modificar sobre ella. Pasos:  Modificar Lista de Precios por Informe de ventas Creación de Grupo ó quiebre:  Click en Menú:  Informe  Agrupar datos 60
  • 61.  Sobre ventana de agrupar datos, en el área en blanco de: expresiones de agrupación, podemos Digitar la expresión del quiebre, pero hacemos Click en: ... (Punto punto )  Luego haga, Doble click sobre: Vista2.ClieCod (ver gráfico)  Finalmente Click en: Aceptar El diseñador que logre, nuestro propósito será similar al gráfico siguiente: Observe que el monto, subtotal y total son expresiones como (Cantidad) * (Precio de Venta) (Vista2.Cant*Vista2.PreVen) (ver gráfico) 61
  • 62. Para que Subtotal y total, muestre la suma, hacemos: Click Derecho sobre el objeto que representa la expresión (Cant*Preven), luego click, en la opción: Propiedades. Luego en la ventana que se presente, mostrará un grupo de opciones, seleccionamos la opción Cálculos, haciendo Click sobre ella. Finalmente en el gráfico de la parte derecha, seleccionamos opción SUMA Para terminar, hacemos click en: Aceptar. En esta pantalla y en la otra De esta manera, habremos creado el segundo reporte. Reporte con mas un Grupo 62
  • 63. El siguiente gráfico, muestra un Modelo, de un reporte con más de un grupo. Esta agrupado por Mes, clientes y Número de factura. Tiene un sub-total de cada factura , mes y por página. Asimismo el número de factura se imprime a la altura de los otros datos y no se repite. El modelo de Informe a prepararse. El diseñador de Informes, que genera este tipo de reportes, se encuentra en la siguiente página. 1. Haga Click en el Botón Ver Clases del Control de Formularios ( Esta se encuentra al lado derecho de la Flecha) 2. Elija Agregar 63
  • 64. Modelo de diseñador Suerte en preparar el informe propuesto: Fin del laboratorio. 64
  • 65. Laboratorio No 4 Objetivo: Sentar las bases de la Programación Orientada a Objetos, crear formularios y codificar. Formulario: Una clase contenedora. Una colección de una o más páginas que se comporta como una ventana o un cuadro de diálogo estándar. Un formulario contiene controles para mostrar y modificar datos. Los formularios pueden estar contenidos dentro de un conjunto de formularios. Creando un Formulario: Click en: Archivo Nuevo ( ) Formulario Nuevo archivo 65
  • 66. Diseñador de formulario Nota: para hacer diseño en formulario, también utilizaremos los controles, tal como se observan en la pantalla anterior. Similar como lo hacía en Informes, hacer Click en control A, luego hacer Click en el formulario. De esta manera estará creando un Label (Etiqueta), para Text lo hará con ab, etc. En esta oportunidad vamos a diseñar, un formulario que nos pida Digitar un texto y que esta al ser aceptado, se refleje como un nuevo mensaje en el título del formulario. Pasos a seguir: 1. Haga Click en control A 2. Lleve el Mouse sobre el formulario y haga click en ella 3. Haga Clicke en Control ab 4. Lleve el Mouse sobre alguna ubicación del formulario, donde crea sea útil y haga Click en ella. 5. Supongo que ya entendió, como funciona esto. Complete lo resto, hasta que su pantalla presente similar al siguiente gráfico. 66
  • 67. El usuario a de observar, que en el formulario existen cuatro objetos Cada objeto del formulario anterior, lleva un nombre por defecto. Pero nosotros como buenos programadores, las podemos cambiar a nuestra voluntad. Y eso los vamos a hacer. 6. Presione Botón Derecho del Mouse, sobre Label1, y luego haga Click en Propiedades. 7. En la lista de propiedades, ubique propiedad NAME y haga click en ella. 8. Al costado del símbolo de función fx, aparece label1 en azul, Digite obre ella lblmensage. 9. Haga click en Text1, esta vez también vuelve a aparecer, el nombre inicial, cambie por Txtmensaje. 10. Asigne Ud. los nombres a los objetos que faltan: Comand1 como CmdAceptar y Command2 por CmdSalir Ahora vamos a cambiar la etiqueta (titulo) de los objetos (recuerde text no lo tiene), los pasos son los mismos, esta vez la propiedad que satisface nuestra necesidad es: CAPTION 67
  • 68. 11. Aquí se dan un listado de las etiquetas para los Objetos (reconocidos por sus nuevos nombres). Etiqueta Objeto Digite un Texto LblMensaje Aceptar CmdAceptar Salir CmdSalir Hasta aquí Ud. ha aprendido, cambiar nombre y título del Objeto. 12. Aquí se muestra un ejemplo a donde debemos llegar, cuando nuestro formulario ya esté completamente preparado y ejecutándose: 68
  • 69. El título actual del formulario se observa como: “ Universidad Nacional de Ingeniería”, pero ya hemos digitado en Txtmensaje, el mensaje: “Centro de Extensión y Proyección Social”. VFP, para cambiar el título, está solo a la espera que el usuario haga Click en Aceptar ó presione la tecla: Enter. Pero si el usuario desea abandonar el sistema, puede presionar ESC. ó hacer click en Salir. Asimismo al acercar el Mouse sobre cualquiera de los botones comando, esta debe hacer mostrar un mensaje de ayuda, explicando lo que debe suceder si hace Click sobre ella. Para que VFP, haga todo lo que hemos echo mención en la parte anterior, haga los siguientes pasos: 13. Seleccione el Objeto CmdAceptar (Aceptar) y cambie las propiedades: DEFAULT por .T. (Verdadero) enTOOL TIP TEXT, Digite el texto: Click Aquí Actualiza el Título del Formulario 14. Similar en el Objeto CmdSalir (Salir): CANCEL por en .T. (Verdadero) TOOL TIP TEXT, Digite el texto: Termina la ejecución del sistema. 15. Haga Click en título del Formulario, luego en la lista de propiedades busque: SHOW TIPS. Cambie por .T. – Verdadero ( Show Tips pertenece al formulario, y nó a otro objeto cualquiera) Tiempo de Ejecución: 16. Haga doble Click en Aceptar, luego Digite tal como observa en la figura: Presione Ctrl+W, para Salir y guardar 17. Similar que en la parte anterior haga sobre el objeto Salir, esta vez Digite: Release Thisform 18. Ejecutar el Formulario: Haga Click en botón Ejecutar ( ! ), 69
  • 70. 19. A la consulta anterior, responda Sí y guarde. 20. Debe ejecutarse sin problemas, caso contrario consulte con su asistente. PARTE 2 Vamos a preparar un formulario aplicativo, a la Base de Datos. Por ejemplo: hacer mantenimiento de la tabla Articulo.dbf. Pasos a seguir: 3. Abrir la Base de Datos Archivo Abrir Base de Datos: Ventas 4. Crear un Nuevo Formulario Archivo Nuevo ( ) Formulario Nuevo Archivo 5. Presionar: Botón Derecho, sobre el área del Formulario 6. Click en: Entorno de datos (del Menú contextual) 7. Doble Click en Articulo.dbf 8. Usando Mouse, puede presentar similar ala figura. 70
  • 71. 9. Podemos crear en nuestro formulario, los objetos: Etiquetas, Texts y Commands, luego con la propiedad: Control Source direccionar a los campos de la tabla. Pero esta vez, vamos a hacer uno más simple: 10. Haga Click sobre la palabra Campos de Articulo y arrastre hacia el formulario y suelte. Así debe de observarse, los campos 11. Haga Click en cada objeto y re-ubicar los objetos, asimismo cambie el título de las etiquetas. ( Observe el siguiente gráfico) 71
  • 72. (Aquí debe llegar, usando propiedad: Caption) 12. Haga Click en el Botón Ver Clases del Control de Formularios ( Esta se encuentra al lado derecho de la Flecha) 13. Elija Agregar 14. buscar la Carpeta WIZARDS, que se encuentra dentro de la carpeta del Visual FoxPro. 15. Haga Doble Click en, objeto Wizstyle. 16. En el siguiente gráfico, se observa una gama de botones de clases. Ubique aquel botón de nombre PICBTNS (Para ello utilizará los Tool Tip Text de cada botón. En el siguiente gráfico, este botón se encuentra en la quinta fila y cuarta columna) 72
  • 73. 17. Haga Click sobre el formulario debajo de Stock 18. Vuelva a acomodar similar al siguiente gráfico . 19. Guardar (asigne el nombre que desee) 20. Ejecutar 21. Suerte Pruebe. y 73
  • 74. INSTRUCCIONES DE PROGRAMACIÓN. El Foxpro en modo programación, es la forma como se puede almacenar un conjunto de órdenes en un archivo llamado programa, el cual posteriormente será ejecutado. Orden MODIFY COMMAND Propósito : Permite crear y editar un programa en Foxpro (con extensión .PRG), o también cualquier archivo de texto. Sintaxis : MODIFY COMMAND [D:][CAMINO]NOMBRE[.EXT] Si la unidad y el camino no son especificados, se asumirá la unidad y camino por defecto.cuando se usa Modify Command, Foxpro busca el archivo indicado; si el archivo no existe entonces se crea uno, de lo contrario éste será editado. Cada vez que un archivo es grabado la versión previa es grabado en un archivo de seguridad con extensión .BAK. Al crear un programa, para grabarlo presionaremos las teclas [Ctrl]+[W]. Si desea salir sin grabar presionaremos la tecla [Esc]. Orden DO Propósito : Permite ejecutar un programa anteriormente creado. Sintaxis : DO [D:][CAMINO]NOMBRE[.EXT] Orden TYPE Propósito : Permite visualizar el contenido de un archivo programa. Sintaxis: TYPE[D:][CAMINO]NOMBRE[.EXT] ESTRUCTURA DE UN PROGRAMA Preámbulo Contiene informacion tal como: el nombre del programa, que hace, quién lo escribió, la fecha y una breve historia sobre su edición. Ejemplo: *--------------------------------------------------------------------------------------* *PROGRAMA : STOCK.PRG *DESCRIPCION: CONTROL DE STOCK *AUTOR : LUIS LOZADA PORTAL *FECHA : 05 DE NOVIEMBRE DE 1998 *--------------------------------------------------------------------------------------* Area de Seteos Define los comandos SET que el programa necesita para trabajar eficientemente. En esta parte se puede especificar la relaciones entre las bases de datos, activar los archivos indexados así como inicialización de las variables de memoria, etc. 74