Está en la página 1de 57

BASES DE DATOS II

M anu al de ejercicios y prácticas

(Versión para fase inicial)

C O N LA C OL AB OR AC IÓN DE

C lau dia Adriana Lóp ez G onzález

1
BASES DE DATOS II
Manual de ejercicios y prácticas
2000. Secretaría de Educación Pública/ Dirección General del Bachillerato

2
ÍNDICE

Presentación........................................................................................................................................................... 5

Sección de ejercicios
1. Técnicas de diseño de sistemas........................................................................................................................ 6
2. Diseño de bases de datos.................................................................................................................................... 6
3. Normalización...................................................................................................................................................... 7
4. Expresiones........................................................................................................................................................... 7
5. Instrucción de apertura y cierre...................................................................................................................... 7
6. Control de pantalla............................................................................................................................................. 7
7. Índices y filtros..................................................................................................................................................... 8
8. Inserción de registros......................................................................................................................................... 9
9. Eliminación de registros.................................................................................................................................... 9
10. Modificación del contenido de los registros............................................................................................... 9
11. Creación de vista............................................................................................................................................... 13
12. Inserción de campos por arrastre.................................................................................................................. 14
13. Inserción de campo por propiedad control source.................................................................................... 15
14. Procedimientos................................................................................................................................................... 17
15. Variables por valor y referencia..................................................................................................................... 18
16. Reporte agrupado por nombre de paciente................................................................................................. 19
17. Reporte agrupado por nombre de tratamiento y uso de variable de reporte..................................... 21

Sección de prácticas
1. Generación de bases de datos........................................................................................................................... 23
2. Uso de variables, expresiones y control de flujo.......................................................................................... 26
3. Manejo de registros............................................................................................................................................ 28
4. Creación del formulario..................................................................................................................................... 30
5. Creación de una pantalla de ayuda.................................................................................................................. 41
6. Enlace de la ayuda en el formulario................................................................................................................ 46
7. Procedimientos..................................................................................................................................................... 48
8. Procedimientos y manejo de variables........................................................................................................... 50
9. Reportes en formularios.................................................................................................................................... 52
10. Etiquetas............................................................................................................................................................. 55

3
4
PRESENTACIÓN

L a capacitación para el trabajo te brinda herramientas para poder desarrollar


procesos de trabajo para un área específica; asimismo, te generará una actitud
positiva hacia el trabajo y a nuestros valores humanos.

Es importante señalar que la Capacitación en Informática te permitirá desarrollar


BASES DE DATOS II
aptitudes, habilidades y destrezas en procesos específicos del área, incorporando
conocimientos teórico-metodológicos.

Este “Manual de ejercicios y prácticas” te apoya en el logro de tus aprendizajes


propuestos en la Guía de Estudios de Bases de Datos II, ya que:

- Se presentan problemas sencillos en forma de ejercicios que consolidan los


aprendizajes de un tema.

- En las prácticas se presenta parte de la solución de la Situación de aprendizaje


planteada en la unidad I, dejándote que resuelvas la parte faltante.

Es así como este manual de ejercicios y prácticas se encuentra dividido en dos


secciones, la sección de ejercicios y la sección de prácticas.

No olvides que el desarrollo del manual te dará los elementos necesarios para
resolver situaciones específicas de trabajo, muy similares a la situación de
aprendizaje presentada.

5
SECCIÓN DE EJERCICIOS

Ejercicio 1. TÉCNICAS DE DISEÑO DE SISTEMAS

Instrucción: Completa el siguiente diagrama entidad-relación correspondiente a nuestra


situación de aprendizaje.

Paciente

Recibe

Tratamientos

Ejercicio 2. DISEÑO DE BASES DE DATOS

Instrucción: A partir del diagrama de entidad-relación realizado en el ejercicio anterior, añade


los campos faltantes a las siguientes tablas.

PACIENTE TRATAMIENTO

RFC CVE TRAT


APLICACIÓN
NOMBRE
APELLIDOS CVEAPL

_____________
RFC
CVE SEXO FECHA
SEXO

CVE SEXO

OBSERVACIONES SEXO

6
Ejercicio 3. NORMALIZACIÓN

Instrucción: Normaliza las tablas resultantes del ejercicio 2. Recuerda que uno de los objetivos
principales de la normalización es evitar la redundancia de datos.

Nota: No es absolutamente necesario generar tablas con un número menor a 3 registros.

Ejercicio 4. EXPRESIONES
Instrucción: Proporciona el resultado de las siguientes expresiones, donde A y D es igual a
True, y B y C es igual a False.

Expresión Resultado
7*5+(2-4)/2
((5+3)*9-2)*10
A AND B
C OR D
A AND D
C OR B
Not B

Ejercicio 5. INSTRUCCIÓN DE APERTURA Y CIERRE

Instrucción: Identifica todos los elementos de apertura y cierre en el programa de la práctica


No. 3.

Ejercicio 6. CONTROL DE LA PANTALLA

Instrucciónes: Para el desarrollo de este punto se creará un formulario.

1. Del Administrador de Proyectos selecciona la pestaña Docs, luego selecciona Formularios


y presiona el botón Nuevo.
2. Se desplegará una ventana de diálogo en la que seleccionarás Nuevo Formulario, lo cual
abrirá una ventana de Modificación de formularios.
3. En el formulario introduciremos los siguientes objetos:

Objeto Símbolo Propiedades Código


Formulario public dato
Etiqueta Name:Descuento

Cuadro de texto Name:Descuento dato=this.value

Botón de Name:Command1 thisform.descuento.value = ""


comando
Caption: Aceptar ? dato

7
Tu formulario puede quedar como sigue:

Nota: Recuerda que para introducir código dentro de algún objeto, es necesario
presionar 2 veces el mismo.

1. Para correr el formulario selecciona el botón (Ejecutar).


2. Introduce un número en la caja de texto y presiona el botón Aceptar. Observa que el dato
se imprime en la ventana del formulario.

Ejercicio 7. ÍNDICES Y FILTROS

Instrucción: Completa el siguiente programa que indexa la tabla aplicación y despliega los
pacientes que hayan recibido el tratamiento T003. Corrobora su funcionamiento
implementandolo en Visual FoxPro.

close databases &&Cierra todas las bases de datos


set path to “ruta”
&&Establece la ruta donde se &&guarda la
Base de Datos
&&Revisa el path de tu BD y &&corrige la línea
open database consultorio exclusive &&Abre la base de datos
use aplicación &&Abre la tabla aplicación en un &&espacio
de memoria
index on _____
set exact off
store “______” to _______
seek clave

if found ( )
display fields ________________
endif

8
Ejercicio 8. INSERCIÓN DE REGISTROS
Instrucción: Termina el siguiente programa que inserta un registro en blanco a la tabla
pacientes e impleméntalo en Visual FoxPro.
close databases &&Cierra todas las bases de datos
set path to «ruta» &&Establece la ruta donde se guarda la
&&Base de Datos
&&Revisa el path de tu BD y corrige la &&línea
open database __________- exclusive &&Abre la base de datos
use ____________ &&Abre la tabla pacientes en un espacio
&&de memoria
________________- &&inserta registro en blanco
browse

Ejercicio 9. ELIMINACIÓN DE REGISTROS


Instrucción: Completa las instrucciones para que el programa funcione correctamente
eliminando el registro que se introdujo en el ejercicio 8. Desarróllalo en Visual FoxPro.
close ______________ &&Cierra todas las bases de datos
set path to «ruta» &&Establece la ruta donde se &&guarda la
Base de Datos
&&Revisa el path de tu BD y &&corrige la línea
open database ___________ exclusive &&Abre la base de datos
use___________
index on rfc to lista1
store “”____________» to nulo
__________ for rfc = nulo
___________ &&Elimina físicamente el registro
browse

Ejercicio 10. MODIFICACIÓN DEL CONTENIDO DE LOS REGISTROS


Instrucción: Llena los espacios en blanco con las instrucciones correctas y elabora el programa
en Visual FoxPro. Este programa localiza y cambia los registros con “M” en el campo sexo por
“m”.
close ______________ &&Cierra todas las bases de datos
set path to «ruta» &&Establece la ruta donde se &&guarda la
Base de Datos
&&Revisa el path de tu BD y &&corrige la línea
open database ___________ exclusive &&Abre la base de datos
sex = ‘m’
use___________
_____________
___________ sexo with sex __________ sexo=»M»
endscan
browse

9
Ejercicio 11. CREACIÓN DE VISTA

Instrucciones: Sigue los puntos que a continuación se te presentan para crear una vista con
las tablas de Pacientes, Aplicación y Tratamientos ordenados por la clave del paciente. A la
vista deberás introducir todos los campos excepto Aplicación.rfc y Tratamientos.clavetrat.

1. Selecciona del Administrador de Proyectos la pestaña Datos, posteriormente la palabra


Vistas locales y luego el botón de Nuevo. Observa que se despliega un cuadro de diálogo
en donde elegirás Nueva Vista y luego Aceptar.
2. Se desplegará otro cuadro de diálogo con los nombres de las tablas, las agregaremos una a
una empezando por Pacientes, luego Aplicación y por último Tratamientos.
3. Al insertar la tabla de Tratamientos se desplegará una ventana de relación de datos,
selecciona relación Derecha y luego presiona Aceptar.
4. Cierra la ventana de Agregar tabla o vista.
5. Inserta después los campos con la opción Agregar a la sección de Campos seleccionados,
quedando como sigue:

6. En la pestaña de Ordenar por seleccionamos el campo de pacientes.rfc.


7. Guarda la vista con el nombre de Consultorio.

10
Ejercicio 12. INSERCIÓN DE CAMPOS POR ARRASTRE

Instrución: Con las siguientes características llena los espacios en blanco del formulario, para
poder así contar con las instrucciones completas. Una vez que tengas completas las instrucciones
síguelas para la implementación del formulario en Visual FoxPro.

Controles Propiedades Código


Etiqueta Caption: Clave
Etiqueta Caption: Tratamientos
Etiqueta Caption: Costo
Cuadro de texto Name: txtclavetrat
ControlSource: Tratamientos.clavetrat
Cuadro de lista Name: Tratamientos Evento click:
RowSource: tratamientos.nombretrat Thisform.refresh
RowSourceType: 6 - Campos
Cuadro de texto Name: txtcosto
ControlSource: Tratamientos.clavetrat
Botón de comando Caption: Salir Evento click:
Thisform.release

