Curso de Visual Foxpro
Entorno de Desarrollo de Visual Foxpro (I) Temas que abordaremos en este Capítulo: Introducción Instalación - Formatos Aprendizaje - Ayuda Conceptos - Eventos - Controles Tipos de Ficheros - Tipos de Datos. Control de Flujo del Programa El entor entorno no de desa desarr rrol ollo lo (Adm (Admin inist istra rado dorr de proy proyect ectos os-- Dise Diseña ñado dore ress y Asistentes) (Próxima entrega) Gestión de Ficheros - Creación de Tabla mediante asistente. (Próxima entrega)
Introducción Visual Visual Foxpro es uno de los gestores de Bases Bases de Datos Datos relacionale relacionaless más rápido y flexible del mercado, disponiendo de un complejo entorno de desarrollo totalmente orientado al objeto y altamente integrado en el sistema operativo Windows Como cualqu cualquier ier otra otra aplica aplicació ción n Windo Windows ws estánd estándar, ar, Visual 95. Como Visual Foxpro Foxpro soporta interfaces MDI, barras de herramientas, ayuda sensible al contexto, múltiples fuentes, acceso a bibliotecas de enlace dinámico ( DLL), etc. Aparte del acceso a tablas en formato nativo de Visual FoxPro, se puede acceder virtualmente a cualquier fuente de datos cuyo acceso se pueda hacer através Open Data Databa base se Conn Connect ectiv ivity ity). Este de ODBC (Open Este están stánd dar, defin finido como como Conectividad Abierta de Bases de Datos, permite abrir y consultar diversas bases de datos a través de un conjunto de controladores, utilizando SQL como lenguaje de consulta. Con el advenimiento de Visual Fox, los desarrolladores desarrolladores de aplicaciones aplicaciones tienen acceso a multitud de eventos y opciones que los programadores de Visual Basic y Visual C tuvieron durante años. Se elimina la necesidad del uso del READ y su confusa nidificación (Fundational read). Se aprovechan algunas de las innovaciones que incorporó el Visual Basic, que tuvo liderazgo en simplificaciones tales que le dieron alcance masivo a la programación. En esta clase examinaremos, entre otras cosas, qué son los formularios, eventos y controles, y cómo se usan
1
2.- INSTALACION - FORMATOS Se puede instalar en Windows Windows 95 / 98 o NT, dado que sólo viene un instalador de 32 bits. Al igual que Visual Basic 5, no funcionará en Windows 3.X. Para esta plataforma puede usar Fox Pro 2.6 para Windows, que no es un lenguaje Visual.
Formatos: tiene una sola versión completa y también forma parte del paquete Visual Estudio (conjunto de lenguajes visuales y SQL Server 6.5). La instalación básicamente consiste en ejecutar el programa INSTALAR (versión española) o SETUP SETUP (versión en inglés), inglés), y seguir los diálogos. diálogos. Por omisión se instala instala en la carpeta C:\VFP, pero si lo desea Ud. puede cambiarla. cambiarla. Con la instalación mínima se requieren 25 Mg de espacio en disco, con la típica alrededor de 100 Mg, y completa puede ocupar cerca de 200 Mg, incluyendo la documentación en línea (Carpeta C:\VFP\ONLINE) y los audiovisuales explicativos en inglés (carpeta C:\VFP\ONLINE\MEDIA de casi 60 Mg). Por omisión deja todo esto (documentación y audiovisuales para su uso desde el CD para economizar espacio, pero puede copiarlos al disco rígido sí desea acceso más rápido y no tiene problemas de espacio en disco. Equipo Mínimo: ♦ Un PC compatible con IBM® con Windows 95 / 98, aunque funciona con un procesador 486 a 50MHz se recomienda algo superior (típicamente Pentium 166 /200 Mhz con 32 MG RAM). ♦ Un mouse o ratón. ♦ Se recomienda un monitor VGA o de mayor resolución, preferiblemente preferiblemente color.
3.- Aprendizaje Vea en menú de Ayuda, (ALT + U, D), " Documentación" que pone en pantalla a todos los manuales. Podría empezar por ej. por la “Guía de Instalación”, “Manual del Usuario”, "Manual del Programador", Programador", “Referencia “Referencia del Lenguaje”, Lenguaje”, etc.. Más adelante podrá usar ese mismo menú de Ayuda - Aplicaciones Ejemplo. Y estudiar los casos típicos que allí se explican.
4.- Ayuda Vea en la Ayuda, (ALT + U), Temas de ayuda, y también aplicaciones de ejemplo que se pueden ejecutar y estudiar, Microsoft en la Web (Si tiene Internet), Soporte técnico, etc. También está la ayuda sensible al contexto (F1), el índice temático, y la opción Buscar. En la ayud ayuda a se pued puede e impr imprim imir ir,, sele selecc ccio iona nar, r, copi copiar ar,, y lueg luego o pega pegarr en un procesador de textos cualquiera.
5.- Conceptos Cómo funciona Windows: Mensajes: Todo lo que sucede dentro de Windows es el resultado del envío de un mensaje. Cuando se hace clic en una tecla o botón, cuando cambia el tamaño a una ventana, cuando un carácter se digita dentro de una caja de edición, cuando se mueve el puntero del mouse, etc., Windows envía un mensaje informando de dicha situación.
2
El volumen de mensajes generados en cada segundo es tremendo. Una queja común entre los programadores de C++ que comienzan a trabajar en lenguajes del tipo del Fox, es que pierden la habilidad de interceptar cientos de mensajes que Windows envía. El Fox 2.6 para Windows está basado en un sistema de ventanas creado para DOS, que no se basa en mensajes. Además de crear la ventana gráficamente, el objetivo era generar código fuente de Fox rápidamente (SPR), además de generar la entidad “ventana” utilizable (SCX). Fox tuvo que ser mejorado para permitirle a los desarrolladores tener este tipo de fundamento, además de permitirle interceptar esta clase de mensajes, llegándose así a la versión visual, con el agregado agregado del concepto “Formulario” “Formulario” (En inglés, Form).
Ventana: La del explorador, un botón es una ventana, un documento de Word, un icono, una caja de textos, botones de opción, una barra de menú, etc. todas son ventanas.
Formularios Visual Fox Pro tiene un nombre especial especial para una pantalla: pantalla: formulario o Form. Un formulario no es nada mas que una ventana común de Windows, pero a un nivel mayor de abstracción. Se podría pensar un formulario, por ejemplo, como un conjunto auto-contenido de objetos sin tener que preocuparse por una gran cantidad de detalles por cuales se preocuparía un programador de C. “Auto contenidos” quiere significar que el formulario tiene propiedades que pueden ser alteradas para controlar la apariencia y comportamiento del formulario, y eventos que se disparan cuando ciertos mensajes se envían a los mismos. Una Una pantal pantalla la de entrada entrada o ventan ventana a constr construi uida da usando usando el construc constructor tor de pantallas de Fox 2.6 (Screen Builder) no es un objeto, aunque le dé la ilusión de que es así. Cuando se examina el código generado por Fox Pro 2.6 se puede ver la sentencia DEFINE WINDOW, las sentencias GET / SAY, y finalmente la sentencia READ que causa que Fox entre en estado de espera para permitirle al usuario ingresar datos. Cuando Ud. diseña un formulario en Visual Fox, lo hace casi igual que en Visual Basic y, a diferencia de lo que ocurría en Fox 2.6 para Windows, el formulario es un objeto, porque tiene propiedades que manipulan la apariencia del formulario, o cambian la forma en que se comporta. Se puede fijar los valores (numéricos o alfabéticos) de dichas propiedad tanto a tiempo de diseño usando la ventana de propiedades, como durante la ejecución de un programa (tiempo de ejecución o en inglés, runtime). A cada formulario se le asigna un único nombre (propiedad Name), y una vez que tiene un nombre se lo puede referenciar tanto dentro como fuera del mismo formulario.
3
Por ejemplo, suponga que tiene un formulario al que llama frmCliente y desea cambiar el título de dicho formulario (propiedad Caption), se puede referencia dicha propiedad utilizando la sintaxis del punto como sigue: frmCliente.Caption frmCliente.Caption = “ALTAS”
y usando la misma notación puede colocar el título de una ventana en la variable lctitulo, usando la sentencia: lctitulo = frmCliente.Caption La principa principall ventaja ventaja de utilizar utilizar propieda propiedades des de objetos objetos contra contra los distintos distintos coma comand ndos os usad usados os hast hasta a ahor ahora, a, es la cons consis iste tenc ncia ia:: más más que que reco record rdar ar much muchos 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.
Eventos Todo lo que ocurra en Windows es el resultado de enviar un mensaje. Visual Fox previene que Ud. se las tenga que ver con cientos de diferentes mensajes usando la noción de evento. Un evento es una acción reconocida por un objeto, tal como el clic de un ratón, o la presión de una tecla en el teclado. Cuando Ud. hace clic con el ratón en un formulario, Windows envía un mensaje al formulario diciéndole que alguien ha hecho clic sobre él. Entonces Visual Fox dispara el evento clic del formulario en respuesta a dicho mensaje. Ud. solamente debe escribir la parte de código que se ejecutará cuando dicho evento ocurra. Por ejemplo, puede poner código que cambie el color de fondo del formulario (Propiedad BackColor) en respuesta a dicho evento. En la siguiente tabla están algunos de los eventos más comunes del objeto formulario: Evento Load DblClick MouseMove Resize GotFocus Lost Focus
Se dispara cuando... Se carga el formulario por primera vez. El usuario hace doble clic en el formulario. El ratón se mueve sobre el formulario. Se cambia de tamaño del formulario Formulario “en foco”, desde otro formulario se hace clic en éste. Se hace clic fuera del formulario
Controles Son aquellos objetos gráficos a través de los cuales los usuarios pueden recibir y responder a los distintos tipos de mensajes Windows, de forma similar a las que lo hacía el formulario. Otra definición definición de control: son una instancia de una una clase, combinada con datos y procedimientos. procedimientos.
Ejemplo: botón (push button), cajas de edición (edit boxes), cajas de texto (text boxes), líneas, texto o etiquetas (labels), etc.
4
Los controles pueden ser vistos como objetos autocontenidos, con propiedades propiedades que le permiten manipular su propia apariencia, comportamiento, y responder a los eventos mediante mediante código escrito (programación). (programación). Al igual que pasaba con los formularios, los controles tiene un único nombre (Propiedad Name), y se puede cambiar cualquier propiedad usando la notación del punto. Por ejemplo, para hacer que el texto (propiedad Text) que está en una caja de texto (text Box) que se llama txtCaja desde y hacia la variable lcVar, se usará: txtCaja.Text = lcVar lcVar = txtCaja.Text
Algunas propiedades propiedades son únicas para un determinado control (no existen en otros controles), pero existen otras que son comunes a todos los controles, por ejemplo: Propiedad
Significado
Enabled FontName Left
El control está habilitado Nombre tipografía usada (caracteres) posición del borde izquierdo del control referida a su ventana contenedora True (verdadero) si está visible.
Visible
Los controles pueden responder a eventos disparados tanto por acción del usuario como directamente desde el sistema. Por ejemplo, si el usuario hace clic sobre un control botón de apretar (push button), Windows le informa enviándole un mensaje a dicho control que ha sido apretado (clicked). El control o botón entonces dispara el evento Clic, y ejecuta el código colocado o asignado a dicho evento. Al igual que las propiedades, algunos eventos son inherentes a dicho control y no existen en otros, pero hay eventos comunes a todos los controles, como serían los siguientes caso típico: Evento Click MouseMove GotFocus Lost Focus
Se dispara cuando... el usuario hace click sobre el control El ratón se mueve sobre el control. Control “en foco”, desde otro control se hace clic en éste. Se hace clic en otro control
Controles “Custom” Uno de los principales factores que contribuyeron al éxito del Visual Basic fue la “explosión” en el mercado de controles suministrados por fabricantes externos o terceras partes. Estos controles aparecen en la paleta de controles del Visual Fox Pro junto con los controles normales (built-in) y se manipulan de forma similar (fijando valores a sus propiedades propiedades y codificando rutinas que dan respuesta a ciertos eventos). Estos controles cubren un amplio espectro desde botones y cajas de texto mejoradas, hasta complejas hojas de cálculo (grid) o gráficos comerciales (Pinacle Graph).
5
Dichos controles estaban escritos generalmente en C y empaquetados en una clase especial de librerías dinámicas (como las DLL) que verdaderamente extendieron extendieron la eficacia del lenguaje, por lo que fueron llamadas. VBX (Visual Basic eXtensions), luego OCX y actualmente se los llama ACTIVE X, ahora también soportados todos ellos por Visual Fox Pro, que ahora en la versión 5, puede crear bibliotecas de enlace dinámico o DLL.
6.- Tipos de Datos Los Los datos datos con con los que que se traba trabaja ja proba probable blemen mente te incluy incluyan an perío períodos dos de tiempo, dinero y elementos contables, así como fechas, nombres, descripciones, etc. Cada dato corresponde a un determinado tipo, es decir, pertenece a una categoría de datos que se manipula de maneras similares. Se podría trabajar directamente con estos datos sin almacenarlos, si bien perdería la mayor parte de la flexibilidad y potencia que ofrece Visual FoxPro. Visual FoxPro aporta numerosos contenedores de almacenamiento con el fin de ampliar su capacidad para manipular fácilmente los datos.
Tipos de datos Los tipos de datos determinan la manera en que se almacenan los datos y la forma en que se pueden utilizar tales datos. Puede multiplicar dos números, pero no puede multiplicar caracteres. Puede imprim imprimir ir caract caractere eress en mayúsc mayúscula ulas, s, pero pero no es posib posible le imprim imprimir ir número númeross en mayúsculas. En la siguiente tabla se enumeran algunos de los principales tipos de datos de Visual FoxPro.
Tabla de Tipos de datos Tipo
Byte
Numérico
8
Moneda (Currency) Character
8
Logical Fecha - Fecha y hora (Date DateTime)
1á 256 1 8
RANGO - Ejemplo –.9999999999E+19 a
.9999999999E+20 – 922337203685477.58 .5808 a 922337203685477.5807 “Prueba” “123” “01/01/95” .T.(verdadero) .F. (falso) {01/01/95} {01/01/95 12:30:00 pm} 01/01/0100 hasta 31/12/9999
Tipos de campos Tipo
Byte
Numérico
Ejemplos 1 á 20 –.9999999999E+19 –.9999999999E+19 a .9999999999E+20
Punto nto Flo Flotan tante
1 á 20 –.99 .99999 999999 99999E+1 9E+19 9a
6
4
.9999999999E+20 Texto longitud variable Máximo según memoria +/–4.94065645841247E-324 a +/–8.9884656743115E307 “Prueba” “123” “01/01/95” Cualquier Cualquier caracter .T.(verdadero) .F. (falso) –2147483647 a 2147483646
10
Sin tabla de có códigos
10 4
Sin tabla de códigos Limitado por Memoria disponible {01/01/95}
Memo
4
Doble Precisión Character
8
Logical Integer (Entero) Carácter (Binario) Memo (Binario) General (Obj.OLE) Fecha - Fecha y hora (Date DateTime)
1á 254 1
8
{01/01/95 12:30:00 pm}
Contenedores de datos
Los contenedores de datos le permiten realizar las mismas operaciones con varios datos.
Por ejemplo, sumar las horas que ha trabajado un empleado, multiplicarlas por el salario por hora y restar los impuestos para determinar el sueldo que ha percibido el empleado. Deberá realizar estas operaciones para cada empleado y para cada período de pago. Si almacena esta información en contenedores y realiza las operaciones sobre éstos, bastará con sustituir los datos antiguos por los nuevos datos y volver a ejecutar el mismo programa. En la siguiente tabla se enumeran algunos de los principales contenedores de datos disponibles en Visual FoxPro:
Contenedores de datos Tipo
Descripción
Variable Variabless Elemento Elementoss individu individuales ales de de datos datos almacenados en la memoria RAM (memoria de acceso aleatorio) del PC. Registro Varias filas de campos s de predeterminados, predeterminados, cada uno de tabla los cuales puede contener un dato definido previamente. Las tablas se guardan en disco. Matri Matrice cess Vari Varios os elem elemen ento toss de dato datoss almacenados en la memoria RAM.
7
Uso de operadores Los operadores se utilizan para vincular los datos formando expresiones. Las expresiones producen un resultado que se puede asignar a un variable o campo mediante un operador (el operador de asignación o el signo igual). Operador = Tipos de datos válidos Ejemplo
Todos
?n=7
Resultado Imprime .T. si el valor almacenado en la variable es 7; de lo contrario,
imprime .F.
Operador + Tipos de datos válidos
Numeric, Character,Date, DateTime
Ejemplo Resultado
? "Fox" + "Pro"
Imprime “FoxPro”
Operador *, / Tipos de datos válidos Numeric Ejemplo ? 5 * 5 Resultado Imprime 25
TABLA DE Funciones Funciones de CONVERSIÓN entre tipos de datos. Tipo ORIGEN
FUNCION
Tipo DESTINO
Carácter o Memo Numérico, Flot, Doble o Entero Numérico Moneda Carácter o Memo Fecha
VAL ( )
Numérico
STR( )
Caracter
NTOM( ) MTON( ) CTOD( )
Moneda Numérico Fecha
Carácter Carácter Binario Carácter o Memo FechaHora Fecha FechaHora Lógico
DTOC o Carácter DTOS CTOBIN( ) Carácter Binario BINT BINTOC OC(( ) Carác arácte ter r CTOT( )
FechaHora
TTOC( ) DTOT( ) TTOD( ) IIF( )
Carácter FechaHora Fecha Cualquiera
FUNCION TYPE Evalúa una expresión de caracteres y devuelve devuelve el tipo de datos de su contenido.
8
Sintaxis TYPE (cExpresión) Tipos devueltos: Character Argumentos: cExpresión Especifica la expresión que va a ser evaluada, que puede tratarse tanto de una variable como de un campo, de un campo de memoria o de cualquier otra expresión. La expresión tiene que pasarse como una cadena de caracteres, hay que entrecomillar entrecomillar los nombres de variables de memoria, de campos, etc. Si no entrecomilla la expresión, la función TYPE( ) devolverá “U” (expresión indefinida). indefinida). Tipo de datos
Carácter devuelto
Character Numeric (también flotante, doble y entero) Currency Date DateTime Logical Memo Object General Indefinido
C N Y D T L M O G U
Jerarquía de operadores El orden de prioridades según el cual se aplican los operadores al evaluar una expresión matemática, se llama en Visual FoxPro, la precedencia de los operadores, que es de mayor a menor jerarquía: ♦ ♦ ♦ ♦ ♦
( ) (agrupamiento de subexpresiones), ^ o ** (exponenciación), * y / (multiplicación y división), % (módulo), + y – (suma y resta).
Control del flujo del programa Visual FoxPro incluye una categoría especial de comandos que “envuelven” a otros comandos y funciones, determinando cuándo y con qué frecuencia se ejecutan los otros comandos y funciones. bifurcaciones Estos Estos comandos comandos permiten permiten realizar realizar bifurcaciones herramientas de programación sumamente potentes.
condicionales condicionales
y
bucles ,
dos
Una estructura de control muy usada es la estructura condicional SI (IF en inglés). De la ayuda de Vfox sacamos lo siguiente: IF : Ejecuta Ejecuta condicio condicionalm nalmente ente un conjunto conjunto de comandos comandos dependie dependiendo ndo del
resultado de una expresión lógica. Sintaxis IF lExpresión [THEN] Comandos [ELSE Comandos] 9
ENDIF Argumentos:
Especifica la expresión lógica evaluada. Si lExpresión da como resultado verdadero (.T.), se ejecutarán cualesquiera instrucciones posteriores a IF y anteriores a ELSE o ENDIF (lo que suceda primero). lExpresión
Si lExpresión es falsa y se incluye ELSE, se ejecutan los comandos situados después de ELSE y antes de ENDIF. •
Si lExpresión es falsa (.F.) y no e incluye ELSE, se pasarán por alto todas las instrucciones entre IF y ENDIF. En este caso la ejecución del programa continuará con la primera línea de comando a continuación de ENDIF. •
Comentarios : Puede anidar IF ... ENDIF dentro de otro bloque IF ... ENDIF. ENDIF.
Los comentar comentarios ios precedid precedidos os de && se pueden colocar en la misma línea después de IF, ELSE y ENDIF. Estos comentarios se pasan por alto durante la compilación y la ejecución del programa. Continua...
Curso de Visual Foxpro
Entorno de Desarrollo de Visual Foxpro (II) (Diseñadores (Diseñadores y Asistentes - Gestión de Ficheros - Creación de Tabla mediante asistente) Toda la interfaz de desarrollo incorporada por "Visual Foxpro" está orientada a la generación rápida de aplicaciones ( RAD). El objetivo final es la generación de aplicaciones seguras en un tiempo razonablemente pequeño. Todo esto se consigue deja dejand ndo o que que el trab trabaj ajo o a bajo bajo nive nivell lo efec efectú túe e el sist sistem ema, a, qued quedan ando do para para el programador el aspecto visual y el análisis de la aplicación. Para conseguir este fin, Visual Foxpro incorpora el siguiente conjunto de herramientas:
Administrador de proyectos incorpora ora un poten potente te gestor gestor de proyec proyectos tos que centra centraliz liza a la Visual Foxpro incorp gestión de todos los archivos manejados por una aplicación. A partir de la información contenida en un proyecto se generan las aplicaciones que pueden ser distribuidas
10
libremente a todos los usuarios. Además, Visual Foxpro incorpora una herramienta que asiste al programador para crear disquetes de instalación que incluyan toda la información necesaria para instalar esta aplicación en otros ordenadores.
Diseñador de Bases de Datos Como apoyo al sistema, incorpora un potente gestor de bases de datos. Este gestor maneja bases de datos que actúan como referente de la información adicional relacionada relacionada con tablas, índices, relaciones, reglas de validación, validación, integridad referencias y un sin número más de información. De esta forma, una base de datos mantiene actualizada y centralizada toda la información de funcionamiento funcionamiento de las tablas que con ella están relacionadas. Por ejemplo, cada vez que se modifica un registro en una tabla perteneciente a una base de datos, se comprueban las reglas de modificación para esta tabla. Si por cualquier razón no es posible actualizar la tabla porque una de las las regl reglas as de vali valida daci ción ón ha fall fallad ado, o, se devu devuel elve ve la tabl tabla a a su esta estado do orig origin inal al,, advirtiendo, por supuesto, al usuario de esta eventualidad. eventualidad. Diseñador de formularios Totalmente orientados al objeto, permiten diseñar el aspecto gráfico final de una aplicación. aplicación. Permiten la inclusión de objetos estándar en Windows, tales como casillas de verificación, grupos de opciones, marcos de página, imágenes, controles OLE. Gracias al diseñador de clases visuales, se pueden crear nuevos tipos de controles que pueden ser incorporados como cualquier otro control a un formulario. Gestionan de forma transparente al usuario el entorno de datos asociado para cada formulario. En este entorno de datos es posible incluir cualquier cualquier tabla, vista local o remota definida en una base de datos. Pero no sólo eso, es posible que cada entorno de datos sea privado para cada formulario. De esta forma pueden abrirse varias instancias de un mismo mismo formul formulari ario o sin que exista existan n probl problema emass de colisi colisión ón de datos datos entre entre las dos instancias definidas. Diseñador de informes y etiquetas A la hora de visualizar datos, ya sea por pantalla o impresora, Visual FoxPro incorpora un potente diseñador de informes y etiquetas. En un informe se pueden definir objetos dentro de las tres bandas, cabecera, pie o detalle, y, además, distribuir el informe en varios grupos que muestren el resultado de cálculos sumatorios u otros realizados desde el propio formulario. A estas prestaciones hay que añadir la posibilidad de incluir en el entorno de datos del propio informe cualquier tabla o vista definida en la base de datos, tal como se ha comentado en referencia a los formularios. Diseñador de menús Este diseñador se utiliza para crear menús personalizados en la aplicación y así sustituir el menú incorporado por Visual FoxPro. El sistema utilizado se basa en la creación de unos ficheros donde están las definiciones de menú. A posteriori, la información contenida en estos ficheros de menú es analizada por un generador de códig código o con la finali finalida dad d de genera generarr de forma forma automá automátic tica a códig código o fuente fuente con las definiciones definiciones de menú. Asistentes Para usuarios incipientes, los asistentes pueden ayudar a crear nuevos tipos de ficheros de forma sencilla y rápida. No por ello se elimina la posibilidad de modificar los ficheros creados, ya que éstos pueden ser alterados posteriormente mediante su diseñador correspondiente. correspondiente. Los Los genera generado dores res de contro controle less ayudan ayudan en la creaci creación ón de nuevos nuevos contro controle less insertados en los formularios. Estos generadores se encuentran totalmente abiertos y el usuario puede incorporar sus propios generadores. 11
Diseñador de consultas y vistas Cuando se trata de recuperar información, información, los generadores generadores de consultas y vistas constituyen un apoyo indispensable para poder generar expresiones SQL. Si estas sentencias extraen información de la propia base de datos, se denominan vistas locales. Cuando estas vistas extraen información de una base de datos externa, se denominan vistas remotas. Apariencia de la ventana de sistema El sistema intérprete se basa en la utilización de la ventana Comandos. Desde esta ventana se escriben sentencias que usualmente provocan una acción por parte del sistema de desarrollo. Así, desde la ventana de comandos se puede abrir tablas, examinar su contenido, crear programas, compilarlos, compilarlos, etc. Aparte de la ventana de comandos, cualquier acción se puede realizar desde el menú menú de sist sistem ema, a, o bien bien desd desde e la barr barra a de herr herram amie ient ntas as acti activa va.. Es posi posibl ble e personalizar el menú de sistema y cualquier barra de herramientas, o incluso crear nuevas barras de herramientas según las necesidades del usuario.
Tipos de Ficheros Como se han dicho, el proyecto guarda información acerca de la localización de cada cada arch archiv ivo. o. Como Como ayud ayuda a se pres presen enta ta una una lista lista de las las posi posibl bles es exte extens nsio ione ness asociadas con cada tipo de ficheros f icheros y una breve descripción de cada tipo.
Tipo Proyecto
Extensiones relacionadas PJX, PJT
Descripción
Bases de Datos
DBC, DCX, DCT
Formulario
SCX,SCT
Bibliotecas Bibliotecas de Clases Visuales Tablas
VCX,VCT DBF,FPT
Bibliotecas conteniendo varias clases definidas por el usuario. Tablas y fichero memo asociados.
Índices
CDX,IDX
Ficheros índice compactos y simples.
Documentación
ACT
Informes
FRX,FRT
Fichero conteniendo el diagrama de acciones de un fichero PRG generado por el asistente de documentación. Informes.
Etiquetas
LBX,LBT
Etiquetas.
Librerías Windows
DLL
Librería de enlace dinámico Windows
Errores
ERR
Fichero de seguimiento de errores de compilación.
Núcleo central de desarrollo. Efectúa el segui seguimie miento nto a todos todos los los ficher ficheros os relacionados con una aplicación. Tabla Tabla contenedo contenedora ra para informaci información ón rela relaci cion onad ada a con con tabl tablas as,, índi índice ces, s, relaciones, relaciones, vistas y conexiones. Ficheros de definición de formularios.
12
Ejecutables
EXE
Fichero ejecutable Visual Foxpro.
Macros
FKY
Fichero de definición de macros.
Bibliotecas Bibliotecas API
FLL
Programas
PRG,FXP
Bibliotec teca de enlace dinámico Windows. Programa Fuente y Compilado.
Ayuda
HLP
Fichero de ayuda gráfica.
Memoria
MEM
Menús
MNX,MNT
Fic Fichero hero de alm almacen acena amie miento nto variables de memoria. Fichero de definición de menús.
Menús generados
MPR,MPX
Control OLE
OCX
Fich Ficher ero o gene genera rado do y comp compililad ado. o. A partir de una definición de menús. Fichero control ActiveX
Consulta SQL
QPR,QPX
Fichero de consulta SQL.
Copias de seguridad
TBK,BAK
Texto
TXT
Copi Copias as de segu seguri rida dad d de dive divers rsos os ficheros. Ficheros de Texto.
Constantes
H
Fichero de constantes predefinidas.
de
Gestión de ficheros Desde el menú Archivo se realizan las acciones relacionadas con archivos. Consta de las opciones: Opción Nuevo Abrir Cerrar Guardar Guardar como... Revertir
Descripción Crea un nuevo fichero de cualquier tipo Abre un fichero de cualquier cualquier tipo. Cierra el archivo en uso. Actualiza las modificaciones efectuadas al fichero actual en disco. Salva el fichero actual en disco con un nuevo nombre. Recupera la versión guardada en disco del fichero actual.
Cuando se desea crear un nuevo fichero, se muestra el cuadro de diálogo tal como vemos en la Figura. Este cuadro de diálogo permite seleccionar seleccionar el tipo de fichero que se desea crear. Existen diversos tipos de ficheros que permiten su creación mediante asistentes, que facilitan enormemente la tarea de crear nuevos f icheros.
Los Asistentes Los asistentes proporcionan el método más eficaz y sencillo de apoyo a los nuevos usuarios en Visual Foxpro. Cubren prácticamente todos los tipos de ficheros básicos
13
que se pueden crear, desde tablas t ablas a formularios, pasando por informes, consultas, etc. Veamos cuáles son:
Asistentes Asistente para formularios Asistente para formularios uno a varios Asistentes para tablas Asistente para importar datos a tablas Asistente para tablas dinámicas Asistentes para consultas Asistente para tablas de referencias cruzadas Asistentes para gráficos Asistente para informes Asist Asisten ente te pa para ra info informe rmess de uno a varios Asistente para informes de grupos/totales Asistentes para etiquetas Asistente para combinación de correspondencia Asistente para vistas Asistente para vista remota
Descripción Crea Crea nuevos nuevos formul formulari arios. os. Crea Crea ficher ficheros os de tipo tipo SCX. Crea rea form formul ula arios rios con sopo soport rte e de fich ficher ero os relaci relaciona onado doss de uno uno a muchos muchos.. Crea Crea ficher ficheros os SCX. Crea nuevas tablas libres o definidas en una base de datos. Crea ficheros de tipo DBF. Importa datos a una tabla procedentes de otro origen. Crea tablas de hoja de cálculo utilizables desde Microsoft Excel. Crea consultas con sentencias SQL almacenadas en ficheros de tipo QPR. Crea una consulta en formato hoja de cálculo. Crea ficheros de tipo QPR. Crea Crea un nuev nuevo o gráf gráfic ico o en Microsoft Microsoft Graph a partir de la información contenida contenida en una tabla. Crea una nueva definición de informe. El tipo de fichero creado es FRX. Crea una nueva definición de informe rel relacio cionan nando una tab tabla prima rimari ria a con otra tra secundaria. Crea fichero de tipo FRX. Crea un informe informe con definición de resumen para grupos y totales. Crea ficheros de tipo FRX. Crea un nuevo fichero de definición para imprimir etiquetas postales. Crea un fichero de tipo t ipo LBX. Crea Crea un orig origen en de dato datoss comp compat atib ible le con con el procesador de texto Microsoft Word o cualquier otro. Crea una nueva definición de vista en una base de datos. La información generada por este asistente se guarda en una base de datos DBC. Crea una nueva definición de vista remota. El fin es acceder a otro tipo de información contenida a su vez en un servidor de datos. Esta nueva vista se almacena en una base de datos DBC.
Crear una nueva tabla mediante el asistente Para crear una nueva tabla mediante el Asistente para tablas, debe proceder de alguna de estas dos formas: •
•
Desde el menú Herramientas, escoja el submenú Asistentes. De este menú, escoja la opción Tabla. Desde el menú principal, escoja del menú Archivo la opción Nuevo CTL+N o escoja el botón de comando Nuevo de la barra de herramientas Estándar . Visualice a continuación el cuadro de diálogo para la elección del nuevo tipo de fichero a crear. Escoja Tabla y pulse en el botón de comandos Asistente.
14
El asistente genera una nueva tabla siguiendo tácticamente una serie de pasos que conducen a confeccionar una tabla y sus índices correspondientes. correspondientes.
Paso 1. Seleccionar campos Este paso trata de determinar los campos que se van a definir en la nueva tabla, a partir de unas definiciones estándar aportadas por el propio asistente. De esta forma, se puede crear una nueva tabla basándose en tipos más o menos ajustados a las necesidades del usuario. Paso 2. Opciones de campos Puede que las definiciones de campo no se ajusten exactamente a las necesidades del usuario. Para esto existe este paso, permitiendo la modificación de los parámetros definitorios de un campo, como son su nombre, el título, el tipo, el ancho, decimales y sopo soport rte e de valo valore ress nulo nulos. s. Bien Bien,, en cuan cuanto to al títu título lo,, sólo sólo hay hay que que hace hacerr una una diferenciación, y es que si no hay una base de datos definida y abierta en el sistema, no se puede crear o modificar un título asociado a un campo. Esta es una de las cara caract cter erís ístitica cass apor aporta tada dass por por las las base basess de dato datos, s, la posi posibi bililida dad d de ampl amplia iarr la información relativa a tablas. Otro caso es el nombre del campo: si no existe una base de datos abierta, no se puede ampliar su descripción más allá de diez caracteres. Como Como se verá verá más adela adelante nte,, es posib posible le asign asignar ar nombre nombress de campo campo hasta hasta 255 caracteres. Paso 3. lndexación Para poder localizar cualquier tipo de información de una tabla es necesario recurrir a la creación de índices. Los índices proporcionan un método rápido de localización de registros basándose en expresiones. La expresión a localizar se va comparando con el conten contenid ido o del del índice índice,, hasta hasta local localiza izarr el regist registro ro cuyo cuyo valor valor en la clave clave de índice índice coincide con la expresión buscada. Paso 4. Finalizar Una vez que se han recorrido los pasos correctamente, se procede a generar una tabla. Adicionalmente, el asistente nos permite examinar la tabla tal como ha quedado o modificarla mediante el diseñador de tablas para añadirle prestaciones prestaciones adicionales
Manejo de tablas Suponiendo que hubiéramos elegido la opción Guardar la tabla y examinarla en el Asistente para tablas, obtendría una nueva ventana Examinar con la nueva tabla vacía. Lo que aquí vemos es una ventana típica utilizada para examinar tablas. En este caso estamos visualizando una tabla con registros. Dentro de la ventana distinguimos varios apartados. •
•
Columnas Dependiendo del tamaño de la ventana Examinar , se muestran más o menos menos column columnas. as. Cada Cada column columna a visua visualiz liza a en el encab encabeza ezado do el nombre del campo, o bien, el título definido en la base de datos para este campo. Usualmente, marcando en el título de un campo y arrastrándolo a una nueva posición, modificamos el orden de visualización de columnas. Selección de celda. Para indicar en qué registro está posicionado, existe un indicador situado a la izquierda de la primera columna visualizada. Este indicador una flecha indicando que el puntero de registro está posicionado en esa fila. Asimismo, la celda que tiene el enfoque de lectura visualiza el curs cursor or de edic edició ión n y está está rema remarc rcad ada a con con un cuad cuadro ro cuyo cuyoss bord bordes es son son 15
•
ligeramente mayores que las líneas separadoras. Como se puede observar en la figura, todas las funciones de edición están disponibles, tales como marcar un determinado segmento de caracteres, insertar o incluso marcar todo el contenido del campo. Estado del registro. Adyacente al indicador de registro se encuentra el indicador de estado de la marca de eliminación. Si el registro está marcado para borrar, este cuadro cambia su contenido de color negro.
Edición de registro interactivo Desde la venta Comando se pueden utilizar estos comandos para abrir la ventana Examinar y realizar modificaciones en cualquier tabla.
Comando/Función APPEND [BLANK] [IN nÁreaTrabajo | cAliasTabla] [NOMENU] BROWSE y CHANGE/EDIT MODIFY GENERAL CampoGeneral1 [,CampoGeneral2 ...] [NOMODIFY] [NOWAIT] [[WINDOW NombreVentana1] [IN [WINDOW] NombreVentana2 | IN SCREEN]] MODIFY MEMO CampoMemo1 [,CampoMemo2 ...] [NOEDIT] [NOMENU] [NOWAIT] [RANGE nCarácterInicial, nCarácterFinal] [[WINDOW NombreVentana1] [IN [WINDOW ] NombreVentana2 | IN SCREEN]] [SAME] [SAVE]
Descripción Abre Abre la vent ventan ana a Cambiar para para añadi añadir r registros a una tabla interactivamente. Examinar y Cambiar , Abren las ventanas Examinar respectivamente. Abre una nueva ventana para poder editar un campo de tipo general.
Abre Abre una una nuev nueva a vent ventan ana a para para perm permititir ir editar un campo de tipo memo.
Opciones del menú tabla Cuando se abre una nueva ventana Examinar , se crea un nuevo menú en la barra de menús de sistema. El menú Tabla contiene las opciones básicas para el manejo de tablas. Veamos algunas:
Añadir un nuevo registro Elija la opción Añadir nuevo registro, o bien, pulse la combinación de teclas CTRL+Y. Se inserta un nuevo registro en la tabla que se está examinando. También es posible añadir registros desde la ventana Comandos emitiendo alguna de las sentencias: APPEND BLANK
16
APPEND
Cambiar el estado de la marca borrado Cuando un registro ya no se hace necesario se marca como borrado. Este es el paso previo a la eliminación eliminación de todos los registros marcados, cuyo proceso requiere el uso del comando PACK. Como es evidente, también se puede realizar esta acción como todas las demás, desde la ventana Comandos, mediante la sentencia DELETE Otra posibilidad interesante es alternar el estado del registro utilizando un cuadro situado al lado del marcador de registro. Pulsando alternativamente en este cuadro, modificamos el estado de la marca de borrado.
Ir a un registro determinado Se puede ir a un registro determinado modificando la celda activa mediante el ratón y las barras de desplazamiento vertical, o el teclado mediante los cursores. Pero también se utilizar el submenú Ir al registro, cuyo contenido analizado es el siguiente: Op c i o n Primero
Último
Siguiente
Anterior
Registro número
Descripción Va al prim primer er regi regist stro ro de la tabl tabla. a. Desde la ventana Comandos habría que utilizar: GO TOP Va al últi último mo regi regist stro ro de la tabl tabla. a. Desde la ventana Comandos habrá que escribir: GO BOTTOM Posiciona el puntero de registro en el sigu siguie ient nte e regi registr stro. o. Obte Obteni nien endo do el mismo resultado que utilizando esta sentencia desde la ventana Comandos: SKIP 1 Posici Posiciona ona el punter puntero o en el regist registro ro anterior. Desde la ventana Comandos: SKIP -1 Cambia el puntero de registro a un registro específico. Desde la ventana Comando habría que emitir la siguiente sentencia: GO nRegistro
Encontrar
Dond Donde e nReg nRegis istr tro o es el núme número ro de registro donde se desea posicionar el puntero de registro. Encuentra el registro que cumpla la expr expres esió ión n de búsq búsque ueda da.. Vere Veremo moss más adelante la sintaxis del comando 17
LOCATE utilizado por esta opción de menú Continua...
Curso de Visual Foxpro
Entorno de Desarrollo de Visual Foxpro (III) (Diseñadores (Diseñadores y Asistentes - La ventana Sesión de datos Manejo de Registros Borrados - Importación/Exportación Importación/Exportación de Datos - Asistente para importar datos - Formularios - Crear un Formulario Rápido)
Búsqueda de registros Al realizar una consulta en busca de uno o varios registros que cumplan los criterios de búsqueda en una tabla es necesario aclarar algunos conceptos básicos. Por una parte, el ámbito donde se va a realizar la consulta, que puede restringirse a todos los registros de la tabla, los 10 siguientes o cualquier combinación combinación válida. Por otra parte, existe el concepto de expresión de búsqueda. Una expresión de búsqueda se evalúa y compara con el registro activo. Si no se cumple la expresión de búsqueda, continúa con el siguiente registro, y así hasta llegar al final de la tabla. Se puede comprobar si una búsqueda ha tenido éxito observando en qué posición se encuentra el puntero de registro. Por Por últi último mo,, esta esta búsq búsque ueda da cont contin inúa úa mien mientra trass se cump cumpla la una una segu segund nda a expresión. Es decir, se recorre toda la tabla mientras esta expresión sea verdadera; en cuanto evalúe a falsa, f inaliza la búsqueda, aunque no haya recorrido toda la t abla. Cuando se elige la opción Encontrar del submenú Ir al registro, se visualiza el cuadro de diálogo, que resume los tres conceptos que se acaban de perfilar. La utilidad de este cuadro de diálogo es construir a partir de la información introducida en el mismo una sentencia completa utilizando el comando LOCATE. Por tanto, lo que vaya introduciendo en este cuadro de diálogo se incorporará como argumento tras el comando LOCATE. Cuando se pulse en el botón de comando Encontrar, la sentencia LOCATE se emite desde la ventana Comandos. Veamos estos conceptos aplicados a la búsqueda de registros.
Alcance
18
El Alcance delimita la cantidad de registros que se van a procesar e incluso desd desde e y hasta hasta qué qué regi regist stro ro va a cubr cubrir ir la búsq búsque ueda da.. Cuan Cuando do se acep acepta tan n las las modificaciones introducidas en este cuadro de diálogo se añaden los argumentos necesarios en la sentencia LOCATE.
Alcance
Argumento
Descripción
Todos
ALL
Inc Incluye luye la tota totalilid dad de los reg registr istro os en la búsqueda. El límite de búsqueda va desde el registro número 1 hasta el último.
Siguiente
NEXT n
Incluye sólo los n registros siguientes al actual en la búsqueda. Es decir, especificando 10 en el cuadro de texto, incluirá sólo los 10 siguientes registros a partir del actual en la búsqueda. Por lo tanto, el límite se centra desde el registro actual hasta el número de registros especificados.
Registros
RECORD n
La búsqueda se limita únicamente al número de registro especificado especificado por este cuadro de texto.
Restantes
REST
Comienza la búsqueda a partir del registro actual y continúa hasta el final de la tabla. Por tanto, el intervalo de búsqueda se limita desde el registro actual al último de la tabla.
Cláusula FOR Este es el núcleo básico de toda sentencia de búsqueda. Veremos que hay multitud de comandos que pueden incorporar esta cláusula para delimitar aquellos registros que cumplen los criterios especificados por esta misma cláusula. Cuando se elige este botón de comando, se activa el generador de expresiones de Visual Foxpro. Esta es una herramienta de gran utilidad para la construcción de expresiones, desde la más simple hasta la más compleja. Veremos el generador de expresiones más ampliamente en secciones siguientes. Para confeccionar el ejemplo que veremos, ha bastado elegir el campo del cuadro de lista Campos. A continuación se ha escrito la comparación. Por tanto, estamos buscando aquel registro cuyo nombre de empresa sea igual a Centro, o al menos comience con esos caracteres.
Cláusula WHILE La selección de registros efectuada mediante la cláusula FOR se refiere a toda la tabla por completo, y eso precisamente se diferencia de la cláusula WHILE. Esta última restringe el ámbito de búsqueda a que la expresión lógica incluida con esta cláusula sea cierta. En el momento en que no se cumpla la expresión, el comando que incluye esta cláusula finaliza inmediatamente. Por esta razón se puede decir que en este caso la búsqueda se realizará mientras se cumpliera la cláusula WHILE, finalizando la búsqueda cuando no se cumpliera, aunque no se hubiera recorrido toda la t abla.
19
La ventana Sesión de datos Este cuadro de diálogo se utiliza como gestor para las tablas abiertas. Consta de dos cuadros de lista que visualizan, por una parte, las tablas abiertas y, por otra, las rela relaci cion ones es esta establ blec ecid idas as entr entre e ella ellas. s. Cada Cada tabl tabla a tien tiene e asoc asocia iada dass una una seri serie e de prop propie ieda dade dess a las las cual cuales es es posi posibl ble e acce accede derr desd desde e el botó botón n de coma comand ndo o Propiedades. Asimismo, es posible abrir, cerrar tablas o establecer nuevas relaciones entre las tablas abiertas. Pero la función primordial puede ser la de examinar el contenido de la tabla seleccionada en el cuadro de lista Alias utilizando el botón de comando Examinar . La particularidad de esta opción reside en que se recupera el estado en que se cerró la ventana Examinar para esa tabla la última vez, incluyendo tamaño y posición de la ventana o el tipo y tamaño de la fuente utilizada.
Modificar las propiedades de la Tabla Cuando se pulsa el botón de comando Propiedades, se accede al cuadro de diálogo utilizado para modificar las propiedades de la tabla abierta en el área de trabajo actual. Entre las opciones que se pueden controlar desde este cuadro se encuentra la posibilidad de activar un índice determinado, filtrar los registros de una tabl tabla a o rest restri ring ngir ir la info inform rmac ació ión n que que se mues muestr tra a en una una vent ventan ana a Examinar predeterminada.
Búfer de datos almacenamiento en El búfer de datos se activa si se elige la opción Activar almacenamiento búfer de datos. Esto significa que los cambios que se efectúen sobre la tabla no serán actualizados en forma inmediata, y dependiendo del tipo de búfer de datos elegidos, son potencialmente descartables en un momento determinado. Siempre es posible cambiar el estado del búfer de datos, y de hecho, si no se indica lo contrario, la tabla no se abre inicialmente con ningún búfer de datos activo. Por tanto, si se desea utilizar el búfer de datos, es necesario activarlo desde este cuadro de diálogo, o bien, desde la ventana Comandos mediante la función DBSET PROP(). Selección de índice Desde este cuadro combinado se elige el orden activo para el área de trabajo actual. Se muestran en él todas las etiquetas del índice definidas para esta tabla. De este modo se pueden utilizar el comando SEEK y la función SEEK() para encontrar el registro que cumpla el criterio de búsqueda. Filtro de datos Desde el cuadro de texto o utilizando el generador de expresiones, llamado al pulsar el botón de comando, generamos una expresión de filtro de datos. Esto significa que cuando abramos una ventana Examinar para esta tabla, sólo se van a visualizar aquellos registros que cumplan la condición escrita aquí. Filtro de campos
20
Del mismo modo que se establecen filtros para visualizar una parte de los datos presentes en una tabla, es posible realizar una acción análoga con las columnas definidas en una tabla. De este modo, sólo aparecen en la ventana Examinar aquellas columnas pedidas en esta opción.
Examinar La Ventana Examinar tiene una serie de características interesantes, entre las cuales podemos destacar las siguientes: siguientes:
Modificar el aspecto de las columnas Las columnas de datos pueden cambiar su posición y tamaño. Definición de particiones Una Ventana Examinar puede dividirse verticalmente en dos particiones. particiones. Cada partición puede funcionar de forma independiente y presentar un aspecto distinto. Fuentes Cualqui Cualquier er fuente fuente definida definida en Windows puede utilizarse para visualizar, en cualquier tamaño y tipo, información en una ventana Examinar.
Abrir y Cerrar tablas Estos dos botones de comando permiten abrir y cerrar tablas. Cuando se pulsa en el botón de comando Abrir se selecciona la última área de datos activa y se abre en esa área. Si existe una tabla seleccionada en la lista de alias activo, el comando de cierre se refiere al área que está ocupando esa tabla.
Establecer relaciones Si existen al menos dos tablas abiertas, es posible establecer relaciones entre ambas. La forma de establecer relaciones entre la s dos consiste en pulsar el botón de comando Relaciones teniendo una de las dos seleccionada en el cuadro de lista Alias. En ese momento, en el cuadro de lista Relaciones aparece la tabla elegida. Para establecer una relación entre las dos tablas es necesario saber qué campo de la tabla principal - la que se eligió en primer lugar - hay que buscar en la tabla tabla secun secunda daria ria.. Eso es precis precisame amente nte lo que se le pide pide al usuari usuario o cuand cuando o se establece una nueva relación. En primer lugar elegimos un campo de la tabla principal, y a continuación, continuación, el orden activo en la tabla t abla secundaria. secundaria.
Manejar registros borrados La eliminación de registros puede realizarse de tres formas distintas, desde la ventana Examinar , utilizando el marcador de registros borrados; desde la opción Alterna Alternarr marca marca de eliminac eliminación ión del menú Tabla, o bien bien,, medi median ante te el coma comand ndo o DELETE desde la ventana Comandos.
21
El efecto inmediato es que el registro actual queda marcado para borrar y se requiere la posterior intervención del comando PACK, que elimina definitivamente de la tabla todos aquellos registros marcados para borrar.
Recuperar registros Se puede alternar la marca de borrado de un registro determinado. Esto se consigue de tres formas distintas: desde la propia ventana Examinar , mediante la opción Alternar marca de eliminación, presente en el menú Tabla, o mediante el comando RECALL. Eliminar un conjunto de registros Para evitar la necesidad de ir marcando cada registro individualmente, se recurre al marcaje de varios registros de una vez. Para ello podemos utilizar la opción Eliminar registros del menú Tabla o bien el comando DELETE. Eliminar registros marcados Los registros marcados como borrados permanecen en la tabla hasta que no se invoca el comando PACK o se utiliza la opción Desmarcar registros del menú finalida idad d de este este comand comando o es elimi elimina narr física físicamen mente te todos todos los regist registros ros Tabla. La final marcados. Después de efectuar esta operación no será posible recuperar los registros eliminados de ninguna forma.
Uso de registros borrados A continuación se detallan todos los comandos y funciones relacionados con el uso de registros borrados.
Comando/Función DELETE [Alcance] [FOR lExpresión1] [WHILE lExpresión2] [IN nÁreaTrabajo | cAliasTabla] [NOOPTIMIZE] DELETE FROM [NombreBaseDatos!]NombreTabla [WHERE CondiciónFiltro1 [AND | OR CondiciónFiltro...]] DELETE ([cAliasTabla | nÁreaTrabajo]) RECALL [Alcance] [FOR lExpresión1] [WHILE lExpresión2] [NOOPTIMIZE] PACK [MEMO] [DBF]
SET DELETED ON|OF
Descripción Borra uno o más registros de una tabla. Puede utilizarse el alcance o las expresiones FOR y WHILE para determinar el rango de registros a borrar. Marca Marca regist registros ros para para elimin eliminar ar media mediante nte SQL Indica si el registro actual está marcado para borrar. Recupera uno o más registros marcados para borrar. Puede utilizarse la cláusula de alcance o las expresiones FOR y WHILE para para deli delimi mita tarr el rang rango o de regi regist stro ro a recuperar. Elim limina ina de la tab tabla acti activa va tod todos los los registros marcados para borrar. Indicando la cláusula cláusula MEMO compacta compacta el espacio espacio utilizado por el archivo de campos memo FPT. Si se incluye la cláusula DBF, se ignora la compactación del archivo memo. Indi Indica ca si los los regi regist stro ross marc marcad ados os para para 22
ZAP [IN nÁreaTrabajo | cAliasTabla] BLANK [FIELDS ListaCampos] [Alcance] [FOR lExpresión1] [WHILE lExpresión2] [NOOPTIMIZE]
borrar están disponibles cuando se utilizan otros comandos. Elim Elimin ina a todo todoss los los regi regist stro ross de la tabl tabla a especificada, estén o no marcados para borrar. Borra toda la información de uno o más registros sin marcarlos para borrar.
Reemplazar valores en campos Mediante la ventana Examinar, tal como hemos ido viendo hasta ahora, es posible alternar el contenido de uno o más registros. Sin embargo, a veces se hace necesario modificar un grupo de registros de una vez sin necesidad de ir cambiando el valor de uno en uno. Para efectuar esta operación encontramos la opción Reemplazar campo en el menú Tabla. Esta opción muestra un cuadro de diálogo que permite efectuar este tipo de modificaciones masivas.
Importación/Exportación de datos Tan importante como el dominio sobre los datos a los que podemos acceder mediante el gestor de tablas es la posibilidad de acceder a los datos contenidos en ficheros creados por otras aplicaciones. De esta forma podemos extraer información de los mismos, tratarla y, si resulta útil, enviarla de nuevo al tipo de datos de origen.
Comando/Función EXPORT IMPORT APPEND FROM APPEND MEMO COPY TO
Descripción Expo Export rta a dato datoss de una una tabl tabla a de Visual FoxPro a cualquiera de los tipos soportados. Importa datos desde un fichero de datos exter terno en alguno de los formatos soportados. Agrega registros de otra tabla al final de la tabla activa. Copia en un campo memo el contenido de un archivo de texto. Crea una tabla nueva a partir del contenido de la tabla activa.
Importar datos Microsoft Visual FoxPro soporta los siguientes tipos de ficheros, de los cuales puede extraerse información si elegimos la opción Importar del menú Archivo: Tipo Microsoft Excel 5.0 (XLS)
Descripción Esta Esta opción opción permi permite te import importar ar datos datos de hojas de cálculo creadas con Microsoft Excel 5.0.
23
Microsoft Excel 2.0, 3.0 y 4.0 (XLS) Lotus 1-2-3 3.x (WK3) Lotus 1-2-3 2.x (WK1) Lotus 1-2-3 1-A (WKS) Paradox 3.5 y 4.0 (DB) Symphony 1.10 (WR1) Symphony 1.01 (WRK) FrameWork II (FW2) Multiplan 4.01 (MOD) RapidFile (RPD)
Esta Esta opció opción n import importa a datos datos de hojas hojas de cálculo de Microsoft Excel Versiones 2.0, 3.0 y 4.0. Importa datos procedentes de una hoja de cálculo realizada con Lotus 1-2-3 versión 3.x. Importa datos procedentes de una hoja de cálculo realizada con Lotus 1-2-3 versión 2.x. Importa datos procedentes de una hoja de cálculo realizada con Lotus 1-2-3 versión 1-A Importa datos procedentes de la base de datos Paradox en su versión 3.5 y 4.0. Permite importar datos procedentes de la hoja hoja de cálc cálcul ulo o del del paqu paquet ete e inte integr grad ado o Symphony versión 1.10. Permite importar datos procedentes de la hoja hoja de cálc cálcul ulo o del del paqu paquet ete e inte integr grad ado o Symphony versión 1.01. Permite importar datos procedentes de la hoja hoja de cálc cálcul ulo o del del paqu paquet ete e inte integr grad ado o FrameWork II. Permite importar datos procedentes de la hoja de cálculo Multiplan versión 4.01. Importa datos procedentes de RapidFile
Asistente para importar datos Este asistente es adecuado en aquellas ocasiones en las que se necesita moldear algunos aspectos de la importación de datos. Este sencillo pero potente asistente permite especificar el origen y destino de los datos, ver qué datos se están importando directamente y especificar el nombre y tipo de cada uno de los campos que se están importando.
Paso 1. Archivos de origen y de destino. En este primer paso especificamos el tipo de fichero de datos del que se van a extraer los datos. A continuación se indica el fichero de datos y, por último, el nombre de la tabla sobre la que se van a copiar los registros importados. Paso 2. Determinar el formato de los datos En este se puede tener una vista previa de la información que se pret preten ende de impo import rtar ar.. Esto Esto es impo import rtan ante te,, pues pues perm permitite e iden identitififica car r correctamente los datos que pretendemos insertar, ya que podemos volver atrás y especificar otro origen de datos en cualquier momento.
Paso 3. Definir campos importados Antes de efectuar la importación de datos podemos ver la estructura de la infor informac mació ión. n. Esta Esta panta pantalla lla permit permite e el cambi cambio o de los los sigui siguient entes es parámetros: Nombre, Tipo, Ancho y posiciones Decimales. Paso 3ª. Especificar opciones internacionales.
24
A la vist vista a de la info inform rmac ació ión, n, se pued puede e alte altern rnar ar unas unas cuan cuanta tass prop propie ieda dade dess de la info inform rmac ació ión n a impo importa rtar. r. Por Por ejem ejempl plo, o, si se ha especi especific ficado ado un archi archivo vo de texto texto como como origen origen de datos, datos, podem podemos os modificar diversos aspectos de esta transformación, transformación, tal como especificar el carácter separador de campos.
Formularios. Introducción En principio, la ventana Examinar puede se suficiente herramienta para la visualización visualización y modificación modificación de tablas, pero, además, podemos utilizar formularios para dar una presencia más útil y versátil a la misma información. Los formularios contienen cualquier tipo de control, desde etiquetas, pasando por cuadros de texto, cuadros de edición, hasta cuadros combinados o cuadros de lista. lista. Existe Existe un número número sufici suficient ente e de contro controles les dispo disponib nible less de forma forma están estándar dar,, pudiéndose pudiéndose ampliar esta lista con controles diseñados por el propio usuario o controles universales OCX. Un formulario tiene asociado un entorno de datos que permite abrir y cerrar de forma automátic automática a las tablas que el mismo formulari formulario o necesita. necesita. Incluso es posible posible utilizar el resultado de consultas de una base de datos. Otra Otra caract caracter erísti ística ca import important ante e relati relativa va a los contr controle oless insert insertabl ables es en un formulario es la vinculación que pueden mantener con un origen de datos. Esto quiere decir que un control puede visualizar y editar directamente el contenido de un campo de una tabla. Por ejemplo, podemos definir que un cuadro de lista edite el campo relativo al nombre de un producto definido en la tabla Productos, o una casilla de verificación indicando si ese producto dispone de existencia suficientes. En definitiva, se trata de visualizar información de forma que el usuario identifique identifique claramente el tipo de información que necesita para tomar decisiones.
Crear un formulario rápido La forma más sencilla de crear formularios es, en principio, recurrir al asistente para la creación de formularios. Puede llamar a este asistente cuando crea un nuevo formulario, o bien desde el menú Asistentes, escogiendo la opción Formulario. Como datos básicos, tal como se va a comprobar a continuación, continuación, este asistente sólo necesita una tabla y qué campos de la misma van a participar en la generación del nuevo formulario. El orden en el que van a figurar en el formulario definitivo depe depend nde e del del orde orden n que que se vaya vayan n elig eligie iend ndo o desd desde e el cuad cuadro ro de lista lista Campos disponibles hacia el cuadro de lista Campos seleccionados.
Paso 1. Selección de campos El primer paso consiste en la elección de tabla y campos. Como dato esen esenci cial al se nece necesi sita ta una una tabl tabla, a, de la cual cual se van van a toma tomarr las las defin definici icione oness de deter determin minado adoss campos campos con el fin de confec confeccio cionar nar controles para su visualización y edición desde el nuevo formulario. Como Como dato dato inte intere resa sant nte e se pued puede e come coment ntar ar el hech hecho o de que que este este generador utiliza como etiquetas de campo, es decir, el texto que figura delante de cada uno de los controles de edición, el encabezado que se haya definido en la base de datos si la tabla pertenece a una. Paso 2. Estilo
25
Existe una serie de estilos predefinidos que el asistente utiliza como patr patrón ón en el mome moment nto o de gene genera rarr el aspe aspect cto o visu visual al gene genera rall del del formulario y cada uno de los controles que lo contienen. Esta prestación se completa con la posibilidad de elegir botones de comando gráfico o de texto. Estos botones de comando situados en la parte inferior del nuevo formulario permiten mover el puntero de registro del primer al último registro, o bien, al anterior o siguiente con respecto al registro que que se está está visual visualiza izando ndo actua actualme lmente nte.. Pueden Pueden,, además además,, inser insertar tar o eliminar registros de la tabla.
Paso 3. Orden. Si la tabla no dispone de una secuencia de ordenación, lo que hace este paso es permitir crear una a partir de hasta tres campos de la tabla origen de datos. Este orden será utilizado en los desplazamientos hacia atrá atráss o adel adelan ante te cuan cuando do se util utiliz izan an los los boto botone ness de coma comand ndo o de desplazamientos desplazamientos por registros.
Paso 4. Finalizar Como Como info inform rmac ació ión n fina final,l, el asis asiste tent nte e nece necesi sita ta sabe saberr el títu título lo del del form formul ular ario io y qué qué dese deseam amos os hace hacerr con con él. él. A este este últi último mo resp respec ecto to tenemos tres opciones: guardar el formulario para poder ejecutarlo o modificarlo posteriormente, posteriormente, generar y ejecutar el formulario o bien, y por último, generar el formulario y modificarlo mediante el generador de formularios. Antes de elegir cualquiera de las tres opciones, podemos ver una presentación del formulario en proceso de generación, con el fin de alterar cualquier información de las que se han definido en los tres pasos anteriores.
Ejecutar el nuevo formulario Una vez que se ha generado el formulario y tras realizar unas pequeñas modificaciones podemos obtener un formulario. Como se podrá observar, en la parte superior del formulario figura el título elegido para el mismo: Empleados
Macros Existen multitud de situaciones donde repetimos hasta la saciedad la misma secuencia de teclas: al abrir un proyecto, al abrir una pantalla, al compilar, etc. Las macros pueden ayudar a que la secuencia de teclas que tengamos que utilizar se reduzca lo más posible y de esta forma aprovechemos mejor el tiempo. Las macros permiten grabar secuencias de caracteres y asociarlas a una combinación de teclas. De esta forma, la pulsación de esta combinación de teclas a posteriori ejecuta la secuencia de caracteres guardada.
Las Macros de sistema Quizá la macro más conocida, pero no por ello reconocida como tal, sea F1, utilizada para activar la ayuda de sistema. Existen otras macros más que vamos a ver
26
a continuación y que son las que incorpora Visual FoxPro en el momento de ser instalado:
M ac r o
Descripción
A c c i ón
F2
Abre la ventana Sesión de Datos Ejecuta la siguiente secuencia de teclas: SET (INTRO). Es decir ecir,, escri scrib be en la vent venta ana de coma comand ndos os el coma comand ndo o SET y a continuación continuación la tecla INTRO.
F3
Lista los registros de la tabla activa por pantalla
Ejecuta la siguiente secuencia de teclas: LIST (INTRO). Tal Tal como hemos mos vist visto o en la macro acro ante nterio rior, escr escriibe en la ven ventan tana de coma comand ndos os el coma comand ndo o LIST y a continuación continuación la tecla INTRO.
F4
Efectú Efectúa a un dire directo ctorio rio por por pant pantall alla a
Ejecut Ejecuta a la siguie siguiente nte secuen secuencia cia de teclas: teclas: DIR (INTRO).
F5
Muestra la estructura de la tabla activa por pantalla
Ejecuta la siguiente secuencia de teclas: DISPLAY STRUCTURE (INTRO).
F6
Muestra el estado del sistema por Ejecuta la siguiente secuencia de teclas: DISPLAY STATUS (INTRO). pantalla
F7
Muestra el contenido de la memoria por pantalla
Ejecuta la siguiente secuencia de teclas: DISPLAY MEMORY (INTRO).
F8
Muestra el contenido del registro actual de la tabla activa por pantalla
Ejecuta la siguiente secuencia de teclas: DISPLAY (INTRO).
F9
Abre la ventana de inserción de nuevos registros en formato ficha de la tabla activa
Ejecuta la siguiente secuencia de teclas: APPEND (INTRO).
¿Cómo grabar una macro? Es muy sencillo; para ello basta con pulsar las teclas MAYÚSCULAS-F10. Visualizamos un cuadro de diálogo pidiendo la combinación de teclas a la cual vamos a asociar la secuencia de teclas que están a punto de ser grabadas. Es decir, cada vez que pulsemos la secuencia de teclas que se indica en este momento, se repetirá las teclas pulsadas a continuación de la salida de este cuadro de diálogo. Cuando Cuando pulsemos pulsemos Aceptar en este este cuad cuadro ro de diál diálog ogo, o, toda todass las las tecl teclas as pulsadas quedarán registradas en la macro llamada Control-Alt-F, invocada siempre que se pulse la combinación combinación de teclas CTRL-ALT-F. Conozcamos los nombres de cada una de las teclas para poder identificarlas correctamente. Nomenclatura de teclas Tecla
Nombre LEFTARROW RIGHTARROW 27
UPARROW DNNARROW
Inicio (Home) Fin (End) AvPág (Page Up) RePág (Page Down) Sup (Del) Borrar (Backspace) Borrar espaciadora (Spacebar) Ins Tabulador Retroceder tabulador (Shift Tab) Intro (Enter) F1 a F12 Ctrl+F1 a Ctrl+F12 Shift+F1 a Shift+F12 Alt+F1 a Alt+F12 Alt+0 a Alt+9 Alt+A a Alt+Z
HOME END PGUP PGDN DEL BACKSPACE SPACEBAR INS TAB BACKTAB ENTER F1, F2, F3 ... Ctrl+F1, Ctrl+F2... Shift+F1, Shift+F12... Alt+F1, Alt+F2, Alt+F3... Alt+0, Alt+1, Alt+2... Alt+A, Alt+B, Alt+C...
Ctrl+
Ctrl+LEFTARROW
Ctrl+ Ctrl+inicio Ctrl+Fin Ctrl+AvPág Ctrl+RePág Ctrl+A a Ctrl+Z Botón derecho ratón Botón izquierdo ratón Cualquier botón del ratón Esc
Ctrl+RIGHTARROW Ctrl+HOME Ctrl+END Ctrl+PGUP Ctrl+PGDN Ctrl+A, Ctrl+B, Ctrl+C... RIGHTMOUSE LEFTMOUSE MOUSE ESC
¿Cómo visualizar y editar las macros activas? Para acceder al cuadro de diálogo para el mantenimiento de macros elija la opción Macros del menú menú Tools. Se visu visual aliz iza a una una vent ventan ana, a, esta esta vent ventan ana a está está subdividida en los siguientes elementos:
Lista de macros definidas definidas. Este cuadro de lista visualiza los nombres de las macros definidas en este momento en el sistema. Cada elemento de
•
28
la lista visualiza el nombre que se le ha dado a la macro, no la tecla que invoca a la misma, aunque normalmente suele coincidir el nombre que se le da a la macro con la combinación combinación de teclas que la ejecuta.
Grabar . Inicia la secuencia de grabación de una macro. Es similar a la pulsación de las teclas MAYÚSCULAS+F10. Nueva. Crea una macro nueva. • Editar . Edita el contenido de una macro existente. • Borrar . Borra una macro definida. • Conjunto de macros. Los botones de comando definidos en esta zona • permiten recuperar un conjunto de macros guardadas en un fichero, salvar las existentes en un fichero o hacer que las macros definidas en este moment momento o sean sean las predet predeterm ermina inada dass cada cada vez que se arran arranca ca Visual FoxPro. •
Grabación de macros Este ejemplo trata de una macro para crear un nuevo proyecto cada vez que se pulsa la tecla F3. Se puede iniciar la secuencia de grabación de la macro de dos formas: Pulsar la combinación de teclas MAYÚSCULAS-F10.
•
Escoger del cuadro de diálogo que aparece al pulsar Tools-Macros la opción Record. •
En cualquier de los dos casos se visualiza el cuadro de diálogo correspondiente. correspondiente. A continuación continuación pulsaremos F3 para que quede registrada como tecla de inicio de la macro. Como nombre de macro la vamos a llamar NuevoProyecto. Dado que ya existe la macro F3 definida en el sistema, vemos una ventana de alerta advirtiendonos esta circunstancia. Esta ventana admite tres repuesta totalmente distintas:
Sobrescribir . Esta Esta será será la acci acción ón lógi lógica ca que que esco escoge gere remo moss para para contin continuar uar con este este ejempl ejemplo. o. Vamos Vamos a sobree sobreescr scrib ibir ir el conten contenido ido de la macro F3 con las teclas que vamos a dejar registradas a continuación. b) Añadir pulsaciones. Como veremos más adelante, es posible añadir a una macro existentes nuevas pulsaciones al final de la misma. c) Cancelar . Cancela la grabación de la macro. a)
Desde Desde el moment momento o en que que hemos hemos pulsad pulsado o sobre sobre el botón botón de coman comando do Sobrescribir , todas las teclas que se pulsen a partir de ese momento quedarán registradas en la definición de la macro NuevoProyecto. El objetivo de esta macro es escribir de forma automática en la ventana de comando la instrucción CREATE PROJECT y a continuación la tecla Intro. Para asegurar que vamos a escribir en la ventana de comandos, la activamos mediante CTRL-F2. Por tanto pulsamos:
•
Ctrl-F2
29
A continuación, sobre la ventana de comando, continuamos escribiendo la instrucción CREATE PROJECT y por último pulsamos Intro. •
Cuando se haya pulsado intro, se visualiza el cuadro de diálogo de apertura de ficheros. En este momento y para finalizar la grabación de la macro, volvemos a pulsar MAYÚSCULA-F10. Vemos el cuadro de diálogo: • Insertar literal. Inserta en la definición de macro la tecla tal cual se ha pulsado. • Insertar pausa. Este botón de comando permite insertar una pausa en la macro de dos formas distintas:
Tecla para reanudar : Cuando se inserta una pausa de este tipo en una macro, ésta no reanuda su ejecución hasta que no se pulsa una tecla. Segundos. Esta pausa paraliza momentáneamente la macro los • segundos especificados especificados en el control numérico. •
Pulsamos Aceptar y finalizamos la grabación de la macro. De esta forma, cada vez que deseemos crear un fichero nuevo de proyecto, tan sólo tendremos que pulsar F3.
Edición de macros Dado que a veces es difícil recordar la secuencia de teclas que conducen a realizar una acción, es posible que cometamos errores. No hay problema, puesto que es posible introducir nuevas pulsaciones o eliminarlas en cualquier lugar de la macro. Para modificar el contenido de una macro, sigamos los siguientes pasos: 1. 2.
Elija la opción Macros del menú Herramientas. Seleccione de la lista de macros definidas la que desee modificar. Para editar la macro, pulse el botón de comando Editar. Aparecerá un cuadro de diálogo.
En el ejemplo anterior habíamos creado una macro ( NuevoProyecto) que se activaba mediante la pulsación de la tecla F3. Veamos su contenido: (CTRL+F2)CRATE(SPACEBAR)P (CTRL+F2)CRATE(SPACEBAR)PROJECT(ENTER). ROJECT(ENTER). Tal como se grabó, en primer lugar detectó la pulsación de la combinación de teclas CTRL+F2 para asegurar que escribíamos en la ventana comando. A continuación, el texto CREATE PROJECT separado por un espacio, y finalmente, la tecla INTRO. Continua...
30
31
Laboratorio Nº 1 Objetivo: Creación de tablas libres y dependientes, dependientes, Bases de Datos, Relaciones Relaciones temporales y permanentes, permanentes, Integridad Referencial. (El usuario debe tener Instalado en su PC. Visual FoxPro 5.0) Nota: Sr. Usuario siga la secuencia paso a paso, mayormente todo será vía menú.
1.- Cargando el Sistema desde Windows 98/95: Haga Click en Menú: • Inicio • Programas • Microsoft Visual FoxPro • Microsoft Visual FoxPro 5.0
Carga completada (Esto debe estar observando en su pantalla), luego digite en la Ventana de Comandos: RUN MD MD C: C:\PRACTICA Esta orden: Crea una Carpeta SET DEFA TO C:\PRACTICA “ : Activa Carpeta por Defecto
2.- Creación de una Tabla Libre Nos proponemos ahora, crear una tabla Libre, para lo cal Ud. Haga: Click en las siguiente opciones desde el Menú Principal: Principal : Archivo Nuevo (•) Tabla Nuevo Archivo Ver la siguiente Figura (Pag. 2)
32
Viendo la pantalla de la derecha, Sele Selecc ccio ione ne la carp carpet eta a dond donde e desea guardar su tabla. Guardar en: PRACTICA Nombre de la Tabla: CLIENTES Guardar como tipo: Tabla /DBF
Luego Click en Guardar
En las siguientes líneas tiene Ud. La estructura de la tabla Clientes. CLIENTES.DBF Nombre de Campo ClieCod ClieNom ClieApe ClieDir ClieRuc
Tipo C C C C C
Ancho 3 40 40 40 8
Decimales
Descripción Código del Cliente Nombre del Cliente Apellidos: Paterno y Materno Dirección del Cliente Número de RUC del Cliente
En esta esta pant pantal alla la es donde Ud. Va ha dise diseña ñarr la estru estruct ctur ura a de la tabla. Adelante Ud. Nota:
No presione ENTER , si desea pasar, de unaa líne un líneaa a otra otra.. VF VFP, P, puede interpretar, que ya, a terminado. Para este fin utilic uti licee la tec tecla la TAB ó el MOUSE .
Después de haber terminado, Haga Click en: ACEPTAR Aparecerá la siguiente consulta:
33
Responda afirmativamente, haciendo Click en Sí. Luego, ingrese par de registros. TABLAS DEPENDIENTES Las siguientes tablas, cuya estructura se muestra en la parte inferior, las vamos a crear como tablas dependientes. ARTICULO.DBF ArtCod ArtNom ArtPre ArtStock ArtFoto
C C N N G
FACTURAS.DBF 3 25 7 5 4
2 0
NumFac FecVen ArtCod ClieCod Cant PreVen
C T C C N N
5 8 3 3 5 8
2
Para lo cual, debemos crear primero la BASE DE DATOS a quien va estar asociado, nuestras tablas.
Creación de una Base de Datos Crearemos nuestra Base de Datos, haciendo Click, en las siguientes opciones, iniciando desde el MENU PRINCIPAL. Click en: (En otras latitudes dicen Pinchar , en lugar de decir Click: decir Click:)
Archivo Nuevo (*) Base de Datos Nuevo Archivo Aparece el gráfico de la derecha, Digitar en: Base de datos:
Ventas
Luego Click en:
Guardar
Luego aparecerá el gráfico de la parte inferior.
Creación de una Tabla Dependiente Para crear tablas dependientes, de nuestra Base de datos, existen muchas formas, pero una de ellas, es del siguiente modo: Llevamos el Mouse sobre el área libre de la Base de Datos y luego, presionamos el Botón Derecho de la misma. En el menú contextual, eligimos: Nueva Tabla,
y otra vez Click en Nueva Tabla
34
Asignar nombre de tabla:
ARTICULO GUARDAR
Luego Click en: en : Observe el gráfico inferior y diseñe la estructura de las tablas dependientes, las estructuras se encuentran en la página anterior.
Nota: Observe este gráfico y la de Clientes ( Página 2), ambos son de creación de estructuras, pero tienen u na marcada diferencia.
Finalmente, cuando haya terminado a crear la estructura. Haga Click en opción:
Aceptar e introduzca los datos correspondientes ( dos registros como mínimo). Ahora, usando los pasos anteriores anteriores se le pide a Ud. Crear la tabla:
FACTURAS.DBF Al final de un trabajo arduo, Ud. deberá llegar a la siguiente presentación:
En
35
estos momentos tenemos Articulo y Facturas como se observa en el gráfico anterior, pero al inicio habíamos creado CLIENTES.DBF, como una tabla libre, el cual ahora desearíamos desearíamos que forme parte de nuestra Base de Datos de nombre Ventas Ventas,, para tal fin haremos los siguientes siguientes pasos:
Conversión de Tabla Libre en Dependiente Click en: en: •
Botón Derecho del Mouse, sobre el diseñador de Base de Datos
•
Agregar tabla
•
Doble Click en Click en Clientes
(Opción del Menú Contextual)
Luego tendremos, como muestra la sgte. figura:
Relaciones: Con la finalidad de manipular simultáneamente, datos de las tres tablas, debemos relacionar estas. Para ello, no debemos ol vidar, las dos condiciones principales para la existencia de Relaciones:
1.
Se debe debe gara garant ntiz izar ar exis existe tenc ncia ia de Campos Claves ó Llaves, entre las tablas participantes (datos iguales ó coincidentes, del mismo tipo y aveces del mismo tamaño. Pero no necesariamente con nombres iguales).
2.
Se debe debe inde indexar xar las las tabl tablas as por por su su campo campo clav clave: e: -
Tablas hijo de de tipo principal ó Candidato, y
-
Tablas padre de tipo Normal (Aquí, sobre todos sus campos claves)
El autor duda de su comprensión. Por tanto, antes de continuar le interrumpe para hacerle la siguiente consulta:
Entre Clientes y Facturas. ¿A qué campos de ellas, los podría considerar como campos Claves?
36
....................... y .........................., porqué? .............................................................................................
¿Y
En el cuadro inferior, escriba los campos claves de las tablas, asimismo identifique tablas hijo y Padre
Nombre Tabla
Nombre del Campo Clave
tipo de tabla (Padre ó Hijo)
Clientes.dbf
........................................
..................................
Articulo.dbf
.........................................
..................................
Facturas.dbf
.........................................
..................................
INDEXACION: Dada las reglas anteriores y cumpliendo exactamente, iniciamos a indexar las tablas. Como un ejemplo, de qué manera se realizan, se hace aquí una indexación, para la tabla CLIENTES.
Nota: Para el resto de las tablas, el usuario, deberá seguir la misma secuencia. Es aquí donde el usuario podrá usar su razonamiento y su habilidad de comprensión. Caso contrario, puede volver a leer las líneas anteriores.
Indexación de Clientes.dbf 1.Ubicar el puntero del Mouse sobre la tabla Clientes y presionar el botón Derecho del Mouse 2.
En el menú Contextual, hacer Click ick sobre:
Modificar 3. Hacer Click en la ficha : índices (ver fig. inferior)
37
3.Digitar 3.Digitar el nombre de la etiqueta (Tag) (Tag) para nuestro archivo archivo índice (ver graf.). graf.). Asignamos por ejemplo el mismo nombre del campo (aunque no siempre debe ser así). Digitar:
Cliecod 4.Seleccionamos el tipo de índice, sabemos que Clientes es tabla hijo, por tanto que sea:
Principal 5.El ficha de Expresión , podemos Digitar, la expresión ó el nombre del campo, por el cal deseamos, que nuestra sea indexada. Pero mucho mejor Es hacer Click en:
...
(Punto Punto)
que se encuentra al costado de expresión.
6.Llega 6.Llegamos mos a la ventan ventanaa que se muestr muestraa en la siguie siguiente nte página. página. Aquí Aquí usando usando:: Funciones (matemáticas, lógicas, fecha y Cadena), Variables y Campos, podemos preparar una expres expresión ión índice índice,, por muy complic complicada adass que este este fuera. fuera. Nuestr Nuestro o caso caso Es sencil sencillo. lo. Hacemos Doble Click sobre Click sobre el campo:
ClieCod
de la lista de campos.
7.
Aceptar
Hacemos Click en:
de esta ventana de expresiones. 8.Habremos vuelto a la ventana anterior, en ella también hacemos Click en:
Aceptar encuentra encuentra en esta
que se ventana. ventana.
38
Venta de expresión
Finalmente Visual FoxPro, nos hace la siguiente consulta:
Podemos responder Afirmativamente.
De esta manera, habremos indexado, la tabla Clientes. Observe su pantalla. La tabla Clientes tiene un índice que se muestra identificado por una llavecita, por ser de tipo principal.
Ahora, Ud. tiene la dura tarea de ind indexar, las las otras tab tablas (Artic ticulo y Facturas).
Al fina finall del del camino, como alumbrase una luz. Deberá most mostra rarr una una figu figura ra,, como se muestra en la parte derecha.
Así, hemos mos termin terminado ado el tema tema de índexa índexacio ciones nes.. Ahora Ahora nos toca hacer la
39
Relación.
(2)Ejecución de la Relación Haga Click en:
•
Indice ClieCod de Clientes y arrastre hacia el índice ClieCod de Facturas y libere el Mouse. (esto es arrastrar la etiqueta de índice hijo hacia el padre). padre).
•
Haga similar con el índice ArtCod de Articulo y arrastre
Luego debe una presentación similar a la siguiente gráfica
Bueno, hasta aquí parece que todo va bien.
Después de tanto trabajar, no quisiéramos que el resultado sea un desastre. Por ello, primero vamos a verificar los datos de los campos claves. Para ello haga doble Click en cada una de las tablas tablas y con la ayuda del Mouse, puede mostrar igual que en pantalla inferior, las tablas tablas abiertas. Así asegurése que haya datos datos comunes ó iguales en los los campos claves, tanto en la tabla padre e hijos (ver figura)
40
Finalmente para poder mostrar ó examinar la información de la Base de Datos (anteriormente preparados) vamos ha crear una Vista rápida. Es de notar que no podemos usar con toda elegancia el comando Browse, como lo hacíamos ante una relación temporal.
CREACION DE VISTA:
Las vistas como un archivo virtual, se crean ejecutando la siguiente secuencia:
Desde menú principal.
Haga Click en:
Archivo
Menú Principal
Nuevo
Submenú del menú Archivo
( ) Vista
Tipo de archivo a crear
Nuevo Archivo
Vista personalizada.
Ahora aparece una ventana, mostrando las tablas origen para la vista a preparar, haga: •
Doble Click en Click en : •
Facturas Tabla padre
•
Clientes Luego las tablas hijo.
41
•
Articulo Después hacemos Click en :
•
Cerrar En la ficha Campos, seleccione, los siguientes campos, haciendo:
•
Doble Click en: Click en: •
Facturas.Numfac •
•
•
•
•
•
Articulo.ArtPre
Facturas.ArtCod •
Articulo.ArtStock
•
Clientes.ClieNom
Facturas.Cliecod Facturas.Cant •
Clientes.ClieApe
•
Clientes.ClieDir
Facturas.Preven Articulo.Nom
Debe mostrarse un gráfico similar. Preparada la vista y seleccionada los campos, lo que esperamos es ejecutar, para ver el resultado.
Existen varias maneras, pero la más fácil, es talvez, hacer click en el símbolo ( Admiración)
)
(Signo de
Que se encuentra en la Barra de herramientas. Otra forma es presionar Botón Derecho y ejecutar Consulta
42
Mas o menos así debe ser el resultado, si no observa ningún dato en esta ventana, debe haber fallado: bien en los campos claves , en la preparación de índices ó talvez en el arrastre de etiquetas. Puede volver a revisar y luego ejecutar la vista.
Fin del laboratorio
43
Laboratorio Nº 2 Objetivo: Creación de Vistas y Consultas y comparación entre ellas 1.- Cargando Visual FoxPro FoxPro desde el Sistema Sistema Oper. Windows 98 Haga Click en Menú: • Inicio • •
Programas Microsoft Visual FoxPro • Microsoft Visual FoxPro 5.0
2.- Abrir Una Base de Datos Ventas Hacer Click en:
Archivo Abrir •
En Buscar en: seleccione la carpeta:
Practica.
•
En: Archivos de tipo: seleccione:
Base Base de Dato Datoss (*.dbc)
Luego haga doble Click en:
Ventas .
La siguiente pantalla, muestra la base de datos VENTAS, abierta.
44
Similar como hicimos en el primer laboratorio, vamos a crear vistas.
CREACION DE VISTA:
Haga Click en:
Archivo Nuevo
( ) Vista (ver gráfico ) Nuevo Archivo
En la siguiente pantalla se observa, a seleccionar la clase clase del fuente para vista a crearse crearse (tablas ó de vistas anteriores)
45
Asumiendo que se van ha crear vistas desde tablas, haga doble Click en: Facturas,
luego en:
Clientes
y
Articulo.
•
Finalmente haga Click en en
Cerrar
En la siguiente página, tenemos el generador de vistas. Ya conocida en el laboratorio anterior
Nota: Las tablas fuente (facturas, Clientes y Articulo), no deben repetirse, si eso no fuera el caso, borrar la
46
tabla que se está cargado mas de una vez .
Debajo de las tablas, se podrá observar las fichas:
Campos, Combinación, Filtro, ordenar
por, Agrupar por, Criterio de actualización y Varios. •
En la Ficha Campos: Seleccionemos los siguientes siguientes campos: campos:
•
Facturas.Numfac •
•
•
•
•
•
Articulo.ArtPre
Facturas.ArtCod •
Articulo.ArtStock
•
Clientes.ClieNom
Facturas.Cliecod Facturas.Cant •
Clientes.ClieApe
•
Clientes.ClieDir
Facturas.Preven Articulo.Nom
Haciendo doble CLICK en la misma. misma.
•
Para probar que todo va bien, haga Click en Botón Botón
EJECUTAR ( ! ) de la barra de herramientas.
ó presione Botón Derecho y Ejecutar Consulta
Nota: Si no observa ningún dato, revisar datos del campo clave clave (en la BD) ó la relación y los índices índices
Si cree conveniente, antes de iniciar a usar las fichas, puede pedir al Asistente del Lab., una breve explicación de la función de cada una de las fichas. Caso que Ud. Es un autodidacta, puede recurrir al material bibliográfico. Ejm. Rubén Iglesias Esta podría ser una breve explicación:
Ficha: Combinación.- Muestra el tipo de enlace entre tablas: Interna, Izquierda, Derecha y Full Filtro
.- Especifica la condición que debe cumplir los registros a visualizar.
Ordenar por .- Provee opción de clasificar en en forma ascendente ascendente ó descendente. descendente. Agrupar por por .- Facilita Facilita crear crear grupos de datos datos Criterios de Actualización.Actualización.- ofrece las maneras maneras como se debe actualizar nuestros datos Varios
.- Si serán afectados todos los registros y los duplicados.
siguiente nte página página,, usarem usaremos os la ficha ficha filtro filtro,, para para realiz realizar ar ó resolv resolver er las cierta ciertass E n la siguie interrogantes.
47
Tales como: deseamos saber qué artículos han sido facturadas un día viernes a las 10 de la mañana, cuantas ventas se transaron con precio inferior al costo de compra, etc.
Extracción de Datos:
Hacemos Click en ficha
•
•En
FILTRO
nombre de campo seleccionamos un campo ó preparamos una expresión.
•
En Criterios asignamos el operador.
•
En ejemplo completamos la condición
Ejm:
Facturas.Cant
=
50
(ver gráfico)
Esta condición significa, significa, que deseamos observar o mostrar aquellos Artículos Artículos facturados, cuya cantidad sea igual a 50 unidades. Para ver ejecutamos haciendo:
•
Click en botón
EJECUTAR, y la siguiente sería un ejemplo: ejemplo:
Ahora, estimado usuario, después de una amena explicación, creo que está en la posibilidad de resolver, las siguientes interrogantes, sobre nuestra base de datos.
48
Mostrar: Artículos facturados con las siguientes condiciones:
1.
Cuyo Cuyo Nombr Nombree del del artícu artículo lo empi empiece ece con la la letra letra “A” “A”
2.
Cuya fecha de venta sea un Viernes
3.Cuya cantidad sea mayor que 30 y stock menor ó igual a 20
4.
Tenga hora de venta a las 10 de la mañana
5.Fecha de venta Viernes 13 a las 08 de la mañana, ordenado por fecha.
6.Fecha de venta 28 de Julio a las las 10:30 AM (Es un buen peruano, que trabajó este día)
7.Precio de Compra sea mayor que precio de venta (Remate)
2.- Retire todas las condiciones, y en en la ficha agrupar por, elija Nombre del Cliente para agrupar, y Ejecute. Luego diga sus observaciones y conclusiones.
Terminada nuestra labor, hacemos click en botón cerrar de la ventana vista.
Ante consulta anterior, responda afirmativamente ( Sí) y luego asigne un nombre, para vista (ejm. Vista1). Finalmente haga Click en Aceptar.
CREACION DE CONSULTAS Las consultas, a diferencia de vistas, son archivos reales.
Para crear consultas hacemos:
49
Click en: • • •
•
•
•
Archivo Nuevo (•) Consulta Nuevo Archivo
Similar que en Vistas, hacemos doble en: •
Facturas
•
Clientes y
•
Articulo
Seleccione los siguientes campos: •
Facturas.Numfac Clientes.ClieApe
•
Facturas.FecVen Clientes.ClieDir
•
Facturas.ArtCod Articulo.ArtNom
•
Facturas.Cliecod Articulo.ArtPre
•
Facturas.Cant Aritculo.ArtStock
•
Facturas.PreVen
•
Clientes.ClieNom
•
Haga Click en
Ejecutar de la Barra de herramientas, observe y cierre el previo.
•
Haga Click en
Consulta del Menú principal
•
Luego en opción:
Ver SQL
SELECT Facturas.numfac, Facturas.fecven, Facturas.cant, Facturas.preven,; Clientes.clienom, Clientes.clieape, Clientes.cliedir, Clientes.clieruc,; Articulo.artnom, Articulo.artpre, Articulo.artstock; FROM ventas!clientes INNER INNER JOIN ventas!facturas;
50
INNER JOIN ventas!articulo ; ON Articulo.artcod = Facturas.artcod ; ON Clientes.cliecod = Facturas.cliecod Facturas.cliecod Consulta del menú principal
•
Haga Click en
•
Click en Opción:
Destino de Consulta
Observamos que por defecto está seleccionado destino Examinar Examinar para para la consulta.
1.
Seleccionamos Cursor
•
Asignamos un nombre (ejm): UNI
•
Click en Aceptar , luego
•
Click en Ejecutar
¿Llegó a observar algo?, Continue
2.
Haga Haga Clic Click k en en Menú Menú:: Con Consu sulta lta Destino de la Consulta, y Seleccione Tabla, en esta oportunidad.
•
Asigne nombre (ejm): CEPS
•
Click en Aceptar
•
Click en Ejecutar
51
¿Esta vez sí observó, algo?. Talvez tu respuesta es NADA.
En verdad tiene razón, razón, la respuesta respuesta es que, en la primera vez ha creado una tabla temporal temporal (Cursor) y ha enviado a la memoria del computador. Y la segunda ha creado una tabla, que por su puesto debe haberse guardado en el disco duro, en la carpeta por defecto de su computador.
Como comprobar lo que se dice? Paso 1.- Haga Click el menú Ventana (Menú principal), principal), luego en Sesión de Datos. Vea si si existe tablas UNI y CEPS cargadas en diferentes áreas. áreas. (justificada su existencia)
Paso 2.- Presione la combinación de teclas: Ctrl+F2 Digite: DIR y presione Enter Tenga Presionado simultáneamente las teclas: Ctrl+Shift+Alt (Debe estar observando la existencia del CEPS.DBF)
Interrogante: No se observa UNI que sucede? ó ¿que es realmente UNI?
3.
4.
Consulta, Destino Destino de la Consulta, Pantalla (Observando datos en toda la pantalla) •
Aceptar
•
Ejecutar
•
Ctrl+Shift+Alt
Consulta, Destino de la Consulta, Informe (Generando Informes vía Consulta)
•Haga
Click en Barra de Asistente ( a la derecha de:
Abrir informe.. ver gráfico
anterior)
52
•Se observa una pantalla con tres opciones, ubique el cursor sobre: Asistente para Informes, y haga Click en: Aceptar. Tendremos la siguiente figura.
Articulo, haciendo Click en doble Flecha, luego click en: Siguiente
•
Seleccione todos los campos de:
•
Seleccione el estilo de informe que desearía preparar preparar y luego haga Click en: Siguiente
•
Puede cambiar si gusta: Número de Columnas, distribución de campos y Orientación del papel, luego haga Click en: Siguiente
•
Puede Ordenar los artículos, ejm: por nombres, para ello haga doble Click en ArtNom, Ascendente y Click en: Siguiente
•
Click en: Presentación Preliminar
Eh aquí algo de presentación preliminar de un reporte
53
5.
Por ahora ahora hasta hasta aquí el el Laborator Laboratorio, io, si el tiempo tiempo ya no lo permite. permite.
6.
Archivo, Quit
Fin del Laboratorio 2
Gracias...
Laboratorio No 03 Objetivo: Crear un informe personalizado, simples y con quiebres ó grupos.
54
Abrir Base de Datos ventas 0.
Click en:
Archivo, Abrir, Tipo de archivo: Base de Datos, luego doble Click en Ventas.
Creación de Vistas Deseamos preparar, tres informes, para lo cual vamos ha crear tres vistas:
1.
Crear Crear una una vista vista con los los sigu siguien ientes tes campos campos:: •
Facturas.numfac
•
Facturas.fecven
•
Facturas.cant
•
Facturas.preven
•
Clientes.clienom
•
Clientes.clieape
•
Clientes.cliedir
•
Clientes.clieruc
•
Articulo.artnom
•
Articulo.artpre
•
Articulo.artstock;
2.
Ejecutar Ejecutar y guarda guardarr presionand presionando o Ctrl+W, Ctrl+W, asigne asigne nombre nombre Vista0 Vista01, 1, luego luego haga Click en Aceptar. Aceptar.
3.
Cree Cree otra vista, vista, esta esta vez agregar agregar el campo campo Factura Facturas.C s.Clie lieCod Cod a la lista anter anterior ior.. Ingres Ingresee a la ficha: ficha: Ordenar por, por, haga doble Click en Cliecod, Ejecutar y Guardar (presionando Ctrl+W ) con el nombre Vista02
4.
Crea Crearr otra otra Vist Vistaa usan usando do los los mism mismos os camp campos os anteri anterior ores es,, pero pero esta esta vez vez orde ordena narr por por los los camp campos os:: FecVen, ClieCod y NumFac (para ello haga primero Doble Click en: FecVen, luego en ClieCod y finalmente enNumFac) y guarde como Vista03.
55
Aquí se observan las tres vistas, que nos servirán para preparar nuestros informes.
CREACION DE INFORMES Para crear nuestro informes, iniciamos haciendo:
Click en:
1.
Archivo
2.
Nuevo
3.
( ) Informe
4.
Nuevo Archivo.
En la siguiente pantalla se muestra el diseñador de informes, las bandas y el menú contextual
Diseñador de Informes compuesta de tres Bandas (ver gráfico).
Necesita Necesitamos mos indicar el origen origen de datos para nuestro informe, para lo cual vamos damos la secuencia a seguir:
1.
En el área área del del diseñ diseñado ador, r, presio presione ne Botón Botón Dere Derecho cho
2.
En el el menú menú conte contextu xtual, al, Elij Elija: a: Ento Entorno rno de de datos datos
3.
Dentro Dentro del del Entorno Entorno de dato datos, s, Presio Presione ne Botón Botón Derec Derecho ho
4.
En el el menú menú cont context extual ual,, Elija Elija:: Agreg Agregar ar
56
5.
Sele Selecc ccio ione ne,, opci opción ón:: ( •)Vistas (ver gráfico)
6.
Haga Haga Dobl Doblee Cli Click ck en Vist Vista0 a01 1
7.
Lueg Luego, o, Cli Click ck en: en: Cer Cerra rar r
Usando el Mouse acomode el diseñador de informes y el entorno de datos, de tal como que quede, tal como se muestra en la figura, de la siguiente página.
1.
Si no no tiene tiene la barra barra de cont control roles es de de infor informe me
•
Haga Click en: Menú Ver
•
... Barra de Herramientas Herramientas...
•
Marcar como en el gráfico de parte derecha.
•
Luego, Click en: Aceptar
57
Nuevamente acomode las figuras, por ejm. puede ser como observa en la parte inferior.
Luego. Vamos a iniciar a preparar el informe. Para lo cual, debemos tener presente el resultado que deseamos deseamos obtener. obtener. En la siguiente página página se muestra un previo de lo que queremos queremos conseguir conseguir diseñando un informe, con nuestro diseñador y que imprima el modelo propuesto.
Para poder obtener este resultado. Usando los botones del control de informes, prepare Ud. un diseñador de informes del siguiente modelo.
1.
Si desea desea Digitar Digitar un texto en en el diseñador diseñador de informe informes, s, haga Click Click sobre sobre el botón botón que tiene tiene la letra del control de Informes y en seguida haga Click en el lugar donde desea Digitar.
2.
Si desea desea agreg agregar, ar, una funci función ón ó variabl variable, e, haga haga click click en botón botón sobre el diseñador.
ab
A
del control de informes. Luego
58
3.
Si desea desea agregar agregar un campo, campo, lo puede arras arrastra trarr desde desde la vista, vista, que se encuen encuentra tra a la derech derecha, a, del diseñador.
Nota: Nombre de la Empresa, Descripción, Descripción, Precio, Nota .. y Pag. Son etiquetas, mientras mientras Date() es función, _Pageno es una variable. Finalmente ArtNom y ArtPre son campos que se encuentran en el Entorno de Datos.
Para ver un Previo:
•
Haga Click en el Botón Derecho, luego seleccione: Preliminar (observará un un previo)
•
Lo anterior también lo puede realizar haciendo Click en botón de Hoja y Lupa de la barra de herramientas. Esta vez el botón del signo de Admiración Es para Imprimir.
•
Puede ir observando su avance, cada vez que crea necesario. Si desea mejorar la presentación haga click en el objeto, luego Click en formato y fuente. Cambie y mejore su presentación presentación
•
Para prevenir pérdida de archivos, puede ir guardando el Informe con el Nombre: Informe1 Para ello haga click en Menú:: Archivo Guardar.
Informe No 2.- debemos preparar otro informe, similar al que se muestra en la parte inferior.
Observe Observe que está agrupado agrupado por
Clientes, Clientes, ordenado ordenado por descripción descripción y con un sub-total sub-total por
59
clientes.
Para Para prepar preparar ar nuestr nuestro o segund segundo o informe informe,, podemo podemoss re-uti re-utiliz lizar ar diseño diseño del inform informee anteri anterior. or. Guardando la primera y luego guardando con nuevo nombre. Para ello utilice Archivo Guardar como Asigne nombre informe2
luego puede modificar sobre ella.
Pasos: •
Modificar Lista Lista de Precios por Informe Informe de ventas
Creación de Grupo ó quiebre: •
Click en Menú: •
Informe
•
Agrupar datos
ventan ventanaa de agrup área en blan blanco co de: expresiones agrupar ar datos, en el área agrupación, podemos Digitar la expresión del quiebre, pero hacemos Click en: Sobre •Sobre
...
de
(Punto punto )
•Luego
•
haga, Doble haga, Doble click sobre: click sobre:
Vista2.ClieCod (ver gráfico)
Finalmente Click en : Aceptar
60
El diseñador que logre, nuestro propósito será similar al gráfico siguiente:
Observe que el monto, subtotal y total son expresiones como (Vista2.Cant*Vista2.PreVen Vista2.Cant*Vista2.PreVen)) (ver gráfico)
Para que Subtotal muestre la suma, hacemos:
(Cantidad) * (Precio de Venta)
y total,
Click Derecho sobre sobre el objeto objeto que representa representa la expresión expresión (Cant*Preve (Cant*Preven), n), luego click, en la opción: Propiedades.
Luego en la ventana que se presente, mostrará un grup grupo o de opci opcion ones es,, sele selecc ccio iona namo moss la opci opción ón Cálculos,
haciendo Click sobre ella. Fina Finalm lmen ente te en el gráf gráfic icoo de la parte parte dere derech cha, a, seleccionamos opción SUMA Para terminar, hacemos click en:
Aceptar.
En esta pantalla y en la otra
De esta manera, habremos creado el segundo reporte.
61
Reporte con mas un Grupo El siguiente gráfico, muestra un Modelo, de un reporte con más de un grupo. Esta agrupado por Mes, clientes clientes y Número Número de factura. factura. Tiene un sub-total sub-total de cada factura factura , mes y por página. Asimismo Asimismo el número de factura se imprime a la altura de los otros datos y no se repite.
El modelo de Informe a prepararse .
El diseñador de Informes, que genera este tipo de reportes, se encuentra en la siguiente página.
1.
Haga Haga Clic Click k en en el el Bot Botón ón Ver Clases del Control de Formularios ( Esta se encuentra al lado derecho de la Flecha)
2.
Elija Agregar
62
Modelo de diseñador
Suerte en preparar el informe propuesto:
Fin del laboratorio. laboratori o.
63
Laboratorio No 4 Sentar las bases de la Progra Programac mación ión Orient Orientada ada a Objeto Objetos, s, crear crear formul formulari arios os y Objetivo: Sentar codificar.
Formulario: Una clase contenedora. Una colección de una o más páginas que se comporta como Formulario: una ventana o un cuadro de diálogo estándar. Un formulario contiene controles para mostrar y modificar datos. Los formularios pueden estar contenidos dentro de un conjunto de formularios.
Creando un Formulario:
Click en:
Archivo Nuevo ( ) Formulario Nuevo archivo
64
Diseñador de formulario
Nota:: para hacer diseño en formulario, también utilizaremos los controles, tal como se observan en la Nota pantalla anterior. Similar como lo hacía en Informes, hacer Click en control De esta manera estará creando un Label (Etiqueta), para Text lo hará con
A, luego hacer Click en el formulario.
ab, etc.
En esta oportunidad vamos a diseñar, un formulario que nos pida Digitar un texto y que esta al ser aceptado, se refleje como un nuevo mensaje en el título del formulario.
Pasos a seguir:
1.
Haga Haga Clic Click k en en con contr trol ol A
2.
Lleve Lleve el el Mouse Mouse sobre sobre el form formula ulario rio y haga haga clic click k en ella ella
3.
Haga Haga Cli Click ckee en Cont Contro roll ab
4.
Lleve el Mouse Mouse sobre alguna alguna ubicació ubicación n del formular formulario, io, donde donde crea crea sea útil útil y haga haga Click Click en ella. ella.
5.
Supong Supongo o que ya entendi entendió, ó, como funcion funcionaa esto. Complet Completee lo resto, resto, hasta hasta que su pantal pantalla la present presentee similar al siguiente gráfico.
65
El usuario a de observar, que en el formulario existen cuatro objetos
Cada objeto del formulario anterior, lleva un nombre por defecto. Pero nosotros como buenos programadores, las podemos cambiar a nuestra voluntad. Y eso los vamos a hacer.
6.
Presione Presione Botón Botón Derec Derecho ho del del Mouse, Mouse, sobre sobre Label1, Label1, y luego luego haga haga Click Click en Propiedades Propiedades..
7.
En la lista lista de propiedades propiedades,, ubique propiedad propiedad NAME NAME y haga click en ella. ella.
8.
Al costado costado del del símbolo símbolo de funció función n fx, aparece aparece label1 label1 en azul, azul, Digite Digite obre obre ella lblmensag lblmensage. e.
9.
Haga click click en Text1, Text1, esta vez vez también también vuelve a aparece aparecer, r, el nombre inicia inicial, l, cambie por por Txtmensaje Txtmensaje..
10. Asigne Asigne Ud. los nombres nombres a los objetos objetos que que faltan: Comand1 Comand1 como como CmdAceptar CmdAceptar y Command2 Command2 por CmdSalir Ahora vamos a cambiar la etiqueta etiqueta (titulo) de los objetos (recuerde text no lo tiene), los pasos son los mismos, esta vez la propiedad que satisface nuestra necesidad es: CAPTION
66
11.
Aquí se dan un listado de las etiquetas para los Objetos (reconocidos por sus nuevos nombres).
Etiqueta
Objeto Digite un Texto LblMensaje
Aceptar CmdAceptar
Salir CmdSalir
Hasta aquí Ud. ha aprendido, cambiar cambiar nombre y título del Objeto. 12. Aquí se muestra un ejemplo a donde debemos debemos llegar, llegar, cuan cuando do nuestro formula formulario rio ya esté completame completamente nte preparado y ejecutándose:
El título actual del formulario se observa como: “ Universidad Nacional de Ingeniería”, pero ya
67
hemos digitado en Txtmensaje, el mensaje: “Centro de Extensión y Proyección Social”. VFP, para cambiar el título, está solo a la espera que el usuario haga Click en Aceptar ó presione la tecla: Enter. Pero si el usuario desea abandonar el sistema, puede presionar ESC. ó hacer click en Salir. Asimismo al acercar el Mouse sobre cualquiera de los botones comando, esta debe hacer mostrar un mensaje de ayuda, explicando lo que debe suceder si hace Click sobre ella. Para que VFP, haga todo lo que hemos echo mención en la parte anterior, haga los siguientes pasos: 13. Seleccione el Objeto Objeto CmdAceptar (Aceptar) y cambie cambie las propiedades: propiedades: DEFAULT por .T. (Verdadero) Aquí Actualiza el Título del Formulario Formulario enTOOL enTOOL TIP TEXT, TEXT, Digite el texto: texto: Click Aquí
14. Simi Similar lar en en el Objeto Objeto CmdSalir CmdSalir (Salir): (Salir): CANCEL por .T. (Verdadero) en
TOOL TIP TEXT, Digite el texto: Termina la ejecución del sistema.
15. Haga Click en título del Formulario, Formulario, luego en en la lista de propiedades busque: SHOW TIPS . Cambie por .T. por .T. – Verdadero ( Show Tips pertenece al formulario, y nó a otro objeto cualquiera)
Tiempo de Ejecución: 16.
Haga doble Click en Aceptar, luego Digite tal como observa en la figura:
Presione Ctrl+W, para Salir y guardar
17. Simil Similar ar que en la parte anterior anterior haga sobre sobre el objeto Salir, Salir, esta vez Digite: Digite: Release Thisform 18. Ejecut Ejecutar ar el Formu Formular lario: io: Haga Click en botón Ejecutar ( ! ),
68
19.
A la consulta anterior, responda Sí Sí yy guarde.
20. Debe ejecutarse ejecutarse sin problemas, caso caso contrario consulte con su asistente.
PARTE 2 Vamo Vamoss a prep prepar arar ar un form formul ular ario io apli aplica cativ tivo, o, a la Base Base de Dato Datos. s. Por ejem ejemplo plo:: hace hacer r mantenimiento de la tabla Articulo.dbf.
Pasos a seguir: 3.
Abri Ab rirr la la Bas Basee de de Dat Datos os
Archivo Abrir Base de Datos: Ventas
4.
Crea Crearr un un Nue Nuevo vo Form Formul ular ario io
Archivo Nuevo ( ) Formulario Nuevo Archivo 5.
Presionar: Botón Derecho, sobre el área del Formulario
6.
Click en: Entorno de datos (del Menú contextual)
7.
Doble Cl Click en en Articulo.dbf
8.
Usando Usando Mouse Mouse,, puede puede presen presentar tar simila similarr ala figur figura. a.
69
9.
Podemo Podemoss crear en nuestro nuestro formular formulario, io, los objetos objetos:: Etiquetas Etiquetas,, Texts y Comman Commands, ds, luego luego con la propiedad: Control Source direccionar a los campos de la tabla. Pero esta vez, vamos a hacer uno más simple:
10. Haga Click sobre la palabra palabra Campos de Articulo y arrastre arrastre hacia el el formulario y suelte. suelte.
Así debe de observarse, los los campos
11. Haga Click Click en cada objeto y re-ubicar los objetos, asimismo cambie cambie el título de las etiquetas. etiquetas. ( Observe el siguiente gráfico)
70
(Aquí debe llegar, usando propiedad: Caption)
12. Haga Haga Click Click en en el Botó Botón n Ver Clases del Control de Formularios ( Esta se encuentra al lado derecho de la Flecha) 13. Elija ija Agregar 14. buscar buscar la Carpet Carpetaa
WIZARDS, que se encuentra dentro de la carpeta del Visual FoxPro.
15. Haga Haga Doble Doble Click Click en, en, objeto objeto Wizstyle.
16. En el siguiente siguiente gráfico, gráfico, se observa una gama de botones botones de clases. clases. Ubique aquel aquel botón de nombre PICBTNS (Para ello utilizará los Tool Tip Text de cada botón. En el siguiente gráfico, este botón se encuentra en la quinta fila y cuarta columna) columna)
71
17. Haga Click Click sobre sobre el formular formulario io debajo debajo de Stock Stock 18. Vuelva Vuelva a acomodar acomodar similar similar al siguien siguiente te gráfico gráfico .
19. Guardar Guardar (asigne (asigne el nombre nombre que desee) desee) 20. 20. Ejec Ejecut utar ar
21. Suerte Pruebe.
y
72
INSTRUCCIONES DE PROGRAMACIÓN. PROGRAMACIÓN. El Foxpro en modo programación, es la forma como se puede almacenar un conjunto de órdenes en un archivo llamado programa, el cual posteriormente será ejecutado. Orden MODIFY COMMAND
Propósito : Permite crear y editar un programa en Foxpro (con extensión .PRG), o también cualquier archivo de texto. Sintaxis : MODIFY COMMAND [D:][CAMINO]NOMBRE[.EXT] Si la unidad y el camino no son especificados, se asumirá la unidad y camino por defecto def ecto.cu .cuand ando o se usa Mod Modify ify Com Comman mand, d, Fox Foxpro pro bus busca ca el arc archiv hivo o ind indicad icado; o; si el archivo archiv o no exist existee entonces se crea uno, de lo contrario éste será editado. Cada vez que un archivo es grabado la versión previa es grabado en un archivo de seguridad con extensión .BAK. Al crear un programa, para grabarlo presionaremos las teclas [Ctrl]+ [W]. Si desea salir sin grabar presionaremos la tecla [Esc]. Orden DO
Propósito : Permite ejecutar un programa anteriormente creado. Sintaxis : DO [D:][CAMINO]NOMBRE[.EXT] Orden TYPE
Propósito : Permite visualizar el contenido de un archivo programa. Sintaxis: TYPE[D:][CAMINO]NOMBRE[.EXT] ESTRUCTURA DE UN PROGRAMA
Preámbulo Contiene informacion tal como: el nombre del programa, que hace, quién lo escribió, la fecha y una breve historia sobre su edición.
Ejemplo: *--------------------------------------------------------------------------------------* *PROGRAMA : STOCK.PRG *DESCRIPCION: CONTROL DE STOCK *AUTOR : LUIS LOZADA PORTAL *FECHA : 05 DE NOVIEMBRE DE 1998 *--------------------------------------------------------------------------------------*
Area de Seteos Define los comandos SET que el programa necesita para trabajar eficientemente. En esta parte se puede especificar la relaciones entre las bases de datos, activar los archivos indexados así como inicialización de las variables de memoria, etc.
Ejemplo: SET STATUS off SET HEADING off USE personal ORDER codi NUM=0
73
Cuerpo de Programa Contiene los comandos que hacen trabajar al programa.
Ejemplo: LOCATE FOR apel="VARGAS" DISPLAY nomb,apel,sbas
Sección de Cierre Aquí se cierran las bases de datos y se restablecen los valores de los comandos SET.
Ejemplo: USE SET STATUS on SET HEADING on RETURN
ORDENES DE ENTORNO Para modificar el entorno de Foxpro y ajustarlo a nuestras necesidades, debemos usar las órdenes Sets denominadas también Seteos.La opción por defecto está en mayúscula.
Sintaxis
Propósito
SET STATUS on/OFF
Activa la línea de estado.
SET HEADING on/off
Muestra el nombre de los campos cuando se usa las órdenes LIST o DISPLAY.
SET TALK on/off
Muestra los mensajes interactivos que retornan órdenes como Replace, Index, Copy, Calculate, Locate, etc.
SET BELL on/off
Emite un sonido cuando el cursor alcanza el final de un campo.
SET SCOREBOARD on/off
Muestra el estado de las teclas CapsLock, Ins y Numlock en la fila cero cuando se desactiva la línea de estado.
VARIBLES DE MEMORIA
Definición : Son espacios de memoria que permiten almacenar datos temporalmente fuera de la estructura de la Base de Datos. Estos espacios de memoria poseen un nombre que los identifica y quedan definidos según el dato que almacenan.
CREACION DE VARIABLES Ejemplos: CLASE="FOXPRO" NUM=0 FEC={10/19/78} VAR=.T.
Variable cuyo nombre es CLASE de tipo carácter y cuyo contenido es "FOXPRO". Variable cuyo nombre es NUM de tipo numérica y cuyo contenido es 0. Variable cuyo nombre es FEC de tipo fecha y almacena la fecha 19 de Octubre de 1978. Variable cuyo nombre es VAR de tipo lógico con un estado de verdad .T..
Orden DISPLAY MEMORY
Propósito : Lista las variables de memoria. Sintaxis : DISPLAY MEMORY [TO PRINTER] LIST MEMORY[TO PRINTER]
74
Se debe evitar que el nombre de una variable sea igual al nombre de un campo o de un comando resrevado por FOXPRO. Orden STORE
Propósito : Permite asignar un dato a un conjunto de variables. Sintaxis: STORE [DATO] TO [LISTA DE VARIABLES]
Ejemplo: Si desea inicializar con 0 a las variables N1, N2 y N3, procederíamos de la siguiente manera:
N1=0 N2=0 N3=0 Mejor hubiera sido inicializar simultáneamente el 0 a éstas variables, así:
STORE 0 TO N1, N2, N3 Orden WAIT
Propósito : Permite detener la ejecución de un programa y espera el ingreso de información proveniente del teclado.
Sintaxis : WAIT [expresión] [WINDOW][TIMEOUT(expN)] Donde: expresión : Es un mensaje ilustrativo para el usuario. Si se omite, FOXPRO enviará el mensaje por defecto, que es: "Press any key to continue..." WINDOW : Se utiliza para enviar el mensaje dentro de una ventana de mensajes, en la esquina superior derecha.
TIMEOUT expn : Es el tiempo en segundos que estará la orden WAIT sin que se reciba información. Ejemplos: 1.Para detener la ejecución de un programa, ingresemos la orden WAIT en cualquier parte del programa, así:
WAIT el programa cuando ejecute la orden WAIT enviará el mensaje por defecto: Press any key to continue...
2.Si sedesa especificar un mensaje diferente con la orden WAIT, como por ejemplo: WAIT "Presione ENTER para seguir..." el programa mostrará exactamente dicho mensaje al momento de ejecutar dicha orden, así: Presione ENTER para seguir... Orden @...SAY...GET
Propósito : Permite editar una variable o un campo en una posición de la pantalla, permitiendo su modificación. Para activar los GETS definidos previamente se debe hacer uso del comando READ.
Sintaxis :
@F,C[SAY "mensaje"][GET(varia "mensaje"][GET(variable|campo)][PICTURE(forma ble|campo)][PICTURE(formato)] to)]
Donde: F : Es el número de fila en le rango 0 - 24.
75
C : Es el número de columna en le rango 0 - 79. mensaje: Es un mensaje que ayuda al usuario a ingresar el dato desde el teclado. variable|campo : Variable o campo a editar. Picture: Permite establecer un formato de entrada o de salida para los datos, además de restringir el tipo de dato que puede ser ingresado a un campo o variable de memoria. Formato : Especifica un formato mediante el cual se deben ingresar los datos. El formato puede consistir de una función función o una máscara máscara y debe estar delimitada por comillas. Orden READ
Propósito : Permite activar uno o más @...SAY...GET. Sintaxis : READ Formato para Capturar o Presentar Datos
Es la manera como se pueden ingresar o presentar los datos en pantalla usando la orden @...SAY...GET. Si se utiliza PICTURE (Máscara) se llama Máscara. Si se utiliza PICTURE (Función) se llama Función.
Máscara A N ! 9
Funció n A ! E Z M
Descripción Permite el ingreso de sólo letras para datos carácter (cada A es para representar un sólo caracter). Permite el ingreso sólo de letras y dígitos para datos tipo carácter. Convierte la minúscula a mayúscula (cada símbolo es para un carácter). Permite el ingreso de sólo dígitos para datos tipo carácter y dígitos y signos para datos númericos.
Descripción Sólo carácteres de tipo alfabético.
Convertir a mayúsculas todos los carácters alfabéticos. Formato de fecha Europeo (dd/mm/aa). Sustituye con espacios un campo con valor igual a 0 (cero) Permite la creación de una lista de opciones múltiples, las mismas que se deben separar por comas.
Una función se usa anteponiéndole el símbolo @ Clausula COLOR en @...SAY Sintaxis: @F,C SAY "Expresión" COLOR Donde: Expresión: Puede ser una combinación de campos, variables de memoria, operadores, funciones, mensajes, etc. Si se necesita mostrar en pantalla pantalla mas de una expresión, se deberá convertir todas todas las las
76
expresiones a carácter y luego conctenarlas. De número a carácter carácter usando usando DTOC( ) o DTOS( ).
STR( ) o de fecha a carácter
COLOR (color): Se usa para reportar los datos de una expresión con un color diferente al estándar.
COLOR
PROPOSITO Video Inverso
I
Subrayado
U X
Vacío (usado para el ingreso de claves)
W
Blanco
N
Negro
W/N
Video Normal
B
Azul
BG
Cyan
G
Verde
GR GR+ R RB
Café Amarillo Rojo Magenta
*
Parpadeante
+
Alta intensidad
Los Símbolos+ o * se deben utilizar después de especificar el color para la expresión, así: Color W/N+ Orden @...BOX
Propósito : Permite dibujar un recuadro en la pantalla.
Sintaxis : @f1,c1,f2,c2 BOX [(expresion)] Donde:
f1, c1 : Coordenadas del primer punto ubicado en la esquina superior izquierda. f2,c2 : Coordenadas del segundo punto ubicado en la esquina inferior derecha. Expresión
: Especifica los caracteres que formarán el cuadro.
Cuando no se especifica la expresión después de Box, se crea un recuadro de línea simple.
77
Orden @...CLEAR
Propósito : Permite borrar un sector de la pantalla.
Sintaxis : @f1,c1 [CLEAR ( TO f2,c2)]
Orden @...FILL
Propósito : Permite cambiar los colores de una detrminada área de la pantalla.
Sintaxis : @f1,c1 FILL TO f2,c2 [COLOR(color)]
Ejemplo: 1. @5,10 FILL TO 15,40 COLOR R ESTRUCTURAS CONDICIONALES
Una estructura condicional es aquella que al evaluar una condición realiza una determinada acción. Orden IF...ENDIF
Propósito : Permite ejecutar una sección del programa evaluando una condición.
Sintaxis 1: IF Bloque de Ordenes ENDIF
Sintaxis 2: IF Bloque de Ordenes1 ELSE Bloque de Ordenes2 ENDIF
IF ANIDADOS Se denomina así cuando se usa simultaneamente varias estructuras condicionales IF.
Sintaxis 3: IF Bloque de Ordenes1 ELSE IF Bloque de Ordenes2 ELSE Bloque de Ordenes3 ENDIF ENDIF Función FOUND( )
Propósito: Un valor verdaero, si la búsqueda con SEEK tuvo éxito, en caso contrario reporta falso.
Sintaxis: Found ( ) Ejemplo: Hacer un Programa que permita eliminar registros de la base de datos "Alumnos" USE Alumnos Order codi Cod=spac(6) @5,10 SAY "Ingrese Codigo:" GET cod PICT "@!AAAA99" read SEEK cod IF FOUND( ) *Tuvo éxito la búsqueda*
78
Delete Pack ELSE @10,10 SAY "Codigo No Registrado" ENDIF WAIT USE ...
Función SEEK( )
Propósito: Retorna verdadero si la búsqueda. con SEEK fue exitosa, caso contrario reportará falso.
Sintaxis:
SEEK ( )
Ejemplo: Hacer un Programa que permita ingresar registros de la base de datos "Alumnos" USE Alumnos Order codi Cod=spac(6) @5,10 SAY "Ingrese Codigo:" GET cod PICT "@!AAAA99" read IF SEEK (cod) *Tuvo éxito la búsqueda* @10,10 SAY "codigo ya Existente" ELSE : Pedir todos los datos : APPEND BLANK REPLACE : ENDIF
Orden DO WHILE
Propósito : Permite la ejecución de un grupo de ordenes mientras que la condición sea cierta .
Sintaxis : DO WHILE : : [LOOP] [EXIT] ENDDO Donde:
LOOP : Regresa a evaluar la condición . EXIT : Direcciona la salida con el DO WHILE hacia la siguiente orden que siga a ENDDO. Bucle Infinito DO WHILE .T. ?"FOX" ENDDO Ingresa en pantalla la palabra FOX infinidad de veces. Para detener ésta impresión presionar la tecla ESC.
Bucle Infinito X=0 DO WHILE X<3 X=X+1 ?"FOX" ENDDO Imprimirá en pantalla la palabra FOX tres veces.
Ejemplos: Hacer un programa que permita consultar registros de la B/D "Alumnos" USE ALUMNOS ORDER CODI OP="S"
79
DO WHILE OP="S" CLEAR COD=SPAC(6) @5,10 SAY "INGRESE CODIGO:" GET COD READ IF SEEK (COD) DISPLAY ELSE @10,10 SAY "CODIGO NO REGISTRADO" ENDIF OPI=" " @20,20 SAY "DESEA CONTINUAR [S/N]:" GET OPI PICT " @M S,N" READ IF OPI="S" LOOP ELSE EXIT ENDIF ENDDO
Orden FOR...ENDFOR
Propósito : Permite ejecutar un bloque de órdenes un número especificado de veces .
Sintaxis : FOR Var=inicio TO final [STEP incremento] : : [EXIT] [LOOP] ENDFOR | NEXT Donde:
Var : Variable de memoria a analizar . inicio : Es un valor de inicio para el contador. final : Es el valor final del contador. Cuando var sea igual o mayor que final, el bucle se detendrá y pasará el control a la siguiente línea después de ENDFOR. incremento : Es la cantidad en la que se incrementará el contador. Si no se indica, el valor
por defecto para el
incremento es 1.
Orden DO CASE...ENDCASE
Propósito : Permite evaluar múltiples condiciones .
Sintaxis : DO CASE CASE CASE : [OTHERWISE ] ENDCASE
DO CASE es una estructura condicional múltiple y excluyente, en donde sólo una de las condiciones se podrá ejecutar. En caso de no cumplirse ninguna condición y se se ha usado OTHERWISE se ejecutarán todas las órdenes comprendidas entre OTHERWISE y ENDCASE, caso contrario se ejecutará la orden que sigue a ENDCASE. Función INKEY( )
Propósito : Se usa ésta función para obtener el valor númerico correspondiente a una tecla.
80
Sintaxis : INKEY ( [ExpN] )
Ejemplo: 1. Para detener detener la ejcución de un programa se debe debe agregar agregar la siguiente línea: : : =inkey(0) && se asigna al vacío : para continuar con el programa presionar cualquier tecla.
TECLA
CODIGO
TECLA
CODIGO
F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 INSERT HOME
28 -1 -2 -3 -4 -5 -6 -7 -8 -9 133 134 22 1
DEL END PgDn PgUp
7 6 3 18 4 19 24 5 27 13 129 9 32 15
ESC ENTER BACKSP TAB Barra Espac TAB
81