Está en la página 1de 81

Curso de Visual Foxpro

Entorno de Desarrollo de Visual Foxpro (I)


Temas que abordaremos en este Captulo: Introduccin Instalacin - Formatos Aprendizaje - Ayuda Conceptos - !entos - Controles Tipos de Fic"eros - Tipos de #atos$ Control de Flujo del %ro&rama l entorno de desarrollo 'Administrador de proyectos- #ise(adores y Asistentes) '%rxima entre&a) *estin de Fic"eros - Creacin de Tabla mediante asistente$ '%rxima entre&a)

Introduccin
Visual Foxpro es uno de los gestores de Bases de Datos relacionales ms rpido 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 !indo"s estndar, Visual Foxpro soporta interfaces MDI, barras de #erramientas, ayuda sensible al contexto, m$ltiples fuentes, acceso a bibliotecas de enlace dinmico %DLL), etc. &parte del acceso a tablas en formato nativo de Visual FoxPro, se puede acceder virtualmente a cualquier fuente de datos cuyo acceso se pueda #acer atrav's de ODBC %Open Database Conne ti!it"(. )ste estndar, definido como Cone ti!idad #bierta de Bases de Datos, permite abrir y consultar diversas bases de datos a trav's de un conjunto de controladores, utili*ando $%L 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. ,e elimina la necesidad del uso del -)&D 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 programacin. En esta clase examinaremos, entre otras cosas, qu son los formularios, eventos y controles, y cmo se usan

2.- INSTALACION - FORMATOS


,e puede instalar en !indo"s ./ 0 .1 o 23, dado que s lo viene un instalador de 45 bits. &l igual que Visual Basic /, no funcionar en !indo"s 4.6. 7ara esta plataforma puede usar Fox 7ro 5.8 para !indo"s, que no es un lenguaje Visual. For&atos9 tiene una sola versi n completa y tambi'n forma parte del paquete Visual )studio %conjunto de lenguajes visuales y ,:; ,erver 8./(. ;a instalaci n bsicamente consiste en ejecutar el programa <2,3&;&- %versi n espa+ola( o ,)3=7 %versi n en ingl's(, y seguir los dilogos. 7or omisi n se instala en la carpeta C9>VF7, pero si lo desea =d. puede cambiarla. Con la instalaci n m?nima se requieren 5/ @g de espacio en disco, con la t?pica alrededor de ABB @g, y completa puede ocupar cerca de 5BB @g, incluyendo la documentaci n en l?nea %Carpeta C9>VF7>C2;<2)( y los audiovisuales explicativos en ingl's %carpeta C9>VF7>C2;<2)>@)D<& de casi 8B @g(. 7or omisi n deja todo esto %documentaci n y audiovisuales para su uso desde el CD para economi*ar espacio, pero puede copiarlos al disco r?gido s? desea acceso ms rpido y no tiene problemas de espacio en disco. '(uipo M)ni&o9 =n 7C compatible con <B@D con !indo"s ./ 0 .1, aunque funciona con un procesador E18 a /B@F* se recomienda algo superior %t?picamente 7entium A88 05BB @#* con 45 @G -&@(. =n mouse o rat n. ,e recomienda un monitor VG& o de mayor resoluci n, preferiblemente color.

3.- Aprendizaje
Vea en men$ de #"uda, %&;3 H =, D(, IDo u&enta i*nI que pone en pantalla a todos los manuales. 7odr?a empe*ar por ej. por la JGu?a de <nstalaci nK, J@anual del =suarioK, I@anual del 7rogramadorI, J-eferencia del ;enguajeK, etc.. @s adelante podr usar ese mismo men$ de #"uda L #pli a iones '+e&plo. M estudiar los casos t?picos que all? se explican.

4.- A uda
Vea en la #"uda, %&;3 H =(, 3emas de ayuda, y tambi'n aplicaciones de ejemplo que se pueden ejecutar y estudiar, @icrosoft en la !eb %,i tiene <nternet(, ,oporte t'cnico, etc. 3ambi'n est la ayuda sensible al contexto %FA(, el ?ndice temtico, y la opci n Buscar. )n la ayuda se puede imprimir, seleccionar, copiar, y luego pegar en un procesador de textos cualquiera.

!.- Concepto" C#o $unciona %indo&"'


Mensa+es9 3odo lo que sucede dentro de !indo"s es el resultado del env?o de un mensaje. Cuando se #ace clic en una tecla o bot n, cuando cambia el tama+o a una ventana, cuando un carcter se digita dentro de una caja de edici n, cuando se mueve el puntero del mouse, etc., !indo"s env?a un mensaje informando de dic#a situaci n.

)l volumen de mensajes generados en cada segundo es tremendo. =na queja com$n entre los programadores de CHH que comien*an a trabajar en lenguajes del tipo del Fox, es que pierden la #abilidad de interceptar cientos de mensajes que !inL do"s env?a. )l Fox 5.8 para !indo"s est basado en un sistema de ventanas creado para DC,, que no se basa en mensajes. &dems de crear la ventana grficamente, el objetivo era ,enerar *di,o -uente de Fox rpidamente %,7-(, adems de generar la entidad JventanaK utili*able %,C6(. Fox tuvo que ser mejorado para permitirle a los desarrolladores tener este tipo de fundamento, adems de permitirle interceptar esta clase de mensajes, llegndose as? a la versi n visual, con el agregado del concepto JFormularioK %)n ingl's, Form(. Ventana9 ;a del explorador, un bot n es una ventana, un documento de !ord, un icono, una caja de textos, botones de opci n, una barra de men$, etc. todas son ventanas.

For#u(ario"
Visual Fox 7ro tiene un nombre especial para una pantalla9 formulario o Form. =n formulario no es nada mas que una ventana com$n de !indo"s, pero a un nivel mayor de abstracci n. ,e podr?a pensar un formulario, por ejemplo, como un conjunto autoLcontenido de ob+etos sin tener que preocuparse por una gran cantidad de detalles por cuales se preocupar?a un programador de C. J&uto contenidosK quiere significar que el formulario tiene propiedades que pueden ser alteradas para controlar la apariencia y comportamiento del formulario, y e!entos que se disparan cuando ciertos mensajes se env?an a los mismos. =na pantalla de entrada o ventana construida usando el constructor de pantallas de Fox 5.8 %,creen Builder( no es un ob+eto, aunque le d' la ilusi n de que es as?. Cuando se examina el c digo generado por Fox 7ro 5.8 se puede ver la sentencia D)F<2) !<2DC!, las sentencias G)3 0 ,&M, y finalmente la sentencia -)&D que causa que Fox entre en estado de espera para permitirle al usuario ingreL sar datos. Cuando =d. dise+a un formulario en Visual Fox, lo #ace casi igual que en Visual Basic y, a diferencia de lo que ocurr?a en Fox 5.8 para !indo"s, el -or&ulario es un ob+eto, porque tiene propiedades que manipulan la apariencia del formulario, o cambian la forma en que se comporta. ,e puede fijar los valores %num'ricos o alfab'ticos( de dic#as propiedad tanto a tie&po 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(. & cada formulario se le asigna un $nico nombre %propiedad 2ame(, y una ve* que tiene un nombre se lo puede referenciar tanto dentro como fuera del mismo formulario.

7or ejemplo, suponga que tiene un formulario al que llama frmCliente y desea cambiar el t?tulo de dic#o formulario %propiedad Caption(, se puede referencia dic#a propiedad utili*ando la sintaxis del punto como sigue9
$r#C(iente.Caption ) *ALTAS+

y usando la misma notaci n puede colocar el t?tulo de una ventana en la variable lctitulo, usando la sentencia9 l titulo / -r&Cliente0Caption ;a principal ventaja de utili*ar propiedades de objetos contra los distintos comandos usados #asta a#ora, es la consistencia9 ms que recordar muc#os diferentes comandos %probablemente cada uno con diferente sintaxis(, solamente se tiene que acordar el nombre de la propiedad, y la sintaxis es la misma.

,-ento"
3odo lo que ocurra en !indo"s es el resultado de enviar un mensaje. Visual Fox previene que =d. se las tenga que ver con cientos de diferentes mensajes usando la noci n de evento. =n 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 =d. #ace clic con el rat n en un formulario, !indo"s env?a un mensaje al formulario dici'ndole que alguien #a #ec#o clic sobre 'l. )ntonces Visual Fox dispara el evento clic del formulario en respuesta a dic#o mensaje. =d. solamente debe escribir la parte de c digo que se ejecutar cuando dic#o evento ocurra. 7or ejemplo, puede poner c digo que cambie el color de fondo del formulario %7ropiedad BacNColor( en respuesta a dic#o evento. )n la siguiente tabla estn algunos de los eventos ms comunes del objeto forL mulario9 Evento
Load DblClick MouseMove Resize GotFocus Lost Focus

Se dispara cuando...
.e car&a el /ormulario por primera !ez$ l usuario "ace doble clic en el /ormulario$ l ratn se mue!e sobre el /ormulario$ .e cambia de tama(o del /ormulario Formulario 0en /oco12 desde otro /ormulario se "ace clic en 3ste$ .e "ace clic /uera del /ormulario

