Programacion Visual Fox 9

174
Universidad Autónoma de Quito Jesús Cisneros Valle VISUAL FOX 9.0 Para iniciar con la programación en Visual Fox, debemos ingresar a Visual Fox 9.0 desde Inicio, Todos los Programas y luego damos clic en Microsoft Visual Fox 9.0. Al ingresar se desplegará la pantalla de trabajo de Fox. Grafica de abajo:

Transcript of Programacion Visual Fox 9

Page 1: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

VISUAL FOX 9.0

Para iniciar con la programación en Visual Fox, debemos ingresar a Visual Fox 9.0desde Inicio, Todos los Programas y luego damos clic en Microsoft Visual Fox 9.0.

Al ingresar se desplegará la pantalla de trabajo de Fox. Grafica de abajo:

Page 2: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Hay que considerar que en la caja de comandos (grafica de abajo) se pueden ingresarvarios comandos, veremos unos pocos para demostrarlo, luego seguiremos con elestudio.

CLEAR, limpia la pantalla.?DATE(), pone la fecha actual en la pantalla,¿TIME(), pone la hora actual en la pantalla,?”VARIABLES O COMENTARIO O CONSTATE”, inserta palabras en pantalla sinposicionamiento,??”VARIABLES O COMENTARIO O CONSTATE”, Inserta caracteres uno acontinuación de otros,@ fila, columna permite un posicionamiento fijo en cualquier parte de la pantalla,&& comentario, permite poner comentarios,* comentario, permite poner comentarios,NOTE comentario, permite poner comentarios,

No hay que olvidar que al utilizar dentro de la caja de COMANDOS, elposicionamiento fijo @ fila, columna, debemos utilizar el comando SAY (decir) con elsiguiente formato:

@ fila, columna SAY “comentario, variable, etc.”.

Page 3: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Para iniciar la programación de Visual Fox, primero direccionamos a la carpeta en quevamos a trabajar. Usamos para lo cual la siguiente instrucción:

SET DEFAULT TO C:\nombre de la carpeta

Quiere decir que trabajaremos en una carpeta que está en la raíz de C:\

Creamos la carpeta llamada vfsemi en C:\

El direccionamiento queda:

Page 4: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Usando el comando MODIFY COMMAND en la caja d comandos, creamos unaventana para escribir un programa, la sintaxis es:

MODIFY COMMAND <nombre del ejercicio>

Es decir:

MODIFY COMMAND eje1

En este caso el ejercicio se llama eje1

El programa digitado seria:

NOTE MI PRIMER PROGRAMA EN VISUAL FOX* SUMA DE DOS NUMEROS*Declaración de variables y enceramosSTORE 0 TO A,B,C

*SOLICITAMOS INFORMAION@10,10 SAY "SUMA DE DOS NUMEROS"@12,10 SAY "INGRESE UN NUMERO:" GET A PICTURE " 99 "@14,10 SAY "INGRESE OTRO NUMERO:" GET B PICT " 99 "READ

*CALCULAMOS LA SUMAC=A+B

Page 5: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

*IMPRIMIMOS EL RESULTADO

@16,10 SAY"LA SUMA ES:" +STR(C)

*FINALIZAMOS EL PROGRAMACANCEL

Acto seguido grabamos el programa con: CRTL+W , al hacer esto la ventana dondedigitamos el programa desaparece, para hacerla aparecer en la caja de comandosdigitamos:

MODIFY COMMAD eje1

Luego compilamos el programa usando: COMPILE <nombre del programa>

COMPILE eje1, hacemos esto para cerificar si no hemos cometido errores de sintaxis.

Page 6: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Si no hay errores de sintaxis en la parte inferior izquierda de la pantalla, aparece laleyenda:

1 file, 0 Errors

Para ejecutar el programa usamos el comando DO de la siguiente manera:

DO eje1

O en el menú superior hacemos clic en el signo de admiración: !

Al poner DO eje1 o al presionar en el ! el programa se ejecuta la caja de COMANDOSdesaparece y podemos ingresar datos en el programa para verificar lo que hemos hecho:

Page 7: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

TABLAS

Visual Fox, maneja un Entorno de Datos, NO es una base de Datos.

Tipos de datos que maneja Visual Fox Pro

Numérico Fecha Memo Carácter General (Gráficos)

Entorno de Datos, Conjunto de Tablas relacionadosTABLAS

Libres, son tablas que no tienen relación

TABLA LIBRE

CREATEBROWSE

AÑADIR UN REGISTROCONSULTA DE REGISTROSEDICION O MODIFICACION DE REGISTROSELIMINACION DE REGISTROS

Ejemplo:

COMANDO: APPEND BLANK (añade un registro en blanco)METODO ABREVIADO: (combinación de teclas) ^ N = CTRL + N

CREATE <nombre de tabla>CREATE pais (enter) al digitar esto en la Caja de comandos, creamos el entorno parauna tabla libre.

COMANDOS:

MODIFY STRUCTURE (enter) permite ver la estructura de la tabla

CARACTER CAMPO REGISTRO/TUPLA

TABLA ENTORNO DE DATOS

Page 8: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

USE pais (enter) permite poner en uso la tabla pais

CLEAR (enter) limpia la pantalla

MODIFY COMMAND consulta (enter) crea entorno para escribir un programa

COMPILE pais (enter) compila el programa en ejecución

DO pais (enter) ejecuta el programa en ejecución

APPEND BLANK (enter) crea un registro en blanco al final de la tabla

DELETE (enter) borra un registro lógicamente

PACK (enter) borra un registro permanentemente (físicamente)

REPLACE <pob_pais> WITH 13000000 (enter), pone 13000000 en el campo pob_pais

SELECT <nombre de una tabla> (enter) selecciona la tabla con que trabajaremos

DIMENSION a(10) (enter) crea un espacio de memoria de 10 espacios para un vectorde nombre a.

STORE SPACE (10) TO <código> (enter) crea un espacio de memoria de 10 espaciospara una variable tipo caracter

STORE 0 TO a, b, cod_aux (enter), asigna el Cero a las variables numéricas a, b,cod_aux

****************

Creamos la tabla pais = CREATE pais

Page 9: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Asignamos variables a la tabla pais:

En la lengüeta Indexes, designamos la clave principal, en este caso cod_pas comoregular

Page 10: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

En la lengüeta table vemos el tamaño de los registros:

DBF TABLA CON ENTORNO FOXUN BYTE DE MARCA DE BOF O EOFUsamos BROWSE pais para ver la tabla

Page 11: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Ingresamos los datos y con Crtl+W (enter) grabamos la tabla pais.

Con Crtl + Y ingresamos un nuevo registro

Page 12: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Escribimos CLOSE ALL en la caja de comandoCon USE abrimos la tabla pais USE pais <enter>

Al abrir una tabla, siempre se pone sobresalta la primera casilla

Page 13: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Al digitar BROWSE FOR cod_pais=1002, se señala el registro que tiene elcódigo 1002.TODOS LOS COMANDOS SE ESCRIBEN EN LA CAJA DE COMANDOS.

Al digitar BROWSE FOR cod_pais>1002, aparecen los códigos mayores a 1002

Page 14: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Al digitar REPLACE mon_pais WITH "Correita", se pone Correita en el campomon_pais.

Añade un registro al final de la tablaAPPEND BLANK

Page 15: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

REPLACE nom_pais WITH "Venezuela"

Luego de escribir en la caja de comandos, se habrán agregado los datos en el registro enblanco que creamos con APPEND BLANK.

El comando BROWSEBROWSE FIELDS cod_pais, nom_paisPermite ver los campos cod_pais y nom_pais únicamente.

Page 16: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

BROWSE noedit NO PERMITE EDITAR, SOLO VISUALIZAR

Para cambiar los datos de usa celda, luego de haber realizado lo antes descrito, usamosFREEZE, de la siguiente manera:

BROWSE FIELDS cod_pais, nom_pais, mon_pais FREEZE mon_pais

Permite hacer cambios solo en mon_pais.

BORRADO LOGICOSi activamos la celdilla adyacente al codigo cod_pais, el registro se borra lógicamente

Page 17: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Otra manera de borrar lógicamente es usando DELETE, para lo cual ponemos el cursosen el registro a borrar lógicamente.

O también

Page 18: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Para borar todo usamos:DELETE ALL

RECUPERAR AL REGISTRO ACTUALRECALL

Page 19: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

RECUPERAR TODORECALL ALL

DESACTIVA LA VISTA DE LOS REGISTROS BORRADOS EN FORMA LOGICASET DELETED ON, ES DECIR LO BORRA PERO NO DEFINITIVAMENTE

Page 20: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Para devolver la vista usamos SET DELETED OFF

BORRADO LOGICO DEL código 1005 VENEZUELA

Page 21: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

El comando PACK elimina físicamente los registros borrados en forma lógica.

El comando ZAP elimina definitivamente todos los registros de la tabla, es un comandoque no permite recuperar los datos, es por esto que Visual Fox, pregunta por precauciónsi desea borrar o no.

Page 22: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

A continuación detallamos dos programas que hacen lo mismo, CONSULTA.* Primero en la caja de comandos cerramos todo CLOSE ALL* Luego con MODIFY COMMAND creamos en entorno para escribir el programa deconsulta.

