Está en la página 1de 130

VF1

06 - 05 - 2002
PRIMERA CLASE

LENGUAJES DE PROGRAMACION

:
Son todos aquellos orientados a

la solucin de un problema tomando diferentes vas para la solucin de


estos.
- Sistema

Sistemas Operativos -

Software de Sistemas

- Aplicacin
^
Lenguajes de Programacin
En Teora es difcil el rea de Programacin.
Comando : es una instruccin que ejecuta un proceso, puede tener
incluido un formato para su escritura, ejemplo :
Create
Delete
Zap
Date()
?
Create :
?

enter
enter
enter
enter
enter

Tablas, Bases de Datos, Programas


:

Para mostrar Variables

Ventana de Comandos
___________________________________________
|
|
|
|
|
________________________
|
|
|
|
|
|
|
COMANDO
|
|
|
--------------------------------- |
|
|
?Date()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------- |
|
|
----------------------------------------------------------

Mostrar la Fecha en el Escritorio


Programa :

Es un conjunto de comandos que se ejecutan


de forma secuencial.

P1
________________________
|
Create
|
|
Dir *.*
|
|
Browse
|
|
Use
|
|
|
-------------------------------- SubPrograma

Create Enter
Dir *.*

Son programas que comparten intrucciones


y dependen de un programa principal.

Clase
_________

Almacena en una biblioteca procedimientos

Biblioteca

PANTALLA

PROVEEDORES

Campos

Es un area en la cual se almacena cualquier tipo de


objeto.

Registro

Es un conjunto de campos o sea informacin.

Tabla

Es un archivo dividido en campos y registros.

Base de Datos

Es un conjunto de tablas que contienen


informacin relacionada.

256

Campos por tabla

Memoria

VF1

07 - 05 - 2002
VARIABLES

Son espacios reservados en memoria para almacenar informacin.


Una variable debe de definirsele por nombre dependiendo del tipo de dato
(Numeros, letras, o fechas) que cada una almacena.
Cada una de las variables pueden ser Publicas o Privadas.
El termino Publico indica que esta disponible en cualquier programa
mientras el privado solo en el lugar o programa en el cual se crean..
-

Publicas
Privadas
Temporal : Solo encendida la computadora RAM
Inicializar
Definir un tipo de datos que almacena

Salario Base : es una variable / almacena

Salario Liquido

Nombre

Telefono
variables

NIT

numeros
letras
fechas

numericas
caracter simbolos
fecha
numeros

614-101270-002-1

NCIP -

11432110

EMAIL

NombrePersona@Servidor

1234

Juan C --------------------------> Plicas -- Slash


10/10/1994
10 - 10 - 1994
raiz
A:\
C:\
D:\

Raiz

Para inicializar variables realiza


1
2
3

Nombre de variable
Nombre de variable
Nombre de variable

Caracter

:
=
=
=

numero.
espacios.
fecha.

Sbase =
Nota1 =
DISSS =

nombre
direccion

0
- Sbase = 150
0
0

Asignando

=
=

space(20)
space(60)
\___________/

numeros de digitos a ingresar

tener tres variables de 15


===
estado civil
genero(sexo)
nombre
apellido

15

store space(15) to

asigne 15 espacios to (para)


estado,nombre,apellido,genero

estado =
genero =
nombre=
apellido=

soltero(a)
casado(a)
divorciado(a)
viudo(a)

space(15)
space(15)
space(15)
space(15)

Total de Factura
T_Factura
Variables
nombre =

variable

Tipo(Fecha)
Maria

contenido

apel
+
a=space(25)
b=space(25)
c=space(25)
Tipo Fecha
3

F_Ingreso
F_reserva
F_salida

=
=
=

Date()
{}
/ /

F_Ingreso=05/07/2002
F_Reserva=__/__/____
F_Salida =__/__/____

En un programa lineal tendra que definir coordenadas para mostrar


mensajes y escribir informacin.
0
80 Columnas
79
|___________________________________________________________|
0 |
|
|___________________________________________________________|
25
|
|
Filas |___________________________________________________________|
|
|
24|___________________________________________________________|
|
|
1 Letra = 1 Columna

El Comando @ Say
Permite determinar en que coordenadas se muestra un mensaje o el
contenido de una variable
Formato

@Fila, Columna

sayMensajeEstandar

@Fila, Columna

say Variable Contenido de


Memoria

Fila 2, columna2
@ 2,2 say a
@ 4,4 say a
a = Computer
b = Data
c = Systems
@ 7,20 say d

d=a+b+c

d = a+ + b + + c
Flash Player
VF1

08 - 05 - 2002
CREACION DE PROGRAMAS

Para crear programas ingresa la instruccion : Modify Command - Nombre


del Programa, mostrara una ventana en la que digita todas las instrucciones
que desea el programa realise.
Command Comm ---->

Modify Command

Progra1

----

Enter

Para grabar CTRL + W


Graba todo programas, tablas , base de datos, formularios
Los archivos creados cuando usted crea un programa;
son 3 :

Prg
Bak
Fxp

Modify command

Lenguaje de usuario
Backup
Lenguaje de maquina

para crear y editar programas ya creados.

Para ejecutar un programa ingresa

Do - Nombre de

programa.
Do

Hacer

Do

Ejecute el programa que usted selecciona

Do Progra1
El proceso de creacin de un archivo .Fxp surge de la
compilacin (verificacin de errores ) de el archivo .Prg
Compilar = Verificar Errores
Hola

@ 5,5 say Hola

Errores de lgica

mas difcil de resolver

Errores de escritura
Nombre
Salario base
Numero Horas|
Pago horas
Total Horas
Salario Liquido
Clculos
Formulas

1
7
__________
8

=
mas fcil de resolver
______
|
|
--------______
|
|
--------______
|
--------______
|
|
--------______
|
|
--------______
|
|
---------

\
|->
/

Datos -

N1
N2

Resultado

no se digitan

FACTURA
______________________________________________________
|
|
|
Numero
1
|
|
Cliente Juan
|
|Productos Descrip-Pro
Cantidad
Total
|
|
1
Parlantes
75
75
|
|
1
CD-ROM
1000
1000 |
|
|
-------------------------------------------------------------------------FXP

dar solo copia

Ingreso de datos

Se utiliza el comando GET


por cada dato que desee el usuario escribir :
Formato

@ Fila, Columna GET Nombre Variable

@ 2,2 say Nombre


@ 2,9 get nombre
read
Para tener acceso a escribir los datos deben al final de un conjunto de
get

gets colocar el comando read.

VF1

read
get
read
get
read
09 - 05 - 2002

SET DEFA TO C:\PROGRA


MODIFY COMMAND

EJE1

CLEAR
*INICIALIZACION DE VARIABLES
NUMERO1 = 0
NUMERO2 = 0
STORE 0 TO NUMERO1,NUMERO2
@ 2,2 SAY NUMERO UNO :
@ 4,2 SAY NUMERO DOS :
@ 2,15 GET NUMERO1
PICTURE 9999
@ 4,15 GET NUMERO2
PICTURE 9999
READ
RESULTADO = NUMERO1+NUMERO2
@ 6,2 SAY LA SUMA ES :
@ 6,25 SAY RESULTADO

HACER UN PROGRAMA QUE ME PIDA 3 NOTAS Y ME DE EL


PROMEDIO.
CLEAR
NOMBRE = SPACE(30)
10

A=0
B=0
C=0
D=0
@ 2,4 SAY DEME EL NOMBRE COMPLETO
@ 4,4 SAY DEME LA PRIMERA NOTA
@ 6,4 SAY DEME LA SEGUNDA NOTA
@ 8,4 SAY DEME LA TERCERA NOTA
@ 2,28 GET NOMBRE PICTURE @!
@ 4,25 GET A PICTURE 999
@ 6,25 GET B PICTURE 999
@ 8,25 GET C PICTURE 999
READ
D=(A+B+C)/3
@ 10,04 SAY EL PROMEDIO ES
@ 10,20 SAY D
Estructura IF - ENDIF

Estudiarla

VF1

10-05-2002
Tarea
1) De 3 numeros escrito saber cual es el menor, cual es el mayor, o si
son iguales.
2) encontrar el area de un triangulo
(b x h )/2
3) suma de dos numeros
4) el segundo este que estamos haciendo

VF1

13 - 05 - 2002
3 ) Numeros) mayor, menor, o igual
clear
num1=0

averiguar

IF

11

ENDIF

num2=0
num3=0
@ 3,7 say Numero 1 get num1 picture 999
@ 5,7 say Numero 2 get num2 picture 999
@ 7,7 say Numero 3 get num3 picture 999
Read
IF num1 > Num2
@ 9,7 say Numero uno es mayor
Else
IF num 1 = num2
@ 9,7 say Numeros iguales
Else
@ 9,7 say Numero dos es mayor
Endif
Endif
IF - Endif,
expuestas
.

se utilizan para mostrar resultados a partir de

Cada condicin tiene uno o dos resultados posibles:


FORMATO : IF < Condicin >
Instrucciones si condicin 1 es verdadera
ENDIF
IF < Condicin 1 >
Instrucciones si condicin 1 es verdadera
ELSE
Instruccin si condicin 1 es falsa
ENDIF
IF <Condicin 1 >
Instrucciones verdadera
ELSE
IF < Condicin 2>
Instrucciones verdadera
ELSE
Instrucciones falsa
ENDIF
ENDIF
Para tres condiciones num 1 = 10
num 2 = 20
para maana las tres condiciones

12

condiciones

Otro programa
Clear
base = 0
h=0
A=0
@ 2,10 say Base get base
@ 4,10 say Altura get h
Read
A=(base*h)/2
@ 6,10 SAY Area del Triangulo
@ 6,30 say A picture 9999.99
VF1

14-05-2002
Operadores Lgicos
AND

---------

2 Condiciones

OR

---------

1 de Dos

Permiten evaluar varias condiciones en una sola para mostrar un


3 nmeros

A
2

A
A

and

B
C

|
|
|

A-1 Condicin
A-1 Condicin
A-1 Condicin

B
2

>

>

2
4

or

A
B
C
3
1
2
menor medio
menor medio
1

3
mayor

mayor
2

13

resultado.

A
B
C

1 3 2 1 2 3 1 1 1
2 1 1 3 3 2 1 1 1
3 2 3 2 1 1 2 3 3

1
2
3

A
B
C

3
2
1

2 2 3 3 3 1 2
2 2 3 3 3 1 2
1 3 1 2 3 2 1

IF Num1 > Num2 And Num1 > Num3


IF Num2 > Num3
@ 10,7 say Numero 1 es Mayor
@ 11,7 say Numero 2 Intermedio
@ 11,7 say Numero 3 Menor
ELSE
IF Num 3 > Num 2 AND Num3 > Num1
IF Num2 > Num1
@ 10,7 say Numero 3 es Mayor
@ 11,7 say Numero 1 Menor
@ 11,7 say Numero 2 En Medio
ENDIF
ENDIF
ENDIF
ENDIF
Programa 1
Clear
Store 0 TO num1,num2,num3
@ 2,7 say Numero Uno get num1
@ 4,7 say Numero Dos get num2
@ 6,7 say Numero Tres get num3
Read
IF
Num1 > Num2 AND Num1 > Num3
IF

Num2 > Num3


@ 8,7 say Numero Uno Mayor
@ 9,7 say Numero Dos del Medio
@ 10,7 say Numero Tres Menor

ENDIF
ELSE
IF

Num 2 > Num1 AND Num2 > Num3

14

IF

Num1 >

Num3

@ 8,7 say # 2 Mayor


@ 9,7 say # 1 Del medio
@ 10,7 say # 3 Menor
ENDIF
ENDIF
ENDIF
Numero 1

39

Ya lo dio

Numero 2

70

Ya lo dio

Numero 3

45

7
30

Todava no

10
20
Inicio
Programas
Accesorios
Accsabilidad
Ampliador

VF1

15 - 05 - 2002

DO CASE

ENDCASE

Evala las condiciones de forma independiente, se comprende mas fcil,


Podr establecer N cantidad de condiciones y en cada una efectuar operaciones.
FORMATO
DO

CASE

15

Case

Instruccin

Instrucciones
Case

Instruccin

Instrucciones
Case

Instruccin

Instrucciones
ENDCASE
DO

CASE
Case

Instruccin

Instrucciones
Case

Instruccin

Instrucciones
Case

Instruccin
3
Instrucciones
OTHERWISE
Instrucciones
ENDCASE

Puede ocupar x cantidad de condiciones


busca la condicin hasta que se cumple
es mejor Do Caes que

IF

OTHERWISE

Por cada DO CASE

tiene que haber

un

En Otro Caso

ENDCASE

DO CASE

16

ENDIF

CASE

Condicion1
DO

CASE
Condicion 2

ENDCASE
ENDCASE
Programa de Promedio
>0
>3.01
>5.01
>8.01

< 3
<= 5
<=8
<=10

No Pase
Reprobado
Muy Bueno
Excelente

Programa de prueba DO CASE


Clear
Nom=space(40)

VF2

PRIMERA CLASE

04 - JUNIO DE 2002

VISUAL II
REPORTES DEL SISTEMA
1.- CONSULTA DE CLIENTE
Codigo:_______________
Nombre

:_______________

Direccin

:_______________

17

Telefono

:_______________

N Registro

:_______________

Email

:_______________

2.- REPORTE DE ARTICULOS


Fecha

:_______________

CodigoDescripcin
----

Precio de Venta

----

Existencia

----

------Total de Productos

----

---:________________

----

3.- REPORTE MENSUAL DE VENTAS POR EMPLEADO


Ao

:_____________

Mes

:_____________

Empleado

Nombre

Numero de Ventas

Total Ventas

----

----

----

-----

----

----

----

-----

Total

________________

________________

4.- FACTURA COMERCIAL


N

:___________

Tipo de Factura
Cliente

Fecha :_________

Nit

:________

:_______________

:_______________

Empleado

:_______________

Producto

Descripcin

Cantidad

Precio Total

----

----

----

----

18

----

----

----

----

---SubTotal
Iva
Total

---:_____________
:_____________
:_____________

5.- CONSULTA DE EMPLEADOS POR


Fecha de Ingreso

:_____________

CodigoNombre

Telefono

EMail

----

----

----

----

----

----

----

----

Total de Empleados

:_______________

Llamar un listado
Nombre de tabla
? Informacin
campos
registros

\
|->tabla relacionadas en base de datos---> DBC
/
? campos

Reporte va a papel
Consulta va a pantalla o sea Formulario, la idea es obtener sus tablas con sus
campos con su longitud y con sus titulos.
comenzar con consulta de clientes
clientes ==> consulta
codigo
nombre
telefono
direccion
NRegistro
apellidos
email

nombre

apellidos

Jose Antonio
Julio Cesar
Ana Maria

Ramirez
Ramirez
Ramirez

19

_____________
| nombres
|
|Ape1
|
| Ape2 |
_____________

Datos Personales
Y Permanentes

Consulta de Empleados
codigo
nombre
apellido
telefono
direccin
afp
email
F.-Ingreso
nit

\
|==>
/

Consulta de Clientes

Frecuancia en la cual se emite


el Reporte

dui
isss
estado civil
sexo
salario mensual
edad
descuento afp

VF2

05 - Junio - 2002

Factura Comercial
N

:_____________

Tipo Factura

Fecha :__________ Nit

:_______________

RegN

:_______________
:_______________

