Site hosted by Angelfire.com: Build your free website today!

PRACTICAS

Ahora bien, después de haber leído el curso, a continuación veras varios ejemplos para que practiques lo que aprendiste.

 

 

CREACIÓN 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

  1. Se selecciona New Table, luego aparece la ventana de guardar el archivo, seleccione el directorio y el nombre de la tabla y luego presione el boton de salvar.

 

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.

  1. Definición de campos:

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.

  1. Definición del Display

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.

  1. Definición de reglas de validación a nivel de campo

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.

  1. Nombre del Indice (name)

Introducir el Nombre del archivo índice. Es conocido también como TAG.

  1. Type ( tipo de Indice)

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.

 

 

 

 

 

 

 

 

 

 

 

 

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)

 

 

 

 

Crear una vista remota:

Clic en 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 DSN Presione el botón Add (Agregar)

  1. Escoja de la ventana el Controlador deseado, Ejemplo: Microsoft Access Driver (*.mdb) y luego el botón Finalizar.

  1. Luego aparece la Ventana de ODBC del controlador que selecciono (En este caso en de Access)

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

pruebas 2 3

 

 

 

 

 

 

 

 

 

 

 

 

 

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:

* Definición 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:

  1. En el Administrador de Proyectos, pulse documentos
  2. Pulse Formulario para seleccionar la categoría
  3. Pulse botón nuevo

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.

  1. Pulse el botón Nuevo formulario
  2. Aparecerá el Generador de formularios.

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

Caption

Carácter

Titulo de la ventana o Forma

Autocenter

Booleano

Para centrar la Forma

ShowTips

Booleano

Para que se muestren los Tooltips

Closable

Booleano

Visualiza el boton de Cerrar la Ventana (X)

MaxButton

Booleano

Visualiza el boton de Maximizar la Ventana

MinButton

Booleano

Visualiza el boton de Minimizar la Ventana

ControlBox

Booleano

Visualiza el Menu de Control de la Ventana.

Eventos o Métodos más comunes de la Forma

Nombre

Descripción

INIT

Se dispara a la hora que se inicializa todos los objetos de la forma.

Load

Se dispara antes que se inicialicen los objetos de la forma (antes que Init)

Destroy

Se dispara al cerrar la forma

Unload

Se dispara despues de Destroy.

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.

1.      Pulse el botón Marco de página (page frame) en la barra de herramientas Controles de formulario.

  1. Sitúe el cursor en la esquina superior izquierda de form1. ( El cursor cambia su forma a cruceta)
  2. Pulse en la esquina superior izquierda del formulario y arrastre el cursor hacia la esquina inferior derecha para crear un marco de página que cubra la mayor parte de la ventana form1. Deje un espacio de unos dos centímetros en la parte inferior del formulario para los botones de comando que se agregarán después en esta lección.

Propiedades mas comunes de la páginas :

Nombre

Tipo de dato

Descripción

Pagecount

Númerico

Fija el número de Folders o páginas (Page1, page2...)

TabStyle

Númerico

Justificacion de las páginas.

Visible

Booleano

Si el control es visible al usuario.

 

 

 

Agregar cuadros de texto y cuadros de edición:

Cómo agregar objetos en la pagina 1 (page1):

  1. Con el botón derecho del ratón, pulse sobre Page1 en el formulario. Aparece un menú instantaneo
  2. Seleccione la ventana propiedades

Aparece el cuadro de diálogo propiedadades, donde muestra Page1 en el cuadro de texto.

  1. Pulse el botón Flecha hacia abajo.
  2. Seleccione Page1 en el cuadro de texto Objeto.

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:

  1. Seleccione Ver el menú Generador de Formularios
  2. Seleccione Entorno de Datos (Data Environment)
  3. Seleccione Entorno de datos (Data Environment) en el menú de Visual Foxpro y luego Agregar.

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.

  1. Confirme si es la Base de Dato deseada.
  2. Pulse dos veces en la tabla a utilizar.
  3. Seleccione el campo deseado en la lista de campos de la tabla, arrástrelo hacia el formulario y déjelo en cualquier parte del mismo.

