Sei sulla pagina 1di 134

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
puede tener

: es una instruccin que ejecuta un proceso,

incluido un formato para su escritura, ejemplo :


Create
Delete
Zap
Date()
?

enter
enter
enter
enter
enter

Create

Tablas, Bases de Datos, Programas

Para mostrar Variables

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

---------------------------------------------------------Mostrar la Fecha en el Escritorio


Programa
ejecutan

Es un conjunto de comandos que se


de forma secuencial.

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

Create Enter
Dir *.*

Son programas que comparten


y dependen de un programa principal.

Clase
procedimientos
_________

Almacena en una biblioteca

Biblioteca

PANTALLA

PROVEEDORES

Campos :
tipo de

Es un area en la cual se almacena cualquier


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


numeros
4

letras
fechas
-

Salario Liquido

Nombre

Telefono
variables

NIT

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

Sbase
Nota1
DISSS =

:
=
=
=

=
0
=
0
0

Asignando

numero.
espacios.
fecha.
- Sbase = 150

nombre
direccion

=
=

space(20)
space(60)
\___________/

numeros de digitos a ingresar

tener tres variables de 15


===
estado civil 15
genero(sexo)
nombre
apellido
estado =
genero =
nombre=
apellido=

store space(15) to

asigne 15 espacios to (para)


estado,nombre,apellido,genero
soltero(a)
casado(a)
divorciado(a)
viudo(a)

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

Total de Factura
T_Factura
Variables Tipo(Fecha)
nombre = Maria

variable
contenido
apel
+
a=space(25)
b=space(25)
c=space(25)
Tipo Fecha
3
F_Ingreso =
F_Ingreso=05/07/2002
F_reserva =
F_salida
=

Date()
{}
/ /

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
---->
Progra1

----

Modify Command

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

Lenguaje de usuario
Backup
Lenguaje de maquina

Modify command
creados.

para crear y editar programas ya

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

\
|->

Datos-

mas fcil de resolver

no se digitan
9

Formulas

1
7
__________
8

N1
N2

Resultado

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
gets colocar el comando read.
read
get
read
get
read
VF1

get

09 - 05 - 2002

10

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)
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
11

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)
clear
num1=0
num2=0
num3=0

mayor, menor, o igual


averiguar

IF

ENDIF

@ 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, se utilizan para mostrar resultados a partir de
condiciones expuestas .
12

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


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
13

OR

---------

1 de Dos

Permiten evaluar varias condiciones en una sola para mostrar un


resultado.
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
3
1
menor
menor
1

C
2
medio

medio
2

3
mayor
mayor
3

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
14

@ 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


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

15

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
Case Instruccin 1
Instrucciones
Case Instruccin

Instrucciones
Case Instruccin

Instrucciones
ENDCASE
DO

CASE
16

Case Instruccin 1
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


un

En Otro Caso
tiene que haber

ENDCASE

DO CASE
CASE

Condicion1
DO

CASE
Condicion 2

ENDCASE
ENDCASE
Programa de Promedio
>0
>3.01
>5.01

< 3

ENDIF

No Pase
<= 5 Reprobado
<=8 Muy Bueno
17

>8.01

<=10Excelente

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

:_______________

Telefono

:_______________

Email

:_______________

N Registro :_______________
2.- REPORTE DE ARTICULOS
Fecha

:_______________

Codigo

Descripcin

Precio de Venta

Existencia

----

----

----

----

------Total de Productos

------:________________

18

3.- REPORTE MENSUAL DE VENTAS POR EMPLEADO


Ao

:_____________

Mes

:_____________

Empleado
Ventas

Nombre

Numero de Ventas

Total

----

----

----

-----

----

----

----

-----

Total

________________

________________

4.- FACTURA COMERCIAL


N

:___________

Fecha:_________

Tipo de Factura

:_______________

Cliente

:_______________

Empleado

:_______________

Nit

:________

Producto

Descripcin Cantidad

Precio

Total

----

----

----

----

----

----

----

----

----

----

SubTotal
Iva
Total
5.- CONSULTA DE EMPLEADOS POR
Fecha de Ingreso :_____________
Codigo

Nombre

Telefono

EMail

----

----

----

----

----

----

----

---19

:_____________
:_____________
:_____________

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