MODIFY COMMAND prog1.

*CONSULTA USANDO SCAN FORSET TALK OFF && deshabilita el modo de seguimiento de memoriaSET ECHO OFF && deshabilita el modo de seguimiento de programa* CONSULTA METODO SCAN FOR*CLEAR

* ABRIMOS LA TABLAUSE pais IN 1* abre la tabla pais en el campo 1* DEFINICION DE VARIABLESband=0siga=0cod_aux=0* PROGRAMA PRINCIPALsiga=6DO WHILE siga=6

DO INGRESE_CLAVEDO CONSULTADO ENCERARsiga=MESSAGEBOX("CONTINUA....?",4+32,"UNAQ")

ENDDOCANCEL*****************

PROCEDURE INGRESE_CLAVE@8,10 SAY"INGRESE CODIGO:" GET cod_aux PICT " 9999 "READ

RETURN

PROCEDURE CONSULTA*selecciona la tablaSELECT pais*pone al principio de la tabla BOFGO TOPSCAN FOR cod_pais=cod_aux

* solo entra al proceso si encuentra* si encuentra band=1band=1@10,10 SAY"NOMBRE DEL PAIS:" +nom_pais@12,10 SAY"POBLACION:" +STR(pob_pais)@14,10 SAY"MONEDA:" +mon_pais

ENDSCANIF band=0

=MESSAGEBOX("CODIGO NO EXISTE",0+48,"UNAQ")*ELSE

*=MESSAGEBOX("CODIGO LOCALIZADO",0+48,"UNAQ")ENDIF

RETURN

PROCEDURE ENCERARband=0siga=0cod_aux=0

RETURN

Page 23: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

*CONSULTA USANDO ¡EOF() ó NOT EOF()SET TALK OFF && deshabilita el modo de seguimiento de memoriaSET ECHO OFF && deshabilita el modo de seguimiento de programa* CONSULTA METODO SCAN FORCLEAR

* ABRIMOS LA TABLAUSE pais IN 1* abre la tabla pais en el campo 1* DEFINICION DE VARIABLESband=0siga=0cod_aux=0* PROGRAMA PRINCIPALsiga=6DO WHILE siga=6

DO INGRESE_CLAVEDO CONSULTADO ENCERARsiga=MESSAGEBOX("CONTINUA....?",4+32,"UNAQ")

ENDDOCANCEL*****************

PROCEDURE INGRESE_CLAVE@8,10 SAY"INGRESE CODIGO:" GET cod_aux PICT " 9999 "READ

RETURN

PROCEDURE CONSULTA*selecciona la tablaSELECT pais*pone al principio de la tabla BOFGO TOP** consulta con !EOF()DO WHILE !EOF() && and band =0

IF cod_pais=cod_aux* solo entra al proceso si encuentra* si encuentra band=1band=1@10,10 SAY"NOMBRE DEL PAIS:" +nom_pais@12,10 SAY"POBLACION:" +STR(pob_pais)@14,10 SAY"MONEDA:" +mon_pais

ENDIFSKIPENDDOIF band=0

=MESSAGEBOX("Código NOP existe",0+48,"unaq")endif

RETURN

PROCEDURE ENCERARband=0siga=0cod_aux=0RETURN

Page 24: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

ALTAS

Creamos otra tabla para este ejercicio.Create estudia

Al usar Seek (cod_est) If Found ()Usamos tablas indexadas.

Page 25: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Usamos SET DISPLAY TO VGA50 en la caja de comando para mejorar lapresentación del programa.

ALTAS USANDO SEEK ( cod_est) IF FOUND( )SET TALK OFFSET ECHO OFF*PROGRAMA CON INDICES**********ABRIR LA TABLA****USE estudia IN 1 INDEX a1******variables*****STORE 0 TO cod_aux, band, sigaSTORE SPACE(30) TO nom_auxSTORE SPACE(25) TO dir_aux, ema_auxSTORE SPACE(9) TO tel_aux********************************programa principal********

siga=6DO WHILE SIGA=6

CLEARDO INGRESO_CLAVEDO BUSCA_CLAVE

IF BAND=0DO INGRESO_DATOSDO GRABA_DATOS=MESSAGEBOX("REGISTRO GRABADO..",0+48,"UNAQ")

ELSE=MESSAGEBOX("YA EXISTE",0+48,"UNAQ")

ENDIFDO CONTINUA

ENDDOCLOSE TABLESCANCEL

PROCEDURE INGRESO_CLAVE@10,10 say"INGRESE UNA CLAVE:" GET COD_AUX PICT " 9999"READ

RETURN

PROCEDURE BUSCA_CLAVESELECT ESTUDIA***METODO DE INDICESSEEK(cod_aux)IF FOUND()

band=1@12,10 SAY"NOMBRE:" + nom_est@14,10 SAY"DIRECCION:"+ dir_est@16,10 SAY"TELEFONO:" + TEL_est@18,10 SAY"CORREO:" + ema_est

ENDIFRETURN

PROCEDURE INGRESO_DATOS@12,10 SAY"INGRESE NOMBRE:" GET nom_aux pict "@!"@14,10 SAY"INGRESE DIRECCION:" GET dir_aux pict "@!"@16,10 SAY"INGRESE TELEFONO:" GET TEL_AUX PICT " 999999999 "@18,10 SAY"INGRESE CORREO:" GET ema_auxREAD

RETURN

PROCEDURE graba_datosAPPEND BLANK

Page 26: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

REPLACE cod_est WITH cod_auxreplace nom_est WITH nom_auxreplace dir_est WITH dir_auxreplace tel_est WITH tel_auxreplace ema_est WITH ema_aux

RETURN

PROCEDURE CONTINUA*ENCERAMOS LAS VARIABLESSTORE 0 TO cod_aux, band, sigaSTORE SPACE(30) TO nom_auxSTORE SPACE(25) TO dir_aux, ema_auxSTORE SPACE(9) TO tel_auxSIGA=MESSAGEBOX("CONTINUA..?",4+32,"UNAQ")

ALTAS USANDO SCAN FOR

SET TALK OFFSET ECHO OFF

USE estudia IN 1 INDEX a1**declara varibles incliye a las variables auxiliaresSTORE 0 TO cod_aux, siga, bandSTORE SPACE(30) TO nom_auxSTORE SPACE(25) TO dir_aux, ema_auxSTORE SPACE(9) TO tel_aux

*programa principal

siga=6DO WHILE siga=6

CLEARDO ingrese_claveDO busca_codigo&&band=1IF band=0

DO ingresa_datosDO graba_datos=MESSAGEBOX("DATOS GRABADOS",0+32,"UNAQ")

ELSE=MESSAGEBOX("codigo localizado",0+32,"UNAQ")

ENDIFDO CONTINUA

ENDDO*NO TE OLVIDES CERRAR LA TABLACLOSE TABLESCANCEL

PROCEDURE INGRESE_CLAVE@10,10 SAY"INGRESE UNA CLAVE:" GET cod_aux PICT" 9999 "READ

RETURN

PROCEDURE BUSCA_CODIGOSELECT ESTUDIAGO TOPSCAN FOR COD_AUX=COD_EST*SEEK(cod_aux)*IF FOUND()

band=1@12,10 SAY"NOMBRE:" + nom_est@14,10 SAY"DIRECCION:"+ dir_est

Page 27: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

@16,10 SAY"TELEFONO:" + TEL_est@18,10 SAY"CORREO:" + ema_est

*ENDIFENDSCAN

RETURN

PROCEDURE ingresa_datos@12,10 SAY"INGRESE NOMBRE:" GET NOM_AUX PICT "@!"@14,10 SAY"INGRESE DIRECCION:"GET dir_AUX PICT "@!"@16,10 SAY"TELEFONO:" GET TEL_AUX PICT"999999999"@18,10 SAY"CORREO:" GET ema_AUXREAD

RETURN

PROCEDURE graba_datosAPPEND BLANKREPLACE COD_EST WITH COD_AUXREPLACE NOM_EST WITH NOM_AUXREPLACE DIR_EST WITH DIR_AUXREPLACE TEL_EST WITH TEL_AUXREPLACE EMA_EST WITH EMA_AUX

RETURN

PROCEDURE CONTINUA*ENCERAMOS VARIABLESSTORE 0 TO cod_aux, siga, bandSTORE SPACE(30) TO nom_auxSTORE SPACE(25) TO dir_aux, ema_auxSTORE SPACE(9) TO tel_auxSIGA=MESSAGEBOX("DESEA CONTINUA..",4+48,"UNAQ")

RETURN

MODIFICAR UN REGISTRO

SET talk OFFSET ECHO OFF

**** abrir la tablaUSE estudia IN 1********************

*definicion de variablesSTORE 0 TO cod_aux, band, sigaSTORE SPACE(30) TO nom_auxSTORE SPACE(25) TO dir_aux, ema_auxSTORE SPACE(9) TO tel_aux

*programa principal*siga=6DO WHILE siga=6

DO ingreso_codigoDO busca_codigo&&band=1IF band=1

DO ingresa_datos_nuevosDO graba_datos_nuevos

ELSE=MESSAGEBOX("CODIGO NO EXISTE",0+32,"UNAQ")

ENDIFDO CONTINUA