Contro(e"
,on aquellos objetos grficos a trav's de los cuales los usuarios pueden recibir y responder a los distintos tipos de mensajes !indo"s, de forma similar a las que lo #ac?a el formulario. Ctra definici n de control9 son una instancia de una clase, combinada con datos y procedimientos. '+e&plo9 bot n %pus# button(, cajas de edici n %edit boxes(, cajas de texto %text boxes(, l?neas, texto o etiquetas %labels(, etc.

;os 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(. &l igual que pasaba con los formularios, los controles tiene un $nico nombre %7ropiedad 2ame(, y se puede cambiar cualquier propiedad usando la notaci n del punto. 7or ejemplo, para #acer que el texto %propiedad 3ext( que est en una caja de texto %text Box( que se llama txtCaja desde y #acia la variable lcVar, se usar9
txt a!a."ext # lcVar lcVar # txt a!a."ext

&lgunas propiedades son $nicas para un determinado control %no existen en otros controles(, pero existen otras que son comunes a todos los controles, por ejemplo9 $ropiedad
Enabled FontName Left Visible

Significado
l control est5 "abilitado 6ombre tipo&ra/a usada 'caracteres) posicin del borde izquierdo del control re/erida a su !entana contenedora True '!erdadero) si est5 !isible$

;os controles pueden responder a eventos disparados tanto por acci n del uL suario como directamente desde el sistema. 7or ejemplo, si el usuario #ace clic sobre un control bot n de apretar %pus# button(, !indo"s le informa envindole un mensaje a dic#o control que #a sido apreL tado %clicNed(. )l control o bot n entonces dispara el evento Clic, y ejecuta el c digo colocado o asignado a dic#o evento. &l igual que las propiedades, algunos eventos son in#erentes a dic#o control y no existen en otros, pero #ay eventos comunes a todos los controles, como ser?an los siguientes caso t?pico9 Evento
Click MouseMove GotFocus Lost Focus

Se dispara cuando...
el usuario "ace clic7 sobre el control l ratn se mue!e sobre el control$ Control 0en /oco12 desde otro control se "ace clic en 3ste$ .e "ace clic en otro control

Contro(e" *Cu"to#+
=no de los principales factores que contribuyeron al 'xito del Visual Basic fue la Jexplosi nK en el mercado de controles suministrados por fabricantes externos o terceras partes. )stos controles aparecen en la paleta de controles del Visual Fox 7ro junto con los controles normales %builtLin( y se manipulan de forma similar %fijando valores a sus propiedades y codificando rutinas que dan respuesta a ciertos eventos(. )stos controles cubren un amplio espectro desde botones y cajas de texto mejoradas, #asta complejas #ojas de clculo %grid( o grficos comerciales %7inacle Grap#(.
8

Dic#os controles estaban escritos generalmente en C y empaquetados en una clase especial de librer?as dinmicas %como las D;;( que verdaderamente extendieron la eficacia del lenguaje, por lo que fueron llamadas. VB6 %Visual Basic e6tensions(, luego CC6 y actualmente se los llama &C3<V) 6, a#ora tambi'n soportados todos ellos por Visual Fox 7ro, que a#ora en la versi n /, puede crear bibliotecas de enlace dinmico o D;;.

..- Tipo" de /ato"


;os datos con los que se trabaja probablemente incluyan per?odos de tiempo, dinero y elementos contables, as? como fec#as, 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. ,e podr?a trabajar directamente con estos datos sin almacenarlos, si bien perder?a la mayor parte de la flexibilidad y potencia que ofrece Visual Fox7ro. Visual Fox7ro aporta numerosos contenedores de almacenamiento con el fin de ampliar su capacidad para manipular fcilmente los datos.

1ipos de datos
;os tipos de datos determinan la manera en que se almacenan los datos y la forma en que se pueden utili*ar tales datos. 7uede multiplicar dos n$meros, pero no puede multiplicar caracteres. 7uede imprimir caracteres en may$sculas, pero no es posible imprimir n$meros en may$sculas. )n la siguiente tabla se enumeran algunos de los principales tipos de datos de Visual Fox7ro.

Ta0(a de Tipo" de dato"


1ipo B"te

2um'rico @oneda %Currency( C#aracter ;ogical Fec#a L Fec#a y #ora %Date Date3ime(

1 1 A 5/8 A 1

2#34O 5 '+e&plo 6...........)HA. a

...........)H5B O .5544P5B481/EPP./1B1 a .5544P5B481/EPP./1BP J7ruebaK JA54K JBA0BA0./K .3.%verdadero( .F. %falso( QBA0BA0./R QBA0BA0./ A594B9BB pmR BA0BA0BABB #asta 4A0A50....

Tipo" de ca#po"
1ipo B"te '+e&plos

2um'rico 7unto Flotante

A 5B 9$:::::::::: ;+: a

$:::::::::: ;,<
A 5B O...........)HA. a

@emo Doble 7recisi n C#aracter ;ogical <nteger %)ntero( Carcter %Binario( @emo %Binario( General %Cbj.C;)( Fec#a L Fec#a y #ora %Date Date3ime(

E 1 A 5/E A E AB AB E 1

...........)H5B 3exto longitud variable L @ximo seg$n memoria H0OE..EB8/8E/1EA5EP)L45E a H0O1..11E8/8PE4AA/)4BP J7ruebaK JA54K JBA0BA0./K Cualquier caracter .3.%verdadero( .F. %falso( O5AEPE148EP a 5AEPE148E8 ,in tabla de c digos ,in tabla de c digos ;imitado por @emoria disponible QBA0BA0./R QBA0BA0./ A594B9BB pmR

Contenedores de datos
;os contenedores de datos le permiten reali*ar las mismas operaciones con varios datos. 7or ejemplo, sumar las #oras que #a trabajado un empleado, multiplicarlas por el salario por #ora y restar los impuestos para determinar el sueldo que #a percibido el empleado. Deber reali*ar estas operaciones para cada empleado y para cada per?odo de pago. ,i almacena esta informaci n en contenedores y reali*a las operaciones sobre 'stos, bastar con sustituir los datos antiguos por los nuevos datos y volver a ejecutar el mismo programa. )n la siguiente tabla se enumeran algunos de los principales contenedores de datos disponibles en Visual Fox7ro9

Contenedore" de dato"
1ipo Des rip i*n

Variables )lementos individuales de datos almacenados en la memoria -&@ %memoria de acceso aleatorio( del 7C. -egistro Varias filas de campos s de predeterminados, cada uno de tabla los cuales puede contener un dato definido previamente. ;as tablas se guardan en disco. @atrices Varios elementos de datos almacenados en la memoria -&@.

>

1"o de operadore"
;os operadores se utili*an para vincular los datos formando expresiones. ;as 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 / 1ipos de datos !7lidos '+e&plo

3odos

SnTP

2esultado <mprime .3. si el valor almacenado en la variable es PU de lo contrario,

imprime .F.
Operador 8 1ipos de datos !7lidos

2umeric, C#aracter,Date, Date3ime


'+e&plo 2esultado ? "Fox" + "Pro"

<mprime JFox7roK

Operador 9, : 1ipos de datos !7lidos 2umeric '+e&plo ? 5 * 5 2esultado <mprime 5/

TA2LA /, Funcione" de CON3,RSI4N entre tipo" de dato".


1ipo O2I4'3 F;3CIO3 1ipo D'$1I3O

Carcter o @emo 2um'rico, Flot, Doble o )ntero 2um'rico @oneda Carcter o @emo Fec#a Carcter Carcter Binario Carcter o @emo Fec#aFora Fec#a Fec#aFora ; gico

V&; % ( ,3-% ( 23C@% ( @3C2% ( C3CD% (

2um'rico Caracter @oneda 2um'rico Fec#a

D3CC o Carcter D3C, C3CB<2% ( Carcter Binario B<23CC% ( Carcter C3C3% ( 33CC% ( D3C3% ( 33CD% ( <<F% ( Fec#aFora Carcter Fec#aFora Fec#a Cualquiera

F1NCION T56,
)val$a una expresi n de caracteres y devuelve el tipo de datos de su contenido.

,intaxis 1<P' = 'xpresi*n) 3ipos devueltos9 C#aracter Ar7u#ento"9 'xpresi*n )specifica 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. ;a expresi n tiene que pasarse como una cadena de caracteres, #ay que entrecomillar los nombres de variables de memoria, de campos, etc. ,i no entrecomilla la expresi n, la funci n 3M7)% ( devolver J=K %expresi n indefinida(.
1ipo de datos Car7 ter de!uelto

C#aracter 2umeric %tambi'n flotante, doble y entero( Currency Date Date3ime ;ogical @emo Cbject General <ndefinido

C 3 < D 1 L M O 4 ;

8erar9u:a de operadore"
)l orden de prioridades seg$n el cual se aplican los operadores al evaluar una expresi n matemtica, se llama en Visual Fox7ro, la precedencia de los operadores, que es de mayor a menor jerarqu?a9
= ) =a,rupa&iento de subexpresiones), > o 99 =exponen ia i*n), 9 " : =&ultipli a i*n " di!isi*n), ? =&*dulo), 8 " 6 =su&a " resta)0

Contro( de( $(ujo de( pro7ra#a


Visual Fox7ro incluye una categor?a especial de comandos que JenvuelvenK a otros comandos y funciones, determinando cundo y con qu' frecuencia se ejecutan los otros comandos y funciones. )stos comandos permiten reali*ar bifurcaciones condicionales y bucles, dos #erramientas de programaci n sumamente potentes. =na estructura de control muy usada es la estructura condicional ,< %<F en ingl's(. De la ayuda de Vfox sacamos lo siguiente9
IF @ )jecuta condicionalmente un conjunto de comandos dependiendo del resultado de una expresi n l gica. Sinta;i" IF l'xpresi*n A1B'3C Co&andos A'L$'

Co&andosC '3DIF Ar7u#ento"' l'xpresi*n )specifica la expresi n l gica evaluada. ,i l)xpresi n da como resultado verdadero %.3.(, se ejecutarn cualesquiera instrucciones posteriores a <F y anteriores a );,) o )2D<F %lo que suceda primero(.

,i l)xpresi n es falsa y se incluye );,), se ejecutan los comandos situados despu's de );,) y antes de )2D<F. ,i l)xpresi n es falsa %.F.( y no e incluye );,), se pasarn por alto todas las instrucciones entre <F y )2D<F. )n este caso la ejecuci n del programa continuar con la primera l?nea de comando a continuaci n de )2D<F.
Co&entarios 9 7uede anidar <F ... )2D<F dentro de otro bloque <F ... )2D<F.

;os comentarios precedidos de DD se pueden colocar en la misma l?nea despu's de <F, );,) y )2D<F. )stos 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 &sistentes L Gesti n de Fic#eros L Creaci n de 3abla mediante asistente( 3oda la interfa* de desarrollo incorporada por EVisual FoxproE est orientada a la generaci n rpida de aplicaciones %2#D(. )l objetivo final es la generaci n de aplicaciones seguras en un tiempo ra*onablemente peque+o. 3odo esto se consigue dejando que el trabajo a bajo nivel lo efect$e el sistema, quedando para el programador el aspecto visual y el anlisis de la aplicaci n. 7ara conseguir este fin, Visual Foxpro incorpora el siguiente conjunto de #erramientas9

Ad#ini"trador de pro ecto"


Visual Foxpro incorpora un potente gestor de proyectos que centrali*a la gesti n de todos los arc#ivos manejados por una aplicaci n. & partir de la informaci n

+<

contenida en un proyecto se generan las aplicaciones que pueden ser distribuidas libremente a todos los usuarios. &dems, Visual Foxpro incorpora una #erramienta 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. )ste 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 ms de informaci n. De esta forma, una base de datos mantiene actuali*ada y centrali*ada toda la informaci n de funcionamiento de las tablas que con ella estn relacionadas. 7or ejemplo, cada ve* que se modifica un registro en una tabla perteneciente a una base de datos, se comprueban las reglas de modificaci n para esta tabla. ,i por cualquier ra* n no es posible actuali*ar la tabla porque una de las reglas de validaci n #a fallado, se devuelve la tabla a su estado original, advirtiendo, por supuesto, al usuario de esta eventualidad. Dise.ador de -or&ularios 3otalmente orientados al objeto, permiten dise+ar el aspecto grfico final de una aplicaci n. 7ermiten la inclusi n de objetos estndar en Windows, tales como casillas de verificaci n, grupos de opciones, marcos de pgina, imgenes, controles OL'. 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. )n este entorno de datos es posible incluir cualquier tabla, vista local o remota definida en una base de datos. 7ero 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 in-or&es " eti(uetas & la #ora de visuali*ar datos, ya sea por pantalla o impresora, Visual Fox7ro incorpora un potente dise+ador de informes y etiquetas. )n un informe se pueden definir objetos dentro de las tres bandas, cabecera, pie o detalle, y, adems, distribuir el informe en varios grupos que muestren el resultado de clculos sumatorios u otros reali*ados desde el propio formulario. & estas prestaciones #ay 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 #a comentado en referencia a los formularios. Dise.ador de &enFs )ste dise+ador se utili*a para crear men$s personali*ados en la aplicaci n y as? sustituir el men$ incorporado por Visual Fox7ro. )l sistema utili*ado se basa en la creaci n de unos fic#eros donde estn las definiciones de men$. & posteriori, la informaci n contenida en estos fic#eros de men$ es anali*ada por un generador de c digo con la finalidad de generar de forma automtica c digo fuente con las definiciones de men$. #sistentes 7ara usuarios incipientes, los asistentes pueden ayudar a crear nuevos tipos de fic#eros de forma sencilla y rpida. 2o por ello se elimina la posibilidad de modificar los fic#eros creados, ya que 'stos pueden ser alterados posteriormente mediante su dise+ador correspondiente.

++

;os generadores de controles ayudan en la creaci n de nuevos controles insertados en los formularios. )stos generadores se encuentran totalmente abiertos y el usuario puede incorporar sus propios generadores. Dise.ador de onsultas " !istas Cuando se trata de recuperar informaci n, los generadores de consultas y vistas constituyen un apoyo indispensable para poder generar expresiones ,:;. ,i 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. #parien ia de la !entana de siste&a )l sistema int'rprete se basa en la utili*aci n de la ventana Comandos. Desde esta ventana se escriben sentencias que usualmente provocan una acci n por parte del sistema de desarrollo. &s?, desde la ventana de comandos se puede abrir tablas, examinar su contenido, crear programas, compilarlos, etc. &parte de la ventana de comandos, cualquier acci n se puede reali*ar desde el men$ de sistema, o bien desde la barra de #erramientas activa. )s posible personali*ar el men$ de sistema y cualquier barra de #erramientas, o incluso crear nuevas barras de #erramientas seg$n las necesidades del usuario.

1ipos de Fi Geros Como se #an dic#o, el proyecto guarda informaci n acerca de la locali*aci n de cada arc#ivo. Como ayuda se presenta una lista de las posibles extensiones asociadas con cada tipo de fic#eros y una breve descripci n de cada tipo. 1ipo 7royecto Bases de Datos Formulario Bibliotecas de Clases Visuales 3ablas Vndices Documentaci n <nformes )tiquetas ;ibrer?as !indo"s 'xtensiones rela ionadas PHI, PH1 DBC, DCI, DC1 $CI,$C1 VCI,VC1 DBF,FP1 CDI,IDI #C1 F2I,F21 LBI,LB1 DLL Des rip i*n 2$cleo central de desarrollo. )fect$a el seguimiento a todos los fic#eros relacionados con una aplicaci n. 3abla contenedora para informaci n relacionada con tablas, ?ndices, relaciones, vistas y conexiones. Fic#eros de definici n de formularios. Bibliotecas conteniendo varias clases definidas por el usuario. 3ablas y fic#ero memo asociados. Fic#eros ?ndice compactos y simples. Fic#ero conteniendo el diagrama de acciones de un fic#ero P24 generado por el asistente de documentaci n. <nformes. )tiquetas. ;ibrer?a de enlace dinmico Windows

+,

)rrores )jecutables @acros Bibliotecas &7< 7rogramas &yuda @emoria @en$s @en$s generados Control C;) Consulta ,:; Copias de seguridad 3exto Constantes

'22 'I' FJ< FLL P24,FIP BLP M'M M3I,M31 MP2,MPI OCI %P2,%PI 1BJ,B#J 1I1 B

Fic#ero de seguimiento de errores de compilaci n. Fic#ero ejecutable Visual Foxpro0 Fic#ero de definici n de macros. Biblioteca de enlace dinmico Windows0 7rograma Fuente y Compilado. Fic#ero de ayuda grfica. Fic#ero de almacenamiento variables de memoria. Fic#ero de definici n de men$s. de

Fic#ero generado y compilado. & partir de una definici n de men$s. Fic#ero control # ti!eI Fic#ero de consulta $%L0 Copias de seguridad de diversos fic#eros. Fic#eros de 3exto. Fic#ero de constantes predefinidas.

<e"tin de $ic=ero" Desde el men$ #r Gi!o se reali*an las acciones relacionadas con arc#ivos. Consta de las opciones9 Op i*n 3ue!o #brir Cerrar 4uardar 4uardar o&o000 2e!ertir Des rip i*n Crea un nuevo fic#ero de cualquier tipo &bre un fic#ero de cualquier tipo. Cierra el arc#ivo en uso. &ctuali*a las modificaciones efectuadas al fic#ero actual en disco. ,alva el fic#ero actual en disco con un nuevo nombre. -ecupera la versi n guardada en disco del fic#ero actual.

Cuando se desea crear un nuevo fic#ero, se muestra el cuadro de dilogo tal como vemos en la Figura. )ste cuadro de dilogo permite seleccionar el tipo de fic#ero que se desea crear. )xisten diversos tipos de fic#eros que permiten su creaci n mediante asistentes, que facilitan enormemente la tarea de crear nuevos fic#eros.

Lo" A"i"tente"

+-

;os asistentes proporcionan el m'todo ms efica* y sencillo de apoyo a los nuevos usuarios en Visual Foxpro. Cubren prcticamente todos los tipos de fic#eros bsicos que se pueden crear, desde tablas a formularios, pasando por informes, consultas, etc. Veamos cules son9 #sistentes #sistente para -or&ularios #sistente para -or&ularios uno a !arios #sistentes para tablas #sistente para i&portar datos a tablas #sistente para tablas din7&i as #sistentes para onsultas #sistente para tablas de re-eren ias ruKadas #sistentes para ,r7-i os #sistente para in-or&es #sistente para in-or&es de uno a !arios #sistente para in-or&es de ,rupos:totales #sistentes para eti(uetas #sistente para o&bina i*n de orresponden ia #sistente para !istas #sistente para !ista re&ota Des rip i*n Crea nuevos formularios. Crea fic#eros de tipo $CI0 Crea formularios con soporte de fic#eros relacionados de uno a muc#os. Crea fic#eros $CI. Crea nuevas tablas libres o definidas en una base de datos. Crea fic#eros de tipo DBF0 <mporta datos a una tabla procedentes de otro origen. Crea tablas de #oja de clculo utili*ables desde Mi roso-t 'x el0 Crea consultas con sentencias $%L almacenadas en fic#eros de tipo %P20 Crea una consulta en formato #oja de clculo. Crea fic#eros de tipo %P20 Crea un nuevo grfico en Mi roso-t 4rapG a partir de la informaci n contenida en una tabla. Crea una nueva definici n de informe. )l tipo de fic#ero creado es F2I0 Crea una nueva definici n de informe relacionando una tabla primaria con otra secundaria. Crea fic#ero de tipo F2I0 Crea un informe con definici n de resumen para grupos y totales. Crea fic#eros de tipo F2I0 Crea un nuevo fic#ero de definici n para imprimir etiquetas postales. Crea un fic#ero de tipo LBI0 Crea un origen de datos compatible con el procesador de texto Mi roso-t Word o cualquier otro. Crea una nueva definici n de vista en una base de datos. ;a informaci n generada por este asistente se guarda en una base de datos DBC0 Crea una nueva definici n de vista remota. )l fin es acceder a otro tipo de informaci n contenida a su ve* en un servidor de datos. )sta nueva vista se almacena en una base de datos DBC0

Crear una nue!a tabla &ediante el asistente 7ara crear una nueva tabla mediante el #sistente para tablas, debe proceder de alguna de estas dos formas9 Desde el men$ Berra&ientas, escoja el submen$ #sistentes0 De este men$, escoja la opci n 1abla. Desde el men$ principal, escoja del men$ #r Gi!o la opci n 3ue!o C3;H2 o escoja el bot n de comando 3ue!o de la barra de #erramientas 'st7ndar. Visualice a continuaci n el cuadro de dilogo para la elecci n del nuevo tipo de fic#ero a crear. )scoja 1abla y pulse en el bot n de comandos #sistente.
+4

)l asistente genera una nueva tabla siguiendo tcticamente una serie de pasos que conducen a confeccionar una tabla y sus ?ndices correspondientes. 6a"o >. Se(eccionar ca#po" )ste paso trata de determinar los campos que se van a definir en la nueva tabla, a partir de unas definiciones estndar aportadas por el propio asistente. De esta forma, se puede crear una nueva tabla basndose en tipos ms o menos ajustados a las necesidades del usuario. 6a"o 2. Opcione" de ca#po" 7uede que las definiciones de campo no se ajusten exactamente a las necesidades del usuario. 7ara esto existe este paso, permitiendo la modificaci n de los parmetros definitorios de un campo, como son su nombre, el t?tulo, el tipo, el anc#o, decimales y soporte de valores nulos. Bien, en cuanto al t?tulo, s lo #ay que #acer una diferenciaci n, y es que si no #ay una base de datos definida y abierta en el sistema, no se puede crear o modificar un t?tulo asociado a un campo. )sta es una de las caracter?sticas aportadas por las bases de datos, la posibilidad de ampliar la informaci n relativa a tablas. Ctro caso es el nombre del campo9 si no existe una base de datos abierta, no se puede ampliar su descripci n ms all de die* caracteres. Como se ver ms adelante, es posible asignar nombres de campo #asta 5// caracteres. 6a"o 3. (nde;acin 7ara poder locali*ar cualquier tipo de informaci n de una tabla es necesario recurrir a la creaci n de ?ndices. ;os ?ndices proporcionan un m'todo rpido de locali*aci n de registros basndose en expresiones. ;a expresi n a locali*ar se va comparando con el contenido del ?ndice, #asta locali*ar el registro cuyo valor en la clave de ?ndice coincide con la expresi n buscada. 6a"o 4. Fina(izar =na ve* que se #an recorrido los pasos correctamente, se procede a generar una tabla. &dicionalmente, el asistente nos permite examinar la tabla tal como #a quedado o modificarla mediante el dise+ador de tablas para a+adirle prestaciones adicionales