Cliente :______________
Empleado

:______________

Producto

Descripcin

Cantidad

Precio Total

----

----

----

----

----

----

----

----

----

----

SubTotal
Iva
Total Gene

:______________
:______________
:______________

REPORTE DE ARTICULOS
Fecha Sistema = DATE()
CodigoDescripcin

Precio de Venta

20

Existencia

----

----

----

----

----

----

----

----

Total Productos

:______________

Clientes
Empleados
Productos
codigo
descripcin
Precio Unitario de Costos
Ganancia
Precio de Venta
Existencia
BROWSE
_______________________________________________________________________
_
CodigoDescripcin Precio de Costo
Fecha
Total
_______________________________________________________________________
_
1
2

CDROM
HD

$ 100.00
$ 1,200.00

09/06/02
05/06/02

ES DIFERENTE SUMAR
QUE CONTAR.

1
2
3
4
1,000.00
1,200.00
250.00

____________
Suma
2,450.00
y otra cosa es
contar C/U.- = 3
Salir 2 archivos de la factura
1 Registro
Muchos dependen de 1 Registro
| Encabezado de Factura

Alumnos
codigo
|

nombre

21

-----------------------------------------Numero de Factura
Fecha
Nombre
Tipo Factura -> ->
Nit
Registro
Codigo Cliente
Codigo Empleado

/ Credito Fiscal
|
\ Consu. Final
\
|No Se Repite
/

apellido
telefono
direccion
encargado
edad
grado
F._Ingreso
N de Notas
N1
N2
N3
Prom
Codigo
N de Notas
Grado
Fecha Curso
Profesor Materia

| Detalle de Factura
|
-----------------------------------------Numero de Factura
Codigo Producto
Cantidad Producto
Precio Venta
Total Producto
| Encabezado Factura
|
-----------------------------------------Sub-Total
Iva
Total General de la Factura
VF2

06 - 06 - 2002
CLIENTES
codigo
nombre
apellido
direccion
telefono
nit
registro
Email

codigo

ENCABEZADO FACT.
numero

EMPLEADOS
codigo
nombre
apellido
direccion
telefono
DesAfp
DesISSS
salario
edad
sexo
estado civil
F.-Ingreso

22

PRODUCTOS
descripcion
precio costo
ganancia
precio venta
existencia

DETALLE FACTURA
numero

fecha
tipo factura
nit
registro
codigo cliente
codigo empleado
subtotal
iva
total general

codigo producto
cantidad
precio venta
total producto

REPORTE DE VENTAS MENSUAL POR EMPLEADO


Ao
Mes

:_________
:_________

Cod EmpleadoNombre
------TOTAL

N de Ventas Total Ventas

------:

TABLAS ESTADISTICAS

Exacto

-------

-------

____________

____________

(No se Repiten )

2 Anuales

Tabla Mensual de Ventas de Empleado


___________________________________________________________________
|codigo|Ao
|Mes |Total Ventas |N Ventas
|
|10
|2002
|05
|
100.00
|
1
|
|10
|2002
|05
|
600.00
|
2
|
|02
|2002
|05
|
300.00
|
1
|
|04
|2002
|05
| 1,000.00
|
1
|
|04
|2002
|05
|
500.00
|
1
|
|04
|2002
|06
|
100.00
|
1
|
-------------------------------------------------------------------------------------------A las tablas estadisticas nunca se les hace un Formulario
S existe =

(Codigo , ao , mes )

entonces acumula

23

Si cambia uno de los tres = (Cdigo , ao , mes ) entonces crea un nuevo


registro.
Se llenan los archivos a traves de formularios
BROWSE

Para agregar nuevos registros =

CTRL + Y

Mantenimiento ( Soporte , Mantener )


__________________________________________
|
|
|
Formulario para Clientes
|
|
____________
|
|
codigo |
|
|
|
----------------|
|
_____________
|
|
nombre
|
|
|
|
----------------|
|
_____________
|
|
apellido
|
|
|
|
----------------|
|
_________ ________ ___________
|
|
|agregar||borrar
||salir |
|
|
------------- ----------- --------------|
___________________________________________

Agregar Datos a la Tabla

tablas_________maestros__________estadisticas
|________detalles___________movimientos
13 de Junio tarea de Folleto todas
27 de Junio unico examen
Tres tareas en disco para el Martes o Jueves 13 y en papel
VF2

7 - 06 -2002
REPORTE MENSUAL DE COMPRAS POR CLIENTE
Ao

:_________

Mes

:_________

24

Cliente Nombre

N de Compras

Total Compras

----

----

----

----

----

----

----

----

_____________

_______________

Total de Compras

Total siete Tablas


CAMPOS DE CLIENTES
codigo
nombre
apellido
direccin
telefono
nit
registro
email

Tipo

longitud
tipo de datos a ingresar
si hay o no calculos
letras, numeros, letras y numeros
- longitud cuantos datos
se agregan

caracter
numerico
19 decimales
logico
ToF
memo
GCD
caracter ( binario ) - 256 caracteres
memo ( binario )
entero solo enteros
monetario
dinero
flotante
cientifico

caracter
numero
logicos
memo

Codigos ASCII
T_Clientes - DBF
T_Clientes - FPT
campos memo 256 carcateres
capacidad del campo memo
es para grandes capacidades
y depende del tamao del disco

codigo cuantos registros puede guardar una tabla


999

suma

CLIENTES
codigo
nombre
apellidos
direccion
telefono
nit
noregistro
email

codigo
c

4
c
c
c
c
c
c
c

25
25
60
8
17
7
40

25

EMPLEADOS
codigo
n
nombre
apellidos
direccion
telefono
desafp
n
fec.ingreso
nit
email
dui
est.civil
desisss
n
salario
n
sexo
edad
PRODUCTOS
codigo
n
descripcion
preciocosto
ganancia
precioventa
existencia

3
c
c
c
c
6
d
c
c
c
c
6
7
l
n

25
25
60
8
8
17
40
10
10
1
2

2
2

3
c
n
n
n
n

30
8
6
9
3

FACTURAS ENCABEZADO
numefacturas n
6
fecha
d
tipofactura
l
nit
c
registro
c
codcliente
c
codempleado n
3
subtotal
n
iva
n
totalgeneral
n

2
2
2

2
2
2

8
1
17
10
4
9
8
10

VF2

10 - 06 - 2002
TIPOS Y LONGITUDES
DETALLE DE FACTURA
numefacturas n
codigoproducto
n
cantidad
n

6
3
3

26

precioventa
totalproducto n

n
10

9
-

ESTADISTICA POR MES DE CODIGO DE EMPLEADO


ao
c
4
mes
c
2
codigoempleado
n
3
numventas
n
3
totalventas
n
10
2
HABLAR DE INDICES
Se tilizan para hacer busqueda de datos, orden y relacin entre archivos.
Para crearlos debe tomar en cuenta los siguientes aspectos. :
1.-

: El campo debe de poseer datos pequeos.-

2.-

: El campo debe de relacionarse con otra tabla.-

3.-

: El campo debe de permitir realizar busqueda de informacin.-

Para poder relacionar 2 o mas archivos entre s tiene que poseer un


campo en comun, que posea el mismo tipo y longitud.
____________
____________
|T_Cliente
|
|T_Facturas |
--------------------------------|Indice |
|Indice |
Aqu se nota que el codi|codigo|
|codigo|
go y el cod_clien son dos
--------------------------------- campos con nombres disc-3
c-3
tintos en dos tablas diferentes pero se refieren al
/ Tipo de Datos
\
mismo campo, lo impor|
|
tante es el tipo de datos y
\ ___Longitud
/
la longitud y la relacion
si se puede ser hecha.Existen 4 Tipos de indices
1.-) Principal: Solo existe en tablas que se encuentran dentro
de una base de datos.
Se definen un solo campo con este tipo el cual no permite

27

ingresar datos duplicados o en blanco.


Este tipo de indice es asignado al campo mas importante de la
tabla.

Asignado
por el
usuario| 3
del sistema
NO SE RE
PITE.-

T_CLIENTES
______________________________________________________
|codigo|nombre
|apellido
|N.-Registro |
---------------------------------------------------------------------------| 1
|Luis
|Perez |
|
| 2
|Juan
|Lopez |
|
|Juan
|Merino
|
|
| 4
|Ana
|Merino
|
|
| 5
|Luis
|Perez |
|
| No dejar
|Patricia
|Zelaya|
|
| en Blanco
|Ricardo
|Orellana
|
|
---------------------------------------------------------------------------

Definir el dato mas importante - Mas importante


- No se repite datos por ese campo
- No se puede dejarlo en Blanco ( Vaco )
-

Principal - Solo uno en la tabla

Tablas libres fuera de una base de datos


INDICE CANDIDATO
Funciona igual que un indice principal con la unica excepcin que
puede existir mas de uno por tabla.Puede existir mas de uno por tabla.INDICES
__________________
|
| \/
|

28