1. Del ___________________________ se selecciona la pestaña de Docs, luego la palabra


Formularios y por último el botón _____________. De la pantalla que se despliega se elige
la opción de Nuevo Formulario.
2. De la pantalla de diseño de formulario se selecciona el icono (Entorno de datos). De la
ventana que se despliega seleccionamos la opción ____________, luego el nombre
Tratamientos y finalmente presionamos el botón _____________.
3. Con la ventana de Entorno de datos abierta seleccionamos el campo de Clavetrat y lo
arrastramos dentro del formulario. Verificamos que contenga las propiedades de la tabla.
4. Seleccionamos ahora el campo de costo y lo arrastramos también dentro del formulario.
Verificamos sus propiedades.
5. Seleccionamos el botón de (______________) para crear la etiqueta de Tratamientos.
En la ventana Propiedades seleccionamos Caption para escribir Tratamientos.
6. Seleccionamos el botón (_________________) para crear el campo NombreTrat.
7. Aplicamos las propiedades RowSource con la expresión Tratamientos.Nombretrat y
________________________ con valor 6 – Campos.
8. Ahora insertaremos el código en el evento Click del cuadro de lista para escribir la
instrucción _______________________________________.
9. Seleccionamos el botón (_____________________) para crear el control de Salida del
formulario.
10. De las propiedades de dicho botón seleccionamos Caption para insertar el texto Salida.
11. En el evento click del botón se escribe la instrucción thisform.___________________ para
descargar el formulario de memoria.

11
12. El formulario puede quedar como se muestra a continuación:

Ejercicio 13. INSERCIÓN DE CAMPO POR PROPIEDAD CONTROL SOURCE

Instrución: Con las siguientes características, completa los espacios en blanco para tener
todos los pasos necesarios para la creación del formulario. Una vez completos implementa el
formulario en Visual FoxPro.

Control Propiedades Código


Cuadro combinado Name: RFC Evento _______________:
RowSource: pacientes.rfc Thisform.refresh
__________________: 6 - campos
Style: 2 – Lista desplegable
Etiqueta Caption: Nombre
Cuadro de texto Name: Nombre
ControlSource: Pacientes.nom bre
Etiqueta Caption: Apellidos
Cuadro de texto Name: Apellidos
ControlSource: Pacientes.apellidos
Etiqueta Caption: Dirección
Cuadro de texto Name: Dirección
ControlSource:
Pacientes.dirección

12
1. Del ____________________________ se selecciona la pestaña de Docs, luego la palabra
Formularios y por último el botón _____________. De la pantalla que se despliega se elige
la opción de Nuevo Formulario.
2. De la pantalla de diseño de formulario se selecciona el icono (Entorno de datos). De la
ventana que se despliega seleccionamos la opción ____________, luego el nombre
Tratamientos y finalmente presionamos el botón _____________.
3. Creamos el primer campo seleccionando el botón cuadro combinado.
4. En las propiedades del control seleccionamos RowSource y seleccionamos de la lista
desplegable pacientes.rfc.
5. Luego seleccionamos RowSourceType con opción 6 – campos.
6. Entrando a la ventana de código en el evento click se escribe el código
____________________________.
7. Ahora se crea la etiqueta de Nombre con el icono (______________).
8. Seleccionamos la herramienta (____________________).
9. De las propiedades de este control buscamos ControlSource y seleccionamos de la lista
pacientes.nombre.
10. Repetimos los pasos 6 al 8 para los demás controles.
11. Insertamos el botón de comando, en la propiedad de Caption escribimos Salir y en el evento
click escribimos el código thisform._________________.
12. El formulario podría quedar como a continuación se muestra.

13
Ejercicio 14. PROCEDIMIENTOS
Planteamiento del problema: Se desea hacer un programa que ejecute otros dos llamados
CicloFor y Suma Total, de los cuales el primero da los registros que sean pares, y el segundo
presentará la suma de los costos de la tabla de Tratamientos. Después se debe crear el último
programa que ejecutará a CicloFor y Suma Total respectivamente, sobre la consola de Visual
FoxPro.
Instruciones: Llena los espacios en blanco con el código o rutas correspondientes en los
puntos que se presentan a continuación. Una vez terminado el proceso anterior, sigue paso a
paso las instrucciones para su implementación en Visual FoxPro.
1. Selecciona Código del Administrador de Proyectos y luego la palabra Programas,
posteriormente selecciona el botón Nuevo.
2. Guarda en el subdirectorio de Proyecto consultorio, el primer programa con el nombre de
Ciclofor.prg.
3. Copia el código de este programa:

&&Selecciona los registros pares


do cicloFor &&ejecuta el procedimiento

PROCEDURE cicloFor
close databases
set path to «c:\escribe aquí tu ruta\proyecto consultorio»
open ____________ consultorio exclusive
use pacientes
clear
registro =reccount()
store 2 TO _____________ && Valor inicial
store registro TO _____________ && Valor final
store 2 TO increm && Valor de incremento
for registro=valorinicio to valorfinal step increm
goto registro && Mueve el puntero de registro
display fields nombre,apellidos && Muestra el nombre del paciente
endfor

4. Guarda el código y ejecútalo con el botón Ejecutar.


5. Crea otra ventana de código, siguiendo el paso 1.
6. Guarda la ventana con el nombre de Costo total.
7. Escribe el siguiente código:

do sumatotal

PROCEDURE sumatotal
close databases
set path to «c:\escribe aquí tu ruta\proyecto consultorio»
open database consultorio exclusive
use tratamientos
sum costo to costototal &&Uso de la función sum que totaliza costo
endproc

14
8. Guarda el código y ejecútalo.
9. Crea la tercera ventana de código repitiendo el paso 1.
10. Copia y completa el siguiente código:
DO «c:\__________________________________________\___________________»
___ «c:\__________________________________________\sumatotal.prg»
En este punto es importante que establezcas la ruta que tú mismo elegiste para el
procedimiento y programa sumatotal.
11. Guarda el programa en el subdirectorio Proyecto consultorio y nómbralo como “Ejecutar
programas”.
12. Ejecuta el código.

Ejercicio 15. VARIABLES POR VALOR Y REFERENCIA

Planteamiento del problema: Se realizarán tres programas en los que se utilicen parámetros
por valor o referencia. Los programas a implementar son los siguientes:

• Función que multiplicará los parámetros.


• Programa de paso de parámetros por valor a una función que multiplicará el número por 10.
• Programa de paso de parámetros por referencia a una función que multiplicará el número
por 10.

Instrucciones: A continuación se presentan algunas pistas del proceso a seguir para la


elaboración de los programa. Completa cuando sea necesario, una vez que termines sigue los
pasos para la implementación de los programas en Visual FoxPro.

1. Selecciona del Administrador de Proyectos la pestaña Código y luego la palabra


Programas, posteriormente oprime el botón Nuevo.

2. Copia el siguiente código.

function multiplica
parameter numero
numero= numero* 10
return numero

3. Guarda con el nombre de “multiplicaparámetros.prg” en el subdirectorio de Proyecto


consultorio.

4. Crea otra pantalla de código repitiendo las acciones del paso No. 1.

5. Escribe el siguiente código.

&&Variable de memoria por valor


do ______________

procedure porvalor
clear
set _________ off

15
____ udfparms to value
store 1 to numero

&& El valor de número no cambia cuando termina el procedimiento


@ 2,2 say ‘Valor modificado: ‘ + str(multiplica(número))
@ 4,2 say ‘Valor de numero original: ‘ + str(número)
________________ ‘Datos transferidos por valor’
endproc

6. Guarda el archivo con el nombre de ”Parámetroporvalor.prg” dentro del mismo subdirectorio


del punto 3.

7. Crea otra pantalla de código e inserta las siguientes instrucciones:

&&Variable por referencia


do porreferencia

procedure __________________
________________________________
store 1 to numero

&&El valor de número cambia cuando termina el procedimiento


@ 6,2 say ‘Valor modificado: ‘ + str(multiplica(______________))
@ 8,2 say ‘Valor de número: ‘ + str(________________)
wait window»Datos transmitidos por referencia»
endproc

8. Guarda el programa con el nombre de “Parámetroporreferencia.prg”.

Ejercicio 16. REPORTE AGRUPADO POR NOMBRE DE PACIENTE

Planteamiento del problema: Se desea hacer un reporte con datos agrupados por el nombre
del paciente de la vista de Consultorio con las siguientes características:

- Insertar en la barra de agrupación por nombre de paciente los campos de Nombre y


Apellidos.
- Insertar en la barra de detalles los campos de Nombretrat, Costo y Fecha.
- Crear dos controles de campo para desplegar la Fecha y el número de página en la barra
de pie de página.
Instrución: Completa correctamente los siguientes pasos que te permitirán la generación de
reporte requerido en Visual FoxPro. Una vez terminado, impleméntalo.
1. Antes de iniciar la creación del reporte establece el orden de los datos en la vista de
Consultorio.
2. Abre la vista desde Datos del Administrador de proyectos y selecciona de la sección de
Vistas la palabra Consultorio.
3. Una vez abierto el Diseñador de vistas selecciona la pestaña de Ordenar por.

16
4. Elimina todo lo que contenga Criterios de ordenación, seleccionando el elemento y
presionando el botón Quitar.

5. De la sección de campos seleccionados busca Pacientes.nombre y agrégalo a Criterios de


Ordenación presionando el botón Agregar.

6. Guarda la vista seleccionando (Guardar) y cierra el diseñador.

7. Del _________________________ se selecciona la pestaña de _______________, luego


la palabra ____________ y por último el botón Nuevo del cual se despliega un cuadro de
diálogo en el que seleccionará _________________.

8. Guarda con el nombre de “ReportePacientes.frx” en el subdirectorio de Proyecto Consultorio.

9. Oprime el botón (__________________).

10. Presiona click derecho del mouse sobre la ventana que se abrió y elige la opción Agregar.

11. Del cuadro de diálogo selecciona Vistas, de la lista que se presenta elige Consultorio, después
el botón de ____________ y finalmente Cerrar.