Mane+o de tablas ,uponiendo que #ubi'ramos elegido la opci n 4uardar la tabla " exa&inarla en el #sistente para tablas, obtendr?a una nueva ventana 'xa&inar con la nueva tabla vac?a. ;o que aqu? vemos es una ventana t?pica utili*ada para examinar tablas. )n este caso estamos visuali*ando una tabla con registros. Dentro de la ventana distinguimos varios apartados. Colu&nas Dependiendo del tama+o de la ventana 'xa&inar, se muestran ms o menos columnas. Cada columna visuali*a en el encabe*ado el nombre del campo, o bien, el t?tulo definido en la base de datos para este campo. =sualmente, marcando en el t?tulo de un campo y arrastrndolo a una nueva posici n, modificamos el orden de visuali*aci n de columnas. $ele i*n de elda. 7ara indicar en qu' registro est posicionado, existe un indicador situado a la i*quierda de la primera columna visuali*ada. )ste indicador una flec#a indicando que el puntero de registro est posicionado

+8

en esa fila. &simismo, la celda que tiene el enfoque de lectura visuali*a el cursor de edici n y est remarcada con un cuadro cuyos bordes son ligeramente mayores que las l?neas separadoras. Como se puede observar en la figura, todas las funciones de edici n estn disponibles, tales como marcar un determinado segmento de caracteres, insertar o incluso marcar todo el contenido del campo. 'stado del re,istro. &dyacente al indicador de registro se encuentra el indicador de estado de la marca de eliminaci n. ,i el registro est marcado para borrar, este cuadro cambia su contenido de color negro.

'di i*n de re,istro intera ti!o Desde la venta Co&ando se pueden utili*ar estos comandos para abrir la ventana 'xa&inar y reali*ar modificaciones en cualquier tabla. Co&ando:Fun i*n #PP'3D ABL#3JC AI3 nLrea1raba+o M #lias1ablaC A3OM'3;C B2OW$' " CB#34':'DI1 MODIF< 4'3'2#L Ca&po4eneralN A,Ca&po4eneralO 000C A3OMODIF<C A3OW#I1C AAWI3DOW 3o&breVentanaNC AI3 AWI3DOWC 3o&breVentanaO M I3 $C2''3CC MODIF< M'MO Ca&poMe&oN A,Ca&poMe&oO 000C A3O'DI1C A3OM'3;C A3OW#I1C A2#34' nCar7 terIni ial, nCar7 terFinalC AAWI3DOW 3o&breVentanaNC AI3 AWI3DOW C 3o&breVentanaO M I3 $C2''3CC A$#M'C A$#V'C Opcione" de( #en? ta0(a Cuando se abre una nueva ventana 'xa&inar, se crea un nuevo men$ en la barra de men$s de sistema. )l men$ 1abla contiene las opciones bsicas para el manejo de tablas. Veamos algunas9 A@adir un nue-o re7i"tro )lija la opci n #.adir nue!o re,istro, o bien, pulse la combinaci n de teclas C3-;HM. ,e inserta un nuevo registro en la tabla que se est examinando. 3ambi'n es posible a+adir registros desde la ventana Co&andos emitiendo alguna de las sentencias9 Des rip i*n &bre la ventana Ca&biar para a+adir registros a una tabla interactivamente. &bren las ventanas 'xa&inar " Ca&biar, respectivamente. &bre una nueva ventana para poder editar un campo de tipo general.

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

+=

&77)2D B;&2W &77)2D Ca#0iar e( e"tado de (a #arca 0orrado Cuando un registro ya no se #ace necesario se marca como borrado. )ste es el paso previo a la eliminaci n de todos los registros marcados, cuyo proceso requiere el uso del comando P#CJ. Como es evidente, tambi'n se puede reali*ar esta acci n como todas las dems, desde la ventana Co&andos, mediante la sentencia D);)3) Ctra posibilidad interesante es alternar el estado del registro utili*ando un cuadro situado al lado del marcador de registro. 7ulsando alternativamente en este cuadro, modificamos el estado de la marca de borrado. Ir a un re7i"tro deter#inado ,e puede ir a un registro determinado modificando la celda activa mediante el rat n y las barras de despla*amiento vertical, o el teclado mediante los cursores. 7ero tambi'n se utili*ar el submen$ Ir al re,istro, cuyo contenido anali*ado es el siguiente9 Opcion Pri&ero /e"cripcin Va al primer registro de la tabla. Desde la ventana Co&andos #abr?a que utili*ar9 GC 3C7 Va al $ltimo registro de la tabla. Desde la ventana Co&andos #abr que escribir9 GC BC33C@ 7osiciona el puntero de registro en el siguiente registro. Cbteniendo el mismo resultado que utili*ando esta sentencia desde la ventana Co&andos@ ,W<7 A 7osiciona el puntero en el registro anterior. Desde la ventana Co&andos@ ,W<7 LA Cambia el puntero de registro a un registro espec?fico. Desde la ventana Co&ando #abr?a que emitir la siguiente sentencia9 GC n-egistro Donde n-egistro es el n$mero de registro donde se desea posicionar el puntero de registro. )ncuentra el registro que cumpla la

Plti&o

$i,uiente

#nterior

2e,istro nF&ero

'n ontrar

+>

expresi n de b$squeda. Veremos ms adelante la sintaxis del comando LOC#1' utili*ado por esta opci n de men$

Continua...

Curso de Visual Foxpro


Entorno de Desarrollo de Visual Foxpro (III)
%Dise+adores y &sistentes L ;a ventana ,esi n de datos L @anejo de -egistros Borrados L <mportaci n0)xportaci n de Datos L &sistente para importar datos L Formularios L Crear un Formulario -pido(

2?"9ueda de re7i"tro" &l reali*ar una consulta en busca de uno o varios registros que cumplan los criterios de b$squeda en una tabla es necesario aclarar algunos conceptos bsicos. 7or una parte, el mbito donde se va a reali*ar la consulta, que puede restringirse a todos los registros de la tabla, los AB siguientes o cualquier combinaci n vlida. 7or otra parte, existe el concepto de expresi n de b$squeda. =na expresi n de b$squeda se eval$a y compara con el registro activo. ,i no se cumple la expresi n de b$squeda, contin$a con el siguiente registro, y as? #asta llegar al final de la tabla. ,e puede comprobar si una b$squeda #a tenido 'xito observando en qu' posici n se encuentra el puntero de registro. 7or $ltimo, esta b$squeda contin$a mientras se cumpla una segunda expresi n. )s decir, se recorre toda la tabla mientras esta expresi n sea verdaderaU en cuanto eval$e a falsa, finali*a la b$squeda, aunque no #aya recorrido toda la tabla. Cuando se elige la opci n 'n ontrar del submen$ Ir al re,istro, se visuali*a el cuadro de dilogo, que resume los tres conceptos que se acaban de perfilar. ;a utilidad de este cuadro de dilogo es construir a partir de la informaci n introducida en el mismo una sentencia completa utili*ando el comando LOC#1'. 7or tanto, lo que vaya introduciendo en este cuadro de dilogo se incorporar como argumento tras el comando LOC#1'. Cuando se pulse en el bot n de comando 'n ontrar, la sentencia LOC#1' se emite desde la ventana Co&andos0 Veamos estos conceptos aplicados a la b$squeda de registros.

+?

A(cance )l &lcance delimita la cantidad de registros que se van a procesar e incluso desde y #asta qu' registro va a cubrir la b$squeda. Cuando se aceptan las modificaciones introducidas en este cuadro de dilogo se a+aden los argumentos necesarios en la sentencia LOC#1'. #l an e 1odos #r,u&ento #LL Des rip i*n <ncluye la totalidad de los registros en la b$squeda. )l l?mite de b$squeda va desde el registro n$mero A #asta el $ltimo. <ncluye s lo los n registros siguientes al actual en la b$squeda. )s decir, especificando AB en el cuadro de texto, incluir s lo los AB siguientes registros a partir del actual en la b$squeda. 7or lo tanto, el l?mite se centra desde el registro actual #asta el n$mero de registros especificados. ;a b$squeda se limita $nicamente al n$mero de registro especificado por este cuadro de texto. Comien*a la b$squeda a partir del registro actual y contin$a #asta el final de la tabla. 7or tanto, el intervalo de b$squeda se limita desde el registro actual al $ltimo de la tabla.

$i,uiente

3'I1 n

2e,istros 2estantes

2'CO2D n 2'$1

Cl7usula FO2 )ste es el n$cleo bsico de toda sentencia de b$squeda. Veremos que #ay multitud de comandos que pueden incorporar esta clusula para delimitar aquellos registros que cumplen los criterios especificados por esta misma clusula. Cuando se elige este bot n de comando, se activa el generador de expresiones de Visual Foxpro. )sta es una #erramienta de gran utilidad para la construcci n de expresiones, desde la ms simple #asta la ms compleja. Veremos el generador de expresiones ms ampliamente en secciones siguientes. 7ara confeccionar el ejemplo que veremos, #a bastado elegir el campo del cuadro de lista Ca&pos. & continuaci n se #a escrito la comparaci n. 7or tanto, estamos buscando aquel registro cuyo nombre de empresa sea igual a Centro, o al menos comience con esos caracteres. Cl7usula WBIL' ;a selecci n de registros efectuada mediante la clusula FO2 se refiere a toda la tabla por completo, y eso precisamente se diferencia de la clusula WBIL'. )sta $ltima restringe el mbito de b$squeda a que la expresi n l gica incluida con esta clusula sea cierta. )n el momento en que no se cumpla la expresi n, el comando que incluye esta clusula finali*a inmediatamente. 7or esta ra* n se puede decir que en este caso la b$squeda se reali*ar mientras se cumpliera la clusula WBIL', finali*ando la b$squeda cuando no se cumpliera, aunque no se #ubiera recorrido toda la tabla.

+:

La -entana Se"in de dato"


)ste cuadro de dilogo se utili*a como gestor para las tablas abiertas. Consta de dos cuadros de lista que visuali*an, 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. &simismo, es posible abrir, cerrar tablas o establecer nuevas relaciones entre las tablas abiertas. 7ero la funci n primordial puede ser la de examinar el contenido de la tabla seleccionada en el cuadro de lista #lias utili*ando el bot n de comando 'xa&inar. ;a particularidad de esta opci n reside en que se recupera el estado en que se cerr la ventana 'xa&inar para esa tabla la $ltima ve*, incluyendo tama+o y posici n de la ventana o el tipo y tama+o de la fuente utili*ada.

Modi-i ar las propiedades de la 1abla


Cuando se pulsa el bot n de comando Propiedades, se accede al cuadro de dilogo utili*ado para modificar las propiedades de la tabla abierta en el rea de trabajo actual. )ntre 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 'xa&inar predeterminada. 2?$er de dato" )l b$fer de datos se activa si se elige la opci n # ti!ar al&a ena&iento en bF-er de datos. )sto significa que los cambios que se efect$en sobre la tabla no sern actuali*ados en forma inmediata, y dependiendo del tipo de b$fer de datos elegidos, son potencialmente descartables en un momento determinado. ,iempre es posible cambiar el estado del b$fer de datos, y de #ec#o, si no se indica lo contrario, la tabla no se abre inicialmente con ning$n b$fer de datos activo. 7or tanto, si se desea utili*ar el b$fer de datos, es necesario activarlo desde este cuadro de dilogo, o bien, desde la ventana Co&andos mediante la funci n DB$'1 P2OP=). Se(eccin de :ndice Desde este cuadro combinado se elige el orden activo para el rea de trabajo actual. ,e muestran en 'l todas las etiquetas del ?ndice definidas para esta tabla. De este modo se pueden utili*ar el comando $''J y la funci n $''J=) para encontrar el registro que cumpla el criterio de b$squeda. Fi(tro de dato" Desde el cuadro de texto o utili*ando el generador de expresiones, llamado al pulsar el bot n de comando, generamos una expresi n de filtro de datos. )sto significa que cuando abramos una ventana 'xa&inar para esta tabla, s lo se van a visuali*ar aquellos registros que cumplan la condici n escrita aqu?. Fi(tro de ca#po"

,<

Del mismo modo que se establecen filtros para visuali*ar una parte de los datos presentes en una tabla, es posible reali*ar una acci n anloga con las columnas definidas en una tabla. De este modo, s lo aparecen en la ventana 'xa&inar aquellas columnas pedidas en esta opci n.

'xa&inar
;a Ventana 'xa&inar tiene una serie de caracter?sticas interesantes, entre las cuales podemos destacar las siguientes9 Modi$icar e( a"pecto de (a" co(u#na" ;as columnas de datos pueden cambiar su posici n y tama+o. /e$inicin de particione" =na Ventana 'xa&inar puede dividirse verticalmente en dos particiones. Cada partici n puede funcionar de forma independiente y presentar un aspecto distinto. Fuente" Cualquier fuente definida en Windows puede utili*arse para visuali*ar, en cualquier tama+o y tipo, informaci n en una ventana 'xa&inar0

#brir " Cerrar tablas


)stos dos botones de comando permiten abrir y cerrar tablas. Cuando se pulsa en el bot n de comando #brir se selecciona la $ltima rea de datos activa y se abre en esa rea. ,i existe una tabla seleccionada en la lista de alias activo, el comando de cierre se refiere al rea que est ocupando esa tabla.

'stable er rela iones


,i existen al menos dos tablas abiertas, es posible establecer relaciones entre ambas. ;a forma de establecer relaciones entre la s dos consiste en pulsar el bot n de comando 2ela iones teniendo una de las dos seleccionada en el cuadro de lista #lias. )n ese momento, en el cuadro de lista 2ela iones aparece la tabla elegida. 7ara establecer una relaci n entre las dos tablas es necesario saber qu' campo de la tabla principal L la que se eligi en primer lugar L #ay que buscar en la tabla secundaria. )so es precisamente lo que se le pide al usuario cuando se establece una nueva relaci n. )n primer lugar elegimos un campo de la tabla principal, y a continuaci n, el orden activo en la tabla secundaria.

Manejar re7i"tro" 0orrado"


;a eliminaci n de registros puede reali*arse de tres formas distintas, desde la ventana 'xa&inar, utili*ando el marcador de registros borradosU desde la opci n #lternar &ar a de eli&ina i*n del men$ 1abla, o bien, mediante el comando D'L'1' desde la ventana Co&andos0

,+

)l efecto inmediato es que el registro actual queda marcado para borrar y se requiere la posterior intervenci n del comando P#CJ, que elimina definitivamente de la tabla todos aquellos registros marcados para borrar. Recuperar re7i"tro" ,e puede alternar la marca de borrado de un registro determinado. )sto se consigue de tres formas distintas9 desde la propia ventana 'xa&inar, mediante la opci n #lternar &ar a de eli&ina i*n, presente en el men$ 1abla, o mediante el comando 2'C#LL0 ,(i#inar un conjunto de re7i"tro" 7ara evitar la necesidad de ir marcando cada registro individualmente, se recurre al marcaje de varios registros de una ve*. 7ara ello podemos utili*ar la opci n 'li&inar re,istros del men$ 1abla o bien el comando D'L'1'0 ,(i#inar re7i"tro" #arcado" ;os registros marcados como borrados permanecen en la tabla #asta que no se invoca el comando P#CJ o se utili*a la opci n Des&ar ar re,istros del men$ 1abla. ;a 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.