_____________
| nombres |
|Ape1
|
| Ape2
|
_____________

Datos Personales \
|==> Consulta de Clientes
Y Permanentes /

Consulta de Empleados
codigo
nombre
apellido
telefono
direccin
afp

Frecuancia en la cual se emite


el Reporte

dui
isss
estado civil
sexo
salario mensual
edad
20

email
F.-Ingreso
nit

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()
Codigo

Descripcin Precio de Venta

Existencia

----

----

----

----

----

----

----

----

Total Productos

:______________

Clientes
Empleados
Productos
codigo
21

descripcin
Precio Unitario de Costos
Ganancia
Precio de Venta
Existencia
BROWSE
_______________________________________________________________________
_
Codigo
Descripcin 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
|
-----------------------------------------Numero de Factura
Fecha
Nombre
/ Credito Fiscal
Tipo Factura
-> -> |
Nit
\ Consu. Final
Registro
Codigo Cliente
\
Codigo Empleado |No Se Repite
/

22

Alumnos
codigo
nombre
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

ENCABEZADO FACT.
numero
fecha
tipo factura
nit
registro
codigo cliente
codigo empleado
subtotal
iva
total general

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

PRODUCTOS
codigo
descripcion
precio costo
ganancia
precio venta
existencia

DETALLE FACTURA
numero
codigo producto
cantidad
precio venta
total producto

REPORTE DE VENTAS MENSUAL POR EMPLEADO


Ao

:_________
23

Mes

:_________

Cod Empleado

Nombre

N de Ventas

Total Ventas

-------

-------

-------

-------

____________

____________

TOTAL

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

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

Mantenimiento ( Soporte , Mantener )

24

CTRL + Y

__________________________________________
|
|
|
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

:_________

Cliente

Nombre

N de Compras

Total Compras

----

----

----

----

----

----

----

----

_____________

_______________

Total de Compras :
Total siete Tablas
CAMPOS DE CLIENTES
codigo

Tipo 25

longitud

nombre
apellido
direccin
telefono
nit
registro
email

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

caracter
numero
logicos
memo
enteros

monetario flotante
-

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

dinero
cientifico

codigo cuantos registros puede guardar una tabla


999

suma

codigo

CLIENTES
codigo
nombre
apellidos
direccion
telefono
nit
noregistro
email

c
c
c
c
c
c
c
c

4
25
25
60
8
17
7
40

EMPLEADOS
codigo
nombre
apellidos
direccion
telefono
desafp
fec.ingreso
nit

n
c
c
c
c
n
d
c

3
25
25
60
8
6
8
17
26

email
dui
est.civil
desisss
salario
sexo
edad

c
c
c
n
n
l
n

40
10
10
6
7
1
2

PRODUCTOS
codigo
descripcion
preciocosto
ganancia
precioventa
existencia

n
c
n
n
n
n

3
30
8
6
9
3

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

6
8
1
17
10
4
3
9
8

2
2

2
2
2

10

2
2
-

VF2

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

ESTADISTICA POR MES


ao
mes
codigoempleado
numventas
totalventas

6
3
3
9
10

2
2

DE CODIGO DE EMPLEADO
c
4
c
2
n
3
n
3
n
10
2

27

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

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

campos con nombres

dos
----------------disc-3

c-3

tintos en dos tablas

diferentes pero se refieren


al
/ Tipo de Datos
impor|
datos y
\
___Longitud

mismo campo, lo

tante es el tipo de

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.

28

Se definen un solo campo con este tipo el cual no permite


ingresar datos duplicados o en blanco.
Este tipo de indice es asignado al campo mas importante
de la
tabla.

T_CLIENTES
______________________________________________________
|codigo
|nombre
|apellido
|N.-Registro
|
---------------------------------------------------------------------------Asignado | 1
|Luis
|Perez
|
|
por el
| 2
|Juan
|Lopez
|
|
usuario
| 3
|Juan
|Merino
|
|
del sistema | 4
|Ana
|Merino
|
|
NO SE RE | 5
|Luis
|Perez
|
|
PITE.| 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
29

__________________
|
| \/ |
-------------------------| 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

30

no muestra los datos repetidos.NORMAL


