You are on page 1of 81

FACULTAD DE CIENCIAS EMPRESARIALES

ESCUELA ACADEMICO PROFESIONAL DE CIENCIAS
CONTABLES Y FINANCIERAS














2



Ing. Juan Carlos Palomino Quichca
INTRODUCCIÓN

Microsoft Visual FoxPro, es un sistema manejador de bases de datos relacionales, que permite
manipular grandes volúmenes de información de una manera bastante rápida y sencilla, además brinda
las herramientas necesarias para el desarrollo de aplicaciones bajo el entorno operativo Windows,
utilizando la metodología de la Programación Orientada a Objetos (POO).

Aparte del acceso a tablas en formato nativo de Visual FoxPro, se puede acceder virtualmente a
cualquier fuente de datos cuyo acceso se pueda hacer a través de ODBC (Open
DatabaseConnectivity). Este estándar, definido como Conectividad Abierta de Bases de Datos,
permite abrir y consultar diversas bases de datos a través de un conjunto de controladores,
utilizando SQL como lenguaje de consulta.

Es uno de los gestores de base de datos relacionales más rápido y flexible del mercado
Visual FoxPro es un lenguaje de programación que, con un lenguaje sencillo, simplifica el manejo de
datos para que los usuarios puedan construir rápidamente sus aplicaciones

Términos comunes usados en Visual FoxPro
 Entidad. Puede ser una persona, objeto o suceso, por ejemplo una relación de pacientes,
alumnos y clientes corresponden a la entidad persona.
Un lote de autos, medicamentos corresponden a la entidad objeto, una operación de crédito o una
transferencia correspondería a la entidad suceso.
 Base de Datos. Es una colección integrada de datos almacenados en distintos tipos de
registros, de forma que sean accesibles por múltiples aplicaciones. Los registros para una misma
entidad se guardan en Tablas, las tablas referidas a un mismo propósito constituyen la Base de
Datos. Por ejemplo la base de datos de matrícula interrelaciona las tablas de estudiantes, cursos
y profesores.
 Tabla de Datos. Es una colección integrada de datos pertenecientes a una misma entidad es
decir una tabla de datos de alumnos, solo deberá de guardar datos de alumnos. Una tabla de
datos de profesores solo deberá de guardar datos de profesores.



3



Ing. Juan Carlos Palomino Quichca
 Registros. Conjunto de datos pertenecientes a una misma entidad, la ficha o registro consta de
campos, cada campo tiene una longitud definida, por lo tanto los registros son de longitud
definida.
 Campo. Conjunto de datos de un mismo tipo, por ejemplo un conjunto de nombres, un conjunto
de notas, etc.
 Dato. Elemento individual de un campo, se identifica por un nombre y tiene un valor específico.
Los datos pueden abarcar subdatos, como es el caso de la fecha.
 Llave de registro. Se usa con fines de identificación, representa un campo que nos permite
diferenciar un registro de otro, cuyo valor sea único para el registro, puede ser el número de
código de un alumno, número de DNI de una persona, etc.

Diseño de una Base de Datos
En el diseño de una base de datos, se busca evitar la redundancia de datos, ya que impone mayor
dificultad durante una operación de mantenimiento. Por ejemplo si en una tabla de una base de datos
se mantienen tanto las direcciones del alumno y sus respectivas notas, al cambiar la dirección de un
alumno, implicaría también realizar el cambio en cada una de las notas del alumno.
Trasladar las notas de los alumnos a una tabla separada hace que sea más fácil de actualizar la
dirección, el cambio se tendría que realizar solo en un registro, en vez de cambiarla en cada uno de
las notas.
El proceso de asegurar la singularidad de los datos, así como el correspondiente proceso de eliminar
la redundancia de datos, se llama proceso de Normalización.

Etapas en Diseño de una Base de Datos

Una breve idea de cuál es la forma, en que se debe pensar al momento de diseñar una Base de Datos:

Paso 1: Determinar el propósito de la Base de Datos. Aquí Ud. decidirá cuales son los datos que
desea almacena en Visual FoxPro.

Paso 2: Determinar las tablas necesarias. Cuando ya se conoce el propósito de la Base de Datos,
puede ahora dividir la información en temas distintos, como “Clientes” o “Ventas”. Cada tema será una
tabla de Base de Datos.




4



Ing. Juan Carlos Palomino Quichca
Paso 3: Determinar los campos necesarios. Hay que tomar la decisión de cuál será la información
que almacenara en cada una de las tablas. Cada categoría de información de una tabla se denominará
campo y se muestra en forma de columna al examinar la tabla.

Paso 4: Determinar las relaciones. Observe cada tabla y decida cómo se relacionan sus datos con
los de las tablas restantes. Agregue campos a las tablas o cree tablas que puedan ayudar a clarificar
las relaciones.

Paso 5: Perfeccionar el diseño. Analice su diseño para detectar posibles errores. Cree las tablas y
agregue algunos registros de ejemplo. Observe si puede obtener de las tablas los resultados
deseados.


ENTORNO DE DESARROLLO
El entorno de desarrollo son las partes visuales de las que está compuesto todo lenguaje de
programación visual, como lo son Visual FoxPro, Visual Basic, etc., en la siguiente figura se muestra la
pantalla de inicio del Visual FoxPro.






Barra de Menús Barra de Herramientas
Ventana de Comandos



5



Ing. Juan Carlos Palomino Quichca
Barra de Menús
Por medio de esta barra de menús podremos acceder a todas las opciones que Visual FoxPro nos
ofrece como Abrir o Crear un Nuevo Proyecto, una Base de Datos, un Reporte, etc.

Barra de Herramientas
Por medio de esta barra de Herramientas podremos acceder a todas las opciones que más se utilizan,
sin necesidad de ir a los menús a buscar sus respectivas opciones, esto es para tener un acceso más
rápido.


ADMINISTRADOR DE PROYECTOS

El Administrador de Proyectos permite compilar la aplicación completa, pero en la fase de desarrollo
de la aplicación. Además facilita el diseño, la modificación y la ejecución de los componentes
individuales de su aplicación.



¿Qué es un Proyecto?

Un proyecto es una colección de archivos, datos, documentos y objetos de Visual FoxPro, que se
guarda como un archivo con extensión .PJX. Al archivar el Administrador de Proyectos, aparece la
opción Proyecto en la barra de menú de Visual FoxPro.




6



Ing. Juan Carlos Palomino Quichca
Crear un Proyecto

Para crear un nuevo proyecto donde se almacenaran las tablas, reporte, menús, etc., hay que ir al
menú Archivo => Nuevo, como muestra la siguiente figura.




Seleccionar Proyecto y dar clic en Nuevo Archivo y entonces aparecerá la siguiente pantalla.
Crear un Directorio con el nombre Contabilidad donde se guardara el proyecto.












7



Ing. Juan Carlos Palomino Quichca







CREAR UNA NUEVA BASE DE DATOS

CreateDataBase: Permite crear una nueva Base de Datos.

Sintaxis
CREATE DATABASE [Enter]


Para crear una Base de Datos seguir los siguientes pasos:

En la ventana de comandos escribir: CREATE DATABASE




Crear Directorio
Nombre del Proyecto
Guardar Proyecto



8



Ing. Juan Carlos Palomino Quichca


A continuación aparecerá una ventana similar ala siguiente figura.




Luego, escribir el nombreque se desea dar a la basede datos. Por defecto, elnombre es datos1.dbc,
peropara el proyecto a realizarse llamará Matricula_Alumnos.

A continuación, hacer clicen guardar y la base dedatos ya está creada yactiva.







Nombre de la Base Datos



9



Ing. Juan Carlos Palomino Quichca



CREAR TABLAS DE DATOS
 Realice un clic con el botón contrario sobre la ventana de base de datos y seleccione la opción
Nueva Tabla, tal como se muestra a continuación.



 Seguidamente se activará la siguiente ventana, en donde se tendrá que seleccionar la opción
Nueva Tabla.




10



Ing. Juan Carlos Palomino Quichca

 En la ventana siguiente que se activa, se tendrá que ingresar el nombre de la tabla con que se
desea crear, en este caso escriba el siguiente nombre: Alumnos, y pulse la tecla <ENTER> o haga
un clic sobre el botón Guardar.









Nombre de la Tabla



11



Ing. Juan Carlos Palomino Quichca
 Luego de pulsar sobre Guardar, se activará la siguiente ventana de dialogo llamada Diseñador de
Tablas, en donde se tendrá que ingresar los nombres de los campos, especificar el tipo de dato y
el ancho de cada campo.



Definición de campos:Al igual que las versiones anteriores, la definición de campos es igual. Se
introduce el nombre del campo (nombre), el tipo de datos que soportará (tipo) y el tamaño.