12. Selecciona de la vista uno a uno los campos de Nombretrat, costo y fecha y arrástralos
arriba de la banda de Detalles.

13. Ahora se creará un grupo de datos con el campo de Nombre. Selecciona Agrupar datos...
del menú Informe del cual se desplegará un cuadro de diálogo con el nombre Agrupar
datos.

14. Elige el botón con 3 puntos, la pantalla que se desplegará es el Generador de expresiones.
En la sección de Campos selecciona Consultorio.nombre y presione doble click, se insertará
en el área superior de dicha ventana, por último presiona el botón Aceptar. La pantalla de
Agrupar datos quedará como sigue:

17
15. De la pantalla anterior selecciona el botón de Aceptar y observa dentro del generador de
informes que se han creado dos bandas de agrupación.

16. Inserta los campos de Nombre y Apellidos en este grupo, por medio del control de cuadro
de texto. De la barra de herramientas de reporte selecciona el botón
(_____________________________________).

17. Presiona el botón (________) y dibuja un cuadro arriba de la banda de Encabezado de


grupo.

18. De la opción Expresión elige el botón de 3 puntos y del generador selecciona


Consultorio.Nombre y doble click, presiona Aceptar en ambas pantallas.

19. Inserta el campo de Apellidos de la misma forma. Selecciona el botón (Campo) y dibuja
un cuadro arriba de la banda de Encabezado de grupo al lado derecho del primer campo.

20. De la opción Expresión utiliza el botón de 3 puntos y del generador seleccione


Consultorio.Apellidos y doble click, presiona Aceptar en ambas pantallas.

21. Para ejecutar el reporte selecciona el botón (____________________). Observa los


grupos que se crean cuando un paciente tiene más de 1 tratamiento. Regresa al generador
de reportes presionando el botón (____________________).

22. Inserta en el reporte el número de página y la fecha. De la barra de herramientas de informe,


presiona el botón Campo y dibuje un cuadro arriba de la banda de Pie de página del lado
derecho.

23. Del cuadro que se despliega selecciona de la opción Expresión el botón con los 3 puntos.

24. Del Generador de expresiones en la sección de Variables busca la palabra “_pageno” y da


doble click, presiona Aceptar en ambos cuadros de diálogo.

25. De igual forma crea otro cuadro del lado izquierdo de la banda con el botón de Campo,
selecciona de la opción Expresión el botón con los 3 puntos.

26. Del Generador de Expresiones en la sección de Fecha busca y selecciona la palabra Date(),y
da Aceptar a ambos cuadros de diálogo.

27. Ejecuta el reporte seleccionando el botón de Vista preliminar, ve al final de la hoja del
reporte y observa la fecha del sistema y el número de página ya insertados.

28. Crea un título con el texto “Reporte por pacientes”. Describe los pasos para crearlo.

29. Guarda el reporte generado.

18
Ejercicio 17. REPORTE AGRUPADO POR NOMBRE DE TRATAMIENTO
Y USO DE VARIABLE DE REPORTE
Instrucciones: Desarrolla un reporte en el que se agrupe el campo de nombre de tratamientos.
Los datos que se desplegarán son rfc, nombre, apellidos, teléfono de la tabla de Pacientes; fecha
de la tabla de Aplicación y nombretrat, costo de la tabla de Tratamientos. Inserta una variable
al reporte aplicando el IVA al costo. Para la correcta implementación en Visual FoxPro del
reporte requerido, llena todos los espacios en blanco de los pasos a seguir para su realización
y después síguelos dentro del paquete.

1. Crea primero el origen de los datos por medio de una vista.


2. Selecciona del __________________________, la pestaña de ______________.
3. Elige la palabra Vistas y luego el botón ___________. De la pantalla que se despliega
selecciona la opción de Nueva vista.
4. Una vez abierto el Diseñador de vistas, selecciona las tablas Pacientes, Aplicación y
Tratamientos, respectivamente. Para el cuadro de diálogo de Condición de combinación
selecciona la opción Derecha y luego el botón Aceptar. Cierra el otro cuadro de diálogo
también.
5. Utiliza los campos ____, _________, __________, __________ de la tabla de Pacientes y
envíalos a la sección de Campos seleccionados.
6. De igual manera harás con los campos de _______ de la tabla Aplicación y ______________,
_________ de la tabla de Tratamientos.
7. Elige la pestaña de OrdenarPor y de la sección ____________________selecciona el campo
de Nombretrat de la tabla ______________ y envíalo a la sección de ______________.
8. Guarda la vista con el nombre de “Vista Tratamientos”.
9. Para crear el reporte, del _______________ se selecciona la pestaña de _________________,
luego la palabra _____________ y por último el botón _________ del cual se despliega un
cuadro de diálogo en el que seleccionará Nuevo informe.
10. Guarda con el nombre de “ReportePacientes.frx” en el subdirectorio de Proyecto Consultorio.

11. Presiona el botón (_________________).

12. Da click derecho sobre la ventana que se abrió y elige la opción Agregar.
13. Del cuadro de diálogo, selecciona ____________ de la lista que se presenta elige Vista
Tratamientos, posteriormente seleccionamos los botones _____________ y Cerrar.
14. De la vista selecciona uno a uno los campos de rfc, nombre, apellidos y fecha y arrástralos
arriba de la banda de Detalles.
15. Crea un grupo de datos con el campo de nombre de tratamientos. Selecciona Agrupar
datos... del menú Informe del cual se desplegará un cuadro de diálogo con el nombre
Agrupar datos.

19
16. Utiliza el botón con 3 puntos, la pantalla que se desplegará es el _______________________.
En la sección de Campos selecciona Tratamientos.nombretrar y presiona doble click, se
insertará en el área superior de dicha ventana, por último presiona el botón de Aceptar
dos veces.

17. Una vez creada la banda de agrupamiento por nombre de tratamiento inserta el campo de
nombretrat por medio de la opción de entorno de datos.

18. Añade a la función Upper para que el texto se despliegue en mayúsculas quedando la
expresión como sigue: ___________________________________.

19. Para insertar el campo de IVA, selecciona Variables del menú ______________.

20. Del cuadro de diálogo que se despliega en la sección de Variables escribe IVA.

21. En la sección de Almacenar valor selecciona el botón con 3 puntos para lo cual se desplegará
el cuadro de diálogo de Generador de expresiones.

22. La expresión queda como sigue ______________________. Presiona Aceptar dos veces.

23. Para insertar la variable al reporte de la barra de herramientas de reportes, selecciona el


botón (_______________________________________).

24. Presiona el botón (_______) y dibuja un cuadro arriba de la banda de Detalle.

25. De la opción Expresión del cuadro que se despliega, utiliza el botón de 3 puntos y del
generador busca IVA de la sección de ___________ y presiona doble click, de Aceptar dos
pantallas.

26. Para ejecutar el reporte utiliza el botón de Vista preliminar. Observa los grupos que se
crean cuando hay más de un tratamiento. Regresa al generador de reportes presionando el
botón de (Cerrar vista previa).

27. Inserta en el reporte el número de página. De la barra de herramientas de informe, selecciona


el botón Campo y dibuja un cuadro arriba de la banda de Pie de página del lado derecho.

28. Del cuadro que se despliega utiliza la opción Expresión el botón con los 3 puntos.

29. Del Generador de expresiones en la sección de Variables busca la palabra “_pageno” y da


doble click, presiona Aceptar dos veces.

30. Ejecuta el reporte seleccionando el botón de Vista preliminar, ve al final de la hoja del
reporte y verifica el número de página.

31. Inserta un título con el texto “INFORME POR TRATAMIENTO” al reporte en la banda
Título.

32. Para crearlo selecciona el botón ___________________, escribe el texto y da click en otro
lado para aceptarlo.

20
SECCIÓN DE PRÁCTICAS

Práctica 1. GENERACIÓN DE BASES DE DATOS

Objetivo

Al finalizar la práctica el alumno será capaz de generar la base de datos y las tablas
correspondientes a la situación de aprendizaje dada, a través de la aplicación de Visual FoxPro.

Antecedentes

Tener los conocimientos de generación de Bases de Datos Relacionales de la asignatura Bases


de Datos I, así como haber realizado los ejercicios 1-3, mismos que te permitirán establecer la
estructura y relaciones de las tablas necesarias para la creación de la aplicación.

Descripción del problema

Para que puedas identificar estructuras de programas, corrobores la utilización de instrucciones


y comandos, y acceses la base datos a través de un lenguaje de programación, requieres una
herramienta sobre la cual probar y practicar todos los nuevos conocimientos, llámense
instrucciones, comandos o estructuras.

Solución del problema

La herramienta necesaria a utilizar es la base de datos correspondiente al consultorio


odontológico VázquezAguilar y que puedes generar a través del Administrador de Proyectos
de Visual FoxPro como lo desarrollaste en Base de Datos I.

Desarrollo de la solución

1. Abrir la aplicación de Microsoft Visual FoxPro 5.0 que se encuentra en Visual FoxPro
del menú de Programas del botón .
2. Selecciona del menú Archivo el comando Nuevo..., del cual se desplegará la siguiente caja
de diálogo.

21
3. Selecciona el botón Nuevo archivo y genera una nueva carpeta llamada Proyecto
Consultorio en la cual guardarás tu proyecto con el nombre de CONSULTORIO.

4. Elige la pestaña Datos, verifica que esté seleccionada la opción Bases de Datos y presiona
el botón Nuevo

5. Verifica que la ruta de acceso sea la misma para el proyecto (carpeta Proyecto Consultorio)
y guarda la base de datos con el nombre CONSULTORIO, lo cual generará la siguiente
pantalla.

22
6. Oprime el botón (Nueva tabla).

7. De la nueva caja de diálogo selecciona el botón Nueva tabla, verifica la ruta y asigna el
nombre Pacientes a la nueva tabla. Lo cual despliega la siguiente caja de diálogo.

8. Introduce los datos correspondientes al anexo 1a.


9. Selecciona la pestaña Índices y verifica con el anexo 1b. las características de las claves.
10. Presiona el botón Aceptar y elige la opción de no introducir registros.
11. Repite los pasos 6-10 para crear la tabla Tratamientos, consulta los anexos 2a. y 2b.
12. Repite los pasos 6-10 para crear la tabla Aplicación, consulta los anexos 3a. y 3b.
13. Establece las ligas seleccionando y arrastrando las llaves indicadas de una tabla a otra para
que quede de la siguiente forma.