T_CLIENTES
__________________________
codigo
| nombre
__________________________
1
| Juan
1
| Luis
1
| Pedro
2
| Maria
3
| Jorge
4
| Evangelina
4
| Martha

UNICO
T_CLIENTES
_____________________________
codigo
| nombre
_____________________________
1
| Juan
2
| Maria
3
| Jorge
4
| Evangelina
|
|
|

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
----->
Apellidos ----->
Nit
----->
NRegistro ----->
F.-Ingreso ----->

Principal
Normal
Normal
Normal
Normal

VF2

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

VF2

12 - 06 - 2002
PRODUCTOS

Codigo
Principal
Descripcin 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_____________
|
___________________________________________________________________

FACTURAS

---|

ENCABEZADO
FECHA

----|

32

__________________________________________________________________
|
NUMERO
|
10/02/2002
|
-------------------------------------------------------------------------------------------|
|
|
|
|
|
-------------------------------------------------------------------------------------------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
33

Este Viernes averiguar sobre Validaciones de campos


Desarrollo de Aplicaciones a libro Visual Foxpro

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
34

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

35

VF2

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

FORMATO

|___________|

REGLA

|___________|

MASCARA E.|___________|

MENSAJE

|____________|

TITULO

VALOR PREDETER. |______|

|___________|

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


Numeros

Nombre

Precio de Costo
Numerico

====>
-

Regla

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

36

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
Empleados

Empleados
Sexo
carcater
Masculino
Femenino

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

37

Estructura de los Archivos.Y la Relacion de Archivos para el 27 de Junio

VF2

17 - 06 - 2002
ESTRUCTURA DE CARPETAS

Orden
=====
Proyecto
Base de Datos
Tabla
Formularios
____________
|
|
----------------|
|-------------|
|
|
|-------------|
|
|
|-------------|
|
|
|-------------|
|
|
|-------------|
|
|
|-------------|
|
|
|-------------|
|
|

2
2
2
2

Archivos
Archivos
Archivos
Archivos

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

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

38

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

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
Relacion de Tablas

Uno a Uno

Uno a Muchos
____________
|T_Clientes |
----------------|cod_cli
|
|_nom
|
|ape_cli
|
|cod_pais |
----------------|Indices
|
|cod_cli
|
|cod_pais |---> candidato
-----------------

____________
|T_Paises |
-----------------|cod_pais |
|nom_pais |
-----------------|Indices
|
|cod_pais |-->
-----------------

candidato

Campo comun
igual longitud, igual tipo
Tabla X
Principal
Principal
Candidato
Candidato

Tabla Y
Principal
Candidato
Candidato
Principal

Clientes

Pais

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

39

1 Juan
2 Maria
3 Carlos
Tabla X
Principal
Principal
Candidato
Candidato

1
2
3

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


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

40

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
Documentos
Formularios - F Notas Reportes
Etiquetas

Use alumnos
Browse
Modify Structure
A:\Create Form nombre
Do Form nombre
Modify Form nombre

Archivo
Nuevo

__________________
|
|
| O Proyecto
|
| O Base de Datos
| O Tabla
|
| O Consulta
|
| O Conexion
|
| O Vista
|
| O Vista Previa |
| O Formulario |
| O Informe
|
| O Etiqueta
|
| O Programa
|

|
Nuevo
Archivo

Lugar
Nombre

41

| O Clase
|
| O Archivo de t. |
| O Menu
|
-------------------------Datos:

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

Control C ----> Para Copiar


Control V ----> Para Pegar
42

|
|
|
|

|
|
|
|

reportes
datos
menus
programas

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
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
43

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.

VF3

04 - 07 - 2002
PRIMERA CLASE
1

Laboratorio Teorico

Tarea
3 Diskettes de Copia

Formularios
44

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

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 ---Label
Label1

Nombre del objeto

---- Clase o familia


------ Name
---- 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

46

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 :
tambien

en el Init de la caja de texto

Funciona a la vez cuando ejecute un formulario y es util

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
47

se presiona barra espaciadora.


_____________
| ADICION |
Botones
----------------Letra caliente

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

Click

Enter

Click

___________________
|O Solter@
|O Casad@
|
|O Divorciado
|
|O Viud@
|
-------------------------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
_______________
____________
Objeto
|Text1| |Procedimiento
|GotFocus |
------------------------------------This.FontBold = .T.
This.BackColor = R G B ( 0,255 0,255 0,255 )
Propiedades