En el formulario aparecerá el cuadro de texto.text1

  1. Pulse y arrastre el cuadro de texto text1 a la posición que desee.

Sugerencia: Para desplazar un control de texto, pulse sobre él y arrástrelo 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):

Nombre

Tipo de dato

Descripción

Controlsource

Según la variable

Es la variable o nombre del campo al cual hace referencia.

Value

Según la variable

Contenido de la variable o campo referenciado en controlsource

Visible

Booleano

Si el control es visible al usuario.

Enabled

Booleano

Si el control esta habilitado o no.

Control Botón de Comando:

Propiedades mas comunes del Botón :

Nombre

Tipo de dato

Descripción

Caption

Carácter

Etiqueta del comando (Ej. Click Aquí)

Visible

Booleano

Si el control es visible al usuario.

Enabled

Booleano

Si el control esta habilitado o no.

Eventos o Métodos más comunes del control

Nombre

Descripción

INIT

Se dispara a la hora que se inicializa el objeto

Clic

Se dispara al dar click en el objeto

Setfocus

El cursor se va al objeto.

Lostfocus

Se dispara cuando el objeto pierde el cursor.

Refresh

Refresca el objeto.

Cómo asociar un procedimiento a un botón:

  1. Haga doble click en el boton. Aparece una ventana de código:

 Control Botón de Cuadro de Edición:

Se utiliza para los campos memo.

Propiedades mas comunes del control de edición

Nombre

Tipo de dato

Descripción

Controlsource

Según la variable

Es la variable o nombre del campo al cual hace referencia.

Value

Según la variable

Contenido de la variable o campo referenciado en controlsource

Visible

Booleano

Si el control es visible al usuario.

Enabled

Booleano

Si el control esta habilitado o no.

Eventos o Métodos más comunes del control de edición

Nombre

Descripción

INIT

Se dispara a la hora que se inicializa el objeto

Clic

Se dispara al dar click en el objeto

Setfocus

El cursor se va al objeto.

Lostfocus

Se dispara cuando el objeto pierde el cursor.

Valid

Se dispara despues de presionar Enter o Tab, se utiliza para validar.

Refresh

Refresca el objeto.

 

Control de Opciones:

Propiedades mas comunes del control de opciones

Nombre

Tipo de dato

Descripción

Controlsource

Númerico

Es la variable o nombre del campo al cual hace referencia.

Value

Númerico

Contenido de la variable o campo referenciado en controlsource

Visible

Booleano

Si el control es visible al usuario.

Enabled

Booleano

Si el control esta habilitado o no.

Eventos o Métodos más comunes del control de opciones

Nombre

Descripción

InteractiveChange

Se dispara cuando modificamos el campo

INIT

Se dispara a la hora que se inicializa el objeto

Clic

Se dispara al dar click en el objeto

Setfocus

El cursor se va al objeto.

Lostfocus

Se dispara cuando el objeto pierde el cursor.

Valid

Se dispara después de presionar Enter o Tab, se utiliza para validar.

Refresh

Refresca el objeto.

Control Check:

Propiedades mas comunes del control Check

Nombre

Tipo de dato

Descripción

Controlsource

Booleano

Es la variable o nombre del campo al cual hace referencia.

Value

Booleano

Contenido de la variable o campo referenciado en controlsource

Visible

Booleano

Si el control es visible al usuario.

Enabled

Booleano

Si el control esta habilitado o no.

Eventos o Métodos más comunes del control Check

Nombre

Descripción

InteractiveChange

Se dispara cuando modificamos el campo

INIT

Se dispara a la hora que se inicializa el objeto

Clic

Se dispara al dar click en el objeto

Setfocus

El cursor se va al objeto.

Lostfocus

Se dispara cuando el objeto pierde el cursor.

Valid

Se dispara despues de presionar Enter o Tab, se utiliza para validar.

Refresh

Refresca el objeto.

Control Grid:

Propiedades mas comunes del control Grid:

Nombre

Tipo de dato

Descripción

Recordsource

Carácter

Nombre de la tabla