-------------------------| Primario
| Candidato
| Unico
`
| Regular
--------------------------

|
|
|
|

INDICE NORMAL
Permite duplicar datos para un campo definido en una tabla y solo
servir para relacionar archivos.-

NORMAL
================
________________________
|codigo|nombre
|
---------------------------------|
1
|Juan
|
|
1
|Luis
|
|
1
|Pedro |
|
2
|Maria |
|
3
|Jorge |
|
4
|Evangelina |
|
4
|Martha
|
---------------------------------INDICE UNICO
Repite datos permite relacionar archivos y buscar informacion excepto que
no muestra los datos repetidos.NORMAL
T_CLIENTES

UNICO
T_CLIENTES

29

__________________________
_____________________________
codigo | nombre
codigo | nombre
__________________________
_____________________________
1
| Juan
1
| Juan
1
| Luis
2
| Maria
1
| Pedro
3
| Jorge
2
| Maria
4
| Evangelina
3
| Jorge
|
4
| Evangelina
|
4
| Martha
|
Cuando defini un indice normal
muchos indices normales
Definir indices para tablas
CLIENTES
A

CODIGO DE CLIENTE ---> Principal


Apellidos

-->

Normal

Nit

-->

Normal

N-Registro

-->

Normal

Dato importante
Que sea corto
Relacin de Archivos
EMPLEADOS
codigo -----> Principal
Apellidos
-----> Normal
Nit
-----> Normal
NRegistro
-----> Normal
F.-Ingreso
-----> Normal
VF2

11 - 06 - 2002
NO HUBO CLASE SOLO CENTRO DE COMPUTO

VF2

12 - 06 - 2002
PRODUCTOS

30

Codigo
Descripcin

Principal
Normal

ENCABEZADO DE FACTURA
Numero de Factura
Fecha
Codigo Cliente
Codigo Empleado

Principal
Normal
Normal
Normal

DETALLE DE FACTURA
Numero de Factura
Codigo de Producto
Cantidad
Precio de Venta
Total - P P V .-

Normal
Normal

____________________________________________________________________
|
N____________
Fecha____________
Nit_________________|
|
Tipo Fact___________________
Reg_______________
|
|
Cliente____________________
|
|
Empleado_________________
|
|
|
|__________________________________________________________________ |
|
|
|
Producto
Descripcion Cantidad
Precio V.
Total
|
|
-------------------|
|
------------------|
|

|
|
Subtotal__________________
|
|
Iva_______________________
|
|
Total General_____________ |
___________________________________________________________________
---|

ENCABEZADO

----|

FACTURAS
FECHA
__________________________________________________________________
|
NUMERO
|
10/02/2002
|
-------------------------------------------------------------------------------------------|
|
|

31

|
|
-------------------------------------------------------------------------------------------DETALLE
|
|

______________________________________________________
|NUMERO |PROD |CAN |PRECIO
|TOTAL
|
|1
|1
|2
|1500
|3000
|
|1
|2
|2
|17
|34
|
|
|
|
|
|
|
----------------------------------------------------------------------------

Para maana paginas 7, 8, y 9 .INDICE PARA ESTADISTICA DE EMPLEADOS


AO
MES
CODIGO EMPLEADO
N DE VENTAS
TOTAL VENTAS
__________________________________________________________________
|
AO
|
MES |EMPLEADO |N.VENTAS |T.VENTAS |
--------------------------------------------------------------------------------------------|
2000
|
10
|
2
|
1
|200.00
|
|
|
|
|
|
|

ESTADISTICA DE EMPLEADOS
_
_
Indi
|Ao
|
ce por
|Mes
| Indice Principal
los
|Codigo
| Empleado
tres
--N de Ventas
Total Ventas
TAREA Traer el Estadistica de Clientes o sea Reporte
Este Viernes averiguar sobre Validaciones de campos
Desarrollo de Aplicaciones a libro Visual Foxpro

32


Tarea
Averiguar sobre los seis reportes
VF2

13 - 06 - 2002
ESTRUCTURA DE ARCHIVOS

_______________________________________________________________________
_
|Nombre de Archivo :
Tabla de Clientes
|
|Tipo
:
Maestro
|
|Indice
:
Codigo de Cliente
|
|Nombre de la Tabla :
T_Client.DBF
|
|Longitud
:
187
|
|_____________________________________________________________________ |
|NO |Campo
|Descrip.
|Tipo |Longitud
|Validado|Clase
|
--------------------------------------------------------------------------------------------------|1
|Cod_clie
|cod client
|C
|4
|carga
|
|2
|nom_clie
|nombrecl
|C
|25
|carga
|
|3
|ape_clie
|apellido
|C
|25
|carga
|
|4
|dir_clie
|direccion
|C
|60
|carga
|
|5
|tel_clie
|telefono
|C
|8
|
|
_______________________________________________________________________
Archivo Maestro
Archivo de Detalle
Suma de todas las longitudes de los campos es longitud
Nombre de archivo longitud maxima 8 digitos
Es Maestro porque raras veces se modifica o se agrega
Facturas es archivo de Detalle.
Nombre de campo mximo 10 dgitos
Total 10 Hojas = 3 de Reportes y las otras 7 tablas
|_____________________________________________________________________|
|NO |Campo
|Descrip.
|Tipo |Longitud
|Validado|Clase
|
--------------------------------------------------------------------------------------------------|6
|nit_clie
|nit del cle
|C
|17
|
|carga
|
|7
|reg_clie
|registro
|C
|7
|
|carga
|
|8
|ema_clie
|e mail cli
|C
|40
|
|carga
|
--------------------------------------------------------------------------------------------------

33

1 de estos X cada tabla


_______________________________________________________________________
_
|
Campos
|Indices
|Tabla
|
|
|_________________|___________________________ |
|
|
|
|
--------------------------------------------------------------------------------------------------Primero

: Proyectos, Base de Datos y Tablas

CLASE
Campo de Carga

Escribe

campos actualizados obtiene a traves de calculos

Precio de Venta == Precio de Costo + Ganancia


Archivo estadistico todos los campos son actualizados
Reportes primero
Formatos despues
Tabla estadistica
Carga y Actualizado -- Detalle.TotalProducto

VF2

14 - 06 - 2002
VALIDACION DE DATOS
RESTRINGE LOS DATOS
A ESCRIBIR EN LOS CAMPOS

FORMATO

|___________|

MASCARA E.|___________|

REGLA

|___________|

MENSAJE

|____________|

34

TITULO

|___________|

VALOR PREDETER. |______|

Titulo es para poner el nombre en el Formulario de este campo


Numeros

Nombre

Precio de Costo
Numerico

====>

Regla
2

99999.99
Como hacer para no escribir valores negativos
0 Valor Predeterminado
Pco_Arti > 0
Pco_Articulo

= En la regla de la Validacion del Campo


> = 10.00

Valor Predeterminado = 10.00


Campos Actualizados no se validan
Validacion de Datos (Escribir informacion especifica )
Mensaje es para : Se ponen valores mayores o iguales a 10
Formato : para saber como se escribe y com se ven los datos
Mayuscula
Letras - Numeros
99,999.99
Tiene que aparecer en el campo existencia un valor predeterminado o sea igual a 5
Regla existencia de Articulo > = 0
Registros en blanco
Valida :
4 tablas

Articulos
Facturas Encabezados
Detalles de Facturas

35

Empleados
Empleados
Sexo
Masculino
Femenino

carcater

Formato poner Letra M


Maculino Femenino
Acompaad@
Solter@
Casad@
Viud@
Divorciad@
Format =
Input Mask

Formato
=
Mascara de Entrada

En estructura de Archivo
+ Validaciones
Pco_Articulo > = 0.00 o X
Sexo = Femenino.Masculino
Tarea es Reportes como los diseamos
Estructura de los Archivos.Y la Relacion de Archivos para el 27 de Junio

VF2

17 - 06 - 2002
ESTRUCTURA DE CARPETAS

Orden
=====
Proyecto

2 Archivos

36

Base de Datos
Tabla
Formularios

2 Archivos
2 Archivos
2 Archivos

____________
|
|
----------------|
________
|-------------|
|
|
----------|
________
|-------------|
|
|
---------|
_______
|-------------|
|
|
---------|
________
|-------------|
|
|
---------|
________
|-------------|
|
|
---------|
________
|-------------|
|
|
----------|
________
|-------------|
|
|
----------|
________
|-------------|
|
|
----------|

Formularios (SCX)
Clases (VCX)
Proyecto (PJX)
Reportes (FRX)
Menus (MNX)
Programas(PRG)
Datos(DBC,DBF)
Imagenes(BMP,JPS,ICO)

Este sistema es para 5 Mese , para 3-1/2 -- A:\


Relacion de Tablas
Marchoso.OCX

----> Para dibujos en movimiento para Visual

SCT
VCT
PJT
FRT
MNT
PRG

37

Relacion de Tablas

Uno a Uno

Uno a Muchos
____________
____________
|T_Clientes |
|T_Paises
|
---------------------------------|cod_cli
|
|cod_pais
|
|_nom |
|nom_pais
|
|ape_cli
|
-----------------|cod_pais
|
|Indices
|
----------------|cod_pais
|-->
candidato
|Indices
|
----------------|cod_cli
|
|cod_pais
|---> candidato
---------------- Campo comun
igual longitud, igual tipo
Tabla X
Principal
Principal
Candidato
Candidato

Tabla Y
Principal
Candidato
Candidato
Principal

Clientes

Pais

1 Juan
2 Maria
3 Carlos

Tabla X
Principal
Principal
Candidato
Candidato

2
3

Relacion
Uno a Uno
Uno a Uno
Uno a Uno
Uno a Uno

1 El Salvador
2 Guatemala
3 Honduras
Tabla Y
Normal
Unico
Normal
Unico

Relacion
Uno a Muchos
Uno a Muchos
Uno a Muchos
Uno a Muchos

La relacion se hace de principal a normal


------|---------|--------

38

Uno a Uno
------|--------<Uno a Muchos
Figuras
Maestros

Detalles

Que tabla necesita de otra

Empleados

Facturas
Cod_Emp

Clientes
Cod_clie

La mayoria de archivos de detalles necesitan del maestro para agrgar datos


querer 7 tablas relacionadas
a partir del miercoles trabajar en disco 19 de Junio
VF2

19 - 06 - 2002

Que es un Proyecto.Es el nucleo de todo el sistema que permite administrar todos los archivos
relacionados.
Esta dividido en las siguientes partes : Datos, Documentos, Clases, codigo,
otros.

- Proyecto

Use alumnos
Browse

39

Documentos
Formularios
Reportes
Etiquetas

Modify Structure
A:\Create Form nombre
Do Form nombre
Modify Form nombre

- F Notas -

Archivo
Nuevo

__________________
|
|
| O Proyecto |
| O Base de Datos |
| O Tabla
|
Nuevo
| O Consulta |
Archivo
| O Conexion |
| O Vista
|
| O Vista Previa
|
| O Formulario
|
| O Informe |
| O Etiqueta |
| O Programa |
| O Clase
|
| O Archivo de t.
|
| O Menu
|
-------------------------Datos :

Lugar
Nombre

que es lo que Ud., puede crear :


Base de Datos
Tablas Libres
Consultas (Sql, Qpr )
Tablas

Database
Tablas Libres
Consultas
8 Digitos para Archivos
T_Clientes.DBF

40

R_Clientes.FRX
F_Clientes.SCX
B_Clientes.DBC
TAREA
Base de Datos
Tablas
Indices
Y
Relaciones

Solo Proyecto
Y Datos

DOCUMENTOS
_____________________________
Formularios
Reportes
Etiquetas

(Pantallas)

VF2
C:\

20 - 06 - 2002
|

Codigo
| | Clases
| | imagenes
| | proyecto
| | formularios
| | reportes
| | datos
| | menus
| | programas

Control C ----> Para Copiar


Control V ----> Para Pegar

La Vieta Clases permite crear bibliotecas de objetos que se utilizaran mas


de una vez. La vieta codigo contiene programas que permiten abilitar otros
archivos y la ultima la vieta otros permite crear menus,archivos de texto y
referencia a imagenes.
Para Crear la Base de Datos
Vieta Datos
Selecciona Base de Datos
Nuevo

41

Nueva Base de Datos


Subir un nivel y selecciona la carpeta de Datos
Crear Tablas en la Base de Datos
Click derecho en la Base de Datos
Nueva Tabla
Nueva Tabla
Ubicacion
Nombre
Click derecho en un area vacia de Diseado de Base de Datos y aparece
donde y como poner el nombre y lo demas
Crea campos de codigo de clientes, es importante crear el indice en el
campo que esta en la expresion.
Desarroloo de Aplicaciones
Se van a validar :
Articulos
Facturas
Detalles Fact. Encabezados de Facturas
Empleados
VF2

24 - 06 -2002
HOY HUBO CENTRO DE COMPUTO

VF2

26 - 06 - 2002
PROXIMO MES HACER FORMULARIOS

Averiguar para el proximo mes lo que son Eventos, Metodos, que ocupan los
Objetos.

42

VF3

04 - 07 - 2002
PRIMERA CLASE
1

Laboratorio Teorico

Tarea
3 Diskettes de Copia

Formularios
Son diseos de pantallas en los cuales se crean mantenimientos o consultas
de cualquier archivo.
Todo formulario posee entorno de datos del cual se agrgan o consulta
cualquier informacion.
En un Formulario puede colocar cualquier tipo de objetos, desde texto hasta
videos.
---------> Documentos
Formulario
Nuevo
Nuevo Archivo
Hasta que termine el diso del formulario hasta entonces lo graba
Opcion Ver Controles y Propiedades
Todos los objetos incertados en un Formulario poseen metodos, eventos, y
propiedades.

43

Algunas con identicas para todos y en algunos casos varian dependiendo


del tipo de objeto.
Metodo : es un conjunto de instrucciones que se ejecutan cuando el usuario
lo desea.
Evento : es un procedimiento que se activa siempre al utilizar mi objeto.
Propiedad : son caracteristicas predefinidas por objeto.
Metodo ----> Evento
| Salir |

<-------

Instruccion

THISFORM.RELEASE()

Evento Click
Procedimiento
METODO
INSTRUCCIONES O PROCEDIMIENTOS

-------------------------
Formularios
Nuevo Metodo

Propiedades
Carcteristica

Nueva Propiedad
Autosize --- T , F
Todos los objetos poseen un nombre y una clase a partir del cual son
diseados.

No puede existir varios objetos con un mismo nombre.

Class --- Clase, Familia a la que pertenece el objeto Familia.


Name ----

Nombre del objeto

Label ---- Clase o familia


Label1

------ Name

44

---- Caption
Mensaje de Muestra ( Pantalla ) -------------->

THISFORM.Label1.Caption

Juanito

No puede existir varios objetos con el mismo nombre.Thisform.Label1.Caption = Juanito


Thisform.Label1.Caption = Juanita

Error de Logica
Eventos comunes en Objetos
INIT : Inicializar Valores
Se utiliza para inicalizar variables o activar procedimientos una
sola vez en objetos o formularios.
| Text1 |
1

INIT

Agrega o Modifica

Formulario
IVA = 0 Definir en el Formulario = Init
Ejecutar Formulario

! CTRL + E

Valor del Iva


Original
0.13
THIS.Value = 0.13
LOAD :

en el Init de la caja de texto

Funciona a la vez cuando ejecute un formulario y es util tambien

45

para inicializar valores, el Load funciona casi como el Init en Jerarquia :


1 : Load
2 : Init
Que Tabla
necesita
de otra

Alumno
2
Modulos
1

Ocurre cuando hace click en un objeto, se activa con una letra caliente
se presiona barra espaciadora.
_____________
| ADICION |
Botones
----------------Letra caliente

Click

Enter

_____
| Casillas de Verificacion
------|
| soltero
------|
| casado
------Estado Civil

___________________
|O Solter@
|
|O Casad@ |
|O Divorciado
|
|O Viud@
|
--------------------------

Click

Evento

Error

Se activa cuando ocurre un error en un objeto utilizado.


____________
| Label1
|
Thisform.Label1.Caption =Juanito
----------------Evento

Gotfocus

Se activa cuando un objeto es el que se encuentra activo.


_____________
Nombre
| Text1 |
Di
|FontBold .T. .F.
----------------- se
|Programar en Gotfocus

o
|
Click doble
|
Click
|FontItalic
Tab
|FontUnderline

46

_______________
Objeto |Text1 | |Procedimiento
---------------------

|GotFocus

____________
|
-----------------

This.FontBold = .T.
This.BackColor = R G B ( 0,255 0,255 0,255 )
Propiedades
BackColor

Click
Evento LOSTFOCUS
Ocurre cuando un objeto pierde el enfoque
___________
_______________
Objeto |Text1 ||
Procedimiento |LostFocus | |
-----------------------------------Propiedad

Enabled

-------|-------> .T. Habilitado


--------> .F. Deshabilitado

This.Enabled = .F.
La mayoria de campos lo tienen GotFocus y LostFocus
Evento MouseDown
Ocurre cuando se hace click sobre un boton o en el boton
MessageBox(Presiono Click)
MouseMove
Sucede cuando se mueve el mouse sobre un objeto
______________________________
|---Mouse Move
|
|
________
|
|
|
|<---Boton
|MessageBox;
|
----------|Presioneme
|
|

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

Objeto Boton1 Procedimiento Mouse Move


Evento Valid

47

Se utiliza para restringir el acceso de cualquier informacion en un


campo que se realiza a nivel de formularios.
_____________
_________
Objeto |Text1 |
| Procedimiento
|Valid| |
1 Valid

Antes del LostFocus

2 LostFocus
Valid (Validacion )
Todos los eventos poseen una jerarquia
Empty esta vacio
IF Empty(This.Value)
MessageBox(Nombre va 0)
Return 0
Endif
Formato

@!

Mascara de Entrada
Format
InputMask
VF3

8 - 07 - 2002
Propiedades mas Comunes

Caption

: Establece el texto a mostrar en un Objeto

BackColor

: Establece color de fondo a objetos y formularios.

BorderStyle

: Define el estilo de borde alrededor del formulario


: Los valores son :

0 - Sin Borde
1 - Borde Sencillo
2 - Borde doble linea
3 - Borde Predeterminado

48

Icono

: Determina el icono que se mostrara en la barra


: de titulo del formulario.

Enabled

: Determina si o no un objeto se encuentra activo.-

Closable

: Muestra invisible los botones de control en un


: Formulario.
Enabled del formulario a verdadero

ShowTips

: Determina si se muestra ayuda para los objetos


: en el formulario cuando el puntero del mouse se
: posiciona en estos. Esta propiedad es
: acompaada de un ToolTipText

Al Formulario
ShowTips

------

ToolTipText

Debe estar
a

------ > Por el Objeto


Mensaje por Objeto

.T.
Picture : BackColor
: Establece una imagen .Bmp -- Jpg -- Guif
: para cualquier Objeto.
Que diferencia hay entre Background
BgColor

\
|
/

Usados

Internet

Visible : .T. -- .F.


: Determina si un objeto esta o no visible en un
______

: formulario o el mismo.
____________

49

|Usar |
--------
Enabled

_______
|
|
.T.
.F.

AutoCenter

|Ver o No
|
----------------
Visible

_____________
|
|
.T.
.F.
: Determina si el formulario es centrado de forma
: automatica.- Si=.T. No=.F.
BorderStyle de 0 a 2 - Para que no se desajuste

ForeColor

: Determina el color utilizado para un Objeto o sea


: el color del Texto.

FontSize

: Determina el tamao del texto.-

FontName

: Determina el tipo de Fuente -- sea la clase de


: letra.

ControlSource : Determina e indica la relacion que existe


: de un objeto con un campo
: predeterminado.

Diseo de Objetos :
ComboBox(Cuadro de Combinados)
___________________
|
| |
-------------------------|ab
| |
|
| |
|
| |
-------------------------Propiedades

Style
Picture
ControlSource RowSourceType
50

RowSource
ForeColor
FontSize
Estilo

BackColor
FontBold
FontName

: Si el Combo es cuadro Combinado -- Lista


: Desplegable

Picture : Imagen a lo desplegable, establecer esta propiedad.


ControlSource : Relacionar un campo con una tabla.
VF3

09 - 07 - 2002

11 Botones de Comando para el nuevo formulario.


Este formulario que henos hecho en este dia en la clase de computo se llama
: Frm_Alumnos.SCX
Las propiedades de el formulario son :
AutoCenter
BorderStyle
Caption
Enabled
Icon
Movable
Name
ShowTips
Visible
WindowStyle
WindowType
Caja de Texto
BaseClass
Class
Name
BackStyle
BackColor
BorderStyle
ForeColor
SpecialEffect
Object : Command1

:
:
:
:

:
.T.
:
0 - Noborder
:
Formulario de Alumnos
:
.T.
:
(None)
:
.F.
:
Form1
:
.T. True
.T. True
-0-Normal
0-Modeless
Text1
:
:
:
:
:
:
:
0 - 3D

TextBox
TextBox
Text1
1 - Opaque ( Default )
0, 255, 0
0 - None
0, 0, 255

Procedure

:Click

ThisForm.CommandGroup1.Command1.Caption=Presioneme

51

AutoSize
Caption
ClickEvent
Name

:
:
:
:

Object :Command2
Caption
Name
Picture

Procedure

ToolTipText

:Click

:
\<Salir
:
Command2
C:\Archivos de Programa\Microsoft Visual
Studio\VFP98\Wizards\Graphics\Paste.Bmp

Object :Command3
Caption
Name
Picture

False .F. (Default)


\<Salir
User Procedure
Command1

Procedure

Click

:
None
:
Command3
C:\Archivos de Programa\Microsoft Visual
Studio\VFP98\Wizards\Graphics\Save.Bmp
:
Boton con Imagen

Object :CommandGroup1

Procedure

BorderColor
BorderStyle
ButtonCount
Name
Value

0, 0, 0
1 - Fixed Single (Default)
2
CommandGroup1
1

:
:
:
:
:

Object :Command1
Caption
Name

Procedure
:
:

Object Command2
Caption
Name

Click

\<Agregar
Command1
Procedure

:
:

:Click

:Click

\<Presioneme
Command2

VF3

`10 - 07 - 2002
HUBO CENTRO DE COMPUTO