48

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
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
49

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

Icono

: Determina el icono que se mostrara en la

barra
: de titulo del formulario.

50


activo.-

Enabled

: Determina si o no un objeto se encuentra

Closable

: Muestra invisible los botones de control en

un
: Formulario.
Enabled del formulario a verdadero

objetos

ShowTips

: Determina si se muestra ayuda para los


: en el formulario cuando el puntero del mouse

se
: posiciona en estos. Esta propiedad es
: acompaada de un ToolTipText
Al Formulario
ShowTips

------ ToolTipText ------ > Por el Objeto

Debe estar
a

Mensaje por Objeto

.T.
Picture

: BackColor
: Establece una imagen .Bmp -- Jpg -- Guif
: para cualquier Objeto.

Que diferencia hay entre Background


|
BgColor
/

Visible

Usados

Internet

: .T. -- .F.
: Determina si un objeto esta o no visible en

un
______

: formulario o el mismo.
____________
51

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

_______
|
|
.T.
.F.
forma

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

_____________
|
|
.T.
.F.

AutoCenter : Determina si el formulario es centrado de


: 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

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

: Determina el tamao del texto.-

de
: letra.
existe

ControlSource

: Determina e indica la relacion que


: de un objeto con un campo
: predeterminado.

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

52

|
| |
-------------------------Propiedades

Estilo
Picture
propiedad.

:
Style
ControlSource
RowSource
ForeColor
FontSize

Picture
RowSourceType
BackColor
FontBold
FontName

: Si el Combo es cuadro Combinado -- Lista


: Desplegable
: Imagen a lo desplegable, establecer esta

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

:
:
:
:
:
:
:
:
:
:
:

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

Caja de Texto
BaseClass
Class
Name
BackStyle
BackColor

:
:
:
:
:
:

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

BorderStyle
ForeColor
SpecialEffect
Object

:
:
:

0 - None
0, 0, 255
0 - 3D

: Command1

Procedure :Click

ThisForm.CommandGroup1.Command1.Caption=Presioneme
AutoSize
Caption
ClickEvent
Name

:
:
:
:

False .F. (Default)


\<Salir
User Procedure
Command1

Object

:Command2

Caption
Name
Picture

:
:
:

Procedure :Click

\<Salir
Command2
C:\Archivos de Programa\Microsoft Visual

Studio\VFP98\Wizards\Graphics\Paste.Bmp
Object

:Command3

Caption
Name
Picture

:
:
:

Procedure Click

None
Command3
C:\Archivos de Programa\Microsoft Visual

Studio\VFP98\Wizards\Graphics\Save.Bmp
ToolTipText
:
Boton con Imagen
Object

:CommandGroup1

BorderColor
BorderStyle
ButtonCount
Name
Value

:
:
:
:

Procedure :Click

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

Object

:Command1

Caption
Name

:
:

Object

Command2

Caption

Procedure Click

\<Agregar
Command1
Procedure :Click
\<Presioneme
54

Name

Command2

VF3