Definición de mostrar:
Formato: Es el formato de salida del campo, ejemplo si fuera numérico 9.999.99.
Máscara de entrada: Al igual que el format, se utiliza para la entrada de datos.
Titulo: Descripción más precisa del campo, es de utilidad al diseñar los formularios.

Definición de reglas de validación a nivel de campo:son eventos que se ejecutan a nivel de campo.
Ejemplo una validación de un campo que solo acepte números positivos. (id> 0).


Definición
de campos

Tipo de
datos
Definición de
entrada de datos
Definición de reglas
de validación de datos



12



Ing. Juan Carlos Palomino Quichca
Regla: Es la regla de validación, ejemplo: id > 0, si queremos que acepto valores positivos.
Mensaje: Es el mensaje personalizado que queremos que aparezca en pantalla a la hora de infringir la
regla de validación del campo. Ejemplo: “Sólo se aceptan números positivos”.
Valor predeterminado: valor por defecto del campo.

Luego de hacer la definición de los campos, pasamos a la definición de índices de la tabla, que será
muy importante a la hora de crear las relaciones entre las tablas.



Nombre del índice (Nombre)
Tipo: (Tipo de índice)
Principal: Llave primaria.
Candidato: Llave candidata
Normal: Llave foránea.
Nombre de la expresión:nombre de los campos que conforman la llave primaria.



Nombre del
índice

Tipo del
índice

Nombre de los campos
que componen el índice




13



Ing. Juan Carlos Palomino Quichca
Tipos de índices:
En una tabla de Base de Datos existen 4 tipos de índices, mientras que en las tablas libres sólo
se dispone de los tres últimos.

1) Principal: no permite valores duplicados en el campo indexado, Los índices principales se
utilizan sobre todo en la tabla primaria para establecer la integridad referencial en una
relación permanente. Sólo es posible crear un índice principal para cada tabla. Visual
FoxPro devolverá un error si especifica un índice principal sobre un campo que contenga
valores duplicados.

2) Candidato: exactamente igual al anterior. Su sentido reside en que por tabla sólo se puede
crear un índice principal, todos los demás serán candidatos, es por eso que se convierten en
“candidatos” a ser elegidos índice principal de la tabla.

3) Normal: es el índice clásico. Permite cualquier valor en la clave, esté repetido o no. Es el
más utilizado.

4) Binary: Tiene poca utilidad.


Ejercicios de laboratorio:
 Crear las siguiente tablas de acuerdo a la siguiente estructura:

 Tabla Alumnos.
Nombre Tipo Ancho
Cod_alumno Numérico 10
Nombres Carácter 40
Apellidos Carácter 60
Dni Numérico 8
Sexo Carácter 1
Telefono Carácter 10
FNacimiento Fecha 8
Direccion Carácter 80
Email Carácter 80

Luego de escribir todo la estructura de la tabla, pulse las teclas Ctrl. + W, o en todo caso
seleccione el botón Aceptar.





14



Ing. Juan Carlos Palomino Quichca
 TablaDocentes.
Nombre Tipo Ancho
Cod_docente Numérico 5
Nombres Carácter 40
Apellidos Carácter 60
Dni Numérico 8
Sexo Carácter 1
Telefono Carácter 10
FNacimiento Fecha 8
Especialidad Carácter 60
Dirección Carácter 80
Email Carácter 80

Luego de escribir todo la estructura de la tabla, pulse las teclas Ctrl. + W, o en todo caso
seleccione el botón Aceptar.

 TablaCursos.
Nombre Tipo Ancho
Cod_curso Numérico 2
Nombre_curso Carácter 60
Escuela Carácter 60
Cod_docente Numérico 5
Ciclo Numérico 1
Año_Academico Numérico 4
Periodo Numérico 1
Horas_semanales Numérico 2

 TablaNotas.
Nombre Tipo Ancho
Cod_alumno Numérico 10
Cod_curso Numérico 2
Promedio_practicas Numérico 2 0
Examen_parcial Numérico 2 0
Examen_final Numérico 2 0
Promedio_Final Numérico 2 0
Condicion Carácter 40







15



Ing. Juan Carlos Palomino Quichca
Relaciones entre tablas:

Las relaciones más comunes entre tablas se definen:

De uno a uno: Ejemplo de una llave primaria a otra llave primaria.
De uno a muchos: Ejemplo de una llave primaria a una Regular o Foránea.
De muchos a muchos: Aquí como no se pueden establecer relaciones de muchos a muchos se tiene
que dividir en dos relaciones de uno a muchos. Ejemplo: Un autor puede tener varios libros, pero
también un libro puede tener varios autores

Las relaciones entre tablas se crean arrastrando la llave de la tabla a la llave de la otra tabla.


Nota: Al final la base de datos tendrá que verse de la siguiente manera.













16



Ing. Juan Carlos Palomino Quichca
Uso de lasinstruccionesModify Project, Modify DataBase, Use, Append, List, Display, Edit.

 Modify Project. Activa un proyecto.

En la ventana de comandos escriba la siguiente instrucción.
Modify Project Matricula [ENTER]




 Modify DataBase. Activa una base de datos.

En la ventana de comandos escriba la siguiente instrucción.
Modify DataBase Matricula_Alumnos [ENTER]



Nombre de la Base de Datos
Tablas que conforman la Base de Datos



17



Ing. Juan Carlos Palomino Quichca
 Use. Activa una tabla de datos.



Escriba las siguientes instrucciones en la ventana de comandos, para abrir una tabla de
datos.
Modify Project Matricula<ENTER> (Activa el proyectoindicado)
Use Alumnos <ENTER> (Activa la tabla Alumnos)
Browse (Visualiza los registros de la tabla Alumnos)




Ejercicios
 Active la tabla cursos y muestre los registros.
 Active la tabla docentes y muestre los registros.
 Active la tabla notas y muestre los registros.

 Append. Agrega nuevos registros.
Ejemplos:
 Agregar nuevos Registros a la tabla datos : Alumnos
Escriba las siguientes instrucciones en la ventana de comandos.
Modify Project Matricula <ENTER> (Activa el proyecto indicado)
Estos son los registros que se encuentran dentro de la tabla de datos Alumnos.



18



Ing. Juan Carlos Palomino Quichca
Use Alumnos <ENTER> (Activa la tabla Alumnos)
Append<ENTER> (Activa la ventana de edición de datos)


Ejercicios
 Active y agregue nuevos registros a la tabla cursos.
 Active y agregue nuevos registros a la tabla docentes.
 Active y agregue nuevos registros a la tabla notas.

 List - Display. Lista los registros de la tabla activa. Se podrá utilizar cualquiera de las dos
instrucciones.
La diferencia entre las dos es: la instrucción List, lista de una manera rápida, mientras que la
instrucción Displaylo hace pantalla por pantalla, es decir en forma pausada.

Ejemplos
 Listas los registros de la tabla:Alumnos utilizando la instrucción List.
Escriba las siguientes instrucciones en la ventana de comandos.
Modify Proyect Matricula <ENTER> (Activa el proyecto indicado)
Use Alumnos <ENTER> (Activa la tabla Alumnos)
List<ENTER> (Lista todo los registros de la tabla activa)
Este es el nuevo registro
que se está agregando a la
tabla Alumnos



19



Ing. Juan Carlos Palomino Quichca



 Listas los registros de la tabla datos : Alumnos utilizando la instrucción display
Escriba las siguientes instrucciones en la ventana de comandos.
Modify Proyect Matricula <ENTER> (Activa el proyecto indicado)
Use Alumnos <ENTER> (Activa la tabla Alumnos)
DisplayAll<ENTER> (Lista todo los registros de la tabla activa)

 Listas los registros de la tabla datos:Alumnos utilizando la instrucción Display.
Incluir en el listado solo los campos Nombres, Apellidos, Sexo.
Escriba las siguientes instrucciones en la ventana de comandos.
Modify Proyect Matricula <ENTER> (Activa el proyecto indicado)
Use Alumnos <ENTER> (Activa la tabla Alumnos)
DisplayAll Nombres,Apellidos, Sexo<ENTER> (Lista solo los campos indicados)


 Edit / Browse. Abre la ventana Examinar y muestra los registros de la tabla en uso o
seleccionada.
Puede utilizar cualquiera de las dos instrucciones. La diferencia las notará en los resultados que
obtenga.
Estos son los registros listados de la tabla datos de alumnos



20



Ing. Juan Carlos Palomino Quichca
Sintaxis:
BROWSE
[FIELDS ListaCampos]
[FONT cNombreFuente [, nTamañoFuente]]
[FOR lExpresión1 [REST]]
[NOAPPEND]
[NODELETE]
[NOEDIT | NOMODIFY]
[NOLGRID] [NORGRID]
[TITLE cTextoTítulo]