ENDDOCLOSE TABLESCANCEL

Page 28: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

*****************************PROCEDURE ingreso_codigo

@10,10 say"INGRESE UN CODIGO:" GET cod_aux picture " 9999 "READ

RETURN

PROCEDURE busca_codigoSELECT estudiaGO topSCAN FOR cod_aux=cod_est

band=1NOM_AUX=NOM_ESTDIR_AUX=DIR_ESTTEL_AUX=TEL_ESTEMA_AUX=EMA_EST

*@12,10 say"NOMBRE:" +NOM_EST*@14,10 SAY"DIRECCION:"+DIR_EST*@16,10 SAY"TELEFONO:" + TEL_est*@18,10 SAY"CORREO:" + ema_est*=MESSAGEBOX("DATOS DEL CODIGO INGRESADO",0+32,"UNAQ")

ENDSCANRETURN

PROCEDURE ingresa_datos_nuevos@12,10 SAY"INGRESE NOMBRE:" GET NOM_AUX PICT"@!"@14,10 SAY"INGRESE DIRECCION:" GET DIR_AUX PICT"@!"@16,10 SAY"INGRESE TELEFONO:" GET TEL_AUX PICT " 999999999"@18,10 SAY"INGRESE CORREO:" GET EMA_AUXREAD

RETURN

PROCEDURE graba_datos_nuevosGRABA=0GRABA=MESSAGEBOX("DESAE GRABAR...?",4+32,"UNAQ")IF GRABA=6

SCAN FOR COD_EST =COD_AUXREPLACE NOM_EST WITH NOM_AUXREPLACE DIR_EST WITH DIR_AUXREPLACE TEL_EST WITH TEL_AUXREPLACE EMA_EST WITH EMA_AUX

ENDSCAN=MESSAGEBOX("REGISTRO ACTUALIZADO",0+48,"UNAQ")

ELSE=MESSAGEBOX("ACTUALIZACION CANCELADA",0+48,"UNAQ")

ENDIFRETURN

PROCEDURE CONTINUASTORE 0 TO cod_aux, band, sigaSTORE SPACE(30) TO nom_auxSTORE SPACE(25) TO dir_aux, ema_auxSTORE SPACE(9) TO tel_auxSIGA=MESSAGEBOX("DESEA REALIZAR OTRA ACTULIZACION:",4+32,"UNAQ")

RETURN

Page 29: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

FORMULARIOS (PROYECTOS)Objetos

PropiedadesCaracterísticas que permiten modificar el objeto

MétodosAcciones que ejecuta el objeto

Objetos contenedoresObjetos basados en clases

Programa interfaz Tiempo de diseño Tiempo de ejecución

Primero para iniciar un proyecto iremos a: FILE, luego a NEW.

Se abre enseguida una ventana llamada NEW

En la cual aceptaremos en NEW FILE

Page 30: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Acto seguido se abre una nueva ventana que nos permite darle un nombre al proyecto osimplemente damos Enter, para que se guarde como Proj1

Al dar guardar aparece otra ventana llamada Project Manager <nombre del proyecto>

Page 31: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

De la ventana abierta elegimos la lengüeta DOCS (Documentos)

Luego damos clic en NEW y luego en New Form.

Una vez echo esto aparece una ventana FORM1 y la ventana de controles de FormularioFORM CONTROLS.

Page 32: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Es en esta pantalla donde podemos iniciar a hacer nuestro proyecto, ingresando de lacaja de Formulario de Controles los objetos que necesitemos.

Damos un clic sobre FORM1 y vemos que en la caja de comandos COMMAND seactiva la casilla Active Cor 0, buscamos en la caja de comandos la casilla CAPTIONpara ponerle un nombre al formulario.

Page 33: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

El nombre que ponemos en el CAPTION sería por ejemplo Mi primer ejercicio y damosEnter.

También debemos cambiar el NAME del formulario, en este caso frmEjercicio.

Page 34: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Si marcamos en la caja de comandos la casilla AUTO CENTER y elegimos TRUE,veremos que nuestro formulario se centra a la mitad de la pantalla, esto ocurre en

tiempo de ejecución. !

Queda algo así: La pantalla de Mi primer ejercicio en el Centro

Page 35: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Cambiar el color de fondo doble clic en back color, que por defecto está en el númerohexadecimal: 236,233,216, damos clic en la ventanilla de la parte superior derecha queestá justo a lado del número antes dicho y aparece una paleta de colores Color dondeelegimos el que deseemos. En este caso el azul. Y damos aceptar. El código cambia a0,0,160.

Para que nuestro formulario aparezca sobre todas las demás ventanas abiertas, debemosactivar la casilla SHOW WINDOW y elegir 2 As Top-Level Form

Page 36: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Como podemos ver nuestro formulario se ha colocado sobre todos los demás, inclusivesobre el escritorio de la PC.

Para cambiar el ancho del formulario vamos al casillero WIDTH, que en esta ocasiónpor defecto tiene el valor 474 podemos poner otro valor puede ser 674, damos Enter yvemos como cambia el ancho del formulario.

Page 37: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Recordemos los objetos se crean a partir de una clase.Vamos a poner objetos dentro de nuestro formulario, primero los LABEL. Para lo cualubicamos en la caja Control de Formularios el icono y hacemos clic sobre él.

(Que es instanciar un objeto: Es crear un objeto a partir de una clase.) Una vezseleccionado LABEL lo ponemos sobre el formulario.

A

Page 38: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

En el CAPTION de la caja de Propiedades ponemos el nombre del LABEL.

Usamos AUTO SIZE de la caja de propiedades y lo ponemos el True (verdadero) paraacoplar o ajustar las letras al LABEL. Además con FORE COLOR cambiamos el colorde fondo del LABEL.

Page 39: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Con FONT SIZE de la caja de propiedades ajustamos el tamaño de la letra que estádentro del LABEL.

Con FONTBOLD, cambiamos el tipo de letra y si deseamos crear mas LABEL lopodemos tomar de la caja de propiedades o copiarlos con COPY para lo cual damos clicderecho sobre el LABEL.

Page 40: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Luego para pegarlo hacemos clic derecho y aceptamos en PASTE.

Podemos alinear los LABEL, para lo cual escogemos del menú principal, FORMAT ,luego ALING y en el menú que se abre escogemos la alineación, en esta ocasión a laderecha.

Page 41: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Alineados queda:

Ahora vamos a poner las cajas de texto TEXT BOX. Lo hacemos del la caja depropiedades en el icono que por lo general está junto a la incono LABEL

ab

Page 42: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Puestas las tres cajas de texto queda:

Luego en el NAME de la caja de propiedades cambiamos los nombres de las cajas detexto.

Page 43: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Podemos cambiar el tamaño de las letras con FONT SIZE de la caja de propiedades.

RECORDEMOS: que para ingresar datos numéricos en una caja de texto, el VALUE dela propiedades de cada caja de texto que vaya a contener valores numéricos debe estaren CERO (0).

Page 44: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Así mismo en la caja de propiedades elegimos INPUT MASK y le agregamos # comosea necesarios, de esta manera estaremos diciendo que solo ingresaran número en la cajade texto elegida y solo en el numérico de #.

Si ponemos en INPUT MASK ### solo ingresaran valores de 3 cifras no más.

Ahora ponemos los botones de comando COMMAND BUTTON. En este caso tresbotones.

Page 45: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Podemos también acoplar o ajustar os botones a la letras de su interior o nombre.Usando FORMAT, SIZE y luego To fit.

Usando CAPTION de la caja de propiedades cambiamos la palabra Command1,Command2, etc. Por los nombres de comandos que necesitamos.

Page 46: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

El botón 1, se llama ahora, Limpiar, el segundo Calcular y el tercero Salir.Es necesario ahora cambiar los NAME de cada uno de los botones, el primero sellamara btn_limpiar, el segundo btn_calcular y el tercero btn_salir, esto la hacemos en elNAME de la caja de propiedades.

Podemos poner imágenes a los botones para personalizarlos, así podemos escoger lasfiguras de los iconos, en el buscador de Windows ponemos *.ico. para localizarlos.

Page 47: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Los iconos o figuras elegidas las copiamos y los pegamos en la misma carpeta quecreamos en la raíz C:\ y que contiene nuestro formulario, proyecto, etc.

Luego para colocarlos en nuestros botones, marcamos un botón y en las propiedadeselegimos PICTURE.

Page 48: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Y pegamos cada icono según lo especifiquemos.

Luego programamos cada uno de los objetos de nuestro formulario, iniciamos con lacaja de texto txt_num1.

RECORDEMOS: LOST FOCUS, cuando pierda el foco,SET FOCUS, cuando reciba el foco.

En txt_num1 ponemos que cuando se haga clic después de ingresar un número, pierda elfoco y lo pase a txt_num2.

Page 49: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

El txt_num2, una vez ingresado un número y cuando pierda el foco, pase el foco albotón calcular.

El botón calcular que cuando reciba el foco, calcule la suma y al hacer clic pase el focoal botón limpiar.

Page 50: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

En el botón limpiar, programamos que limpie todo y al hacer clic pase el foco atxt_num1.

El botón salir, pues sale del formulario:

Page 51: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

El formulario nos quedaría así:

Ponemos CRTL+W y grabamos. Elegimos Project y NEW.

Page 52: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

NUEVO FORMULARIO

Para hacer un nuevo formulario vamos a NEW de la barra de menú, elegimosPROJECT MANAGER e ingresamos a la lengüeta DOCUMENTS elegimos de allíFORMS, el formulario que hemos hecho anteriormente frmprimero hacemos clic enFORMS para marcarlo y ponemos NEW.

Creamos un nuevo formulario al cual llamaremos en el CAPTION manejo decaracteres. Y el formulario se llamara en el NAME frm_apellidos

Page 53: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

La lógica es como sigue, se trata de ingresar nombres y apellidos de una persona ysepararlos:

Ríos Suárez Juan Carlos

RiosSuarezJuanCarlos

Vector X

J=1K=len(m) K=23 caracteres (nos dice el largo de la cadena)For i=1 to K

Car=substr((M), i, 1))If car<> “ “

X(j)=x(j)+carElse

J=J+1ENDIF

ENDFOR

Alltrim( ) elimina los caracteres a la derecha de la cadena

Programación de cada botón:

Botón limpiar:thisform.txt_apenom.Value=""thisform.txt_pat.Value=""thisform.txt_mat.Value=""thisform.txt_pri.Value=""thisform.txt_seg.Value=""thisform.txt_apenom.SetFocus

Botón separar:DIMENSION x(4)FOR h=1 TO 4

x(h)=""ENDFOR

K=ALLTRIM(thisform.txt_apenom.Value)m=LEN(k)j=1FOR I=1 to M

car=SUBSTR(k,i,1)IF car<> ""

x(j)=x(j)+carELSE

J=J+1ENDIF

ENDFOR

THISFORM.TXT_pat.Value=X(1)THISFORM.TXT_mat.Value=X(2)

Page 54: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

THISFORM.TXT_pri.Value=X(3)THISFORM.TXT_seg.Value=X(4)

THISFORM.BTn_limpiar.SetFocus

Botón salir:thisform.Release()

Podemos hacer un programa en Fox para calcular el dígito identificador de la cédula deuna persona: El formulario como está abajo:

Los botones programados así:

btn_verificar:

DIMENSION m(9)FOR i=1 TO 9

m(i)=0ENDFOR

k=thisform.txt_ced.Valuelongi=LEN(k)

IF longi<9=MESSAGEBOX("cedula incompleta",0+48,"Error")

ELSE*proceso de digito verificadorFOR i=1 TO 9

m(i)=VAL(SUBSTR(k,i,1))&& asigna de uno en uno los númerosal vector

ENDFOR

Page 55: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

*calculo posiciones imparessi=0FOR i=1 TO 9 STEP 2

aux=m(i)*2IF aux>9

aux=aux-9ENDIFsi=si+aux

ENDFOR

*calculo paressp=0FOR i=2 TO 8 STEP 2

sp=sp+m(i)ENDFOR

*calculo digitost=si+spdis=((INT(st/10))+1)*10dv=dis-stIF dv=10

dv=0ENDIFthisform.txt_dig.Value=dv

ENDIF

btn_limpiar:thisform.txt_ced.Value=""thisform.txt_dig.Value=""thisform.txt_ced.SetFocus

btn_salir:thisform.Release()

caja de texto txt_cedthisform.btn_verificar.SetFocus

Page 56: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