`10 - 07 - 2002
HUBO CENTRO DE COMPUTO

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
-- Adicion
-- Consulta
-- Modificar

Botones2
-- Guardar
-- Cancelar

55

-------

Eliminar
Primero
Siguiente
Anterior
Ultimo
Salir del Formulario

Colocar a todos los


Botones el ToolTipText
Diseo es opcional
mismo tamao
Picture .- para poner
Imagen

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
56

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

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 1

Optimista.

El segundo 2

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

Sin Buffer
Pesimista
Optimista

Buffer de Registro
Buffer de Registro
57

4
5

Bloqueo

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()
Procedimientos para activar y desactivar objetos
______________________________________________________
|codigo________________
|
|nombre_______________ apellido________________
|direccion_____________ telefono________________
|email________________
|
|nit___________________ reg____________________
|
|
|
---------------------------------------------------------------------------Ejecute Formulario

Adiciones

Controles datos
boton1 boton2
desactivados
activ
desacti
activados

desact

desactivadosq

activado

activados
Guardar o
Cancelar

|
|

desacti.VF3

15 - 07 - 2002
58

Creacion de Metodo

Formulario Nuevo Metodo


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

Se va a escribi en Controles : Procedimiento


variable

LParameters
estado(.F..V.)
txtcodigo.enabled=estado

Parametro = recibir un valor

variable
_______
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

59

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)
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
60

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

61

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

1
2
3
4
5
6
7

Aceptar
Cancelar
Anular
Reintentar
Ignorar
Si
No
__________________________________________
|Error de Adicion
|
----------------------------------------------------------|
|
|
Codigo Vacio
|
|
___________
__________
|
|
|Reintentar|
|Cancelar|
|
|
---------------------------|
|
|
----------------------------------------------------------MESSAGEBOX(CODIGO VACIO,5+64+256,ERROR;
DE ADICION)

62

__________________________________________
|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
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.
63

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
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()
64

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
|
|
|
-------------------------|
|
|
|
Codigo
Nombre
|
|
_________________________
|
|
|List1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---------------------------------|
|
|
----------------------------------------------------------Va a consultar de 4 Tablas 1 Consulta Solamente
FORM.INIT
LPARAMETERS
CONSULTA
PUBLIC DATO
DATO=VCONSULTA
TEXT1.LOSTFOCUS
DO CASE
65

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
|
|
|
-------------------------|
|
|
|
Codigo
Nombre
|
|
_________________________
|
|
|4 Carlos Mendez
|
|
|
|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


66

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
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
67

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

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

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


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

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

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

Hay que crear el


sin instrucciones

VF4

24 - 07 - 2002

DISEO DE CLASE
____________________________________________________________________
|
|
| _______________________________________________________________ |
| |
|
|
| |
| |
| |
| |
| |Container1
| |
| |
| |
| -------------------------------------------------------------------------------------|
|
|
| _____________________________________________
____________ |
| | _____ _____ _____ _____ _____ _____ _____ |
| ___ ___
|
|
| | |
||
||
||
||
||
| |
||
|| | |
| | |
| | ------- ------- ------ ------ ------ ------- ----- |
| ---- ----- |
|
69

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

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

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

Num_fact

Nume

Indices

* Agregar solo 1 Registro con el Valor de 1.Tabla T_empleados

Modificar

70

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
|*
|
|
----------------|
|
|
|
|
-----------------------------------------------------------------------------------_____________
_____________
|Adicion
|
|Guardar
|

71

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

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

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


la Clase

Selecciona el nombre de la Clase.

72

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.

Menu Barra

Formulario -

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
VF3

26 - 07 - 2002
Formulario

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

73

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

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

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()

74

HOJA2(PRODUCTOS).ACTIVATE
SELECT T_PRODUCTOS
THISFORM.REFRESH()
*
cada

Definir este Procedimiento identico en el Evento Click de


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
T_Productos
T_Correlativo

Buffer y Order
Buffer y Order
--------

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
75

US()
CASE THISFORM.CONTAINER1.PAGEFRAME1.ACTIVEPAGE=2
SELECT T_PRODUCTOS
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()

76

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()
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 = 1Clientes
Si dato = 2

Empleados

Si dato = 3 Facturas
Si dato

= 4 Productos

VF4

PRIMERA CLASE

FACTURAS

EXTRAER CLASE

ENTORNO DE DATOS

Nuevo

Clase

Agregar

Buscar Clase

La encuentra y la selecciona

Arrastrar el Icono del Formulario

Conjunto de Formularios

Formulario

77

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

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

Factura

Facturas

Valor Predeterminado de Numero de


y Escribir : T_Corre.Numero de Factura

Detalle

Clientes

Empleados

Productos

Correlativo

Estadistica de Clientes

Estadistica de Empleados

Que Relaciones entre tablas en el entorno de datos :


Relaciones para actualizar y hacer busqueda
78


Campo
a
Indice
__________________
__________________
|Facturas
|
|Clientes
|
------------------------------------------------|Campos
|
|Campos
|
------------------------------------------------Se hace de campo
|Numero
|
|codigocliente
|
|codigoa
| | |nombre
|
a campo y se va
|codigocliente
|
|apellidos
|
|
|
|indices
|
indice
------------------------|codigocliente
|
------------------------Iniciar en Facturas
Termina en Clientes
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

79

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


en el
encabezado.
Campo a Indice
Factura

Clientes

Codigo de Clientes

Relacion de Factura a Clientes


Relacion de Factura a Empleados
Factura

Empleados

Tabla de Detalle

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

Factura

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

80

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
Opcional(3)Replace

Cod_Producto
Indice Creado

Empleados
Productos
Esta_Clientes

Actualizar
TableUpdate()

Opcional(3)

Indice creado

Buffer(3)

Numero Factura

Optimista(5)
Tablas

EstadisticaEmpleados

Numero Factura

Facturas

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

81

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.

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.)
82

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
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,;

83

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

|
`-------------------------------

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