FIELDS ListaCampos
Especifica los campos que aparecerán en la ventana Examinar. Los campos se muestran en el
orden especificado en ListaCampos. En la lista de campos puede incluir campos de otras
tablas relacionadas. Cuando incluya un campo de una tabla relacionada, incluya delante del
nombre de campo su alias de tabla y un punto.
Si omite FIELDS, se mostrarán todos los campos de la tabla en el orden en que aparecen en
la estructura de la tabla.
FONT cNombreFuente [, nTamañoFuente]
Especifica la fuente y el tamaño de fuente de la ventana Examinar. La expresión de
caracteres cNombreFuente es el nombre de la fuente y la expresión numérica
nTamañoFuente es el tamaño de la fuente. Por ejemplo, la cláusula siguiente especifica la
fuente Courier de 16 puntos para los campos que se muestran en la ventana Examinar:
FONT 'Courier',16
FOR lExpresión1
Especifica una condición por la cual sólo se mostrarán en la ventana Examinar aquellos
registros para los que lExpresión1 sea verdadera.
Incluya FOR si desea mover el puntero de registro hasta el primer registro que cumpla la
condición.




21



Ing. Juan Carlos Palomino Quichca
NOAPPEND
Impide que el usuario agregue registros a la tabla al presionar CTRL+Y o al elegir la opción
Anexar registro del menú Tabla.
NODELETE
Impide marcar registros para su eliminación desde una ventana Examinar. De forma
predeterminada, un registro se puede marcar para su eliminación al presionar CTRL+T, al
elegir la opción Alternar eliminación del menú Tabla de Visual FoxPro
NOEDIT | NOMODIFY
Impide a un usuario modificar la tabla. NOEDIT y NOMODIFY son idénticas. Si incluye
cualquiera de las dos cláusulas, podrá examinar o buscar en la tabla, pero no modificarla. Sin
embargo, sí es posible anexar y eliminar registros.
NOLGRID
Quita las líneas de cuadrícula del campo en la partición izquierda de la ventana Examinar.
NORGRID
Quita las líneas de cuadrícula del campo en la partición derecha de la ventana Examinar
TITLE cTextoTítulo
Invalida el nombre o el alias predeterminado de tabla que aparece en la barra de título de la
ventana Examinar y muestra en su lugar el título especificado mediante cTextoTítulo. De lo
contrario, el nombre o el alias de la tabla que se está examinando aparecerá en la barra de
título.




22



Ing. Juan Carlos Palomino Quichca
CONSULTAS DE DATOS

Hablar de consultas es hablar de SQL. No son más que asistentes para generar comandos SELECT
que permiten extraer información de una o varias tablas.

Consultas De Datos Simples
 Crear una consulta, la cual permita consultar los datos de la tabla Datos de alumnos.
 Ir a la ficha Datos y seleccionar Consultas
 Seleccionar Nuevo

 Seleccionar Nueva Consulta







23



Ing. Juan Carlos Palomino Quichca


 Seleccione la tabla de datos Alumnos y pulse el botón Agregar.
 Luego de agregar la tabla de datos, seleccione el botón Cerrar
 Cuando pulse Cerrar, se mostrará, la ventana de diseño de consultas, tal como se muestra a
continuación.


 En la ficha campos seleccione los campos de desee que conformen la consulta de datos :
En este caso, seleccione uno en uno o pulse el botón Agregar todos.




24



Ing. Juan Carlos Palomino Quichca


 Una vez, seleccionado los campos para la consulta de datos, grabe la consulta, realizando un
clic sobre el siguiente icono (Grabar) con el nombre Consulta_Alumnos y ejecute la
consulta presionando en forma simultánea las teclas Ctrl. + Q, El resultado deberá de ser
la siguiente ventana.



 Si trata de modificar los registros, no podrá hacerlo, porque se trata de una consulta de
datos.
Ejercicios
 Crear una consulta para las demás tablas.









25



Ing. Juan Carlos Palomino Quichca
PROGRAMACIÓN ORIENTADA A OBJETOS
Definición.
Aunque Visual FoxPro admite la programación estándar por procedimientos, se ha ampliado la
capacidad del lenguaje para proporcionar la potencia y la flexibilidad propias de la programación
orientada a objetos.
El diseño orientado a objetos y la programación orientada a objetos representan un cambio de
perspectiva con respecto a la por procedimientos. En lugar de pensar en el flujo del programa desde
la primera hasta la última programación estándar línea de código, se debe pensar en la creación de
objetos: componentes auto contenidos de una aplicación que tienen funcionalidad privada además de
la funcionalidad que se puede exponer al usuario.
Descripción de los objetos de Visual FoxPro
En Visual FoxPro, los formularios y los controles son objetos que puede incluir en sus aplicaciones.
Puede manipular estos objetos a través de sus propiedades, eventos y métodos.
Las mejoras en el lenguaje orientado a objetos de Visual FoxPro proporcionan un mayor control sobre
los objetos de las aplicaciones. Asimismo, facilitan la creación y el mantenimiento de bibliotecas de
código reutilizable, proporcionando:
 Código más compacto.
 Incorporación más sencilla del código a las aplicaciones sin necesidad de elaborar esquemas de
asignación de nombres.
 Menos complejidad al integrar código de distintos archivos en una aplicación.
La programación orientada a objetos es en gran medida un modo de empaquetar código de manera
que se pueda volver a utilizar y mantener más fácilmente. Los paquetes principales se llaman clases.
Control
Un objeto gráfico, como un cuadro de texto, un rectángulo o un botón de comando, que se coloca en
un formulario para mostrar datos, realizar una acción o facilitar la lectura del formulario. Entre los
controles de Visual FoxPro cabe citar casillas de verificación, cuadros de edición, etiquetas, líneas,
imágenes, formas, etc. Puede dibujar estos controles en un formulario mediante la barra de
herramientas Controles de formularios en el Diseñador de formularios.
Este es un ejemplo de una ventana (formulario) mostrando varios tipos de control.



26



Ing. Juan Carlos Palomino Quichca


Formulario
Una clase contenedora. Una colección de una o más páginas que se comporta como una ventana o un
cuadro de diálogo estándar. Un formulario contiene controles para mostrar y modificar datos. Los
formularios pueden estar contenidos dentro de un conjunto de formularios.
Crear un formulario:
 Ir a la ficha Todos y seleccionar Documentos
 Seleccionar Formularios y clic en Nuevo



Controles : Casillas de
Verificación (CheckBox)
Controles: Listas
desplegables (ComboBox)
Controles : Cuadros de
Lista (ListBox)
Controles : Cuadros de
Texto (TextBox)
Controles : Etiquetas
(Label)
Controles : Botones de
Comando
(CommandButton)



27



Ing. Juan Carlos Palomino Quichca


Una vez, creado el formulario, grabe el formulario realizando un clic sobre el siguiente icono
(Grabar).
Propiedad
Un atributo de un control, campo u objeto de base de datos que se establece para definir una de las
características del objeto o un aspecto de su comportamiento. Por ejemplo, la propiedad Visible
afecta a la visibilidad en tiempo de ejecución de un control. Puede cambiar los valores de las
propiedades de objeto mediante la ventana Propiedades.



28



Ing. Juan Carlos Palomino Quichca

Método
Una acción que un objeto es capaz de realizar. Por ejemplo, los cuadros de lista tienen métodos
llamados AddItem, RemoveItem y Clear para mantener el contenido de las listas.
Evento
Una acción, reconocida por un objeto, para la cual puede escribir código de respuesta. Los eventos
pueden estar generados por una acción del usuario, como hacer clic con el mouse o presionar una
tecla, por código de programa o por el sistema, como ocurre con los cronómetros



29



Ing. Juan Carlos Palomino Quichca
Uso de controles Básicos.
(Label) . Crea un control Label que muestra texto.
Sintaxis
Label
Comentarios
Un control Label es un control gráfico que muestra texto que no puede cambiarse directamente. Sin
embargo, puesto que un control Label tiene un amplio conjunto de propiedades, eventos y métodos en
común con otros controles, puede responder a eventos y cambiarse dinámicamente en tiempo de
ejecución
Propiedades.
 Caption. Especifica el texto que se muestra en el título de un objeto. Está disponible en tiempo
de diseño y en tiempo de ejecución.
 BackColor / ForeColor. Especifica el color del fondo y de primer plano empleado para mostrar
texto y gráficos en un objeto. Está disponible en tiempo de diseño y en tiempo de ejecución
 BorderStyle. Especifica el estilo de borde de un objeto. Disponible en tiempo de diseño y en
tiempo de ejecución (0: Ninguno, 1:Sencillo fijo)
 FontName. Especifica el nombre de la fuente empleada para mostrar texto. Está disponible en