52

VF3

11 - 07 - 2002

FORMULARIO DE CLIENTES
_______________________________________________________________________
|
|
|
Codigo|
|
|
|
Nombre
|
|
Apellido
|
|
|
|
Direccion
|
|
|
|
Telefono
|
|
NIT
|
|
|
|
EMail
|
|
REG
|
|
|
|
Botones 1
|
|
____ ____ ____ ____ ____ ____ ____ ____ ____
|
|
| | | | | | | | | | | | | | | | | |
|
|
--------- ----- ----- ----- ----- ----- ----- -----|
|
____ _____
|
|
botones 2

| | |
| |
|
------ ------|
|
|
--------------------------------------------------------------------------------------------Botones
:1y2
---- Establecer Imagenes segun nombre de boton
---- Quitar , Caption
---- Establecer Nombres
---- Botones1
Botones2
-- Adicion
-- Guardar
-- Consulta
-- Cancelar
-- Modificar
-- Eliminar
-- Primero
Colocar a todos los
-- Siguiente
Botones el ToolTipText
-- Anterior
-- Ultimo
Diseo es opcional
-- Salir del Formulario
mismo tamao
Picture .- para poner
Imagen

53

Entorno de datos
Agregar 2 veces la tabla de Clientes
____________
____________
|T_Clientes |
|T_Clientes1|
---------------------------------|
|
|
|
Adici |
|
|
| Consultar
on |
|
|
| Informacion
|
|
|
|
-------------------------------- Ver Entorno de Datos
Click Derecho
Entorno de Datos
Opcion Formato
BUFFER DE DATOS
Se define como una tabla temporal en la que se agrega informacin y
se crea a partir de una tabla real.
VF3

12 - 07 - 2002
Visual dispone de 2 tipos de almacenamiento en buffers : Registro y
Tabla.
El buffer permanece activo hasta que se desactiva o hasta que cierre la
tabla.
Nombre

Telefono
Buffer de
Registro

Nombre

Telefono

Nombre

Telefono
Buffer de
Tabla

Nombre

Telefono

54

Para modificar o escribir un solo registro, utiliza buffer de registros.


Para modificar o agregar varios registros a la vez utiliza buffer de
Tablas.
Buffer hace mas seguro la actualizacion de datos. Hay que trabajar con
buffer por obligacion.
Existen formas de bloqueo cuando una tabla posee buffer y esta activa.

El primero

Optimista.

El segundo

Pesimista.

Optimista bloquea los datos solo en el momento en que


actualiza.

Pesimista bloque los datos siempre que la tabla este en Uso.


1
2
3
4
5

Bloqueo

Sin Buffer
Pesimista
Buffer de Registro
Optimista
Buffer de Registro
Pesimista
Buffer de Tabla
Optimista
Buffer de Tabla

BufferModeOverride
Browse
____________________________________
|codigo|nombre
|
|
|
|
|
|
|
|
|
|
---------------------------------------------------

En la tabla se bloquea todos los regsitros.En el registro se bloque solo uno a la vez.Para poder actualizar se utiliza el comando TABLEUPDATE()
Para cancelar un proceso en un buffer se utiliza el comando
TABLEREVERT()

55

Procedimientos para activar y desactivar objetos


______________________________________________________
|codigo________________
|
|nombre_______________ apellido________________
|direccion_____________
telefono________________
|
|email________________
|
|nit___________________ reg____________________
|
|
|
---------------------------------------------------------------------------Ejecute Formulario

Adiciones

Controles datos
desactivados activ

boton1 boton2
desacti

activados

desact activados

Guardar o
Cancelar

desactivadosq activado desacti.-

VF3

15 - 07 - 2002
Creacion de Metodo

Formulario Nuevo Metodo


_____________________________________________________
|Nuevo Metodo
|
-----------------------------------------------------------------------|
____________
____________
|
|Nombre
|Controles
|
|Agregar
|
|
|
----------------- ----------------|
|Descripcion
|Cerrar |
|
|
_____________
-----------------|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------

Se va a escribi en Controles : Procedimiento


variable

56


LParameters

estado(.F..V.) txtcodigo.enabled=estado
variable
_______

Parametro = recibir un valor

txtcodigo.enabled=estado
txtcodigo.enabled= .T.
----------
constante

estado = .T.
THISFORM.txtcodigo.enabled=estado

Todos los Txt y despues hasta terminar

THISFORM.Hasta.email

=estado
THISFORM.guardar.enabled=estado
THISFORM.cancelar.enabled=estado
THISFORM.adicion.enabled=!estado
THISFORM.consulta.enabled=!estado
THISFORM.edicion.enabled=!estado
THISFORM.eliminar.enabled=!estado
THISFORM.prinero.enabled=!estado
THISFORM.siguiente.enabled=!estado
THISFORM.anterior.enabled=!estado
THISFORM.ultimo.enabled=!estado
THISFORM.salir.enabled=!estado
FORM1

INIT

THISFORM.CONTROLES(.F.)
VF3

16 - 07 2002

ADICION.CLICK
THISFORM.Controles(.T.)
SELECT T_CLIENTES
APPEND BLANK
THISFORM.REFRESH()
THISFORM.TXTCODCLI.SETFOCUS()
* TXTCOD_CLI.VALID
DO CASE
CASE SEEK(THIS.VALUE,T_CLIENTES1)

57

MESSAGEBOX(CODIGO YA EXISTE,0,ERROR)
RETURN 0
CASE EMPTY(THIS.VALUE)
TABLEREVERT()
SKIP -1
THISFORM.CONTROLES(.F.)
ENDCASE
Para txtCod_cli o sea codigo
SELECT ON ENTRY = PROPEIDAD A .T.
GUARDAR.CLICK
THISFORM.CONTROLES(.F.)
TABLEUPDATE()
THISFORM.REFRESH()
CANCELAR.CLICK
THISFORM.CONTROLES(.F.)
TABLEREVERT()
SKIP -1
THISFORM.REFRESH()
________________________________________________________
Para maana debe funcionar :
Adicion

Guardar

y Cancelar

SALIR.CLICK
THISFORM.RELEASE()
Supuesto maa para modificar datos
CUADRO COMBINADO DE BARRA DE CONTROLES
Propiedades de Cuadro Combinado

STYLE

----

_________________
|
|
|
-------------------------|ab
|
|
|
|
|
-------------------------LISTA DESPLEGABLE

PICTURE.-

58

VISIBLE .F.
RowsourceType
RowSource

=
=

6
Campos
Tabla de Clientes.Codigo de Cliente

VF3

17 - 07 - 2002
HOY HUBO CENTRO DE COMPUTO

VF3

18 - 07 - 2002

Funcion

MessageBox

Formato

MessageBox(Texto de Mensaje,Tipo de Cuadro,;


texto de Barra)

Tipo de Cuadro

Valor

Botones

0
1
2
3
4
5

Aceptar
Aceptar y Cancelar
Anular, Reintentra y Ignorar
Si, No , Cancelar
Si, No
Reintentra, Cancelar

Valor

Icono

16
32
48
64

Punto
Signo de Interrogacion
Signo de Exclamacion
Signo de Informacion

Valor

Boton Predeterminado

0
256
512

Primer Boton
Segundo Boton
Tercer Boton

Valores devueltos por MessageBox por cada Boton


Valor Devuelto

Boton

Aceptar

59

2
3
4
5
6
7

Cancelar
Anular
Reintentar
Ignorar
Si
No
__________________________________________
|Error de Adicion
|
----------------------------------------------------------|
|
|
Codigo Vacio
|
|
___________
__________
|
|
|Reintentar|
|Cancelar|
|
|
---------------------------|
|
|
----------------------------------------------------------MESSAGEBOX(CODIGO VACIO,5+64+256,ERROR;
DE ADICION)
__________________________________________
|MODIFICAR
|
----------------------------------------------------------|
|
|
MODIFICARA ESTE DATO
|
|
___________
__________
|
|
|SI
|
|NO |
|
|
---------------------------|
|
|
----------------------------------------------------------MESSAGEBOX(MODIFICARA ESTE ;
DATO,4+32+0,MODIFICAR)

Seguimos con el procedimiento de Modificar


El combo1 se va a activar desde el Modificar boton
* MODIFICAR.CLICK
Y se pone Visible = .F. desde el principio
THISFORM.COMBO1.VISIBLE=.T.
THISFORM.COMBO1.SETFOCUS()
* COMBO1.VALID

60

THISFORM.REFRESH()
__________________________________________
|MODIFICAR
|
----------------------------------------------------------|
|
|
MODIFICARA REGISTRO
|
|
___________
__________
|
|
|SI
|
|NO |
|
|
---------------------------|
|
|
----------------------------------------------------------COMBO1.LOSTFOCUS
mensaje=MESSAGEBOX(MODIFICARA REGISTRO,4+32+0,MODIFICAR)
IF mensaje=6
THISFORM.CONTROLES(.T.)
THISFORM.COMBO1.VISBLE=.F.
THISFORM.TXTCOD_CLI.ENABLED=.F.
THISFORM.REFRESH()
THISFORM.TXTNOM_CLI.SETFOCUS()
ELSE
THISFORM.COMBO1.VISBLE=.F.
ENDIF
VF3

19 - 07 - 2002
No se pone buffer en Clientes1
Alt 167 = N ASCII - alt equivale a
Formulario de Clientes
Formato espacio Horizontal hacer igual
Sistema de Facturas
a la tabla de clientes1 en el entorno de datos colocar la propiedad
order y seleccionar el codigo de cliente
buscar cuadro combinado
lista desplegable = style

61

sube y selecciona tabla de clientes y codigo de clientes


Visible = Falso
Combo1.Valid
THISFORM.REFRESH()
VF3

22 - 07 - 2002

ELIMINAR.CLICK
IF DELETE()
RECALL
THIS.CAPTION=ELIMINAR
ELSE
DELETE
THIS.CAPTION=RECUPERAR
ENDIF
FORM1.REFRESH()
IF DELETE()
THISFORM.ELIMINAR.CAPTION=RECUPERAR
* ELSE
THISFORM.ELIMINAR.CAPTION=ELIMINAR
ENDIF
* THIS.Picture=a:\20002\imagenes\eliminar.Bmp
Eliminacion logica No Fisica
X

ELIMINAR

FORMULARIO

RECUPERAR

DE CONSULTA

Nuevo Formulario
__________________________________________
|
__________________
|
|
Dato |Text1
|
|
|
-------------------------|
|
|

62

|
CodigoNombre
|
|
_________________________
|
|List1
|
|
|
|
|
|
|
|
|
|
|
---------------------------------|
|
-----------------------------------------------------------

|
|
|
|
|
|

Va a consultar de 4 Tablas 1 Consulta Solamente


FORM.INIT
LPARAMETERS
CONSULTA
PUBLIC DATO
DATO=VCONSULTA
TEXT1.LOSTFOCUS
DO CASE
CASE DATO = 1
SELECT
CODIGO,NOMBRE,APELLIDO FROM;
T_CLIENTES WHERE T_CLIENTES.APELLIDO =
ALL;
TRIM(THIS.VALUE) INTO CURSOR DATOS
CASE DATO = 2
IDEM
CASE DATO = 3
IDEM
CASE DATO =4
IDEM PARA OTRA TABLA
ENDCASE
Visual 4 , 3 , 5 , 6 y el 31 ultimo dia
vacaciones Viernes 2 Agosto primer dia de Clase

__________________________________________
|
__________________
|
|
Dato |Mendez
|
|
|
-------------------------|
|
|
|
CodigoNombre
|
|
_________________________
|
|
|4 Carlos Mendez
|
|

63

|
|5 Jorge Mendez
|
|
|
|
|
|
|
|
---------------------------------|
|
----------------------------------------------------------CONSULTA.CLICK
DO FORM A:\20002\FORMULARIOS\F_CON

|
|
|
|

WITH 1

Saber que formulario llama al formulario de consulta.


Servira para consulta de

Clientes
Productos
Empleados
Facturas

Para desplegar los Datos en List1


Despues del ENDCASE del Text1.LostFocus()
THISFORM.LIST1.COLUMNCOUNT=3
THISFORM.LIST1.COLUMNWIDTHS=50,150,150
THISFORM.LIST1.COLUMNLINES=.T.
THISFORM.LIST1.ROWSOURCETYPE=2
*(ALIAS)
THISFORM.LIST1.ROWSOURCE=DATOS
THISFORM.REFRESH()
* EL 2 ES UN ALIAS

LIST1.DBLCLICK
DO CASE
CASE DATO = 1
VCONSULTA = DATOS.CODIGO DE CLIENTES
`

Temporal
Campo de
la tabla
especifica
CASE DATO = 2

64

VCONSULTA = DATOS.IDEM
CASE DATO = 3
VCONSULTA = DATOS.IDEM
CASE DATO = 4
VCONSULTA = DATOS.IDEM
ENDCASE
THISFORM.RELEASE()
Clientes.Init
PUBLIC VCONSULTA
VCONSULTA =
Clientes.Activate
SELECT T_CLIENTES
SEEK VCONSULTA
THISFORM.REFRESH()
FORM1.ACTIVATE
PUBLIC VCONSULTA
VCONSULTA=
SELECT T_CLIENTES
SEEK VCONSULTA
VF3

23 - 07 - 2002

Clases son Plantillas con cualquier estilo de Objetos o Formularios que se


utilizan en un numero indeterminado de vesces.
En una clase se disean aquellos objetos que son comunes en todos los
formularios.
No se establecen entorno de datos, todo es diseo.
Al crear una clase todos los procedimientos son heredados de forma
automatica.
Nombre de Clase

Formularios

Basado en

Form

Almacenarse en

`Mis Clases1

65

____________________________________________________________________
|
|
| _______________________________________________________________ |
| |
| |
| |
| |
| |
| |
| |Container1
| |
| |
| |
| -------------------------------------------------------------------------------------|
|
|
| _____________________________________________ ____________ |
| | _____ _____ _____ _____ _____ _____ _____ |
| ___ ___ | |
| | |
||
||
||
||
||
| |
||
|| || | | |
| | ------- ------- ------ ------ ------ ------- ----- |
| ---- ----- | |
| -----------------------------------------------------------------------------|
|

|
------------------------------------------------------------------------------------------------

Grupo de Botones
Grupo de Botones
A todos los Objetos les cambia
nombre al grupo no al Boton

Hay que crear el metodo


sin instrucciones

VF4

24 - 07 - 2002

DISEO DE CLASE
____________________________________________________________________
|
|
| _______________________________________________________________ |
| |
| |
| |
| |
| |
| |
| |Container1
| |

66

| |
| |
| -------------------------------------------------------------------------------------|
|
|
| _____________________________________________
____________ |
| | _____ _____ _____ _____ _____ _____ _____ |
| ___ ___
| |
| | |
||
||
||
||
||
| |
||
|| | | | | |
| | ------- ------- ------ ------ ------ ------- ----- |
| ---- ----- | |
| ------------------------------------------------------------------------------ |
|