1"o de re7i"tro" 0orrado"


& continuaci n se detallan todos los comandos y funciones relacionados con el uso de registros borrados. Co&ando:Fun i*n D'L'1' A#l an eC AFO2 l'xpresi*nNC AWBIL' l'xpresi*nOC AI3 nLrea1raba+o M #lias1ablaC A3OOP1IMIQ'C D'L'1' F2OM A3o&breBaseDatosRC3o&bre1abla AWB'2' Condi i*nFiltroN A#3D M O2 Condi i*nFiltro000CC D'L'1' =A #lias1abla M nLrea1raba+oC) 2'C#LL A#l an eC AFO2 l'xpresi*nNC AWBIL' l'xpresi*nOC A3OOP1IMIQ'C P#CJ AM'MOC ADBFC Des rip i*n Borra uno o ms registros de una tabla. 7uede utili*arse el alcance o las expresiones FO2 y WBIL' para determinar el rango de registros a borrar. @arca registros para eliminar mediante $%L <ndica si el registro actual est marcado para borrar. -ecupera uno o ms registros marcados para borrar. 7uede utili*arse la clusula de alcance o las expresiones FO2 y WBIL' para delimitar el rango de registro a recuperar. )limina de la tabla activa todos los registros marcados para borrar. <ndicando la clusula M'MO compacta el espacio utili*ado por el arc#ivo de campos memo FP1. ,i se incluye la clusula DBF, se ignora la compactaci n del arc#ivo memo. <ndica si los registros marcados para
,,

$'1 D'L'1'D O3MOF

Q#P AI3 nLrea1raba+o M #lias1ablaC BL#3J AFI'LD$ ListaCa&posC A#l an eC AFO2 l'xpresi*nNC AWBIL' l'xpresi*nOC A3OOP1IMIQ'C

borrar estn disponibles cuando se utili*an otros comandos. )limina todos los registros de la tabla especificada, est'n o no marcados para borrar. Borra toda la informaci n de uno o ms registros sin marcarlos para borrar.

Ree#p(azar -a(ore" en ca#po"


@ediante la ventana 'xa&inar, tal como #emos ido viendo #asta a#ora, es posible alternar el contenido de uno o ms registros. ,in embargo, a veces se #ace necesario modificar un grupo de registros de una ve* sin necesidad de ir cambiando el valor de uno en uno. 7ara efectuar esta operaci n encontramos la opci n 2ee&plaKar a&po en el men$ 1abla0 )sta opci n muestra un cuadro de dilogo que permite efectuar este tipo de modificaciones masivas.

I#portacinA,;portacin de dato"
3an 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 fic#eros 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. Co&ando:Fun i*n 'IPO21 IMPO21 #PP'3D F2OM #PP'3D M'MO COP< 1O Des rip i*n )xporta datos de una tabla de Visual FoxPro a cualquiera de los tipos soportados. <mporta datos desde un fic#ero de datos externo en alguno de los formatos soportados. &grega registros de otra tabla al final de la tabla activa. Copia en un campo memo el contenido de un arc#ivo de texto. Crea una tabla nueva a partir del contenido de la tabla activa.

I#portar dato" Mi roso-t Visual FoxPro soporta los siguientes tipos de fic#eros, de los cuales puede extraerse informaci n si elegimos la opci n I&portar del men$ #r Gi!o9 1ipo Mi roso-t 'x el 50S =IL$) Des rip i*n )sta opci n permite importar datos de #ojas de clculo creadas con Mi roso-t 'x el 50S0

,-

Mi roso-t 'x el O0S, T0S " U0S =IL$) Lotus N5O5T T0x =WJT) Lotus N5O5T O0x =WJN) Lotus N5O5T N5# =WJ$) Paradox T05 " U0S =DB) $"&pGon" N0NS =W2N) $"&pGon" N0SN =W2J) Fra&eWorV II =FWO) Multiplan U0SN =MOD) 2apidFile =2PD)

)sta opci n importa datos de #ojas de clculo de Mi roso-t 'x el Versiones O0S, T0S " U0S0 <mporta datos procedentes de una #oja de clculo reali*ada con Lotus N5O5T versi n T0x0 <mporta datos procedentes de una #oja de clculo reali*ada con Lotus N5O5T versi n O0x0 <mporta datos procedentes de una #oja de clculo reali*ada con Lotus N5O5T versi n N5# <mporta datos procedentes de la base de datos Paradox en su versi n T05 " U0S0 7ermite importar datos procedentes de la #oja de clculo del paquete integrado $"&pGon" versi n N0NS0 7ermite importar datos procedentes de la #oja de clculo del paquete integrado $"&pGon" versi n N0SN0 7ermite importar datos procedentes de la #oja de clculo del paquete integrado Fra&eWorV II0 7ermite importar datos procedentes de la #oja de clculo Multiplan versi n U0SN0 <mporta datos procedentes de 2apidFile

A"i"tente para i#portar dato"


)ste asistente es adecuado en aquellas ocasiones en las que se necesita moldear algunos aspectos de la importaci n de datos. )ste sencillo pero potente asistente permite especificar el origen y destino de los datos, ver qu' datos se estn importando directamente y especificar el nombre y tipo de cada uno de los campos que se estn importando. Paso N0 #r Gi!os de ori,en " de destino0 )n este primer paso especificamos el tipo de fic#ero de datos del que se van a extraer los datos. & continuaci n se indica el fic#ero de datos y, por $ltimo, el nombre de la tabla sobre la que se van a copiar los registros importados. Paso O0 Deter&inar el -or&ato de los datos )n este se puede tener una vista previa de la informaci n que se pretende importar. )sto es importante, pues permite identificar correctamente los datos que pretendemos insertar, ya que podemos volver atrs y especificar otro origen de datos en cualquier momento. Paso T0 De-inir a&pos i&portados &ntes de efectuar la importaci n de datos podemos ver la estructura de la informaci n. )sta pantalla permite el cambio de los siguientes parmetros9 3o&bre, 1ipo, #n Go y posiciones De i&ales0 Paso TW0 'spe i-i ar op iones interna ionales0

,4

& la vista de la informaci n, se puede alternar unas cuantas propiedades de la informaci n a importar. 7or ejemplo, si se #a especificado un arc#ivo de texto como origen de datos, podemos modificar diversos aspectos de esta transformaci n, tal como especificar el carcter separador de campos.

For#u(ario". Introduccin
)n principio, la ventana 'xa&inar puede se suficiente #erramienta para la visuali*aci n y modificaci n de tablas, pero, adems, podemos utili*ar formularios para dar una presencia ms $til y verstil a la misma informaci n. ;os formularios contienen cualquier tipo de control, desde etiquetas, pasando por cuadros de texto, cuadros de edici n, #asta cuadros combinados o cuadros de lista. )xiste un n$mero suficiente de controles disponibles de forma estndar, pudi'ndose ampliar esta lista con controles dise+ados por el propio usuario o controles universales OCI0 =n formulario tiene asociado un entorno de datos que permite abrir y cerrar de forma automtica las tablas que el mismo formulario necesita. <ncluso es posible utili*ar el resultado de consultas de una base de datos. Ctra caracter?stica importante relativa a los controles insertables en un formulario es la vinculaci n que pueden mantener con un origen de datos. )sto quiere decir que un control puede visuali*ar y editar directamente el contenido de un campo de una tabla. 7or ejemplo, podemos definir que un cuadro de lista edite el campo relativo al nombre de un producto definido en la tabla Produ tos, o una casilla de verificaci n indicando si ese producto dispone de existencia suficientes. )n definitiva, se trata de visuali*ar informaci n de forma que el usuario identifique claramente el tipo de informaci n que necesita para tomar decisiones.

Crear un $or#u(ario rBpido


;a forma ms sencilla de crear formularios es, en principio, recurrir al asistente para la creaci n de formularios. 7uede llamar a este asistente cuando crea un nuevo formulario, o bien desde el men$ #sistentes, escogiendo la opci n For&ulario0 Como datos bsicos, 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. )l orden en el que van a figurar en el formulario definitivo depende del orden que se vayan eligiendo desde el cuadro de lista Ca&pos disponibles #acia el cuadro de lista Ca&pos sele ionados0 Paso N0 $ele i*n de a&pos

)l 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 visuali*aci n y edici n desde el nuevo formulario. Como dato interesante se puede comentar el #ec#o de que este generador utili*a como etiquetas de campo, es decir, el texto que figura delante de cada uno de los controles de edici n, el encabe*ado que se #aya definido en la base de datos si la tabla pertenece a una. Paso O0 'stilo

,8

)xiste una serie de estilos predefinidos que el asistente utili*a como patr n en el momento de generar el aspecto visual general del formulario y cada uno de los controles que lo contienen. )sta prestaci n se completa con la posibilidad de elegir botones de comando grfico o de texto. )stos 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 visuali*ando actualmente. 7ueden, adems, insertar o eliminar registros de la tabla. Paso T0 Orden0 ,i la tabla no dispone de una secuencia de ordenaci n, lo que #ace este paso es permitir crear una a partir de #asta tres campos de la tabla origen de datos. )ste orden ser utili*ado en los despla*amientos #acia atrs o adelante cuando se utili*an los botones de comando de despla*amientos por registros. Paso U0 FinaliKar Como informaci n final, el asistente necesita saber el t?tulo del formulario y qu' deseamos #acer con 'l. & este $ltimo respecto tenemos tres opciones9 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. &ntes 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 #an definido en los tres pasos anteriores. ,jecutar e( nue-o $or#u(ario =na ve* que se #a generado el formulario y tras reali*ar 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 mismo9 '&pleados

Macro"
)xisten multitud de situaciones donde repetimos #asta la saciedad la misma secuencia de teclas9 al abrir un proyecto, al abrir una pantalla, al compilar, etc. ;as macros pueden ayudar a que la secuencia de teclas que tengamos que utili*ar se redu*ca lo ms posible y de esta forma aprovec#emos mejor el tiempo. ;as 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.

La" Macro" de "i"te#a


:ui* la macro ms conocida, pero no por ello reconocida como tal, sea FN, utili*ada para activar la ayuda de sistema. )xisten otras macros ms que vamos a ver

,=

a continuaci n y que son las que incorpora Visual FoxPro en el momento de ser instalado9 Ma ro FO Des rip i*n &bre la ventana $esi*n de Datos # i*n )jecuta la siguiente secuencia de teclas9 $'1 =INTRO)0 )s decir, escribe en la ventana de comandos el comando $'1 y a continuaci n la tecla <23-C. FT ;ista los registros de la tabla activa por pantalla )jecuta la siguiente secuencia de teclas9 LI$1 =INTRO)0 3al como #emos visto en la macro anterior, escribe en la ventana de comandos el comando LI$1 y a continuaci n la tecla <23-C. FU F5 FX FY FZ )fect$a un directorio por pantalla @uestra la estructura de la tabla activa por pantalla @uestra el estado del sistema por pantalla @uestra el contenido de la memoria por pantalla @uestra el contenido del registro actual de la tabla activa por pantalla &bre la ventana de inserci n de nuevos registros en formato fic#a de la tabla activa CC#o 7ra0ar una #acroD )s muy sencilloU para ello basta con pulsar las teclas @&MX,C=;&,LFAB. Visuali*amos un cuadro de dilogo pidiendo la combinaci n de teclas a la cual vamos a asociar la secuencia de teclas que estn a punto de ser grabadas. )s decir, cada ve* 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 dilogo. Cuando pulsemos # eptar en este cuadro de dilogo, todas las teclas pulsadas quedarn registradas en la macro llamada ControlL&ltLF, invocada siempre que se pulse la combinaci n de teclas C3-;L&;3LF. Cono*camos los nombres de cada una de las teclas para poder identificarlas correctamente. 3o&en latura de te las 1e la 3o&bre ;)F3&--C! -<GF3&--C!
,>

)jecuta la siguiente secuencia de teclas9 DI2 =INTRO)0 )jecuta la siguiente secuencia de teclas9 DI$PL#< $12;C1;2' =INTRO)0 )jecuta la siguiente secuencia de teclas9 DI$PL#< $1#1;$ =INTRO)0 )jecuta la siguiente secuencia de teclas9 DI$PL#< M'MO2< =INTRO)0 )jecuta la siguiente secuencia de teclas9 DI$PL#< =INTRO)0 )jecuta la siguiente secuencia de teclas9 #PP'3D =INTRO)0

F9

Ini io =Bo&e) Fin ='nd) #!P7, =Pa,e ;p) 2eP7, =Pa,e Down) $up =Del) Borrar =Ba Vspa e) Borrar espa iadora =$pa ebar) Ins 1abulador 2etro eder tabulador =$Gi-t 1ab) Intro ='nter) FN a FNO Ctrl8FN a Ctrl8FNO $Gi-t8FN a $Gi-t8FNO #lt8FN a #lt8FNO #lt8S a #lt89 #lt8# a #lt8Q Ctrl8 Ctrl8 Ctrl8ini io Ctrl8Fin Ctrl8#!P7, Ctrl82eP7, Ctrl8# a Ctrl8Q Bot*n dere Go rat*n Bot*n iK(uierdo rat*n Cual(uier bot*n del rat*n 's