Visible

Booleano

Si el control es visible al usuario.

Enabled

Booleano

Si el control esta habilitado o no.

ColumnCount

Númerico

Numero de columnas del Grid

Deletemark

Booleano

Permite registro para borrar ( Aparece en la parte izquierda del Grid)

Eventos o Métodos más comunes del control Grid:

Nombre

Descripción

INIT

Se dispara a la hora que se inicializa el objeto

Clic

Se dispara al dar click en el objeto

Setfocus

El cursor se va al objeto.

Lostfocus

Se dispara cuando el objeto pierde el cursor.

Refresh

Refresca el objeto.

Control Listas:

Propiedades mas comunes del control Listas

Nombre

Tipo de dato

Descripción

Controlsource

Según la variable

Variable a que hace referencia (campo donde se almacena el valor de la lista)

RowSource

Carácter

Tabla o query de los elementos de la lista

RowSourceType

Numérico

Tipo de la Fuente (Si es tabla o query.)

Visible

Booleano

Si el control es visible al usuario.

Enabled

Booleano

Si el control esta habilitado o no.

BoundColumn

Numérico

Valor que retorna la lista (Número de la columna del RowSource )

BoundTo

Booleano

Especifica si el valor de la lista esta determinado por los valores o por la propiedad ListIndex

Eventos o Métodos más comunes del control Listas

Nombre

Descripción

InteractiveChange

Se dispara cuando modificamos el campo

INIT

Se dispara a la hora que se inicializa el objeto

Clic

Se dispara al dar click en el objeto

Setfocus

El cursor se va al objeto.

Lostfocus

Se dispara cuando el objeto pierde el cursor.

Valid

Se dispara después de presionar Enter o Tab, se utiliza para validar.

Refresh

Refresca el objeto.

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:

1.      Abra su proyecto

  1. Ubíquese en la pestaña de documentos (document) y luego en Formas (Forms).
  2. Presione el Botón Nuevo (New).

  1. Seleccione Wizard.

Aparece la siguiente ventana:

Seleccione Form Wizard y OK.

  1. Luego aparece la ventana donde usted escoge la tabla a utilizar y los campos de esa tabla.

 Para ver el gráfico seleccione la opción ¨Bajar trabajo¨ del menú superior 

  1. Una vez seleccionado la tabla y sus respectivos campos, presiones próximo (Next).
  2. Se visualizará la siguiente ventana:

 Para ver el gráfico seleccione la opción ¨Bajar trabajo¨ del menú superior 

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

1.      Abra su proyecto

  1. Ubíquese en la pestaña de documentos (document) y luego en Formas (Forms).
  2. Presione el Botón Nuevo (New).
  3. Seleccione Nueva Forma en blanco.
  4. En la forma en blanco presione el botón derecho del ratón y luego Entorno de Datos (Data Environment)

 

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 tablas region a su forma, de tal manera que queden asi:

8. Luego arrastre toda la tablas dept al formulario

1.      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 :

Botón

Código

Agregar

INSERT INTO s_dept ( region_id ) ;

VALUES (s_region.Id)

 

<<

SKIP -1

>>

SKIP

Eliminar

DELETE IN s_dept

Grabar

SELECT s_dept

=TABLEUPDATE(.T.)

Cancelar

SELECT s_dept

=TABLEREVERT(.T.)

Salir

THISFORM.Release

Código a nivel de Forma :

Método

Código

Destroy

SELECT s_dept

=TABLEREVERT(.T.)

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:

1.      Abra su proyecto

  1. Ubíquese en la pestaña de classes.
  2. Presione el Botón Nuevo (New).

  1. Introduzca el nombre de la clase, el tipo de clase (en este caso Boton de comando) y guardarlo como curso.
  2. Inmediatamente aparecerá la siguiente pantalla:

  1. Personalice el botón y luego cierre la ventana y sálvelo.

  1. La clase que usted a creado aparecerá en la pestaña clases de su proyecto:

 

Cómo hacer uso de la clase :

  1. Cree o Abra una forma