|
------------------------------------------------------------------------------------------------

Grupo de Botones(1)
Grupo de Botones ( 2 )

Creacion de Metodo

Clase Nuevo Metodo


Programacion Nuevo Metodo
Objeto Form1

Procedimiento Controles

LParameters estado
THISFORM.CONTAINER1.SETALL(enabled,estado,textbox)
THISFORM.CONTAINER1.SETALL(enabled,estado,editbox)
THISFORM.grupo2..SETALL(enabled,estado,commandbutton)
THISFORM.grupo1..SETALL(enabled,!estado,commandbutton)
Hasta Aqu el Metodo

Creacion de Nueva Tabla


Tabla ( Correlativo )
Nueva Tabla
Nombre

Tipo

Longitud

Dec

Cod_empl

Nume

NO

Cod_prod

Nume

Lleva

67

Num_fact
* Agregar

Nume

Indices

solo 1 Registro con el Valor de 1.-

Tabla T_empleados Modificar


Nombre

Tipo

Longitud

Cod_emp

Nume

Valor Predeterminado |

Dec

______________________________
|
------------------------------------------

Establecer en Valor Predeterminado :


T_correlativo.Codigo Empleado

Tabla
Campo
Para Formulario de Empleados y Productos
_____________
|
|
2 Click al Formulario
----------------Class

Label

THISFORM.CONTROLES(.F.)
Nuevo Formulario
Codigo numerico

Generar * Creacionde Tabla (Correlativo)

___________________________________________________________
|
|
|
|Empleados
|
|
|
-------------------------------------------------- |
|
____________
|
|Codigo de Empleado |
1
|*
|
|
----------------|

68

|
|
-----------------------------------------------------------------------------------_____________
_____________
|Adicion
|
|Guardar
|
---------------------------------

|
|

1 Registro Correlativo
Codigo Empleado
Codigo Producto
Numero Factura
____________________________________________________________
|
1
|
1
|
1
|
-----------------------------------------------------------------------------------|
|
|
|
|
|
|
|
-----------------------------------------------------------------------------------VF3

25 - 07 - 2002
Formulario Empleados y Productos

Crear Nuevo Formulario

Documentos
Nuevo Nuevo formulario

Proceso para Activar Clase

Barra de Controles
__________________
|
__________ |
| |
| |
|
|
| |
|
|
| |
|
|
| |
|
--------------- |
-------------------------- |

Boton de Clases
__________________
|Agregar
|
|Standard
|
|Controles Activ X
|
|
|
|
--------------------------

Selecciona Agregar

Busca la unidad -- Carpeta en la que se almaceno

69

la Clase

Selecciona el nombre de la Clase.

Aceptar

Arrastrar el Icono de la Clase al Formulario

Preguntar si desea crear un conjunto de Formularios


_____________
|Indicar SI
|
----------------1

Borrar el Formulario creado en la Opcion Nuevo


Formulario.
Formulario

Menu Barra
-

Quitar Formulario

Activarlo a traves de de la Ventana Propiedades


Borrar el Conjunto de Formularios
- Formulario Quitar conjunto de Formularios

Menu de Barra
* Debe de mostrar un solo Formulario con la
Lista de sus Objetos creados en la Clase.

Hacer fichas de lo que uno escribe en el cuaderno para sacar


Los Datos
FormSet
Form1
Clase
Container
CommnadGroup1
Com1 hasta 5
etc
CommandGroup2
Com1 y 2

70

VF3

26 - 07 - 2002
Formulario

Enpleados y Productos........Continuacion

____________________________________________________________________
|
|
| _______________________________________________________________ |
| |_________________________________________________________
|
|
| ||
|
|
| |
| ||
------------------------------------------| |
| ||
|
| |
| |--------------------------------------------------------------------------------| |
| -------------------------------------------------------------------------------------|
|
|
| _____________________________________________
____________ |
| | _____ _____ _____ _____ _____ _____ _____ |
| ___ ___
| |
| | |
||
||
||
||
||
| |
||
|| || | | |
| | ------- ------- ------ ------ ------ ------- ----- |
| ---- ----- | |
| -----------------------------------------------------------------------------|
|

|
------------------------------------------------------------------------------------------------

Grupo de Botones(1)
Grupo de Botones ( 2 )

En el Contenedor crear un Marco de Pagina

En la pagina 1 colocar campos de Empleados

En la pagina 2 Colocar campos de Productos

Arratrar campo por campo hacia el Formulario

Cambiar Nombre en el Caption de cada una de las Paginas por :


Empleados y Productos
FORM1.INIT
THISFORM.CONTROLES(.F.)
HOJA1(EMPLEADOS).ACTIVATE
SELECT T_EMPLEADOS
THISFORM.REFRESH()
HOJA2(PRODUCTOS).ACTIVATE
SELECT T_PRODUCTOS
THISFORM.REFRESH()
71

Definir este Procedimiento identico en el Evento Click de cada


Hoja.

HOJA1.(EMPLEADOS).ACTIVATE
THISFORM.MARCO.ACTIVEPAGE=1
SELECT T_EMPLEADOS
HOJA2.(PRODUCTOS).ACTIVATE
THISFORM.MARCO.ACTIVEPAGE=2
SELECT T_PRODUCTOS
Sobre el contenedor activa click derecho y escoge modifcar
__________________
|
|
|
|
--------| Marco de Pagina
|
|
|
|
------------------------Entorno de Datos
T_Empleados Buffer y Order
T_Productos
Buffer y Order
T_Correlativo -------Marco de Pagina Click Derecho y Modificar
ADICION.CLICK
THISFORM.CONTROLES(.T.)
DO CASE
CASE THISFORM.CONTAINER1.PAGEFRAME1.ACTIVEPAGE=1
SELECT T_EMPLEADOS
APPEND BLANK
THISFORM.CONTAINER1.PAGEFRAME1.PAGE1.TXTCODIGO.ENABLE
D=.F.
THISFORM.CONTAINER1.PAGEFRAME1.PAGE2.ENABLED=.F.
THISFORM.REFRESH()
THISFORM.CONTAINER1.PAGEFRAME1.PAGE1.TXTNOMBRE.SETFOC
US()
CASE THISFORM.CONTAINER1.PAGEFRAME1.ACTIVEPAGE=2
SELECT T_PRODUCTOS

72

APPEND BLANK
THISFORM.CONTAINER1.PAGEFRAME1.PAGE2.TXTCODIGO.ENABLE
D=.F.
THISFORM.CONTAINER1.PAGEFRAME1.PAGE1.ENABLED=.F.
THISFORM.REFRESH()
THISFORM.CONTAINER1.PAGEFRAME1.PAGE2.TXTDESCRIPCION.SET
FOCUS()
ENDCASE
GUARDAR.CLICK
THISFORM.CONTROLES(.F.)
DO CASE
CASE THISFORM.CONTAINER1.PAGEFRAME1.ACTIVEPAGE=1
SELECT T_EMPLEADOS
TABLEUPDATE()
SELECT T_CORRELATIVO
REPLACE T_CORRELATIVO.CODIGO EMPLEADO WITH
T_CORRELATIVO.CODIGOEMPLEADO + 1
TABLEUPDATE()
CASE THISFORM.CONTAINER1.PAGEFRAME1.ACTIVEPAGE=2
SELECT T_PRODUCTOS
TABLEUPDATE()
SELECT T_CORRELATIVO
REPLACE T_CORRELATIVO.CODIGO PRODUCTO WITH
T_CORRELATIVO.CODIGO PRODUCTO + 1
TABLEUPDATE()
ENDCASE
THISFORM.CONTAINER1.PAGEFRAME1.PAGE1.ENABLED=.T.
THISFORM.CONTAINER1.PAGEFRAME1.PAGE2.ENABLED=.T.
THISFORM.REFRESH()
CANCELAR.CLICK
THISFORM.CONTROLES(.F.)
DO CASE
CASE THISFORM.CONTAINER1.PAGEFRAME1.ACTIVEPAGE=1
SELECT T_EMPLEADOS
TABLEREVERT()
CASE THISFORM.CONTAINER1.PAGEFRAME1.ACTIVEPAGE=2
SELECT T_PRODUCTOS
TABLEREVERT()
ENDCASE
THISFORM.CONTAINER1.PAGEFRAME1.PAGE1.ENABLED=.T.
THISFORM.CONTAINER1.PAGEFRAME1.PAGE2.ENABLED=.T.
THISFORM.REFRESH()

73

En el Control o marco de pagina de Productos hay que arreglar la opcion de


el Costo de Producto el % del Producto se pueda cambiar para que de un
resultado total diferente en el precio de venta ya finalizado.
Si dato = 1

Clientes

Si dato = 2

Empleados

Si dato = 3 Facturas
Si dato

= 4 Productos

VF4

PRIMERA CLASE

FACTURAS

EXTRAER CLASE

ENTORNO DE DATOS

Nuevo Formulario

Clase

Agregar

Buscar Clase

La encuentra y la selecciona

Arrastrar el Icono del Formulario

Conjunto de Formularios

02 - 08 - 2002

S
NO se debe quitar el conjunto de Formularios no el otro Control
NO BORRAR NINGUN FORMULARIO
Debe aparecer con F2 el

Form1 y no se debe quitar

74

____________________________________
|
|
|
_____________________________________
|
FormSet1
|
|
Form1
|
|
Clase
|
|
Container
|
|
Grupo1
|
|
Grupo2
|
_____________________________________
Entorno de datos
Total 8 Tablas

Facturas

Detalle

Clientes

Empleados

Productos

Correlativo

Estadistica de Clientes

Estadistica de Empleados

Valor Predeterminado de Numero de Factura


y Escribir : T_Corre.Numero de Factura

Que Relaciones entre tablas en el entorno de datos :


Relaciones para actualizar y hacer busqueda

Campo
a
Indice
__________________
__________________
|Facturas
|
|Clientes
|
------------------------- ------------------------|Campos
|
|Campos
|
------------------------- ------------------------- Se hace de campo
|Numero
|
|codigocliente |
|codigoa
| |
|nombre
|
a campo y se va
|codigocliente |
|apellidos
|

75

|
|
|indices
|
------------------------- |codigocliente |
------------------------Iniciar en Facturas
Termina en Clientes

indice

Factura necesita de Clientes


VF4

07 - 08 - 2002
RELACIONES DEL ENTORNO DE DATOS DE FACTURAS

Mismo dibujo
tablas de :
Facturas
Detalle
Productos
Clientes
Empleados
Estadistico de Clientes
Estadistico de Empleados
Correlativo

Tabla de Detalle

:
Numero de Factura en el valor Predeterminado
poner

T_Facturas.Numerode Factura
T_EncaFactura.Numero de Factura

Como voy a saber que el detalle es la misma que el # de Factura en el


encabezado.
Campo a Indice
Factura

Clientes

Relacion de Factura a Clientes

76

Codigo de Clientes

Relacion de Factura a Empleados


Factura

Tabla de Detalle

Empleados

Productos

Codigo de Empleado

Codigo de Producto

Entre las estadisticas no existe ninguna relacion con ninguna tabla


1

Que datos estan relacionados entre


detalle y factura ?

La ultima relacion que va a crear ser

Factura

Detalle

NumeroFactura

RECORDARSE QUE HAY CUATRO RELACIONES EN EL ENTORNO DE DATOS


DE FACTURAS.
Que Buffer y que orden le va a poner a que tablas .- En el Entrono de datos
de Facturas.

Le pone Buffer cuando agrega o modifica


Buffer

Order
CodCliente

Tabla
Clientes

INTEGRIDAD REFERENCIAL EN LA BASE DE DATOS ES DIFERENTE


DEL ENTORNO DE DATOS
Cod_Empleado

Empleados

Opcional(3)Replace Cod_Producto
Productos
Indice Creado
Esta_Clientes

Actualizar
TableUpdate()
77

Opcional(3)

Indice creado

EstadisticaEmpleados

Buffer(3)

Numero Factura

Facturas

Optimista(5)
Tablas

Numero Factura

Detalle

*********
Metodo se llama a controles
Hay un metodo que usted cre

THISFORM.CONTAINER1.SETALL(ENABLED,ESTADO,TEXTBOX)
Poner afuera del contenedor
Dejar afuera del Contenedor Modificado

___________________
|Subtotal
|
|Iva
|
|Total
|
-------------------------

Dejar afuera del Contenedor :


Numero de Factura,Fecha,Nit,Registro
Nombre y Apellido del Cliente
Nombre y Apellido del Empleado;
NO darle editar al contenedor dejar solo
encima.
Codigo de Empleado y Codigo de Cliente van adentro del Contenedor : S modificado.
Boton Agregar Productos va adentro del Contenedor, la etiqueta F2 tambien va adentro
del contenedor, la cuadrcula de detalle del producto tambien va adentro del contenedor, s
modificado.VF4

08 - 08 - 2002

Seleccionar todas las relaciones y las borra


Objetos afuera propiedad enabled = .F.

78

del Contenedor.
Desde el principio enabled = .F.
Nombres y apellidos igual a .F.
Propiedad que sirve Disabled BackColor si se quiere cambiar colores a objetos
deshabilitados : Disabled y,
ForeColor para cambiar estos
Para poner botones de radio busca el grupo de opciones y tien que estar modificado
gp1=name y modificar
autosize = .T. para poner exactos.
Poner Combos en modificados el container
Se ubca en detalles el nombre de la tabla para convertirlo en la cuadrcula de detalle de
factura
Propiedad Column count
Boton de producto
VF4

09 - 08 - 2002

ADICION . CLICK
THISFORM.CONTROLES(.T.)
THISFORM.CONTAINER1.GRDDETALLE.ENABLED=.F.
THISFORM.CONTAINER1.AGREGAR.ENABLED=.F.
SELECT T_ENCAFACT
APPEND BLANK
THISFORM.REFRESH()
THISFORM.CONTAINER1.GP1.OPCION1.SETFOCUS()
Tipo de Venta Nombre del Usuario Final
Credito Fiscal
Consumidor Final
Opcion1(Opcion1).Click
Replace T_Encafact.Venta with .T.
ThisForm.Refresh() Tipo Factura
Opcion2.Opcion2.Click
Replace T_Encafact.Venta With .F.
ThisForm.Refresh() Tipo Factura
Ahora programar los Combos

79

Combo1.Valid(Clientes)
ThisForm.Refresh()
Propiedades del Combo1
Style
=
2
Lista desplegable
RowSourcetype
=
6 - Campos
RowSource
=
T_Clientes.Cod_cliente
ControlSource =
T_Enfact.Cod_cliente

Donde lo voy a guardar este campo en la tabla principal


Combo2.Valid(Empleado)
ThisForm.Refresh()
Propiedades del Combo2
Style
=
RowsourceType
RowSource
ControlSource =

2
Lista Desplegable
=
6 - campos
=
T_Empleados.Cod_empleado
T_Enfact.Cod_Empleado

Combo2.LostFocus()
respuesta-MESSAGEBOX( Son Correctos +CHR(13)+Los datos,;
4+32+0,Facturas)

Un salto de linea
Si dice que S habilitar Agregar Productos
Enfoque
___________________________________________________________________
|codigo|Descripcion |Precio |Cantidad
|Total
|
------------------------------------------------------------------------------------------|
|
|
|
|
|
------------------------------------------------------------------------------------------|
|
|
|
|
|
------------------------------------------------------------------------------------------