=7&--C! D22&--C! FC@) )2D 7G=7 7GD2 D); B&CW,7&C) ,7&C)B&<2, 3&B B&CW3&B )23)FA, F5, F4 ... CtrlHFA, CtrlHF5... ,#iftHFA, ,#iftHFA5... &ltHFA, &ltHF5, &ltHF4... &ltHB, &ltHA, &ltH5... &ltH&, &ltHB, &ltHC... CtrlH;)F3&--C! CtrlH-<GF3&--C! CtrlHFC@) CtrlH)2D CtrlH7G=7 CtrlH7GD2 CtrlH&, CtrlHB, CtrlHC... -<GF3@C=,) ;)F3@C=,) @C=,) ),C

CC#o -i"ua(izar

editar (a" #acro" acti-a"D

7ara acceder al cuadro de dilogo para el mantenimiento de macros elija la opci n Ma ros del men$ 1ools. ,e visuali*a una ventana, esta ventana est subdividida en los siguientes elementos9 Lista de &a ros de-inidas. )ste cuadro de lista visuali*a los nombres de las macros definidas en este momento en el sistema. Cada elemento de la

,?

lista visuali*a el nombre que se le #a 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. 4rabar. <nicia la secuencia de grabaci n de una macro. )s similar a la pulsaci n de las teclas @&MX,C=;&,HFAB. 3ue!a. Crea una macro nueva. 'ditar. )dita el contenido de una macro existente. Borrar. Borra una macro definida. Con+unto de &a ros. ;os botones de comando definidos en esta *ona permiten recuperar un conjunto de macros guardadas en un fic#ero, salvar las existentes en un fic#ero o #acer que las macros definidas en este momento sean las predeterminadas cada ve* que se arranca Visual FoxPro0 <ra0acin de #acro" )ste ejemplo trata de una macro para crear un nuevo proyecto cada ve* que se pulsa la tecla F4. ,e puede iniciar la secuencia de grabaci n de la macro de dos formas9 7ulsar la combinaci n de teclas @&MX,C=;&,LFAB. )scoger del cuadro de dilogo que aparece al pulsar 1ools5Ma ros la opci n 2e ord0 )n cualquier de los dos casos se visuali*a el cuadro de dilogo correspondiente. & continuaci n pulsaremos F4 para que quede registrada como tecla de inicio de la macro. Como nombre de macro la vamos a llamar 3ue!oPro"e to0 Dado que ya existe la macro F4 definida en el sistema, vemos una ventana de alerta advirtiendonos esta circunstancia. )sta ventana admite tres repuesta totalmente distintas9 a( $obres ribir. )sta ser la acci n l gica que escogeremos para continuar con este ejemplo. Vamos a sobreescribir el contenido de la macro F4 con las teclas que vamos a dejar registradas a continuaci n. b( #.adir pulsa iones. Como veremos ms adelante, es posible a+adir a una macro existentes nuevas pulsaciones al final de la misma. c( Can elar. Cancela la grabaci n de la macro. Desde el momento en que #emos pulsado sobre el bot n de comando $obres ribir, todas las teclas que se pulsen a partir de ese momento quedarn registradas en la definici n de la macro 3ue!oPro"e to0 )l objetivo de esta macro es escribir de forma automtica en la ventana de comando la instrucci n C2'#1' P2OH'C1 y a continuaci n la tecla Intro0 7ara asegurar que vamos a escribir en la ventana de comandos, la activamos mediante C3-;LF5. 7or tanto pulsamos9 Ctrl-F,

,:

& continuaci n, sobre la ventana de comando, continuamos escribiendo la instrucci n C2'#1' P2OH'C1 y por $ltimo pulsamos Intro0

Cuando se #aya pulsado intro, se visuali*a el cuadro de dilogo de apertura de fic#eros. )n este momento y para finali*ar la grabaci n de la macro, volvemos a pulsar @&MX,C=;&LFAB. Vemos el cuadro de dilogo9 Insertar literal. <nserta en la definici n de macro la tecla tal cual se #a pulsado. Insertar pausa0 )ste bot n de comando permite insertar una pausa en la macro de dos formas distintas9 1e la para reanudar9 Cuando se inserta una pausa de este tipo en una macro, 'sta no reanuda su ejecuci n #asta que no se pulsa una tecla. $e,undos0 )sta pausa parali*a momentneamente la macro los segundos especificados en el control num'rico.

7ulsamos # eptar y finali*amos la grabaci n de la macro. De esta forma, cada ve* que deseemos crear un fic#ero nuevo de proyecto, tan s lo tendremos que pulsar F4. ,dicin de #acro" Dado que a veces es dif?cil recordar la secuencia de teclas que conducen a reali*ar una acci n, es posible que cometamos errores. 2o #ay problema, puesto que es posible introducir nuevas pulsaciones o eliminarlas en cualquier lugar de la macro. 7ara modificar el contenido de una macro, sigamos los siguientes pasos9 A. )lija la opci n Ma ros del men$ Berra&ientas0 5. ,eleccione de la lista de macros definidas la que desee modificar. 7ara editar la macro, pulse el bot n de comando 'ditar0 &parecer un cuadro de dilogo. )n el ejemplo anterior #ab?amos creado una macro %3ue!oPro"e to( que se activaba mediante la pulsaci n de la tecla F4. Veamos su contenido9 %C3-;HF5(C-&3)%,7&C)B&-(7-CY)C3%)23)-(. 3al como se grab , en primer lugar detect la pulsaci n de la combinaci n de teclas C3-;HF5 para asegurar que escrib?amos en la ventana comando. & continuaci n, el texto C2'#1' P2OH'C1 separado por un espacio, y finalmente, la tecla <23-C.

Continua...

-<

-+

Laboratorio 3[ N
Ob+eti!o9 Creaci n de tablas libres y dependientes, Bases de Datos, -elaciones
temporales y permanentes, <ntegridad -eferencial. %)l usuario debe tener <nstalado en su 7C. Visual Fox7ro /.B(
3ota@ $r0 ;suario si,a la se uen ia paso a paso, &a"or&ente todo ser7 !)a &enF .

A.L Cargando el ,istema desde !indo"s .10./9 Faga ClicN en @en$9 <nicio 7rogramas @icrosoft Visual Fox7ro @icrosoft Visual Fox7ro /.B

Car7a co#p(etada E,"to de0e e"tar o0"er-ando en "u panta((aFG (ue7o di7ite en (a 3entana de Co#ando"' R1N M/ C'H6RACTICA I,nterJ ,"ta orden' Crea una Carpeta S,T /,FA TO C'H6RACTICA I,nterJ * ' Acti-a Carpeta por /e$ecto

5.L Creaci n de una 3abla ;ibre 2os proponemos a#ora, crear una tabla ;ibre, para lo cal =d. Faga9 ClicN en las siguiente opciones desde el @en$ 7rincipal9 &rc#ivo 2uevo %( 3abla 2uevo &rc#ivo
3er (a "i7uiente Fi7ura E6a7. 2F

-,

Viendo la pantalla de la derec#a, ,eleccione la carpeta donde desea guardar su tabla.


4uardar en@ 7-&C3<C& 3o&bre de la 1abla9 C;<)23), 4uardar o&o tipo@ 3abla 0DBF

;uego ClicN en Guardar

)n las siguientes l?neas tiene =d. ;a estructura de la tabla Clientes. C;<)23),.DBF 2ombre de Campo ClieCod Clie2om Clie&pe ClieDir Clie-uc )n esta pantalla es donde =d. Va #a dise+ar la estructura de la tabla. &delante =d. 2ota9
No pre"ione ,NT,RG "i de"ea pa"arG de una (:nea a otra. 3F6G puede interpretarG 9ue aG a ter#inado. 6ara e"te $in uti(ice (a tec(a TA2 e( MO1S,.

3ipo C C C C C

&nc#o 4 EB EB EB 1

Decimales

Descripci n
Cdigo del Cliente Nombre del Cliente Apellidos: Paterno y Materno Direccin del Cliente Nmero de RUC del Cliente

Despu's de #aber terminado, Faga ClicN en9 &C)73&&parecer la siguiente consulta9

--

H-esponda afirmativamente, #aciendo ClicN en $)0 Lue,o, in,rese par de re,istros0


TA@AA. # % 6#I 6T . Aas si&uientes tablas2 cuya estructura se muestra en la parte in/erior2 las !amos a crear como tablas dependientes$ ABTICCAD$#@F ArtCod Art6om Art%re Art.toc7 ArtFoto C C 6 6 * ,8 > 8 4 FACTCBA.$#@F 6umFac FecVen ArtCod ClieCod Cant %reVen C T C C 6 6 8 ? 8 ?

, <

%ara lo cual2 debemos crear primero la @A. # #ATD. a quien !a estar asociado2 nuestras tablas$

Creacin de una 2a"e de /ato"


Crearemos nuestra @ase de #atos2 "aciendo Clic72 en las si&uientes opciones2 iniciando desde el E 6C %BI6CI%AA$ Clic7 en: ' n otras latitudes dicen Pincha ! en lu"a de deci Click#) Archivo Nuevo (*) Base de Datos Nuevo Archivo Aparece el &r5/ico de la derec"a2 #i&itar en: @ase de datos: Ventas Aue&o Clic7 en: uardar

Aue&o aparecer5 el &r5/ico de la parte in/erior$

reacin de una "a%la &ependiente

-4

%ara crear tablas dependientes2 de nuestra @ase de datos2 existen muc"as /ormas2 pero una de ellas2 es del si&uiente modo: Ale!amos el Eouse sobre el 5rea libre de la @ase de #atos y lue&o2 presionamos el @otn #erec"o de la misma$ n el menF contextual2 eli&imos: 'ueva "a%la, $ ot a vez Click en 'ueva "a%la Asi&nar nombre de tabla: ARTI!"#O Aue&o Clic7 en: "ARDAR Dbser!e el &r5/ico in/erior y dise(e la estructura de las tablas dependientes2 las estructuras se encuentran en la p5&ina anterior$

Nota# %bse ve este " &fico $ la de Clientes ' P&"ina ()! ambos son de c eaci*n de est uctu as! +e o tienen una ma cada dife encia.

Finalmente2 cuando "aya terminado a crear la estructura$ Ga&a Clic7 en opcin: Aceptar e introduzca los datos correspondientes ' dos re&istros como mnimo)$ A"ora2 usando los pasos anteriores se le pide a Cd$ Crear la tabla:

FA!T"RA$%DBF

-8

Al /inal de un trabajo arduo2 Cd$ deber5 lle&ar a la si&uiente presentacin:

estos momentos tenemos Articulo y Facturas como se obser!a en el &r5/ico anterior2 pero al inicio "abamos creado CAI 6T .$#@F2 como una tabla libre2 el cual a"ora desearamos que /orme parte de nuestra @ase de #atos de nombre Ventas2 para tal /in "aremos los si&uientes pasos:

!onversi&n de Ta'la #i're en Dependiente


Clic7 en: @otn #erec"o del Eouse2 sobre el dise(ador de @ase de #atos A&re&ar tabla #oble Clic7 en Clientes Aue&o tendremos2 como muestra la s&te$ /i&ura: 'Dpcin del EenF Contextual)

Relaciones(

-=

Con la /inalidad de manipular simult5neamente2 datos de las tres tablas2 debemos relacionar estas$ %ara ello2 no debemos ol!idar2 las dos condiciones principales para la existencia de Belaciones: +$ .e debe &arantizar existencia de Campos Cla!es Ala!es2 entre las tablas participantes 'datos i&uales coincidentes2 del mismo tipo y a!eces del mismo tama(o$ %ero no necesariamente con nombres i&uales)$ .e debe indexar las tablas por su campo cla!e: Tablas "ijo de tipo principal Candidato2 y Tablas padre de tipo 6ormal 'Aqu2 sobre todos sus campos cla!es)

,$

l autor duda de su comprensin$ %or tanto2 antes de continuar le interrumpe para "acerle la si&uiente consulta: ntre Clientes y Facturas$ HA qu3 campos de ellas2 los podra considerar como campos Cla!esI $$$$$$$$$$$$$$$$$$$$$$$ y $$$$$$$$$$$$$$$$$$$$$$$$$$2 porqu3I $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ HJ

n el cuadro in/erior2 escriba los campos cla!es de las tablas2 asimismo identi/ique tablas "ijo y %adre No)'re Ta'la Clientes$db/ Articulo$db/ Facturas$db/ No)'re del !a)po !lave $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ tipo de ta'la (*adre & +i,o) $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

INDE-A!ION:
#ada las re&las anteriores y cumpliendo exactamente2 iniciamos a indexar las tablas$ Como un ejemplo2 de qu3 manera se realizan2 se "ace aqu una indexacin2 para la tabla CAI 6T .$ 6ota: %ara el resto de las tablas2 el usuario2 deber5 se&uir la misma secuencia$ s aqu donde el usuario podr5 usar su razonamiento y su "abilidad de comprensin$ Caso contrario2 puede !ol!er a leer las lneas anteriores$

Indexaci&n de !lientes%d'.
+$ ,$ Cbicar el puntero del Eouse sobre la tabla Clientes y presionar el botn n el menF Contextual2 "acer Clic7 sobre: ->

&erecho del (ouse

/odi.icar 0% Gacer Clic7 en la /ic"a( 1ndices '!er /i&$ in/erior)

-$

#i&itar el nombre de la etiqueta 'Ta&) para nuestro arc"i!o ndice '!er &ra/$)$ Asi&namos por ejemplo el mismo nombre del campo 'aunque no siempre debe ser as)$ #i&itar:

!liecod
4$ $elecciona)os el tipo de ndice2 sabemos que Clientes es tabla "ijo2 por tanto que sea:

*rincipal
8$ El .icha de Expresi&n 2 podemos #i&itar2 la expresin el nombre del campo2 por el cal deseamos2 que nuestra sea indexada$ %ero muc"o mejor s "acer Clic7 en:
)$unto $unto*

%%%
=$

que se encuentra al costado de expresin$

Ale&amos a la !entana que se muestra en la si&uiente p5&ina$ Aqu usando: Funciones 'matem5ticas2 l&icas2 /ec"a y Cadena)2 Variables y Campos2 podemos preparar una expresin ndice2 por muy complicadas que este /uera$ 6uestro caso s sencillo$ Gacemos #oble Clic7 sobre el campo: de la lista de campos$

!lie!od

-?

>$

Gacemos Clic7 en: de esta !entana de expresiones$

Aceptar
?$

Gabremos !uelto a la !entana anterior2 en ella tambi3n "acemos Clic7 en: que se encuentra en esta !entana$

Aceptar

Venta de expresin Finalmente Visual Fox%ro2 nos "ace la si&uiente consulta:

%odemos responder A/irmati!amente$ #e esta manera2 "abremos indexado2 la tabla Clientes$ Dbser!e su pantalla$ Aa tabla Clientes tiene un ndice que se muestra identi/icado por una lla!ecita2 por ser de tipo principal$

-:

A"ora2 Cd$ tiene la dura tarea de indexar2 las otras tablas 'Articulo y Facturas)$ Al /inal del camino2 como alumbrase una luz$ #eber5 mostrar una /i&ura2 como se muestra en la parte derec"a$ As2 "emos terminado el tema de ndexaciones$ A"ora nos toca "acer la Belacin$

