curso de microsoft visual fox pro for windows
DESCRIPTION
TRANSCRIPT
Curso de Microsoft Visual FoxPro For Windows
Indice del Curso:
Capitulo I
Capitulo II
Capitulo III
Capitulo IV
Capitulo V
o CAPITULO I
1.-Entorno de Visual Fox Pro 9.0
En Visual Fox pro se puede crear rápidamente formas, menú e informes con los patrones visuales y herramientas de diseño. Adopta la apariencia de los últimos productos Microsoft: barras de estado, botones con pista, menú contextual, etc.
Visual Fox Pro 9.0 cada acción que tu realizas es un evento: El movimiento del mouse, hacer clic sobre un botón, escribir un texto en un cuadro de texto, Etc. Es decir que cuando programes ese evento solo eso sucederá.
Es un lenguaje de programación que opera bajo la plataforma de Windows, es decir, el programa identificara las acciones que lleva a cabo el usuario durante su ejecución.
Herramientas de Visual Fox Pro
1
Barra de Menú
Por medio de esta barra podemos acceso todas las opciones de Visual Fox Pro, nos ofrece abrir o crear una base de dato, crear un reporte, etc.
Barra de Herramientas.
Por medio de esta barra de herramientas tenemos acceso a las opciones de Visual Fox Pro sin necesidad de ir a la barra de menú y tener un acceso rápido.
La Venta de Comando
2
La ventana de comando nos sirve para escribir ciertos comandos que explicaremos después.
La ventana de Controles.
La ventana de controles permite al usuario seleccionar opciones, introducir datos y escoger acciones. En un formulario, estos objetos pueden incluir casillas de verificación, botones de comando y cuadro de texto.
Botón Descripción
Seleccionar objetos. Cambia el tamaño y mueve controles. Una vez creado un control, el botón "Seleccionar objetos" se volverá a seleccionar automáticamente, a menos que esté presionado el botón "Bloqueo del botón".
Ver clases. Permite seleccionar y mostrar una biblioteca de clases registrada. Después de seleccionar una clase, la barra de herramientas sólo muestra botones para las clases de la biblioteca seleccionada.
3
Etiqueta. Crea un control Label, que se usa para texto que no quiere que el usuario cambie, como el título que aparece encima de las casillas de verificación o debajo de un gráfico.
Cuadro de texto. Crea un control TextBox, que se usa para almacenar una única línea de texto que el usuario puede introducir o cambiar.
Cuadro de edición. Crea un control EditBox, que se usa para almacenar varias líneas de texto que el usuario puede introducir o cambiar.
Botón de comando. Crea un control CommandButton, que se usa para ejecutar un comando.
Grupo de comandos. Crea un control CommandGroup, que se usa para agrupar comandos relacionados.
Grupo de opciones. Crea un control OptionGroup, que se usa para mostrar múltiples opciones entre las que el usuario sólo puede seleccionar una.
Casilla de verificación. Crea un control CheckBox, que ofrece al usuario la posibilidad de elegir entre una condición verdadera o falsa, o muestra varias opciones entre las que el usuario puede seleccionar más de una.
Cuadro combinado. Crea un control ComboBox, que se usa para crear un cuadro combinado desplegable o una lista
4
desplegable de forma que el usuario pueda seleccionar un elemento de una lista o introducir manualmente un valor.
Cuadro de lista. Crea un control ListBox, que se usa para mostrar una lista de elementos entre los que puede elegir el usuario. Es posible recorrer la lista si tiene más elementos de los que se pueden mostrar de una vez.
Control numérico. Crea un control Spinner, que se usa para aceptar datos numéricos introducidos por el usuario que quedan dentro de un intervalo.
Cuadrícula. Crea un control Grid, que se usa para mostrar datos en una cuadrícula tipo hoja de cálculo.
Imagen. Muestra una imagen gráfica en su formulario.
Cronómetro. Intercepta eventos Timer a intervalos establecidos. Este control es invisible en tiempo de ejecución.
Marco de página. Muestra varias páginas de controles.
5
Control contenedor OLE. Le permite agregar objetos OLE a su aplicación.
Control OLE dependiente. Al igual que los controles contenedores OLE, le permite agregar objetos OLE a su aplicación. Sin embargo, a diferencia de los controles contenedores OLE, los controles OLE dependientes están vinculados a un campo de tipo General.
Línea. Se usa para dibujar diversos estilos de línea en su formulario en tiempo de diseño.
Forma. Se usa para dibujar diversas formas en su formulario en tiempo de diseño. Puede dibujar un rectángulo, un rectángulo redondeado, un cuadrado, un cuadrado redondeado, un óvalo o un círculo.
Separador. Agrega espacio entre los controles de la barra de herramientas.
Bloqueo del generador. Abre un generador para el nuevo control que agrega al formulario.
Bloqueo del botón. Le permite agregar varios controles del mismo tipo sin tener que hacer clic en el botón del control en la barra de herramientas más de una vez.
6
Propiedades
Son los atributos que se aplican sobre los controles.
Ejemplo:
Color, tipo de letra, nombre, texto, etc.
ALGUNAS PROPIEDADES COMUNES:
Name (Nombre): Especifica el nombre que se le asigne al control, u solo a través de él se puede acceder a las propiedades y métodos de los controles.
Back Color (Color de Fondo): Asigna el color de fondo sobre el que aparece el texto o se dibujan los gráficos.
7
Fore Color (Color de Primer Plano): Asigna un color al primer plano (color de la tinta o del texto).
Font (Fuente o Tipo de Letra): Asigna el tipo de letra, los atributos y el tamaño de la fuente que se usa para un control de texto (el texto en un control TextBox, el título de una etiqueta o de un botón de comando, etc.).
Caption (Título): Asigna el texto que aparece en muchos controles y que el usuario no puede introducir, por ejemplo el texto de un control Label, el título de un botón de comando, o de una cadena de caracteres que se muestran en un cuadro de activación o en un botón de opción.
Text (Texto): Asigna el texto que se muestra en los controles y acepta que lo introduzca el usuario, por ejemplo, el control TextBox.
Width (Ancho) y Height (Alto): Estas propiedades determinan las dimensiones de los controles.
Left (Izquierda) Top (Arriba): Estas propiedades asignan las coordenadas de la esquina superior izquierda del control y se expresan en las unidades del contenedor (normalmente de un formulario).
Enabled (Activado): Su valor es True por omisión, y significa que el control se puede usar. Si se pone False se desactiva el control, aparece en gris y no se puede usar.
Visible: Esta propiedad se pone como False para que el control sea invisible.
Pasos para cambiar valores a propiedades en tiempo de diseño:
1.- Presionar clic sobre el botón deseado.
2.-Abrir la ventana de propiedades.
8
3.-Buscar la propiedad de manera alfabética o otras categoría.
Evento
Es una acción que el usuario efectúa sobre un objeto o control y este a su vez realizara una tarea determinada, el programador deberá analizar los evento que se pueden llevar a cabo sobre un control determinado.
Un evento genera una tarea si no existe una tarea, por aquel evento, no pasara nada.
Ejemplo
Clic
DbllicK
Keypress
Activate
Mousemove
Entre otros
Controles de Formulario
Cuadro de texto.- También denominado control de campo de edición, muestra la información introducida en tiempo de diseño por el usuario o asignada al control en código en tiempo de
ejecución.
Propiedades
9
Alignment.- Devuelve o establece la alineación de un control checkbox u optionbutton, o el texto de control.
BorderStyle.- devuelve o establece el estilo del borde del objeto.
Name.-Devuelve el nombre usado en el código para identificar un objeto.
PasswordChar.- Devuelve o establece un valor que determina si se muestra en un control los caracteres escritos por un usuario o los caracteres marcadores.
Text.- Devuelve o estable el texto contenido en el control.
Las propiedades más comunes
Backcolor.- Devuelve o establece el color de fondo usado para mostrar texto gráficos en un objeto.
FontName.- Devuelve un objeto de Font.
Forecolor.- Devuelve o establece el color de primer plano usado para mostrar texto y gráficos en un objeto.
Eventos
MouseMove.- Al mover el ratón por encima del control.
MouseDown.- Al pulsar cualquier botón del ratón.
Change.- Al cambiar el contenido del control.
Click.- Al hacer click con el botón izquierdo del ratón sobre el control.
DblClick.- Al hacer doble click con el botón izquierdo.
GotFocus.- Este evento se activa cuando el control recibe el enfoque, es decir, cuando se activa el control en tiempo de ejecución para introducir datos en el o realizar alguna operación.
10
LostFocus.- Este control es lo contrario del evento anterior, se activa cuando el control pierde el enfoque, es decir, se pasa a otro control para seguir introduciendo datos.
ETIQUETA
Es un control de graficos utilizado para mostrar texto que el usuario no podrá cambiar directamente.
Propiedades
Alignment.- Devuelve o establece la alineación de un control checkbox u optionbutton, o el texto de control.
BorderStyle.- devuelve o establece el estilo del borde del objeto.
Caption.- Devuelve o estable el texto mostrado en la barra de titulo de un objeto o bajo el icono de un objeto.
Recuerda:
Para este control no se suele utilizar eventos ya que su contenido cambia poco a lo largo de la ejecución de la aplicación.
Botón de Comando
Denomina botón de comando, permite comenzar, interrumpir o terminar un proceso cuando esta activado.
CASILLA DE VERIFICACION.
11
Muestra un visto cuando esta activado y desaparece cuando el control Checkbox se desactiva.
Utilice este control para ofrecer al usuario una opción de tipo Verdadero o Falso o Si o No.
También lo puede utilizar en grupos para mostrar múltiples opciones.
Boton de opciones.
Muestra una opción que se puede activar o desactivar, generalmente viene en grupos.
Propiedades de los controles.
STR() convierte de número a carácter y VAL() convierte de
carácter a numérico.
THISFORM (Referencia de objeto)
Proporciona una referencia al formulario actual en el código de evento o en la definición de clase del formulario.
Aplicación Nº 1
12
Codifique un programa que ingrese dos valores, y sacarle el IVA
y el resultado total.
Procedimiento Calcular
13
CAPITULO II
ESTRUCTURA DE CONTROL
Ejecuta condicionalmente un grupo de instrucciones, dependiendo
el valor de una expresión
Se clasifican:
SENTENCIAS DE CONTROL DE FLUJO:
If…Then…EndIf:
La estructura If comprueba una condición especifica y, si es verdadera, ejecuta las sentencias que le siguen. La estructura If puede tener o una sola línea, o varias líneas. Para ejecutar una sentencia condicional se usa la sintaxis de una sola línea:
If condición Then sentencia
Se evalúa la condición y, si es verdadera, ejecuta la sentencia que viene a continuación. Si la condición no es verdadera, continua con la sentencia siguiente de la estructura.
La sintaxis de varias líneas:
If condición Then
15
sentencias
EndIf
If…Then…Else…EndIf:
Una variación de la sentencia If …Then es la sentencia If…Then…Else … EndIf, que ejecuta un bloque de sentencias si la condición es verdadera, y otro bloque si es falsa. La sintaxis de la sentencia If … Then … Else EndIf es:
If condición Then
Bloque de sentencias 1
Else
Bloque se sentencias 2
EndIf
Visual FoxPro evalúa la condición y, si es verdadera, ejecuta el primer bloque de sentencias y luego salta a las sentencias que hay después de EndIf. Si la condición es falsa, Visual FoxPro ignora el primer bloque de sentencias y ejecuta las que hay a continuación de la palabra clave Else.
Otra variación de la sentencia If … Then … Else usa varias condiciones con la palabra clave ElseIf:
If condición 1 Then
Bloque de sentencias 1
16
Else If condición 2 Then
Bloque se sentencias 2
Else If condición 3 Then
Bloque se sentencias 3
Else
Bloque se sentencias 4
End If
Podemos poner cualquier número de cláusulas desde arriba y, si una de ellas es verdadera, se ejecuta el bloque de sentencias correspondiente. La cláusula Else se ejecutará si ninguna de las expresiones anteriores es verdadera.
Ejemplo:
If puntuación < 50 Then
Resultado = “No admitido”
Else If puntuación < 75 Then
Resultado = “Pasable”
Else If puntuación > 90 Then
Resultado = “Muy bueno”
Else
Resultado = “Excelente”
EndIf
ESTRUCTURAS IF … THEN MÚLTIPLES:
17
Observamos que una vez que se ha encontrado una condición verdadera, Visual FoxPro ejecuta las sentencias asociadas, salta el resto de las cláusulas y continua con la ejecución del programa con las sentencias que hay después de EndIf. Por esta razón podemos usar la siguiente estructura, más complicada, de varias sentencias If simples:
If puntuación < 50 Then
Resultado= “No admitido”
EndIf
If puntuación < 75 And puntuación >= 50 Then
Resultado= “Pasable”
EndIf
If puntuación < 90 And puntuación >= 75 Then
Resultado= “Muy bueno”
EndIf
If puntuación > 90 Then
Resultado= “Excelente”
EndIf
DO CASE:
La estructura Do Case compara la misma expresión con diferentes valores. La ventaja de esta sentencia sobre If … Then múltiples hace que el código sea más fácil de leer y mantener.
La estructura Do Case comprueba una sola expresión, que se evalúa una sola vez al principio de la estructura. El resultado de esta comprobación se compara con varios valores y, si coincide
18
con uno de ellos, se ejecuta el bloque de sentencias correspondiente. Sintaxis:
Do Case
Case <Condición 1>
Bloque de sentencias 1
Case <Condición 2>
Bloque de sentencias 2
.
.
.
EndCase
Ejemplo:
Opc=this.value
Do Case
Case opc=1
NombreDía= “Lunes”
Mensaje= “Feliz semana”
Case opc=6
NombreDía= “Sábado”
Mensaje= “Feliz fin de semana”
Case opc=7
NombreDía= “Domingo”
19
Mensaje= “ ¿Has tenido un buen fin de semana”
EndCase
La variable opc que se evalúa al principio de la sentencia, es el número de día de la semana. Después se compara el valor de la expresión con los valores que tiene cada palabra clave Case. Si coincide, se ejecuta el bloque de sentencias que viene a continuación, y después salta el programa a la sentencia siguiente al EndCase.
SENTENCIAS DE CONTROL DE BUCLE:
DO WHILE… ENDDO:
Ejecuta un bloque de sentencias mientras la condición sea verdadera. Visual FoxPro evalúa la expresión y, si la expresión es falsa, el programa continúa con las sentencias que van después del bucle.
Para ejecutar un bloque sentencias mientras la condición sea verdadera, se usa la siguiente sintaxis:
Do While condición
Bloque de sentencias
Enddo
El bucle Do se repite todas las veces que sea necesario siempre que la condición sea verdadera (o distinta de cero si la condición evalúa un número).
20
FOR … ENDFOR/NEXT: El bucle For … Next es una de las estructuras de bucle más antiguas dentro de los lenguajes de programación. A diferencia del bucle Do, el bucle For … Next requiere que se conozca el número de veces que se van a ejecutar las sentencias del bucle. Este bucle es una variable (llamada el contador del bucle) que incrementa o disminuye su valor durante cada repetición del bucle. Su sintaxis es:
For contador = principio To final [Step incremento]
Sentencias
Next/EndFor [contador]
(las palabras entre corchetes son opcionales). Los argumentos contador, principio, final e incremento son todos numéricos. El bucle se ejecuta hasta que el contador llegue (o exceda) el valor final.
Cuando ejecuta un bucle For … Next, Visual FoxPro hace lo siguiente:
1. Pone contador con el valor de principio.2. Comprueba si contador es mayor que final. Si lo es, sale del
bucle. Si incremento es negativo, Visual FoxPro comprueba si contador es menor que final, en cuyo caso sale de bucle.
3. Ejecuta el bloque de sentencias.4. Incrementa contador con el valor de incremento. Si no se ha
especificado incremento, el contador se incrementa en 1.5. Repite las sentencias.
La parte más importante a tener en cuenta cuando se trabaja con bucle For Next/EndFor es que el contador del bucle se establece
21
al principio del bucle. Si cambiamos el valor de la variable final mediante una sentencia dentro del bucle, no se detecta el cambio y se ejecuta como si no se hubiera producido.
WITH ... ENDWITH: Especifica múltiples propiedades para un objeto.
Sintaxis
WITH NombreObjeto
[Instrucciones]
ENDWITH
NombreObjeto: Especifica el nombre del objeto. NombreObjeto puede ser el nombre del objeto o una referencia a éste. Ejemplo With Thisform
Instrucciones: Instrucciones puede constar de cualquier número de comandos de Visual FoxPro empleados para especificar propiedades para NombreObjeto. Sitúe un punto delante de Instrucción para indicar que es una propiedad de NombreObjeto.
Propiedad o palabra clave
Referencia
ActiveControl El control del formulario activo actualmente que tiene el enfoque
ActiveForm El formulario activo actualmente
22
ActivePage La página activa del formulario activo actualmente
Parent El contenedor más inmediato del objeto
THIS El objeto, o un procedimiento o evento del objeto
THISFORM El formulario que contiene el objeto
THISFORMSET El conjunto de formularios que contiene el objeto
THISFORM: Proporciona una referencia a un Form antes de crearlo.
Sintaxis:
THISFORM.NombrePropiedad | NombreObjeto
Argumentos:
NombrePropiedad: Especifica una propiedad para el Form.
NombreObjeto: Especifica un objeto del Form.
Comentarios: THISFORM proporciona, dentro de un método, una referencia al Form en el que está situado un objeto o a la propiedad de un Form. THISFORM permite hacer referencia a un objeto o una propiedad del formulario sin utilizar múltiples propiedades Parent.
THIS: Proporciona una referencia a un objeto antes de crearlo.
Sintaxis:
23
THIS.NombrePropiedad | NombreObjeto
Argumentos:
NombrePropiedad: Especifica una propiedad para la clase.
NombreObjeto: Especifica un objeto de la clase.
Comentarios: THIS permite hacer referencia a una propiedad o un objeto de una definición de clase. Los métodos de un bloque de definición de clase pueden utilizar THIS para especificar una propiedad o un objeto que existirá cuando se cree la clase.
Puesto que múltiples instancias de objetos comparten el mismo código de método, THIS siempre hace referencia a la instancia en la que está ejecutándose el código. Si hay múltiples instancias de un objeto, y se llama a uno de los métodos del objeto, THIS hace referencia al objeto correcto.
THISFORMSET: Proporciona una referencia a un FormSet antes de crearlo.
Sintaxis:
THISFORMSET.NombrePropiedad | NombreObjeto
Argumentos:
NombrePropiedad: Especifica una propiedad para el FormSet.
NombreObjeto: Especifica un objeto del FormSet.
24
Comentarios: THISFORMSET proporciona, dentro de un método, una referencia al FormSet en el que está situado un objeto o a la propiedad de un FormSet. THISFORMSET permite hacer referencia a un objeto o una propiedad del FormSet sin utilizar múltiples propiedades Parent.
RELEASE: Permite que los usuarios cierren el formulario activo haciendo doble clic en el cuadro de control o eligiendo Cerrar en el menú Control del formulario. También puede permitir que un usuario cierre y libere un formulario incluyendo el comando siguiente en el código de evento Click de un control, como un botón de comando con el título "Salir":
RELEASE THISFORM
CREATE: Nos permite crear formularios, tablas, base de datos, menús, informes, etc. Ejemplo: Create Form “C:\Mis documentos\René\ejemplo1.scx”.
DO FORM: Ejecuta un Form o FormSet compilado que se ha creado con el Generador de formularios.
MODIFY FORM: Abre el Generador de formularios para que pueda modificar o crear uno.
USE: Abre o cierra una Tabla. Ejemplo: Use Articulo.Dbf (Abre la tabla Articulo.dbf). Use Cierra una tabla en uso.
GO TOP: Ubica el puntero de registro en el primer registro.
GO BOTTOM: Ubica el puntero de registro en el último registro.
SKIP: Avanza o retrocede el puntero de registro. Skip +1 (Avanza). Skip –1 (Retrocede).
APPEND: Adiciona o añade más registro a una tabla abierta.
25
LIST: Realiza un listado de todos los registros de una tabla abierta.
BROWSE: Abre la ventana examinar para modificar el contenido de todos los registro de una tabla abierta.
REPORT FORM: Muestra o imprime un informe bajo el control de un archivo de definición de informe creado con MODIFY REPORT o CREATE REPORT.
Mensaje del Sistema.
MenssageBox().- despliega un mensaje en un cuadro de dialogo y
espera que el usuario selecciona un botón.
Sintaxis:
Variable= MessageBox (mensaje,tipo,titulo)
Mensaje: es una expresión de cadena que se despliega como el
mensaje en un cuadro de dialogo.
Tipo: Expresión numérica que es la suma de valores que
especifican la cantidad y el tipo de botones para desplegar.
DO WHILE – ENDDO
Repite un bloque de instrucciones cuando una condición es true o
hasta que una condición se convierta en true
26
Sintaxis
Do while condición
Sentencia
Loop
Enddo
Aplicación Nº 2
Este ejercicio consiste en elaborar un formulario que simule el funcionamiento de un reloj despertador digital. La aplicación debe permitir al usuario ingresar la hora a la que desea ser avisado. El diseño de la interfaz debe ser similar a la figura siguiente:
Para el desarrollo de esta aplicación proceder a ubicar los siguientes controles en el formulario:
2 etiquetas
2 cajas de texto
27
1 cronómetro
2 botones de comandos
En seguida establezca las propiedades según se indica a continuación:
Form1
Name FrmReloj
Caption Reloj despertador digital
MaxButton .F.-Falso
MinButton .F.-Falso
Label1
Name LblHora
Caption Hora
Label2
Name LblDespertador
Caption Despertador
Text1
Name TxtHora
FontBold .T.-Verdadero
FontSize 24
Text2
Name TxtDespertador
FontBold .T.-Verdadero
FontSize 24
Timer1
Name Timer1
Enabled .T.-Verdadero
28
Interval 500
Command1
Name CmdOnOff
Caption \<Desactivar
Default .T.-Verdadero
Command2
Name CmdTerminar
Cancel .T.-Verdadero
Caption \<Terminar
Una vez establecidas las propiedades, proceda a ingresar el código que se muestra:
Objeto: FrmReloj Procedimiento: Load
Public lOnOff
Objeto: FrmReloj Procedimiento: Init
lOnOff = .F.
Thisform.TxtDespertador.Value = "00:00:00"
Thisform.Refresh
Objeto: Timer1 Procedimiento: Timer
If Thisform.TxtHora.Value != Time() Then
Thisform.TxtHora.Value = Time()
EndIf
If (Thisform.TxtDespertador.Value < Time()) And lOnOff Then
* Sonido acústico
?Chr(7)
EndIf
29
Thisform.Refresh
Objeto: CmdOnOff Procedimiento: Click
If lOnOff Then
lOnOff = .F.
Thisform.CmdOnOff.Caption = "\<Activar"
Else
lOnOff = .T.
Thisform.CmdOnOff.Caption = "\<Desactivar"
EndIf
Thisform.Refresh
Objeto: CmdTerminar Procedimiento: Click
Release Thisform
30
CAPITULO III
QUE ES UNA BASE DE DATOS
Una Base de Datos es un conjunto de datos organizado de forma tal, que se presenta al usuario como si fuera una o un conjunto de matrices bidimensionales (tablas).
Cada fila de una matriz es un registro, el cual contiene información sobre una unidad de la base de datos y le asigna un número para poder manejarlo.
Cada columna contiene los diversos campos de ese registro. Por ejemplo : en una tabla de publicaciones, cada fila contendrá información sobre una publicación determinado, y la fila estará dividida en campos (columnas), como el código de publicación, nombre de la publicación, fecha, tiraje, responsable, etc...
Para abrir una base de datos haz click en archivo, nuevo selecciona base de datos (Database), y aparecerá la ventana de Generador de base de datos. En este tu construirás las tablas visualmente, creas etiquetas de índice, establece relaciones entre tablas y proporciona otros componentes que ayudan en el proceso de diseño de una aplicación. En el Generador de bases de datos haz clic en cualquier lugar de la ventana, se desplegará un menú contextual que contiene las opciones siguientes:
-Expandir (Expand)
- Contraer todos (Collapse all)
- Nueva tabla (New table)
- Nueva vista remota (* New remote view )
- Nueva vista local (*New local view)
31
- Agregar tabla (Add table)
- Procedimientos almacenados (Stored procedures)
- Integridad referencial (integrity referential)
- Ayuda
Tablas
Tipos de datos
Visual Fox Pro puede manejar diversos tipos de campos (tal como muestra la figura) . Entre los más importantes están:
Carácter : Campo de caracteres : Almacena cadenas o conjuntos de caracteres. Un campo de caracteres permite almacenar tanto letras, como números o caracteres especiales.
Monetario: Campo de Valores Monetarios: Almacena cantidades en valor monetario, Ejemplo: $55, S/.675,438.
Numérico: Campo numéricos : Almacenan cantidades y se puede hacer cálculos con ellos. Estos campos sólo admiten número y el punto decimal (la coma decimal si tiene formato español). Máxima extensión, 20 caracteres.
Flotante : Campo de números reales : Almacenan números en el rango del conjunto de números reales.
Fecha : Campo fecha : Permite almacenar fechas. La información la guarda en la forma AAAAMMDD, con 8 caracteres. El formato por defecto para introducir fechas en Visual Fox Pro es MM/DD/AA (Mes/Día/Año).
32
Lógico : Campo lógico : Almacenan un tipo especial de información, sólo permiten almacenar verdadero o falso y acepta sólo los caracteres : T (verdadero) o F (falso).
Memo : Campo Memo : Permite almacenar textos largos, como una descripción o un breve resumen.
Estructura de un .BDF
Los datos en FoxPro se almacenan en forma de tablas, estas tablas son las bases de datos pues la extensión de estas bases de datos es .DBF aunque también hay otras que se verá más adelante. Los DBF comienzan con una breve descripción de los datos que están en la tabla.
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.
Aplicación Nº 3
33
En este ejercicio vamos a crear un formulario para calcular la edad de una persona a partir de su fecha de nacimiento.
Para el desarrollo de esta aplicación, proceda a ubicar los siguientes controles en el formulario:
2 etiquetas
2 cajas de texto
3 botones de comando
Luego, proceda a establecer las propiedades según se indica a continuación:
Form1
Name FrmEdad
Caption
MaxButton .F.-Falso
MinButton .F.-Falso
Label1
Name LblFecNac
Caption Fecha de nacimiento:
Label2
Name LblEdad
Caption Su edad es:
Text1
34
Name TxtFecNac
Enabled .T.-Verdadero
Text2
Name TxtEdad
Enabled .F.-Falso
Command1
Name CmdAceptar
Caption \<Aceptar
Command2
Name CmdLimpiar
Caption \<Limpiar
Command3
Name CmdSalir
Caption \<Salir
Luego de establecidas las propiedades de los controles, proceda a ingresar el siguiente código:
Objeto: FrmEdad Procedimiento: Load
Set Date French
Set Century On
Objeto: FrmEdad Procedimiento: Init
cNomDia = Cdow(Date())
cDia = Str(Day(Date()), 2)
cMes = Cmonth(Date())
cAnno = Str(Year(Date()), 4)
35
cFecha = cNomDia + " " + cDia + " de " + cMes + " del " + cAnno
Thisform.Caption = cFecha
Thisform.TxtFecNac.Setfocus
Thisform.Refresh
Objeto: CmdAceptar Procedimiento: Click
dFecNac = Ctod(Thisform.TxtFecNac.Value)
nEdad = Int ((Date() - dFecNac) / 365)
Thisform.TxtEdad.Value = Str(nEdad) + " años"
Thisform.Refresh
Objeto: CmdLimpiar Procedimiento: Click
Thisform.TxtFecNac.Value = ""
Thisform.TxtEdad.Value = ""
Thisform.TxtFecNac.Setfocus
Thisform.Refresh
Objeto: CmdSalir Procedimiento: Click
Release Thisform
Aplicación Nº 3.1
Este ejercicio consiste en elaborar una aplicación que acepte fechas como tres números (dd, mm, aaaa) y las visualice del modo usual. A manera de ejemplo considere lo siguiente:
36
Cuando el usuario haga click en el botón Salir o en el botón Cerrar de la barra de título del formulario, se debe confirmar si desea terminar la aplicación, tal como se observa en la figura siguiente:
En caso de que el usuario elija la opción Si, la aplicación debe terminar. Caso contrario, es decir si el usuario elige la opción No, se debe proseguir con la aplicación.
Para el desarrollo de esta aplicación, proceda a ubicar los siguientes controles en el formulario:
4 etiquetas
3 controles numéricos
1 caja de texto
3 botones de comando
En seguida proceda a establecer las propiedades según se indica:
Form1
Name FrmFecha
37
Caption Fecha en letras
MaxButton .F.-Falso
MinButton .F.-Falso
Label1
Name LblDia
AutoSize .T.-Verdadero
Caption Día:
Label2
Name LblMes
AutoSize .T.-Verdadero
Caption Mes:
Label3
Name LblAnno
AutoSize .T.-Verdadero
Caption Año:
Label4
Name LblEnLetras
AutoSize .T.-Verdadero
Caption En letras:
Spinner1
Name SpnDia
SpinnerHighValue 31
SpinnerLowValue 1
Spinner2
Name SpnMes
38
SpinnerHighValue 12
SpinnerLowValue 1
Spinner3
Name SpnAnno
SpinnerHighValue 9999
SpinnerLowValue 0
Text1
Name TxtEnLetras
Alignment 2-Centro
Command1
Name CmdAceptar
Caption \<Aceptar
Default .T.-Verdadero
Command2
Name CmdLimpiar
Caption \<Limpiar
Command3
Name CmdSalir
Cancel .T.-Verdadero
Caption \<Salir
Una vez establecidas las propiedades proceda a ingresar el código que se indica a continuación:
Objeto: FrmFecha Procedimiento: Load
Set Date French
Set Century On
39
Objeto: FrmFecha Procedimiento: QueryUnload
#DEFINE vfpYesNo 4
#DEFINE vfpYes 6
#DEFINE vfpQuestion 32
If MessageBox("¿Desea terminar la aplicación?", ;
vfpQuestion + vfpYesNo, "Pregunta") = vfpYes Then
Release Thisform
Else
NoDefault
EndIf
Objeto: CmdAceptar Procedimiento: Click
cBarra = "/"
cFecha = Thisform.SpnDia.Text + cBarra + Thisform.SpnMes.Text ;
+ cBarra + Thisform.SpnAnno.Text
dFecha = Ctod(cFecha)
cNomDia = Cdow(dFecha)
cDia = Str(Day(dFecha), 2)
cMes = Cmonth(dFecha)
cAnno = Str(Year(dFecha), 4)
cFecha = cNomDia + " " + cDia + " de " + cMes + " de " + cAnno
Thisform.TxtEnLetras.Value = cFecha
Thisform.Refresh
Objeto: CmdLimpiar Procedimiento: Click
Thisform.SpnDia.Value = 0
Thisform.SpnMes.Value = 0
40
Thisform.SpnAnno.Value = 0
Thisform.TxtEnLetras.Value = ""
Thisform.SpnDia.Setfocus
Thisform.Refresh
Objeto: CmdSalir Procedimiento: Click
Thisform.QueryUnload
41
CAPITULO IV
Tipos de Menús:
Existen dos tipos de menús : menú y Shortcut.
42
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.
2. Seleccione menús en la lista de categorías
3. 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)
43
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ú.
44
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)
45
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 ;
46
,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.
47
_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
48
CAPITULO V
Para ejecutable
Crear nuevo proyecto
1.- menú archivo
2. nuevo
3.- Seleccionar proyecto como indica la imagen
4.- clic en nuevo archivo
5.- guardar proyecto en la dirección deseada y el nombre deseado
6.- clic en documentos y luego agregar
49
7.- buscar los formularios que desee agregar al proyecto
8.- clic en código y luego nuevo
9.- escriba o pegue el siguiente código
clear all
set exclusive off
set sysmenu to
set echo off
set talk off
Set Status Bar Off
_screen.windowstate=2
clear
* en la line siguiente va la ruta y el nombre del formulario principal
do form c:\israel\nombre_formulario.scx
read event
clear all
10.- clic en el signo + (MAS) si no se ve el nombre del programa en el proyecto
50
11.- clic derecho en el nombre del programa y estableces principal
12.- clic en general y generar ejecutable
13.- acepta y guardar en la ruta correspondiente
NOTA:
Copie los archivos .dll en el lugar donde se encuentre el ejecutable
Y LISTO
Aplicación Nº 4
Base de datos Pizzería
Realizar las siguientes tablas para la base de datos Pizzería
51
Para llevar a cabo la Practica Realiza los Siguientes pasos:
1. Crea un nuevo Proyecto con el nombre Pizza2. en el administrador de proyectos en la Ficha Datos, Selecciona la opción
Databases, y después la opcion Nuevo, para crear la base de datos con el nombre Pizzería.
3. En el diseñador de Base de datos da un clic en la opción Nueva tabla. y haz lo sig;
4. Guarda esta tabla con el nombre de Pizza5. Ahora deberas crear otra tabla nueva con los siguientes campos.
52
6. Guarda esta tabla con el nombre de tamaños.7. Ahora deberas crear una tercera tabla con los datos siguientes:
8. Guarda esta tabla con el nombre de Venta.
9. por ultimo deberás crear otra tabla como sigue:
53
10. Esta tabla la guardas con el nombre factura11. Crea las relaciones entre las tablas de tal form que te queden de la siguiente
manera:
12. Ahora debemos introducir los datos a las tablas, comenzaremos por la tabla Pizza y la llenaremos como sigue:
54
Clave_Pizza Nombrean Anchoaspe Peperoniha Hawaianasa salami
13. seguimos con la tabla Tamaño
Clave_tamaño Tamañoch Chicame Medianagr Grande
14. Y Continuamos con la tabla Venta
Clave_Pizza Clave_Tamaño Precioan ch $ 20.00an me $ 25.00an gr $ 30.00pe ch $ 60.00pe me $ 65.00pe gr $ 80.00ha ch $ 55.00ha me $ 60.00ha gr $ 68.00sa ch $ 63.00sa me $ 87.00sa gr $ 98.00
15. ahora crearemos una tabla a partir de una consulta, en la ventana explorador de proyectos en la pestaña datos selecciona consulta y después nuevo
16. Visual Fox te preguntara que tablas quieres agregar para la realización de tu consulta, para eso tu debes agregar las siguientes tablas: Tamaña, Venta y Pizza.
17. una vez con las tablas agregadas, en la ventana diseñador de consultas en la ficha campos, debemos escoger cuales son los campos que nosotros queremos que nos muestre la consulta, pues bien vamos a seleccionar los siguientes:
55
Pizza.nombre, tamaño.tamaño, Venta.Precio, por ultimo agregaremos una expresión como campo para esto en la misma ventana busca la opción funciones y expresiones y aparecerá la ventana siguiente:
18. Cuando esta ventana aparezca lo primero que debemos de hacer es seleccionr de la parte funciones Cadena, la opción “texto”, Luego en la parte de abajo donde dice Desde tabla Selecciona la tabla Pizza, en el cuadro campos apareceran los campos de la tabla pizza de ese cuadro da doble clic al campo clave_pizza, una vez esto hecho en el cuadro expresión deberá de aparecer el siguiente texto: “Pizza.cleve.pizza”, una ves con esto ve otra vez a la lista Cadena y ahora selecciona el símbolo +, el símbolo aparecera dentro de las comillas, salte de las comillas y pon un guion(-), la expresión deberá quedar: “Pizza.cleve.pizza+”-, ahora con lo que ya vimos has que la expresión final quede de la siguiente forma, recuerda que para sacar los campo de Tamaño primero debes seleccionar la tabla tamaño de Desde tabla.
56
19. Una vez que tengas la Expresión da un clic al botón aceptar y después un clic en Agregar. Te debera quedar como en la pantalla siguiente:
20. Ahora da un clic al boton Destino de consulta y Selecciona tabla
57
21. en el recuadro donde dice Nombre de la tabla le ponemos un nombre que en este caso será consulta1.dbf. y un clic al botón Aceptar.
22. Después de eso Cierro la ventana de Diseñador de consultas, y ebn el explorador de proyectos selecciono la consulta que acabo de crear y la ejecuto.
23. después de este paso en el explorador de proyectos selecciono tablas en la ficha datos y doy un clic a Agregar, busco la tabla consulta1, que es la que se genero con la consulta y la agrego a mi base de datos.
24. Una vez ya agregada la relaciono con la tabla Factura, de tal manera que me quede de la siguiente manera:
25. Ahora si todo esta listo para que tu generes tus Formularios y tus informes de tu base de datos, recuerda que puedes hacer tambien consultas por medio de la tabla factura para ver cuales fueron las ventas que has tenido.
58