84

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

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

85

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
|
-----------------------------------------------------------------------------------------|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------------------------Propiedades
Solo Columna1

ControlSource : T_Detalle.Numero

Columna1 :

name = se llama Descripcion

Columna1

ControlSource

T_Detalle.Des_prod

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
86

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,
ThisForm.Lts1.ColumnLInes = .T.
ThisForm.List1.RowSourceType = 2 Alias
ThisForm.List1.RowSource = Temporal
______________________________
|
|
|
Codigo
|
|
___________
|
|
|
|
|
|
|
|
|
|
----------------|
|

F2

VF3

13
HOY HUBO CENTRO DE COMPUTO

87

08

2002

VF3
FORM.INIT
____________________
Controles(.F.)

ThisForm.Objetos(.F.)
Public Consulta,

Consulta = .F.
Viva
=0
Consulta
Busqueda = 0

08

2002

FACTURAS

viva, busqueda

1
2
__
____
|S|

14

Boton de

|N|

Form1 : Form de Consulta


_________________________
List1.DblClick
_____________
ThisFormSet.Factura.C1.GrdT_Detalle.codigo.Text1.Value=Temporal.cod
igo
ThisFormSet.Factura.C1.GrdT_Detalle.codigo.Text1.Value=Temporal.pre
cio
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
_______________________

88

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
Columna de Precio

15
y

08

2002

Columna de Cantidad

Text1.Lostfocus()
_______________________
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()

89

__________________________________________________________________
|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

08

2002

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))
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)
90

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.

Sobreescribir o error(.F.)

19

ALIAS

08

TABLA

2002

2002

2002

HOY HUBO CENTRO DE COMPUTO


VF4

20

08

HOY HUBO CENTRO DE COMPUTO


VF4

21

08

1.-

Realizar Consulta de Factura por Fecha.

2.-

Realizar Modificaciones de facturas con un combo

que

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


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

91

1.-

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
|
|4
|
|
|
|
|
|
----------------------------------------------------------| No 1
|
______
______
______
|
|
|Add |
|Con |
|Mod |
|
|
------------------------|
|
|
------------------------------------------------------------------------------

92

No Crear Registros en Blanco


Usar variables para averiguar que boton esta usando
AdMo

AdMo

Boton de Adicion

Init de Formulario

poner tambien los Admo

Modificar Adicion

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

Combo Empleados
agragr 3 lineas

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 )
-

Dibujar Etiqueta

Cambiar

Forecolor

BackColor

Font Bold

Caption(Anulado)

93

Font Size

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
pueden

A diferencia de las consultas los datos se


visualizar en pantalla o papel .

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


aquellos
que cumplen una condicion especifica.

Un reporte posee originalmente


94

Areas

______________________________________________________
Encabezado
|
Titulos Fechas campos
|
|
|
--------------------------------------------------------------------------|
|
Detalle
|
|
-------------------------------------------------------------------------|
|
Pie de
|
|
Pagina
|
|
|
|
-------------------------------------------------------------------------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

Titulos
Fechas
Campos que se muestren una sola vez

por
Reporte
Detalle
(Todos :

Campos a mostrar para el reporte


los registros, o aquellos que cumplen una
condicion)

Pie

Todos los Totales, # de pagina

95

VF4

22

08

2002

08

2002

HOY HUBO CENTRO DE COMPUTO


VF4

23

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

--

Titulo

--

________________________
|
|
|
______
|
|
|
|Titulo
|
|
--------|
|
______
|
|
|
|Resumen |
|
-------|
|
|
---------------------------------__________________
|
|
|
|
|
|
|
|
|
_____ |
|
100 |
|
100 |

|
|

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

Resumen

Titulos

Totales a continuacion del