FORMULARIOSPrimero vamos a elaborar un formulario en el cual vamos a insertar los label, cajas detexto y botones de comando que necesitaremos en nuestro proyecto. (Recordemos quedebemos direccionar el proyecto a una carpeta en C SET DEFAULT TO C:\ vfox

Vamos a NEW de la barra superior

Page 57: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Aparece la ventana NEW donde escogemos Project y New File.

En la próxima ventana ponemos nombre al proyecto: le pondremos prjfifa

Page 58: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Una vez que damos un nombre se guarda y aparece una ventana donde escogeremosDATA. Luego Databases.

Y seguid daremos clic en New, para hacer una nueva base de datos:

Page 59: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Aparece una ventana llamada Create donde pondremos el nombre de la base de datos,en este caso bdfifa.

Damos Guardar y aparece una ventana llamada Database Designer seguido del nombrede nuestra base de datos en este caso dbfifa.

Page 60: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Damos clic derecho sobre la ventana y escogemos New table

Aparece la ventanita New table de donde hacemos clic en New Table.

Page 61: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Una vez echo clic aparece una ventana donde nos pide poner el nombre de la tabla, eneste caso se llama equipo. Y Damos Guardar.

Al hacer Guardar, aparece una ventana donde nos permite inicializar o crear nuestravariables a utilizar en la base de datos dentro de la tabla equipo.

Page 62: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Ingresamos los datos:

En caption podemos poner nombres mas reconocibles a las variables.

Page 63: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Declaramos la variable principal: como index ascendente

En la lengüeta indexes, la declaramos como Primary, Hacemos Ok.

Page 64: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Aparecerá otra vez la ventana donde ya se podrá ver nuestra tabla:

Hacemos doble clic sobre la tabla y aparece una ventana donde ingresaremos datosacordes a las variables declarada: para ingresar cara registro usamos CRTL+ Y.

Page 65: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Para grabar CRTL+WAparecerá nuevamente la ventana Database Designer dbfifa, donde daremos clicderecho y crearemos una nueva tabla New Table.

Aparece la ventana que nos permitirá ingresar el nombre de la nueva tabla quellamaremos en este caso puntaje

Page 66: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Designaremos las variables que necesitemos, pero en la clave principal pondremos unaclave foránea es decir repetiremos la misma clave que la primera tabla equipo (pues lasvamos a relacionar) pero al final de la clave pondremos fk . Es decir cod_equ_fk

Creamos el resto de variables:

Page 67: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Igualmente en caption ponemos un nombre referencial, para reconocerlo mejor, esto lohacemos si lo deseamos.

Como nuestra clave no se repetirá nunca, es una sola para las dos tablas, pondremosnuestra clave foránea también como primaria. Además los datos no se repetirán nunca.

Page 68: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Ingresamos datos a la nueva tabla puntaje. (Recuerda el código Principal se repite en latabla primera y en la segunda como foránea.), para ingresar datos doble clic sobre latabla puntaje. Y CRTL+Y para cada registro.

Para grabar CRTL+W . Una vez que hemos ingresado los datos. Aparece la ventanaData designer dbfifa con las dos tablas: equipo y puntaje.

Page 69: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Relacionamos las dos tablas, para lo cual desde el código principal de la tabla equipo(tabla principal) arrastramos el ratón hasta el código principal de la tabla puntaje.

Si damos clic sobre la raya que una las dos tablas aparecerá una ventana que nos indicala relación y el tipo de relación en este casos es de uno a uno.

Page 70: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Damos CRTL+W y así guardamos y cerramos lo que hemos hecho con las tablas.Aparece la ventana Project Manager – prjfifa

Si damos clic en Data, veremos las tablas elaboradas.

Page 71: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Para hacer los formularios de nuestro proyecto, vamos a Documents, elegimos Form ydamos clic en New, es decir crearemos un formulario nuevo. Aparece la ventana Newde donde hacemos clic en New Form.

Aparece el formulario: Form1 (FORMULARIO CONSULTA)

Page 72: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Vamos al Caption de la caja Properties y cambiamos el nombre acá le podremos estavez Consulta Equipos y en el Name pondremos frmConsulta

Damos clic en el icono del disquete de la barra superior para guardar el formulariofrmConsulta. Y le pondremos el nombre frmConsulta y hacemos clic en guardar

Page 73: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Ponemos los label y cajas de texto en el formulario.

En esta ocasión usaremos command group para insertar los botones:

Page 74: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Como command group nos da por defecto dos botones vamos a la caja properties y enButton count que esta con 2 ponemos 4.

Al dar Enter, aparecen dos botones más completando cuatro.

Page 75: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Los ordenamos.

Para acceder a los botones de comando de command group debemos ir a properties yseleccionarlos uno a uno.

Page 76: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Cambiemos los Name de los txt box: de acuerdo a lo que contendrán así: si contendrándatos numéricos aremos cambios en el Name y además en Value pondremos CERO yen el imput mask pondremos tantos # como sean necesarios. Como vemos los datosnuméricos alinean sus variables a la derecha y los datos carácter a la izquierda.

Ahora pondremos nombre al Command group, para lo cual vamos al Name de la cajaproperties y lo hacemos. En esta ocasión se llamará bg_001.

Page 77: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Para cambiar el Caption y el Name de cada botón del Command group que ahora sellama bg_001 debemos usar la caja properties.

Activamos cada botón y hacemos los cambios.

Page 78: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Para subrayar una letra de cualquier botón de comando y hacer que esa letra sea deacceso rápido con el ALT+ letra subrayada. En el Caption ponemos \<Limpiar, asísubrayamos la Limpiar.

Subrayadas una letra de todos los botones:

Page 79: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Ahora en la parte inferior crearemos los Label y cajas de texto de la tabla puntaje:

Una vez insertado lo que necesitamos y cambiados las características de las cajas detexto en el imput mask y Value de ser necesario (si son valores numéricos). AhoraTENEMOS QUE RELACIONAR EL FORMULARIO CON LA BASE DEDATOS que tenemos hecha y que se llama bdfifa. Para lo cual vamos al menú superiory elegimos VIEW y luego Data environment.

Page 80: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Aparece la ventana Add table or view, en donde elegiremos las tablas en este casoequipo y puntaje daremos Add en cada una de ellas.

Una vez elegidas las tablas aparecerán conjuntamente con la relación que hicimosanteriormente.

Page 81: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Cerramos en la X y luego damos CRTL+W.Prosiguiendo con la relación formulario base de datos, vamos a la barra de menússuperior vamos a Window y elegimos Data session

Elegimos de la ventana que se abre cada una de las tablas, empezando por la tablaprincipal que en este caso es equipo.

Page 82: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Cerramos en la X y luego damos CRTL+W.

PROGRAMANDO BOTONES DE COMANDO:

Lo elegimos del command group que se llama bg_001.

Si deseamos deshabilitar un botón de comando en este caso Puntaje, debemos ir a lacaja de propiedades y una vez marcado en Enabled ponemos False .F.

Page 83: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

BOTON CONSULTA:

SELECT equipoband=0GO topSCAN FOR cod_equ=thisform.txt_cod.Value

band=1thisform.txt_nom.Value=nom_equthisform.txt_tec.Value=tec_equthisform.txt_fun.Value=fun_equthisform.txt_ema.Value=ema_equ

ENDSCANIF band=0

=MESSAGEBOX("equipo no existe",0+48,"FIFA")THISFORM.GB_001.Btn_limpiar.SetFocus

ELSETHISFORM.GB_001.BTN_pun.Enabled= .T.THISFORM.GB_001.BTN_pun.SetFocus

ENDIF

Botón Puntaje:

SELECT PUNTAJEBAND=0GO TOPDO WHILE NOT EOF()

IF COD_EQU_FK=THISFORM.TXT_cod.ValueBAND=1THISFORM.TXT_jug.Value=JUG_PUNTHISFORM.TXT_GAN.Value=GAN_PUNganados=gan_punTHISFORM.TXT_emp.Value=EMP_PUNempatados=emp_punTHISFORM.TXT_per.Value=PER_PUNTHISFORM.TXT_fav.Value=FAV_PUNfavor=fav_punTHISFORM.TXT_CON.Value=CON_PUNcontra=con_punENDIFSELECT PUNTAJESKIP

ENDDO

IF BAND=0=MESSAGEBOX("equipo no registra partidos",0+16,"fifa")

ELSE*procedo de calculothisform.txt_puntaje.Value=(ganados*3)+empatadosthisform.txt_diferencia.Value=favor-contra

ENDIFthisform.gb_001.btn_limpiar.SetFocus

Botón Limpiar:

thisform.txt_cod.Value=0THISFORM.TXT_jug.Value=""THISFORM.TXT_GAN.Value=""THISFORM.TXT_emp.Value=""THISFORM.TXT_per.Value=""THISFORM.TXT_fav.Value=""THISFORM.TXT_CON.Value=""

Page 84: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

thisform.txt_nom.Value=""thisform.txt_tec.Value=""thisform.txt_fun.Value=""thisform.txt_ema.Value=""thisform.txt_diferencia.Value=""thisform.txt_puntaje.Value=""thisform.gb_001.btn_pun.Enabled= .F.thisform.txt_cod.SetFocus

Boton salir:

thisform.release().

NUEVO FORMULARIO (Formulario ALTAS)

Para hacer un Nuevo formulario en en el mismo proyecto nos vamos a Window delmenú superior y elegimos nuestro proyecto.

Aparece el Project manager de donde elegimos Form y New

+

Page 85: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

El nuevo formulario en el Caption se llamara Ingreso Equipos, (para dar de alta nuevosequipos) y en el Name frmAltasequipos. Todo esto lo cambiamos el la cala Properties.

Damos grabar en el disquete de la barra de iconos superior y ponemos un nombre alformulario frmAltasequipos.

Page 86: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

El formulario terminado quedaría:

Realizamos un pequeño programa para Txt_cod:

thisform.btnConsultar.SetFocus

Indica que cuando se ejecute Txt_cod pasará el foco al botón Consultar.

Igualmente como hicimos en el formulario anterior debemos RELACIONAR ELFORMULARIO CON LA BASE DE DATOS, tanto en el View (Data environment)como en Window (Data Session).

Page 87: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

NOTA: Para ahorrar tiempo podemos copiar los objetos de los formularios.

Page 88: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

En modo de ejecución de cualquier formulario debemos hacer clic en ! de la barra deiconos superior.

Ingresando una clave: 101 de Ecuador.

Page 89: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Cunando no encuentra el equipo permite ingresarlo: (darle de Alta)

Registro Grabado:

Page 90: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

PROGRAMACION DE BOTONES: (formulario Altas)

Boton Consultar (Grabar):

SELECT equipo

IF thisform.btnConsultar.Caption="Consultar"*proceso de consultaband=0GOTO topSCAN FOR thisform.txt_cod.Value=cod_equ

band=1thisform.txt_nom.Value=nom_equthisform.txt_tec.Value=tec_equthisform.txt_fun.Value=fun_equthisform.txt_ema.Value=ema_equ

ENDSCANIF band=1

=MESSAGEBOX("equipo ya existe",0+32,"FIFA")THISFORM.BTnLimpiar.SetFocus

ELSETHISFORM.BTnConsultar.Caption="Grabar"thisform.txt_nom.SetFocus

ENDIFELSE

*proceso de grabacionp=MESSAGEBOX("GRABA LOS DATOS...?",4+32,"FIFA")IF P=6

APPEND BLANKREPLACE COD_EQU WITH THISFORM.TXT_cod.ValueREPLACE NOM_EQU WITH THISFORM.TXT_nom.ValueREPLACE TEC_EQU WITH THISFORM.TXT_tec.ValueREPLACE FUN_EQU WITH THISFORM.TXT_fun.ValueREPLACE EMA_EQU WITH THISFORM.TXT_ema.Value=MESSAGEBOX("REGISTRO GRABADO",0+48,"FIFA")

ELSE=MESSAGEBOX("PROCESO CANCELADO...!!!",0+48,"FIFA")

ENDIFTHISFORM.BTnConsultar.Caption="Consultar"thisform.btnLimpiar.SetFocus

ENDIF

Boton Limpiar:

thisform.txt_cod.Value=0thisform.txt_nom.Value=""thisform.txt_tec.Value=""thisform.txt_fun.Value=0thisform.txt_ema.Value=""thisform.txt_cod.SetFocus

Boton Salir:

thisform.Release()

Page 91: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

NUEVO FORMULARIO (Formulario MODIFICACION/ACTUALIZACION)Creamos un formulario de la misma manera que lo hicimos para el formulario Altas:

Vamos a Data Environment para seleccionar las tablas del proyecto.

Igualmente como hicimos en el formulario anterior debemos RELACIONAR ELFORMULARIO CON LA BASE DE DATOS, tanto en el View (Data environment)como en Window (Data session).

Page 92: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Recordemos, para crear un nuevo formulario vamos a Window. Y elegimos el proyecto:

Seguimos.

Page 93: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

PROGRAMANDO PARA ACTUALIZACION:

Boton Consulta (Actualizar)

SELECT equipoIF thisform.btnConsultar.Caption="Consultar"

*proceso de consultaGO topband=0SCAN FOR thisform.txt_cod.Value=cod_equ

band=1thisform.txt_nom.Value=nom_equthisform.txt_tec.Value=tec_equthisform.txt_fun.Value=fun_equthisform.txt_ema.Value=ema_equ

ENDSCANIF band=1

*si existethisform.txt_cod.Enabled= .F.thisform.btnConsultar.Caption="Actualizar"thisform.txt_nom.SetFocus

ELSE=MESSAGEBOX("codigo no existe",0+48,"FIFA")THISFORM.BTnLimpiar.SetFocus

ENDIFELSE

*proceso de actualizaciónP=MESSAGEBOX("DESEA ACTUALIZAR",4+32,"FIFA")IF P=6GO TOPDO WHILE NOT EOF()

IF COD_EQU=THISFORM.TXt_cod.ValueREPLACE NOM_EQU WITH THISFORM.TXT_nom.Value

Page 94: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

REPLACE TEC_EQU WITH THISFORM.TXT_tec.ValueREPLACE FUN_EQU WITH THISFORM.TXT_fun.ValUEREPLACE EMA_EQU WITH THISFORM.TXT_ema.Value

ENDIFSELECT EQUIPOSKIP

ENDDO=MESSAGEBOX("REGISTRO ACTUALIZADO",0+48,"FIFA")ENDIFTHISFORM.BTnConsultar.Caption="Consultar"thisform.btnLimpiar.SetFocus

ENDIF

Boton Limpiar:

thisform.txt_cod.Value=0thisform.txt_nom.Value=""thisform.txt_tec.Value=""thisform.txt_fun.Value=0thisform.txt_ema.Value=""thisform.txt_cod.SetFocus

Boton Salir:

thisform.Release()

Page 95: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

NUEVO FORMULARIO (Formulario ELIMINACION)IMPORTANTE:Para que se efectivice o se ejecute la eliminación (lógica) de un registro se debe activaren el formulario lo siguiente: SET DELETE ON. Para que ocurra lo contrario SETDELETE OFF.

Una vez que hemos creado todos los objetos en el formulario eliminar:

Hacemos doble clic en el formulario:

Page 96: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Al poner SET DELETE ON el registro que fue eliminado en etapa de ejecucióndesaparece lógicamente.

PROGRAMANDO ELIMINACION:

Boton Consultar(Eliminar)

SELECT equipo

IF thisform.btnConsultar.Caption="Consultar"*proceso de consultaGO topband=0SCAN FOR cod_equ =thisform.txt_cod.Value

band=1thisform.txt_nom.Value=nom_equthisform.txt_tec.Value=tec_equthisform.txt_fun.Value=fun_equthisform.txt_ema.Value=ema_equ

ENDSCANIF band=1

*si existethisform.btnConsultar.Caption="Eliminar"

ELSE=MESSAGEBOX("codigo no existe",0+48,"FIFA")THISFORM.BTnLimpiar.SetFocus

ENDIFELSE

*proceso de eliminacionP=MESSAGEBOX("DESEA eliminar",4+32,"FIFA")IF P=6

Page 97: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

SELECT equipoDELETE FOR cod_equ=thisform.txt_cod.ValueSELECT puntajeDELETE for cod_equ_fk=thisform.txt_cod.Value

=MESSAGEBOX("Registro eliminado",0+32,"FIFA")ELSE

=MESSAGEBOX("Registro no eliminado",0+32,"FIFA")ENDIFTHISFORM.BTnConsultar.Caption="Consultar"thisform.btnLimpiar.SetFocus

ENDIF

Para los dos programasBoton limpiarthisform.txt_cod.Value=0thisform.txt_nom.Value=""Thisform.txt_tec.Value=""thisform.txt_ema.Value=""thisform.txt_fun.Value=0thisform.txt_cod.Enabled= .T.thisform.txt_cod.SetFocus

boton salirthisform.Release()

Para cerrar todo el proyecto damos CRTL+W.

Page 98: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

LOS MENUSLas opciones en las barras se llaman PAD, los PAD internamente tienen POPUP.

Ejem:

El sistema administrativo financieroConsta del:Area financiera

Cuentas por cobrarLibro diarioBalances

Situación inicialEstado de resultados

Area administrativaIngreso de personalHistorial de personalControl

Area de PersonalNominaIESSSRI

1.- PARTE DISEÑO DEL MENU2 .- PARTE EJECUTABLE DEL MENU

DISEÑO DE MENU

Vamos al menú superior elegimos Window, luego nuestro proyecto.

Page 99: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Elegimos la lengüeta OTHER.

Luego Menu y después New. Aparece la ventana New Menu y elegimos Menu.

Page 100: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Se despliega la ventana Menu Designer, aquí literalmente construimos el menú.

Creamos el MENU PRINCIPAL. Además al hacer clic en PREVIEW, podemosvisualizar el menú en la pantalla. Luego para hacer un sub menú (POPUP) dentro de unPAD damos clic en CREATE. De cada PAD

Page 101: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Al dar clic en el CREATE de Mantenimiento podemos ingresar los POPUP quenecesitemos. Es decir creamos un sub menú de Mantenimiento.

Quedaría algo como esto: Es el sub menú de Mantenimiento.

Page 102: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Para poder unir o enlazar el menú Sub menu Ingreso Equipos con el formulariofrmAltasEquipos. Primero nos posicionamos en Ingreso Equipos activamos Resultcomo Procedure (procedimiento)

Luego seleccionamos CREATE del mismo Ingreso Equipos, aquí escribimos el enlace:DO FORM frmaltasequipos.scx (SCX ejecutable del formulario para Menu) y luegoponemos CRTL+W para grabar.

Page 103: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

NOTA: Si algun formulario aún no existe se procede a colocar un mensaje, explicandoque está en construcción, ejemplo:

=messagebox(“modulo en construccion”,0+48,”FIFA”)

Para la el formulario frmConsulta. Luego ponemos un CRTL+W

Acá vemos como vamos cambiando a PROCEDURE todos los Sub menú.

Page 104: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Formulario Actualizar frmActualiza y frmEliminar. Usaremos igualmente los archivoscon terminación .CSX. Y luego CRTL+W para grabar. Así uno a uno los formularios.

Para regresar al menú principal, en Menu Level ponemos Menu Bar.

Page 105: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Ahora vamos al menú Edición:

Vamos en este menú a utilizar objetos ejecutables de Visual Fox. Como la acciónCopiar. Seleccionamos Edición y luego CREATE. Ponemos Copiar en el sub menú yluego en Result ponemos Bar#

Page 106: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Nos queda: Copiar, Bar# del Menu Level Edicion

Pero para poder usar Copiar ponemos el comando que reconoce la Copia (Copy) el cuallo reconoce Fox. Lo escribimos en Options: _med_copy

Page 107: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Para crear teclas de acceso rápido usamos el pequeño cuadro que esta el Option. Yaparecerá una vez hecho clic la ventana llamada Prompt Option, y de manera directaescribimos las teclas de acceso que usaremos de la siguiente manera: en Key Label y enKey Text ponemos CTRL+Q. Presionar CRLT+una tecla en este caso la Q.

Podemos poner un mensaje de información: Lo escribiremos en Message y entrecomillas “ ”.

Page 108: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

PONIENDO ICONOS EN EL MENU:Si deseamos poner un icono en el menú, procedemos a buscar iconos en la PC para unavez seleccionado los copiamos y los colocamos dentro en la carpeta de nuestroproyecto. Y de allí los llamamos desde la ventana Prompt Option. Para lo cual usamosel pequeño cuadro que esta aquí. Cerramos poniendo Ok

AL cerrar poniendo Ok, aparece un visto √ en el cuadro que está en Option.

Page 109: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Para escoger otras acciones de Fox usamos el botón Insert Bar, al hacer clic sedespliega varias opciones de acciones de Fox.

Como Insert Bar inserta en el menú las acciones de Fox en ingles podemos cambiar losnombres a español.

Page 110: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Si queremos poner una CALCULADORA, escribimos en el Prompt Calculadora, luegoen Result elegimos Commnad y por ultimo escribimos run calc.exe, que es elejecutable de la calculadora de Windows.

Para regresar al menú principal que estamos haciendo hacemos lo siguiente: En menúlevel elegimos menú bar.

Page 111: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Menu Otros: Del menú principal elegimos otros. En Promt. Creamos los campos. Enmenú Otros creamos nuevos POPUP (Estadísticas, Informes).

Create: Damos create en Estadisticas y creamos nuevos POPUP.

Page 112: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

A cada sub menú de Estadísticas le asignamos el comando respectivo en Result.

Si aún no está construido podemos poner: PROCEDURE, y un mensaje enconstrucción en cada formulario

=MESSAGEBOX("MODULO EN COSNTRUCCION",0+48,"FIFA")

Page 113: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Para hacer el menu INFORME y luego vamos a CREATE

Lo hacemos como lo hicimos en los menus anteriores. (menú Otros)

Page 114: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Como esta en construcción, ponemos:

Con PREVIEW vemos lo que hemos hecho en nuestro menú

Page 115: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Por menú bar (Menu Level) Salimos al menú principal.

Opción Salir del menú principal:

Page 116: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Procedemos: Poniendo al Result como Command.

Ponemos Quit para salir

Page 117: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Terminado Grabamos el menú. En el disquete hacemos clic y ponemos un nombre.

CONSTRUIMOS EL EJECUTABLE DEL MENÚ

Vamos a View y elegimos General Options.

Page 118: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Formulario de nivel superior y OK y grabamos en el diskette

Page 119: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

GENERAMOS EL MENÚElegimos Menu de la barra superior y Generate.

Damos clic en Generate, para salir lo hacemos en X

Page 120: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Para salir cerramos en X en Menu Designer, luego vamos a Documents. Para elaborar elformulario del menú que hemos estado haciendo:

Vamos a Form y luego a New, se abre la ventana New Form y elegimos New Form

Page 121: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Al formulario del Menú en propierties elegimos 2-As Top level form

Page 122: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Luego Maximizado al formulario menú para que ocupe toda la pantalla. (WindowsState)

En el Caption ponemos un nombre :

Guardamos en el disquete del menú superior.

Page 123: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Le ponemos un nombre al formulario del menú. Y guadar.

Para que cuando el programa se cargue llame primero a nuestro menú, damos Doble clicen el formulario y:

Page 124: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Ponemos : DO MENUFIFA.MPR WITH THIS, .T. Grabamos con CRL+W.

LUEGO Vamos a cada formulario (Consulta, Altas, Actualización, Eliminar) y leponemos 1- In Top Level Form

Page 125: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Page 126: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

REPORTESPrimero debemos definir una impresora, que será la que utilizaremos para la impresiónde los reportes.

Los Reportes están constituidos por:

- CabeceraTitulo del reporte

- Cuerpo del reporte (detalle)Desplegar la información del reporte

- Pie del reporteFirmas de responsabilidadNúmero de página

En nuestro proyecto vamos a Documents y escogemos reportes (REPORTS), luegodamos NEW para iniciar el proceso de crear nuestro reporte o reportes.

Page 127: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Luego en la ventana NEW REPORT , escogemos New Report.

Al dar clic en New Report, aparece la ventana Report Designer - Report1, la cual poseetres particiones: Page Header (Cabecera), Detail (Contenido) y Page Footer (Pie dereporte).

Page 128: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Para poder mover las barras Page Header (Cabecera), Detail (Contenido) y Page Footer(Pie de reporte). Es necesario dar clic sobre ella (marcarla) y sosteniendo el clic sobre labarra respectiva la movemos para arriba o hacia abajo.

Para escribir en la cabecera, seleccionamos de la ventana Report Controls, la letraes decir damos clic y luego clic en el sector de la cabecera donde queremos iniciar conla escritura de la Cabecera del Reporte.

A

Page 129: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Podemos darle formato a la cabecera o a cualquier oración que pongamos en nuestroreporte, para esto vamos al menú principal de la parte superior de la pantalla yescogemos Format y por ejemplo luego Font.

Podemos ponerle color:

Page 130: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Centrar el nombre del reporte usando Align.

Para insertar un rectángulo o cuadro en el reporte, dentro del cual escribiremos datosespecíficos, marcamos el cuadro de la ventana Report Controls y lo insertamos en elreporte:

Page 131: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Luego escribimos lo que necesitamos resaltar dentro del cuadro de la cabecera delreporte, ponemos un detalle para la fecha.

Ponemos una pequeña línea dentro del rectángulo para separar las palabras de lacabecera y para ponerla donde la necesitemos la copiamos CRTL +C y CRTL+V.

Page 132: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Podemos centrar las palabras:

Copiamos pues el cuadro que hemos creado y lo colocamos en el espacio del reportellamado Detail (Contenido), a fin de hacer una copia idéntica a la de la cabecera yevitar descentrar el contenido del Detalle. Para poder copiar el rectángulo y las líneasverticales hacemos clic sobre cada una de ellas manteniendo aplastado el SHIFT. Actoseguido CRL+C + CRL+V y con ayuda de las flechas la movemos. Luego marcamos lalínea DETAIL y la movemos hacia arriba hasta conseguir que esté junto al cuadro queacabamos de copiar sin dejar espacios.

Page 133: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Nos queda más o menos así: Ponemos además el pié de página del reporte.

Ponemos también un sitio para el número de página:

TIPOS DE DATOS:

Funciones de FoxVariables de FoxCampos de las tablasVariables creadas por el usuario

Page 134: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Grabamos el reporte dentro de la carpeta de nuestro proyecto:

IMPORTANTE: Se debe RELACIONAR el reporte con la base de datos (tablas)de nuestro proyecto a fin de poder usar los datos de las tablas y sus variables. Paralo cual vamos a View y luego damos clic en Data Environment.

Page 135: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Aparece una ventana Data Environment, luego damos clic en Add… pero debemoshaber dado clic derecho sobre la ventana Data Environment.

Al dar clic en Add, aparecen las tablas de nuestro proyecto y seleccionamos las tablasde las cuales seleccionaremos las variables o registros que necesitemos más adelante.Cerramos la ventana con CRTL + W.

Page 136: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Luego vamos a WINDOW y seleccionamos Data Session

Aparecerá la ventana Data Session y seleccionamos OPEN y se abre una ventanallamada Open, y es acá donde elegimos las tablas que vamos a usar de nuestro proyecto.

Page 137: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

La ventana Data Session queda, para cerrar damos CRTL+W.

Para poner la fecha en este caso, elegimos de la ventana Report Contorls, el icono Fieldy lo colocamos donde pondremos la fecha, al aceptar en Field aparece la ventana FieldProperties.

ab|

Page 138: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Damos clic sobre el pequeño cuadro que está a la derecha de la ventana Expresión, a finde seleccionar de la ventana Expression Builder los comandos de Fox que necesitemos,en este caso seleccionamos {DATE}, la fecha del sistema.

La selección de DATE [] es como en la grafica de abajo:

Page 139: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Para crear variables personalizadas que necesitamos como en este caso la variablepara el ordinal, procedemos de la siguiente manera: Vamos a Report del menú superiory elegimos Properties.

Aparece la ventana Report Properties.

Page 140: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Elegimos la lengüeta Variables y luego en Add. Aparece la ventana Report Variableque nos pide el nombre de la variable que estamos creando. En este caso ord

Al poner el nombre de la variable (ord) esta aparece en la ventana Variables de ReportProperties, en Calculation Type seleccionamos Sum o Cout preferiblemente Cout y OK.

Page 141: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Luego para usar la variable. Seleccionamos Field de la ventana Report Controls y en laventana Field Properties seleccionamos el cuadrito que está a la derecha de la ventanaExpressión.

De la ventana Expressión Builder elegimos ord, que es la variable que creamos y dandodoble clic la seleccionamos.

Page 142: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Nos queda ord dentro de la ventana Expressión.

Luego vamos a la lengüeta Format y en Format expressión ponemos 99 (la mascara desalida máximo dos dígitos), elegimos Numeric y luego en Format Options elegimosBlank if zero y por ultimo Ok. Y listo creamos nuestra variable.

Page 143: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

No debemos olvidar que antes de cerrar la configuración de ord en la lengüetaCalculate, debemos poner COUT en la ventanita de selección Calculation Type.

Se ha seleccionado las variables DATE[], ord, y de paso ya se han ingresado lasvariables o campos nom_equ, tec_equ. Campos que fueron seleccionados de las tablasde nuestro Proyecto. La selección se inicia con Field, para seleccionar un campo y alaparecer la ventana Field Propierties damos clic en el cuadrito para que nos lleve a laventana Expressión Builder de donde elegimos las variables que necesitemos.

Page 144: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

PRINT PREVIEWPara visualizar como nos va quedando nuestro reporte, vamos al menú principalelegimos FILE y luego Print Preview.

Acá vemos como nos queda la vista previa.

Page 145: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

PONIENDO NUMEROS DE PAGINA:Para poner números a las páginas de nuestro Reporte, primero seleccionados Field,colocamos el Field en el lugar para poner el número de página y aparece la ventanaField Properties. Damos clic en el cuadrito de Expressión.

Page 146: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

En la ventana Expresión, vamos a variables y seleccionamos _pageno y listo número depáginas realizado.

Debemos relacionar nuestro reporte con el formulario correspondiente, para lo cualvamos al menú y seleccionamos el formulario donde debe ir nuestro reporte, en estecaso se trata del Sub menú Informe, del sub menú equipos que es el sub menu quecontendrá el reporte, Damos Create

Page 147: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Al dar CREATE, aparece la ventana Menú Designer, del proyecto FIFA en este casoseguido del nombre del sub menú que contendrá el reporte llamando EquiposProcedure*, dentro de esta ventana escribiremos lo siguiente:

REPORT FORM < nombre_reporte.FRX> previewREPORT FORM repequipos.frx preview

Cabe indicar que repequipos.frx es el nombre que le pusimos anteriormente a nuestroreporte cuando lo estábamos elaborando. Por ultimo damos CRTL+W.

Automáticamente al dar CRTL+W se graba y debemos GENERAR nuevamentenuestro menú, pues para cada cambio que se haga en el menú por mínimo que sea sedebe siempre volver a generar. Por eso vamos a Menú y seleccionamos Generate.

Page 148: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

En la ventana Generate Menu damos Generate.

Nos aparece una pequeña ventana que nos dice si deseamos reescribir en el menúexistente y decimos YES (si). Este proceso lo debemos hacer con cada reporte quecreemos y que anexemos al menú correspondiente.

Page 149: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

REPORTES USANDO 3 TABLAS RELACIONADASPrimero creamos un proyecto dentro de una carpeta creada en C en este caso la carpetavfox7.

Creamos un proyecto que en este caso se llama final, y una base de datos llamadadbcfinal dentro del cual crearemos tres tablas que por esta ocasión se llamaran: alum,materia y notas.

TABLA alum.

Page 150: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

El código codalu será clave primaria:

La tabla materia, tendrá un código de nombre cod_mat_pr

Page 151: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Su clave también será primaria.

Una razón por la que los códigos de las tablas alum y materia son primarias es quedichos códigos no se repetirán y serán enlazados en otra tabla, en este caso la tablanotas, pues “un alumno puede tener varias notas y varias materias y de igual manera unamateria puede ser tomada por varias alumnos y tener varias notas” Son relaciones deuno a varios.

Page 152: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Los códigos de la tabla notas son regulares, pues servirán de enlace entre las tablasalum y materia. Nos queda así:

Ingresamos los datos en la tabla alum.

Ingresamos datos en l tabla materia

Ingresamos datos en la tabla notas:

Page 153: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Vamos a documentos (Docs) de la ventana Project Manager final y elegimos Reports yharemos un reporte nuevo. En New y en New Report elegimos New Report.

IMPORTANTE: HACER LA RELACION de la TABLAS: Esto lo hacemos yendo alView del menú superior y elegimos Data Base Designer, es una relación de UNO aVARIOS, con la tabla notas como una tabla de enlace.

Page 154: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Luego en WINDOW del menú superior y en el Data Session seleccionamos las tablassegún la relación o como las necesitemos. Para cerrar las dos ventanas CRL+W.

IMPORTANTISIMO:Una vez dentro de nuestro reporte en este caso Report1.frx, (Pues fue grabado comoReport1) antes de realizar cualquier introducción debemos ingresar al View del menúsuperior y elegir Data Environment al ver las tablas relacionadas, elegimos la línea derelación y damos clic derecho al aparecer una ventana elegimos Properties. Aparece laventana Properties-Repor Designer-report 1.frx. de esa ventana elegimos One To Many(Uno a varios) y lo ponemos en TRUE. Para cerrar damos a todo CRLT+W. Y nosquedamos en el formulario.

Page 155: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Solo una vez hecho lo anterior podemos empezar a poner los registros o variables denuestras tablas en el formulario de acuerdo a lo que necesitemos, Abajo vemos elreporte ingresado todas las variables.

PERO. Como ponemos la variable ordi. Ahora lo veremos:Debemos crearla. Vamos a Report del menú superior y elegimos Properties .

Page 156: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

En la ventana Report Properties elegimos la lengüeta variables y luego el botón ADD.Aparece la ventana ADD y dentro de ella escribimos el nombre de la variable quenecesitamos. En este caso la variable ordi para el número ordinal.

Luego en el cuadrito de la derecha damos clic para elegir la variable: Aparece laventana Expresisón Builder.

Page 157: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Una vez elegida damos OK y Aparece la palabra ordi dentro de la ventana Variables: yen Calculation y le ponemos COUNT.

De igual manera para crear la variable sumat hacemos como lo hicimos en la variableordi. La creamos, luego en Report Properties damos clic en el cuadrito y configuramossumat, como sumat nos sirve para sumar las notas (Notas n1+Notas n2+Notas n3), esolo especificamos en la ventana Expressión Builder, en la ventana expresión sumamoslas notas. Eligiendo la tabla de variables respectivas. En este caso tabla notas.

Page 158: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

PROGRAMANDO DATOS PARA EL LABEL DE OBSERVACION:

Para esta variable debemos ir al LABEL y colocar el label en el sitio donde va a ir laobservación que necesitemos en este caso de las notas (APROBADO, NO APRUEBA ySUFICIENCIA). Una vez que hemos colocado el label aparece la ventana fieldproperties, en la ventana expressión, programaremos la variable que dará resultado a losdatos de Observación, lo programado nos queda así:

Expressión:

Damos OK.

Las demás variables, las ponemos del label y elegimos las tablas y variablescorrespondientes.

Cabe señalar que en este caso la tabla de datos de donde sacaremos los datos se la eligeuna a una en la ventana Expresión Builder de Repor Properties.

Debemos considerar muy importante la tabla en torno a la cual girará nuestro reportepara hacer especial énfasis en ella.

En este caso la tabla de inicio principal el alum

iif( sumat>=44,"Aprobado",iif (sumat<=34,"No Aprueba","Suficiencia"))

Page 159: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

VISTA PREVIA DEL REPORTE:

Para ver como está que dando el report1 vamos al menu superior y elegimos FILE yluego Print Preview

El reporte está quedando así, para salir de Vista previa damos Escape. (Esc)

Page 160: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Para hacer otro Reporte el Report2.

Vamos a Project manager, luego a report, luego a New y el New Repor damos NewReport lo grabaremos como Report2. Antes que nada debemos ir a View del menúsuperior y en Data Environment configurar nuevamente la posición de relación de lastablas: Ahora esta materia – notas - alumnos

Luego damos clic derecho sobre la línea de relación (materia – notas) elegimosproperties y seleccionamos One To Many y lo ponemos en TRUE.

Page 161: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

La relación (notas-alumnos) queda en One To Many como FALSE.

En el Data Session de Window, ponemos: materia(1), notas(2) y alum(3) (posiciones dememoria. Area de trabajo de memoria.)

Page 162: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

DATA GROUPINGLuego de configurar el Data environment y el Data Session, debemos configurar elDATA GROUPING. Para lo cual vamos a Report de la barra superior y elegimos DataGrouping…

Aparece la ventana Report Properties y elegimos la lengüeta Data Grouping.. Damosclic en ADD.. Para seleccionar la variable en torno a la cual se realizara el reporte.

Page 163: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Al dar ADD aparece la ventana Expresión Builder en Front Table elegimos la tabla endonde esta el código que buscamos. Seleccionamos la tabla alum en este caso yescogemos con doble clic el código en este caso codalu. (Es la tabla principal de estereporte).

En expressión aparece el código de la tabla seleccionada, damos OK

Page 164: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Regresamos automáticamente a la ventana Report Properties y vemos que ya estáingresada la clave entonces seleccionamos NEW PAGE. Y Damos Ok

Vamos a FILE y luego Print Preview para ver como está el formulario. En vista previa.

Page 165: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Para la vista previa vamos a FILE y luego a Print Preview. Y Nos que algo como lo queesta abajo.

PONIENDO EL REPORTE EN UN MENU:

Vamos a OTHER de Project manager y elegimos Menu.

Page 166: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

En el Prompt, escribimos el nombre del menú principal en este caso Reporte, en Resultelegimos Subnenú y luego damos create.

Vamos en el submenú (Prompt) vamos a crear los Menus: Reporte por estudiante yReporte por materia y ponemos a cada uno en Result como Procedure y luego damoscreate.

Page 167: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Para conectar el reporte con el menú ponemos en el CREATE:

REPORT FORM report1.frx preview

Es decir vista previa.

En el Report2 hacemos igual y damos CRTL+W para grabar y cerrar.

Page 168: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Luego vamos a View y damos clic en General Option y en la ventana que se abreescogemos Top Level Form. Y damos Ok.

Luego vamos a MENU de la barra superior ponemos GENERATE y damos Yes (SI) atodo, recordemos que para cualquier cambio es necesario volver a generar el menú.

Luego vamos a DOCS, de Project manager, escogemos FORM y luego New, esto lohacemos a fin de insertar dentro de un formulario el menú que hemos creado.

IMPORTANTE: Con CRTL+W guardamos en menú con un nombre. En este caso sellama menureporte. No olvidemos que con este nombre debemos activarlo con laextensión .MPR al momento de llamarlo en el formulario. Se nos graba en la carpetaelegida al principio como menureporte.mpr (Ref: Pag No. 167)

Page 169: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

No se debe olvidar grabar el formulario con un nombre y guardar.

Luego en Properties:

ShowWindow lo ponemos en: 2-As top level formWindow State lo ponemos en: 2-MaximedCaption ponemos un nombre : En este caso Menu de reportes

Page 170: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Luego para que se ejecute primero nuestro menú ponemos, damos doble clic sobre elformulario Menu de reportes y ponemos:

DO <nombre menu>.mpr WITH THIS, .T. Para grabar CRTL+W.

En este caso DO menureporte.mpr with this, .t. (menu reporte es en nombre con quese grabo el menu que hicimo al inicio Rer: Pag No. 165)

Grabamos con CRTL+W

Para verificar si corre nuestro menu y formulario, en proyect manager, elegimos elformulario de nuestro menú y damos Run.

Page 171: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Si corre aparecerá el menú del cual elegimos el reporte que necesitemos observar. Eneste caso Reporte por estudiante.

Al seleccionarlo se debe desplegar el reporte elegido.

Page 172: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Ahora el reporte por Materia.

Se observa así:

Page 173: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

INDICE

Visual Fox 9.0 (Introducción) 2Comandos 3Direccionamiento 4EjemplosTablas 7Manejo de tablas 7*Programa Conculta (Scan For) 22*Programa Consulta (Do While Not Efof()) 23*Programa de Altas (Seek) 25*Programa Altas (Scan For) 26*Programa Modificar 27FORMULARIOS 29Uso de formularios 30Propiedades de formularios 32Insertar Iconos 46Lost Focus y Set Focus 48Programando botones de comando 49Nuevo formulario 52*Programa separación de nombres 53*Programa digito verificador de cedula 54PROYECTOS 56Tablas de proyectos 60Diseño de tablas 62Relación de tablas 69Proyectos-formulario Consulta 71Relacionando formulario con la base de datos 79*Programa Consulta 83Proyectos-Formulario Altas 84Relacionando formulario con la base de datos 86*Programa Altas 90Proyectos-Formulario Actualización 91*Programa Actualización 93Proyectos-Formulario Eliminación 95*Programa Eliminación 96MENUS 98Diseño de Menus 98Iconos en el menú (Diseño) 108Construir ejecutable de menú 117Generando el menú 119Formulario del menú 120Programando ejecutable del menú (Do <nombremenu.mpr> with this, .t.) 124REPORTES 126Creación y diseño de Reportes 127Relacionando base de datos y los reportes 134Label 137Poniendo la fecha del sistema en el reporte 138Creando variables personalizadas 139Print Preview (Vista Previa) 144Poniendo números de página 145Reportes usando tres tablas 149

Page 174: Programacion Visual Fox 9

Universidad Autónoma de Quito Jesús Cisneros Valle

Relacionando las tablas 153Importantísimo 154Sumando en reportes 157Programando un label 158Reporte 2 160Data grouping 162Poniendo el reporte en el menú 165Importante 168Visualizando el menú 171Ejercicios resueltosIndice 173

Jesús Cisneros Valle