2. presione el botón de ver clases y luego agregar (Add) y seleccione la clase que usted a creado.

  1. Aparecerá la clase que usted a creado con el botón de salir

  1. Para poner el botón en la forma, seleccione el botón en la barra de controles y luego clic en la forma.

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

·                     Microsoft Progress Bar Control

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:

  1. Abra o Cree una nueva forma.
  2. Seleccione Ver clases
  3. Seleccione ActiveX Control
  4. Seleccione el control deseado, en este caso el Outline Control y póngalo en 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:

Método

Código

 

 

 

 

 

Init

*-------------------------------------

* Cargar el OCX

*-------------------------------------

*--------

pnIndex = 0

THIS.Additem( "Regiones" )

THIS.Indent( pnIndex ) = pnIndex

Select s_region

SCAN

pnIndex = pnIndex + 1

datos = ALLTRIM(name)

THIS.Additem(datos)

THIS.Indent( pnIndex ) = 1

THIS.PictureType(pnindex) = 2

THIS.ListIndex = pnindex

THIS.ItemData(pnIndex) = RECNO()

ENDSCAN

 

Click

SELECT s_region

GO RECORD THIS.ItemData(THIS.ListIndex)

THISFORM.REFRESH()

 

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 :

Propiedad

Descripción

Max

Máximo valor de la Barra (númerico)

Min

Mínimo valor de la Barra (númerico)

Value

Valor actual de la barra (númerico)

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:

·                     El campo de la tabla debe ser tipo General

·                     Utilizar el control OLE Bound Control de Visual Foxpro

·                     Utilizar el Comando APPEND GENERAL

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:

Aplicación

Nombre de la clase

Paintbrush Picture

PAINT.PICTURE

Documento de Word 97

WORD.DOCUMENT

Hoja de Calculo de Excel

EXCEL.SHEET

Como conocer el nombre de clase de una aplicación Windows:

  1. Cree un formulario nuevo
  2. Inserte en el formulario el control OLE Container Control
  3. Insertar la Aplicación deseada: (Escoger el objeto y luego OK)

  1. Luego en las propiedades del objeto insertado buscar la propiedad OLECLASS:

 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

--------------------------------------------

Región 1 1 2 0

Región 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

  1. 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 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ú

1.      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.

  1. Seleccione menús en la lista de categorías
  2. Pulse el botón nuevo y escoja si es Menu o un Shortcut

 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:

·                     Teclas de Acceso directo

·                     Mensajes del menú

·                     Condición de habilita/No habilitar

Generación del menú :

  1. En el menú escoja la opción Menú.
  2. Se le pregunta si desea grabar los cambios ( responda que si)
  3. Luego se le pide que proporcione el archivo de salida del menu ( escoja la ruta y el nombre del archivo, por lo general son extension MPR) y luego seleccione generar.
  4. Si existe ya el archivo se le pide si desea re-escribirlo ( seleccione que si)

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

·                     Para volver a re establecer el menú por default de Visual Foxpro utilice la instrucción: SET SYSMENU TO DEFAULT

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.

·                     En las opciones es recomendable seleccionar Recompile All y display Error, para recompilar todos sus programas y formularios ; y Por si hay un error mostrarlo al final de la generación del Ejecutable.

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 :

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:

  1. Desde su proyecto, crearemos una clase nueva, Basada en Documento Activo (ActiveDoc):

 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:

  1. Ejecute el APP desde Internet Explorer:

 

 

 

 

 

 

 

Practica 1

Según la siguiente hoja, evalúa los datos que puedan servir para realizar una tabla de Inventario, construye la estructura, tomando en cuenta algunos datos que puedan enriquecer la tabla.

Computadoras SYSTEM S.A.

Inventario físico al _____ de __________ del 2001

 

 

Código

 

Descripción

 

Marca

 

Exist.

Precio

Costo

Precio

Venta

 

Proveedor

M025

Monitor 14"

Acer

50

900.00

1080.00

Procom S.A.

M026

Monitor 12"

Acer

102

850.00

1020.00

Procom S.A.

M027

Monitor Radius

Acer

10

1100.00