Ultimo Registro Impreso

____________
|
|
|
|
|
|
|
|
|
______|
|
100 |
|
200 |
|
|

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

96

Menu

__________________
|
|
|
|
|
|
|
|
|
_____ |
|
100 |
|
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
----------------------|
|
- Pie de Grupo : Numero
----------|
|

97

|
|
|
|
|
|

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

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

|
---------------------------------------------------------|
|
PP |
|
|
|
---------------------------------------------------------Tenemos Consulta de Productos
Consulta
__________________
________________________________________
|Codigo
---|
|Combo,Descripcion,Pre.Venta,Existencia|
|Descripcion ---- |
|
\
\
\
\
|
|Precio Costo ----- |
|
\
\
\
\
|
|Precio Venta ----|
|
\
\
\
\
|
|Existencia ----- |
|
\
\
\
\
|
-----------------------------------------------------------------------------REPORTE DE ARTICULOS
Fecha : = Date()
Codigo

Descripcion Precio de Venta

Existencia

\
\
\
\
\
\
\
\
\
\
\
\
Total de Productos ; _____________________________

98

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
_________________________

99

|Productos
|
--------------------------------|Campos
|
--------------------------------|Cdigo
|
|descripcin
|
|precio costo
`
|
|precio venta
|
|Existencia
|
--------------------------------|Indices
|
--------------------------------|Cdigo
|
---------------------------------Archivos configurar pagina
Hasta 256 caracteres
Contar

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

Sumar

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

VF4
Continuacion

1+2+3

1+2+3
26

08

3
=

2002

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 ------------------------------- |
100

|
|
Conteo
Cualquier campo
|
|
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
:
|
|
-----------------

101

|
|
|
|
|
|

________________________
| ____
_____ ____
|
|| | | A | | ab |
| Campo
|------------ ------|
|
|
|
|
--------------------------------__________________________________________
|
____________
______
|
|
|Date()
|
|...
|
|
|
------------------------|
|
____________
|
|
|Aceptar
|
|
|
----------------|
|
_____________
|
|
|Cancelar |
|
|
----------------|
|
_____________
|
|
|calcular
|
|
|
----------------|
|
|
---------------------------------------------------------REPORTE MENSUAL DE VENTAS
POR EMPLEADOS
_________________________________________________________________
AO :

____________

MES :

____________

CODIGO EMPLEADO
\
\
\

NOMBRE

NUMEVENTAS

TOTAL VENTAS

\
\
\

\
\
\
\
\
\
TOTAL
_____________
_________________
\
\
_______________________________________________________________________
_
ENTORNO DE DATOS
_______________________________________________________________________
_
102

T_ESTADISTICA DE EMPLEADOS
T_EMPLEADOS
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 ---------------------------------------------------------|
|
|
|
|
-------------------------------------------------------------------------------------------

103

T_Estadistica
Ao
Mes
Cod_emp
N_ventas
T_Ventas

T_Empleados
Cod_emp
Nombre
apellido
dirreccion
telefono

__________________________________________________________________
|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)
|
|
|
|
|
104

------------------------------------------------------------------------------------------Ao
Mes

:
:

2001
10

Cod.Emp
Nombre
Numero Ventas
Total Ventas
__________________________________________________________________
1
2

Juan
Pedro

10
15

2,500.00
3,500.00

___________________
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

105

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

106

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

107

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

108

Herramientas del Sistema


___________________________
Copia de Seguridad (Nuevo Formulario)

Etiqueta sobre el Contenedor

Contenedor

Solo 3 puntos en el boton


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()

109

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
producto
Empleados
clientes
productos
estadisticos No

Factura - detalle - numero


Detalle - Producto - codigo

110

Vieta datos
Encabezado
numero factura

detalle
numero factura
click derecho propiedades

relacion propiedad

One to many

caracteristica

Crea grupos
Informe
Agrupar datos

111

1.- Entorno de datos


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

112

VF5

06

09

2002

09

09

2002 - A.D-

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

09

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

113

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

114

Depurar.click
boto depurar
Set safety off : para no mostrar mensaje cuando reeescriba
Close database
close all
Use a:\20202\datos\T_clientes Exclusive
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 Total
1
10

1
2
3
7

115

jabon
cafe
toalla
corbatas

Integridad Referencial
penultimo formulario de herramientas
Reindexacion de tablas ( Nuevo Formulario )

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)

116

VF5

11

09

2002

T_Usuarios

CONTROL DE USUARIOS
__________________________________________
Crear una tabla con los siguientes campos
Usuario
Nivel
clave

caracter
numerico
caracter

Indice

20
1
40

solo 20 + otros 20

Principal Candidato por el campo de Usuario

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

Agregar.click
ThisForm.metodo(.T.)
Select T_Usuarios
Append Blank

117

lo crea uno
tambien lo crea uno

Thisform.Container1.Text1.value=
Thisform.Container1.Text2.value=
Thisform.Refresh()
Thisform.Container1.TxtUsuarios.setfocus()
TxtUsuario.Valid
If seek(This.value,T_Usuarios1)
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

118

U_Usuarios1 ---------Passwordchar
=

Buscar
*
en clave y en confirmacion

para los cuatro campos =

Usuario
nivel
clave
confirmacion de clave

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

repetir un conjunto de instrucciones un

119

numero de veces.
VF5
V
=
V
=
b
=
ASC(b)
98 + 17
CHR(115)

12

09

2002

2
3
=
=
=

clavereal =
claveirreal =

98
115
S+?
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

120

Archivo

Edicion

Ver

Mantenimiento
______________
Clientes
Empleados y
Productos
____________
Facturas

Consulta
____________
Productos
Ventas Diarias

Reportes
__________
General de Clientes
Facturas
Estadisticos
Venta de Empleados
Compra de Clientes

Herramientas
_____________
Copia de Seguridad
Restauracion Datos
Reindexacion
Depuracion de Tablas
________________
Usuarios

Ayuda
___________
Sistema
Facturas

Salir
_________________
Slo Salir del Sistema

_______________________________________________________________________
_
Direcciones
Formularios
VF5

13
HOY HUBO CENTRO DE COMPUTO

09

2002

09

2002

VF5

16

Como se hace un spinner


Yesenia

preguntar a Srta.

17

Alt 92

Alt60 =

<

VF5
Columna Opciones del Menu

121

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
122

Crear Formulario de
Ingreso al sistema
Usuario
:
Nivel
:
Clave
:
Mantenimiento
Reportes
Herramientas

Carlos
2 -> Mnivel
~~~~~~~~~~

Mnivel >1
Mnivel >2
Mnivel >1

Reportes
Listado
Listado
Listado
Listado

de
de
de
de

Clientes
Facturas
Estadistica de empleados
Estadistica de clientes

VF5

13

09

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
=
timer 1
enabled
=
.T. - Verdadero
interval
=
450
left
=
456
timer event =
procedimeinto
top
=
60

123

2002

VF5

17

09

2002

- 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

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

124

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
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
125

09

2002

Aceptar.click
Local Musuario
Musuario =
Mnivel
=

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


126

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
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
127

- Base de datos
Caracteristica a su programa
codigo
programas
____________________________________________________________________
|
|Codigo
|
---------------------|
|Inicio
|
|
| Procedimientos
click derecho
Establecer principal Set Main
Ejecutable
Programas
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

128

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

129

VF5

23

09

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
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
130

2002

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|
|
|
----------------|
|
____________
|
|
Mes
|Tetx2
|
|
|
----------------|
|
|
|
Graficar
|
|
|
|
Salir
|
|
|
------------------------------------------------------------------------------------------Propiedad Inputmask

ao

numeros

9999

Propiedad InputMask

mes 2

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

131

09

2002

BOTON

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
Append General olegraph data Lcdata
Else
MESSAGEBOX(NO EXISTEN REGISTROS)
ENDIF
Use in Tgraf

Cerrar la tabla TGraf


ThisForm.Refresh()
______________________________________________________________________
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

132

|
|
|
|

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

Scan -

Endscan

Do While

Enddo

CRLF

Para centrar el titulo

VF5

25
HOY HUBO CENTRO DE COMPUTO

Total de registros

VF5

Recorre todo los registros del 1 al ultimo

09

2002

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

133

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
* Cierra todos los Archivos
* Close All
* Sale de Visual Foxpro
Quit
Endif

FIN DEL MODULO

134

Potrebbero piacerti anche