tiempo de diseño y en tiempo de ejecución.
 FontSize. Especifica el tamaño de fuente para el texto mostrado con un objeto. Está disponible
en tiempo de diseño y en tiempo de ejecución.
 FontBold, FontItalic, FontStrikethru, FontUnderline
Especifica que el texto tiene uno o más de los estilos siguientes: Negrita, Cursiva, Tachado o
Subrayado. (.T. / .F.)

(TextBox) . Crea un cuadro de texto en el que puede modificar el contenido de una
variable de memoria, un elemento de matriz o un campo. Todas las características estándar de
edición de Visual FoxPro, como cortar, copiar y pegar, están disponibles en el cuadro de texto. Si se
utiliza el cuadro de texto para modificar un valor de fecha o de fecha y hora, y se ha seleccionado
todo el valor, presione + o - si desea aumentar o disminuir el valor para un día.





30



Ing. Juan Carlos Palomino Quichca
Propiedades.
 Name. Especifica el nombre del objeto al que se hace referencia en el código. Disponible en
tiempo de diseño; de lectura-escritura en tiempo de ejecución.
 Value. Especifica el estado actual de un control. Está disponible en tiempo de diseño y en tiempo
de ejecución.
 Enabled. Especifica si un objeto puede responder a eventos generados por el usuario. Disponible
en tiempo de diseño y en tiempo de ejecución.
 MaxLength. Especifica la longitud máxima (en caracteres) que puede escribirse en un control
EditBox o en un control TextBox. Está disponible en tiempo de diseño y en tiempo de ejecución.
 PasswordChar. Determina si se muestran en un control TextBox los caracteres escritos por un
usuario o los caracteres de marcador de posición; determina el carácter empleado como
marcador de posición. Está disponible en tiempo de diseño y en tiempo de ejecución.
 Format. Especifica el formato de entrada y resultados de la propiedad Value de un control.
Disponible en tiempo de diseño y en tiempo de ejecución.
Los valores válidos de cFunción para un control TextBox y un objeto Column son:

Valor Descripción
! Convierte los caracteres alfabéticos en mayúsculas. Utilícelo sólo con datos del tipo
Character.
$ Muestra el símbolo de moneda. Es necesario que la propiedad ControlSource
especifique un origen numérico para el cuadro de texto.
^ Muestra datos numéricos utilizando anotación científica. Es necesario que la
propiedad ControlSource especifique un origen numérico para el cuadro de texto.
A Sólo permite caracteres alfabéticos (sin espacios ni signos de puntuación).
D Utiliza el formato actual de SET DATE.
E Edita los datos tipo Date como fecha BRITISH.
K Selecciona todo el TextBox cuando se mueve el cursor al TextBox.
L Muestra ceros a la izquierda (en lugar de espacios) en el TextBox. Es necesario que
la propiedad ControlSource especifique un origen numérico para el cuadro de texto.




31



Ing. Juan Carlos Palomino Quichca
 InputMask. Específica cómo se introducen y muestran los datos en un control. Disponible en
tiempo de diseño y en tiempo de ejecución
Los valores para la propiedad InputMask son:

Valor Descripción
X Puede introducirse cualquier carácter.
9 Pueden introducirse dígitos y signos, como el signo menos ( – ).
# Pueden introducirse dígitos, espacios en blanco y signos.
$ Muestra el símbolo de moneda actual (especificada con SET CURRENCY) en una
posición fija.
$$ Muestra un símbolo de moneda flotante que siempre aparece junto a los dígitos del
Spinner o TextBox.
* Se muestran asteriscos a la izquierda del valor.
. Un punto especifica la posición de coma decimal.
, Pueden incluirse comas para separar dígitos a la izquierda de la coma decimal.

 Alignment. Especifica la alineación del texto asociado a un control. Está disponible en tiempo de
diseño y en tiempo de ejecución. (0: Izquierda, 1: Derecha)

Ejercicios de Aplicación.

 La siguiente Aplicación, lee los siguientes datos: Nombre de la Empresa, RUC, Dirección,
Teléfono, correo electrónico y página web.

Crear un formulario con el nombre: Datos_Empresa e inserte los siguientes controles.








32



Ing. Juan Carlos Palomino Quichca
Control Propiedad Valor Control Propiedad Valor
Form1
Label1

Label2

Label3

Label4

Label5

Label6

Caption
Caption
FontBold
Caption
FontBold
Caption
FontBold
Caption
FontBold
Caption
FontBold
Caption
FontBold
Ingrese los datos de la
Empresa
NOMBRE DE LA EMPRESA
.T. Verdadero
DIRECCION
.T. Verdadero
TELEFONO
.T. Verdadero
R.U.C.
.T. Verdadero
CORREO ELECTRONICO
.T. Verdadero
PAGINA WEB
.T. Verdadero
Text1

Text2

Text3

Text4

Text5
Text6




ForeColor
Format
ForeColor
Format
ForeColor
InputMask
ForeColor
InputMask
ForeColor
ForeColor




Seleccione Azul
!
Seleccione Azul
!
Seleccione Azul
999999
Seleccione Azul
999999999
Seleccione Azul
Seleccione Azul

El Diseño del formulario tendrá que quedar de la siguiente manera

Nota
Cuando ingrese Teléfono y Ruc, solo podrá ingresar números, no permite ingresar letras.
En el caso de Nombre de la Empresa y Dirección, todo lo que escribe lo convierte a letras
mayúsculas

Luego de diseñar el formulario, Grabe presionando las teclas CTRL + W, para ejecutar el
formulario escriba la siguiente instrucción o pulse sobre el siguiente icono
Una vez ejecutado, ingrese los datos correspondientes. Si desea salir de la aplicación, realice un
clic sobre el Botón



33



Ing. Juan Carlos Palomino Quichca
 Como Practica, realice la siguiente aplicación.

Nota:
En Nombres, Apellidos y Mes de Pago, solo deberá
de permitir ingresar letras mayúscula (Format=!).
En Fecha de Pago, solo se podrá ingresar fechas
válidas (dd/mm/aaaa) (Format=DE)
Y en los controles restantes solo se podrán
ingresar valores numéricos ( InputMask=
9999.99)

Los Controles Text11 y Text12, en la propiedad Enabled, cambie deTrue a False.
Cuando ejecute el formulario los controles Text11 y Text12, deberán de estar Desactivados
Hacer referencia a un objeto de un formulario
Thisform. THISFORM proporciona una forma muy conveniente de hacer referencia al formulario
actual mientras escribe programas que controlan eventos en un formulario. Por ejemplo, este
programa Click Event para un botón de comando establece que el título del botón sea la hora actual.
thisform.command1.caption = time()
La utilización de THISFORM en lugar de hacer referencia explícitamente al formulario actual
mediante su nombre (por ejemplo, form1.command1.caption) hace que el código de programa sea
portátil entre formularios.
THISFORM permite hacer referencia a un objeto en el formulario o en la propiedad sin tener que
utilizar varias propiedades Parent.
Sintaxis
THISFORM.NombrePropiedad | NombreObjeto
Argumentos
NombrePropiedad . Especifica una propiedad para el formulario.
NombreObjeto. Especifica un objeto del formula



34



Ing. Juan Carlos Palomino Quichca
(CommandButton) . Crea un botón de comando sencillo. Los botones de comando
suelen emplearse para iniciar un evento que lleva a cabo una acción, como cerrar un formulario,
moverse a otro registro, imprimir un informe, etc. Utilice el control CommandGroup para crear un
conjunto de botones de comando que pueden manipularse individualmente o como grupo.
Utilice la propiedad Caption para especificar el texto que aparece en un botón de comando. Utilice la
propiedad Picture para especificar una imagen para un botón de comando.
Propiedades:
 Name. Especifica el nombre del objeto al que se hace referencia en el código. Disponible en
tiempo de diseño; de lectura-escritura en tiempo de ejecución.
 Enabled. Especifica si un objeto puede responder a eventos generados por el usuario. Disponible
en tiempo de diseño y en tiempo de ejecución.
 Caption. Especifica el texto que se muestra en el título de un objeto. Está disponible en tiempo
de diseño y en tiempo de ejecución.
Para asignar una tecla de acceso a un control, incluya una barra inversa y un signo menor que (\<)
en el título inmediatamente anterior al carácter que desea asignar como tecla de acceso. Un
usuario puede presionar ALT y el carácter especificado para mover el enfoque al control. Si el
control es un botón de comando, una casilla de verificación o un botón de opción, al presionar ALT
y el carácter especificado también tendrá el mismo efecto que hacer clic en el control.
 Picture. Especifica el archivo de gráficos que se va a mostrar en el control. Está disponible en
tiempo de diseño y en tiempo de ejecución
El valor para esta propiedad es una ruta de acceso a un archivo bmp, .gif, .jpg o .ico
 Visible. Especifica si un objeto está visible u oculto. Está disponible en tiempo de diseño y en