Deshabilitar
Deshabilitar
_________________________
|Son correctos
|
|Los Datos
|
|
|
|
-----------|
|
|S |
|N |
|
|
------------|
80

`-------------------------------

6
7

IF Respuesta = 6
THISFORM.CONTAINER1.AGREGAR.ENABLED=.T.
THISFORM.CONTAINER1.GRDDETALLE.ENABLED=.T.
THISFORM.CONTAINER1.GRDDETALLE.DESCRIPCION.ENABLED=.F.
THISFORM.CONTAINER1.GRDDETALLE.TOTAL.ENABLED=.F.
SELECT T_DETALLE
APPEND BLANK
THISFORM.REFRESH()
THISFORM.CONTAINER1.GRDDETALLE.CODIGO.TEXT1.SETFOCUS()
ELSE
THISFORM.CONTAINER1.GO1.OPCION1/SETFOCUS()
ENDIF

VF4

12 - 08 - 2002
PROCESO DE GRID
______________________________
|T_DETALLE
|
-----------------------------------------|Numero de Factura
|
|Codigo de Producto
|
|Cantidad
|
|Precio
|
|Total
|
-----------------------------------------

Header1
____________________________________________________________
|Numero
|codigo|cantidad
|precio |total
|
---------------------------------------------------------------------------------|ab
|ab
|ab
|ab
|ab
|
---------------------------------------------------------------------------------|Text1 |
|
|
|
|
---------------------------------------------------------------------------------|
|
|
|
|
|
---------------------------------------------------------------------------------|
|
|
|
|
|
---------------------------------------------------------------------------------|

81


Columna 1
________________________
|Propiedades
|
---------------------------------------------------------------------------------|GrdDetalle
|
---------------------------------------------------------------------------------|Column1
|
Column4
|
Header1
|
Header1
|
Text1
|
Text1
|Column2
|
Column5
|
Header1
|
Header1
|
Text1
|
Text1
|Column3
|
|
Header1
|
|
Text1
|
----------------------------------------------------------------------------------

|
|
|
|
|
|
|
|
|
|

Modificar y se piden todas las propiedades del Grid.


Solo se agrega Grd y se pone Grd_Detalle
Para el Grid
Propiedad Enabled = .F.
a cada columna le va a cambiar el nombre o sea name = ...
a cada column le pone el nombre del campo

Header1

name

numero

name

codigo

name

cantidad

name

precio

name

total

Caption Numero

__________________________________________________________________
|Codigo
|Descripcion |cantidad
|Precio |Total
|
-----------------------------------------------------------------------------------------|
|
|
|
|
|

82

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
------------------------------------------------------------------------------------------

|
|
|
|

Propiedades
Solo Columna1

Columna1

name = se llama

Descripcion

ControlSource :

T_Detalle.Des_prod

Columna1

ControlSource : T_Detalle.Numero

En el Header1 de la column1 se deberia de llamar : Descripcion


De la primera

SE arrastra hasta despues del codigo.-

debe colocarlo entre codigo y cantidad


Vamos a crear el Formulario de consulta de factura atras del formulario de
facturas.
_________________________________________________________________
|
____________
|
Descripcion |
|

Text1
|
----------------|
|
Codigo
Descripcion
Precio
|
|
________________________________________________
|
|
|
|
|
| List1
|
|
|
|
|
|
|
-----------------------------------------------------------------|
|
------------------------------------------------------------------------------------------Text1 . LostFocus
___________________
Selct codigo,descripcion,precio FROM T_Productos ;
WHERE T_Productos.Descripcion = Alltrim(THis.Value) ;
INTO CURSOR TEMPORAL
ThisForm.List1.ColumnCount = 3
ThisForm.List1.ColumnWidth = 50,150,150,

83

|
|
|
|
|
|
|
|
|
|

ThisForm.Lts1.ColumnLInes = .T.
ThisForm.List1.RowSourceType = 2 Alias
ThisForm.List1.RowSource = Temporal
______________________________
|
|
|
Codigo
|
|
___________
|
|
|
|
|
|
|
|
|
|
----------------|
|

F2

VF3

13

08

2002

14

08

2002

Boton de Consulta

HOY HUBO CENTRO DE COMPUTO


VF3
FORM.INIT
____________________
Controles(.F.)

ThisForm.Objetos(.F.)

FACTURAS

Public Consulta, viva, busqueda

Consulta = .F. 1
2
Viva
=0
__
____
Busqueda = 0 |S|
|N|

Form1 : Form de Consulta


_________________________
List1.DblClick
_____________
ThisFormSet.Factura.C1.GrdT_Detalle.codigo.Text1.Value=Temporal.codigo
ThisFormSet.Factura.C1.GrdT_Detalle.codigo.Text1.Value=Temporal.precio

84

THisForm.Refresh()
ThisFormSet.Factura.C1.GrdT_Detalle.codigo.Text1.SetFocus()
ThisForm.Visible = .F.

Esto de Facturas

Columna.Codigo
Text1.Keypress
_______________________
LParameters NKeycode,ShiftCtrlAlt
IF nKeycode = -1
ThisFormSet.Consulta.Visible=.T.
Consulta = .T.
Endif
Text1.Valid
_______________________
IF Consulta = .T.
IF Seek(this.Value,T_Productso)
MESSAGEBOX(PRODUCTO NO EXISTE,0,EROR)
RETURN 0
ENDIF
ENDIF
Text1.LostFocus
_______________________
Replace T_Detalle.precio With T_Productos.precio
Column1
Header1
Text1
Column2
Header1
Text1
S no aparece la descripcion ;
escribir eso con la descripcion
Descripcion y total en el Grid deben ir Enabled = .F.
VF4

15

Columna de Precio
-

Columna de Cantidad

Text1.Lostfocus()

85

08

2002

_______________________
Replace T_Detalle.Total With This.Value * ThisForm.C1.GrdT_detalle.;
cantidad.Text1.Value
Replace T_EncaFact.SubTotal With T_EncaFact.SubTotal + Tdetalle.Total
VIVA = (T_Factura.SubTotal*0.13)
Replace T_EncaFact.Iva With T_encaFact.Iva+Viva
Replace T_encaFact.Total With T_EncaFact.Total + (T_EncaFact.SubTotal;
+Viva)
ThisForm.Refresh()

__________________________________________________________________
|Codigo
|Descripcion |Cantidad
|Precio |Total
|
------------------------------------------------------------------------------------------|1
|\\\\\\\
|
1
|
10
|
10
|
|2
|\\\\\\\\
|
2
|
20
|
40
|
|
|
|
|
|
|
------------------------------------------------------------------------------------------____________
______
____________
SubTotal
|
10
|
Iva
|1.13 |Total |11.13 |
----------------------------------------Columna de Precio

Columna de Cantidad

Text1.GotFocus()
_________________
Replace T_EncaFact.SubTotal With T_EncaFact.SubTotal - TDetalle.Total
Replace T_Encafact.Iva With T_Encafact.Iva-Viva
Replace T_EncaFact.Total With T_EncaFact.Total-(T_EncaFact.SubTotal+Viva)
ThisForm.Refresh()
VF4

16

Guardar.Click
ThisForm.Contrles(.F.)
Local vano,vmes,vcodigoc,vcodigoe,dato1,dato2
vano=Alltrim(Str(Year(ThisForm.TxtFecha.Value)))
vmes=Alltrim(Str(Month(ThisForm.TxtFecha.Value)))
vcodigoc=Alltrim(ThisForm.Container1.Combo1.Value))
vcodigoe=Alltrim(ThisForm.Container1.Combo2.Value))

86

08

2002

dato1=vano+vmes+codigoc
dato2=vano+vmes+codigoe
*Actualizacion estadistico de clientes
Select T_estacli
IF !Seek(dato1,T_estacli)
Insert into T_Estacli(Ano,mes,codcli) Values(Vano,vmes,vcodigoc)
ENDIF
Replace T_Estacli.ncompra With T_estacli.ncompra+1
Replace T_Estacli.T_Compra With T_Estacli.T_compra + T_Encafact.Total
*Actualizacion estadistico de empleados
Selct T_EEmplea
IF !Seek(dato2,T_EEmplea)
Insert into T_EEmplea(ano,mes,cod_emp) Values(Vano,vmes,vcodigoe)
ENDIF
Replace T_EEmplea.nventas With T_EEmplea.nventas+1
Replace T_EEmplea.Tventas With T_EEmplea.nvents+ T_EncaFact.Total
TABLEUPDATE(1,.T.,T_ENCAFACT)
TABLEUPDATE(1,.T.,T_DETALLE)
REPLACE T_Correlativo.numero With T_Correlativo.numero + 1
ThisForm.Refresh()
CANCELAR.CLICK
TABLEREVERT(.T.,T_ENCAFACT)
TABLEREVERT(.T.,T_DETALLE)
SKIP -1
ThisForm.Refresh()
BOTON AGREGAR.PRODUCTO
COMMAND BUTTON
Select T_Detalle
Append Blank
Thisform.Container1.GrdT_detalle.Codigo.Text1.SetFocus()
TABLEUPDATE

Modificaciones
En tablas o Registro
0
Actual
1
Cualquiera
VF4

1,

.T.

ALIAS

TABLA

2002

2002

Sobreescribir o error(.F.)

19

08

HOY HUBO CENTRO DE COMPUTO


VF4

20

08

HOY HUBO CENTRO DE COMPUTO

87

VF4

21

1.-

Realizar Consulta de Factura por Fecha.

2.-

Realizar Modificaciones de facturas con un combo

08

-Al llegar al combo de empleados y preguntar si los datos son


crear registros en blanco, si no dejar modificar los que
ya existen.

1.-

2002

correctos, no

Boton de Consulta
Hacer el mismo Form de Consulta
_______________________________
|
|
|
__________________
|tambien clientes,empleados y
|
|10/02/1999
|
|
|
------------------------|productos
|
|
|
__________________
|
|
|7
|
|
|
|8
|
|
2 click o doble click
|
|9
|
|
|
|10
|
|
numero, tipo y total
|
|
|
|
|
------------------------|
|
|
------------------------------------------

2.-

Modificacion con un Combo


______________________________________________________
|
__________________
|
|
Numero
|
| V |
|
|
------------------------|
|
__________________
|
|
empleado
|
| V |
|
|
------------------------|
|
|
|
___________________________________________
|
|
|2
|
|
|
|
| Select
|
---------------------------------------------------------|
| T_Detalle
|
|3
|
|
|
|
|No Append
|
---------------------------------------------------------|
| Blank

88

|
|4
|
|
|
|
|
|
---------------------------------------------------------| No 1
|
______
______
______
|
|
|Add |
|Con |
|Mod |
|
|
------------------------|
|
|
------------------------------------------------------------------------------

No Crear Registros en Blanco


Usar variables para averiguar que boton esta usando

AdMo

AdMo

Init de Formulario

poner tambien los Admo

Modificar Adicion

Combo Empleados
agragr 3 lineas

Boton de Adicion

IF Boton1.Command1.lastkey = 13
Store 1 to dmo
Endif
Combo2

Valid y lostFocus de Empleados no quitar sino Agregar


3

lineas

____________________________________________________________
ANULADO
Para Eliminar
Ojo

Dibujar Etiqueta
/
{ Debo deshabilitar tipo venta Combo1 y Combo2
\

_____________________________________________________________________
Cambiar caption

( Label1 )

89

Dibujar Etiqueta

Cambiar

Forecolor

BackColor

Font Bold

Font Size

Caption(Anulado)

Grande pero no todo el Formulario


Colores Vivos

Eliminar.Click Figurade recuperar Anulado


En el sistema no se pueden eliminar fisicamente nada solo logico
Elimonar.Click
Primero Averiguar si esta eliminada
IF !Delete()
Delete
This.Picture a:\-----------
Etiqueta,Label1.Visible=.T.
ThisForm.Label.Visible=.T.
Else
Recall
ThisForm.Label1.Visible=.F.
This.Picture a:\------------
Endif
ThisForm.Refresh()
En el metodo de la clase cambiar el Enabled para ComboBox y el tipo de Opcion en
cuanto a tipo de venta o sea Opcion.
Al Refresh del Formulario de Facturas : Form.Facturas.Refresh()
REPORTES
========
Reportes

A diferencia de las consultas los datos se pueden


visualizar en pantalla o papel .

En un Reporte se muestran todos los registros de una tabla o aquellos


cumplen una condicion especifica.

90

que

Un reporte posee originalmente


Encabezado

Detalle |
Pie de
Pagina |

Areas

______________________________________________________
|
Titulos Fechas campos
|
|
|
--------------------------------------------------------------------------|
|
|
-------------------------------------------------------------------------|
|
|
|
|
|
|
--------------------------------------------------------------------------

El usuario puede personalizar para agregar como maximo 3 areas mas.


Los reportes los va a hacer
Documentos
Informes
Nuevo Nuevo Informe
al incio no va a preguntar nada
al final le pone el nombre
3 AREAS ORIGINALES
y 4 AREAS MAS TOTAL 7 AREAS
Encabezado

Detalle

Titulos
Fechas
Campos que se muestren una sola vez por
Reporte
Campos a mostrar para el reporte (Todos :
los registros, o aquellos que cumplen una
condicion)

91

Pie

Todos los Totales, # de pagina

VF4

22

08

2002

08

2002

HOY HUBO CENTRO DE COMPUTO


VF4

23

_________________________________________________________________
|
TITULO
--------------------------------------------------------------------------------------------|
ENCABEZADO DE PAGINA
----------|
|
DETALLE
------------------------------|
|
|
pie
------------------------------------------------------------------------------------------------------------------------------------------|
resumen
---------------------------------------------------------------------------------------------Imprime

--

Titulo

--

________________________
|
|
|
______
|
|
|
|Titulo |

|
--------|
|
______
|
|
|
|Resumen
|
|
-------|
|
|
---------------------------------__________________
|
|
|
|
|
|
|
|

Resumen

|
|
|
|
|
|
|
|

Menu

Titulos

Totales a continuacion del


Ultimo Registro Impreso

____________
|
|
|
|
|
|
|
|

92

__________________
|
|
|
|
|
|
|
|

|
_____
|
100
|
100
|
-------------------------

|
|
______|
|
_____ |
| |
100
|
|
100
|
| |
200
| |
300
|
| |
| |
|

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

(Resumen)
(Pie de pagina)
Hay otra area que es :
Area de Grupos
Area de Grupos
:
Encabezado
Pie de Grupo
Uno a Muchos
Relacion de Uno
a
Muchos

Encabezado de
Detalle de Factura
Factura
________________________
|
Numero 1
|

EncaFactura
=
1
|
|
|
ZZZZZZZZZZ
|

Detalle.Numero1
=
1
|
|
|
|
--------------------------------Para crear un grupo de datos
tiene que tener entorno de datos
Campo principal
crear grupo
Numero de la tabla de Facturas
Ir Opcion Informe
Agrupar datos
________________________
Expresion
|Tabla Encabezado
|.Numero de Factura
--------------------------------________________________________________________________________
|
TITULO
-----------------------------------------------------------------------------------------|
- Encabezado de pagina
----------------------|
|
- Encabezado de Grupo : Numero -----|
|
|
- Detalle
----------------------|

93

|
|
|
|
|
|

|
- Pie de Grupo : Numero
----------|
|
- Pie de pagina :
-----------------------|
------------------------------------------------------------------------------------------|
Resumen
|
------------------------------------------------------------------------------------------__________________________________________
E
|
|
---------------------------------------------------------EG |

|
---------------------------------------------------------|
|
|
D |
|
|
|
|
|
---------------------------------------------------------PG |

|
---------------------------------------------------------|
|
PP |
|
|
|
---------------------------------------------------------Tenemos Consulta de Productos
Consulta
__________________
|Codigo
---|
|Descripcion ---|
|Precio Costo ----|
|Precio Venta ---|
|Existencia ----|
------------------------- -

|
|
|
|
|
|

________________________________________
|Combo,Descripcion,Pre.Venta,Existencia|
|
\
\
\
\ |
|
\
\
\
\ |
|
\
\
\
\ |
|
\
\
\
\ |
------------------------------------------------------

REPORTE DE ARTICULOS
Fecha : = Date()
CodigoDescripcion

Precio de Venta

Existencia

\
\
\
Total de Productos ;

\
\
\
\
\
\
\
\
\
_____________________________

94

Documentos - Informes

- Nuevo - Nuevo Informe

________________________________________________
| Titulo
Reporte de Articulos
|Formato Fuente
------------------------------------------------------------------ para cambiar
|
|
|
- Encabezado
|
|
- Fecha : ________
|
|--------------------------- --------------- -----------|
||Codigo|
|Descripcion| |Pre.Venta ||Existen.| |
|--------------------------- --------------- ----------|
|
- Detalle
|
|
|
|codigo
descripcion
Precio Venta Existen. |
|
|
|
Click derecho
|
|
- Pie de pagina
entorno datos |
|
|
|Total de Productos : _____________________
|
|
|
------------------------------------------------------------------

__________________
__________________
|Controles
|
|Entorno de Datos
|
------------------------------------------------|
_____
|
|Click derecho |
| A | ab |
|Campos o varia
|Agregar tablas
|
|
|bles
|
|
| Imagen
|
|
|
|
|
|
|
------------------------------------------------Entorno de Datos
_________________________
|Productos
|
--------------------------------|Campos
|

95

--------------------------------|Cdigo
|descripcin
|
|precio costo `
|
|precio venta
|
|Existencia
--------------------------------|Indices
--------------------------------|Cdigo
----------------------------------

