2010 Guía Práctica de Visual Fox Pro 9.0
Ing. Maynor Guillermo Reynado Universidad Técnica Latinoamericana 22/04/2010
Crear la estructura de directorio
Clic en Inicio Clic en Equipo Ubicarnos en el disco local Crear una carpeta con el nombre de Sistema de RA
Entrar a la carpeta de Sistema de RA Crear cuatro subdirectorios o Bases o Formularios o ImĂĄgenes o Reportes
Abrir el programa de Visual Fox Pro 9.0
Clic en el icono de Zorro En la lĂnea de comando digitamos Close all y enter Luego digitamos clear para limpiar
2
Crear un proyecto en Visual Fox Pro 9.0 Ejecutar el programa y dar clic en la opci贸n Nuevo (New)
Seleccionamos Proyecto (project) y damos clic en Nuevo archivo (New file)
Seleccionamos la ubicaci贸n del proyecto (C:\Sistema de RA) y le asignamos nombre (SistemaRA), luego damos clic en el bot贸n Guardar. En el administrador de proyecto es donde nosotros vamos administrar la base da datos, tablas, formularios, etc.
3
Crear una base de datos En al administrador de proyectos nos ubicamos en Databases Damos clic en el bot贸n New Damos Clic en New Database
En la ventana de dialogo localizamos la ubicaci贸n donde vamos a guardar la base de datos (C:\Sistema de RA\Bases) Luego damos clic en el bot贸n Guardar
4
Crear Tablas. En el administrador de proyectos me ubico sobre la base de datos que acabo de crear (registroacademico), extiendo el árbol de contenido Clic sobre tablas Clic sobre New Clic sobre New Table Localizamos la ubicacion de la table (C:\Sistema de RA\Bases) Asignamos el nombre a la tabla Clic en el botón guardar Y comenzamos a diseñar las tablas que a continuación se presenta la estructura de cada una.
Nota: para la práctica se crearan 4 tablas con los siguientes nombres Maestrodealumnos Maestrodecarreras Maestrodematerias Maestroacademico Repetir los pasos para las tablas restantes.
5
Estructura de las bases de Datos.
6
Nota: Al aplicar índices a los campos debemos de configura el tipo, dando clic en la ficha de Índices y seleccionando el tipo “Regular”. Los índices nos sirven para identificar los campos llaves y poder relacionar tablas entre si.
7
Crear Formulario Dar clic en la pestaña de Documentos del administrador de proyectos, seleccionar formularios y dar clic en el botón New y luego en New Form.
En la área de trabajo del formulario dar clic derecho y seleccionar la opción de Entorno de Datos para trabaja con las tablas que sean necesario para la funcionabilidad del mismo.
Localizamos la tabla con la que vamos a trabaja el formulario, la seleccionamos y damos clic en el botón agregar, inmediatamente aparecerá en el entorno de datos del formulario.
8
Al tener la tabla en el entorno de trabajo nos ubicamos en Fields y con clic sostenido arrastramos hasta el formulario para ingresar los campos de la tabla. Luego los ordenamos y distribuimos como mejor consideremos.
Objetos del Formulario: Etiquetas: 19 Cajas de Texto: 19 Botones: 8
9
Despu茅s de insertar los campos al formulario debemos remover la tabla del entorno de trabajo, con clic derecho sobre la tabla y la opci贸n remover.
Luego Vamos a alinear las etiquetas, cajas de texto y botones. Herramienta para alinear
Controles de formulario
Propiedades que vamos a cambiar de algunos objetos: Captio: Nombre para mostrar FontBold: Negrita Backcolor: Color de fondo Enabled: Deshabilitado
10
Hasta este momento tenemos dise帽ado nuestro formulario, debemos guardarlo en la carpeta de formulario que esta dentro de Sistema de RA con el nombre de mantenimiento de alumnos.
C贸digos de los objetos y eventos del Formulario de Datos Personales. EVENTO INIT: THISFORM.TXtCodalu.Value='' THISFORM.TXtNombre.ValUE='' THISFORM.TXtApellidos.Value='' THISFORM.TXtCodcarrera.Value='' THISFORM.TXtDireccion.Value='' THISFORM.TXtDui.Value='' THISFORM.TXtEdad.Value='' THISFORM.TXtEmail.Value='' THISFORM.TXtFechanac.Value='' THISFORM.TXtInstitutopre.Value='' THISFORM.TXtIsss.Value='' THISFORM.TXTLugarnac.Value='' THISFORM.TXtMadre.Value='' THISFORM.TXtMovil.Value='' THISFORM.TXtNit.Value='' THISFORM.TXtNup.Value='' THISFORM.TXtPadre.Value='' THISFORM.TXtTelefono.Value='' THISFORM.TXtTitulo.Value=''
11
EVENTO LOAD CLOSE DATABASES SET DATE FRENCH SET CENTURY ON SET SAFETY OFF SET ECHO OFF SET TALK OFF SET DELETED ON USE USE "\sistema de ra\bases\maestrodealumnos" IN 0 SHARED ORDER CODALU SET MULTILOCKS ON = CURSORSETPROP('BUFFERING',5,'MAESTRODEALUMNOS')
BOTON NUEVO: SELECT MAESTRODEALUMNOS * CREANDO UN REGISTRO EN BLANCO APPEND BLANK *LIMPIANDO LOS CAMPOS THISFORM.TXtCodalu.Value='' THISFORM.TXtNombre.ValUE='' THISFORM.TXtApellidos.Value='' THISFORM.TXtCodcarrera.Value='' THISFORM.TXtDireccion.Value='' THISFORM.TXtDui.Value='' THISFORM.TXtEdad.Value='' THISFORM.TXtEmail.Value='' THISFORM.TXtFechanac.Value='' THISFORM.TXtInstitutopre.Value='' THISFORM.TXtIsss.Value='' THISFORM.TXTLugarnac.Value='' THISFORM.TXtMadre.Value='' THISFORM.TXtMovil.Value='' THISFORM.TXtNit.Value='' THISFORM.TXtNup.Value='' THISFORM.TXtPadre.Value='' THISFORM.TXtTelefono.Value='' THISFORM.TXtTitulo.Value='' * HABILITANDO LOS CAMPOS THISFORM.TXtCodalu.ENABLED=.T. THISFORM.TXtNombre.ENABLED=.T. THISFORM.TXtApellidos.ENABLED=.T. THISFORM.TXtCodcarrera.ENABLED=.T. THISFORM.TXtDireccion.ENABLED=.T. THISFORM.TXtDui.ENABLED=.T. THISFORM.TXtEdad.ENABLED=.T. THISFORM.TXtEmail.ENABLED=.T. THISFORM.TXtFechanac.ENABLED=.T. THISFORM.TXtInstitutopre.ENABLED=.T. THISFORM.TXtIsss.ENABLED=.T. THISFORM.TXTLugarnac.ENABLED=.T. THISFORM.TXtMadre.ENABLED=.T. THISFORM.TXtMovil.ENABLED=.T. THISFORM.TXtNit.ENABLED=.T. THISFORM.TXtNup.ENABLED=.T. THISFORM.TXtPadre.ENABLED=.T. THISFORM.TXtTelefono.ENABLED=.T. THISFORM.TXtTitulo.ENABLED=.T.
12
* POSICIONAMIENTO EN EL PRIMER CAMPO THISFORM.TXtCodalu.SetFocus() * ACTUALIZANDO THISFORM.Refresh()
BOTON GUARDAR: SELECT MAESTRODEALUMNOS TABLEUPDATE() THISFORM.TXtCodalu.ENABLED=.F. THISFORM.TXtNombre.ENABLED=.F. THISFORM.TXtApellidos.ENABLED=.F. THISFORM.TXtCodcarrera.ENABLED=.F. THISFORM.TXtDireccion.ENABLED=.F. THISFORM.TXtDui.ENABLED=.F. THISFORM.TXtEdad.ENABLED=.F. THISFORM.TXtEmail.ENABLED=.F. THISFORM.TXtFechanac.ENABLED=.F. THISFORM.TXtInstitutopre.ENABLED=.F. THISFORM.TXtIsss.ENABLED=.F. THISFORM.TXTLugarnac.ENABLED=.F. THISFORM.TXtMadre.ENABLED=.F. THISFORM.TXtMovil.ENABLED=.F. THISFORM.TXtNit.ENABLED=.F. THISFORM.TXtNup.ENABLED=.F. THISFORM.TXtPadre.ENABLED=.F. THISFORM.TXtTelefono.ENABLED=.F. THISFORM.TXtTitulo.ENABLED=.F.
BOTON ELIMINAR: IF !DELETED() E=MESSAGEBOX('Esta Seguro de Eliminar el Registro',4+32+256,'Eliminar') IF e=6 DELETE ELSE RECALL ENDIF ENDIF
BOTON SALIR: SELECT 1 USE THISFORM.Release()
BOTON PRIMERO: GO top thisform.Refresh()
BOTON ANTERIOR: IF !BOF() SKIP-1 THISFORM.Refresh() ELSE
13
GO BOTTOM THISFORM.Refresh() ENDIF
BOTON SIGUIENTE: IF !EOF() SKIP+1 THISFORM.Refresh() ELSE GO TOP THISFORM.Refresh() ENDIF
BOTON ULTIMO: GO BOTTOM thisform.refRESH() Para ejecutar el formulario presionamos la combinaci贸n Ctrl + E y nos deber铆a de quedar de la siguiente forma.
LOAD SET SET SET SET
DATE FRENCH CENTURY ON SAFETY OFF ECHO OFF
14
SET TALK OFF SET DELETED ON *ABRIENDO TABLAS CLOSE DATABASES USE USE "\sistema de ra\bases\maestrodecarreras" IN 0 SHARED ORDER CODCARRERA SET MULTILOCKS ON = CURSORSETPROP('BUFFERING',5,'MAESTRODECARRERAS') INIT * LIMPIAR CAMPOS THISFORM.TXtCarrera.Value='' THISFORM.TXtCodcarrera2.Value='' BOTON NUEVO SELECT MAESTRODECARRERAS * CREANDO UN REGISTRO EN BLANCO APPEND BLANK * LIMPIAR CAMPOS THISFORM.TXtCarrera.Value='' THISFORM.TXtCodcarrera2.Value='' *HABILITAR CAMPOS THISFORM.TXtCarrera.Enabled=.T. THISFORM.TXtCodcarrera2.Enabled= .T. * POSICIONAMIENTO EN EL PRIMER CAMPO THISFORM.TXtCodCARRERA2.SetFocus() * ACTUALIZANDO THISFORM.Refresh() BOTNO GUARDAR *GUARDADOS CAMBIOS SELECT MAESTRODECARRERAS TABLEUPDATE() *DESHABILITAR CAMPOS THISFORM.TXtCarrera.Enabled=.F. THISFORM.TXtCodcarrera2.Enabled= .F. BOTNO ELIMINAR IF !DELETED() E=MESSAGEBOX('Esta Seguro de Eliminar el Registro',4+32+256,'Eliminar') IF e=6
15
DELETE ELSE RECALL ENDIF ENDIF BOTON SALIR select 1 USE THISFORM.Release()
LOAD SET SET SET SET SET SET
DATE FRENCH CENTURY ON SAFETY OFF ECHO OFF TALK OFF DELETED ON
*HACIENDO VARIABLES PUBLICAS PUBLIC XCARRERA *ABRIENDO TABLAS CLOSE DATABASES USE USE "\sistema de ra\bases\maestrodematerias" IN 0 SHARED ORDER CODMATE USE "\sistema de ra\bases\maestrodecarreras" IN 0 SHARED ORDER CODCARRERA
16
SET MULTILOCKS ON = CURSORSETPROP('BUFFERING',5,'MAESTRODEMATERIAS') INIT *LIMPIANDO CAMPOS THISFORM.TXTCodcarrera.Value='' THISFORM.TXtCodmate.Value='' THISFORM.TXtCodprerequi.Value='' THISFORM.TXTMateria.Value='' THISFORM.TXTPlan.VALUE='' THISFORM.TXtPrerequisito.Value='' THISFORM.TXTUv.Value=0 THISFORM.Text1.ValUE='' *INICIALIZANDO VARIABLES STORE '' TO XCARRERA VALID TXTCODCARRE *BUSCAR REGISTRO EN OTRA TABLA IF !EMPTY (THIS.VALUE) SELECT MAESTRODECARRERAS SEEK ALLTRIM(THIS.Value) IF FOUND() XCARRERA= ALLTRIM(MAESTRODECARRERAS.CARRERA) ELSE WAIT WINDOWS 'EL CODIGO DE CARRERA ESTA INCORRECTA, INTENTE DE NUEVO' RETURN 0 ENDIF ELSE WAIT WINDOWS 'DIGITE EL CODIGO DE LA CARRERA' RETURN 0 ENDIF THISFORM.Refresh() BOTON NUEVO SELECT MAESTRODEMATERIAS * CREANDO UN REGISTRO EN BLANCO APPEND BLANK *LIMPIANDO LOS CAMPOS THISFORM.TXTCodcarrera.Value='' THISFORM.TXtCodmate.Value='' THISFORM.TXtCodprerequi.Value='' THISFORM.TXTMateria.Value='' THISFORM.TXTPlan.VALUE='' THISFORM.TXtPrerequisito.Value='' THISFORM.TXTUv.Value=0
17
* HABILITANDO LOS CAMPOS THISFORM.TXTCodcarrera.ENABLED=.T. THISFORM.TXtCodmate.ENABLED=.T. THISFORM.TXtCodprerequi.ENABLED=.T. THISFORM.TXTMateria.ENABLED=.T. THISFORM.TXTPlan.ENABLED=.T. THISFORM.TXtPrerequisito.ENABLED=.T. THISFORM.TXTUv.ENABLED=.T. * POSICIONAMIENTO EN EL PRIMER CAMPO THISFORM.TXtCodmate.SetFocus() * ACTUALIZANDO THISFORM.Refresh() BOTON GUARDAR *GUARDADOS CAMBIOS SELECT MAESTRODEMATERIAS TABLEUPDATE() *DASHABILITANDO CAMPOS THISFORM.TXTCodcarrera.ENABLED=.F. THISFORM.TXtCodmate.ENABLED=.F. THISFORM.TXtCodprerequi.ENABLED=.F. THISFORM.TXTMateria.ENABLED=.F. THISFORM.TXTPlan.ENABLED=.F. THISFORM.TXtPrerequisito.ENABLED=.F. THISFORM.TXTUv.ENABLED=.F. BOTON ELIMINAR IF !DELETED() E=MESSAGEBOX('Esta Seguro de Eliminar el Registro',4+32+256,'Eliminar') IF e=6 DELETE ELSE RECALL ENDIF ENDIF BOTNO SALIR select 1 USE SELECT 2 USE THISFORM.Release()
18
LOAD CLOSE DATABASES SET DATE FRENCH SET CENTURY ON SET SAFETY OFF SET ECHO OFF SET TALK OFF SET DELETED ON PUBLIC XNOMBRE, XCARRERA, XMATERIA, XPROMEDIO, XESTADO USE USE "\sistema USE "\sistema USE "\sistema USE "\sistema CODCARRERA
de de de de
ra\bases\maestroacademico" IN 0 SHARED ORDER CODALU ra\bases\maestrodealumnos" IN 0 SHARED ORDER CODALU ra\bases\maestrodeMATERIAS" IN 0 SHARED ORDER CODMATE ra\bases\maestrodeCARRERAS" IN 0 SHARED ORDER
SET MULTILOCKS ON = CURSORSETPROP('BUFFERING',5,'MAESTROACADEMICO') INIT STORE '' TO XNOMBRE, XCARRERA, XMATERIA, XESTADO STORE 0 TO XPROMEDIO CREAMOS UN METODO PARA EL CALCULO DEL ESTADO. CLIC EN TOOLS CLIC EN NEW METHOD LE ASIGNAMOS NOMBRE Y DESCRIPCION
19
CALCULO SELECT MAESTROACADEMICO REPLACE MAESTROACADEMICO.PROMEDIO WITH ROUND((MAESTROACADEMICO.NOTA1+MAESTROACADEMICO.NOTA2+MAESTROACADEMICO. NOTA3; +MAESTROACADEMICO.NOTA4+MAESTROACADEMICO.NOTA5)/5,2) IF MAESTROACADEMICO.PROMEDIO >=6 REPLACE MAESTROACADEMICO.ESTADO WITH 'APROBADO' ELSE REPLACE MAESTROACADEMICO.ESTADO WITH 'REPROBADO' ENDIF REFRESH THISFORM.Calculo() TXTCODALU IF !EMPTY (THIS.VALUE) SELECT MAESTRODEALUMNOS SEEK ALLTRIM(THIS.Value) IF FOUND() XNOMBRE= ALLTRIM(MAESTRODEALUMNOS.NOMBRE)+ ALLTRIM(MAESTRODEALUMNOS.APELLIDOS) ELSE WAIT WINDOWS 'EL CODIGO DEL ALUMNO ESTA INCORRECTO, INTENTE DE NUEVO' RETURN 0 ENDIF ELSE WAIT WINDOWS 'DIGITE EL CODIGO DEL ALUMNO' RETURN 0 ENDIF THISFORM.Refresh() TXTCODCARRE IF !EMPTY (THIS.VALUE)
20
SELECT MAESTRODECARRERAS SEEK ALLTRIM(THIS.Value) IF FOUND() XCARRERA= ALLTRIM(MAESTRODECARRERAS.CARRERA) ELSE WAIT WINDOWS 'EL CODIGO DE CARRERA ESTA INCORRECTA, INTENTE DE NUEVO' RETURN 0 ENDIF ELSE WAIT WINDOWS 'DIGITE EL CODIGO DE LA CARRERA' RETURN 0 ENDIF THISFORM.Refresh() TXTCODMATE IF !EMPTY (THIS.VALUE) SELECT MAESTRODEMATERIAS SEEK ALLTRIM(THIS.Value) IF FOUND() XMATERIA= ALLTRIM(MAESTRODEMATERIAS.MATERIA) ELSE WAIT WINDOWS 'EL CODIGO DE MATERIA ESTA INCORRECTA, INTENTE DE NUEVO' RETURN 0 ENDIF ELSE WAIT WINDOWS 'DIGITE EL CODIGO DE LA MATERIA' RETURN 0 ENDIF THISFORM.Refresh() BOTON NUEVO SELECT MAESTROACADEMICO * CREANDO UN REGISTRO EN BLANCO APPEND BLANK * LIMPIAR CAMPOS THISFORM.TXtCodalu.Value='' THISFORM.TExt6.ValUE='' THISFORM.TXtCodcarrera.Value='' THISFORM.TExt7.Value='' THISFORM.TXtCodmate.Value='' THISFORM.TExt8.Value='' THISFORM.TXtA単o.Value='' THISFORM.TXtCiclo.Value='' THISFORM.TXtEstado.Value='' THISFORM.TXtFecha.Value='' THISFORM.TXtNota1.Value=0 THISFORM.TXtNota2.Value=0 THISFORM.TXtNota3.Value=0 THISFORM.TXtNota4.Value=0
21
THISFORM.TXtNota5.Value=0 THISFORM.TXTPromedio.Value=0 *HABILITAR CAMPOS THISFORM.TXtCodalu.ENABLED=.T. THISFORM.TXtCodcarrera.ENABLED=.T. THISFORM.TXtCodmate.ENABLED=.T. THISFORM.TXtA単o.ENABLED=.T. THISFORM.TXtCiclo.ENABLED=.T. THISFORM.TXtFecha.ENABLED=.T. THISFORM.TXtNota1.ENABLED=.T. THISFORM.TXtNota2.ENABLED=.T. THISFORM.TXtNota3.ENABLED=.T. THISFORM.TXtNota4.ENABLED=.T. THISFORM.TXtNota5.ENABLED=.T. * POSICIONAMIENTO EN EL PRIMER CAMPO THISFORM.TXtCodALU.SetFocus() * ACTUALIZANDO THISFORM.Refresh() BOTON GUARDAR *GUARDADOS CAMBIOS SELECT MAESTROACADEMICO TABLEUPDATE() *DESHABILITAR CAMPOS THISFORM.TXtCodalu.ENABLED=.F. THISFORM.TXtCodcarrera.ENABLED=.F. THISFORM.TXtCodmate.ENABLED=.F. THISFORM.TXtA単o.ENABLED=.F. THISFORM.TXtCiclo.ENABLED=.F. THISFORM.TXtFecha.ENABLED=.F. THISFORM.TXtNota1.ENABLED=.F. THISFORM.TXtNota2.ENABLED=.F. THISFORM.TXtNota3.ENABLED=.F. THISFORM.TXtNota4.ENABLED=.F. THISFORM.TXtNota5.ENABLED=.F. BOTON ELIMINAR IF !DELETED() E=MESSAGEBOX('Esta Seguro de Eliminar el Registro',4+32+256,'Eliminar') IF e=6 DELETE ELSE RECALL ENDIF ENDIF
22
BOTNO SALIR select 1 USE SELECT 2 USE SELECT 3 USE SELECT 4 use CLOSE DATABASES THISFORM.Release()
CREACION DE MENU
23
DO FORM "\sistema de ra\formularios\mantenimiento de alumnos" DO FORM "\sistema de ra\formularios\mantenimiento de materia" DO FORM "\sistema de ra\formularios\mantenimiento de carreras" DO FORM "\sistema de ra\formularios\mantenimiento academico"
CODIGO PRINCIPAL
CLOSE DATABASES SET DELETED OFF SET PATH TO \sistema de ra\; \sistema de ra\BASES\;\sistema de ra\FORMULARIOS\; \sistema de ra\MENU\; \sistema de ra\PROGRAMAS\;\sistema de ra\IMAGENES\; \sistema de ra\REPORTES\;\sistema de ra\TEMP\ SET DEFAULT TO "\sistema de ra\"
24
_SCREEN.AutoCenter= .T. _SCREEN.BACKCOLOR=RGB(192,192,192) _SCREEN.Caption='SISTEMA DE REGISTRO ACADEMICO' _SCREEN.WindowState= 2 _SCREEN.PICTURE="\sistema de ra\IMAGENES\WEB.jpg" @ 20.615,01.200 SAY 'SISTEMA DESARROLLADO PARA:' ; FONT 'ARIAL', 20; STYLE 'BT'; COLOR RGB(0,0,255,,,,) @ 23.615,00.800 SAY 'LABORATORIO DE TIC:' ; FONT 'ARIAL', 20; STYLE 'BT'; COLOR RGB(0,0,255,,,,) @ 30.950,01.000 SAY 'DESARROLLADO POR ING. MAYNOR GUILLERMO REYNADO' ; FONT 'ARIAL', 20; STYLE 'BT'; COLOR RGB(0,0,255,,,,) DO '\sistema de ra\menu\menu principal.MPR' READ EVENTS CLEAR READ RELEASE memory QUIT CREAR EL ARCHIVO EJECUTABLE
25
26