C O N LA C OL AB OR AC IÓN DE
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
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
Paciente
Recibe
Tratamientos
PACIENTE TRATAMIENTO
_____________
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.
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
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.
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.
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
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.
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.
11
12. El formulario puede quedar como se muestra a continuación:
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.
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:
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
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.
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:
function multiplica
parameter numero
numero= numero* 10
return numero
4. Crea otra pantalla de código repitiendo las acciones del paso No. 1.
procedure porvalor
clear
set _________ off
15
____ udfparms to value
store 1 to numero
procedure __________________
________________________________
store 1 to numero
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:
16
4. Elimina todo lo que contenga Criterios de ordenación, seleccionando el elemento y
presionando el botón Quitar.
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
(_____________________________________).
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.
23. Del cuadro que se despliega selecciona de la opción Expresión el botón con los 3 puntos.
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.
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.
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.
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).
28. Del cuadro que se despliega utiliza la opción Expresión el botón con los 3 puntos.
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
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
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.
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
Antecedentes
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
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.
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.
Objetivo
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.
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.
26
Desarrollo de la solución
&&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)
27
Práctica 4. CREACIÓN DEL FORMULARIO
Objetivo
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.
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.
Desarrollo de la solución
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.
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:
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:
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
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)
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
clave,thisform.fecha.value)
else
&&Selecciona clave de tratamientos
select tratamientos
locate for alltrim(nombretrat) =
alltrim(thisform.trat.value)
if found()
clave = clavetrat
endif
34
Botones Propiedades Código
&&Inserta nuevos datos solo en aplicacion si ya
existen los datos del paciente
&&en la tabla pacientes
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&
&&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
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.
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
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
38
Práctica 5. CREACIÓN DE UNA PANTALLA DE AYUDA
Objetivo
Antecedentes
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
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
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.
---------------------------
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.
---------------------------
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.
---------------------------
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.
---------------------------
Observa también: Inserción de datos, Modificar datos
del paciente, Eliminar datos del paciente.
---------------------------
10 Reportes Reportes
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.
---------------------------
Observa también: Reporte agrupado por tratamientos y
costo total, Etiquetas con datos generales del paciente.
---------------------------
---------------------------
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.
---------------------------
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.
Objetivo
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.
Desarrollo de la solución
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
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.
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.
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
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
48
4. Genera una nueva ventana de código. Sigue el paso 1.
Function funcioniva
parameter costoiva
costoiva = costoiva*1.15
return costoiva
endfunc
7. Ahora en la pantalla de consultorio inserta controles que te permitan ejecutar los programas
anteriores.
49
La pantalla de Consultorio puede quedar como sigue:
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.
Se debe generar un formulario que maneje todos los reportes que se han creado y permita
desplegarlos en vista preliminar e imprimirlos.
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
51
Observa que la pantalla queda de la siguiente forma:
´
3. Ejecuta el formulario.
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
Rfc Apellidos Nombre Dirección Cp Teléfono Sexo Edad Peso Edo_civil Observaciones
55
ANEXO 2
56
Anexo 3
57