tiempo de ejecución. (Verdadero (.T.) o Falso (.F.) )

Eventos:
Clic. El evento Clic se produce cuando el usuario:
 Hace clic en un en un botón de comando.
 Presiona la BARRA ESPACIADORA en un botón de comando
 Presiona la tecla ENTRAR



35



Ing. Juan Carlos Palomino Quichca
 Presiona la tecla de acceso de un control. Por ejemplo, si el título de un botón de comando es
"\<Ir a", al presionar ALT+I, se desencadena el evento Clic.

Ejercicios de Aplicación.

 Crear una aplicación que lea dos números y muestre el promedio de los dos números ingresados.


Inserte los siguientes controles.
Control Propiedad Valor Control Propiedad Valor
Form1
Label1

Label2

Label3

Command1

Command1

Command1
Caption
Caption
FontBold
Caption
FontBold
Caption
FontBold
Caption
Name
Caption
Name
Caption
Name
Calcular el promedio de dos
números
Ingrese el primer Valor
.T. Verdadero
Ingrese el segundo Valor
.T. Verdadero
El Promedio Obtenido es
.T. Verdadero
Calcular
CmdCalcular
Otro
CmdOtro
Cerrar
CmdCerrar
Text1



Text2



Text3




Name
ForeColor
Format
Value
Name
ForeColor
Format
Value
Name
ForeColor
Format
Value
Enabled
TxtV1
Seleccione Azul
99
0
TxtV2
Seleccione Azul
99
0
TxtRe
Seleccione Azul
99
0
.F. False

Digitar el Código de la aplicación
Realice doble click sobre el botón Calcular, para activar la ventana de código, en donde se tendrá
que digitar el código respectivo del botón. (Grabar el código, presionando las teclas Ctrl. + W)


Diseñe el formulario
de tal forma que
quede igual que el
siguiente formulario.



36



Ing. Juan Carlos Palomino Quichca


Realice doble clic sobre el botón Calcular, para activar la ventana de código, en donde se tendrá
que digitar el código respectivo del botón.

Realice doble clic sobre el botón Calcular, para activar la ventana de código, en donde se tendrá
que digitar el código respectivo del botón.



 Desarrolle una aplicación que permita ingresar los nombres del trabajador, las horas normales
que ha trabajado, el pago por cada hora normal y por cada hora extra. Al hacer un clic en el
Tipo de evento del control
Nombre del control
Una vez que haya digitado los
códigos de los controles, ejecute
el formulario, ingrese las notas y
luego pulse sobre el botón
Calcular.



37



Ing. Juan Carlos Palomino Quichca
botón Calcular, se debe calcular y mostrar el total por horas normales, el total por horas extras,
el sub total, un descuento del 10% del sub total y el total que se le debe de pagar.
Solución: En la venta de comandos escriba la siguiente instrucción.

El diseño del formulario deberá de quedar de la siguiente forma.


Desarrollo del formulario

Botón CmdCalcular


Establecer la:
Propiedad
Value = 0
Inputmask = 99999.99
Propiedad
Enabled = .F. False



38



Ing. Juan Carlos Palomino Quichca
Botón CmdOtro

Botón CmdCerrar

Ejecute el formulario e ingrese los datos respectivos, luego pulse el botón Calcular





39



Ing. Juan Carlos Palomino Quichca
Estructuras de Control (Parte I)

Las estructuras de control le permiten controlar el flujo de ejecución del programa. Tenemos dos
tipos de estructuras de control:
 Estructuras de decisión
 Estructuras de bucle

Estructuras de Decisión
Los procedimientos de Visual Basic pueden probar condiciones y, dependiendo de los resultados,
realizar diferentes operaciones. Entre las estructuras de decisión que acepta Visual FoxPro se
incluyen las siguientes:
 If. <Condición> End If
 If. <Condición> Else ... End If
 Do Case ... End Case

 If <Condición> End if
Use la estructura If <Condición> para ejecutar una o más instrucciones basadas en una
condición. Puede utilizar la sintaxis de una línea o un bloque de varias líneas:

La estructura If, se puede usar de las formas siguientes.
If condición
Sentencias
End If

Condición normalmente es una comparación, pero puede ser cualquier expresión que dé como
resultado un valor numérico. Visual Basic interpreta este valor como True o False; un valor
numérico cero es False y se considera True cualquier valor numérico distinto de cero. Si
condición es True, Visual Basic ejecuta todas las sentencias que siguen a la palabra clave Then.
Puede utilizar sintaxis de una línea o de varias líneas para ejecutar una sentencia basada en una
condición, los siguientes dos ejemplos son equivalentes:



40



Ing. Juan Carlos Palomino Quichca
If <Condición> Else ... End If

Utilice un bloque If <Condición> Else ... End If para definir varios bloques de sentencias, uno
de los cuales se ejecutará:
If condición
bloque de sentencias
Else
bloque de sentencias
End If

Visual Basic evalúa primero la condición. Si es True, ejecutará las instrucciones que se
encuentran dentro de If y si es False, ejecutará las instrucciones que se encuentran a
continuación de Else y antes de End If

Ejemplos prácticos

 Desarrollo una aplicación que permita ingresar dos valores cualesquiera, al hacer un clic sobre
el botón Comparar, deberá de mostrar un mensaje indicando si son iguales o son diferentes.

El diseño del formulario es el siguiente:






41



Ing. Juan Carlos Palomino Quichca

Código del formulario
Boton Comparar Evento Click


Botón Otro Evento Click







42



Ing. Juan Carlos Palomino Quichca
 Do Case ... End Case
Use la estructura Do Case para ejecutar el primer conjunto de comandos cuya expresión
condicional dé como resultado verdadero (.T.).
DO CASE se utiliza para ejecutar un conjunto de comandos de Visual FoxPro según el valor de
una expresión lógica. Cuando se ejecuta DO CASE, se evalúan cada una de las expresiones lógicas
sucesivas; los valores de las expresiones determinan el conjunto de comandos que se ejecuta.
Sintaxis:
DO CASE
CASE lExpresión1
Comandos
[CASE lExpresión2
Comandos
...
CASE lExpresiónN
Comandos]
[OTHERWISE
Comandos]
ENDCASE

Argumentos
CASE lExpresión1 Comandos ...
Cuando se encuentre la primera expresión CASE verdadera (.T.), se ejecutará el conjunto de
comandos que haya a continuación. La ejecución del conjunto de comandos continuará hasta
encontrar la siguiente expresión CASE o ENDCASE. La ejecución se reanuda en el comando que
hay inmediatamente a continuación de ENDCASE.
Si una expresión CASE es falsa (.F.), se pasará por alto el conjunto de comandos que le siguen
hasta la siguiente cláusula CASE.



43



Ing. Juan Carlos Palomino Quichca
Solamente se ejecuta un conjunto de comandos, que será aquél cuya expresión CASE dé como
resultado verdadero (.T.). Se pasan por alto todas las expresiones CASE posteriores que sean
verdaderas (.T.).
OTHERWISE Comandos
Si todas las expresiones CASE dan como resultado falso (.F.), OTHERWISE determinará si se
ejecuta otro conjunto de comandos adicional.
 Si incluye OTHERWISE, se ejecutará el conjunto de comandos que sigue a OTHERWISE y la
ejecución saltará al primer comando que hay a continuación de ENDCASE.
 Si omite OTHERWISE, la ejecución saltará al primer comando que hay a continuación de
ENDCASE.

Ejercicios de Aplicación
 Realice una aplicación en donde se ingrese un número de un mes y muestre como resultado el
nombre del mes ingresado.

Nota: Si se ingresa un numero de mes incorrecto, deberá de mostrar un mensaje indicando: el
número de mes ingresado es incorrecto.
El diseño del formulario es el siguiente:


El código del formulario es el siguiente:

Value =0 InputMask=99
Enabled=False
Cambiar las Propiedades



44



Ing. Juan Carlos Palomino Quichca

Luego de escribir el código del formulario, Ejecute el formulario , ingrese un número
cualesquiera y pulse la tecla Aceptar.

 Realice una aplicación en donde se ingrese una fecha cualesquiera y luego de pulsar el botón
Aceptar, deberá de mostrar el nombre del día correspondiente.
El nombre del formulario es: Averiguar_Dia_C1N
El diseño del formulario es el siguiente:



45



Ing. Juan Carlos Palomino Quichca


Complete Ud., el código del botón Otro y Cerrar
Luego de escribir el código de la aplicación, ejecute el formulario, ingrese una fecha y pulse
el botón Aceptar.


Value= ={} (incluir el igual)
Enabled= False
Cambiar las Propiedades
La función Dow, Devuelve el número del día de la
semana a partir de una expresión Date o DateTime