|
|
|

Archivos configurar pagina


Hasta 256 caracteres
Contar

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

1+2+3

Sumar

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

1+2+3

08

VF4

26

2002

Continuacion Reportes
____________________________________________________________
|
Reporte de Articulos
|
|
|
-------------- Titulo ----------------------------------------------------------|
|
| Fecha : ________
|
|
|
|Codigo
Descripcion
Precio Existencia
|
|
|
|------------------Encabezado ---------------------------------------------- |
|
|
|cod_prod desc_prod
precio_prod Existencia
|
|

|
|
2 click
|
|
|
|------------------ Detalle ----------------------------------------------------- |
|
|
|
TOTAL : 2
|
|------------------------------Pie de pagina ------------------------------- |
|
|
|
Conteo Cualquier campo
|
|
|

96

|
Suma
Campo numerico
|
|
---------------------------------------------------------------------------------Total
Campo Total
Descripcion de producto
________________________________________________
|Expresion
|
|
|---------------------------------------------------------------- |
|___________________
___
|
||T_Prod.Desc_prod| |...|
|
|------------------------- ---____________
|
|
|Aceptar
|
|
|
----------------- |
|
_____________
|
|
|Cancelar
|
|
|
----------------- |
|
_____________
|
|
|Calculos ... |
|
|
----------------- |
_________________________________________________
______________________________________
|
Calculos
|
|------------------------------------------------ |
|
Suma
_________
|
|
Promedio
|Aceptar|
|
|
Conteo
----------|
|
Minimo
__________ |
|
Maximo
|Cancelar|
|
|
-------------- |
|
|
-------------------------------------------------No aadir Existencia
Solo contar la cantidad de productos
____________
Fecha
:
|
|
----------------________________________
| ____
_____ ____
|
|| | | A | | ab | | Campo
|------- ------ ------|
97

|
|
|

|
|
---------------------------------

|
|

__________________________________________
|
____________
______
|
|
|Date() |
|...
|
|
|
------------------------|
|
____________
|
|
|Aceptar
|
|
|
----------------- |
|
_____________
|
|
|Cancelar
|
|
|
----------------- |
|
_____________
|
|
|calcular
|
|
|
----------------- |
|
|
---------------------------------------------------------REPORTE MENSUAL DE VENTAS
POR EMPLEADOS
_________________________________________________________________
AO :

____________

MES :

____________

CODIGO EMPLEADO
\
\
\

NOMBRE

NUMEVENTAS

TOTAL VENTAS

\
\
\

\
\
\
\
\
\
TOTAL
_____________
_________________
\
\
_______________________________________________________________________
_
ENTORNO DE DATOS
_______________________________________________________________________
_
T_ESTADISTICA DE EMPLEADOS
T_EMPLEADOS

98

RELACION ENTRE COD_EMP(T_ESTADISTICA) HACIA


COD_EMP(T_EMPLEADOS)
ESTADISTICA NECESITA DE EMPLEADOS
____________________________________________________________________
|
REPORTE MENSUAL DE VENTAS
|
|
POR EMPLEADO
|
|-------Titulo ------------------------------------------------------------------------- |
|
|
| Ao : _____
Estadistica de Empleados
Ao_Emp
|
| Mes : _____
Estadistica de Empleados
Mes_Emp
|
|
|
|
Codigo Empleado
Nombre
No.Ventas
To.Ventas
|
|
|
|-------Encabezado ---------------------------------------------------------------- |
|
__________ _____________________ _________ _________
|
|
|Cod_emp|
|Nom_Emp+Ape_emp||N_ventas||T_ventas| |
|
-------------- ----------------------------- ------------- -----------|
|
Tabla
2 click
|
|
Estadistica
Alltrim(25) Alltrim(25)
|
|

|
|
T_empleados T_Empleados
|
|--------- Detalle -------------------------------------------------------------------- |
|
|
|--------- Pie ------------------------------------------------------------------------- |
|
_____________ _____________ |
|
TOTAL
:
|T_ED.N_vent| |T_Ed.T_Vent|
|
|
------------------ -----------------|
|

|
|
suma
suma
|
|
calculos
calculos
|
|----------------- Resumen --------------------------------------------------------- |
|
|
|
|
------------------------------------------------------------------------------------------T_Estadistica
Ao
Mes

T_Empleados
Cod_emp
Nombre
apellido
dirreccion
telefono

Cod_emp
N_ventas
T_Ventas

99

__________________________________________________________________
|2000
|10
|1
|
|
|
|----------------------------------------------------------------------------------------|
|2000
|10
|2
|
|
|
|2000
|11
|1
|
|
|
|2000
|11
|3
|
|
|
|2000
|12
|1
|
|
|
------------------------------------------------------------------------------------------___________________________________________
|
1|
Juan
|Perez
|
|
2|
Pedro
|Peres
|
|
3|
Luis
|Peres
|
|
4|
Maria
|Peres
|
|
|
|
|
---------------------------------------------------------___________________________________________________________________
|Expresion
|
|--------------------------------------------------------------------------------------- |
|
__________________
___
|
|
|T_Emp.Nom_emp |
|...|
|
|
------------------------- ----_____________
|
|

|Aceptar
|
|
|
2 click
----------------- |
|
----------------- |
|
|Cancelar
|
|
| Alltrim(T_emp.Nom_emp)+ +Alltrim ;
----------------- |
| (T_emp.Apellido_Emp)
|
|
|
|
|
------------------------------------------------------------------------------------------Ao
Mes

:
:

2001
10

Cod.Emp
Nombre
Numero Ventas
Total Ventas
__________________________________________________________________
1
2

Juan
Pedro

10
15

2,500.00
3,500.00

100

___________________
25
3

___________________
6,000.00

Reportes

Articulos
Empleados
Clientes

Tabla Productos
Tabla Estadistica
Tabla Estadistica

VF4

27

08

2002

08

2002

08

2002

HOY HUBO CENTRO DE COMPUTO


VF4

28
HOY HUBO CENTRO DE COMPUTO

VF4

29
ULTIMO DIA DE CLASE
solo entrega de tarea

101

VF5

04

08

2002

MIERCOLES PRIMER DIA DE CLASES


1.-

LABORATORIO

1.-

TAREA.TAREA

REPORTES

TEORICO

REPORTES

CONSULTAS

HERRAMIENTAS DEL SISTEMA

MENU

EJECUTABLE

AADIR IMAGENES A REGISTROS

GRAFICOS

ESTADISTICOS

Nos quedamos con los reportes


Reporte Mensual de Compras por Clientes = Empleados
_______________________________________________________________________
|Ao
|Mes
|CClien
|N.Com.
|T.Compras |
|2000
|01
|001
|010
| 10,000.00 |
|2000
|02
|001
|020
| 50,000.00 |
|2000
|02
|002
|002
|
100.00 |
|2000
|01
|003
|003
|
500.00 |
|2000
|03
|002
|004
|
250.00|
-----------------------------------------------------------------------------------

102

Ao

Text1

Input Mask

Numeros

Ao

Text2

Input Mask

Numeros

Vista Previa.Click
Report Form a:\20202\Informes\Report+cli ;
FOR T_estadicli.ano = Alltrim(ThisForm.Text1.Value) ;
AND T_estadicli.ano = Alltrim(ThisForm.Text2.Value) ;
preview
Imprimir.Click
Report Form a:\20202\Informes\Report+cli ;
FOR T_estadicli.ano = Alltrim(ThisForm.Text1.Value) ;
AND T_estadicli.ano = Alltrim(ThisForm.Text2.Value) ;
TO Print prompt Noconsole

Importante
Entorno de Datos
Tabla Estadistica de Clientes
Cliente

Empleados

