Lenguaje de Programacion III Visual Fox Pro
Lenguaje de Programacion III Visual Fox Pro
Lenguaje de Programacion III Visual Fox Pro
NORBERT WIENER
Definicin de campos
a. Definicin de campos:
Igual que en las versiones anteriores, la definicin de campos es igual. Se introduce el
nombre del campo (name) el tipo de datos que soportar (Type) y el tamao.
Tipo de Indice
Nombre del o los campos que componen el indice
Las relaciones entre tablas se crean arrastrando la llave de la tabla a la llave de otra
tabla.
La figura muestra una relacin entre las tablas regin y departamento, la relacin
se leera as : Una regin tiene muchos departamentos.
campos
tablas
condicion
BY campos de agrupamiento
BY campos de ordenamiento
Ejemplo:
SELECT
FROM
ORDER
id, name
s_region
BY name
Eliminar
tabla
La ventana para agregar las tablas, se utiliza para aadir tablas que se van a ocupar
en la instruccin SELECT SQL, en este caso estaramos seleccionando la parte del
FROM. Seleccionemos s_region y luego Agregar. La tabla se agregar, luego le
damos cerrar (close).
4. 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).
Despus le aparece la primera Ventana donde escoge las conexiones, le aparecer la
conexin que usted ha creado.
Nota: Esta conexin que usted a creado servir para sesiones futuras.
SELECT - SQL
Sintaxis :
SELECT
FROM
WHERE
alias1.campo1
,alias2.campo2
,alias3.campo3
tabla1 alias1
,tabla2 alias2
,tabla3 alias3
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 sera:
SELECT
FROM
WHERE
A.nombre
AS empleado
,A.dept_id
,B.nombre
AS depto
s_emp A
,s_dept B
A.id = B.region_id
a.nombre
AS empleado
,b.id
,b.nombre
AS depto
s_emp a
,s_dept b
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 el 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
Funciones de grupos
salarios minimos y maximos de los empleados
select max(salario) sal_max,
min(salario) sal_min
from
s_emp
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
S_CUSTOMER
BY CREDIT_RATING
*----
SELECT
FROM
WHERE
GROUP
SUM(SALARIO), CARGO
S_EMP
upper(TITLE) NOT LIKE 'VP%'
BY CARGO
*----
SELECT
FROM
WHERE
GROUP
HAVING
*----
TITLE, SUM(SALARIO)
S_EMP
UPPER(TITLE) NOT LIKE 'VP%'
BY TITLE
SUM(SALARIO)> 5000
presione
esc
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
Tipos de Buffer
1 No utilizar el buffer
2 Pessimistic row buffering on.
3 Optimistic row buffering on.
4 Pessimistic table buffering on.
5 Optimistic table buffering on.
TABLEREVERT(.t.)
Cancela los cambios hechos a la tabla
USE Customer
&& Open customer table
= CURSORSETPROP('Buffering', 5, 'customer')
buffering
CLEAR
Generador
de Formularios
y Controles ms comunes
? 'Original cust_id
value:
'
?? cust_id && Displays current cust_id value
REPLACE cust_id WITH '***' && Changes field contents
? 'New cust_id value: '
?? cust_id && Displays new cust_id value
= TABLEREVERT(.T.) && Discard all table changes
? 'Reverted cust_id value: '
?? cust_id && Displays reverted cust_id value
Diseo de Formularios
Gua rpida visual:
A la hora de disear formularios usted tiene que estar familiarizado con las ventanas
siguientes:
El objeto FORM
Tipo de dato
Carcter
Booleano
Booleano
Booleano
Booleano
Booleano
Booleano
Descripcin
Titulo de la ventana o Forma
Para central la Forma
Para que se muestren los Tooltips
Visualiza el boton de Cerrar la Ventana (X)
Visualiza el boton de Maximizar la Ventana
Visualiza el boton de Minimizar la Ventana
Visualiza el Menu de Control de la Ventana.
Descripcin
Tipo de dato
Nmerico
TabStyle
Visible
Nmerico
Booleano
Descripcin
Fija el nmero de Folders o pginas
(Page1, page2...)
Justificacion de las pginas.
Si el control es visible al usuario.
Tipo de dato
Segn la
variable
Segn la
Descripcin
Es la variable o nombre del campo al cual
hace referencia.
Contenido de la variable o campo
Visible
Enabled
referenciado en controlsource
Si el control es visible al usuario.
Si el control esta habilitado o no.
Tipo de dato
Carcter
Booleano
Booleano
Descripcin
Etiqueta del comando (Ej. Click Aqu)
Si el control es visible al usuario.
Si el control esta habilitado o no.
Descripcin
Se dispara a la hora que se inicializa el objeto
Se dispara al dar click en el objeto
El cursor se va al objeto.
Se dispara cuando el objeto pierde el cursor.
Refresca el objeto.
Escoga el evento deseado. (En este caso Click = Se ejecuta al Presionar el Boton)
Tipo de dato
Segn la
variable
Segn la
variable
Booleano
Booleano
Descripcin
Es la variable o nombre del campo al cual
hace referencia.
Contenido de la variable o campo
referenciado en controlsource
Si el control es visible al usuario.
Si el control esta habilitado o no.
Descripcin
Se dispara a la hora que se inicializa el objeto
Se dispara al dar click en el objeto
El cursor se va al objeto.
Se dispara cuando el objeto pierde el cursor.
Se dispara despues de presionar Enter o Tab, se
utiliza para validar.
Refresca el objeto.
Init
Click
Setfocus
Lostfocus
Valid
Refresh
Control de Opciones:
Tipo de dato
Nmerico
Value
Nmerico
Visible
Enabled
Booleano
Booleano
Descripcin
Es la variable o nombre del campo al cual
hace referencia.
Contenido de la variable o campo
referenciado en controlsource
Si el control es visible al usuario.
Si el control esta habilitado o no.
Descripcin
Se dispara cuando modificamos el campo
Se dispara a la hora que se inicializa el objeto
Se dispara al dar click en el objeto
El cursor se va al objeto.
Se dispara cuando el objeto pierde el cursor.
Se dispara despues de presionar Enter o Tab, se
utiliza para validar.
Refresca el objeto.
Tipo de dato
Booleano
Value
Booleano
Visible
Enabled
Booleano
Booleano
Descripcin
Es la variable o nombre del campo al cual
hace referencia.
Contenido de la variable o campo
referenciado en controlsource
Si el control es visible al usuario.
Si el control esta habilitado o no.
Descripcin
Se dispara cuando modificamos el campo
Se dispara a la hora que se inicializa el objeto
Se dispara al dar click en el objeto
El cursor se va al objeto.
Se dispara cuando el objeto pierde el cursor.
Se dispara despues de presionar Enter o Tab, se
utiliza para validar.
Refresca el objeto.
Tipo de dato
Carcter
Booleano
Booleano
Nmerico
Booleano
Descripcin
Nombre de la tabla
Si el control es visible al usuario.
Si el control esta habilitado o no.
Numero de columnas del Grid
Permite registro para borrar ( Aparece en
la parte izquierda del Grid)
Descripcin
Se dispara a la hora que se inicializa el objeto
Se dispara al dar click en el objeto
El cursor se va al objeto.
Se dispara cuando el objeto pierde el cursor.
Refresca el objeto.
Tipo de dato
Segn la
variable
Carcter
Numrico
Booleano
Booleano
Numrico
BoundTo
Booleano
Descripcin
Variable a que hace referencia (campo
donde se almacena el valor de la lista)
Tabla o query de los elementos de la lista
Tipo de la Fuente (Si es tabla o query.)
Si el control es visible al usuario.
Si el control esta habilitado o no.
Valor que retorna la lista (Nmero de la
columna del RowSource )
Especifica si el valor de la lista esta
determinado por los valores o por la
propiedad ListIndex
Descripcin
Se dispara cuando modificamos el campo
Se dispara a la hora que se inicializa el objeto
Se dispara al dar click en el objeto
El cursor se va al objeto.
Se dispara cuando el objeto pierde el cursor.
Se dispara despues de presionar Enter o Tab, se
utiliza para validar.
Refresca el objeto.
Formularios Sencillos
Un Formulario Sencillo, es el que es realizado generalmente utilizando una sola tabla.
Abra su proyecto
Ubquese en la pestaa de documentos (document) y luego en Formas (Forms).
Presione el Botn Nuevo (New).
Seleccione Wizard.
Aparece la siguiente ventana:
Seleccione
la tabla
a utilizar
Seleccione
Los campos que aparecern en la forma
7. Una vez seleccionado la tabla y sus respectivos campos, presiones prximo (Next).
8. Se visualizar la siguiente ventana:
Si usted, crea una forma con el Wizard, Visual foxpro le incorpora la clase
WizStyle
Abra su proyecto
Ubquese en la pestaa de documentos (document) y luego en Formas (Forms).
Presione el Botn Nuevo (New).
Seleccione Nueva Forma en blanco.
En la forma en blanco presione el botn derecho del ratn 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 tabla s_region a su forma, de tal manera que
queden asi:
Contenido
La tabla maestra
(s_region)
RecorSource
La tabla hija
(s_dept)
RecordSourceType Tipo de fuente de
datos (Alias)
RelationalExpr
La relacion entre
las tablas
(s_region.id =
s_dept.region_id
10. colocaremos los botones para Desplazarnos en la tabla, agregar, eliminar , grabar,
cancelar y salir.
Botn
Agregar
INSERT INTO
VALUES
<<
>>
SKIP -1
SKIP
s_dept ( region_id )
(s_region.Id)
DELETE IN s_dept
SELECT s_dept
=TABLEUPDATE(.T.)
SELECT s_dept
=TABLEREVERT(.T.)
THISFORM.Release
Mtodo
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, especficamente en la propiedad BufferModeOverride.
Ver Clases
1.
2.
3.
4.
Cdigo
Mtodo
*------------------------------------*
Cargar el OCX
*------------------------------------*-------pnIndex = 0
THIS.Additem( "Regiones" )
THIS.Indent( pnIndex ) = pnIndex
Init
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()
Propiedades :
Propiedad
Max
Min
Value
Descripcin
Mximo valor de la Barra (nmerico)
Mnimo valor de la Barra (nmerico)
Valor actual de la barra (nmerico)
Nombre de la clase
PAINT.PICTURE
WORD.DOCUMENT
EXCEL.SHEET
Diseo de Reportes
Entorno de Datos
Presentacin Preliminar :
Titulo/Sumario (Title/Summary):
Muestra el rea del Titulo y el Sumario del Informe
Titulo
Sumario
Nombre de la variable
Campo a calcular
Tipo de Calculo
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
FROM
INTO
id, name
s_region
CURSOR c_region
;
;
* 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
Integracin de la Aplicacin
;
;
Instruccin de men
Opciones de Men:
En las opciones del men se
especifican:
-
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="Formulacin Presupuestaria"
* Base de Datos
OPEN DATA .\SCOTT\scott SHARED
* Llamada al Menu
DO .\menu\menu.mpr
READ EVENT
CLEAR ALL
SET SYSMENU TO DEFAULT
;
;
;
Desde su proyecto, crearemos una clase nueva, Basada en Documento Activo (ActiveDic):
Presionamos Aceptar (OK)
Esta es la clase
2. En el evento Run de la clase pondremos el cdigo para la llamada al formulario que queremos que se
mire en la Web.
4. Salvamos la clase.
5. Establecemos como principal (Set Main) las clase que creamos.
Importante: En la maquina del Cliente, se deben de instalar los RUNTIME de Visual Foxpro, para que se
pueda ver en el Browser.