46



Ing. Juan Carlos Palomino Quichca
 Realice una aplicación que permita calcular el promedio del alumno y además calcular la
condición del alumno en forma cualitativa de acuerdo al promedio obtenido.
Si el alumno obtiene un promedio que este entre:
 00 a 05 : su condición será Pésimo
 06 a 10 : su condición será Malo
 11 a 15 : su condición será Regular.
 16 a 18 : su condición será Bueno.
 18 a 20 : su condición será Excelente
El diseño del formulario es el siguiente.



Cambie las siguientes
propiedades de estos controles a:
Value=0
InputMask=99



47



Ing. Juan Carlos Palomino Quichca
Código del formulario:

Complete Ud., los códigos de los botones Otro y Cerrar.
Luego de escribir los códigos respectivos, ejecute el formulario ingrese los datos del alumno
mas las notas del alumno y luego pulse el botón Aceptar.


Ejercicios Propuestos:
 Realice una aplicación que permita calcular el Haber de un trabajador de acuerdo a la
categoría ingresada además realizar los descuentos respectivos.
Si se ingresa la categoría:



48



Ing. Juan Carlos Palomino Quichca
- Gerente, el haber será 2500 - Secretaria, el haber será 1500
- Asistente, el haber será 1000 - Auxiliar, el haber será 800
El diseño del formulario es el siguiente.


Cuando se pulse sobre el botón
Calcular, deberá de calcular el
haber del trabajador, calcular
los descuentos respectivos,
calcular el total descuento y el
neto a pagar



49



Ing. Juan Carlos Palomino Quichca
La Función MESSAGEBOX( )
Muestra un cuadro de diálogo definido por el usuario
Argumentos
cTextoMensaje
Especifica el texto que aparece en el cuadro de diálogo. Utilice un retorno de carro (CHR(13)) en
cTextoMensaje para mover una parte del mensaje a la siguiente línea del cuadro de diálogo. El alto y
el ancho del cuadro de diálogo aumentan lo que sea necesario para que quepa cTextoMensaje.
nTipoCuadroDiálogo
Especifica los botones y los iconos que aparecen en el cuadro de diálogo, el botón elegido inicialmente
cuando se muestra y el comportamiento del mismo.
En las tablas siguientes, los valores 0 a 5 del botón del cuadro de diálogo especifican los botones que
aparecen en el mismo. Los valores de icono 16, 32, 48 y 64 especifican el icono que aparece en el
cuadro de diálogo. Los valores predeterminados 0, 256 y 512 especifican qué botón del cuadro de
diálogo es el botón predeterminado. El botón predeterminado se selecciona cuando aparece el cuadro
de diálogo.
Omitir nTipoCuadroDiálogo es lo mismo que especificar un valor de 0 para nTipoCuadroDiálogo.

Valor Botones del cuadro de diálogo
0 Sólo botón Aceptar.
1 Botones Aceptar y Cancelar.
2 Botones Anular, Reintentar e Ignorar.
3 Botones Sí, No y Cancelar.
4 Botones Sí y No.
5 Botones Reintentar y Cancelar.

Valor Icono
16 Punto.
32 Signo de interrogación.



50



Ing. Juan Carlos Palomino Quichca
48 Signo de exclamación.
64 Icono de información (i).

Valor
Botón predeterminado
0 Primer botón.
256 Segundo botón.
512 Tercer botón.

nTipoCuadroDiálogo puede ser la suma de hasta tres valores, uno de cada una de las tablas
anteriores. Por ejemplo, si nTipoCuadroDiálogo es 290 (2+32+256), el cuadro de diálogo especificado
tendrá las siguientes características:
 Botones Anular, Reintentar e Ignorar.
 El cuadro de mensaje muestra el icono del signo de interrogación.
 El segundo botón, Reintentar, es el botón predeterminado.
cTextoBarraTítulo
Especifica el texto que aparece en la barra de título del cuadro de diálogo. Si omite
cTextoBarraTítulo, en la barra de título aparecerá el título "Microsoft Visual FoxPro".
La tabla siguiente muestra los valores que devuelve MESSAGEBOX( ) para cada botón.
Valor devuelto Botón
1 Aceptar
2 Cancelar
3 Anular
4 Reintentar
5 Ignorar
6 Sí
7 No




51



Ing. Juan Carlos Palomino Quichca
Ejercicios de Aplicación.
El siguiente ejemplo muestra un cuadro de mensaje al pulsar el botón Cerrar, preguntado si
realmente se desea salir de la aplicación.
El diseño del formulario es el siguiente.

El Código del formulario es el siguiente.

Ejecute el formulario y pulse el botón Salir


Los diferentes modelos de cuadros de mensaje son los siguientes.


Cuando se pulse el botón Salir del Formulario, se
mostrará este cuadro de mensaje, si se responde
pulsando Si, saldrá del formulario y se responde con
No, no pasará nada.
Código:
Res=MessageBox("Modelo 1 ",
0,"Título")



52



Ing. Juan Carlos Palomino Quichca





Nota: Para mostrar otro tipo de cuadros de mensaje, solo combine los valores mostrados de los los
cuadros definidos en la función MessageBox.


(Option Group) . Los botones de opción permiten al usuario elegir una opción
entre varias opciones mutuamente excluyentes.
Propiedades.
 ButtonCount. Especifica el número de botones de un control OptionGroup
 Name. Especifica el nombre del control al que se le hace referencia en el control.

Ejercicios de Aplicación.
 El siguiente ejemplo permite calcular el haber de un trabajador de acuerdo a su categoría.
Primero se tendrá que seleccionar la categoría del trabajador, luego pulsar el botón Aceptar
para mostrar su haber correspondiente.



Código:
Res=MessageBox("Muestra 2 botones", 1+16,"Título")
If Res=1
MessageBox("Selecciono Aceptar")
Else
MessageBox("Selecciono Cancelar")
Endif
Código:
Res=MessageBox("Muestra 3 botones",2+48,"Título")
Do Case
Case Res=3
MessageBox("Selecciono Anular")
Case Res=4
MessageBox("Selecciono Reintentar")
Case Res=5
MessageBox("Selecciono Ignorar")
EndCase



53



Ing. Juan Carlos Palomino Quichca
Solución:
1. Abra un nuevo formulario. (Nombre del Archivo: calcular_haber_trabajador_c1n
<Enter>)
2. Diseñe el formulario de tal forma que el diseño quede igual al siguiente formulario.

3. Para el caso de la categoría inserte un control Grupo de Opciones, y cambie la propiedad
Buttoncount por 3 Name por OptGCategorias, tal como se muestra a continuación

4. Para cambiar las propiedades del control Grupo de Opciones, Seleccione el control y
realice un click con el botón contrario y seleccione la opción modificar, luego seleccione el
control Option1 y cambie la propiedad caption por Gerente, Propiedad Name por
OptGerente.



54



Ing. Juan Carlos Palomino Quichca

Repita los mismos procedimientos para los dos controles restantes:
Option2 => Caption = Secretaria Name=OptSecretaria
Option3 => Caption = Personal de Servicio Name=OptPersonal

Escriba el código del formulario

Al final el diseño
del formulario
tendrá que quedar
igual al siguiente
modelo.



55



Ing. Juan Carlos Palomino Quichca
Complete Ud., el código de Otro y Cerrar
5. Ejecute el formulario, ingrese los datos respectivos y pulse el botón Aceptar, para
calcular el haber básico.


 Desarrollar una aplicación que permita calcular las boletas de pagos de los trabajadores de
una constructora, se debe ingresar el código del trabajador, nombres y apellidos,
seleccionar la categoría e ingresar la cantidad de horas trabajadas y la cantidad de horas
extras trabajadas:
Si la categoría es :
Maestro S/. 14.00
Oficial S/. 13.50
Peón S/. 13.00
Por cada hora trabajada.
Además se deben de calcular los descuentos de ley (Essalud, SNP, Fonavi).
Solución:
1. Abra un nuevo formulario. (Nombre del Archivo:
Calcular_Haber_Trabajador_Descuentios_C2N <Enter>)
2. Diseñe el formulario de tal forma que el diseño quede igual al siguiente formulario.



56



Ing. Juan Carlos Palomino Quichca






57



Ing. Juan Carlos Palomino Quichca
(CheckBox) . Una casilla de verificación sirve para alternar entre dos
estados, como verdadero (.T.) y falso (.F.), o sí y no. Cuando una condición es verdadera, aparece
una X en la casilla de verificación..
Utilice la propiedad Caption para especificar el texto que aparece junto a una casilla
de verificación. Utilice la propiedad Picture para especificar una imagen para una
casilla de verificación.
Propiedades.
 Name. Especifica el nombre del control al que se le hace referencia en el control.
 Caption. Especifica el texto que se muestra en el título de un objeto.
 Value. Especifica el estado actual de un control. Para un control CheckBox, los valores