14. Recuerda que puedes introducir los registros a las tablas seleccionando el comando
Examinar del menú Ver. Utiliza los anexos 1c, 2c y 3c que se localizan al final del manual.

23
Práctica 2. USO DE VARIABLES, EXPRESIONES Y CONTROL DE FLUJO

Objetivo

El alumno será capaz de manipular la información, a través de un programa, mediante


asignaciones, la implementación de una función y la aplicación de una de las instrucciones más
comunes para el control de flujo.

Antecedentes

Haber realizado la práctica 1, los ejercicios 4 y 5, además de las actividades de aprendizaje


sugeridas en la Guía de estudio de Bases de datos II, unidad 2.

Descripción del problema

Se requiere insertar un comentario que indique si el paciente es niño, adolescente, adulto o


anciano, esto con la finalidad de otorgar algunas facilidades, como descuento a las personas de
la tercera edad, o hacer cálculos de anestesia y tratamientos sugeridos. Dicho comentario se
introducirá en el campo Observaciones en letras mayúsculas.

Solución del problema

Para la solución de este problema se deben analizar todos los registros del campo edad para
determinar si el paciente es niño, adolescente, adulto o anciano. Realizaremos un programa en
el que se utilizará una función de conversión de caracteres para insertar el texto en el campo
Observaciones en mayúsculas.

Desarrollo de la solución

1. Selecciona Programas de la pestaña Código y presione el botón Nuevo. Esto desplegará la


siguiente ventana.

24
2. Introduce el código que a continuación se presenta en la ventana activa. Es importante que
reconozcas que toda la información escrita después de && son comentarios sobre el
funcionamiento del programa y que también debes incluirlos en el programa que estás
generando.

close databases &&Cierra todas las bases de datos


set path to «c:\mis documentos\b_datos2\proyecto consultorio»
&&Establece la ruta donde se &&guarda la Base
de Datos
&&Revisa la ruta de tu BD de &&acuerdo a la
computadora que &&estás usando y corrige la
línea.
open database consultorio exclusive &&Abre la base de datos
use pacientes &&Abre la tabla pacientes en &&un espacio de
memoria

scan &&Inicia ciclo scan


do case && Comienza ciclo
case edad<=12 &&Compara el primer caso
&&cuando edad<=12
store ‘Paciente infantil’ to población &&Almacena
&&en la variable población el
&&texto ‘Paciente infantil’

case edad>=13 and edad<=18 &&Compara el caso &&cuando


edad>=13 y &&edad<=18
store ‘Paciente Adolescente’ to población
&&Almacena en la variable
&&población el texto ‘Paciente
&&Adolescente’

case edad>=19 and edad<=40 &&Compara el caso &&cuando edad>=19


y &&edad<=40
store ‘Paciente Madura’ to población
&&Almacena en la variable &&población
el texto ‘Paciente &&madura’

otherwise &&Último caso


store ‘Paciente de Tercera Edad’ to población
&&Almacena en la variable &&población
el texto ‘Paciente &&anciano’

endcase && Termina ciclo


replace observaciones with Upper(población) &&Reemplaza en el &&campo
Observaciones lo &&que contiene
poblaciones.
endscan &&Termina ciclo scan
browse &&Despliega en una ventana &&los registros de la tabla

25
3. Para revisar el programa elige el comando Compilar del menú Programa.
4. Selecciona el icono de (Ejecutar) para correr el programa.
5. Posteriormente se desplegarán los datos de la tabla Pacientes. Corrobora el contenido de
los registros del campo Observaciones de dicha tabla.
6. Observa cómo queda tu programa una vez que ya lo pudiste ejecutar. Es importante que
tengas mucho cuidado en el proceso de captura del programa, para evitar posibles errores.

Práctica 3. MANEJO DE REGISTROS

Objetivo

El alumno será capaz de manipular la base de datos a través de instrucciones de despliegue de


información, inserción, eliminación y modificación de registros. Además, podrá aplicar funciones
de registros para obtener resultados específicos sobre los datos contenidos en la base de datos.

Antecedentes

Haber realizado la Práctica 2 así como los ejercicios 7 al 10 y las actividades de aprendizaje
sugeridas en la Guía de estudio de Bases de Datos II, unidad 3.

Descripción del problema

Se requiere realizar algunas modificaciones a la tabla de tratamientos, ya que a partir de la


siguiente semana se va a aplicar también el tratamiento de ortodoncia que tendrá un costo
inicial de $ 6,000.00. Por otro lado, se desea incrementar el costo de la ortodoncia con pulpotomía
de $ 100.00 a $ 120.00.

Otra modificación que necesita hacerse a la tabla es la eliminación del tratamiento de Placas
parciales acrílico 8, 9, 10 y 11 piezas, ya que por experiencia se puede concluir que tantas
piezas resultan muy pesadas para el acrílico y se aconseja usar otro material.

Finalmente, se desean obtener algunos datos estadísticos que nos permitan saber los costos
mayor y menor que se cobran por tratamiento, el promedio de costos de los diferentes
tratamientos que se realizan y de cuántos tratamientos se dispone después de haber realizado
las modificaciones.

Solución del problema

Para poder resolver el problema se requiere de la manipulación de los registros de la tabla


Tratamientos. Las operaciones a aplicar son la inserción para un nuevo tratamiento, la
modificación para cambiar el costo del tratamiento especificado, la eliminación física del registro
que ya no se va a utilizar y finalmente la aplicación de funciones de registro para sacar todos
los datos estadísticos solicitados.

26
Desarrollo de la solución

1. Del Administrador de Proyectos selecciona la pestaña de Código y presiona el botón de


Nuevo.

2. Para la ventana de código nuevo que se abre escribe el siguiente código.

close databases &&Cierra todas las bases de datos


set path to «ruta en donde se encuentra tu base de datos»
&&Establece la ruta donde se
&&guarda la Base de Datos
&&Revisa el path de tu BD y &&corrige la
línea
open database consultorio exclusive &&Abre la base de datos
use tratamientos &&Abre la tabla tratamientos en
&&un espacio de memoria

&&Inserta registro
insert into tratamientos ( clavetrat,nombretrat,costo) ;
values («T034»,»Ortodoncia»,6000.00)
browse

&&Reemplaza costo
replace costo with 120.00 while ;
nombretrat=ltrim(«ENDODONCIA PULPOTOMÍA»)
browse

&&borra registro
delete for clavetrat=»T023"
pack
browse

set talk on
Calculate min(costo)
Calculate max(costo),avg(costo)
Count for clavetrat to cuenta
?
wait window ‘El número de tratamientos que se manejan son’ ;
+ str(cuenta)

3. Compila el código y ejecútalo.

27
Práctica 4. CREACIÓN DEL FORMULARIO

Objetivo

El alumno implementará una pantalla de entrada-salida del sistema, mediante la utilización de


formularios, vistas, eventos y manejo de registros, con la finalidad de que sea capaz de crear la
interface del sistema con el usuario integrando así los temas vistas en la unidades I - IV.

Antecedentes

Haber realizado las prácticas 1-3 y haber resuelto los ejercicios 11 al 13, que te permitirán
entender los elementos que conforman un formulario.

Descripción del problema

Se requiere una pantalla que permita al usuario el acceso a la base de datos para consultar su
información, insertar registros nuevos a las tablas de pacientes y aplicaciones, modificar de la
información de los registros e incluso, para borrar registros cuando ya no se utilicen.

Solución del problema

A través del Generador de Formularios se creará un formulario que despliegue la información


de una vista que permitirá conjuntar las tablas de pacientes, tratamientos y aplicación. Para
ello se insertarán cuatro botones que permitirán realizar las acciones (Nuevo, Modificar,
Eliminar y Guardar) para el manejo de los registros. Además se hará uso de otros botones que
posibiliten el movimiento entre los registros y finalmente uno más de Salida del formulario.

Desarrollo de la solución

1. Del Administrador de proyectos ,selecciona la pestaña de Docs, luego la palabra Formularios


y por último el botón Nuevo. De la pantalla que se despliega elige la opción de Nuevo
Formulario.

2. Guarda el formulario con el nombre de Consultorio.scx en el subdirectorio de Proyecto


consultorio.

3. De la pantalla de diseño de formulario se selecciona el icono (Entorno de datos), de la


ventana que se presenta selecciona Vistas y por último Consultorio que es el nombre de la
vista.

4. Selecciona los campos del cuadro de Consultorio y arrástralos encima del formulario, se
introduce una etiqueta y cuadro de texto por cada campo. Acomódalos como la siguiente
pantalla:

28
´

Nota: Las flechas indican que los cuadros de texto de sexo y nombretrat van encima de los
cuadros de lista.

5. Para presentar las propiedades de cada control selecciónalo y presiona click en el botón
(Propiedades) o click derecho.

Nota: Elimina de todos los nombres de los controles las iniciales txt. Para establecer la propiedad
de control source selecciona Fx o la lista desplegable de dicha opción.

6. Establece las siguientes propiedades y su código a los controles:

Control Propiedades Código


Form Caption: Consultorio Evento Activate:
Name : Consultorio set exclusive off
WhatsThisButton: T- select consultorio
Verdadero thisform.refresh
WhatsThisHelp: T -
Verdadero public bandera, banderaclave, band_mod,
WhatThisHelpID: 1 banderacosto, inserta
private costo

bandera = 0
banderaclave = 0
band_mod = 0
banderacosto = 0
inserta = 0

29
Control Propiedades Código
CveAplicacion ControlSource:
consultorio.cveaplicacion
DisabledBackColor:
255,255,255
DisabledForeColor: 255,0,0
Enabled: F – Falso
Name: Cveaplicacion
RFC ControlSource:
consultorio.rfc
DisabledBackColor:
255,255,255
DisabledForeColor: 0,0,255
Enabled: F – Falso
Name: Cveaplicacion
Nombre ControlSource:
consultorio.nombre
Name: Nombre
Apellidos ControlSource:
consultorio.apellidos
Name: Apellidos
Direccion ControlSource:
consultorio.direccion
Name: Direccion
CP ControlSource:
consultorio.cp
Name: CP
Telefono ControlSource:
consultorio.telefono
Name: Telefono
Combosexo Enabled: T – Verdadero
Name: Combosexo
RowSource: F,M
RowSourceType: 1 – Valor
Style: 2 – Lista desplegable
Visible: F - Falso
Sexo ControlSource:
consultorio.sexo
Name: Sexo
Edad ControlSource:
consultorio.edad
Name: Edad
Peso ControlSource:
consultorio. Peso
Name: Peso