Imprimir.Click
DO CASE
Case
`

Cliente

Case Empleados

ENDCASE

103

Reporte por Fecha de empleados


Hacerlo uno mismo
Consulta de Clientes
-------------------------------Nuevo Formulario

Sin clases, solo un contenedor


Combo1.propiedades
Rowsource
: clientes.codcli
RowsourceType
: - 6 - Campos
Style
: - 2 - Lista desplegable
Picture
: Cualquier figura
Combo1.Valid
ThisForm.Refresh()
Entorno de Datos
Clientes
Es solo consulta No Hay Proceso

104

Herramientas del Sistema


___________________________
Copia de Seguridad (Nuevo Formulario)

Etiqueta sobre el Contenedor


Solo 3 puntos en el boton

Contenedor comando
boton1

Cuadro de Text1 e iniciar . Enabled = .F


copia de seguridad = respaldo de datos
Base de datos boton = 3 puntos = caption
C:\----------------- (A:\) transportables - Administrador del sistema
A:\----------------- C:\
VF5

05

09

2002.

VF5

06

09

2002

Continuar anterior dia


Cuadro de Texto(Text1) e Iniciar
Enabled=.F.
Boton1.Click
Public Destino
destino = Getdir()
ThisForm.Text1.value = destino
ThisForm.Iniciar.Enabled = .T.
ThisForm.Refresh()

105

Iniciar.Click
Set safety off
Close Database
CopyFile CurDir()+DATOS\T_*.DBF TO destino + *.DBK
CopyFile CurDir()+DATOS\T_*.FPT TO destino + *.FPK
CopyFile CurDir()+DATOS\T_*.CDX TO destino + *.CDK
CopyFile CurDir()+DATOS\B_*.DBC TO destino + *.BDK
Set default to
MESSAGEBOX(LA COPIA SE REAQLIZO CON EXITO,0,COPIAS)
Reporte de facturas
Entorno de datos
Encabezado Fact
Detalle
Fact
Empleados
clientes
productos
estadisticos No

Factura - detalle - numero


Detalle - Producto - codigo producto

Vieta datos

106

Encabezado
numero factura

detalle
numero factura
click derecho propiedades

relacion propiedad

One to many

caracteristica

Crea grupos
Informe
Agrupar datos

107

1.- Entorno de datos


2.- Relacion de los campos
3.- Encabezado de grupo
Diseo que deberia realizar

108

VF5

06

09

2002

09

09

2002 - A.D-

09

2002

C:\copseg
Curdir() directorio actual
BK
BackUp
Set default to a:\20202
or
Set default to C;\20202
proximo miercoles traer todo
VF5

Reporte de empleados por fecha de ingreso traerlo


Hoy centro de computo
VF5

10

Iva ir en una tabla sola para colocar solo por el supervisor del sistema a
cambiar solamente por el.-

Y otras constantes y variables.

Traer el miercoles todo lo que hagamos ahora.RESTAURACION DE ARCHIVOS

109

Boton1.click
Public Origen
Origen = getdir()
Thisform.text1.value = origen
Thisform.iniciar.enabled = .T.
ThisForm.Refresh()
ThisForm.Iniciar.SetFocus()
Iniciar.click
Set safety off
close database
close all
copy file origen+*.dbk to curdir()+Datos\*.Dbf
copy file origen+*.cdk to curdir()+Datos\*.cdx
copy file origen+*.fpk to curdir()+Datos\*.fpt
copy file origen+*.bdk to curdir()+Datos\*.dbc
MESSAGEBOXRestauracion Finalizada,0,Restauracion)
_______________________________________________________________

DEPURACION DE REGISTROS (NUEVO FORMULARIO )


Wordwrap = .T.

propiedad del label 1

Depurar.click boto depurar


Set safety off : para no mostrar mensaje cuando reeescriba
Close database
close all
Use a:\20202\datos\T_clientes Exclusive

110

Pack
Use
Use a:\20202\datos\T_empleados Exclusive
Pack
Use
Use a:\20202\datos\T_productos Exclusive
Pack
Use
... Y as todas las tablas
MESSAGEBOX(Depuracion Finalizada,0,Depurar)
wordwrap = .T. en label1
Zap : eso borra toda la tabla
Pack : borra todo lo eliminado o marcado con delete
Tabla de facturas de detalle y productos
N
1

cli
1

Tot
10

N
1

Prod
1

Total
10

1 jabon
2 cafe
3 toalla
7 corbatas

Integridad Referencial
penultimo formulario de herramientas
Reindexacion de tablas

( Nuevo Formulario )

111

Reindexar.click
Set Safety off
Close Database
Close all
Use a:\20202\datos\T_clientes Exclusive
reindex
Use
Use a:\20202\datos\T_empleados Exclusive
Reindex
Use
Use a:\20202\datos\T_productos Exclusive
Reindex
Use
... Y as todas las tablas
MessageBox(Reindexacion Finalizada con exito,0,Reindexar)

VF5

11

09

CONTROL DE USUARIOS
__________________________________________
Crear una tabla con los siguientes campos

112

T_Usuarios

2002

Usuario
Nivel
clave

caracter
numerico
caracter

20
1
40

Indice

Principal Candidato por el campo de Usuario

solo 20 + otros 20

Container
txtusuario y txtnivel campos de la tabla, y text1 y text2 cajas de texto
Entorno de datos T_Usuarios y T_Usuarios1
Crear dos metodos :
1.-

Activar y desactivar objetos

2.-

Conversion

clave

lo crea uno

Agregar.click
ThisForm.metodo(.T.)
Select T_Usuarios
Append Blank
Thisform.Container1.Text1.value=
Thisform.Container1.Text2.value=
Thisform.Refresh()
Thisform.Container1.TxtUsuarios.setfocus()
TxtUsuario.Valid
If seek(This.value,T_Usuarios1)
113

tambien lo crea uno

MESSAGEBOX(USUARIO YA EXISTE)
RETURN 0
ENDIF
Text1.LostFocus()
Public clave1
ThisForm.conversion(Alltrim(This.value))
clave1 = claveirreal
Text2.Lostfocus()
Public clave2
ThisForm.conversion(Alltrim(This.value))
clave2=claveirreal
IF clave1 = clave2
Replace T_Usuarios.clave with clave1
Thisform.metodo(.F.)
else
MESSAGEBOX(Claves no coinciden,0,Error)
Thisform.Conatiner1.Text1.setfocus()
Endif
Metodo Conversion
________________________
LParameters claveral
Public claveirreal
claveirreal =
FOR V = 1 TO LEN(Clavereal)
claveirreal=claveirreal+CHR(ASC(SUBSTR(clavereal,V))+17)+?
ENDFOR
Formulario de Usuarios
____________________________________
|Usuarios
|Nivel |clave |
desde nivel 1 hasta nivel 3
-------------------------------------------------|carlos |1
|carlos |
-------------------------------------------------T_Usuarios

----------

Agregar

U_Usuarios1 ---------- Buscar


Passwordchar =
*
en clave y en confirmacion
para los cuatro campos

Usuario
nivel
clave
confirmacion de clave

114

Select On entry = .T. en todos los 4 campos


Text1 =

maxlength

20 caracteres

Text2 =

maxlength

20 caracteres

clavereal = alberto
claveirreal r+?
a
ASC(a) = 97
97+17 = 114
CHR(114) = r?}?
CHR(Numero ASCII) devuelve el caracter del numero ASCII
ASC(caracter) devuelve el numero ASCII de un caracter
SUBSTR(caracter,posicion) devuelve el caracter y su posicion,extrae un caracter de una
posicion especifica.
claveirreal=claveirreal+CHR(ASC(SUBSTR(clavereal,V))+17)+?
| |
| | 3
| |
| |
| ---------------------- |
4 | 2
1
|
--------------------------------2
CHR(110)
=
n
ASC()
=
164,165
SUBSTR(Juan,3)
=
a

3
=
a
LEN()
=
devuelve el numero de caracteres de un campo o de una
variable.
FOR

ENDFOR

VF5
V
V
b

repetir un conjunto de instrucciones un


numero de veces.
12

=
=
=

2
3

115

09

2002

ASC(b)
98 + 17
CHR(115)

=
=
=

98
115
S+?

clavereal
claveirreal

=
=

alberto
r?}?s?v????

______________________________________________________________________
Siguiente.click
IF !EOF()
SKIP
ELSE
IF EOF()
GO TOP
ENDIF
ENDIF
THISFORM.REFRESH()
Eliminar.click
Select T_Usuario
Delete
Pack
Skip -1
ThisForm.Refresh()
Colocar a la tabla usuario la propiedad exclusive como .T.
para que funcione el eliminar
MENUS
_____________
Existen dos tipos de menus menu de barras,
y menus contextuales. click derecho
De Barra
Archivo
Mantenimiento
______________
Clientes
Empleados y
Productos
____________

Edicion

Ver

Consulta
____________
Productos
Ventas Diarias Facturas

Reportes
__________
General de Clientes
Estadisticos
Venta de Empleados

116

Facturas

Compra de Clientes

Herramientas
Ayuda
Salir
_____________
___________
_________________
Copia de Seguridad Sistema
Slo Salir del Sistema
Restauracion Datos
Facturas
Reindexacion
Depuracion de Tablas
________________
Usuarios
_______________________________________________________________________
_
Direcciones
Formularios
VF5

13
HOY HUBO CENTRO DE COMPUTO

09

2002

VF5

16

09

2002

Como se hace un spinner


Alt 92 =

Alt60 =

<

VF5

preguntar a Srta. Yesenia

17

Columna Opciones del Menu

117

09

2002

Presionar click para ver cuadro de dialogos


elegir la opcion : saltar por(Skip For) y escribir mnivel > 1
variable de memoria
Mnivel
Opciones a Restringir
_________
|Mantenimeinto
1 - Todo
|Reportes
2 - Mantenimeinto de Herramientas |Herramientas
2 - Solo consultas
Crear Formulario de
Ingreso al sistema
Usuario
:
Carlos
Nivel
:
2 -> Mnivel
Clave
:
~~~~~~~~~~
Mantenimiento
Mnivel >1
Reportes
Mnivel >2
Herramientas Mnivel >1
Reportes
Listado de Clientes
Listado de Facturas
118

Listado de Estadistica de empleados


Listado de Estadistica de clientes
VF5

13

09

2002

09

2002

EN EL CENTRO DE COMPUTO ME LO DIO


UN NICARAGUENESE LLAMADO MEDARDO
Objeto : Timer1
Procedure : Timer
____________________________________
Thisform.label1.visible = not(Thisform.label1.visible)
en las propiedades (Todos)
name
=
enabled
=
interval
=
left
=
timer event =
top
=

timer 1
.T. - Verdadero
450
456
procedimeinto
60

VF5

17

- Listado de Clientes se va directo al Report Form To Print


- Factura :
____________________________________
|
|
|Numero de Factura |Text1|
|
|
|
|Vista Previa Imprimir Salir
|
|
|
|
|
-------------------------------------------------Comando Do Form Formulario de reporte de facturas
Crea un formulario
Entorno de datos
T_Factura

119

Report Form TO Preview y to Print


__________________
Spinner

|
|
|
|
|-------|
|
|
|
------------------------Crear el ultimo Formulario

Formulario de Ingreso al Sistema


_____________________________________

*Crear de nuevo el metodo de convresion y definir la programacion identica


al formulario de Usuarios.
Entorno de datos
_____________________
Tabla de Usuarios
Order Usuario
Form.Init
Public intentos,claveirreal,mnivel
claveirreal=
intentos=0
mnivel=0
Text1.Valid
If Empty(This.value)
Messagebox(Complete el Usuario)
Return 0
else
Seek(This.value)
Return 1
Endif

120

Text2.Valid
If Empty(This.value)
Messagebox(Complete el Nivel)
Return 0
else
Seek(This.value)
Return 1
Endif
Text3.Valid
If Empty(This.value)
Messagebox(Complete la Clave)
Return 0
else
Seek(This.value)
Return 1
Endif
Text3.LostFocus
ThisForm.Conversion(Alltrim(This.Value))
_______________________
Return 1
=
pase al siguiente objeto
passwordchar =

VF5

18

Aceptar.click
Local Musuario
Musuario
=
Mnivel
=

09

2002

Alltrim(ThisForm.Text1.Value)
val(Alltrim(ThisForm.Text2.Value))

If Musuario==Alltrim(T_Usuario.usuario) AND Mnivel==(T_usuario.nivel) ;


AND claveirreal==Alltrim(T_usuarios.clave)
intentos=0
Do a:\20202\menus\mprincipal.mpr
ThisForm.Release()
Else
MessageBox(Acceso Denegado,0,Error)
THisForm.Text1.SetFocus()
intentos=intentos+1

121

Endif
If intentos=3
MessageBox(Usuario no Autorizado,0,El Sistema se Cerrara)
ThisForm.Release()
Clear Events
Endif
Salir.Click
ThisForm.Release()
Crear el siguiente programa .. (Vieta Codigo - Proyecto)
Opcion Programa Nuevo
_SCreen.Caption = Sistema de Facturas
_Screen.Icon = a:|20202\imagenes\icono.ico
_Screen.Picture = a:\20202\imagenes\Fondo.jpg
_Screen.WindowState = 2
Set Sysmenu off
Set Century on
Set Status off
Set Date British
Set Talk off
DO Form a:\20202\Formularios\F_Ingreso
Read Events
___________________________________________

Order es suficiente para llamar cada campo de texto a la tabla con el order que se
establecio.
_SCreen.WindowState = 2 Maximizado
Ejecutable
Programa
Formulario de Ingreso
Accesar todo el Sistema
VF5

19

09

2002

09

2002

HOY HUBO CENTRO DE COMPUTO


VF5

20
GENERACION DE EJECUTABLE

122

BOTON GENERAR EN EL PROYECTO


Verificar estructura de Proyecto

- Elegir Unidad ( Preferible C:\ )


- Definir Nombre (Guardar)
C:\ escritorio

Facturas.exe

Copia Sistema
A:\

- Ejecutable
- Tabla
- Base de datos

Caracteristica a su programa
codigo
programas
____________________________________________________________________
|
|Codigo
|
---------------------|
|Inicio
|
|
| Procedimientos
click derecho
Establecer principal Set Main
Ejecutable
Programas

123

Formulario de Ingreso
Menu
Form
Reports
Consultas
Anexar a su sistema
Imagenes por registro
en empleados
1.- Creando 1 campo General en tabla de empleados
2.- Guardando imagenes en un directorio y utilizar un campo
en el que almacene la ruta de la imagen
copiando pegando(General)
A:\20202
imagenes
Juan.jpg
Carlos.jpg
Jorge.jpg

|
|.gif
|

Modificar la tabla de empleados


agregar un nuevo campo
Foto caracter 40 = guardar ruta de imagen
modificar formulario de empleados

124

Seleccionar Foto.Click
Public imagen
imagen = getpic()
ThisForm.Container1.imagen.picture = imagen
Replace T_empleados.foto with imagen
Thisform.refresh()
Form.refresh()
Select T_empleados
ThisForm.Container1.imagen.picture = T_empleados.foto
getpic() abrir ventana para seleccinar imagen
________________________________________________
|
buscar en |imagenes | |
|
|
--------------------------|
|
_______________________________
|
|
|
|
|
|
|
|
|
|
|
|
|
|
----------------------------------------|
|
____________
______
|
|
Nombre
|
|
|abrir| |
|
----------------- -------|
|
|
------------------------------------------------------------------VF5

23
Graficos

Tener Microsoft graph


para crear un grafico
Se va a consultar datos
en el proyecto solo en datos
y activa consultas
elige nuevo
asistente para consulta
asistente para graficos
aceptar
elegir tabla y campos
elegir tabla estadistica en este caso
elegir Ao, mes, codigo empleado
y total ventas
y se elige todos
se le da siguiente
y pregunta
ejes X -y- Y

125

09

2002

en la coordenada
al definir los datos a mostrar en las coordenadas
en X puedo colocar campos numericos o caracteres
se escoge el campo y se arrastra a eje x
eje x codigo de empleado
en el eje y solo coloca datos numericos
total de ventas
agarra el campo y se lo lleva al eje Y
despues siguiente
y elige el tipo de grafico que quiere
Se elige el tipo de grafico
presiona siguiente
paso #4
escribir un titulo para el grafico
seleccione una opcion
despues de el titulo
elige guardar grafico
en una tabla
para guardar una tabla
despues si quiere vista previa
desactivar valores nulos
agregar una leyenda al grafico
cuando finalize
pregunta donde guardar
y se guarda el grafico en Datos
y especificar un nombre.grafico nombre
y despues guardar
y antes de finalizar
en la tabla el tipo de dato correspondiente
al grafico es general o sea campo general se le
llama olegraph
para ver un campo memo=CTRL-PK o page up o doble click en el
campo memo.Hay que filtrar los datos desde un formulario
para cambiar los datos
para crear el grafico en el formulario de entorno de datos
tiene que tener los dos tablas estadistica y la tabla de grafico
Se hace el formulario
__________________________________________________________________
|
____________
|
|
Ao
|Text1 |
|

126

|
----------------|
|
____________
|
Mes
|Tetx2 |
|
|
----------------|
|
|
Graficar
|
|
Salir
|
------------------------------------------------------------------------------------------Propiedad Inputmask =

ao

numeros

9999

Propiedad InputMask =

mes

numeros

99

|
|
|
|
|
|

este campo se va a llenar desde la tabla que se creo en el asistente para graficos y se
llama :
Olegraph

VF5

24

BOTON

09

Graficar.click
______________________
ThisForm.Olegraph.visible=.T.
y falso desde el principio
#Define CRLF CHR(13) + CHR(10)
retorno del cursor
#Define TAB CHR(9) generar nueve espacios - 2.5 espacios
Local Lcdata
Select cod_emp,ven_acum FROM T_Eemp ;
Where Ano = Alltrim(ThisForm.Text1.value) ;
and Mes = Alltrim(ThisForm.Text2.value) ;
Order By cod_emp INTO CURSOR Tgraf
#Define Cap_loc Vendedores
Select Tgraf
If reccount() != 0
Lcdata = +TAB+Cap_Loc+CRLF
Scan
Lcdata = Lcdata+Alltrim(STR(cod_emp))
Lcdata = Lcdata + TAB
Lcdata = Lcdata + Alltrim(STR(ven_acum)) + CRLF
EndScan
Select T_Grafico

127

2002

Append General olegraph data Lcdata


Else
MESSAGEBOX(NO EXISTEN REGISTROS)
ENDIF
Use in Tgraf
ThisForm.Refresh()

Cerrar la tabla TGraf

______________________________________________________________________
CTRL A
CTRL W
____________________________________________________________
|Ao
|Mes |Codemp
|Nventas
|Total Ventas |
|--------------------------------------------------------------------------------|
|2000
|01
|1
|1
|001,000.00
|
|2000
|01
|3
|2
|000,500.00
|
|2000
|02
|4
|2
|000,500.00
|
|2000
|02
|1
|3
|000,700.00
|
----------------------------------------------------------------------------------

TGraf
________________________________________________________________
|cod emp
|Ventas Acumuladas |codemp
|vtas acumuladas|
|--------------------------------------------------------------------------------------|
2
|
700
|
1
|
7000
|
|
|
|
4
|
500
|
----------------------------------------------------------------------------------------Recno = Registro Actual
Reccount
Scan

Total de registros
Endscan

Recorre todo los registros del 1 al ultimo

Do While

Enddo

CRLF

Para centrar el titulo

VF5

25
HOY HUBO CENTRO DE COMPUTO

128

09

2002

VF5

26

09

2002

27

09

2002

HOY HAY EXAMEN


VF5

HOY ENTREGA DE TAREA


Lo siguiente se coloca en el Menu del Proyecto y se pone en la salida del menu del
proyecto que usted ha escogido.
IF MESSAGEBOX(" Desea salir de la Aplicacion Dr. ? ",4+32+0," Salir de mi
Aplicacion ") = 6
_Screen.Caption = "Microsoft Visual FoxPro"
_Screen.Icon = ""
_Screen.picture = ""
* Reajusta las Definiciones On Key comunes que pueda
* haber usado en la aplicacion
On Key Label BACKSPACE
On Key label ENTER
On Key Label SpaceBar
On key label Escape
* Desactiva la redireccion de Impresora y archivos
Set Alternate Off
Set Alternate To
Set Print Off
Set console On
* Cierra la Transaccion - trap errores
If Txnlevel() > 0
RollBack
End Transaction
Close All
Endif
* Libera todas las varibales (y objetos)
Release All
*Desactiva ventanas
Deactivate Window All
Deactivate Window Debug
Deactivate Window Trace
Activate Window Command
* Desactiva cualquier menu de la Aplicacion
Set sysmenu to Defa
* Borra Macros
Restore Macros
* Limpia Eventos
Clear Events

129

* Cierra todos los Archivos


* Close All
* Sale de Visual Foxpro
Quit
Endif

FIN DEL MODULO

130

También podría gustarte