para la propiedad Value son:
Para un control CheckBox, los valores para la propiedad Value son:
Valor Descripción
0 (Predeterminado) Desactivada.
1 Activada.

Ejercicios de Aplicación.
 Desarrollar una aplicación que permita calcular el sueldo neto de un trabajador de una
empresa, se debe ingresar el código del trabajador, nombres y apellidos y seleccionar la
categoría.
Si la categoría es:
Gerente S/. 1500
Contador S/. 1200
Secretaria S/. 1000
Además se debe de indicar si se desea realizar los descuentos respectivos.
Solución:
1. Abra un nuevo formulario. (Nombre del Archivo: Calcular_Sueldo_Neto)
2. Diseñe el formulario de tal forma que el diseño quede igual al siguiente formulario.



58



Ing. Juan Carlos Palomino Quichca

Escriba el código del formulario.

Nota
Los Controles TxtHaber,
TxtAfp, TxtEssalud, TxtCts,
TxtTotalD y TxtNeto tendrán
que estar desactivados y ser del
tipo numérico.



59



Ing. Juan Carlos Palomino Quichca


3. Ejecute la aplicación e ingrese los datos: Código, Nombres, Apellidos, Seleccione la
Categoría, Fecha de Pago, Active o Desactive descontar y pulse el botón Calcular.


Ejercicios propuestos.
 Desarrollar un formulario que permita calcular el sueldo neto de un trabajador de una
empresa.
Dentro de formulario se tendrá que indicar que descuentos se desea realizar activando sus
checks respectivos, El diseño del formulario es el siguiente.



Si descontar está activado, se
calcularan todo los descuentos
respectivos y si se encuentra
desactivados todo los
descuentos serán igual a 0



60



Ing. Juan Carlos Palomino Quichca









 (ComboBox) . Crear un cuadro combinado o una lista desplegable
Cuando se selecciona un control ComboBox, se abre y muestra una lista de elementos en la
que se puede elegir uno o mas elementos de la lista.
 (ListBox) . Crea un cuadro de lista.
Un cuadro de lista muestra una lista de elementos en la que es posible elegir uno o más
elementos. Un cuadro de lista es similar a un cuadro combinado; sin embargo, un cuadro
combinado muestra inicialmente un solo elemento.
Propiedades de estos dos controles.
 Name. Especifica el nombre del control al que se le hace referencia en el control.
 LitsIndex. Especifica el número de índice del elemento seleccionado en un control
ComboBox o ListBox. No está disponible en tiempo de diseño; es lectura y escritura en
tiempo de ejecución.
Los valores posibles de la propiedad listindex son:
0. Valor prederminado Indica que no hay elementos seleccionados
1 .. Listcount El índice del elemento seleccionado.
 ListCount. Contiene el número de elementos que contiene un control ComboBox o
ListBox.
 List. Retorna el elemento del numero de elemento indicado.
List (Nro Elemento – Fila)
 Value. Retorna el valor del elemento que se encuentra actualmente seleccionado.



61



Ing. Juan Carlos Palomino Quichca
 Selected. Especifica si un elemento está seleccionado en un control ComboBox o
ListBox.

Métodos de estos dos controles.
 AddItem. Agrega un nuevo elemento a un control ComboBox o ListBox, lo que permite
especificar opcionalmente el índice del elemento
Control.AddItem(cElemento [, nÍndice] [, nColumna])
 RemoveItem. Quita un elemento de un cuadro combinado o de lista.
Control.RemoveItem(nÍndice)
 Clear. Borra el contenido de un control ComboBox o ListBox.
Objeto.Clear

Ejemplos de aplicación.
 Realice un formulario que permita registrar nombres de cursos dentro de una lista o
eliminar los cursos registrados dentro de la lista.
Solución:
1. Abra un nuevo formulario. (ponga el nombre que ud., desee)
2. Diseñe el formulario de tal forma que el diseño quede igual al siguiente formulario.






62



Ing. Juan Carlos Palomino Quichca
Código del formulario



3. Ejecute el formulario Ingrese un nuevo curso y pulse el botón Agregar.


 Realice un formulario que permita calcular el total a pagar por una lista de productos .
Los nombres de productos tendrá que ser llenados de manera automática al momento de
ejecutar el formulario.
Primero se tendrá que seleccionar un producto y pulsar el botón Aceptar, seguidamente
ingresar la cantidad, el precio unitario y pulsar el botón Aceptar.

Para Eliminar, un nombre de curso, primero
seleccione de la lista el curso que desea
eliminar y luego pulse el botón Eliminar



63



Ing. Juan Carlos Palomino Quichca
Solución:
1. Abra un nuevo formulario. (ponga el nombre que ud., desee)
2. El diseño del formulario es el siguiente.

Si se desea ingresar otro producto, seleccione el botón Otro.
Si desea borrar los contenidos de todas las listas seleccione Borrar Listas
3. Ejecute el formulario seleccione un producto de la lista, ingrese la cantidad, el precio
unitario y pulse Agregar, para calcular el subtotal y agregar a la lista de abajo.
Código del formulario


TxtPros y TxtTotal,
tendrán que estar
desactivados y ser
de tipo numérico



64



Ing. Juan Carlos Palomino Quichca








65



Ing. Juan Carlos Palomino Quichca
Administrar datos mediante formularios
Los informes permiten imprimir fácilmente tablas y consultas, y los formularios
proporcionan una forma cómoda de mostrar, introducir y modificar información de la
base de datos. Puede crear formularios que tengan el aspecto de los formularios de
papel que está acostumbrado a utilizar, lo que le proporcionará un entorno familiar para
la introducción de datos.
En este capítulo se explica cómo crear formularios interactivos a partir de tablas y vistas
mediante asistentes para formularios, generadores y el Diseñador de formularios
Crear formularios enlazados a tablas de datos
Los formularios muestran los campos y los registros de las tablas y las vistas, y suelen
incluir controles de desplazamiento para ayudarle a moverse de un registro a otro.

Para trabajar formularios con tablas diseñaremos una base de datos:
La base de datos se llamará Control_Alumnos_C2N, y estará conformada por las siguientes
tablas de datos.
Tabla: Datos_Alumnos_C2N

Nombre de campo Tipo Ancho
CODIGO_ALUMNNO Carácter 06
NOMBRES Carácter 20
APELLIDOS Carácter 30
DNI Carácter 08
TELEFONO Carácter 06
F_NACIMIENTO Fecha 08



66



Ing. Juan Carlos Palomino Quichca
CODIGO_ESPECIALIDAD Carácter 02
SEMESTRE Carácter 01
SECCION Carácter 01
TURNO Carácter 01
ANO_ACADEMICO Carácter 04
PERIODO Carácter 01
Nota: Indexar por el campo Codigo_Alumno con el nombre Codigo_Alu tipo de índice
principal
Tabla: Especialidades_C2N
Nombre de campo Tipo Ancho
CODIGO_ESPECIALIDAD Carácter 02
NOMBRE_ESPECIALIDAD Carácter 30

Nota: Indexar por el campo Codigo_Especialidad con el nombre Codigo_Esp tipo de
índice principal
Tabla: Datos_Cursos_C2N
Nombre de campo Tipo Ancho
CODIGO_CURSO Carácter 06
CODIGO_PROFESOR Carácter 06
NOMBRE_CURSO Carácter 30
CODIGO_ESPECIALIDAD Carácter 02
SEMESTRE Carácter 01
TURNO Carácter 01
ANO_ACADEMICO Carácter 04
PERIODO Carácter 01
HORAS_SEMANALES Carácter 02



67



Ing. Juan Carlos Palomino Quichca

Nota: Indexar por el campo Codigo_Curso con el nombre Codigo_Cur tipo de índice
principal
Tabla: Datos_Profesores_C2N
Nombre de campo Tipo Ancho
CODIGO_PROFESOR Carácter 06
NOMBRES Carácter 20
APELLIDOS Carácter 30
DNI Carácter 08
TELEFONO Carácter 10
F_NACIMIENTO Fecha 08
ESPECIALIDAD Carácter 30
DIRECCION Carácter 30
HORAS_SEMALES Carácter 02

Nota: Indexar por el campo Codigo_Pro con el nombre Codigo_Pro tipo de índice
principal
Tabla: Notas_Alumnos_C2N
Nombre de campo Tipo Ancho
CODIGO_ALUMNO Carácter 06
CODIGO_CURSO Carácter 06
CODIGO_ESPECIALIDAD Carácter 02
SEMESTRE Carácter 01
SECCION Carácter 01
TURNO Carácter 01
ANO_ACADEMICO Carácter 04
PERIODO Carácter 01