(2)E,ecuci&n de la Relaci&n
Ga&a Clic7 en: Indice ClieCod de Clientes y arrastre "acia el ndice ClieCod de Facturas y libere el Eouse$ 'esto es arrastrar la etiqueta de ndice "ijo "acia el padre)$ Ga&a similar con el ndice ArtCod de Articulo y arrastre Aue&o debe una presentacin similar a la si&uiente &r5/ica

4<

@ueno2 "asta aqu parece que todo !a bien$ #espu3s de tanto trabajar2 no quisi3ramos que el resultado sea un desastre$ %or ello2 primero !amos a !eri/icar los datos de los campos cla!es$ %ara ello "a&a doble Clic7 en cada una de las tablas y con la ayuda del Eouse2 puede mostrar i&ual que en pantalla in/erior2 las tablas abiertas$ As ase&ur3se que "aya datos comunes i&uales en los campos cla!es2 tanto en la tabla padre e "ijos '!er /i&ura)

Finalmente para poder mostrar examinar la in/ormacin de la @ase de #atos 'anteriormente preparados) !amos "a crear una Vista r5pida$ s de notar que no podemos usar con toda ele&ancia el comando @roKse2 como lo "acamos ante una relacin temporal$

+E, -.' &E V-S",/


Aas !istas como un arc"i!o !irtual2 se crean ejecutando la si&uiente secuencia: #esde menF principal$ Ga&a Clic7 en:

Archivo Nuevo ( ) Vista Nuevo Archivo


Vista personalizada$

EenF %rincipal .ubmenF del menF Arc"i!o Tipo de arc"i!o a crear

4+

A"ora aparece una !entana2 mostrando las tablas ori&en para la !ista a preparar2 "a&a: #oble Clic7 en :

Facturas !lientes Articulo

Tabla padre Aue&o las tablas "ijo$ #espu3s "acemos Clic7 en :

!errar
n la /ic"a Campos2 seleccione2 los si&uientes campos2 "aciendo:

#oble Clic7 en: Factu as.Numfac

, ticulo., tP e
Factu as., tCod

, ticulo., t-tock
Factu as.Cliecod

Clientes.ClieNom
Factu as.Cant

Clientes.Clie,+e
Factu as.P even

Clientes.ClieDi
, ticulo.Nom

#ebe mostrarse un &r5/ico similar$ %reparada la !ista y seleccionada los campos2 lo que esperamos es ejecutar2 para !er el resultado$

4,

xisten !arias maneras2 pero la m5s /5cil2 es tal!ez2 "acer clic7 en el smbolo ' Admiracin)

! ) '.i&no de

Lue se encuentra en la @arra de "erramientas$ Dtra /orma es presionar @otn #erec"o y ejecutar Consulta

Eas o menos as debe ser el resultado2 si no obser!a nin&Fn dato en esta !entana2 debe "aber /allado: bien en los campos cla!es 2 en la preparacin de ndices tal!ez en el arrastre de etiquetas$ %uede !ol!er a re!isar y lue&o ejecutar la !ista$ 0in del la%oratorio

4-

Laboratorio 3[ O
Ob+eti!o9 Creaci n de Vistas y Consultas y comparaci n entre ellas N05 Cargando Visual Fox7ro desde el ,istema Cper. !indo"s .1
Faga ClicN en @en$9 <nicio 7rogramas @icrosoft Visual Fox7ro @icrosoft Visual Fox7ro /.B

2%3 A'rir "na Base de Datos Ventas


.ace Click en#

,rchivo ,%rir
n Buscar en: seleccione la carpeta:

$ractica.
n: Archivos de tipo: seleccione:

Base de &atos )1.d%c*


Aue&o "a&a doble Click en:

Ventas .

44

Aa si&uiente pantalla2 muestra la base de datos V 6TA.2 abierta$

.imilar como "icimos en el primer laboratorio2 !amos a crear !istas$ +E, -.' &E V-S",/ Ga&a Clic7 en: ,rchivo 'uevo ( ) Vista '!er &r5/ico* 'uevo ,rchivo

n la si&uiente pantalla se obser!a2 a seleccionar la clase del /uente para !ista a crearse 'tablas de !istas anteriores)

48

Asumiendo que se !an "a crear !istas desde tablas2 "a&a doble Clic7 en: Facturas2 Clientes Articulo$ Finalmente "a&a Clic7 en !errar En la si&uiente p5&ina2 tenemos el &enerador de !istas$ Ja conocida en el laboratorio anterior lue&o en: y

Nota# Las tablas fuente 'factu as! Clientes $ , ticulo)! no deben e+eti se! si eso no fue a el caso! bo a la

4=

tabla /ue se est& ca "ado mas de una vez .

#ebajo de las tablas2 se podr5 obser!ar las /ic"as: !a)pos4 !o)'inaci&n4 Filtro4 ordenar por4 A5rupar por4 !riterio de actuali6aci&n 7 Varios% En la Ficha !a)pos( .eleccionemos los si&uientes campos:

Factu as.Numfac

, ticulo., tP e
Factu as., tCod

, ticulo., t-tock
Factu as.Cliecod

Clientes.ClieNom
Factu as.Cant

Clientes.Clie,+e
Factu as.P even

Clientes.ClieDi
, ticulo.Nom

Gaciendo doble CAICM en la misma$

%ara probar que todo !a bien2 "a&a Clic7 en @otn E8E!"TAR presione @otn #erec"o y jecutar Consulta

( 9 ) de la barra de "erramientas$

Nota# -i no obse va nin"0n dato! evisa datos del cam+o clave 'en la 1D) * la elaci*n $ los 2ndices

$i cree conveniente4 antes de iniciar a usar las .ichas4 puede pedir al Asistente del #a'%4 una 'reve explicaci&n de la .unci&n de cada una de las .ichas% !aso :ue "d% Es un autodidacta4 puede recurrir al )aterial 'i'lio5r;.ico% E,)% Ru'<n I5lesias sta podra ser una bre!e explicacin: Fic"a: Combinacin$- Euestra el tipo de enlace entre tablas: Interna2 Izquierda2 #erec"a y Full Filtro $- speci/ica la condicin que debe cumplir los re&istros a !isualizar$ Drdenar por $- %ro!ee opcin de clasi/icar en /orma ascendente descendente$ A&rupar por $- Facilita crear &rupos de datos Criterios de Actualizacin$- o/rece las maneras como se debe actualizar nuestros datos Varios $- .i ser5n a/ectados todos los re&istros y los duplicados$

En la si&uiente p5&ina2 usaremos la /ic"a /iltro2 para realizar resol!er las ciertas interro&antes$ 4>

Tales como: deseamos saber qu3 artculos "an sido /acturadas un da !iernes a las +< de la ma(ana2 cuantas !entas se transaron con precio in/erior al costo de compra2 etc$

xtraccin de #atos:
Gacemos Clic7 en /ic"a FI#TRO

n no)'re de ca)po seleccionamos un campo preparamos una expresin$ n !riterios asi&namos el operador$ n e,e)plo completamos la condicin jm( Facturas%!ant = >? 've " &fico)

sta condicin si&ni/ica2 que deseamos obser!ar o mostrar aquellos Artculos /acturados2 cuya cantidad sea i&ual a 8< unidades$ %ara !er ejecutamos "aciendo: Clic7 en botn E8E!"TAR4 7 la si5uiente ser1a un e,e)plo(

Ahora2 estimado usuario2 despu3s de una amena explicacin2 creo que est5 en la posibilidad

4?

de resol!er2 las si&uientes interro&antes2 sobre nuestra base de datos$ Eostrar: Artculos /acturados con las si&uientes condiciones: +$ ,$ -$ 4$ Cuyo 6ombre del artculo empiece con la letra 0A1 Cuya /ec"a de !enta sea un Viernes Cuya cantidad sea mayor que -< y stoc7 menor i&ual a ,< Ten&a "ora de !enta a las +< de la ma(ana

8$ =$ >$

Fec"a de !enta Viernes +- a las <? de la ma(ana2 ordenado por /ec"a$ Fec"a de !enta ,? de Nulio a las +<:-< AE ' s un buen peruano2 que trabaj este da) %recio de Compra sea mayor que precio de !enta 'Bemate)

,$- Betire todas las condiciones2 y en la /ic"a a&rupar por2 elija 6ombre del Cliente para a&rupar2 y jecute$ Aue&o di&a sus obser!aciones y conclusiones$ Terminada nuestra labor2 "acemos clic7 en botn cerrar de la !entana !ista$

Ante consulta anterior2 responda a/irmati!amente '$1) y lue&o asi&ne un nombre2 para !ista 'ejm$ Vista+)$ Finalmente "a&a Clic7 en Aceptar%

+E, -.' &E .'S23",S


Aas consultas2 a di/erencia de !istas2 son arc"i!os reales$

*ara crear consultas hace)os(

4:

Clic7 en: Arc"i!o 6ue!o ') Consulta 6ue!o Arc"i!o .imilar que en Vistas2 "acemos doble en: Facturas Clientes y Articulo

.eleccione los si&uientes campos:


Facturas$6um/ac Clientes$ClieApe Facturas$FecVen Clientes$Clie#ir Facturas$ArtCod Articulo$Art6om Facturas$Cliecod Articulo$Art%re Facturas$Cant Aritculo$Art.toc7 Facturas$%reVen Clientes$Clie6om

Ga&a Clic7 en E,ecutar de la @arra de "erramientas2 obser!e y cierre el pre!io$

Ga&a Clic7 en !onsulta del EenF principal

Aue&o en opcin: Ver $@# $E#E!T Facturas%nu).ac4 Facturas%.ecven4 Facturas%cant4 Facturas%preven4A !lientes%clieno)4 !lientes%clieape4 !lientes%cliedir4 !lientes%clieruc4A Articulo%artno)4 Articulo%artpre4 Articulo%artstocBA FRO/ ventas9clientes INNER 8OIN ventas9.acturasA

8<

INNER 8OIN ventas9articulo A ON Articulo%artcod = Facturas%artcod A ON !lientes%cliecod = Facturas%cliecod

Ga&a Clic7 en !onsulta del menF principal

Clic7 en Dpcin: Destino de !onsulta

Dbser!amos que por de/ecto est5 seleccionado destino xaminar para la consulta$ +$ .eleccionamos Cursor Asi&namos un nombre 'ejm): C6I Clic7 en Aceptar2 lue&o Clic7 en jecutar HAle& a obser!ar al&oI2 Continue ,$ Ga&a Clic7 en EenF: Consulta #estino de la Consulta2 y .eleccione Tabla2 en esta oportunidad$ Asi&ne nombre 'ejm): C %. Clic7 en Aceptar Clic7 en jecutar

8+

H sta !ez s obser!2 al&oI$ Tal!ez tu respuesta es 6A#A$ n !erdad tiene razn2 la respuesta es que2 en la primera !ez "a creado una tabla temporal 'Cursor) y "a en!iado a la memoria del computador$ J la se&unda "a creado una tabla2 que por su puesto debe "aberse &uardado en el disco duro2 en la carpeta por de/ecto de su computador$ Como comprobar lo que se diceI %aso +$- Ga&a Clic7 el menF Ventana 'EenF principal)2 lue&o en .esin de #atos$ Vea si existe tablas C6I y C %. car&adas en di/erentes 5reas$ 'justi/icada su existencia) %aso ,$- %resione la combinacin de teclas: Ctrl;F, #i&ite: #IB y presione nter Ten&a %resionado simult5neamente las teclas: Ctrl;."i/t;Alt '#ebe estar obser!ando la existencia del C %.$#@F) 3nte o"ante# No se obse va 4N3 /ue sucede5 * 6/ue es ealmente 4N35 -$ Consulta2 #estino de la Consulta2 %antalla 'Dbser!ando datos en toda la pantalla) Aceptar jecutar Ctrl;."i/t;Alt

4$

Consulta2 #estino de la Consulta2 In/orme '*enerando In/ormes !a Consulta)

Ga&a Clic7 en @arra de Asistente ' a la derec"a de: A'rir in.or)e$$ !er &r5/ico anterior)

8,

.e obser!a una pantalla con tres opciones2 ubique el cursor sobre: ,sistente +a a 3nfo mes! y "a&a Clic7 en: Aceptar% Tendre)os la si5uiente .i5ura%

.eleccione todos los campos de: Articulo2 "aciendo Clic7 en doble Flec"a2 lue&o clic7 en: $i5uiente

.eleccione el estilo de in/orme que deseara preparar y lue&o "a&a Clic7 en: .i&uiente

%uede cambiar si &usta: 6Fmero de Columnas2 distribucin de campos y Drientacin del papel2 lue&o "a&a Clic7 en: .i&uiente %uede Drdenar los artculos2 ejm: por nombres2 para ello "a&a doble Clic7 en Art6om2 Ascendente y Clic7 en: .i&uiente Clic7 en: %resentacin %reliminar

Eh a/u2 al"o de + esentaci*n + elimina de un e+o te

8-

8$ =$

%or a"ora "asta aqu el Aaboratorio2 si el tiempo ya no lo permite$ Arc"i!o2 Luit 0in del 3a%oratorio 4 5racias...

#a'oratorio No ?0
O',etivo( Crear un in/orme personalizado2 simples y con quiebres &rupos$

84

A'rir Base de Datos ventas <$ Clic7 en: Archivo2 A'rir2 Tipo de archivo: @ase de #atos2 lue&o doble Clic7 en Ventas$

!reaci&n de Vistas
#eseamos preparar2 tres in/ormes2 para lo cual !amos "a crear tres !istas: +$ Crear una !ista con los si&uientes campos: ,$ -$ Facturas$num/ac Facturas$/ec!en Facturas$cant Facturas$pre!en Clientes$clienom Clientes$clieape Clientes$cliedir Clientes$clieruc Articulo$artnom Articulo$artpre Articulo$artstoc7O

jecutar y &uardar presionando Ctrl;P2 asi&ne nombre Vista<+2 lue&o "a&a Clic7 en Aceptar$ Cree otra !ista2 esta !ez a&re&ar el campo Facturas$ClieCod a la lista anterior$ In&rese a la /ic"a: Ordenar por4 "a&a doble Clic7 en Cliecod2 jecutar y *uardar 'presionando Ctrl;P ) con el nombre Vista<,

4$

Crear otra Vista usando los mismos campos anteriores2 pero esta !ez ordenar por los campos: FecVen2 ClieCod y 6umFac 'para ello "a&a primero #oble Clic7 en: FecVen2 lue&o en ClieCod y /inalmente en6umFac) y &uarde como Vista<-$

88

,/u2 se obse van las t es vistas! /ue nos se vi &n +a a + e+a a nuest os info mes.