1320.00

Procom S.A.

CA01

Case Mini tower Deluxe

ADS

300

105.00

126.00

Distribuidora SalCom

CA02

Case Desk Top

ADS

100

125.00

150.00

Distribuidora SalCom

IMC1

Impresor Color JET 1000

Canon

25

367.00

440.40

Procom S.A.

IMC2

Impresor color JET 2000

Canon

15

452.25

542.70

Procom S.A.

Agrega 20 registros a la tabla.

Utiliza los comandos Use, Browse, List y Display, según te indique el instructor y anota en tu cuaderno lo que pasa.

Manipulación de registros

Puedes utilizar diferentes tipos de comando para manipular los datos de tu tabla, estos comandos pueden utilizarse desde su modo más simple hasta su forma compuesta utilizando expresiones de dominio, por ejemplo:

LIST FOR país = "ES" && lista los registro que país = "ES"

He aquí algunos comandos con sus expresiones de dominio:

DISPLAY ALL

DISPLAY RECORD 5

GOTO 17

GO TOP

GO BOTTOM

SKIP -3

DELETE RECORD 6

LIST FOR precio >1200

BROWSE FOR precio >=900 .AND. precio <2500

GO 6

RECALL

PACK

ZAP

Mencionaremos otros comandos que son de gran ayuda al momento de manipular los datos:

APPEND

Agrega registros a la base de datos seleccionada

APPEND FROM

Agrega registros desde otra tabla al final de los registros de la tabla seleccionada

COPY FILE

Copia cualquier tipo de archivos

COPY STRUCTURE

Almacena la estructura de una base de datos en una nueva base

COPY TO

Copia datos de una base de datos a un archivo

COUNT

Determina el nùmero de registro en la base de datos

DISPLAY FILES

Muestra información de base de datos

DISPLAY MEMORY

Despliega la información de las variables de memoria

DISPLAY STATUS

Despliega información de la condición de FOX

DISPLAY STRUCTURE

Muestra la estructura de una base de datos

MODIFY COMMAND

Abre una ventana de modificación de texto

MODIFY STRUCTURE

Modifica la estructura de una base de datos

REPLACE

Actualiza los registros en una base de datos

Otro tipo de comandos útiles para la manipulación de tablas y registros son las FUNCIONES, las cuales se dividen en:

a.     Cadenas o manejo de caracteres: este grupo de funciones gestiona el manejo de caracteres.

b.     Matemáticas: permiten efectuar operaciones con valores numéricos.

c.Manejo de fechas y hora: se encarga de gestionar las variables de tipo fecha.

d.     Lógicas: Se encargan de efectuar operaciones de tipo lógico.

e.     Funciones de conversión de tipos: conviertes variables de un tipo a otro.

Antes de mostrar ejemplos definiremos dos componentes que se hacen necesarios en la manipulación de datos:

Constante: Son valores predefinidos que no cambian nunca por ejemplo: valor1=15478, cadena="abcd".

Variable: Se utilizan como identificadores de secciones de memoria donde se guarda información, por ejemplo: var1=campo1, var2=tabla.campo.

Las variables se pueden definir como: publicas, privadas y locales ejemplo:

PUBLIC nombre, apellidos

PRIVATE sueldo

Operadores relacionales

Los operadores se utilizan en tiempo de ejecuciòn para unir dos o màs elementos del lenguaje.

Operadores aritméticos

( ) Agrupa subexpresiones

**, ^ Exponenciación

*, / Multiplicaciòn y división

% Módulo (resto de la división)

+, - Suma y resta

Operadores relacionales

< Menor que

> Mayor que

<= Menor o igual que

>= Mayor o igual que

= igual a

<>, #, ¡=Distinto de

$ Contenido en

Ejemplos con funciones en Visual FoxPro.

* Declaración de variables

cadena1 = SPACE(15)

cadena2 = SPACE(15)

número = 0

cuenta = 0

* Asignación de datos

cadena1 = "abcd efgh ijkl"

* utilizando la función LEN para contar el número de la cadena

? LEN(Cadena1) && imprime en pantalla 14