68



Ing. Juan Carlos Palomino Quichca
NOTA_U1 Numérico 02
NOTA_U2 Numérico 02
NOTA_U3 Numérico 02
NOTA_U4 Numérico 02
PROMEDIO_FINAL Numérico 02




69



Ing. Juan Carlos Palomino Quichca
Enlazar controles Textbox a los campos de una tabla de datos
 ControlSource (Propiedad). Especifica el origen de datos del que depende un objeto.
Sintaxis
Objeto.ControlSource[ = cNombre]
El siguiente ejemplo permite ingresar nuevos registros dentro de la tabla especialidades.
 Como primer paso tendrá que abrir un nuevo formulario.
 Seguidamente tendrá que enlazar el formulario con la tabla de datos Especialidades, para lo
cual realice un clic con el botón contrario sobre el formulario y seleccione la opción Entorno
de datos.

En la ventana Agregar tabla o vista, seleccione la tabla Especialidades y pulse el botón
Agregar



70



Ing. Juan Carlos Palomino Quichca

Fíjese la ventana Entorno de datos, deberá de mostrar la tabla agregada, en este caso
Especialidades_c2n

Cierre solo esta ventana, para regresar al formulario.


 Como siguiente paso, diseñe el formulario de tal forma que quede igual al siguiente diseño.
Seleccione la tabla, y en la ventana de
propiedades, búsque la propiedad
BufferModeOverriden y cambie al valor
5 (Almacenamiento optimista)



71



Ing. Juan Carlos Palomino Quichca

 Seguidamente enlace los controles TextBox, a los campos de la tabla de datos:
Control Propiedad Valor
Text1 Name TxtCodigo_Especialidad
ControlSource Especialidades_C2N.Codigo_Especialidad
MaxLength 2
InputMask 99
Text2 Name TxtNombre_Especialidad
ControlSource Especialidades_C2N.Nombre_Especialidad
MaxLength 30
 Escriba el código del formulario




72



Ing. Juan Carlos Palomino Quichca




 Ejecute el formulario.



73



Ing. Juan Carlos Palomino Quichca
Seleccione el
botón nuevo,
para agregar un
nuevo registro

 Ingrese los datos de la especialidad, y pulse el botón Grabar, en el caso de que desee
grabar los datos ingresados, o el botón Cancelar en el caso de que no desee grabar los
datos.
Datos Grabados







74



Ing. Juan Carlos Palomino Quichca
Enlazar cuadro de lista y listas Desplegables a datos
Si se desea enlazar un cuadro de lista a una tabla de datos, utilizar las siguientes
propiedades.
 ControlSource. Especifica el origen de datos del que depende un objeto. Está
disponible en tiempo de diseño y en tiempo de ejecución.
Sintaxis
Objeto.ControlSource[ = cNombre]
 RowSourceType. Especifica el tipo de origen para los valores de un control.
Disponible en tiempo de diseño y en tiempo de ejecución.
Sintaxis
Control.RowSourceType[ = nOrigen]
Valores
NOrigen

Los valores para la propiedad RowSourceType son:

Valor Descripción
0 (Predeterminado) Ninguno. Cuando se utiliza el valor predeterminado, rellene la
lista en tiempo de ejecución utilizando los métodos AddItem o AddListItem.
1 Valor. Relleno por una lista delimitada por comas.
2 Alias. Utilice la propiedad ColumnCount para seleccionar campos de la tabla.
3 Instrucción SQL. Un comando SELECT de SQL que crea un cursor o una tabla.
4 Consulta (.qpr). Especifica un nombre de archivo con una extensión .qpr.
5 Matriz. Establece las propiedades de columna para mostrar varias dimensiones.



75



Ing. Juan Carlos Palomino Quichca
6 Campos. Una lista de campos delimitada por comas. Los campos pueden llevar
delante un punto y el alias de tabla.
7 Archivos. La lista se rellena desde el directorio actual. Especifique una
estructura de archivo (como un *.dbf o *.txt) u ocúltelo en la propiedad
RowSource.
8 Estructura. Campos de la tabla especificada en RowSource.
Tenga en cuenta que cuando RowSource Type está establecido a 8, si la
propiedad RowSource está vacía, se usa la tabla seleccionada como
fuente para los valores del control ComboBox o ListBox. En caso
contrario, la propiedad RowSource especifica el alias de la tabla, el
nombre de la tabla o el nombre de la base de datos usada como fuente
para los valores del control ComboBox o ListBox.

 RowSource. Especifica el origen de los valores en un control ComboBox o ListBox.
Disponible en tiempo de diseño y en tiempo de ejecución.
El origen de los valores puede ser una lista delimitada por comas que contenga
valores, una tabla, una instrucción SQL, una consulta, una matriz.
Puede utilizar RowSource para especificar múltiples columnas para un control
ComboBox o ListBox en tiempo de diseño. Para especificar múltiples columnas,
establezca RowSourceType como 1 (Valor) y especifique las columnas (separadas
por una coma) de la siguiente manera:
Col1Fila1,Col2Fila1,Col1Fila2,Col2Fila2,,Col2Fila3
Para especificar un alias para la tabla que contiene las columnas, utilice la siguiente
sintaxis:
Tabla.Campo1,Tabla.Campo2,etc



76



Ing. Juan Carlos Palomino Quichca
Los valores que especifique llenan el control, por filas, hasta el número de columnas
especificado por la propiedad ColumnCount.
 ColumnCount. Especifica el número de objetos Column en un control ComboBox o
ListBox. Para un cuadro combinado o un cuadro de lista, está disponible en tiempo
de diseño y en tiempo de ejecución.
 BoundColumn. Determina qué columna de un control ListBox o ComboBox de varias
columnas depende de la propiedad Value del control. Está disponible en tiempo de
diseño y en tiempo de ejecución.Utilice BoundColumn cuando el control ListBox o el
ComboBox tenga múltiples columnas y cuando desee almacenar datos en una
columna que no sea la primera en la propiedad Value del control.
Sintaxis
Control.BoundColumn[ = nColumna]

Ejercicio de aplicación
El siguiente formulario, permite ingresar nuevos registros dentro de la tabla de datos
Datos_Alumnos.
Para el caso de las especialidades se utilizará una lista desplegable, enlazada a la
tabla especialidades, la cual mostrará las diferentes especialidades que se
encuentran en dicha tabla.




77



Ing. Juan Carlos Palomino Quichca
Desarrollo
 Abra un nuevo formulario y en entorno de datos, agregue las siguientes tablas:

 Diseñe el formulario igual al siguiente diseño.


 Enlazar los cuadros de textos a los campos de la tabla Datos_Alumnos_C2N.
Control Propiedad Valor
TxtCodigo_Alumno ControlSource datos_alumnos_c2n.codigo_alumno
Maxlength 6
Seleccione la tabla datos_Alumnos_C2n, y
en la ventana de propiedades, búsque la
propiedad BufferModeOverriden y
cambie al valor 5 (Almacenamiento
optimista) y de la tabla Especialidades 1



78



Ing. Juan Carlos Palomino Quichca
InputMask 999999
TxtNombres ControlSource datos_alumnos_c2n.nombres
Maxlength 20
TxtApellidos ControlSource datos_alumnos_c2n.apellidos
Maxlength 30
TxtDni ControlSource datos_alumnos_c2n.dni
Maxlength 8
InputMask 99999999
TxtTelefono ControlSource datos_alumnos_c2n.telefono
Maxlength 6
InputMask 999999
Txtf_Nacimiento ControlSource datos_alumnos_c2n.f_nacimiento
Value ={}
Para enlazar las lista desplegable CmbEspecialidad con tabla especialidades
Seleccione el control CmbEspecialidad, cambie las siguientes propiedades
ControlSource Datos_alumnos_c2n.Codigo_especialidad
ColumnCount 2
ColumnWidths 178,73
RowSource especialidades_c2n.Nombre_Especialidad,Codigo_Especialidad
RowSourceType 6 – Campos
BoundColumn 2

Seleccione el control CmbSemestre, cambie las siguientes propiedades
ControlSource Datos_alumnos_c2n.Semestre
ColumnCount 0
RowSource 1,2,3,4,5,6
RowSourceType 1 – Valor
BoundColumn 1



79



Ing. Juan Carlos Palomino Quichca

Seleccione el control CmbSeccion, cambie las siguientes propiedades
ControlSource Datos_alumnos_c2n.Seccion
ColumnCount 0
RowSource A,B,C
RowSourceType 1 – Valor
BoundColumn 1
Cambie las propiedades de las demás listas (CmbTurno, CmbAno, CmbPeriodo)
 Escriba el código del formulario.




80



Ing. Juan Carlos Palomino Quichca





81



Ing. Juan Carlos Palomino Quichca