!REA!ION DE INFOR/E$
%ara crear nuestro in.or)es4 inicia)os haciendo( Clic7 en: C% 2% 0% D% Archivo Nuevo ( ) In.or)e Nuevo Archivo% n la si&uiente pantalla se muestra el dise(ador de in/ormes2 las bandas y el menF contextual

Dise7ado de 3nfo mes com+uesta de t es 1andas 've " &fico). 6ecesitamos indicar el ori&en de datos para nuestro in/orme2 para lo cual !amos damos la secuencia a se&uir: +$ ,$ -$ 4$ n el 5rea del dise(ador2 presione @otn #erec"o n el menF contextual2 lija: ntorno de datos #entro del ntorno de datos2 %resione @otn #erec"o n el menF contextual2 lija: A&re&ar 8=

8$ =$ >$

.eleccione2 opcin: ')Vistas '!er &r5/ico) Ga&a #oble Clic7 en Vista<+ Aue&o2 Clic7 en: Cerrar

Csando el Eouse acomode el dise(ador de in/ormes y el entorno de datos2 de tal como que quede2 tal como se muestra en la /i&ura2 de la si&uiente p5&ina$

+$

.i no tiene la barra de controles de in/orme Ga&a Clic7 en: EenF Ver Barra de 6erramientas$$$ Earcar como en el &r5/ico de parte derec"a$ Aue&o2 Clic7 en: Aceptar

8>

6ue!amente acomode las /i&uras2 por ejm$ puede ser como obser!a en la parte in/erior$

Aue&o$ Vamos a iniciar a preparar el in/orme$ %ara lo cual2 debemos tener presente el resultado que deseamos obtener$ n la si&uiente p5&ina se muestra un pre!io de lo que queremos conse&uir dise(ando un in/orme2 con nuestro dise(ador y que imprima el modelo propuesto$

%ara poder obtener este resultado$ Csando los botones del control de in/ormes2 prepare Cd$ un dise(ador de in/ormes del si&uiente modelo$ +$ ,$ .i desea #i&itar un texto en el dise(ador de in/ormes2 "a&a Clic7 sobre el botn que tiene la letra A del control de In/ormes y en se&uida "a&a Clic7 en el lu&ar donde desea #i&itar$ .i desea a&re&ar2 una /uncin !ariable2 "a&a clic7 en botn a' del control de in/ormes$ Aue&o sobre el dise(ador$

8?

-$

.i desea a&re&ar un campo2 lo puede arrastrar desde la !ista2 que se encuentra a la derec"a2 del dise(ador$

6ota: 6ombre de la mpresa2 #escripcin2 %recio2 6ota $$ y %a&$ .on etiquetas2 mientras #ate') es /uncin2 Q%a&eno es una !ariable$ Finalmente Art6om y Art%re son campos que se encuentran en el ntorno de #atos$ %ara !er un %re!io: Ga&a Clic7 en el @otn #erec"o2 lue&o seleccione: %reliminar 'obser!ar5 un pre!io)

Ao anterior tambi3n lo puede realizar "aciendo Clic7 en botn de Goja y Aupa de la barra de "erramientas$ sta !ez el botn del si&no de Admiracin s para Imprimir$ %uede ir obser!ando su a!ance2 cada !ez que crea necesario$ .i desea mejorar la presentacin "a&a clic7 en el objeto2 lue&o Clic7 en /ormato y /uente$ Cambie y mejore su presentacin %ara pre!enir p3rdida de arc"i!os2 puede ir &uardando el In/orme con el 6ombre: In/orme+ %ara ello "a&a clic7 en EenF:: Arc"i!o *uardar$ In/orme 6o ,$- debemos preparar otro in/orme2 similar al que se muestra en la parte in/erior$ Dbser!e que est5 a&rupado por Clientes2 ordenado por descripcin y con un sub-total por

8:

clientes$

%ara preparar nuestro se&undo in/orme2 podemos re-utilizar dise(o del in/orme anterior$ *uardando la primera y lue&o &uardando con nue!o nombre$ %ara ello utilice Arc"i!o *uardar como Asi&ne nombre in/orme, lue&o puede modi/icar sobre ella$ %asos: Eodi/icar 3ista de $recios por -nforme de ventas Creacin de *rupo quiebre: Clic7 en EenF: In.or)e A5rupar datos .obre !entana de a5rupar datos2 en el 5rea en blanco de: expresiones de a5rupaci&n2 podemos #i&itar la expresin del quiebre2 pero "acemos Clic7 en:

%%%

'%unto punto )

Aue&o "a&a2 &o%le clic7 sobre: Vista2%!lie!od 've " &fico)

Finalmente Clic7 en( Aceptar

=<

l dise(ador que lo&re2 nuestro propsito ser5 similar al &r5/ico si&uiente:

Dbser!e que el monto2 subtotal y total son expresiones como (!antidad) * (*recio de Venta) 'Vista4. ant1Vista4.$reVen) '!er &r5/ico)

*ara :ue $u'total )uestre la su)a4 hace)os(

total4

Clic7 Derecho sobre el objeto que representa la expresin 'CantR%re!en)2 lue&o clic72 en la opcin: *ropiedades%

Aue&o en la !entana que se presente2 mostrar5 un &rupo de opciones2 seleccionamos la opcin !;lculos4 haciendo !licB so're ella% Final)ente en el 5r;.ico de la parte derecha4 selecciona)os opci&n $"/A %ara terminar2 "acemos clic7 en: Aceptar% n esta pantalla y en la otra #e esta manera2 "abremos creado el se&undo reporte$

=+

Reporte con )as un

rupo

l si&uiente &r5/ico2 muestra un Eodelo2 de un reporte con m5s de un &rupo$ sta a&rupado por Ees2 clientes y 6Fmero de /actura$ Tiene un sub-total de cada /actura 2 mes y por p5&ina$ Asimismo el nFmero de /actura se imprime a la altura de los otros datos y no se repite$

l modelo de In/orme a prepararse$

l dise(ador de In/ormes2 que &enera este tipo de reportes2 se encuentra en la si&uiente p5&ina$

+$ ,$

Ga&a Clic7 en el @otn Ve Clases del Control de Formularios ' sta se encuentra al lado derec"o de la Flec"a) lija A5re5ar

=,

Eodelo de dise(ador

.uerte en preparar el in/orme propuesto: Fin del laboratorio$

=-

3a%oratorio 'o 8
O',etivo: .entar las bases de la %ro&ramacin Drientada a Dbjetos2 crear /ormularios y codi/icar$ Formulario: Cna clase contenedora$ Cna coleccin de una o m5s p5&inas que se comporta como una !entana o un cuadro de di5lo&o est5ndar$ Cn /ormulario contiene controles para mostrar y modi/icar datos$ Aos /ormularios pueden estar contenidos dentro de un conjunto de /ormularios$ Creando un Formulario: Clic7 en: Archivo Nuevo ( ) For)ulario Nuevo archivo

=4

#ise(ador de /ormulario 6ota: para "acer dise(o en /ormulario2 tambi3n utilizaremos los controles2 tal como se obser!an en la pantalla anterior$ .imilar como lo "aca en In/ormes2 "acer Clic7 en control A2 lue&o "acer Clic7 en el /ormulario$ #e esta manera estar5 creando un Aabel ' tiqueta)2 para Text lo "ar5 con a'2 etc$ n esta oportunidad !amos a dise(ar2 un /ormulario que nos pida #i&itar un texto y que esta al ser aceptado2 se re/leje como un nue!o mensaje en el ttulo del /ormulario$ %asos a se&uir: +$ ,$ -$ 4$ 8$ Ga&a Clic7 en control A Ale!e el Eouse sobre el /ormulario y "a&a clic7 en ella Ga&a Clic7e en Control ab Ale!e el Eouse sobre al&una ubicacin del /ormulario2 donde crea sea Ftil y "a&a Clic7 en ella$ .upon&o que ya entendi2 como /unciona esto$ Complete lo resto2 "asta que su pantalla presente similar al si&uiente &r5/ico$

=8

l usuario a de obser!ar2 que en el /ormulario existen cuatro objetos

Cada objeto del /ormulario anterior2 lle!a un nombre por de/ecto$ %ero nosotros como buenos pro&ramadores2 las podemos cambiar a nuestra !oluntad$ J eso los !amos a "acer$ =$ >$ ?$ :$ %resione @otn #erec"o del Eouse2 sobre Aabel+2 y lue&o "a&a Clic7 en %ropiedades$ n la lista de propiedades2 ubique propiedad 6AE y "a&a clic7 en ella$ Al costado del smbolo de /uncin /x2 aparece label+ en azul2 #i&ite obre ella lblmensa&e$ Ga&a clic7 en Text+2 esta !ez tambi3n !uel!e a aparecer2 el nombre inicial2 cambie por Txtmensaje$

+<$ Asi&ne Cd$ los nombres a los objetos que /altan: Comand+ como CmdAceptar y Command, por Cmd.alir A"ora !amos a cambiar la etiqueta 'titulo) de los objetos 'recuerde text no lo tiene)2 los pasos son los mismos2 esta !ez la propiedad que satis/ace nuestra necesidad es: CA%TID6

==

++$

Aqu se dan un listado de las etiquetas para los Dbjetos 'reconocidos por sus nue!os nombres)$ Eti:ueta O',eto &igite un "exto AblEensaje Aceptar CmdAceptar $alir Cmd.alir

+asta a:u1 "d% ha aprendido4 ca)'iar no)'re 7 t1tulo del O',eto%

C2% A:u1 se )uestra un e,e)plo a donde de'e)os lle5ar4 cuando nuestro .or)ulario 7a est< co)pleta)ente preparado 7 e,ecut;ndose(

El t1tulo actual del .or)ulario se o'serva co)o( E "niversidad Nacional de In5enier1aF4 pero 7a

=>

he)os di5itado en Txt)ensa,e4 el )ensa,e( E!entro de Extensi&n 7 *ro7ecci&n $ocialF% VF*4 para ca)'iar el t1tulo4 est; solo a la espera :ue el usuario ha5a !licB en Aceptar & presione la tecla( Enter% *ero si el usuario desea a'andonar el siste)a4 puede presionar E$!% & hacer clicB en $alir% Asi)is)o al acercar el /ouse so're cual:uiera de los 'otones co)ando4 esta de'e hacer )ostrar un )ensa,e de a7uda4 explicando lo :ue de'e suceder si hace !licB so're ella%

*ara :ue VF*4 ha5a todo lo :ue he)os echo )enci&n en la parte anterior4 ha5a los si5uientes pasos(

C0% $eleccione el O',eto !)dAceptar (Aceptar) 7 ca)'ie las propiedades( DEFA"#T por

.". )Verdadero* lic7 ,qu9 ,ctualiza el "9tulo del 0ormulario

enTOO# TI* TE-T4 Di5ite el texto( CD% $i)ilar en el O',eto !)d$alir ($alir)( !AN!E# por en

.". )Verdadero*

TOO# TI* TE-T4 Di5ite el texto( "ermina la e!ecucin del sistema.

:;. 6aga lic7 en t9tulo del 0ormulario, luego en la lista de propiedades %usque/ S6.< "-$S.
o%!eto cualquiera*

am%ie por .". = Verdadero ) Sho> "ips pertenece al formulario, y n a otro

Tie)po de E,ecuci&n(
CG% +a5a do'le !licB en Aceptar4 lue5o Di5ite tal co)o o'serva en la .i5ura(

$resione trl?<, para Salir y guardar

CH% $i)ilar :ue en la parte anterior ha5a so're el o',eto $alir4 esta ve6 Di5ite( Release This.or) CI% E,ecutar el For)ulario( +a5a !licB en 'ot&n E,ecutar ( 9 )4

=?

CJ% A la consulta anterior4 responda $1 7 5uarde% 2?% De'e e,ecutarse sin pro'le)as4 caso contrario consulte con su asistente%

*ARTE 2
Vamos a preparar un /ormulario aplicati!o2 a la @ase de #atos$ %or ejemplo: "acer mantenimiento de la tabla Articulo$db/$

*asos a se5uir(
-$ Abrir la @ase de #atos Archivo A'rir Base de Datos( Ventas

4$

Crear un 6ue!o Formulario Archivo Nuevo ( ) For)ulario Nuevo Archivo

8$ =$ >$ ?$

%resionar: @otn #erec"o2 sobre el 5rea del Formulario Clic7 en: ntorno de datos 'del EenF contextual) #oble Clic7 en Articulo$db/ Csando Eouse2 puede presentar similar ala /i&ura$

=:

:$

%odemos crear en nuestro /ormulario2 los objetos: tiquetas2 Texts y Commands2 lue&o con la propiedad: Control .ource direccionar a los campos de la tabla$ %ero esta !ez2 !amos a "acer uno m5s simple:

+<$ Ga&a Clic7 sobre la palabra Campos de Articulo y arrastre "acia el /ormulario y suelte$

,s2 debe de obse va se! los cam+os ++$ Ga&a Clic7 en cada objeto y re-ubicar los objetos2 asimismo cambie el ttulo de las etiquetas$ ' Dbser!e el si&uiente &r5/ico)

><

',/u2 debe lle"a ! usando + o+iedad# Ca+tion)

+,$ Ga&a Clic7 en el @otn Ve Clases del Control de Formularios ' sta se encuentra al lado derec"o de la Flec"a) +-$ lija A5re5ar

+4$ buscar la Carpeta KILARD$2 que se encuentra dentro de la carpeta del Visual Fox%ro$

+8$ Ga&a #oble Clic7 en2 objeto Ki6st7le$ +=$ n el si&uiente &r5/ico2 se obser!a una &ama de botones de clases$ Cbique aquel botn de nombre $- B"'S '%ara ello utilizar5 los Tool Tip Text de cada botn$ n el si&uiente &r5/ico2 este botn se encuentra en la quinta /ila y cuarta columna)

>+

+>$ Ga&a Clic7 sobre el /ormulario debajo de .toc7 +?$ Vuel!a a acomodar similar al si&uiente &r5/ico $

+:$ *uardar 'asi&ne el nombre que desee) ,<$ jecutar

,+$ .uerte %ruebe$

>,

IN$TR"!!IONE$ DE *RO RA/A!IMN%


)l Foxpro en modo programaci n, es la forma como se puede almacenar un conjunto de rdenes en un arc#ivo llamado programa, el cual posteriormente ser ejecutado.
Drden ED#IFJ CDEEA6#