? Cadena2= SUSBTR(cadena1,1,4) && imprime en pantalla abad

? DTOC(DATE())

? SIN (0)

 

 

 

 

 

 

 

 

 

 

 

Practica 2

1.     Abre la tabla de inventario.

    1. Escribe la siguiente instrucción SORT ON código TO inventario ordenado.
    2. Aplica un BROWSE y abre la nueva tabla y BROWSE, compara ambas.
    3. Cierra las tablas en uso escribiendo la siguiente sentencia CLOSE ALL.
    4. Haremos una copia del archivo inventario.dbf COPY FILE inventario.dbf TO inventa.dbf.
    5. Ahora ordenaremos la tabla por medio de un índice escribiendo la siguiente sentencia INDEX ON CODIGO TO CODIGO; le estas diciendo que el índice va ha ser por medio de código y que el archivo índice se llamará CODIGO solo que este con extensión IDX, visualiza el archivo escribiendo DIR *.IDX.
    6. Ahora cierra la tablas. Y vuelve a abrirla escribiendo USE INVENTARIO INDEX CODIGO.
    7. Busca un registro haciendo uso del comando SEEK, de la forma siguiente SEEK <expresión> por ejemplo SEEK "MO01"; recuerda si el campo es de tipo numérico no se le colocan comillas.
    8. Ahora DISPLAY, y veras que te aparece el registro que buscaste por medio del índice.

Ejercicio:

Crea una tabla que guarde los datos de tus compañeros y pon un índice por el campo que creas conveniente y práctica lo anterior.

También puedes indexar una tabla, desde el generador de tablas de FoxPro marcando la casilla que se muestra en la figura:

Primero tienes que seleccionar el campo que servirá como índice, luego selecciona la ficha de modo que te aparezca la siguiente pantalla:

Tienes que elegir el tipo de de índice el cual le indicara a la tabla que tipo de índice tiene. Los tipos de índices son los siguientes:

Principal: No admites claves duplicadas, actúa como referente a un registro de una tabla, de forma que no puede haber dos registros con la misma clave.

Candidato: Este índice tampoco admite claves duplicadas. Puede haber más de uno por tabla.

Único: En este índice sólo se guardan aquellos valores que sean distintos entre sí, pero sí admite registros con valores duplicados.

Regular: Es el índice típico. Admite claves duplicadas.

 

 

 

Práctica

1.                 Diseña un formulario que represente y baucher de notas y que al escribir las notas calcule los promedios finales. (Puedes mejorarlo si los datos los vas almacenando en una tabla).

2.                 Realiza un programa que calcule el pago de una planilla donde el pago mínimo es de $240.00, construye la tabla y has que los datos se almacenen en ella, toma en consideración, el pago por horas, horas extras, los descuentos necesarios y las comisiones tomando en consideración la siguiente tabla:

Si las ventas < $1700.00 no hay comisión

Si las ventas>=$1700.00 y <$2500.00 la comisión es del 3%

Si las ventas>=$2500.00 y <$3200.00 la comisión es del 5%

Si las ventas>=$3200.00 y <$3700.00 la comisión es del 7%

Si las ventas>=$3700.00 la comisión es del 10%

3.      Utilizando tu base de datos de Inventario construye el mantenimiento respectivo sin utilizar el WIZARD.

 

 

Práctica 2

Crea una carpeta llamada Sistema de clientes, dentro de ella crea otras subcarpetas y nómbralas así: datos, formularios, gráficos e informes.

Utilizando el método de carpetas, te aseguras que tu proyecto se vea ordenado y clasificado.

Ahora cada objeto que crees de este ejemplo aseguraté que lo guardas en el lugar indicado de lo contrario no funcionará debidamente.

Crea el proyecto

Selecciona Archivo / Nuevo / Proyecto

Guárdalo en la carpeta Sistema de clientes con el nombre de Clientes.

Crea la base de datos

De tu proyecto elige la ficha datos / Nuevo

Guárdalo en la carpeta Sistema de clientes / datos con el nombre de Clientes

 

[EXAMEN]