30
Control Propiedades Código
Edocivil ControlSource:
consultorio. Edocivil
Name: Edocivil
Observaciones ControlSource:
consultorio. Observaciones
Name: Observaciones
Trat (combo) ControlSource:
tratamientos.nombretrat
Name: Trat
RowSource:
tratamientos.nombretrat
RowSourceType: 6 –
campos
Style: 2 – Lista desplegable
Visible: F - Falso
Nombretrat ControlSource:
consultorio. Nombretrat
Name: Nombretrat
Costo ControlSource:
consultorio. Costo
Enabled: F – Falso
Name: Costo
Fecha ControlSource:
consultorio. Fecha
Name: Fecha

7. Inserta 4 botones al formulario en la parte inferior derecha con las siguientes propiedades
y código:

Nota: El código se introducirá en el evento (método) pulsando un click de cada botón.


Botones Propiedades Código
Inicio Caption: Inicio go top in consultorio
Name: inicio thisform.refresh

Anterior Caption: Anterior if not bof()


Name: anterior skip -1
if bof()
go bottom in consultorio
endif
endif
thisform.refresh
Siguiente Caption: Siguiente if not eof()
Name: siguiente skip 1
if eof()
go top in consultorio
endif
endif
thisform.refresh
Fin Caption: Fin go bottom in consultorio
Name: fin thisform.refresh

31
8. Guarda el formulario en su directorio y ejecuta el formulario seleccionando el botón
(Ejecutar). Con los botones de navegación puedes ir de un registro a otro dependiendo de
los datos que existan en las tablas.
9. Selecciona el botón de (Modificar formulario) para introducir al formulario los siguientes
botones:

Nota: El código se introducirá en el evento (método) con un click de cada botón.

Botones Propiedades Código


Nuevo Caption: Nuevo append blank
Name: nuevo select aplicacion
if reccount() = 0
thisform.cveaplicacion.value = "A001"
banderaclave = 1
else
go bottom
cuenta=recno()+1
if cuenta >= 10
clave = "A0"+alltrim(str(cuenta))
thisform.cveaplicacion.value= clave
else
clave = "A00"+alltrim(str(cuenta))
thisform.cveaplicacion.value= clave
endif
endif
thisform.guardar.visible = .T.
thisform.nombretrat.visible = .F.
thisform.trat.visible = .T.
thisform.Sexo.visible = .F.
thisform.comboSexo.visible = .T.
thisform.rfc.enabled = .T.

