Monografias | Visual FoxProVisual FoxProResumen: Es un sistema orientado a objeto para la generación de Base de Datos y el desarrollo de aplicaciones. Curso de Visual Fox Pro. Visual FoxPro Es un sistema orientado a objeto para la generación de Basede
Datos y el desarrollo de aplicaciones. Desde Visual FoxPro podemos crear Formularios, Base de Datos,
Informes, Vistas, Proyectos entre otros. Podemos crear los elementos de
unproyecto por separado y luego agregarlos a un proyecto existente o crear
unproyecto y desde éste ir agregando los elemento que deba contener.
Cuandocreamos un proyecto debemos crear una carpeta de trabajo en la se guarde
elproyecto. Para indicarle a Visual Foxpro en cual directorio debe buscar
losarchivos del proyecto debemos indicarle el directorio por defecto; en le
menúHerramientas en la opción de Opciones en la ficha de Archivos, aparecerá
laruta por defecto el directorio de Vfp cambiamos este directorio por la
carpetaen la que está nuestro proyecto y seleccionamos Aceptar. Desde
laVentana de Comandos se utiliza el comando SET DEFAULT nombrederuta por
ejemplo:Set default c:\publico\practica (La Ventana de Comandos será explicada
masadelante) CREACION DE LA BASE DE DATOS Nuevo La ventana del Diseñador de Base da datos aparecerá : Puede utilizar la barra de herramientas del Diseñador parael
control de la Base de Datos. Descripción de los botones de la Barra de herramientas (Diseñadorde
Base de Datos): Crear una nueva tabla. Agregar una tabla existente Eliminar una tabla seleccionada Modifica una tabla seleccionada Creación de Vistas remotas Creación de Vistas locales Editar Procedimientos almacenados en la Base de Datos Creación de Conexiones con vistas remotas Examinar el contenido la tabla (BROWSE) Los nombres de las tablas deben ser de una a ocho caracteresde largo y deben tener la extensión predeterminada .dbf (database file: archivode Base de Datos) Crear una nueva tabla: 1. Click en el botón de Nueva tabla, aparecerá la ventanaNueva Tabla
La ventana del Diseñador de tablas aparecerá enpantalla: Esta es la parte mas importante de la tabla, es aquí dondese define la estructura de datos que contendrá dicha tabla. El primer paso esdefinir los campos, tipos, tamaño, Formato y Reglas de validación.
Igual que en las versiones anteriores, la definición de campos es igual.
Se introduce el nombre del campo (name) el tipo de datos que
soportará (Type) y el tamaño. Los nombres de los campos pueden tener
hasta 254 caracteres sin espacios en blanco
Format (Formato): Es el formato de salida del campo, ejemplo si fuera númerico 9,999.99 o si fuera carácter !!!!!!!!!!!!, para que solo acepte mayusculas Input mask (Máscara de entrada): Igual que el Format, lo único que es para la entrada de datos. Captión (Título): Descripción mas precisa del campo, es de utilidad al diseñar los Formularios.
La validación son triggers o eventos que se ejecutan a nivel de campo.Ejemplo: una validación de un campo que solo acepte números positivos. (id> 0)
Rule (Regla): Es la regla de validación, ejemplo: id> 0, si queremos que acepte valores positivos. Message(Mensaje): Es el mensaje personalizado quequeremos que aparezca en pantalla a la hora de violarse la regla de validacióndel campo. Ejemplo : ‘Solo se aceptan números positivos’ (nota: el textodebe escribirse entre comillas). Default Value : Valor por defecto del campo.(nota: hay que respetar el tipo de dato del Campo) Luego de hacer la definición de los campos, pasamos a ladefinición de Indices de la tabla, que será muy importante a la hora de crearlas relaciones entre las tablas. Los índices facilitan la ubicaciòn en la tabla de unregistro especìfico asì como tambien determinan el tipo de relaciones queexisten entre las tablas Los índices pueden ser CDX o IDX: Los índices .IDX son índices compactos se crean:"INDEX ON estado to estado compact" crea un archivo de índice llamadoestado.cdx. Desafortunadamente si alguna vez abre la tabla sin el índice y añadeun registro, éste no se actualizará y tendrá que ser recreado. Los índices .CDX se crean: "INDEX ON estado tagestado" . Estos archivos se abren automáticamente junto con las tablas. La estructura interna de los IDX y los CDX es diferente.
Introducir el Nombre del archivo índice. Es conocido también como TAG
(etiqueta).
Primary : Llave primaria. Candidate : Llave candidata Unique : Llave única. Regular : Llave foránea. El índice Primary o Principal: garantiza que solo seintroduzcan valores únicos en un campo y determina el orden en el que seprocesan los registros. Cada tabla puede tener únicamente un índice Principal. El índice Candidate o Candidato: puede ser un candidato parautilizarse como índice principal, refuerza la unicidad de los valores. El índice Unique o Unico: almacena un lista de cada valor únicoen la tabla índices. El índice Regular o Normal: puede ser utilizado para ordenary buscar datos en consultas e informes. No refuerza la unicidad de los datos c. Nombre de la Expresión Nombre de los campos que conforman la clave primaria: Ejemplo : id, o si son varios campos : id + linea Nota: si los campos no son del mismo hay que forzarlos altipo de dato deseado, ejemplo: si id es carácter y linea, entocesel nombre de la expresion sería: Id + STR(linea) STR() convierte de número a carácter y VAL() convierte decarácter a númerico. Después de detallar los índices, se define los eventos deLa validación a nivel de registro y los eventos que se ejecuten a la hora deInsertar un registro, de actualizar o borrar.
Visual Foxpro tiene 37.767 espacios de trabajo, llamadas áreasde trabajo porque una tabla deber ser seleccionada para volverla la tablaactual. Cuando se inicia Visual FoxPro el área de trabajo es la 1 por omisión.Para abrir una tabla en el área de trabajo 1 cuando ninguna otra tabla estáabierta, tecleamos en la Ventana de Comandos: USE nombretabla No necesariamente debe estar en un área de trabajo paraabrir una tabla puede especificar: USE nombretabla IN 3 Sin embargo con mas frecuencia se utiliza: USE nombre tablaIN 0 lo que significa encuentre el área de trabajo siguiente en la que no seencuentre abierta una tabla y abre nombretabla ahí. Cuando se utiliza una tabla Visual FoxPro le asigna un alias,un nombre de hasta 10 caracteres con el cual se refiere a ella en el programa,generalmente el alias es el mismo nombre que el de la tabla Para crear una tabla desde la Ventana de Comandos: CREATE<nombretabla> Para modificar una tabla Administrador de Proyectos | Datos |Base de Datos| Tablas | Seleccionamos la tabla | Modificar. Desde la Ventana de Comandos: Use tabla | MODIFY ESTRUCTURE En Visual FoxPro existe la Ventana de comandos ésta fungecomo la ventana de MSDOS que puede utilizarse desde Windows con la finalidad depermitir utilizar comandos del lenguaje para ejecutar algunas funciones. Porejemplo desde Windows desde el explorador podemos examinar el contenido de undisckette acción que también podemos hacer si abrimos una ventana de MSDOS ytecleamos DIR A:. Es decir a pesar de que se pueden tener acceso a la mayoríade los elementos de Visual FoxPro desde el menú muchas veces es útilsimplemente teclear un comando. Para activar la Ventana de Comandos auque ella aparece pordefecto en el en el entorno de trabajo tecleamos Ctrl. F2 Para agregar registros a una tabla : Administrador deProyectos | Datos | Base de Datos | Tablas | Seleccionamos la tabla | Examinar yluego en el menú Ver | Modo Añadir Desde la Ventana de Comandos: Teniendo la tabla activaescribimos APPEND. Para ver los registros de una tabla: Administrador deProyectos | Datos | Base de Datos | Tablas | Seleccionamos la tabla | Examinar. Desde la Ventana de Comandos: teniendo la tabla activaescribimos BROWSE. En Visual Foxpro los registros de una tabla pueden borrarse lógicamentey físicamente. Para borrar lógicamente un registro : Administrador deProyectos | Base de Datos | Tablas | Seleccionamos la Tabla | Examinar luego conel ratón hacemos Click en la primera columna de izquierda a derecha, la columnaen la celda seleccionada se colocará de color negro. Desde la Ventana de Comandos: DELETE (Teniendo seleccionadoel registro) Para ver los registros de una tabla sin que aparezcan losregistros borrados lógicamente: Primero desde la Ventana de Comandos debemos teclear : SETDELETE ON y luego desde el Administrador de Proyectos | Datos | Base de Datos |Tablas | Examinar . También desde la Ventana de Comandos con el comando BROWSE Si queremos incluso los registros borrados lógicamentetecleamos en la Ventana de Comandos SET DELETE OFF y luego tecleamos BROWSE. Para desmarcar los registros borrados lógicamente (desde laVentana de Comandos): Suponemos que anteriormente habían sido borrados losempleados cuyo sueldo era 15000: DELETE FOR sueldo=15000 Para desmarcar estos registros : RECALL FOR sueldo=15000 Para borrar físicamente registros de una tabla primero debenestar borrados lógicamente Y luego desde la Ventana de Comandos tecleamos el comandoPACK, para utilizar este comando la tabla debe ser abierta en modo exclusivo USEnombretabla EXCLUSIVE . Algunos comandos para manipular tablas: List for cedula="12434213" Muestra en el entorno detrabajo la informacion del registro que cumpla con esta condición. List fields cedula,nombre. Muestra en el entorno de trabajotodas las cédulas y nombres de la tabla seleccionada. Sum cantidad (suponemos que la tabla activa tiene un campo detipo numérico llamado cantidad). Muestra en el entorno de trabajo la suma delcampo cantidad de la tabla activa. Sum cantidad for cantidad>1000 Obtiene la suma de loscampos cantidad de los registros que cumplen con la condición indicada Count to Registros for nota>15 (quermos contar losregistros de una tabla cuyo campo nota sea mayor a 15 puntos, guardar este totalen una variable llamada Registros ) Si luego queremos examinar el contenido dela variable Registros tecleamos ?Registros (signo de interrogación que cierra yluego el nombre de la variable que queremos examinar) Comandos SEEK y LOCATE Los comandos Locate y Seek permiten buscar un registro enparticular. Locate funciona en cualquier campo dentro de una tabla ya sea queesté indexada o no Seek da por hecho que la clave que está buscando encaja conel índice actual. Locate for nombre="Luis" La tabla activa posicionasu cursor el registro que cumpla con esta condiciòn. Seek("Luis") ERROR Set order to nombre (CORRECTO) Primero se debe activar el ìndice Seek("Luis") y luego hacer la bùsqueda La funciòn Set filter: Esta funciòn provoca que Visual FoxPro se comporte como sino existieran los registros que no coinciden con la expresiòn de filtro, y enlas operaciones que se realicen solo se tomaràn en cuenta las registros quecumplen con la condiciòn del filtro actual. Set filter to nota=15 Para desactivar un filtro colocamos set filter to y para
Como moverse en una tabla de VFP Skip mueve el puntero hacia delante un registro Skip - 1 mueve el puntero hacia tras un registro Go top mueve el puntero hacia el primer registro de la tabla Go bottom mueve el puntero hacia el ùltimo registro de latabla. Go 3 mueve el puntero hacia el registro #3 de la tabla Operaciones Ciclìcas: Existen una cantidad de mecanismos de ciclos que puedeutilizar para moverse a travès de una tabla. El principal es SCAN Por ejemplo: Select Cliente (No hay necesidad de hacer go top) Scan Sueldo=sueldo + 5000 Endscan Las lìneas de còdigo entre Scan y Endscan se ejecutaràn 1vez por cada registro de la tabla. Lo mismo se puede hacer con : Select Cliente Go top Do While not eof() Sueldo=sueldo+5000 Skip Enddo La instrucciòn FOR: For i=1 to 10 Cont=cont+1; endfor Para eliminar una tabla: Para eliminar una tabla con los indices principales,valores predeterminados y reglas de validaciòn asociadas a la tabla use elcomando DROP nombretabla por ejemplo: Open Database inscripciones Drop table alumnos Uso de Funciones: Str() convierte a String Val convierte a nùmero Date() devuelve la fecha del sistema Hoy=Date()
GetDir() Obtiene el directorio por defecto Cd GetDir Imprime el dìa de la semana ?Dow(Date()) Len() Devuelve el nùmero de caracteres de una expresiònde caracteres Recno() Obtiene la posiciòn de un registro Para cerrar abierta en el àrea de trabajo actual utilizamosel comando USE Uso de Procedimientos y Funciones: Procedure Nombreprocedure *Aquí va el còdigo ejecutable endproc Function Nombrefuncion *aquí va el còdigo ejecutable endfunc El valor devuelto de forma predeterminada es verdadero (.t.)pero puede utilizarse el comando Return Function semanas(dDate) Return dDate + 14 Endfunc Si se incluyen los procedimientos y funciones en unarchivo de programa disttinto, podrà hacer accesibles estos procedimientos yfunciones desde su programa si utiliza el Set procedure to. Por ejemplo: Sitiene un archivo llamado: FunProc.prg se utiliza el siguiente comando:
Set Procedure to FunProc.prg Llamado a un procedimiento o a una fuciòn: -Utilizar el Do: Do Miproc -Incluir delante del nombre de la funciòn un signo (=) eincluir parentesis despues del nombre de la funciòn. Por ejemplo =Mifuncion() Envìo de valores a un Procedimiento o a una Funcion: Procedure Nombreprocedimiento(eString) *La linea siguiente muestra un mensaje messagebox("Mi proc" + eString) endproc El paso de paràmetros a una funciòn es exactamente igual. Para invocar a un procedimiento: Do nombreprocedimiento with parametro ò =NombreFunciòn(paràmetro)
Con mùltiples paràmetros:
Procedure nombreproc (dDate, eString,Ntimes) *Codigo ejecutable endproc En la llamada: do nombreproc with Date(), "Hola",10 Comprobaciòn de Paràmetros en un Procedimiento o una funciòn Function Semanas (dDate) If type("dDate")="D" Return dDate + 14 Else Messagebox("Requiere un paràmetro de fecha") Return{} &&Devuelve una fecha vacìa endif endfunc Procedure valores (cStore, dDate2, nDatos) If parameters()<3 Messagebox("No se han pasado suficientes paràmetros") Return .f. Else If parameters()=3 *Operar con los paràmetros endif endif endproc Si se especifican dos paràmetros pero llamò alprocedimiento con tres paràmetros, obtendrà un mensaje de erros. Pero si unprocedimiento espera mas paràmetros de los que recibe, los paràmetrosadicionales se inicializaràn como falso (.F.)
Ejercicio Práctico: Cree la siguiente base de datos con el nombre de scott.
RELACIONES ENTRE TABLAS: Las relaciones mas comunes entre tablas se definen : De uno a uno : Ejemplo de una llave primaria a otra llaveprimaria De uno a muchos : Ejemplo de una llave primaria a unaRegular o Foránea. Las relaciones entre tablas se crean arrastrando la llave dela tabla a la llave de otra tabla. La figura muestra una relación entre las tablas región ydepartamento, la relación se leería así : "Una región tiene muchosdepartamentos". Generación de integridad referencial Reglas que rigen la coherencia de datos, específicamente lasrelaciones entre las claves principal y externa de claves de tablas distintas.Visual Foxpro Resuelve la Integridad Referencial mediante reglas a nivel decampo y a nivel de registro definidas por el usuario. El Generador de laIntegridad Referencial le ayuda a definir reglas para controlar cómo seinsertan actualizan o eliminan registros de tablas relacionadas. Desencadenante: código de evento a nivel de registro quese ejecuta despues de una inserción, una actualización o una eliminación. Seocupan para integridad entre las tablas. El establecimiento de la integridad referencialimplica la creación de un conjunto de reglas para preservar las relacionesdefinidas entre las tablas al introducir o eliminar registros. Si exige la integridad referencial, Visual FoxPro impedirálas acciones siguientes:
Si lo desea, puede escribir sus propios desencadenantesy procedimientos almacenados para exigir la integridad referencial. Sin embargo,el Generador de integridad referencial (IR) de Visual FoxPro permite determinarlos tipos de reglas que desea exigir, las tablas a las que desea exigirlas y loseventos del sistema que harán que Visual FoxPro las compruebe. El Generador de IR trata múltiples niveles de eliminacionesy actualizaciones en cascada, y es recomendable como herramienta para asegurarla integridad referencial. Para abrir el Generador de IR 1 Abra el Diseñador de bases de datos. 2 En el menú Base de datos, elija Editarintegridad referencial.
Al utilizar el Generador de IR para crear reglas que se van aaplicar a la base de datos, Visual FoxPro guarda el código generado para exigirlas reglas de integridad referencial como desencadenantes que hacenreferencia a procedimientos almacenados. Para ver este código puedeabrir el editor de texto de procedimientos almacenados en la base de datos. Sidesea información sobre la forma de crear desencadenantes por programa,consulte Uso de desencadenantes en el capítulo 7, Trabajo con tablas. Precaución Cuando haga cambios en el diseño de una basede datos, como modificaciones en sus tablas o alteraciones enlos índices utilizados en una relación persistente, debevolver a ejecutar el Generador de IR antes de utilizar de nuevo la base dedatos. De esta forma se revisarán el código de procedimiento almacenadoy los desencadenantes utilizados para exigir la integridad referencial,de forma que reflejen el nuevo diseño. Si no vuelve a ejecutar el Generador deRI, puede que obtenga resultados inesperados, ya que no se habrán actualizadolos procedimientos almacenados y los desencadenantes para ajustarlos a lasmodificaciones.
El Generador IR se muestra cuando: Hace doble clic en una línea de relación entre dos tablasdel Diseñador de bases de datos y elige el botón IntegridadReferencial en el cuadro de diálogo Editar relación. Elige Integridad referencial en el menú contextual del Diseñadorde bases de datos. Elige Editar integridad referencial en el menú Base dedatos.
Fichas del generador Reglas para la actualización Especifica reglas paraaplicar cuando se modifica el valor clave de la tabla primaria. Reglas para la eliminación Especifica las reglas que seaplican cuando se elimina un registro de la tabla primaria. Reglas para insertar Especifica las reglas que se aplicancuando se inserta un nuevo registro o cuando se actualiza un registro existenteen la tabla secundaria. VISTAS LOCALES:
¿Qué es una vista? Una vista es un objeto que se crea empleando la instrucciónSELECT de SQL para bases de datos relacionales. Las vistas pueden ser locales oRemotas
SELECT campos FROM tablas WHERE condicion GROUP BY campos de agrupamiento ORDER BY campos de ordenamiento Ejemplo: SELECT cedula, nombre FROM Alumnos ORDER BY nombre
Creación de una vista local.
Clic en el botón para crear vistas locales.
La ventana para agregar las tablas, se utiliza para añadirtablas que se van a ocupar en la instrucción SELECT – SQL, en este caso estaríamosseleccionando la parte del FROM. Seleccionemos s_region y luego Agregar. Latabla se agregará, luego le damos cerrar (close).
Ventana de creación de la vista: Fields: (Campos) Aquí se seleccionan los campos de la vista(SELECT campos) Join : Relaciones entre tablas Filter : Condición de filtrado (WHERE condición) Order by : campos de ordenamiento (ORDER BY) Group by : campos de Agrupamiento (GROUP BY) CREACION DE VISTAS REMOTAS: Una vista remota es una vista que se hace de otra base dedatos vía ODBC. Esta base de datos puede ser Access, ORACLE, SQL-SERVER, entreotros.
Crear una vista remota:
Clicen icono para crear vista remotas.
Escoger Nueva Vista (New View)
Si no a creado una conexión es necesario crear en New,si ya esta creada seleccione la conexión y luego OK.
¿Como crear una conexión? Si no ha creado la conexión seleccione New
Siga estos pasos cuidadosamente: 1. Seleccione New Data Source (Nueva Fuente de Datos)y aparecerá la configuración del ODBC:
2. En el folder User DSNPresione el botón Add (Agregar)
Escriba el nombre del Data Source (Fuente de datos), Luego seleccione la Base de Dato a la que hace referencia ( en el boton Select Database)
Luego de haber seleccionado la base de datos, acepte todaslas ventanas que aparecieron anteriormente y detengase en la siguiente ventana:
Luego seleccione de la lista de data source el data sourceque usted acaba de crear. Luego presione Aceptar (OK). Después le aparece la primera Ventana donde escoge lasconexiones, le aparecerá la conexión que usted ha creado. Nota: Esta conexión que usted a creado servirá parasesiones futuras.
Seleccione la conexión creada y luego Aceptar (OK) Luego le aparecerá la ventana donde usted escoge las tablasque utilizará:
Luego aparecerá la ventana donde se diseña la vista:
El procedimiento para crear la vista es igual a la creaciónde vista Locales.
Consultas a la BD usando SELECT-SQL
SELECT - SQL usando dos o mas tablas: Sintaxis : SELECT alias1.campo1 ,alias2.campo2 ,alias3.campo3 FROM tabla1 alias1 ,tabla2 alias2 ,tabla3 alias3 WHERE alias1.campo1 = alias2.campo2 alias1.campo2 = alias2.campo3 Ejemplo : Un ejemplo sencillo: si queremos listar el nombre delempleado, el id del departamento, y el nombredel departamento al que pertenece el empleado la query (consulta)sería:
SELECT A.nombre AS empleado ,A.dept_id ,B.nombre AS depto FROM s_emp A ,s_dept B WHERE A.id = B.region_id
Ejercicios : Seleccionar el No. depto, apellido, salario y cargo para losempleados que ganen mas de 100 y el departamento este en 41, 10 y 50 select dept_id ,nombre ,salario ,cargo from s_emp where salario > 100 and dept_id IN (41,10,50)
seleccionar el apellido, del empleado, id del depto, y elnombre del depto. select a.nombre AS empleado ,b.id ,b.nombre AS depto from s_emp a ,s_dept b where a.id = b.dept_id Seleccionar el apellido del empleado, no del depto, el nombredeldepto para los depto que esten entre 20 y 50 sin incluirlos. select a.nombre AS empleado, b.id, b.nombre AS depto from s_emp a, s_dept b where a.id = b.dept_id and b.id > 20 and b.id < 50 seleccionar el nombre del empleado no. del depto, nombre deldepto, para los deptos que comiencen con 4 y ordenados el numero de depto ynombre del empleado desc select a.nombre AS empleado, b.id, b.nombre AS depto from s_emp a, s_dept b where a.id=b.dept_id and ALLTRIM(STR(b.id)) like '4%' order by a.nombre asc, b.id Seleccionar el nombre del cliente para aquellos empleados queel no del depto sean 30, 40, 41, 42 y el ( salario sea mayor que 1000 o el deptosea 50 )
select a.nombre AS cliente, b.nombre AS empleado, b.salario, b.id, b.dept_id from s_customer a, s_emp b where a.emp_id=b.id and b.dept_id IN (30,40,41,42) and (b.salario > 1000 or b.dept_id='50')
Otra soluccion: select a.nombre from s_customer a where a.emp_id IN (Select id from s_emp where dept_id in (30, 40,41,42) and (salario > 1000 or dept_id=50 )
Seleccionar el nombre del cliente, nombre de region y elsalario para todos los empleados que el salario sean mayor que 100 select a.nombre AS empleado, b.nombre AS depto, a.salario from s_emp a, s_dept b where a.dept_id=b.id and a.salario > 100
Funciones de grupos salarios minimos y maximos de los empleados select max(salario) sal_max, min(salario) sal_min from s_emp
Suma, maximo, minimo salario por Departamento select dept_id, sum(salario), max(salario), min(salario) from s_emp group by dept_id
*--- select dept_id, count(dept_id) from s_emp group by dept_id having dept_id > 20 *--- select dept_id, sum(salario) from s_emp group by dept_id having sum(salario) between 2000 and 4000
*--- select avg(salario), min(salario), max(salario), sum(salario) from s_emp where UPPER(title) like 'SALES%'
*--- select count(nombre), dept_id from s_emp where dept_id=31 group by dept_id
SELECT COUNT(ID), DEPT_ID FROM S_EMP GROUP BY DEPT_ID
SELECT COUNT(ID), CREDIT_RATING FROM S_CUSTOMER GROUP BY CREDIT_RATING *---- SELECT SUM(SALARIO), CARGO FROM S_EMP WHERE upper(TITLE) NOT LIKE 'VP%' GROUP BY CARGO *---- SELECT SUM(SALARIO), TITLE FROM S_EMP GROUP BY TITLE *----
SELECT TITLE, SUM(SALARIO) FROM S_EMP WHERE UPPER(TITLE) NOT LIKE 'VP%' GROUP BY TITLE HAVING SUM(SALARIO)> 5000 *----
Formularios Sencillos Un Formulario Sencillo, es el que es realizado generalmenteutilizando una sola tabla. Un ejemplo típico de formularios sencillos son las pantallasde los catálogos de un Sistema, que solamente tienen la función de registrar,modificar, eliminar y consultar datos de una tabla. Por ejemplo vamos a construir una forma sencilla utilizandoel Wizard de Visual Foxpro:
10. Seleccione el estilo de la forma y el tipo debotones a utilizar en la forma y luego presione próximo (Next). 11. Aparecerá la siguiente ventana: Para visualizar todas las imágenes faltantes haga click enel menu superior "Bajar Trabajo". 12. Seleccione el ordenamiento de la tabla, aquí por logeneral se selecciona el índice de la tabla ( los índices aparecen conasterisco *)
13. Introduzca el titulo de la forma y luego Finalizar (Finish) Visual Foxpro Generará la forma, luego usted puede modificarla forma si lo desea. La forma, que creamos con el wizard, quedaría de esta forma:
Nota: Reconstruya el proyecto en la opción Build (botóndel proyecto). Luego Seleccione Rebuild Proyect y OK.Visual Foxpro, compila su proyecto. Notará que en la pestaña de clases de su proyecto VisualFoxpro le ha agregado una clase que él ocupa para construir formas con el Wizard,el nombre de la clase es WizStyle. Formularios Maestro - Detalle
Un formulario maestro detalles es aquel en que entran enjuego dos o más tablas, las cuales tengan una relación de uno a muchos.Ejemplo la relación de s_region con s_dept ( una región puede tener muchosdepartamentos).
Se pueden construir formas mestro-detalle utilizando elWizard, sin embargo, nosotros utilizaremos la forma manual para personalizar anuestro gusto la forma.
Pasos para construir una forma maestro - detalle Para este ejemplo utilizaremos las tablas s_region y s_dept
6. Seleccione las tablas s_region, que será elmaestro y luego la tabla s_dept que será nuestro detalle.
7. Arrastre uno por uno los campos de la tabla s_region a suforma, de tal manera que queden asi:
8. Luego arrastre toda la tabla s_dept al formulario
En la clase se explicaron los procedimientos para IncluirModificar y Eliminar alumnos a una base de datos de inscripciones. En este estecodigo se estan actualizando clientes el código es análogo Boton Incluir: if thisform.incluir.caption="Incluir" scatter memvar blank thisform.incluir.caption="Guardar" thisform.salir.caption="Cancelar" thisform.text1.enabled=.t. (Recuerden que los texbox poseennombres que se corresponden con la realidad txtcedula,txtnombre…, aunque en este ejemplo no se planteen así debe programarse) thisform.text2.enabled=.t. thisform.text3.enabled=.t. thisform.text4.enabled=.t. else if thisform.text1.value<>'' if thisform.text2.value<>'' if thisform.text3.value<>'' if thisform.text4.value<>'' append blank gather memvar endif (Pueden mostrarse mensajes de validación de llenartodos los campos antes de incluir un registro) endif endif endif thisform.incluir.caption="incluir" thisform.salir.caption="Salir" thisform.text2.enabled=.f. thisform.text3.enabled=.f. thisform.text4.enabled=.f. endif thisform.refresh Boton Modificar: if thisform.modificar.caption="Modificar" thisform.text1.enabled=.f. thisform.text2.enabled=.t. thisform.text3.enabled=.t. thisform.text4.enabled=.t. thisform.modificar.caption="Guardar" thisform.salir.caption="Cnacelar" else gather memvar thisform.text1.enabled=.t. thisform.text2.enabled=.f. thisform.text3.enabled=.f. thisform.text4.enabled=.f. thisform.modificar.caption="Modificar" thisform.salir.caption="Salir" endif
Boton Eliminar (Recuerden que en la ayuda de Visual FoxPro está la información de laaplicación de la función y/o procedimiento Messagebox) if messagebox("Esta seguro que desea eliminar estecliente",36,"Confirmacion")=6 (Implementada como función) delete pack messagebox("El registro fue eliminado",0,"Aviso") (implementada como procedimiento) scatter memvar blank endif thisform.refresh Boton Salir: if thisform.incluir.caption="Guardar" thisform.text2.enabled=.f. thisform.text3.enabled=.f. thisform.text4.enabled=.f. thisform.incluir.caption="Incluir" thisform.Salir.caption="Salir" else if thisform.modificar.caption="Guardar" thisform.text1.enabled=.t. thisform.text2.enabled=.f. thisform.text3.enabled=.f. thisform.text4.enabled=.f. thisform.modificar.caption="Modificar" thisform.Salir.caption="Salir" else thisform.release endif endif
Boton Primero: go top m.codigo=clientes.codigo m.nombre=clientes.nombre m.telefono=clientes.telefono m.direccion=clientes.direccion thisform.refresh Boton Ultimo: go bottom m.codigo=clientes.codigo m.nombre=clientes.nombre m.telefono=clientes.telefono m.direccion=clientes.direccion thisform.refresh Boton Siguiente if eof() thisform.siguiente.enabled=.f. go bottom m.codigo=clientes.codigo m.nombre=clientes.nombre m.telefono=clientes.telefono m.direccion=clientes.dirección frmactcliente.refresh else skip 1 m.codigo=clientes.codigo m.nombre=clientes.nombre m.telefono=clientes.telefono m.direccion=clientes.direccion if thisform.anterior.enabled=.f. thisform.anterior.enabled=.t. endif endif thisform.refresh Boton Anterior if bof() thisform.anterior.enabled=.f. go top else skip -1 if thisform.siguiente.enabled=.f. thisform.siguiente.enabled=.t. endif endif m.codigo=clientes.codigo m.nombre=clientes.nombre m.telefono=clientes.telefono m.direccion=clientes.direccion thisform.refresh Creación de Clases de Objetos
En Visual Foxpro se pueden crear clases de objetos que puedende uso muy común, como por ejemplo el botón salir es muy comun en todas laspantallas.
Pasos para creación de clases:
La clase
que usted a creado aparecerá en la pestaña clases de su proyecto:Cómo hacer uso de la clase :
En clase se implementó una clase basada en la clase TextBoxque cambia el color de fondo y el color de la letra del Textbox cuando el texboxobtiene o pierde el focus ( utilizando los procedimientos LosFocus yGotFocus) de esta manera el usuario identifica mas facilmente el texbox activo Código del Procedimiento LostFocus de la clase TxtColor(obtenel el focus) This.backcolor=rgb(0,0,255) (color de fondo azul) This.forecolor=rgb(255,255,255) (color de las letras blancas) Código del Procedimiento GosFocus del la clase TextColor(perder el focus) This.backcolor=rgb(255,255,255) (color de fondo blanca) This.forecolor=rgb(0,0,0) (color de las letras negras)
Soporte de Tecnología ActiveX
Cuando usted instala Visual Foxpro, se instalan una serie decontroles ActiveX soportados por Visual Foxpro. Un ActiveX, no es más que un control externo, es parecido auna clase ya que las clases se pueden guardar en un archivo (extensión VCX) ylos ActiveX tienen extensión OCX. La diferencia es que los VCX solo puedeocuparse en Visual Foxpro, mientras que los OCX se consideran como tecnologíaabierta, es decir, pueden ser utilizado por cualquier lenguaje visual comoVisual C++ o Visual Basic, por mencionar algunos.
Estos controles ActiveX, vienen hechos de fabrica, soncomercializables y no son modificables, sin embargo uno puede crear sus propiosOCX. Los lenguajes donde se pueden construir estos OCX actualmente son VisualC++ y Visual Basic. En visual Foxpro 5.0 usted no puede crear OCX.
Hay que tener mucho cuidado a la hora de comprar un OCX yverificar que lenguajes soporta, por que algunos OCX no son soportados poralgunos lenguajes visuales incluso con Visual Foxpro.
Cómo hacer uso de los ActiveX en Visual Foxpro:
Un OCX es un objeto por lo cual tiene propiedades y eventosimplícitos en él. En el curso, utilizaremos dos Controles ActiveX :
OutLine control:
Cómo agregar un ActiveX a la forma:
5. Vamos a crear una forma maestro detalle utilizando elOutline Control. El Outline control presentará la información de las Regionesy vamos a agregar un Grid que serán los departamentos, Algo asi:
Completar Código del Outline control:
El último paso es agregar el Grid con la tabla departamentos y luegoestablecer la relación con la tabla de regiones.
Progress Bar Control:
Este control permite hacer una barra de progreso:
Propiedades :
Almacenar objetos OLE en la Base de Datos:
Con Visual Foxpro se pueden almacenar objetos OLE en la Basede Datos, estos objetos OLE van desde una simple imagen BMP de Paintbruhs hastaun video clip, un documento en Word, una hoja en Excel un grafico. Esto se llama OLE Automation (automatización OLE)
¿Qué se necesita para hacer OLE Automation? Muy sencillo:
Sintaxis de APPEND GENERAL APPEND GENERAL Nombre Campo tipo General [FROM Nombre Archivo] [DATA Nombre de Variable] [CLASS Nombre de la Clase OLE] FROM : Por si deseamos insertar un Archivo existente en el disco DATA : Si no es un archivo puede ser una variable, entonces se especifica aquí. CLASS : El nombre de la clase de la aplicación al que esta asociada elarchivo o la variable. Toda aplicación Windows ( Word, Excel, Graph, Paint,WordPad, Block de Notas, Power Point, entre otras) tienen un nombre de clase: Por mencionar algunos nombres de clases:
Como conocer el nombre de clase de una aplicación Windows:
Incluir en el Formulario el Objeto OLE:
Diseño de Reportes
Guia rápida visual: Los informes muestran datos y resumen datos en un formulario impreso o en pantalla. Los dos componentes principales de los informes son los datos y el formato. La fuente de datos del informe puede ser una tabla de base de dato, una consulta o una vista. El primer paso para diseñar un informe es determinar los datos que se van a mostrar, y el segundo paso es determinar cuál va a ser el mejor formato para mostrar ese informe. Puede crear listados que se basen en una única tabla o en informes complejos. El Generador de Informes es una herramienta flexible y de fácil uso para la creación, diseño y modificación de informes.
Pasos para Creación de Informes :
I. Selección de los datos Esta es la parte más importante del informe, la selección de datos, hay que saber qué es lo que quiere el usuario o que el usuario muestre el diseño del informe que desea, para comenzar a trabajar. Los datos pueden ser simples (utilizando una sola tabla), como listados de regiones, listado de departamentos, entre otros; o pueden ser algo mas complejos (utilizando mas de una tabla) Ejemplo Reportes agrupados, reportes consolidados, etc. Los datos se pueden obtener directamente utilizando las tablas o utilizando SQL para crear cursores, esta última es la más recomendada para una aplicación multiusuario. Existen varios tipos de informes entre ellos : - Listados (Ej. Listados de regiones) Muestra: ------------------------------- id name ------------------------------- 01 Region 1 02 Region 2 -------------------------------- - Grupos con detalles ( o maestro detalles) ------------------------------- Region Departamento ------------------------------- Region 1 Departamento a Departamento b Region 2 Departamento x Departamento y --------------------------------
- Matriciales o consolidados -------------------------------------------- Rating Region Excellent Good Poor -------------------------------------------- Region 1 1 2 0 Region 2 3 0 1 -------------------------------------------- Totales 4 2 1 --------------------------------------------
Creación de Informes usando el entorno de datos: 1. En el administrador de proyectos, seleccione la ficha Documentos. 2. Seleccione Informes 3. Pulse el botón nuevo 4. Pulse el botón nuevo informe. Aparece el generador de informes y al barra de herramientas Controles de informes. 5. Seleccione Entorno de datos y seleccione la tabla 6. Arrastre los campos a utilizar del entorno de datos en el informe en la parte de detalle 7. Introduzca los encabezados del reporte
8. Puede ver como queda el informe con el botón depresentación preliminar:
Presentación Preliminar :
Menú de Reportes
Titulo/Sumario (Title/Summary): Muestra el área del Titulo y el Sumario del Informe Titulo : Aparece solo en la primera pagina del Reporte Sumario : Aparece solo en la ultima pagina del Reporte
Agrupamiento de datos (Data Grouping) El agrupamiento de datos se utiliza para informes maestro – detalle. Variables:
Las variables son útiles para hacer cálculos con los datosdel reporte y luego presentarlas en el mismo reporte.
Propiedades de los campos
Cada campo en el Informe posee propiedades : Creación de Informes usando Cursores SQL: 1. Crear el cursor con el comando SELECT..... FROM .....WHERE.... 2. Crear el Informe manualmente, con los nombres de camposdel cursor. 3. Correr el Reporte.
Ejemplo: * Se define una ventana Personalizada DEFINE WINDOW w_Output ; FROM 0,0 TO 25,70 ; TITLE 'Informes - INATEC' ; CLOSE FLOAT GROW ZOOM SYSTEM
USE IN .\data\s_region IN 0
SELECT id, name FROM s_region INTO CURSOR c_region
* Si lo queremos por pantalla REPORT FORM .\report\pp_detalles ; PREVIEW WINDOWS w_output ; NOEJECT NOCONSOLE * Por Impresora REPORT FORM .\report\pp_detalles ; TO PRINTER PROMPT ; NOEJECT NOCONSOLE * Hacia un Archivo REPORT FORM .\report\pp_detalles ; TO FILE PUTFILE() ; ASCII * Cerrar el cursor USE IN c_region
Integración de la Aplicación
Creación de Menús: Guía rápida Visual:
Tipos de Menús: Existen dos tipos de menús : menú y Shortcut.
Creación de Menús: La creación de menús es un proceso que conlleva diferentespasos. Primero, debemos definir las opciones del menú y de los submenús.Luego, asignar funcionalidad a las opciones de menú. Finalmente, generar elprograma de menús. Puede l generador de menús de Visual Foxpro para que leayude a construir menús rápidamente. El Generador de menús le permite definirla estructura y funcionalidad de su sistema de menús a través de cuadros de diálogode fácil uso y de listas desplegables que puede utilizar para crear y modificarsu sitema de menús.
Definición de las opciones de menú. Los menús presentan su aspecto con una lista de opcionespara iniciar una actividad. La mayoría de los elementos de menú muestransubmenús u opciones adicionales cuando el usuario selecciona uno de estoselementos. Antes de generar un menú para una aplicación, tendrá quedeterminar que selecciones tendrá disponibles el usuario final y qué opcionesde menús pertenecen a otras opciones de menús (sub menus). Cómo crear un nuevo menú
Pulse la
ficha de otros en el Administrador de proyectos.
Aparece la página otros con las categorías de archivo de Menús, Texto y Otros.
4. Introduzca las opciones del menu y luego el resultado delmenú ( submenu, comando o procedimiento) 5. A la derecha del resultado se encuentra la opción crear omodificar según el caso. ( crea o modificar los resultados de la opción delmenu).
Tipos de Resultados : Submenu : Si el menú contiene un submenu Comando : Si la opción de ese menú invoca un comando(Ejemplo: DO FORM Regiones, para llamar un formulario; CLEAR EVENT, por lo general va en la opción Salir) Procedimiento : Si la opción de ese menú invoca variaslíneas de comandos ( un procedimiento).
Opciones de Menú:
En las opciones del menú se especifican:
Generación del menú :
Como invocar al menú creado:
Al generar el menú se crea un archivo que por lo generaltiene extensión MPR que contiene el código para desplegar el menú. La instrucción sería:
DO ruta y nombre del archivo MPR
Ejemplo : DO menu.MPR
Creación del Ejecutable de la Aplicación.
Primero se tiene que crear un programa de inicio, al cual sele tiene que decir que ese es el programa que se ejecutara de primero ( esto sehace haciendo clic derecho en el programa que designemos como principal yescoger la opción main ( principal) del menú de opciones)
Contenido Ejemplo del programa principal:
CLEAR ALL * Variables Publicas PUBLIC w_Output, g_año, gid_area, g_nivel, g_cambio,g_login_entry ; ,g_pass_entry, V_MENU_PRE, V_ERROR, g_acceso * Definicion de Ventana para los Reportes DEFINE WINDOW w_Output ; FROM 0,0 TO 25,70 ; TITLE 'Informes - BCN' ; CLOSE FLOAT GROW ZOOM SYSTEM * Ambiente SET SYSMENU TO SET ECHO OFF SET TALK OFF SET CENTURY ON SET CLOCK STATUS SET DATE brit SET DELETE ON SET PATH TO formenu,bmp,prg,data SET EXCLUSIVE OFF SET SAFETY OFF SET REFRESH TO 5 SET REPROCESS TO AUTOMATIC SET MULTILOCK ON SET LOCK OFF SET PROCEDURE TO .\prg\utility * Fondo de la Pantalla principal _SCREEN.Picture=".\bmp\fondo.bmp" _SCREEN.WINDOWSTATE=2 _SCREEN.CLOSABLE=.F. _SCREEN.CAPTION="Formulación Presupuestaria" * Base de Datos OPEN DATA .\SCOTT\scott SHARED
* Llamada al Menu DO .\menu\menu.mpr READ EVENT CLEAR ALL SET SYSMENU TO DEFAULT Creación del Ejecutable
En el Administrador de proyectos seleccione la opcion Build,luego la opción build Executable y luego OK.
Suerte en tu nuevo aprendizaje... Para visualizar todas las imágenes faltantes haga click en el menu superior"Bajar Trabajo". Trabajo enviado por: Publicación enviada por Richard A. Sequera A. Contactar mailto:rsequera20@hotmail.com Código ISPN de la Publicación EpypklllVApXSJTIvZ Publicado Thursday 7 de August de 2003 Ultimas Publicaciones en ilustrados.com
ilustrados.com nace con el fin difundir el conocimiento publicando trabajos de investigación, monografias, tesis, presentaciones powerpoint y afines. Publicar trabajos en ilustrados.com ha alcanzado prestigio y reconocimiento internacional siendo cada vez más el número de académicos, empresas, investigadores, científicos que consultan las publicaciones de nuestro portal. | |||||||||||||||||||||||||||||||