Monografias | Curso de Visual Foxpro 5.0 - Diseño de la Base de DatosCurso de Visual Foxpro 5.0 - Diseño de la Base de DatosResumen: Diseño del Repositorio de Datos en Visual Foxpro. Creación de la base de datos. Relaciones entre tablas. Vistas locales. Creación de vistas remotas. Consultas a la BD usando SELECT-SQL. Programación Multiusuario. Tableupdate(.t.). Diseño de formularios. Agregar cuadros de texto y cuadros de edición. Controles. Creación de Clases de Objetos. Almacenar objetos OLE en la Base de Datos. Diseño de Reportes. Tipos de Menús. Opciones de Menú. Creación del Ejecutable. CREACION DE LA BASE DE DATOS 1. Ubiquese en el folder Data y luego en Databases y presione
el botón New La ventana del Database Designer aparecerá : Puede ocupar el toolbar Database Designer para el control de la Base de
Datos. Descripción de los botones del toolbar: Crear una nueva tabla. Agregar una tabla existente Eliminar una tabla seleccionada Modificar 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) Crear una nueva tabla: 1. Click en el boton de Nueva tabla, aparecera la
ventana New Table
La ventana de Table designer aparecera en pantalla: Esta es la parte mas importante de la tabla, es aquí donde se define la
estructura de datos que contendrá dicha tabla. El primer paso es definir los
campos, tipos, tamaño, Formato y Reglas de validación en el folder Fields. 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. Format : 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 : Igual que el Format, lo único que es para la entrada
de datos. Captión : 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 : Es la regla de validación, ejemplo: id > 0, si queremos que
acepte valores positivos. Message: Es el mensaje personalizado que queremos que aparezca en
pantalla a la hora de violarse la regla de validación del campo. Ejemplo : ‘Solo
se aceptan números positivos’ (nota: el texto debe escribirse entre comillas). Default Value : Valor por defecto del campo. (nota: hay que
respetar el tipo de dato del Campo) Luego de hacer la deficion de los campos, pasamos a la definicion de Indices
de la tabla, que será muy importante a la hora de crear las relaciones entre las
tablas. Introducir el Nombre del archivo índice. Es conocido también como TAG. Primary : Llave primaria. Candidate : Llave candidata Unique : Llave única. Regular : Llave foránea. c. Nombre de la Expresión Nombre de los campos que conforman la llave primaria: Ejemplo : id, o si son varios campos : id + linea Nota: si los campos no son del mismo hay que forzarlos al tipo de dato
deseado, ejemplo: si id es carácter y linea, entoces el nombre de
la expresion sería: Id + STR(linea) STR() convierte de número a carácter y VAL() convierte de carácter a númerico. Después de detallar los índices, se define los eventos de La
validación a nivel de registro y los eventos que se ejecuten a la hora de
Insertar un registro, de actualizar o borrar.
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 llave primaria De uno a muchos : Ejemplo de una llave primaria a una Regular o
Foránea. Las relaciones entre tablas se crean arrastrando la llave de la tabla a la
llave de otra tabla. La figura muestra una relación entre las tablas región y
departamento, la relación se leería así : "Una región tiene muchos
departamentos". Generación de integridad referencial Reglas que rigen la coherencia de datos, específicamente las relaciones entre
las claves principal y externa de claves de tablas distintas. Visual Foxpro
Resuelve la Integridad Referencial mediante reglas a nivel de campo y a nivel de
registro definidas por el usuario. El Generador de la Integridad Referencial
le ayuda a definir reglas para controlar cómo se insertan actualizan o eliminan
registros de tablas relacionadas. Desencadenante: código de evento a nivel de registro que se ejecuta
despues de una inserción, una actualización o una eliminación. Se ocupan para
integridad entre las tablas. El establecimiento de la integridad referencial implica la creación de
un conjunto de reglas para preservar las relaciones definidas 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 desencadenantes
y procedimientos almacenados para exigir la integridad referencial. Sin embargo,
el Generador de integridad referencial (IR) de Visual FoxPro permite determinar
los tipos de reglas que desea exigir, las tablas a las que desea exigirlas y los
eventos del sistema que harán que Visual FoxPro las compruebe. El Generador de IR trata múltiples niveles de eliminaciones y
actualizaciones en cascada, y es recomendable como herramienta para asegurar la
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 Editar
integridad referencial. Al utilizar el Generador de IR para crear reglas que se van a
aplicar a la base de datos, Visual FoxPro guarda el código generado para exigir
las reglas de integridad referencial como desencadenantes que hacen
referencia a procedimientos almacenados. Para ver este código puede abrir
el editor de texto de procedimientos almacenados en la base de datos. Si desea
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
base de datos, como modificaciones en sus tablas o
alteraciones en los índices utilizados en una relación persistente,
debe volver a ejecutar el Generador de IR antes de utilizar de nuevo la base
de datos. De esta forma se revisarán el código de procedimiento almacenado
y los desencadenantes utilizados para exigir la integridad referencial,
de forma que reflejen el nuevo diseño. Si no vuelve a ejecutar el Generador de
RI, puede que obtenga resultados inesperados, ya que no se habrán actualizado
los procedimientos almacenados y los desencadenantes para ajustarlos a las
modificaciones. El Generador IR se muestra cuando: Fichas del generador Reglas para la actualización Especifica reglas para aplicar cuando se
modifica el valor clave de la tabla primaria. Reglas para la eliminación Especifica las reglas que se aplican cuando se
elimina un registro de la tabla primaria. Reglas para insertar Especifica las reglas que se aplican cuando se inserta
un nuevo registro o cuando se actualiza un registro existente en la tabla
secundaria. VISTAS LOCALES: ¿Qué es una vista? Una vista es un objeto que se crea empleando la instrucción SELECT de SQL
para bases de datos relacionales. Las vistas pueden ser locales o Remotas SELECT campos FROM tablas WHERE condicion GROUP BY campos de agrupamiento ORDER BY campos de ordenamiento Ejemplo: SELECT id, name FROM s_region ORDER BY name 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ñadir tablas que se van
a ocupar en la instrucción SELECT – SQL, en este caso estaríamos seleccionando
la parte del FROM. Seleccionemos s_region y luego Agregar. La tabla 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 de datos vía ODBC.
Esta base de datos puede ser Access, ORACLE, SQL-SERVER, entre otros. Crear una vista remota:
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 DSN Presione 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 todas las ventanas que
aparecieron anteriormente y detengase en la siguiente ventana:
Luego seleccione de la lista de data source el data source que usted acaba de
crear. Luego presione Aceptar (OK). Después le aparece la primera Ventana donde escoge las conexiones, le
aparecerá la conexión que usted ha creado. Nota: Esta conexión que usted a creado servirá para sesiones futuras.
Seleccione la conexión creada y luego Aceptar (OK) Luego le aparecerá la ventana donde usted escoge las tablas que utilizará:
Luego aparecerá la ventana donde se diseña la vista:
El procedimiento para crear la vista es igual a la creación de 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
del empleado, el id del departamento, y el
nombre del departamento al que pertenece el empleado la query
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 los
empleados que ganen mas de 100 y el departamento sea el 41 , 10 ó 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 el nombre 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 nombre
deldepto 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 del
depto, para los deptos que comiencen con 4 y ordenados por numero de depto y
nombre 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 que el No. del
depto sea 30, 40, 41, 42 y el ( salario sea mayor que 1000 o el depto sea 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 el salario 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 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 *---- Programación Multiusuario: En la programación multiusuario hay que tener muy en cuenta
el control de la zona critica. En Visual Foxpro, esto se puede hacer
Automaticamente o Manualmente. En la forma Automática, Fox controla la zona critica con los
enllavamientos automáticos, lo que nos ahorra tiempo ya que no tenemos que
preocuparnos por ello. ( esta es la forma que utilizaremos ) ¿Qué se requiere? Se requiere algunas definir variables de ambiente en el
programa principal de nuestro Sistema: * Definicion de para Ambiente Red SET EXCLUSIVE OFF Abre las tablas en modo compartido SET MULTILOCKS ON Para que se puedan bloquear mas de un
registro SET DELETE ON Para que los registros marcados no se
visualicen SET REFRESH TO 5 Refrescamiento cada 5 segundos en el Browse SET REPROCESS TO AUTOMATIC Si un registro esta bloqueado o
enllavado Fox intenta
acualizarlo hasta que uno
presione esc *SET REPROCESS TO 5 SECONDS Si despues de 5 segundos no puede
actualizarlo Fox manda un error. * Otro Ambiente SET ECHO OFF SET TALK OFF SET CENTURY ON SET CLOCK STATUS SET DATE BRIT SET PATH TO menu,forms,bmp,prg,data SET SAFETY OFF SET PROCEDURE TO .\prg\utility Usando el Buffer con las tablas. Buffer Optimista: Dos usuarios pueden estar
modificando el registro sin ningún problema. Pesimista : Solo un usuario puede estar modificando el
registro. ¿Cómo fijar el Buffer? * Fijar el Modo de Buffer y almacenar el resultado lógico en
ISuccess lSuccess = CURSORSETPROP("Buffering", 5, "customer") IF lSuccess = .T. =MESSAGEBOX("Operación Realizada.!",0," Status de la
Operacion ") ELSE =MESSAGEBOX("Operación No Realizada.!",0," Status de la
Operacion ") ENDIF Con el buffer activado podemos hacer uso de los comandos : TABLEREVERT(.T.) TABLEUPDATE(.T.) TABLEUPDATE(.T.) Graba los cambios hechos en la tabla. SET MULTILOCKS ON && Debe estar ON para el buffering de la
tabla = CURSORSETPROP('Buffering', 5, 'employee' ) && Activar el
Buffering de la Tabla INSERT INTO employee (cLastName) VALUES ('Smith') CLEAR ? 'Valor Original de cLastName : ' ?? cLastName && muestra valor actual de cLastName (Smith) REPLACE cLastName WITH 'Jones' ? 'Nuevo valor para cLastName : ' ?? cLastName && Muestra Nuevo valor de cLastName (Jones) = TABLEUPDATE(.T.) && Acepta los cambios ? 'Valor actualizado de cLastName : ' ?? cLastName && Muestra actual valor de cLastName (Jones) TABLEREVERT(.t.) Cancela los cambios hechos a la tabla USE Customer && Abre la tabla Customer = CURSORSETPROP('Buffering', 5, 'customer') && Activa el
buffering de la tabla CLEAR ? 'Valor Original cust_id : ' ?? cust_id && Muestra el actual valor de cust_id REPLACE cust_id WITH '***' && Cambia el contenido del
registro ? 'Nuevo valor de cust_id : ' ?? cust_id && muestra Nuevo valor de cust_id (***) = TABLEREVERT(.T.) && Deshace todos los cambios en la tabla ? 'Valor de cust_id revertido: ' ?? cust_id && muestra el valor de cust_id revertido DISEÑO DE FORMULARIOS Guía rápida visual: A la hora de diseñar formularios usted tiene que estar
familiarizado con las ventanas siguientes: Cómo crear un nuevo Formulario: Aparece en cuadro de diálogo Nuevo Formulario. Este
cuadro refleja la posibilidad de utilizar el Asistente para formularios o
construir uno nuevo. Sugerencia: utilice el Asistente para formularios para desarrollar
formularios simples de introducción de datos. El Asistente para formularios
hace una serie de preguntas para guiarle durante el proceso de creación del
formulario. El Asistente permite la creación de un formulario para única
tabla o para tablas uno a muchos.
El Generador de formularios visualiza Form1 en la ventana
DocForm1, indicando que éste es el primer formulario que tiene abierto en este
proyecto. Podrá cambiar de nombre Docform1 por el nombre que indique al guardar
el formulario. Form1 es un área de trabajo en blanco. También aparecerá la barra de herramientas con los controles
para la creación de formularios. Agregar Objetos a su formulario. Una vez que tenga en pantalla una ventana de formulario en
blanco, Form1, inserte objetos para crear su formulario. MS Visual Foxpro 5.0 ofrece dos tipos de objetos que se
pueden insertar en un nuevo formulario: objetos contenedores y objetos de
control. Podemos accesar a estos objetos desde la barra de herramientas
Controles de formulario o desde el Administrador de proyectos. Objetos contenedores: Un objeto contenedor es un
objeto primario que contiene otros objetos subordinados. Por ejemplo, un
formulario es el objeto contenedor que es propietario de un botón de comando
visualizado en el formulario. Otros objetos contenedores pueden incluir marcos
de página, cuadrículas y grupos de botones de comando. Objetos de control: Un objeto de control permite al usuario
seleccionar opciones, introducir datos y escoger acciones. En un formulario,
estos objetos pueden incluir casillas de verificación, botones de comando,
cuadros de texto y cuadrículas. El objeto FORM Propiedades mas comunes de la Forma : Nombre Tipo de dato Descripción Eventos o Métodos más comunes de la Forma Nombre Descripción Utilización de múltiples páginas en un formulario simple. En VFP, un formulario simple puede contener múltiples páginas
que visualicen diferentes conjuntos de datos y controles. En la parte superior
del formulario, una ficha representa cada página. Podemos pulsar en una ficha
para mostrar el contenido de la página. Cómo crear un formulario de varias páginas. Propiedades mas comunes de la páginas : Nombre Tipo de dato Descripción Agregar cuadros de texto y cuadros de edición: Cómo agregar objetos en la pagina 1 (page1): Aparece el cuadro de diálogo propiedadades, donde muestra Page1 en el
cuadro de texto.
Sugerencia: Cada vez que inserte un objeto en un formulario, marco de
página o cuadricula, compruebe en la ventana Propiedades que ha colocado el
objeto en el contenedor apropiado. Como Agregar de cuadros de texto directamente de una tabla: Sugerencia: También puede abrir la ventana Agregar tabla o vista
con el botón derecho del ratón. Utilizando el botón derecho del ratón, pulse
en cualquier parte del Entorno de datos y luego seleccione Agregar. Para
obtener la ventana de Entorno de Datos o la ventana de propiedades, utilice
el botón derecho del ratón pulsando fuera del marco de página, pero dentro
del formulario. Aparece un menú instantáneo desde el que puede hacer la
selección. Aparece la ventana Agregar tabla o vista.
En el formulario aparecerá el cuadro de texto.text1 Sugerencia: Para desplazar un control de texto, pulse sobre él y
arrastrelo hacia otro lugar en le formulario. Para modificar el tamaño del
cuadro de texto, pulse sobre él y luego arrastre algunos de los márgenes. Propiedades mas comunes del Text (control de
texto):
Control Botón de Comando:
Propiedades mas comunes del Botón :
Eventos o Métodos más comunes del control
Cómo asociar un procedimiento a un botón:
Control Botón de Cuadro de Edición:
Se utiliza para los campos memo. Propiedades mas comunes del control de edición
Eventos o Métodos más comunes del control de edición
Control de Opciones: Propiedades mas comunes del control de opciones
Eventos o Métodos más comunes del control de opciones
Control Check: Propiedades mas comunes del control Check
Eventos o Métodos más comunes del control Check
Control Grid: Propiedades mas comunes del control Grid:
Eventos o Métodos más comunes del control Grid:
Control Listas: Propiedades mas comunes del control Listas
Eventos o Métodos más comunes del control Listas
Formularios Sencillos Un Formulario Sencillo, es el que es realizado generalmente utilizando una sola tabla. Un ejemplo típico de formularios sencillos son las pantallas de 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 utilizando el Wizard de Visual Foxpro:
10. Seleccione el estilo de la forma y el tipo de botones a utilizar en la forma y luego presione próximo (Next). 11. Aparecerá la siguiente ventana:
12. Seleccione el ordenamiento de la tabla, aquí por lo general se selecciona el índice de la tabla ( los índices aparecen con asterisco *)
13. Introduzca el titulo de la forma y luego Finalizar (Finish) Visual Foxpro Generará la forma, luego usted puede modificar la 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ón del proyecto). Luego Seleccione Rebuild Proyect y OK. Visual Foxpro, compila su proyecto. Notará que en la pestaña de clases de su proyecto Visual Foxpro 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 en juego 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 muchos departamentos). Se pueden construir formas mestro-detalle utilizando el Wizard, sin embargo, nosotros utilizaremos la forma manual para personalizar a nuestro 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á el maestro y luego la tabla s_dept que será nuestro detalle. 7. Arrastre uno por uno los campos de la tabla s_region a su forma, de tal manera que queden asi: 8. Luego arrastre toda la tabla s_dept al formulario Ahora vamos a modificar las propiedades del Grid que hemos insertado: seleccionan el grid, botón derecho del ratón y luego propiedades. Se sitúan en la pestaña datos, para modificar las siguientes propiedades con el fin de establecer la relación entre las dos tablas: 10. colocaremos los botones para Desplazarnos en la tabla, agregar, eliminar , grabar, cancelar y salir.
Código para los botones :
Código a nivel de Forma :
Importante: la tabla s_dept debe de estar en modo buffer, para que funcionen los comando de TABLEUPDATE() y TABLEREVERT(). El modo buffer de la tabla lo puede fijar en Entorno de datos y luego en la propiedades de la tabla s_dept, específicamente en la propiedad BufferModeOverride. Creación de Clases de Objetos En Visual Foxpro se pueden crear clases de objetos que pueden de uso muy común, como por ejemplo el botón salir es muy comun en todas las pantallas. Pasos para creación de clases:
Cómo hacer uso de la clase :
Soporte de Tecnología ActiveX Cuando usted instala Visual Foxpro, se instalan una serie de controles ActiveX soportados por Visual Foxpro. Un ActiveX, no es más que un control externo, es parecido a una clase ya que las clases se pueden guardar en un archivo (extensión VCX) y los ActiveX tienen extensión OCX. La diferencia es que los VCX solo puede ocuparse en Visual Foxpro, mientras que los OCX se consideran como tecnología abierta, es decir, pueden ser utilizado por cualquier lenguaje visual como Visual C++ o Visual Basic, por mencionar algunos. Estos controles ActiveX, vienen hechos de fabrica, son comercializables y no son modificables, sin embargo uno puede crear sus propios OCX. Los lenguajes donde se pueden construir estos OCX actualmente son Visual C++ 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 y verificar que lenguajes soporta, por que algunos OCX no son soportados por algunos 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 eventos implícitos en él. En el curso, utilizaremos dos Controles ActiveX :
OutLine control:
El Outline Control se utiliza para hacer Arboles como por Ejemplo: Regiones con departamentos (maestro-detalle) Cómo agregar un ActiveX a la forma:
5. Vamos a crear una forma maestro detalle utilizando el Outline Control. El Outline control presentará la información de las Regiones y 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 luego establecer 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 Base de Datos, estos objetos OLE van desde una simple imagen BMP de Paintbruhs hasta un 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 el archivo 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:
7. Introduzca los encabezados del reporte 8. Puede ver como queda el informe con el botón de presentació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 datos del 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 campos del 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 diferentes pasos. Primero, debemos definir las opciones del menú y de los submenús. Luego, asignar funcionalidad a las opciones de menú. Finalmente, generar el programa de menús. Puede usar el generador de menús de Visual Foxpro para que le ayude a construir menús rápidamente. El Generador de menús le permite definir la estructura y funcionalidad de su sistema de menús a través de cuadros de diálogo de fácil uso y de listas desplegables que puede utilizar para crear y modificar su sitema de menús. Definición de las opciones de menú. Los menús presentan su aspecto con una lista de opciones para iniciar una actividad. La mayoría de los elementos de menú muestran submenús u opciones adicionales cuando el usuario selecciona uno de estos elementos. Antes de generar un menú para una aplicación, tendrá que determinar que selecciones tendrá disponibles el usuario final y qué opciones de menús pertenecen a otras opciones de menús (sub menus). Cómo crear un nuevo menú
4. Introduzca las opciones del menu y luego el resultado del menú ( submenu, comando o procedimiento) 5. A la derecha del resultado se encuentra la opción crear o modificar según el caso. ( crea o modificar los resultados de la opción del menu). 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 varias lí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 general tiene 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 se le tiene que decir que ese es el programa que se ejecutara de primero ( esto se hace haciendo clic derecho en el programa que designemos como principal y escoger 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.
Visual Foxpro 6.0 en la Web En este ejercicio pondremos un formulario de Visual Foxpro en la Web, En el proyecto tenemos el formulario s_region : Para ver el gráfico seleccione la opción ¨Bajar trabajo¨ del menú superior Así se vera el formulario en el Browser:
Con Visual Foxpro usted puede desplegar su aplicación para que sea vista desde un Browser ( de Preferencia Internet Explorer ). La modificación es mínima si usted ya tiene una aplicación. Siga las siguientes instrucciones:
Para ver el gráfico seleccione la opción ¨Bajar trabajo¨ del menú superior 2. En el evento Run de la clase pondremos el código para la llamada al formulario que queremos que se mire en la Web.
3. En el evento ContainerRelease escriba lo siguiente:
4. Salvamos la clase. 5. Establecemos como principal (Set Main) las clase que creamos.
6. Haremos una pequeña modificación en el formulario, agregaremos la instrucción CLEAR EVENT en el botón de salir: (Esto es muy importante , no se nos debe de olvidar) 7. Construya el APP de su proyecto:
Importante: En la maquina del Cliente, se deben de instalar los RUNTIME de Visual Foxpro, para que se pueda ver en el Browser.
Ing. L. Ariel Cortez S. Publicación enviada por Ing. L. Ariel Cortez S. Contactar mailto:arcosan@hotmail.com Código ISPN de la Publicación EpZVVlukyptVBNTFvv Publicado Saturday 31 de January de 2004 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. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||