respuesta = messagebox ('Nuevo


Tratamiento?',4+32+0,'Nuevo tratamiento para
paciente')
if respuesta = 6
select consultorio
thisform.rfc.enabled = .F.
thisform.rfc.DisabledBackColor =
rgb(255,255,255)
locate for rfc=thisform.rfc.value
if found()

32
Botones Propiedades Código
thisform.cveaplicacion.value = clave
thisform.nombre.value = nombre
thisform.apellidos.value = apellidos
thisform.direccion.value = direccion
thisform.cp.value = cp
thisform.telefono.value = telefono
thisform.combosexo.value = sexo
thisform.edad.value = edad
thisform.peso.value = peso
thisform.edocivil.value = edocivil
thisform.observaciones.value =
observaciones
thisform.costo.value = 0
thisform.fecha.value = " "
inserta = 1
endif
else
bandera = 1
endif
thisform.refresh

Guardar Caption: Guardar local clave


(Guarda los Name: Guardar
datos de Visible: F - Falso && toma los datos de formulario y los inserta en la
Nuevo y pacientes (and band_mod = 0)
Modificar) if thisform.rfc.value <> " " and bandera=1 and
band_mod = 0
insert into pacientes(rfc,apellidos,nombre,
direccion,cp,telefono,sexo,;

edad,peso,edocivil,observaciones);
values
(thisform.rfc.value,thisform.apellidos.value,;

thisform.nombre.value,thisform.direccion.
value,;
thisform.cp.value,thisform.telefono.value,;
thisform.combosexo.value,thisform.edad.value,;
thisform.peso.value,thisform.edocivil.value,;
thisform.observaciones.value)

&& toma el nombre del tratamiento e inserta en la


tabla de aplicación clave de aplicación
&& rfc, tratamiento y fecha

33
Botones Propiedades Código
&& toma el nombre del tratamiento e inserta en la
tabla de aplicación clave de aplicación
&& rfc, tratamiento y fecha

&&Si el registro es el primero se ejecuta un if


if banderaclave = 1
&&Selecciona clave de tratamientos
select tratamientos
&&set index to nomb.idx
locate for alltrim(nombretrat) =
alltrim(thisform.trat.value)
if found()
clave = clavetrat
endif
&& Inserta los campos de la tabla de aplicación en el
primer registro
insert into aplicacion(cveaplicacion,
rfc,clavetrat,fecha);
values (thisform.cveaplicacion.value
,thisform.rfc.value,;

clave,thisform.fecha.value)
else
&&Selecciona clave de tratamientos
select tratamientos
locate for alltrim(nombretrat) =
alltrim(thisform.trat.value)
if found()
clave = clavetrat
endif

&& Inserta los campos de la tabla de aplicación


insert into aplicacion(cveaplicacion,rfc,
clavetrat,fecha);
values (thisform.cveaplicacion.value,
thisform.rfc.value,;
clave,thisform.fecha.value)
endif
wait window "Datos actualizados" nowait
thisform.guardar.visible = .F.
thisform.trat.visible = .F.
thisform.nombretrat.visible = .T.
thisform.rfc.enabled = .F.
bandera = 0
endif

34
Botones Propiedades Código
&&Inserta nuevos datos solo en aplicacion si ya
existen los datos del paciente
&&en la tabla pacientes

if thisform.rfc.value <> " " and inserta = 1


select tratamientos
locate for alltrim(nombretrat)= alltrim
(thisform.trat.value)
if found()
clave = clavetrat
endif

&& Inserta los campos de la tabla de aplicación


insert into aplicacion(cveaplicacion,rfc,
clavetrat,fecha);
values (thisform.cveaplicacion.value,thisform
.rfc.value,;
clave,thisform.fecha.value)
endif

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&
&&Actualiza los datos de la base de datos

if band_mod = 1
if thisform.trat.value = "SIN
TRATAMIENTO"
wait window "No hay tratamiento"
nowait
else
select aplicacion
locate for cveaplicacion = thisform.
cveaplicacion.value
if found()
select pacientes
replace apellidos with thisform.
apellidos.value;
,nombre with thisform.nombre.
value,direccion with thisform.direccion.value;
,cp with thisform.cp.value,
telefono with thisform.telefono.value;
,sexo with thisform.combosexo.
value,edad with thisform.edad.value;
,peso with thisform.peso.value
,edocivil with thisform.edocivil.value;
,observaciones with thisform.
observaciones.value

35
Botones Propiedades Código
&&Selecciona dato de
tratamientos
select tratamientos
locate for alltrim(nombretrat)
=alltrim(thisform.trat.value)
if found()
clave = clavetrat
endif
&& Actualiza la tabla aplicacion
select aplicacion
if rfc <> thisform.rfc.value or
clavetrat <> clave or fecha <> thisform.fecha.value
replace rfc with thisform.
rfc.value,clavetrat with clave,;
fecha with thisform.fecha.value
endif
wait window "Actualizando
Datos" nowait
endif
endif
thisform.inicio.visible = .T.
thisform.anterior.visible = .T.
thisform.siguiente.visible = .T.
thisform.fin.visible = .T.
thisform.salir.visible = .F.
thisform.guardar.visible = .F.
endif
select Consultorio
use
use consultorio!consultorio in 0
thisform.refresh
Modificar Caption: Modificar && Actualiza los datos de la tabla pacientes
Name: Modificar if alltrim(thisform.nombretrat.value) =
alltrim(nombretrat)
dato = thisform.nombretrat.value
thisform.trat.value = dato
endif

&&Establece el mismo dato en el display de combo


sexo
if alltrim(thisform.sexo.value) = "F" or
alltrim(thisform.sexo.value) = "M"
datosexo = thisform.sexo.value
thisform.combosexo.value = datosexo
endif
select consultorio

36
Botones Propiedades Código
thisform.combosexo.visible = .T.
thisform.sexo.visible = .F.
thisform.trat.visible = .T.
thisform.nombretrat.visible = .F.
thisform.guardar.visible = .T.
thisform.inicio.visible = .F.
thisform.anterior.visible = .F.
thisform.siguiente.visible = .F.
thisform.fin.visible = .F.
thisform.salir.visible = .T.
band_mod = 1
Salir (Nos Caption: Salir &&Muestra los botones de movimiento de archivo
permite Name: salir thisform.inicio.visible = .T.
salir de la Visible: F - Falso thisform.anterior.visible = .T.
opción thisform.siguiente.visible = .T.
modificar) thisform.fin.visible = .T.
thisform.salir.visible = .F.

&&Presenta u oculta los controles de sexo, tratamiento


y guardar
thisform.combosexo.visible = .F.
thisform.sexo.visible = .T.
thisform.trat.visible = .F.
thisform.nombretrat.visible = .T.
thisform.guardar.visible = .F.

if banderacosto = 1
thisform.iva.visible = .F.
thisform.total.visible=.F.
endif
Eliminar Caption: Eliminar wait window "Eliminando registro" nowait
Name: eliminar
&&Elimina registro de aplicacion
select aplicacion
delete from aplicacion where cveaplicacion =
thisform.cveaplicacion.value

&&Elimina registro de pacientes


select pacientes
delete from pacientes where rfc = thisform.rfc.value

&&Elimina los registros marcados con eliminacion


logica
set delete on

37
Botones Propiedades Código
Eliminar Caption: Eliminar &&Ejecución de la vista consultorio para asegurar el
Name: eliminar cambio de los datos
select consultorio
use
use consultorio!consultorio in 0
thisform.refresh
Salir Caption: Salir thisform.release
Name: salirforma

Quedando la pantalla como sigue:

10. Guarda el formulario y ejecútalo con el botón de “Ejecutar”, posteriormente introduce


algunos pacientes y sus tratamientos. Si es posible introduce 2 ó 3 veces a un mismo paciente
con diferentes tratamientos.

38
Práctica 5. CREACIÓN DE UNA PANTALLA DE AYUDA

Objetivo

El alumno desarrollará la tabla de información que contendrá la ayuda del sistema


correspondiente a la pantalla de interface, mediante las herramientas que brinda Visual FoxPro,
con el fin de contar con la información que posteriormente se integrará a la interface.

Antecedentes

Haber realizado las actividades de aprendizaje correspondientes a Diseño de pantallas de ayuda


en línea y anteriores, además de haber resuelto los ejercicios 1-13 y las prácticas 1-4.

Descripción del problema

Un aspecto importante es la integración de ventanas de ayuda al sistema del consultorio, y


como primer paso debes generar todas las pantallas que contengan información del objetivo y
funcionamiento de cada uno de los controles contenidos en el formulario.

Solución del problema

Se creará una tabla libre que contará con 3 campos: uno para la clave de acceso, otro para los
títulos de los elementos de ayuda y el tercero para incluir las descripciones necesarias de los
controles que conforman el formulario.

Desarrollo de la solución

1. Del Administrador de proyectos selecciona Datos, luego la palabra Tablas Libres y


posteriormente el botón Nuevo; de la pantalla que se despliega selecciona Nueva Tabla e
introduce el nombre “Ayuda” en el subdirectorio Proyecto Consultorio del cuadro de diálogo
de Crear, por último selecciona el botón Guardar.

2. Introduce los siguientes campos y sus características.

Nombre campo Tipo Ancho


contextid Numérico 2
topic Carácter 70
details Memo

39
3. Introduce el texto de descripción que corresponde a cada control (botón) del formulario
según se muestra en la siguiente tabla.
Contextid Topics Details
0 Antes de comenzar Antes de comenzar
12 Contenido Contenido

- Introducción
* Formulario de edición de los datos del
Consultorio Vázquez -Aguilar

- Detalles de la pantalla
* Nuevos datos del paciente
* Modificar datos del paciente
* Eliminar datos del paciente

- Reportes
* Reporte agrupado por pacientes
· Reporte agrupado por tratamientos y
costo total
* Etiquetas con datos generales del paciente
0 Introducción Introducción

La pantalla de captura para el Consultorio Vázquez-


Aguilar tiene como objetivo principal organizar toda la
información concerniente a los pacientes y los tratamientos
requeridos.

En esta ayuda se describirán las secciones que


conforman la pantalla de captura
0 Formulario de Formulario de edición de los datos del Consultorio
edición de los datos del Vázquez-Aguilar
Consultorio Vázquez-
Aguilar El presente formulario permite editar los datos de
modo amigable de tal forma que el usuario se familiarice en
cuanto lo empiece a manejar.

Este formulario contiene varias secciones de edición de


datos, fórmulas y reportes que permitirán la interrelación del
usuario y el sistema adecuando funciones de entrada,
modificación y eliminación de los datos. Aplica funciones
matemáticas a los mismos dentro de la pantalla, y los reportes y
etiquetas despliegan la información de manera útil y eficaz.
11 Detalles de la pantalla Detalles de la pantalla

La pantalla de edición de datos Vázquez-Aguilar define


varias secciones por las cuales el usuario puede manipular los
datos e imprimir reportes y etiquetas.

Estas secciones son:


Inserción de datos del paciente
Modificar datos del paciente
Eliminar datos del paciente
Aplicar IVA al costo de un tratamiento

y los reportes como son:


Reporte agrupado por pacientes
Reporte agrupado por tratamientos y costo
total
Etiquetas con datos generales del paciente

40
0 Inserción de datos Inserción de datos del paciente
del paciente
Esta sección se utiliza para capturar los datos generales
de cada paciente y su tratamiento, del cual se asigna
automáticamente una clave consecutiva, este dato no es
modificable.

Para introducir un nuevo paciente dentro de la pantalla


sigue los pasos:

1.- Presiona el botón de Nuevo


2.- Se desplegará un cuadro de diálogo que te
preguntará si el paciente tendrá un
nuevo tratamiento.
3.- Presiona SI y verás como los cuadros de inserción se
limpian para introducir los nuevos datos.

Nota: Es importante que incluyas el RFC, ya que es un


campo principal.
Nota: Introduce el dato del RFC sin equivocaciones, ya
que no se permite modificar dicho dato por ser dato principal de
unión entre tablas.

4.- Presiona el botón Guardar.

---------------------------
Observa también: Modificar datos del paciente,
Eliminar datos del paciente, Aplicar IVA al costo de un
tratamiento.
---------------------------
0 Modificar datos del Modificar datos del paciente
paciente
Esta etapa se utiliza para modifcar algún dato de un
paciente.

Para modificar algún dato o todos, sigue los pasos:

1.- Con los botones para navegar (Inicio, Anterior,


Siguiente, Fin), busca el registro a modificar.
2.- Selecciona el botón de Modificar.
3.- Escribe los nuevos datos en los campos,
dependiendo de cuál dato vaya a cambiar.
Nota: Es importante resaltar que es imposible
modificar el RFC por ser un dato principal.
4.- Terminando de introducir tus nuevos datos presiona
el botón Guardar.

Nota: Si no deseas modificar nada del registro


simplemente presiona el botón de Salir para dejar el modo
Modificar.

---------------------------
Observa también: Inserción de datos, Eliminar datos
del paciente, Aplicar IVA al costo de un tratamiento.
---------------------------

41
0 Eliminar datos del Eliminar datos del paciente
paciente
Esta etapa se usa básicamente para eliminar algún
registro no deseado dentro de la base de datos.

Para eliminar cualquier registro lee los siguientes


pasos:

1.- Con los botones para navegar (Inicio, Anterior,


Siguiente, Fin), busca el registro a eliminar.
2.- Selecciona el botón de Eliminar.

Nota Importante: No es posible recuperar el registro


que se eliminó.

---------------------------
Observa también: Inserción de datos, Modificar datos
del paciente, Aplicar IVA al costo de un tratamiento.
---------------------------
0 Aplicar IVA al Aplicar IVA al costo de un tratamiento
costo de un tratamiento
Esta operación es muy importante en el manejo de los
costos, ya que es posible dar un costo total al cliente.

Para aplicar el IVA a cualquier costo de un paciente


sigue los pasos:

1.- Con los botones para navegar (Inicio, Anterior,


Siguiente, Fin), busca el registro a aplicar la operación IVA.
2.- Selecciona el botón de IVA. Observa que se
despliegan dos cuadros mostrando el valor del costo por el 15%
de IVA y el Gran total.
3.- Para quitar este despliegue selecciona le botón
Aceptar.

Nota: No es posible que los cuadros de despliegue de


los valores numéricos se actualicen si va de un registro a otro,
ya que aún no se programa.

---------------------------
Observa también: Inserción de datos, Modificar datos
del paciente, Eliminar datos del paciente.
---------------------------
10 Reportes Reportes

Los reportes son elementos necesarios que se utilizan


para el análisis de datos y seguimiento de situaciones.

Las etiquetas también son elementos importantes, ya


que pueden utilizarse para etiquetar cualquier objeto con ciertos
datos o características.

42
0 Reporte agrupado Reporte agrupado por pacientes
por pacientes
El reporte agrupado por pacientes despliega los datos
del paciente y todos sus tratamientos. El nombre del pacientes
se resalta con un color azul para determinar el inicio del grupo
de datos.

Para generar este reporte sigue los pasos:

1.- Selecciona el botón reportes. Observa que se


despliega un cuadro de diálgo con el nombre de Informes del
consultorio Vázquez-Aguilar.
2.- Selecciona la opción Reporte por pacientes.
3.- Selecciona el botón de Presentación preliminar para
observar los datos en pantalla o el botón de Impresión si deseas
los datos ya impresos.
4.- Para cerrar esta pantalla selecciona el botón Salir.

---------------------------
Observa también: Reporte agrupado por tratamientos y
costo total, Etiquetas con datos generales del paciente.
---------------------------

0 Reporte agrupado Reporte agrupado por tratamientos y costo total


por tratamientos y
costo total El reporte agrupado por tratamientos y costo total
permite ver los pacientes que pertenecen a cierta agrupación de
tratamiento, además muestra el total de cada grupo.

Para generar este reporte sigue los pasos:

1.- Selecciona el botón reportes. Observa que se


despliega un cuadro de diálgo con el nombre de Informes del
consultorio Vázquez-Aguilar.
2.- Selecciona la opción Reporte por tratamientos y
costo total.
3.- Selecciona el botón de Presentación preliminar para
observar los datos en pantalla o el botón de Impresión si deseas
los datos ya impresos.
4.- Para cerrar esta pantalla selecciona el botón Salir.

---------------------------
Observa también: Reporte por pacientes, Etiquetas con
datos generales del paciente.
---------------------------

43
0 Etiquetas con Etiquetas con datos generales del paciente
datos generales del
paciente Estas etiquetas son importantes para el consultorio, ya
que se utilizarán para etiquetar los expedientes de los pacientes
con sus datos generales.

Para generar este reporte sigue los pasos:

1.- Selecciona el botón reportes. Observa que se


despliega un cuadro de diálgo con el nombre de Informes del
consultorio Vázquez-Aguilar.
2.- Selecciona la opción Etiquetas.
3.- Selecciona el botón de Presentación preliminar para
observar los datos en pantalla o el botón de Impresión si deseas
los datos ya impresos.
4.- Para cerrar esta pantalla selecciona el botón Salir.

---------------------------
Observa también: Reporte por pacientes, Reporte
agrupado por tratamientos y costo total.
---------------------------
0 Help Help Menú

Contenido
Muestra el contenido general de la ayuda.

Introducción
Describe brevemente el uso de la pantalla de
captura del Consultorio Vázquez-Aguilar.

Detalles de la pantalla
Explica el uso general de la pantalla de captura
y las funciones que la conforman.

Reportes
Son informes que permiten visualizar los datos
con ciertas características de agrupación, además de crear
etiquetas que se utilizarán para expedientes.

4. Guarda la tabla con el nombre de Ayuda.dbf en el subdirectorio de Proyecto consultorio.

Práctica 6. ENLACE DE LA AYUDA EN EL FORMULARIO

Objetivo

Al finalizar la práctica el alumno será capaz de enlazar la información de ayuda generada en


tablas libres en la pantalla principal del sistema, mediante las instrucciones correspondientes,
para así proporcionar al usuario una interface funcional y de fácil manejo.

Antecedentes

Haber realizado las prácticas 1-5 y haber resuelto los ejercicios 1 al 13, así como las actividades
de aprendizaje que cubren el tema: Diseño de pantallas de ayuda en línea y otras consideraciones
ergonómicas y estéticas.

44
Descripción del problema

Una vez generada la información que contendrá la ayuda es necesario integrarla al formulario
principal, para que desde éste se ejecute y quede completo.

Solución del problema

En el formulario se agregará un icono de ayuda que al accesarse despliegue una ventana de


Ayuda con la lista de contenido de los temas que se pueden consultar en la ayuda del formulario.
Por otra parte, también se agregará la característica de que al posicionar el cursor sobre alguno
de los elementos de control del formulario y presionar F1 se desplegará la ayuda
correspondiente.

Desarrollo de la solución

1. Abre el formulario de Consultorio, seleccionando Documentos del Administrador de


Proyectos.

2. Inserta un control en el lado superior derecho definido en la tabla siguiente:

Control Propiedades Código


Form Evento Init
Public ayudausuario
ayudausuario = SET("HELP",1)
set path to c:\ establece la ruta de tu
proyecto\proyecto consultorio
set help to Ayuda.dbf
this.setall("HelpContextID",2)
Evento Unload
set help to (ayudausuario)
Imagen Name: Ayuda Evento Click:
Picture: help id this.HelpContextID
c:\vfp\samples\graphi
cs\bmps\fox\help.bm
p

3. Guarda y ejecuta el formulario seleccionando el botón Ejecutar. La Ayuda de Usuario de


Visual FoxPro se descargará para cargar el del programador.

4. Presiona el botón de Ayuda o selecciona la tecla F1.

5. Descarga el formulario y presiona nuevamente F1, la ayuda que se presentará es la de


usuario de Visual Fox Pro.

45
Práctica 7. PROCEDIMIENTOS
Objetivo
Crear un procedimiento que pueda ejecutarse desde un programa independiente, a través del
uso de la programación estructurada y los procedimientos de búsqueda conocidos, para integrar
así nuevas estructuras que permitan la simplificación de la programación.
Antecedentes
Haber realizado las prácticas 1-6 y haber resuelto los ejercicios 1 al 14, así como las actividades
de aprendizaje que cubren el tema 2 de la unidad V.
Descripción del problema
Se desea localizar en la pantalla de consultorio a los pacientes incluidos en la base de datos, a
través de la introducción de su número telefónico, en el caso de no encontrarse se enviará un
mensaje que así lo indique. Esto con la finalidad de realizar búsquedas inmediatas.
Solución del problema
Se creará un formulario con la programación que permita ejecutar el procedimiento de búsqueda.
Este formulario por su parte será llamado desde el formulario de consultorio por medio de un
botón.
Desarrollo de la solución
1. Del Administrador de proyectos selecciona la pestaña de Código, luego la palabra
Programas y por último el botón Nuevo. De la pantalla que se despliega escribe el siguiente
código.
&&Localiza el registro que contenga igual el teléfono
&&de la caja de diálogo de buscar
do busca
Procedure busca
local registro
store alltrim(buscar.telefono.value) to tel
select consultorio
locate for alltrim(telefono) = tel
registro = recno()
if not found( )
wait window «No existe número telefónico» nowait
buscar.telefono.value = « «
else
go registro
consultorio.refresh
buscar.release
endif
return
endproc

46
2. Guarda el programa con el nombre de Buscar.prg en el subdirectorio de Proyecto
consultorio.
3. No ejecutes el código pues será llamado del botón Buscar del formulario del mismo nombre.
Para ello crearemos el formulario que lo ejecute.
4. Del Administrador de proyectos selecciona la pestaña de Documentos, luego la palabra
Formularios y por último el botón Nuevo. De la pantalla que se despliega elige la opción
de Nuevo Formulario.
5. De la pantalla que se generó introduce los siguientes controles:
Controles Propiedades Código
Form Caption: Búsqueda de
paciente por teléfono
Height: 111
Name: Buscar
Width: 310
Etiqueta Caption: Teléfono
Autosize: T – Verdadero
BackStyle: 0 –
Transparente
FontBold: T – Verdadero
Cuadro de Name: Teléfono
texto
Botón de Caption: Buscar Evento click
comando Name: Buscar if thisform.telefono.value = " "
wait window "No hay valor a buscar"
nowait
else
do "c:\ruta donde guardaste tu
programa\buscar.prg"
endif
Botón de Caption: Salir Evento click
comando Name: Salir thisform.release

6. Abre tu formulario de Consultorio seleccionando Documentos, el nombre Consultorio y


luego el botón de Modificar.
7. Inserta un botón con las siguientes propiedades.
Control Propiedades Código
Botón de comando Caption: Buscar do form "c:\ruta donde
Name: buscar guardaste el formulario
Buscar\proyecto consultorio
\ buscar.scx"

8. Guarda y ejecuta el formulario seleccionando el icono “Ejecutar”.


9. Introduce un número telefónico en el cuadro de texto y presiona el botón Buscar, el
formulario del Consultorio te mostrará los datos del paciente que coincidan con el teléfono
buscado.

47
Práctica 8. PROCEDIMIENTOS Y MANEJO DE VARIABLES
POR VALOR Y REFERENCIA

Objetivo

Al finalizar esta práctica el alumno sabrá cómo manejar el paso de variables por valor o referencia
en los procedimientos, mediante el uso de las definiciones e instrucciones correspondientes,
con el fin de aprovechar al máximo las posibilidades que brindan la implementación de
procedimientos.

Antecedentes

Haber realizado las prácticas 1-7 y haber resuelto los ejercicios 1 al 15, así como las actividades
de aprendizaje que cubren el tema 4 de la unidad V.

Descripción del problema

El manejo de costos de la tabla tratamientos no contiene un costo total, es decir, que el número
represente el valor total con un impuesto del 15%. No se desea que los valores de la tabla
cambien, sólo que se represente dicho número en un control de salida.

Solución del problema

Para lograr la aplicación del impuesto del 15% y el despliegue del número en algún control de
salida, utilizaremos el formulario consultorio en el que le insertaremos un cuadro de texto
con la llamada a un procedimiento que despliegue el valor total. Es importante que el costo se
multiplique por 15% y sume, por lo que se utilizará una función que contenga estas instrucciones
y que será llamado por dicho procedimiento.

Desarrollo de la solución

1. Del Administrador de proyectos selecciona la pestaña de Código, luego la palabra


Programas y por último el botón Nuevo.
2. Escriba el siguiente código dentro de la ventana:

&&Programa que envía valores por valor a la función


&&funcioniva
do iva

procedure iva
set path to «c:\mis documentos\let\proyecto consultorio»
set udfparms to value
select consultorio
store consultorio.costo.value to costoiva
costoiva= funcioniva(costoiva)
consultorio.iva.value = costoiva
consultorio.iva.visible = .T.
endproc

3. Guarda con el nombre de IVA.prg dentro del subdirectorio de Proyecto Consultorio.

48
4. Genera una nueva ventana de código. Sigue el paso 1.

5. Escribe el siguiente código en la ventana:

&&Esta función recibirá un parámetro por referencia y lo


&&regresará con un porcentaje extra del 15%

Function funcioniva
parameter costoiva
costoiva = costoiva*1.15
return costoiva
endfunc

6. Guárdalo con el nombre de FunciónIVA.prg dentro del subdirectorio de Proyecto


consultorio.

7. Ahora en la pantalla de consultorio inserta controles que te permitan ejecutar los programas
anteriores.

8. Inserta los siguientes controles con las siguientes características.

Control Propiedades Código


Etiqueta Caption: Total $:
Autosize: T – Verdadero
Name: Total
Visible: F – Falso
Cuadro de texto Enable: F – Falso
Name: iva
Visible: F – Falso
Botón de comando Caption: IVA Evento click:
Name: botonIVA do "c:\escribe tu ruta aqui\iva.prg"
banderacosto = 1
thisform.salir.visible=.T.
thisform.total.visible=.T.
thisform.salir.caption = "Aceptar"

49
La pantalla de Consultorio puede quedar como sigue:

9. Guarda y ejecuta la pantalla Consultorio.

Práctica 9. REPORTES EN FORMULARIOS

Objetivo

Al término de la práctica el alumno será capaz de manipular reportes por medio de controles
de un formulario, desde vista preliminar hasta impresión.

Antecedentes

Haber realizado las prácticas 1-8 y haber resuelto los ejercicios 1 al 16, así como las actividades
de aprendizaje que cubren el tema 2 de la unidad VI.

Descripción del problema

Se debe generar un formulario que maneje todos los reportes que se han creado y permita
desplegarlos en vista preliminar e imprimirlos.

Solución del problema

Se crea un formulario con un cuadro de lista que contenga los nombres de los reportes que se
han creado en ejercicios. Dos botones que representen la vista preliminar e impresión
respectivamente, estos controles tendrán el código necesario que permita el manejo de los
reportes.

50
Desarrollo de la solución

1. Se creará un formulario seleccionando Formularios de la pestaña Documentos del


Administrador de Proyectos. Elige el botón Nuevo y luego el de Nuevo formulario.

2. De la nueva pantalla inserta los siguientes controles:

Controles Propiedades Código


Etiqueta Caption: Lista de reportes
Cuadro de edición Name: Reportes Evento GotFocus:
RowSource: Reporte por thisform.reportes.selected(1)= .T.
pacientes,Reporte por
tratamientos y costo
total,Etiquetas
RowSourceType: 1 - Valor
Etiqueta Caption: Presentación de
reporte
Contenedor
Botón de comando Caption: (Nada) Evento click:
Name: prespreliminar set path to "c:\escribe aquí tu ruta\proyecto
Picture: c:\vfp\samples consultorio"
\graphics\bmps\fox\previ
ew.bmp if thisform.reportes.selected(1) = .T.
report form reportepacientes.frx
preview
else
report form
reportetratamientosycostototal.frx preview
endif
Botón de comando Caption: (Nada) Evento click:
Name: imprimir set path to "c:\mis documentos\let\proyecto
Picture: c:\vfp\samples consultorio"
\graphics\bmps\fox\print.
bmp if thisform.reportes.selected(1) = .T.
report form reportepacientes.frx
to printer prompt
else
report form
reportetratamientosycostototal.frx to printer
prompt
endif
Botón de comando Caption: Salir Evento click:
Name: salir thisform.release

51
Observa que la pantalla queda de la siguiente forma:
´

3. Ejecuta el formulario.

4. Ahora introduce la pantalla anterior al formulario de Consultorio. Selecciona del


Administrador de Proyectos en la pestaña de Documentos la palabra Consultorio y
ábrelo con la tecla Enter.

5. Introduce en la pantalla un control con las siguientes características:

Control Propiedades Código


Botón de comando Caption: Reportes Evento click:
Name: reportes do form "c:\escribe aquí tu
ruta\reportes.scx"

La pantalla puede quedar de la siguiente manera:

6. Guarda el formulario y ejecútalo.

52
Práctica 10. ETIQUETAS
Objetivo
El alumno será capaz de insertar reportes de etiquetas dentro de un formulario, desplegarlo
en vista preliminar y manipularlo para la impresión.
Antecedentes
Haber realizado las prácticas 1-9 y haber resuelto los ejercicios 1 al 17, así como las actividades
de aprendizaje que cubren el tema 3 de la unidad VI.
Descripción del problema
Se desea generar etiquetas tipo 4143 con los datos principales del paciente, tales como: nombre,
apellidos, dirección, CP y si son de México, D.F. La impresión de las etiquetas debe ser de
abajo hacia arriba.
Solución del problema
Se generará la etiqueta sin la ayuda del asistente, por lo que al iniciar el diseño se selecciona el
tipo de la misma para definir el tamaño del área del diseño. En el generador de etiquetas, que
es muy parecido al de reportes, se insertan los campos deseados y se inserta también una
etiqueta con el texto de México, y el nombre de tu estado. Finalmente, hay herramientas que
nos permiten lograr el orden de impresión deseada.
Desarrollo de la solución
1. Se crearán etiquetas seleccionando Etiquetas de la pestaña Documentos del
Administrador de Proyectos. Elige el botón Nuevo y luego el Nuevo etiqueta.
2. Del cuadro de diálogo que se despliega selecciona 4143 como tipo de etiqueta.
3. Selecciona el botón de Entorno de datos y agrega la tabla de Pacientes.
4. Inserta en la barra de detalle los campos: Nombre, Apellidos, Dirección y CP.
5. De la barra de herramientas de diseño de reportes selecciona el control de Etiqueta y da
click abajo del campo CP y escribe el texto “México,D.F.”, con otro click se acepta dicho
texto. La pantalla puede quedar como sigue:

53
6. Ejecuta las etiquetas seleccionando el botón de Vista previa.
Nota: Es importante que tomes en cuenta el orden en que serán impresas las etiquetas. Para
establecerlo selecciona del menú Archivo el comando de Preparar página que contiene la
opción de Orden al imprimir.
7. Guarda el informe con el nombre de “Etiquetaspacientes” en el subdirectorio de Proyecto
Consultorio.
8. Ahora inserta la opción de etiquetas dentro del formulario de Reportes, seleccionándolo de
la pestaña de Documentos.
9. Establece las siguientes variaciones al formulario Reportes.
Control Propiedades Código
Cuadro de RowSource: Reporte por
edición pacientes, Reporte por
tratamientos y costo total,
Etiquetas de pacientes
Botón Vista Evento click:
previa set path to "c:\ escribe tu ruta aquí\proyecto
consultorio "
if thisform.reportes.selected(1) = .T.
report form reportepacientes.frx
preview
else
if thisform.reportes.selected(2) = .T.
report form
reportetratamientosycostototal.frx preview
else
label form
etiquetaspacientes.lbx preview
endif
endif
Botón set path to "c:\mis documentos\escribe tu
Imprimir ruta aquí\proyecto consultorio "
if thisform.reportes.selected(1) = .T.
report form reportepacientes.frx to
printer prompt
else
if thisform.reportes.selected(2) = .T.
report form
reportetratamientosycostototal.frx to printer
prompt
else
label form
etiquetaspacientes.lbx to printer prompt
endif
endif

10. Ejecuta tu formulario y realiza varias pruebas. Recuerda que el formulario de Consultorio
contiene el botón que ejecuta Reportes.

54
ANEXO 1

1a. Estructura Tabla pacientes.

Nombre Tipo Ancho Dec Índice Null


RFC Carácter 13 ­ Princ
Apellidos Carácter 25 ­
Normal
Nombre Carácter 15
Dirección Carácter 30 4
CP Numérico 5 0 4
Teléfono Carácter 15 4
Sexo Carácter(bin) 1 4
Edad Numérico 2 0 4
Peso Numérico 3 2 4
Edo_civil Carácter 10 4
Observaciones Memo 4 4

1b. Registros de pacientes.

Copia los siguientes datos.

Rfc Apellidos Nombre Dirección Cp Teléfono Sexo Edad Peso Edo_civil Observaciones

LUMA680323 LUNA ALICIA CALLEJÓN 1403 56066623 F 3 56 CASADA SIN


MARTÍNEZ DEL GATO COMENTARIOS
VIEJO # 30
JULO560212 JUAREZ OLIVER MANJARES 1230 58126253 M 1 85 SOLTERO PACIENTE DE
LIMÓN # 234 TERCERA EDAD
MOHL9508112 MOLINA LUIS PIRULES 3012 55690036 M 4 22 SOLTERO PACIENTE CON
HERNÁNDEZ GERARDO # 84 TENDENCIA
AGRESIVA CON
ANESTESIA
MAFD690328 MARTÍNEZ DOLORES CALLEJÓN 1402 56912830 F 5 68 SOLTERA PACIENTE
FLORES DEL ZAPOTE MADURA
# 45
JUGF901012 JUÁREZ FERNANDO CALLE 1420 52802526 M 9 0.3 SOLTERO PACIENTE CON
GARCÍA LÓPEZ DIABETES
PORTILLO
# 345
ZALA690327 ZAVALETA ALICIA MIRAMON- 1253 F 3 0.6 CASADA SIN
LUNA TES # 456 COMENTARIOS
ALFM670912 ALFARO MARCO CALLE 13 5262 58269369 M 3 0.7 CASADO ALÉRGICO A LA
FERNÁNDEZ ANTONIO # 70 PENICILINA
MOPC710623 MORALES CAROLINA CALLE 1430 52417222 F 2 0.8 SOLTERA PACIENTE
PÉREZ MIRAMAR HIPOCONDRIACA
# 80
HEHJ961212 HERNÁNDEZ JACINTO AVE. FLORES 1403 55737094 M 4 0.3 SOLTERO SIN
HERNÁNDEZ SECC. 11 COMENTARIOS
ALPO680101 ÁLVAREZ OCTAVIO PRIVADA 1325 56928666 M 3 0.8 CASADO ALÉRGICO AL
PUENTE SAN ANGEL ÁCIDO ACETIL-
AZUL # 20 SALICILICO

55
ANEXO 2

2a. Estructura Tabla tratamientos.

Nombre Tipo Ancho Dec Índice Null


Cve_Trat Carácter 4 ­ Princ
NombTrat Carácter 45 4
Costo Numérico 5 2 4

2b. Registros de tratamientos.

Cve_Trat NombTrat Costo


T000 Sin tratamiento
T001 Endodoncias pulpotomía $100.00
T002 Endodoncias un conducto (dientes) $250.00
T003 Endodoncias tres conductos (molares) $750.00
T004 Coronas de acero cromo $120.00
T005 Profilaxis profunda $150.00
T006 Profilaxis superficial $100.00
T007 Aplicaciones tópicas de fluor $150.00
T008 Blanqueamiento de dientes $3,000.00
T009 Obturación con amalgamas y resinas $100.00
T010 Extracciones piezas temporales $80.00
T011 Extracciones piezas permanentes $100.00
T012 Incrustaciones liga de plata $270.00
T013 Incrustaciones oro $800.00
T014 Incrustaciones porcelana $850.00
T015 Unidad de prótesis fija metal acrílico $400.00
T016 Unidad de prótesis fija metal porcelana $850.00
T017 Unidad de prótesis fija jacket acrílico $220.00
T018 Unidad de prótesis fija jacket metal acrílico $400.00
T019 Unidad de prótesis fija jacket porcelana $850.00
T020 Prótesis removibles metal acrílico (unidad) $200.00
T021 Placas parciales acrílico de 2 a 4 piezas $700.00
T022 Placas parciales acrílico 5,6 y 7 piezas $1,200.00
T023 Placas parciales acrílico 8,9,10 y 11 piezas $1,600.00
T024 Placas parciales porcelana de 2 a 4 piezas $1,800.00
T025 Placas parciales porcelana 5,6 y 7 piezas $3,100.00
T026 Placas parciales porcelana 8,9,10 y 11 piezas $4,900.00
T027 Placas parc. de valplast unilateral $1,800.00
T028 Placas parc. de valplast bilateral $3,600.00
T029 Placas totales acrílico $2,000.00
T030 Placas totales porcelana $4,000.00
T031 Cirugía menor de tercer molar $1,000.00
T032 Radiografía Periatical $60.00
T033 Radiografía oclusal $80.00

56
Anexo 3

3a. Estructura Tabla aplicación.

Nombre Tipo Ancho Dec Índice Null


Cveaplicación Carácter 4 ­ Princ
RFC Carácter 13 ­ Normal
Clavetrat Carácter 4 2 ­ Normal
Fecha Fecha 8 4

3b. Registros de Tratamientos.

Cveaplicación Rfc Clavetrat Fecha


A001 JULO560212 T002 23/12/99
A002 MAFC690328 T001 3/05/00
A003 JULO560212 T003 30/01/00
A004 MOHL950812 T001 12/11/99
A005 MOHL950812 T001 16/02/00

57