Prop*sito @ 7ermite crear y editar un programa en Foxpro %con extensi n .7-G(, o tambi'n cualquier arc#ivo de texto. $intaxis @ MODIF< COMM#3D AD@CAC#MI3OC3OMB2'A0'I1C .i la unidad y el camino no son especi/icados2 se asumir5 la unidad y camino por de/ecto$cuando se usa Eodi/y Command2 Foxpro busca el arc"i!o indicadoO si el arc"i!o no existe entonces se crea uno2 de lo contrario 3ste ser5 editado$ Cada !ez que un arc"i!o es &rabado la !ersin pre!ia es &rabado en un arc"i!o de se&uridad con extensin $@AM$ Al crear un pro&rama2 para &rabarlo presionaremos las teclas SCtrlT; SPT$ .i desea salir sin &rabar presionaremos la tecla S scT$
.rden &.

*rop&sito ( %ermite ejecutar un pro&rama anteriormente creado$ $intaxis ( DO ND(ON!A/INOONO/BREN%E-TO


.rden "@$E

*rop&sito ( %ermite !isualizar el contenido de un arc"i!o pro&rama$ $intaxis( TP*END(ON!A/INOONO/BREN%E-TO


E-8R4C84R, DE 4N PR%GR,M,

*re;)'ulo Contiene in/ormacion tal como: el nombre del pro&rama2 que "ace2 qui3n lo escribi2 la /ec"a y una bre!e "istoria sobre su edicin$ E,e)plo( R--------------------------------------------------------------------------------------R R%BD*BAEA : .TDCM$%B* R# .CBI%CID6: CD6TBDA # .TDCM RACTDB : ACI. ADUA#A %DBTAA RF CGA : <8 # 6DVI E@B # +::? R--------------------------------------------------------------------------------------R Area de $eteos #e/ine los comandos . T que el pro&rama necesita para trabajar e/icientemente$ n esta parte se puede especi/icar la relaciones entre las bases de datos2 acti!ar los arc"i!os indexados as como inicializacin de las !ariables de memoria2 etc$ E,e)plo( . T .TATC. o// . T G A#I6* o// C. personal DB# B codi 6CEV<

>-

!uerpo de *ro5ra)a Contiene los comandos que "acen trabajar al pro&rama$ E,e)plo( ADCAT FDB apelVWVAB*A.W #I.%AAJ nomb2apel2sbas $ecci&n de !ierre Aqu se cierran las bases de datos y se restablecen los !alores de los comandos . T$ E,e)plo( C. . T .TATC. on . T G A#I6* on B TCB6 ORDENE$ DE ENTORNO %ara modi/icar el entorno de Foxpro y ajustarlo a nuestras necesidades2 debemos usar las rdenes .ets denominadas tambi3n .eteos$Aa opcin por de/ecto est5 en mayFscula$
$intaxis . T .TATC. onXDFF *rop&sito

&ctiva la l?nea de estado.


Euestra el nombre de los campos cuando se usa las rdenes AI.T o #I.%AAJ$ Euestra los mensajes interacti!os que retornan rdenes como Beplace2 Index2 Copy2 Calculate2 Aocate2 etc$ mite un sonido cuando el cursor alcanza el /inal de un campo$ Euestra el estado de las teclas CapsAoc72 Ins y 6umloc7 en la /ila cero cuando se desacti!a la lnea de estado$

. T G A#I6* onXo//

. T TAAM onXo//

. T @ AA onXo//

. T .CDB @DAB# onXo//

V,+-B3ES &E (E(.+-,

De.inici&n ( .on espacios de memoria que permiten almacenar datos temporalmente /uera de la estructura de la @ase de #atos$ stos espacios de memoria poseen un no)'re :ue los identi.ica y quedan de.inidos se5Qn el dato :ue al)acenan% !REA!ION DE VARIAB#E$ E,e)plos(
CAA. VWFDY%BDW 6CEV< F CVZ+<X+:X>?[ VABV$T$ Variable cuyo nombre es CAA. de tipo car5cter y cuyo contenido es WFDY%BDW$ Variable cuyo nombre es 6CE de tipo num3rica y cuyo contenido es <$ Variable cuyo nombre es F C de tipo /ec"a y almacena la /ec"a +: de Dctubre de +:>?$ Variable cuyo nombre es VAB de tipo l&ico con un estado de !erdad $T$$

.rden &-S$3,@ (E(.+@

*rop&sito ( Aista las !ariables de memoria$ $intaxis ( DI$*#AP /E/ORP NTO *RINTERO #I$T /E/ORPNTO *RINTERO

>4

.e debe e!itar que el nombre de una !ariable sea i&ual al nombre de un campo o de un comando resre!ado por FDY%BD$
.rden S".+E

*rop&sito ( %ermite asi&nar un dato a un conjunto de !ariables$ $intaxis( .TDB S#ATDT TD SAI.TA # VABIA@A .T E,e)plo( .i desea inicializar con < a las !ariables 6+2 6, y 6-2 procederamos de la si&uiente manera: NC=? N2=? N0=? Eejor "ubiera sido inicializar simult5neamente el < a 3stas !ariables2 as: $TORE ? TO NC4 N24 N0
.rden <,-"

*rop&sito ( %ermite detener la ejecucin de un pro&rama y espera el in&reso de in/ormacin pro!eniente del teclado$ $intaxis ( KAIT Nexpresi&nO NKINDOKONTI/EO"T(expN)O Donde( expresi&n ( s un mensaje ilustrati!o para el usuario$ .i se omite2 FDY%BD en!iar5 el mensaje por de/ecto2 que es: R*ress an7 Be7 to continue%%%R KINDOK ( $e utiliza para en!iar el mensaje dentro de una !entana de mensajes2 en la esquina superior derec"a$ TI/EO"T expn ( reciba in/ormacin$ s el tiempo en se&undos que estar5 la orden PAIT sin que se

E,e)plos( C%%ara detener la ejecucin de un pro&rama2 in&resemos la orden PAIT en cualquier parte del pro&rama2 as: KAIT el pro&rama cuando ejecute la orden PAIT en!iar5 el mensaje por de/ecto: %ress any 7ey to continue$$$

2%.i sedesa especi/icar un mensaje di/erente con la orden PAIT2 como por ejemplo: KAIT R*resione ENTER para se5uir%%%R el pro&rama mostrar5 exactamente dic"o mensaje al momento de ejecutar dic"a orden2 as: %resione 6T B para se&uir$$$
.rden A...S,@...5E"

*rop&sito ( %ermite editar una !ariable o un campo en una posicin de la pantalla2 permitiendo su modi/icacin$ %ara acti!ar los * T. de/inidos pre!iamente se debe "acer uso del comando B A#$ $intaxis ( SF4!N$AP R)ensa,eRON ET(varia'leTca)po)ON*I!T"RE(.or)ato)O Donde( F ( s el nFmero de /ila en le ran&o < - ,4$

>8

! ( s el nFmero de columna en le ran&o < - >:$ )ensa,e( s un mensaje que ayuda al usuario a in&resar el dato desde el teclado$ varia'leTca)po ( Variable o campo a editar$ *icture( %ermite establecer un /ormato de entrada o de salida para los datos2 adem5s de restrin&ir el tipo de dato que puede ser in&resado a un campo o !ariable de memoria$ For)ato ( speci/ica un /ormato mediante el cual se deben in&resar los datos$ l /ormato puede consistir de una /uncin o una m5scara y debe estar delimitada por comillas$
.rden +E,&

*rop&sito ( %ermite acti!ar uno o m5s \$$$.AJ$$$* T$ $intaxis ( B A#


0ormato para apturar o $resentar &atos

s la manera como se pueden in&resar o presentar los datos en pantalla usando la orden \$$$.AJ$$$* T$ .i se utiliza %ICTCB 'E5scara) se llama E5scara$ .i se utiliza %ICTCB 'Funcin) se llama Funcin$

/;scara
# 3 R 9

Descripci&n
%ermite el in&reso de slo letras para datos car5cter 'cada A es para representar un slo caracter)$ %ermite el in&reso slo de letras y d&itos para datos tipo car5cter$ Con!ierte la minFscula a mayFscula 'cada smbolo es para un car5cter)$ %ermite el in&reso de slo d&itos para datos tipo car5cter y d&itos y si&nos para datos nFmericos$

Fun i*n
# R ' Q M

Descripci&n
.lo car5cteres de tipo al/ab3tico$

Convertir a may$sculas todos los carcters alfab'ticos. Formato de fec#a )uropeo %dd0mm0aa(. ,ustituye con espacios un campo con valor igual a B %cero( 7ermite la creaci n de una lista de opciones m$ltiples, las mismas que se deben separar por comas. "na .unci&n se usa anteponi<ndole el s1)'olo S !lausula !O#OR en S%%%$AP $intaxis( SF4! $AP RExpresi&nR !O#OR #onde:
xpresin: %uede ser una combinacin de campos2 !ariables de memoria2 operadores2 /unciones2 mensajes2 etc$ .i se necesita mostrar en pantalla mas de una expresin2 se deber5 con!ertir todas las expresiones a car5cter y lue&o conctenarlas$ #e nFmero a car5cter usando $TR( ) o de /ec"a a car5cter usando DTO!( ) o DTO$( )$

>=

!O#OR 'color): .e usa para reportar los datos de una expresin con un color di/erente al est5ndar$

COLO2

P2OPO$I1O Video In!erso

I ; I W 3 W:3 B B4 4 42 428 2 2B 9 8

,ubrayado Vac?o %usado para el ingreso de claves( Blanco 2egro Video 2ormal &*ul Cyan Verde Caf' &marillo -ojo @agenta 7arpadeante &lta intensidad

#os $1)'olosU o * se de'en utili6ar despu<s de especi.icar el color para la expresi&n4 as1( !olor KVNU

.rden A...B.B
*rop&sito ( %ermite dibujar un recuadro en la pantalla$ $intaxis ( \/+2c+2/,2c, BO- S'expresion)T #onde: .C4 cC .24c2 ( Coordenadas del primer punto ubicado en la esquina superior izquierda$ ( Coordenadas del se&undo punto ubicado en la esquina in/erior derec"a$ ( speci/ica los caracteres que /ormar5n el cuadro$

Expresi&n

!uando no se especi.ica la expresi&n despu<s de Box4 se crea un recuadro de l1nea si)ple%

.rden A... 3E,+


*rop&sito ( %ermite borrar un sector de la pantalla$ $intaxis ( >>

\/+2c+ S!#EAR' TO /,2c,)T

.rden A...0-33
*rop&sito ( %ermite cambiar los colores de una detrminada 5rea de la pantalla$ $intaxis ( \/+2c+ FIAA TD /,2c, SCDADB'color)T

E,e)plo( C% S82+< FI## TO +824< !O#OR B


ES"+2 "2+,S .'&- -.',3ES

Cna estructura condicional es aquella que al e!aluar una condicin realiza una determinada accin$
.rden -0...E'&-0
*rop&sito ( %ermite ejecutar una seccin del pro&rama e!aluando una condicin$ $intaxis C( IF @loque de Drdenes 6#IF $intaxis 2( IF @loque de Drdenes+ A. @loque de Drdenes, 6#IF IF ANIDADO$ .e denomina as cuando se usa simultaneamente !arias estructuras condicionales IF$ $intaxis 0( IF @loque de Drdenes+ A. IF @loque de Drdenes, A. @loque de Drdenes6#IF 6#IF Funcin FDC6#' )

*rop&sito( Cn !alor !erdaero2 si la bFsqueda con . M tu!o 3xito2 en caso contrario reporta /also$ $intaxis( Found ( ) E,e)plo( Gacer un %ro&rama que permita eliminar re&istros de la base de datos WAlumnosW
;$' #lu&nos Order odi Cod/spa =X) \5,NS $#< EIn,rese Codi,o@E 4'1 od PIC1 E\R####99E read $''J od IF FO;3D= ) 91u!o ]xito la bFs(ueda9 Delete Pa V 'L$' \NS,NS $#< ECodi,o 3o 2e,istradoE '3DIF W#I1

>?

;$' 000

Funcin .

M' )

*rop&sito( Betorna !erdadero si la bFsqueda$ con . M /ue exitosa2 caso contrario reportar5 /also$ $intaxis( $EEW ( ) E,e)plo( Gacer un %ro&rama que permita in&resar re&istros de la base de datos WAlumnosW
;$' #lu&nos Order odi Cod/spa =X) \5,NS $#< EIn,rese Codi,o@E 4'1 od PIC1 E\R####99E read IF $''J = od) 91u!o ]xito la bFs(ueda9 \NS,NS $#< E odi,o "a 'xistenteE 'L$' @ Pedir todos los datos @ #PP'3D BL#3J 2'PL#C' @ '3DIF

.rden &. <6-3E


*rop&sito ( %ermite la ejecucin de un &rupo de ordenes mientras que la condicin sea cierta % $intaxis ( #D PGIA : : SADD%T S YITT 6##D #onde: #OO* E-IT ( Be&resa a e!aluar la condicin% ( #irecciona la salida con el #D PGIA "acia la si&uiente orden que si&a a 6##D$

Bucle In.inito #D PGIA $T$ IWFDYW 6##D In&resa en pantalla la palabra FDY in/inidad de !eces$ %ara detener 3sta impresin presionar la tecla .C$ Bucle In.inito YV< #D PGIA Y]YVY;+ IWFDYW 6##D Imprimir5 en pantalla la palabra FDY tres !eces$ E,e)plos( Gacer un pro&rama que permita consultar re&istros de la @X# WAlumnosW
=,) &;=@2C, C-D)- CCD< C7TI,I DC !F<;) C7TI,I C;)&CCDT,7&C%8( Z/,AB ,&M I<2G-),) CCD<GC9I G)3 CCD -)&D <F ,))W %CCD(

>:

D<,7;&M );,) ZAB,AB ,&M ICCD<GC 2C -)G<,3-&DCI )2D<F C7<TI I Z5B,5B ,&M ID),)& CC23<2=&- [,02\9I G)3 C7< 7<C3 IZ@ ,,2I -)&D <F C7<TI,I ;CC7 );,) )6<3 )2D<F )2DDC

.rden 0.+...E'&0.+
*rop&sito ( %ermite ejecutar un bloque de rdenes un nFmero especi/icado de !eces% $intaxis ( FDB VarVinicio TD /inal S.T % incrementoT : : S YITT SADD%T 6#FDB ^ 6 YT #onde: Var ( Variable de memoria a analizar% inicio ( s un !alor de inicio para el contador$

.inal ( s el !alor /inal del contador$ Cuando !ar sea i&ual o mayor que /inal2 el bucle se detendr5 y pasar5 el control a la si&uiente lnea despu3s de 6#FDB$ incre)ento ( s la cantidad en la que se incrementar5 el contador$ .i no se indica2 el !alor por de/ecto para el incremento es +$

.rden &. ,SE...E'& ,SE


*rop&sito ( %ermite e!aluar mFltiples condiciones% $intaxis ( #D CA. CA. CA. : SDTG BPI. T 6#CA.

#D CA. es una estructura condicional mFltiple y excluyente2 en donde slo una de las condiciones se podr5 ejecutar$ n caso de no cumplirse nin&una condicin y se "a usado DTG BPI. se ejecutar5n todas las rdenes comprendidas entre DTG BPI. y 6#CA. 2 caso contrario se ejecutar5 la orden que si&ue a 6#CA. $
Funci*n 3N9E:' )
*rop&sito ( .e usa 3sta /uncin para obtener el !alor nFmerico correspondiente a una tecla$ $intaxis ( I6M J ' S xp6T )

E,e)plo( C% *ara detener la e,cuci&n de un pro5ra)a se de'e a5re5ar la si5uiente l1nea(


?<

: : Vin7ey'<) __ se asi&na al !aco : para continuar con el pro&rama presionar cualquier tecla$ 1'CL#
F+ F, FF4 F8 F= F> F? F: F+< F++ F+, I6. BT GDE !ODI O ,? -+ -, --4 -8 -= -> -? -: +-+-4 ,, + TE!#A # A 6# %&#n %&Cp !ODI O > = +? 4 +: ,4 8 ,> ++,: : -, +8

.C 6T B @ACM.% TA@ @arra spac TA@

?+

También podría gustarte