View
4
Download
0
Category
Preview:
Citation preview
6.- INTERFAZ DE USUARIO Y CÓDIGO VBA
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 53 de 197
Una vez construida la base de datos podemos empezar a diseñar el interfaz de usuario
de la aplicación así como el código VBA (Visual Basic para Aplicaciones) asociado a
dicho interfaz. El interfaz de usuario de la aplicación está constituido por una serie de
formularios, que son las diferentes ventanas que ve el usuario cuando hace uso de la
aplicación y con las cuales puede interactuar. Esta interacción se produce a través de los
distintos controles que contiene cada formulario: fichas, botones, cuadros de texto,
cuadros combinados, cuadros de lista, casillas de verificación, etc. Tanto los controles
como los formularios disponen de un conjunto de propiedades (tamaño, color, etc.) y
comportamientos o acciones llamadas métodos (por ejemplo, el método close de un
formulario permite cerrarlo), y además responden a eventos provocados por el usuario
(como por ejemplo, hacer clic sobre un botón) o por el sistema.
Podemos escribir código VBA y asociarlo a un determinado evento, es decir, siempre
que ocurra dicho evento se ejecutará el código VBA que lleva asociado. De esta forma
podemos definir el comportamiento que tendrán los formularios y sus controles, o sea,
podemos controlar en definitiva cómo se comportará la aplicación en su interacción con
los usuarios y con el sistema.
Para crear los formularios y el código VBA de la aplicación utilizaremos Microsoft
Office Access 2003. Este software posee un interfaz de usuario muy amigable que nos
permite llevar a cabo dichas tareas con mucha comodidad. Además, usaremos Access
para construir las consultas, los informes y los gráficos de la aplicación. Las consultas
pueden diseñarse gráficamente o haciendo uso del lenguaje de consulta estructurado
(SQL o Structured Query Language). En cuanto a los informes y los gráficos, se
generan de forma parecida a como se construyen los formularios.
A continuación pasamos a describir uno por uno los formularios que componen la
aplicación. Veremos el aspecto que presenta cada formulario, qué controles incluye,
analizaremos el código VBA más relevante y describiremos las consultas, informes y
gráficos presentes en cada formulario.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 54 de 197
6.1.- Formulario PanelPrincipal El aspecto que presenta el formulario PanelPrincipal es el siguiente:
Figura 6.1.a
Se trata del formulario principal de la aplicación, desde el cual podemos acceder al resto
de los formularios y explorar todas las funcionalidades de la aplicación. Cuando
abrimos la aplicación aparece este formulario.
En la figura 6.1.a podemos ver que en la barra de título aparece el título del formulario:
Panel principal. Para referirnos a este formulario, podemos hacerlo por su nombre
(PanelPrincipal) o bien por su título (Panel principal).
6.1.1.- Controles Vamos a realizar una descripción de cada uno de los controles que posee el formulario
Panel principal, lo cual nos ayudará a comprender el funcionamiento de este
formulario.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 55 de 197
1. Botón de comando BCPfc
Tiene asociada una etiqueta titulada Proyectos Fin de Carrera.
Al hacer clic sobre este botón cerramos el formulario Panel principal y abrimos el
formulario Proyectos Fin de Carrera.
2. Botón de comando BCSesTrib
Tiene asociada una etiqueta titulada Sesiones de Tribunal.
Al hacer clic sobre este botón cerramos el formulario Panel principal y abrimos el
formulario Sesiones de Tribunal.
3. Botón de comando BCProf
Tiene asociada una etiqueta titulada Profesores.
Al hacer clic sobre este botón cerramos el formulario Panel principal y abrimos el
formulario Profesores.
4. Botón de comando BCPanelConfig
Tiene asociada una etiqueta titulada Panel de Configuración.
Al hacer clic sobre este botón cerramos el formulario Panel principal y abrimos el
formulario Panel de Configuración.
5. Botón de comando BCAtras
Está situado en la esquina inferior izquierda del formulario y contiene la imagen de
una flecha de color verde.
Al hacer clic sobre este botón cerramos el formulario Panel principal y regresamos
al formulario que teníamos abierto anteriormente.
6. Botón de comando BCSalir
Está situado en la esquina inferior derecha del formulario y contiene la imagen de
una flecha de color azul apuntando hacia una puerta de salida.
Al hacer clic sobre este botón salimos de la aplicación de base de datos.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 56 de 197
6.1.2.- Código VBA En este apartado citaremos todos los eventos a los cuales hemos asignado código VBA
y explicaremos para qué sirve dicho código.
1. Evento Al bajar una tecla del formulario PanelPrincipal El código asociado a este evento se utiliza para desactivar los métodos abreviados de
teclado de Access. Con esto queremos evitar que al pulsar ciertas teclas se tenga acceso
a comandos u operaciones frecuentes en Access (por ejemplo: si pulsamos ALT+F4
salimos de Access, si pulsamos F12 se abre el cuadro de diálogo Guardar como, etc.).
Pretendemos que el usuario maneje la aplicación utilizando únicamente los controles de
la aplicación y de esta manera poder garantizar su correcto funcionamiento.
2. Evento Al ocurrir un error del formulario PanelPrincipal El código asociado a este evento se utiliza para mostrar un mensaje cuando se produce
un error desconocido.
3. Evento Al hacer clic del botón de comando BCPfc El código asociado a este evento se utiliza para cerrar el formulario Panel principal y
abrir el formulario Proyectos Fin de Carrera.
4. Evento Al hacer clic del botón de comando BCSesTrib El código asociado a este evento se utiliza para cerrar el formulario Panel principal y
abrir el formulario Sesiones de Tribunal.
5. Evento Al hacer clic del botón de comando BCProf El código asociado a este evento se utiliza para cerrar el formulario Panel principal y
abrir el formulario Profesores.
6. Evento Al hacer clic del botón de comando BCPanelConfig El código asociado a este evento se utiliza para cerrar el formulario Panel principal y
abrir el formulario Panel de Configuración.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 57 de 197
7. Evento Al hacer clic del botón de comando BCAtras El código asociado a este evento se utiliza para cerrar el formulario Panel principal y
regresar al formulario que teníamos abierto anteriormente.
8. Evento Al hacer clic del botón de comando BCSalir El código asociado a este evento se utiliza para salir de la aplicación mostrando antes un
mensaje en el que se recuerda al usuario que haga copias de seguridad y compacte la
base de datos periódicamente.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 58 de 197
6.2.- Formulario Profesores El aspecto que presenta el formulario Profesores es el siguiente:
Figura 6.2.a
Este formulario muestra toda la información asociada a los profesores del Departamento
de Organización Industrial y Gestión de Empresas de la Universidad de Sevilla. Los
registros de este formulario proceden de la tabla Profesores de la base de datos y se
muestran de uno en uno.
En la figura 6.2.a podemos ver que en la barra de título aparece el título del formulario:
Profesores. En este caso coinciden el nombre y el título del formulario.
6.2.1.- Controles Vamos a realizar una descripción de cada uno de los controles que posee el formulario
Profesores, lo cual nos ayudará a comprender el funcionamiento de este formulario.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 59 de 197
1. Cuadro de texto CTIdentificador
Tiene asociada una etiqueta titulada Identificador del registro.
Muestra el campo ProfesorID de la tabla Profesores de la base de datos. Este campo
tiene las siguientes propiedades:
Tipo de datos: número secuencial (incrementado de uno a uno) único asignado
automáticamente por la base de datos cada vez que agregamos un nuevo registro
a una tabla. Este tipo de datos recibe el nombre de autonumérico, denominación
que utilizaremos a partir de ahora.
Tamaño del campo: entero largo, o sea, puede almacenar números entre
-2.147.483.648 y 2.147.483.647 (no admite fracciones).
Contiene, por tanto, un identificador del profesor mostrado en el formulario.
Presenta un color de fondo gris claro (semejante al color del formulario) en vez de
blanco (como suele ser habitual en los cuadros de texto), lo cual nos indica que no
podemos modificar el contenido de este cuadro de texto. Por tanto, este cuadro de
texto se encuentra bloqueado.
2. Cuadro de texto CTAp1Profesor
Tiene asociada una etiqueta titulada Primer apellido.
Muestra el campo Ap1Profesor de la tabla Profesores de la base de datos. Este
campo tiene las siguientes propiedades:
Tipo de datos: texto (es decir, texto o combinaciones de texto y números).
Tamaño del campo: el número máximo de caracteres es de 50.
Requerido: sí (es decir, la entrada de datos es obligatoria en este campo).
Permitir longitud cero: no.
Contiene, por tanto, el primer apellido del profesor.
3. Cuadro de texto CTAp2Profesor
Tiene asociada una etiqueta titulada Segundo apellido.
Muestra el campo Ap2Profesor de la tabla Profesores de la base de datos. Este
campo tiene las siguientes propiedades:
Tipo de datos: texto (es decir, texto o combinaciones de texto y números).
Tamaño del campo: el número máximo de caracteres es de 50.
Requerido: no (es decir, la entrada de datos no es obligatoria en este campo).
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 60 de 197
Permitir longitud cero: sí.
Contiene, por tanto, el segundo apellido del profesor.
4. Cuadro combinado CCTratamiento
Está situado justo a la izquierda del cuadro de texto CTNombProfesor, con el cual
comparte la etiqueta titulada Nombre. Un cuadro combinado no es más que un
cuadro de texto que incluye una lista desplegable con posibles valores para ese
cuadro de texto.
Muestra el campo Tratamiento de la tabla Profesores de la base de datos. Este
campo tiene las siguientes propiedades:
Tipo de datos: texto (es decir, texto o combinaciones de texto y números).
Tamaño del campo: el número máximo de caracteres es de 2.
Requerido: sí (es decir, la entrada de datos es obligatoria en este campo).
Permitir longitud cero: no.
Tiene como origen una lista formada por dos valores: “D.” y “Dª”
Recoge, por tanto, si el profesor mostrado en el formulario debe ser tratado como
Don o como Doña.
Está limitado a la lista, es decir, no puede contener ningún valor que no se encuentre
en la lista.
5. Cuadro de texto CTNombProfesor
Esta situado justo a la derecha del cuadro combinado CCTratamiento, con el cual
comparte la etiqueta titulada Nombre.
Muestra el campo NombProfesor de la tabla Profesores de la base de datos. Este
campo tiene las siguientes propiedades:
Tipo de datos: texto (es decir, texto o combinaciones de texto y números).
Tamaño del campo: el número máximo de caracteres es de 50.
Requerido: sí (es decir, la entrada de datos es obligatoria en este campo).
Permitir longitud cero: no.
Contiene, por tanto, el nombre del profesor.
6. Cuadro combinado CCCategoria
Tiene asociada una etiqueta titulada Categoría.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 61 de 197
Muestra el campo CategoriaID de la tabla Profesores de la base de datos. Este
campo tiene las siguientes propiedades:
Tipo de datos: número.
Tamaño del campo: entero largo.
Requerido: sí (es decir, la entrada de datos es obligatoria en este campo).
Tiene como origen la siguiente consulta:
“SELECT Categorias.CategoriaID, Categorias.Categoria FROM Categorias
ORDER BY Categorias.Categoria;”
Esta consulta genera una tabla con dos columnas, que son los campos CategoriaID
y Categoria de la tabla Categorias, y tantas filas como registros contiene la tabla
Categorias. Los valores que aparecen en la lista desplegable del cuadro combinado
son los del campo Categoria mientras que en la tabla Profesores se guardan los
valores del campo CategoriaID debido a que tiene menor tamaño.
Contiene, por tanto, la categoría del profesor mostrado en el formulario.
Está limitado a la lista, es decir, no puede contener ningún valor que no se encuentre
en la lista.
7. Cuadro combinado CCDedicacion
Tiene asociada una etiqueta titulada Dedicación (h/sem).
Muestra el campo Dedicacion de la tabla Profesores de la base de datos. Este campo
tiene las siguientes propiedades:
Tipo de datos: número.
Tamaño del campo: simple, o sea, puede almacenar números entre
-3,402823E38 y -1,401298E-45 para valores negativos, y entre 1,401298E-45 y
3,402823E38 para valores positivos.
Requerido: sí (es decir, la entrada de datos es obligatoria en este campo).
Tiene como origen la tabla Dedicaciones de la base de datos. Por tanto, los valores
que aparecen en la lista desplegable del cuadro combinado son los valores del
campo Dedicacion de la tabla Dedicaciones.
Contiene, por tanto, la dedicación (horas de docencia semanales) del profesor
mostrado en el formulario.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 62 de 197
8. Cuadro de texto CTAntiguedad
Tiene asociada una etiqueta titulada Antigüedad.
Muestra el campo Antiguedad de la tabla Profesores de la base de datos. Este campo
tiene las siguientes propiedades:
Tipo de datos: fecha/hora.
Formato: fecha corta (por ejemplo: 20/05/2005)
Máscara de entrada: 00/00/0000;_
La máscara de entrada sirve para que los usuarios introduzcan en el cuadro de
texto valores que se ajustan a un determinado formato, en este caso el formato de
fecha corta. Usaremos el guión bajo como carácter marcador.
Requerido: sí (es decir, la entrada de datos es obligatoria en este campo).
Contiene, por tanto, la fecha a partir de la cual el profesor mostrado en el formulario
pertenece a su categoría.
9. Cuadro combinado CCGrInv
Tiene asociada una etiqueta titulada Grupo de Investigación.
Muestra el campo GrInvID de la tabla Profesores de la base de datos. Este campo
tiene las siguientes propiedades:
Tipo de datos: número.
Tamaño del campo: entero largo.
Requerido: sí (es decir, la entrada de datos es obligatoria en este campo).
Tiene como origen la siguiente consulta:
“SELECT GruposInvestigacion.GrInvID, GruposInvestigacion.GrInv
FROM GruposInvestigacion ORDER BY GruposInvestigacion.GrInvID;”
Esta consulta genera una tabla con dos columnas, que son los campos GrInvID y
GrInv de la tabla GruposInvestigacion, y tantas filas como registros contiene la tabla
GruposInvestigacion. Los valores que aparecen en la lista desplegable del cuadro
combinado son los del campo GrInv mientras que en la tabla Profesores se guardan
los valores del campo GrInvID debido a que tiene menor tamaño.
Contiene, por tanto, el grupo de investigación al que pertenece el profesor mostrado
en el formulario.
Está limitado a la lista, es decir, no puede contener ningún valor que no se encuentre
en la lista.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 63 de 197
10. Botón de comando BCEditar
Tiene asociada una etiqueta titulada Editar registro.
Al hacer clic sobre este botón desbloqueamos la edición del registro mostrado en el
formulario, es decir, podemos modificar los datos que aparecen en el formulario.
11. Botón de comando BCGuardarReg
Tiene asociada una etiqueta titulada Guardar registro.
Al hacer clic sobre este botón bloqueamos la edición del registro mostrado en el
formulario y se guardan los cambios realizados en dicho registro.
12. Botón de comando BCNuevoReg
Tiene asociada una etiqueta titulada Nuevo registro.
Al hacer clic sobre este botón cerramos el formulario Profesores y abrimos el
formulario Profesores – Nuevo registro.
13. Botón de comando BCEliminar
Tiene asociada una etiqueta titulada Eliminar registro.
Al hacer clic sobre este botón eliminamos el registro mostrado en el formulario.
14. Botón de comando BCBuscar
Tiene asociada una etiqueta titulada Buscar registros.
Al hacer clic sobre este botón abrimos el formulario BuscarProfesores (el título de
este formulario es Buscar registros).
15. Botón de comando BCIrAReg
Tiene asociada una etiqueta titulada Ir a registro.
Al hacer clic sobre este botón abrimos el formulario CuadroProfesores (el título de
este formulario es Ir a registro).
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 64 de 197
16. Botón de comando BCOrdenar
Tiene asociada una etiqueta titulada Ordenar registros.
Al hacer clic sobre este botón abrimos el formulario OrdenarProfesores (el título de
este formulario es Ordenar registros).
17. Botón de comando BCQuitarFiltro
Tiene asociada una etiqueta titulada Quitar filtro u orden.
Al hacer clic sobre este botón quitamos los filtros y ordenaciones existentes en el
formulario. De esta forma, utilizando los botones de desplazamiento y el cuadro de
número de registro, situados en la parte inferior izquierda del formulario, podemos
desplazarnos por todos los registros de la tabla Profesores, los cuales aparecen en el
orden en que han sido introducidos en dicha tabla.
18. Botón de comando BCListProf
Tiene asociada una etiqueta titulada Listado de profesores.
Al hacer clic sobre este botón abrimos el informe Listado de profesores.
19. Botón de comando BCPfcDir
Tiene asociada una etiqueta titulada Nº de PFCs dirigidos según profesor.
Al hacer clic sobre este botón abrimos el formulario PfcTutorGraficos (el título de
este formulario es Configurar gráfico).
20. Botón de comando BCAsisTrib
Tiene asociada una etiqueta titulada Nº de asistencias a tribunales de PFCs según
profesor.
Al hacer clic sobre este botón abrimos el formulario PfcTribunalGraficos (el título
de este formulario es Configurar gráfico).
21. Botón de comando BCTutor
Tiene asociada una etiqueta titulada PFCs como tutor.
Al hacer clic sobre este botón abrimos el formulario Proyectos fin de carrera como
tutor.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 65 de 197
22. Botón de comando BCTribunal
Tiene asociada una etiqueta titulada PFCs como miembro del tribunal.
Al hacer clic sobre este botón abrimos el formulario Proyectos fin de carrera como
miembro del tribunal.
23. Botón de comando BCMostrarRegistros
Tiene asociada una etiqueta titulada Mostrar todos los registros.
Se encuentra siempre desactivado y su presencia se debe a razones puramente
estéticas. Este botón de comando se utiliza en el formulario Profesores – Nuevo
registro para cerrar dicho formulario y abrir el formulario Profesores. Esto dos
formularios cuentan con el mismo aspecto para que, al pasar de uno a otro, no se
note que hemos cambiado de formulario y parezcan un mismo formulario. Por este
motivo se han incluido los mismos controles en ambos formularios, de tal forma que
en cada formulario desactivamos aquellos controles que sólo sirven para el otro
formulario.
24. Botón de comando BCAtras
Está situado en la esquina inferior izquierda del formulario y contiene la imagen de
una flecha de color verde.
Al hacer clic sobre este botón cerramos el formulario Profesores y regresamos al
formulario que teníamos abierto anteriormente.
25. Botón de comando BCCerrar
Está situado en la esquina inferior derecha del formulario y contiene la imagen de
una letra “X” de color gris oscuro.
Al hacer clic sobre este botón cerramos el formulario Profesores y abrimos el
formulario Panel principal.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 66 de 197
6.2.2.- Código VBA En este apartado citaremos todos los eventos a los cuales hemos asignado código VBA
y explicaremos para qué sirve dicho código.
1. Evento Al activar registro del formulario Profesores Este evento se produce cuando el enfoque se desplaza a un registro, haciendo que sea el
registro actual, o cuando el formulario se actualiza o se somete a una nueva consulta.
El código asociado a este evento se utiliza para:
Bloquear la edición del registro mostrado en el formulario, es decir, no podemos
modificar los datos que aparecen en el formulario.
Activar los siguientes botones de comando: BCEditar, BCEliminar, BCBuscar,
BCIrAReg, BCOrdenar, BCQuitarFiltro, BCListProf, BCPfcDir, BCAsisTrib,
BCTutor y BCTribunal.
Desactivar el botón de comando BCGuardarReg.
2. Evento Antes de actualizar del formulario Profesores Este evento se produce antes de que se actualicen los datos de un registro.
El código asociado a este evento se utiliza para:
Impedir que se actualice un registro si se detecta que existe otro registro con el
mismo profesor (nombre y apellidos).
Impedir que se actualice un registro si los cambios realizados en él son incoherentes
con la secuenciación de los tribunales: esto sucede cuando modificamos la categoría
de un profesor y resulta que el campo NumTribunales correspondiente a esa nueva
categoría es menor o igual que el campo ContadorAsistencias perteneciente a dicho
profesor.
3. Evento Después de actualizar del formulario Profesores Este evento se produce después de que se actualicen los datos modificados en un
registro.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 67 de 197
El código asociado a este evento se utiliza para:
Mostrar un mensaje indicando que el registro ha sido actualizado.
Bloquear la edición del registro mostrado en el formulario, es decir, no podemos
modificar los datos que aparecen en el formulario.
Activar los siguientes botones de comando: BCEditar, BCEliminar, BCBuscar,
BCIrAReg, BCOrdenar, BCQuitarFiltro, BCListProf, BCPfcDir, BCAsisTrib,
BCTutor y BCTribunal.
Desactivar el botón de comando BCGuardarReg.
Incorporar el registro a la secuenciación de los tribunales si fuera necesario: esto
sucede cuando modificamos la categoría de un profesor de tal manera que pasa de
no poder ser miembro del tribunal a tener que asistir a los tribunales. El usuario
puede elegir entre situarlo en el primer puesto de la cola o en el último.
Retirar el registro de la secuenciación de los tribunales si fuera necesario: esto
sucede cuando modificamos la categoría de un profesor de tal manera que pasa de
tener que asistir a los tribunales a no poder ser miembro del tribunal.
4. Evento Al Eliminar del formulario Profesores Este evento se produce cuando el usuario hace clic sobre el botón de comando
BCEliminar para eliminar un registro, pero antes de que el registro se elimine
realmente.
El código asociado a este evento se utiliza para mostrar un mensaje al usuario
preguntándole si está seguro de que desea eliminar el registro que ha seleccionado.
5. Evento Al abrir del formulario Profesores Este evento se produce cuando se abre el formulario, pero antes de que se muestre el
primer registro.
El código asociado a este evento se utiliza para que el formulario Profesores muestre el
último registro de la tabla Profesores. Además, si en esta tabla no existiera ningún
registro, se muestra un mensaje explicando tal circunstancia y a continuación se cierra el
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 68 de 197
formulario Profesores y se abre el formulario Profesores – Nuevo registro para que
podamos introducir el primer registro.
6. Evento Al bajar una tecla del formulario Profesores El código asociado a este evento se utiliza para desactivar los métodos abreviados de
teclado de Access. Con esto queremos evitar que al pulsar ciertas teclas se tenga acceso
a comandos u operaciones frecuentes en Access (por ejemplo: si pulsamos ALT+F4
salimos de Access, si pulsamos F12 se abre el cuadro de diálogo Guardar como, etc.).
Pretendemos que el usuario maneje la aplicación utilizando únicamente los controles de
la aplicación y de esta manera poder garantizar su correcto funcionamiento.
7. Evento Al ocurrir un error del formulario Profesores El código asociado a este evento se utiliza para mostrar un mensaje de error cuando se
produce un error desconocido.
8. Evento Al no estar en la lista del cuadro combinado CCDedicacion Este evento se produce cuando el usuario introduce en el componente cuadro de texto
del cuadro combinado un valor que no se encuentra en la lista del cuadro combinado.
El código asociado a este evento se utiliza para añadir dicho valor a la lista del cuadro
combinado si el usuario lo desea.
9. Evento Al hacer clic del botón de comando BCEditar El código asociado a este evento se utiliza para:
Desbloquear la edición del registro mostrado en el formulario, es decir, podemos
modificar los datos que aparecen en el formulario.
Activar el botón de comando BCGuardarReg.
Desactivar los siguientes botones de comando: BCEditar, BCEliminar, BCBuscar,
BCIrAReg, BCOrdenar, BCQuitarFiltro, BCListProf, BCPfcDir, BCAsisTrib,
BCTutor y BCTribunal.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 69 de 197
10. Evento Al hacer clic del botón de comando BCGuardarReg El código asociado a este evento se utiliza para:
Guardar los cambios realizados en el registro que muestra el formulario.
Bloquear la edición del registro mostrado en el formulario, es decir, no podemos
modificar los datos que aparecen en el formulario.
Activar los siguientes botones de comando: BCEditar, BCEliminar, BCBuscar,
BCIrAReg, BCOrdenar, BCQuitarFiltro, BCListProf, BCPfcDir, BCAsisTrib,
BCTutor y BCTribunal.
Desactivar el botón de comando BCGuardarReg.
11. Evento Al hacer clic del botón de comando BCNuevoReg El código asociado a este evento se utiliza para cerrar el formulario Profesores y abrir el
formulario Profesores – Nuevo registro.
12. Evento Al hacer clic del botón de comando BCEliminar El código asociado a este evento se utiliza para eliminar el registro mostrado en el
formulario y mostrar un mensaje confirmando que el registro ha sido eliminado. En el
caso de que dicho registro corresponda a un profesor que se encuentra en la cola de la
secuenciación de los tribunales, el código se encarga también de actualizar las
posiciones de la cola tras la eliminación de dicho profesor.
13. Evento Al hacer clic del botón de comando BCBuscar El código asociado a este evento se utiliza para abrir el formulario BuscarProfesores (el
título de este formulario es Buscar registros).
14. Evento Al hacer clic del botón de comando BCIrAReg El código asociado a este evento se utiliza para abrir el formulario CuadroProfesores (el
título de este formulario es Ir a registro).
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 70 de 197
15. Evento Al hacer clic del botón de comando BCOrdenar El código asociado a este evento se utiliza para abrir el formulario OrdenarProfesores
(el título de este formulario es Ordenar registros).
16. Evento Al hacer clic del botón de comando BCQuitarFiltro El código asociado a este evento se utiliza para quitar los filtros y ordenaciones
existentes en el formulario, sin que cambie el registro mostrado por el formulario.
17. Evento Al hacer clic del botón de comando BCListProf El código asociado a este evento se utiliza para abrir el informe Listado de profesores.
18. Evento Al hacer clic del botón de comando BCPfcDir El código asociado a este evento se utiliza para abrir el formulario PfcTutorGraficos (el
título de este formulario es Configurar gráfico).
19. Evento Al hacer clic del botón de comando BCAsisTrib El código asociado a este evento sirve para abrir el formulario PfcTribunalGraficos (el
título de este formulario es Configurar gráfico).
20. Evento Al hacer clic del botón de comando BCTutor El código asociado a este evento se utiliza para abrir el formulario Proyectos fin de
carrera como tutor.
21. Evento Al hacer clic del botón de comando BCTribunal El código asociado a este evento se utiliza para abrir el formulario Proyectos fin de
carrera como miembro del tribunal.
22. Evento Al hacer clic del botón de comando BCAtras El código asociado a este evento se utiliza para cerrar el formulario Profesores y
regresar al formulario que teníamos abierto anteriormente.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 71 de 197
23. Evento Al hacer clic del botón de comando BCCerrar El código asociado a este evento se utiliza para cerrar el formulario Profesores y abrir el
formulario Panel principal.
6.2.3.- Informes Desde el formulario Profesores podemos abrir el informe ListadoProfesores haciendo
clic sobre el botón de comando BCListProf. Este informe se titula Listado de profesores
y consiste en un listado con todos los profesores del Departamento ordenados según
categoría, dedicación y antigüedad (por este orden de prioridad). De cada profesor se
aporta la siguiente información: nombre y apellidos, categoría, dedicación, antigüedad y
grupo de investigación.
Todas las páginas del informe cuentan con encabezado y pié de página que recogen la
siguiente información: logotipo de la Universidad de Sevilla, nombre del Departamento,
dirección de la Escuela Superior de Ingenieros, número de página y total de páginas del
informe.
Si queremos imprimir el informe tenemos todas las facilidades para ello: podemos
generar una vista previa del mismo, aplicar el zoom, seleccionar la impresora y las
opciones de impresión, configurar el tamaño y la posición del papel así como los
márgenes, etc.
6.2.4.- Gráficos Desde el formulario Profesores podemos generar los siguientes gráficos:
Gráfico que muestra número de proyectos fin de carrera dirigidos según
profesor.
Gráfico que muestra el número de asistencias a tribunales de proyectos fin de
carrera según profesor.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 72 de 197
Haciendo clic sobre el botón de comando BCPfcDir del formulario Profesores abrimos
el formulario PfcTutorGraficos, el cual nos permite configurar el gráfico que mostrará
el número de proyectos fin de carrera dirigidos según profesor. Las opciones de
configuración son las siguientes:
Tipo de gráfico: columna agrupada (gráfico GrafTutoresColAg) o columna
apilada (gráfico GrafTutoresColAp).
Cursos académicos: podemos seleccionar todos los cursos académicos o
solamente aquéllos que nos interesen.
Profesores: podemos seleccionar todos los profesores o solamente aquéllos que
nos interesen.
De igual manera, haciendo clic sobre el botón de comando BCAsisTrib del formulario
Profesores abrimos el formulario PfcTribunalGraficos, el cual nos permite configurar el
gráfico que muestra el número de asistencias a tribunales de proyectos fin de carrera
según profesor. Las opciones de configuración son idénticas a las del gráfico anterior. Si
seleccionamos el gráfico de columna agrupada se abrirá el gráfico GrafTribunalesColAg
y si elegimos el gráfico de columna apilada abriremos el gráfico GrafTribunalesColAp.
Si queremos imprimir alguno de estos gráficos tenemos todas las facilidades para ello:
podemos generar una vista previa del gráfico, aplicar el zoom, seleccionar la impresora
y las opciones de impresión, configurar el tamaño y la posición del papel así como los
márgenes, etc.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 73 de 197
6.3.- Formulario ProfesoresAgregar El aspecto que presenta el formulario ProfesoresAgregar es el siguiente:
Figura 6.3.a
En la figura 6.3.a podemos ver que en la barra de título aparece el título del formulario:
Profesores – Nuevo registro. Para referirnos a este formulario, podemos hacerlo por su
nombre (ProfesoresAgregar) o bien por su título (Profesores – Nuevo registro).
Si comparamos las figuras 6.2.a y 6.3.a podemos apreciar que el formulario Profesores
y el formulario Profesores – Nuevo registro cuentan con el mismo aspecto. Con esto se
pretende que, al pasar de uno a otro, no se note que hemos cambiado de formulario y
parezcan un mismo formulario. Así, se han incluido los mismos controles en ambos
formularios, de tal forma que en cada formulario desactivamos aquellos controles que
sólo sirven para el otro formulario.
El formulario Profesores – Nuevo registro sirve, como su propio nombre indica, para
agregar nuevos registros a la tabla Profesores de la base de datos, es decir, a través de
este formulario daremos de alta a los nuevos profesores.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 74 de 197
6.3.1.- Controles Son los mismos que los del formulario Profesores como ya hemos comentado. Se
encuentran desactivados los siguientes controles: BCBuscar, BCIrAReg, BCOrdenar,
BCQuitarFiltro, BCListProf, BCPfcDir, BCAsisTrib, BCTutor y BCTribunal.
6.3.2.- Código VBA En este apartado citaremos todos los eventos a los cuales hemos asignado código VBA
y explicaremos para qué sirve dicho código.
1. Evento Antes de insertar del formulario ProfesoresAgregar Este evento se produce cuando el usuario escribe el primer carácter de un nuevo
registro, pero antes de que el registro se cree realmente.
El código asociado a este evento se utiliza para activar el botón de comando
BCGuardarReg.
2. Evento Antes de actualizar del formulario ProfesoresAgregar El código asociado a este evento se utiliza para impedir que guardemos un registro si se
detecta que existe otro registro con el mismo profesor (nombre y apellidos).
3. Evento Después de actualizar del formulario ProfesoresAgregar El código asociado a este evento se utiliza para:
Mostrar un mensaje indicando que hemos guardado un nuevo registro.
Bloquear la edición del registro mostrado en el formulario, es decir, no podemos
modificar los datos que aparecen en el formulario.
Activar los siguientes botones de comando: BCEditar, BCNuevoReg y BCEliminar.
Desactivar el botón de comando BCGuardarReg.
Incorporar el nuevo registro a la secuenciación de los tribunales en el caso de que
dicho registro corresponda a un profesor que puede ser miembro del tribunal. El
usuario puede elegir entre situarlo en el primer puesto de la cola o en el último.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 75 de 197
Retirar el nuevo registro de la secuenciación de los tribunales si fuera necesario:
esto sucede cuando modificamos la categoría del nuevo profesor después de haberlo
guardado, de tal manera que pasa de tener que asistir a los tribunales a no poder ser
miembro del tribunal.
4. Evento Al eliminar del formulario ProfesoresAgregar El código asociado a este evento se utiliza para mostrar un mensaje al usuario
preguntándole si está seguro de que desea eliminar el registro que ha seleccionado.
5. Evento Al bajar una tecla del formulario ProfesoresAgregar El código asociado a este evento se utiliza para desactivar los métodos abreviados de
teclado de Access. Con esto queremos evitar que al pulsar ciertas teclas se tenga acceso
a comandos u operaciones frecuentes en Access (por ejemplo: si pulsamos ALT+F4
salimos de Access, si pulsamos F12 se abre el cuadro de diálogo Guardar como, etc.).
Pretendemos que el usuario maneje la aplicación utilizando únicamente los controles de
la aplicación y de esta manera poder garantizar su correcto funcionamiento.
6. Evento Al ocurrir un error del formulario ProfesoresAgregar El código asociado a este evento se utiliza para mostrar un mensaje de error cuando se
produce un error desconocido.
7. Evento Al no estar en la lista del cuadro combinado CCDedicacion Este evento se produce cuando el usuario introduce en el componente cuadro de texto
del cuadro combinado un valor que no se encuentra en la lista del cuadro combinado.
El código asociado a este evento se utiliza para añadir dicho valor a la lista del cuadro
combinado si el usuario lo desea.
8. Evento Al hacer clic del botón de comando BCEditar El código asociado a este evento se utiliza para:
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 76 de 197
Desbloquear la edición del registro mostrado en el formulario, es decir, podemos
modificar los datos que aparecen en el formulario.
Activar el botón de comando BCGuardarReg.
Desactivar los siguientes botones de comando: BCEditar y BCEliminar.
9. Evento Al hacer clic del botón de comando BCGuardarReg El código asociado a este evento se utiliza para:
Mostrar un mensaje indicando si falta por rellenar algún campo requerido.
Guardar el nuevo registro, o los cambios realizados en él si ya había sido guardado
previamente.
Bloquear la edición del registro mostrado en el formulario, es decir, no podemos
modificar los datos que aparecen en el formulario.
Activar los siguientes botones de comando: BCEditar, BCNuevoReg y BCEliminar.
Desactivar el botón de comando BCGuardarReg.
10. Evento Al hacer clic del botón de comando BCNuevoReg El código asociado a este evento se utiliza para cerrar el formulario Profesores – Nuevo
registro y abrirlo de nuevo.
11. Evento Al hacer clic del botón de comando BCEliminar El código asociado a este evento se utiliza para:
Eliminar el registro mostrado en el formulario y mostrar un mensaje indicando que
dicho registro ha sido eliminado.
Actualizar las posiciones de la cola de la secuenciación de los tribunales tras la
eliminación de dicho registro.
Desbloquear la edición del formulario, es decir, podemos introducir datos en los
cuadros de texto y cuadros combinados del formulario.
Desactivar los siguientes botones de comando: BCEditar, BCGuardarReg,
BCNuevoReg y BCEliminar.
12. Evento Al hacer clic del botón de comando BCMostrarRegistros El código asociado a este evento se utiliza para:
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 77 de 197
Cerrar el formulario Profesores – Nuevo registro y abrir el formulario Profesores.
Mostrar un mensaje cuando no sea posible guardar el nuevo registro antes de cerrar
el formulario Profesores – Nuevo registro, debido a que falta por rellenar algún
campo requerido o porque se ha detectado otro registro con el mismo profesor
(nombre y apellidos). Este mensaje pregunta al usuario si desea salir del formulario
Profesores – Nuevo registro sin guardar el nuevo registro o, por el contrario,
prefiere permanecer en dicho formulario para poder introducir las modificaciones
oportunas y guardar dicho registro.
13. Evento Al hacer clic del botón de comando BCAtras El código asociado a este evento se utiliza para:
Cerrar el formulario Profesores – Nuevo registro y regresar al formulario que
teníamos abierto anteriormente.
Mostrar un mensaje cuando no sea posible guardar el nuevo registro antes de cerrar
el formulario Profesores – Nuevo registro, debido a que falta por rellenar algún
campo requerido o porque se ha detectado otro registro con el mismo profesor
(nombre y apellidos). Este mensaje pregunta al usuario si desea salir del formulario
Profesores – Nuevo registro sin guardar el nuevo registro o, por el contrario,
prefiere permanecer en dicho formulario para poder introducir las modificaciones
oportunas y guardar dicho registro.
14. Evento Al hacer clic del botón de comando BCCerrar El código asociado a este evento se utiliza para:
Cerrar el formulario Profesores – Nuevo registro y abrir el formulario Panel
principal.
Mostrar un mensaje cuando no sea posible guardar el nuevo registro antes de cerrar
el formulario Profesores – Nuevo registro, debido a que falta por rellenar algún
campo requerido o porque se ha detectado otro registro con el mismo profesor
(nombre y apellidos). Este mensaje pregunta al usuario si desea salir del formulario
Profesores – Nuevo registro sin guardar el nuevo registro o, por el contrario,
prefiere permanecer en dicho formulario para poder introducir las modificaciones
oportunas y guardar dicho registro.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 78 de 197
6.4.- Formulario Proyectos El aspecto que presenta el formulario Proyectos es el siguiente:
Figura 6.4.a
Este formulario muestra toda la información asociada a los proyectos fin de carrera que
dirige el Departamento de Organización Industrial y Gestión de Empresas de la
Universidad de Sevilla. Los registros de este formulario proceden de la tabla Pfc de la
base de datos y se muestran de uno en uno.
En la figura 6.4.a podemos ver que en la barra de título aparece el título del formulario:
Proyectos fin de carrera. Para referirnos a este formulario, podemos hacerlo por su
nombre (Proyectos) o bien por su título (Proyectos fin de carrera).
También podemos apreciar que el formulario cuenta con varias fichas, es decir, varias
páginas dentro del mismo formulario. Más concretamente, vemos que en la figura 6.4.a
se encuentra seleccionada la ficha titulada Proyecto fin de carrera. Existen además otras
cuatro fichas cuyo aspecto mostramos a continuación:
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 79 de 197
Figura 6.4.b – Ficha Autor
Figura 6.4.c – Ficha Tutor
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 80 de 197
Figura 6.4.d – Ficha Calificación
Figura 6.4.e – Ficha Tribunal
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 81 de 197
6.4.1.- Controles Vamos a realizar una descripción de cada uno de los controles que posee el formulario
Proyectos fin de carrera, lo cual nos ayudará a comprender el funcionamiento de este
formulario.
1. Ficha Proyecto
Es la ficha seleccionada en la figura 6.4.a. Se titula Proyecto fin de carrera aunque
su nombre es simplemente Proyecto. Para referirnos a esta ficha, podemos hacerlo
por su nombre (Proyecto) o bien por su título (Proyecto fin de carrera).
A esta ficha pertenecen los siguientes controles del formulario: CTCursoAcad1,
CTCursoAcad2, CTFEntrSecr, CTTitulo y CTResumen.
Contiene el título del proyecto fin de carrera, un resumen del mismo, el curso
académico y la fecha de entrada en Secretaría de dicho proyecto fin de carrera.
2. Ficha Autor
Es la ficha seleccionada en la figura 6.4.b. Se titula Autor, por lo que en este caso
coinciden el nombre y el título de la ficha.
A esta ficha pertenecen los siguientes controles del formulario: CTAp1Autor,
CTAp2Autor, CCTratamiento, CTNombAutor, CCTitulacion, CCPlanEstudios y
CCIntensificacion.
Contiene el nombre y apellidos del autor del proyecto fin de carrera (es decir, del
alumno), así como su titulación, plan de estudios y especialidad o intensificación.
3. Ficha Tutor
Es la ficha seleccionada en la figura 6.4.c. Se titula Tutor, por lo que en este caso
coinciden el nombre y el título de la ficha.
A esta ficha pertenecen los siguientes controles del formulario: CCNumTutores,
SFTutores, BCSelTut, BCElimTut y BCProfTut.
Contiene al tutor o tutores del proyecto fin de carrera.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 82 de 197
4. Ficha Calificacion
Es la ficha seleccionada en la figura 6.4.d. Se titula Calificación aunque su nombre
es Calificacion (sin tilde). Para referirnos a esta ficha, podemos hacerlo por su
nombre (Calificacion) o bien por su título (Calificación).
A esta ficha pertenecen los siguientes controles del formulario: CTCalifNum y
CCCalifAlfanum.
Contiene la calificación numérica y alfanumérica otorgada al proyecto fin de carrera
por el tribunal.
5. Ficha Tribunal
Es la ficha seleccionada en la figura 6.4.e. Se titula Tribunal, por lo que en este caso
coinciden el nombre y el título de la ficha.
A esta ficha pertenecen los siguientes controles del formulario: SFTribunalPfc,
BCSelProf, BCElimProf, BCProfTrib, BCAsigAutCargos y BCAsigManCargos.
Contiene a los profesores del tribunal encargado de evaluar el proyecto fin de
carrera.
6. Cuadro de texto CTCursoAcad1
Pertenece a la ficha Proyecto fin de carrera. La etiqueta titulada Curso académico
está asociada a los cuadros de texto CTCursoAcad1 y CTCursoAcad2.
Muestra el campo CursoAcad1 de la tabla Pfc de la base de datos. Este campo tiene
las siguientes propiedades:
Tipo de datos: texto (es decir, texto o combinaciones de texto y números).
Tamaño del campo: el número máximo de caracteres es de 4.
Máscara de entrada: 0000;_
La máscara de entrada sirve para que los usuarios introduzcan en el cuadro de
texto valores que se ajustan a un determinado formato, en este caso el formato
de un año, o sea, un número entero positivo con cuatro cifras. Usaremos el guión
bajo como carácter marcador.
Regla de validación: entre 1964 y 2100 (ambos inclusive).
La regla de validación sirve para que los datos introducidos en el cuadro de texto
no infrinjan dicha regla.
Requerido: sí (es decir, la entrada de datos es obligatoria en este campo).
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 83 de 197
Permitir longitud cero: no.
Cada curso académico esta compuesto por dos años: por ejemplo, el curso
académico 2004/2005 está formado por los años 2004 y 2005. El cuadro de texto
CTCursoAcad1 contiene el primero de los años del curso académico (o sea, en el
ejemplo sería el año 2004).
7. Cuadro de texto CTCursoAcad2
Pertenece a la ficha Proyecto fin de carrera. La etiqueta titulada Curso académico
está asociada a los cuadros de texto CTCursoAcad1 y CTCursoAcad2.
Muestra el campo CursoAcad2 de la tabla Pfc de la base de datos. Este campo tiene
las siguientes propiedades:
Tipo de datos: texto (es decir, texto o combinaciones de texto y números).
Tamaño del campo: el número máximo de caracteres es de 4.
Requerido: sí (es decir, la entrada de datos es obligatoria en este campo).
Permitir longitud cero: no.
Cada curso académico esta compuesto por dos años: por ejemplo, el curso
académico 2004/2005 está formado por los años 2004 y 2005. El cuadro de texto
CTCursoAcad2 contiene el segundo de los años del curso académico (o sea, en el
ejemplo sería el año 2005).
Está bloqueado, es decir, no podemos modificar el contenido de este cuadro de
texto. El segundo año del curso académico se escribe automáticamente en
CTCursoAcad2 cuando introducimos el primer año de dicho curso en
CTCursoAcad1. Calcular el segundo año a partir del primero es muy sencillo, basta
con sumarle uno.
8. Cuadro de texto CTFEntrSecr
Pertenece a la ficha Proyecto fin de carrera y tiene asociada una etiqueta titulada
Fecha de entrada en Secretaría.
Muestra el campo FEntrSecr de la tabla Pfc de la base de datos. Este campo tiene
las siguientes propiedades:
Tipo de datos: fecha/hora.
Formato: fecha corta (por ejemplo: 20/05/2005)
Máscara de entrada: 00/00/0000;_
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 84 de 197
La máscara de entrada sirve para que los usuarios introduzcan en el cuadro de
texto valores que se ajustan a un determinado formato, en este caso el formato de
fecha corta. Usaremos el guión bajo como carácter marcador.
Requerido: sí (es decir, la entrada de datos es obligatoria en este campo).
Contiene, por tanto, la fecha de entrada en Secretaría del proyecto fin de carrera.
9. Cuadro de texto CTTitulo
Pertenece a la ficha Proyecto fin de carrera y tiene asociada una etiqueta titulada
Título.
Muestra el campo Titulo de la tabla Pfc de la base de datos. Este campo tiene las
siguientes propiedades:
Tipo de datos: memo (es decir, texto extenso o combinación extensa de texto y
números: hasta 65.535 caracteres).
Requerido: sí (es decir, la entrada de datos es obligatoria en este campo).
Permitir longitud cero: no.
Contiene, por tanto, el título del proyecto fin de carrera.
10. Cuadro de texto CTResumen
Pertenece a la ficha Proyecto fin de carrera y tiene asociada una etiqueta titulada
Resumen.
Muestra el campo Resumen de la tabla Pfc de la base de datos. Este campo tiene las
siguientes propiedades:
Tipo de datos: memo (es decir, texto extenso o combinación extensa de texto y
números: hasta 65.535 caracteres).
Requerido: no (es decir, la entrada de datos no es obligatoria en este campo).
Permitir longitud cero: sí.
Contiene, por tanto, un resumen del proyecto fin de carrera.
11. Cuadro de texto CTAp1Autor
Pertenece a la ficha Autor y tiene asociada una etiqueta titulada Primer apellido.
Muestra el campo Ap1Autor de la tabla Pfc de la base de datos. Este campo tiene las
siguientes propiedades:
Tipo de datos: texto (es decir, texto o combinaciones de texto y números).
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 85 de 197
Tamaño del campo: el número máximo de caracteres es de 50.
Requerido: sí (es decir, la entrada de datos es obligatoria en este campo).
Permitir longitud cero: no.
Contiene, por tanto, el primer apellido del autor del proyecto fin de carrera, es decir,
el primer apellido del alumno.
12. Cuadro de texto CTAp2Autor
Pertenece a la ficha Autor y tiene asociada una etiqueta titulada Segundo apellido.
Muestra el campo Ap2Autor de la tabla Pfc de la base de datos. Este campo tiene las
siguientes propiedades:
Tipo de datos: texto (es decir, texto o combinaciones de texto y números).
Tamaño del campo: el número máximo de caracteres es de 50.
Requerido: no (es decir, la entrada de datos no es obligatoria en este campo).
Permitir longitud cero: sí.
Contiene, por tanto, el segundo apellido del autor del proyecto fin de carrera, es
decir, el segundo apellido del alumno.
13. Cuadro combinado CCTratamiento
Pertenece a la ficha Autor y está situado justo a la izquierda del cuadro de texto
CTNombAutor, con el cual comparte la etiqueta titulada Nombre.
Muestra el campo Tratamiento de la tabla Pfc de la base de datos. Este campo tiene
las siguientes propiedades:
Tipo de datos: texto (es decir, texto o combinaciones de texto y números).
Tamaño del campo: el número máximo de caracteres es de 2.
Requerido: sí (es decir, la entrada de datos es obligatoria en este campo).
Permitir longitud cero: no.
Tiene como origen una lista formada por dos valores: “D.” y “Dª”
Recoge, por tanto, si el autor del proyecto fin de carrera debe ser tratado como Don
o como Doña.
Está limitado a la lista, es decir, no puede contener ningún valor que no se encuentre
en la lista.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 86 de 197
14. Cuadro de texto CTNombAutor
Pertenece a la ficha Autor y está situado justo a la derecha del cuadro combinado
CCTratamiento, con el cual comparte la etiqueta titulada Nombre.
Muestra el campo NombAutor de la tabla Pfc de la base de datos. Este campo tiene
las siguientes propiedades:
Tipo de datos: texto (es decir, texto o combinaciones de texto y números).
Tamaño del campo: el número máximo de caracteres es de 50.
Requerido: sí (es decir, la entrada de datos es obligatoria en este campo).
Permitir longitud cero: no.
Contiene, por tanto, el nombre del autor del proyecto fin de carrera, es decir, el
nombre del alumno.
15. Cuadro combinado CCTitulacion
Pertenece a la ficha Autor y tiene asociada una etiqueta titulada Titulación.
Muestra el campo TitulacionID de la tabla Pfc de la base de datos. Este campo tiene
las siguientes propiedades:
Tipo de datos: número.
Tamaño del campo: entero largo.
Requerido: sí (es decir, la entrada de datos es obligatoria en este campo).
Tiene como origen la siguiente consulta:
“SELECT Titulaciones.TitulacionID, Titulaciones.Titulacion FROM Titulaciones
ORDER BY Titulaciones.Titulacion;”
Esta consulta genera una tabla con dos columnas, que son los campos TitulacionID
y Titulacion de la tabla Titulaciones, y tantas filas como registros contiene la tabla
Titulaciones. Los valores que aparecen en la lista desplegable del cuadro combinado
son los del campo Titulacion mientras que en la tabla Pfc se guardan los valores del
campo TitulacionID debido a que tiene menor tamaño.
Contiene, por tanto, la titulación a la que pertenece el autor del proyecto fin de
carrera, es decir, la titulación del alumno.
Está limitado a la lista, es decir, no puede contener ningún valor que no se encuentre
en la lista.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 87 de 197
16. Cuadro combinado CCPlanEstudios
Pertenece a la ficha Autor y tiene asociada una etiqueta titulada Plan de estudios.
Muestra el campo PlanEstudiosID de la tabla Pfc de la base de datos. Este campo
tiene las siguientes propiedades:
Tipo de datos: número.
Tamaño del campo: entero largo.
Requerido: no (es decir, la entrada de datos no es obligatoria en este campo).
Tiene como origen la siguiente consulta:
“SELECT PlanesEstudios.PlanEstudiosID, PlanesEstudios.PlanEstudios
FROM PlanesEstudios
WHERE PlanesEstudios.TitulacionID LIKE ‘” & CCTitulacion & “’
ORDER BY PlanesEstudios.PlanEstudios;”
Esta consulta genera una tabla con dos columnas, que son los campos
PlanEstudiosID y PlanEstudios de la tabla PlanesEstudios, y tantas filas como
registros hay en la tabla PlanesEstudios en los que el valor del campo TitulacionID
coincide con el valor seleccionado en el cuadro combinado CCTitulacion. Es decir,
en la lista desplegable del cuadro combinado CCPlanEstudios aparecen los planes
de estudios correspondientes a la titulación seleccionada en el cuadro combinado
CCTitulacion. Además, los valores que aparecen en la lista desplegable del cuadro
combinado CCPlanEstudios son los del campo PlanEstudios mientras que en la
tabla Pfc se guardan los valores del campo PlanEstudiosID debido a que tiene
menor tamaño.
Contiene, por tanto, el plan de estudios al que pertenece el autor del proyecto fin de
carrera, es decir, el plan de estudios del alumno.
Está limitado a la lista, es decir, no puede contener ningún valor que no se encuentre
en la lista.
17. Cuadro combinado CCIntensificacion
Pertenece a la ficha Autor y tiene asociada una etiqueta titulada
Intensificación/Especialidad.
Muestra el campo IntensificacionID de la tabla Pfc de la base de datos. Este campo
tiene las siguientes propiedades:
Tipo de datos: número.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 88 de 197
Tamaño del campo: entero largo.
Requerido: no (es decir, la entrada de datos no es obligatoria en este campo).
Tiene como origen la siguiente consulta:
“SELECT Intensificaciones.IntensificacionID, Intensificaciones.Intensificacion
FROM Intensificaciones
WHERE Intensificaciones.PlanEstudiosID LIKE ‘” & CCPlanEstudios & “’
ORDER BY Intensificaciones.Intensificacion;”
Esta consulta genera una tabla con dos columnas, que son los campos
IntensificacionID e Intensificacion de la tabla Intensificaciones, y tantas filas como
registros hay en la tabla Intensificaciones en los que el valor del campo
PlanEstudiosID coincide con el valor seleccionado en el cuadro combinado
CCPlanEstudios. Es decir, en la lista desplegable del cuadro combinado
CCIntensificacion aparecen las intensificaciones o especialidades correspondientes
al plan de estudios seleccionado en el cuadro combinado CCPlanEstudios. Además,
los valores que aparecen en la lista desplegable del cuadro combinado
CCIntensificacion son los del campo Intensificacion mientras que en la tabla Pfc se
guardan los valores del campo IntensificacionID debido a que tiene menor tamaño.
Contiene, por tanto, la intensificación o especialidad a la que pertenece el autor del
proyecto fin de carrera, es decir, la intensificación o especialidad del alumno.
Está limitado a la lista, es decir, no puede contener ningún valor que no se encuentre
en la lista.
18. Cuadro combinado CCNumTutores
Pertenece a la ficha Tutor y tiene asociada una etiqueta titulada Número de tutores.
Muestra el campo NumTutores de la tabla Pfc de la base de datos. Este campo tiene
las siguientes propiedades:
Tipo de datos: número.
Tamaño del campo: entero, o sea, puede almacenar números entre -32.768 y
32.767 (no admite fracciones).
Valor predeterminado: 1.
Requerido: sí (es decir, la entrada de datos es obligatoria en este campo).
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 89 de 197
Tiene como origen la tabla NumeroTutores de la base de datos. Por tanto, los
valores que aparecen en la lista desplegable del cuadro combinado son los valores
del campo NumTutores de la tabla NumeroTutores.
Contiene, por tanto, el número de tutores que dirigen el proyecto fin de carrera.
19. Subformulario SFTutores
Pertenece a la ficha Tutor y no lleva asociada ninguna etiqueta.
Un subformulario no es más que un formulario que se inserta en otro. El formulario
primario se denomina formulario principal, y el formulario dentro del formulario se
denomina subformulario. En este caso, el formulario principal es el formulario
Proyectos y el subformulario recibe el nombre de SFTutores.
Los registros de este subformulario proceden de la tabla Tutores de la base de datos,
mientras que los del formulario Proyectos provienen de la tabla Pfc como ya
sabemos. La relación Pfc – Tutores es uno a varios, por lo que el formulario
principal muestra la parte “uno” de la relación, es decir, el proyecto fin de carrera en
cuestión, mientras que el subformulario muestra la parte “varios” de la relación, o
sea, los tutores que dirigen dicho proyecto fin de carrera.
Recoge, por tanto, el tutor o los tutores que dirigen el proyecto fin de carrera.
Contiene tres cuadros de texto que se titulan Primer apellido, Segundo apellido y
Nombre, los cuales recogen el nombre y los dos apellidos de cada tutor.
Está bloqueado, es decir, no podemos modificar el contenido de los cuadros de
texto.
20. Botón de comando BCSelTut
Pertenece a la ficha Tutor y tiene asociada una etiqueta titulada Seleccionar.
Al hacer clic sobre este botón abrimos el formulario Seleccionar tutor.
21. Botón de comando BCElimTut
Pertenece a la ficha Tutor y tiene asociada una etiqueta titulada Eliminar.
Al hacer clic sobre este botón eliminamos el tutor que se encuentra seleccionado en
el subformulario SFTutores.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 90 de 197
22. Botón de comando BCProfTut
Pertenece a la ficha Tutor y tiene asociada una etiqueta titulada Ir a Profesores.
Al hacer clic sobre este botón cerramos el formulario Proyectos fin de carrera y
abrimos el formulario Profesores, de tal forma que el registro mostrado en el
formulario Profesores corresponde al profesor-tutor que estaba seleccionado en el
subformulario SFTutores del formulario Proyectos fin de carrera.
23. Cuadro de texto CTCalifNum
Pertenece a la ficha Calificación y tiene asociada una etiqueta titulada Calificación
numérica.
Muestra el campo CalifNum de la tabla Pfc de la base de datos. Este campo tiene las
siguientes propiedades:
Tipo de datos: número.
Tamaño del campo: simple.
Regla de validación: entre 0 y 10 (ambos inclusive).
La regla de validación sirve para que los datos introducidos en el cuadro de texto
no infrinjan dicha regla.
Requerido: no (es decir, la entrada de datos no es obligatoria en este campo).
Contiene, por tanto, la calificación numérica otorgada al proyecto fin de carrera por
el tribunal.
24. Cuadro combinado CCCalifAlfanum
Pertenece a la ficha Calificación y tiene asociada una etiqueta titulada Calificación
alfanumérica.
Muestra el campo CalifAlfanumID de la tabla Pfc de la base de datos. Este campo
tiene las siguientes propiedades:
Tipo de datos: número.
Tamaño del campo: entero largo.
Requerido: no (es decir, la entrada de datos no es obligatoria en este campo).
Tiene como origen la tabla Calificaciones de la base de datos. Esta tabla posee dos
campos, que son CalifAlfanumID y CalifAlfanum. Los valores que aparecen en la
lista desplegable del cuadro combinado son los del campo CalifAlfanum mientras
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 91 de 197
que en la tabla Pfc se guardan los valores del campo CalifAlfanumID debido a que
tiene menor tamaño.
Contiene, por tanto, la calificación alfanumérica otorgada al proyecto fin de carrera
por el tribunal
Está limitado a la lista, es decir, no puede contener ningún valor que no se encuentre
en la lista.
La calificación alfanumérica que aparece en el cuadro combinado CCCalifAlfanum
se selecciona automáticamente si introducimos una calificación numérica en el
cuadro de texto CTCalifNum, de modo que nunca se contradicen ambas
calificaciones.
25. Subformulario SFTribunalPfc
Pertenece a la ficha Tribunal y no lleva asociada ninguna etiqueta.
Sabemos que un subformulario es un formulario que se inserta en otro. El
formulario primario se denomina formulario principal, y el formulario dentro del
formulario se denomina subformulario. En este caso, el formulario principal es el
formulario Proyectos y el subformulario recibe el nombre de SFTribunalPfc.
Los registros de este subformulario proceden de la tabla TribunalPfc de la base de
datos, mientras que los del formulario Proyectos provienen de la tabla Pfc como ya
sabemos. La relación Pfc – TribunalPfc es uno a varios, por lo que el formulario
principal muestra la parte “uno” de la relación, es decir, el proyecto fin de carrera en
cuestión, mientras que el subformulario muestra la parte “varios” de la relación, o
sea, los profesores del tribunal encargado de evaluar dicho proyecto fin de carrera.
Recoge, por tanto, los profesores del tribunal encargado de evaluar el proyecto fin
de carrera.
Contiene un cuadro combinado titulado Cargo y tres cuadros de texto que se titulan
Primer apellido, Segundo apellido y Nombre. Los cuadros de texto muestran el
nombre y los dos apellidos de cada profesor del tribunal mientras que el cuadro
combinado recoge el cargo que desempeña cada profesor dentro del tribunal. En la
lista desplegable del cuadro combinado aparecen tres posibles cargos, que son los de
Presidente, Vocal y Secretario. Los tres cuadros de texto se encuentran bloqueados,
por lo que resulta imposible modificar su contenido. El cuadro combinado, sin
embargo, no está bloqueado.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 92 de 197
Está bloqueado, es decir, no podemos modificar el contenido de los cuadros de texto
ni tampoco el del cuadro combinado. Si el subformulario no estuviese bloqueado,
sólo podríamos modificar el contenido del cuadro combinado puesto que los cuadros
de texto se encuentran bloqueados ya de por sí.
En la figura 6.4.e podemos ver que debajo del subformulario SFTribunalPfc aparece
una etiqueta con el siguiente mensaje en letras de color rojo: “¡ALERTA:
COINDIDENCIA ENTRE MIEMBROS DEL TRIBUNAL Y TUTOR!”. Este
mensaje se muestra en el caso de que algún profesor aparezca tanto en el
subformulario SFTribunalPfc como en el subformulario SFTutores.
26. Botón de comando BCSelProf
Pertenece a la ficha Tribunal y tiene asociada una etiqueta titulada Seleccionar.
Al hacer clic sobre este botón abrimos el formulario Seleccionar profesor.
27. Botón de comando BCElimProf
Pertenece a la ficha Tribunal y tiene asociada una etiqueta titulada Eliminar.
Al hacer clic sobre este botón eliminamos el profesor que se encuentra seleccionado
en el subformulario SFTribunalPfc.
28. Botón de comando BCProfTrib
Pertenece a la ficha Tribunal y tiene asociada una etiqueta titulada Ir a Profesores.
Al hacer clic sobre este botón cerramos el formulario Proyectos fin de carrera y
abrimos el formulario Profesores, de tal forma que el registro mostrado en el
formulario Profesores corresponde al profesor que estaba seleccionado en el
subformulario SFTribunalPfc del formulario Proyectos fin de carrera.
29. Botón de comando BCAsigAutCargos
Pertenece a la ficha Tribunal y tiene asociada una etiqueta titulada Asignación
automática de cargos.
Al hacer clic sobre este botón se asignan de forma automática los cargos que
desempeñan los miembros del tribunal. Para ello es necesario que el tribunal esté
formado por tres miembros. Recordemos que en función de la categoría, la
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 93 de 197
dedicación y la antigüedad (por este orden de prioridad) que posee cada uno de los
tres miembros del tribunal, ocuparán los cargos de presidente, vocal y secretario de
dicho tribunal.
30. Botón de comando BCAsigManCargos
Pertenece a la ficha Tribunal y tiene asociada una etiqueta titulada Asignación
manual de cargos.
Al hacer clic sobre este botón desbloqueamos el subformulario SFTribunalPfc, lo
cual nos permite modificar los cargos de los profesores del tribunal.
31. Botón de comando BCEditar
No pertenece a ninguna de las fichas y tiene asociada una etiqueta titulada Editar
registro.
Al hacer clic sobre este botón desbloqueamos la edición del registro mostrado en el
formulario, es decir, podemos modificar los datos que aparecen en el formulario.
32. Botón de comando BCGuardarReg
No pertenece a ninguna de las fichas y tiene asociada una etiqueta titulada Guardar
registro.
Al hacer clic sobre este botón bloqueamos la edición del registro mostrado en el
formulario y se guardan los cambios realizados en dicho registro.
33. Botón de comando BCNuevoReg
No pertenece a ninguna de las fichas y tiene asociada una etiqueta titulada Nuevo
registro.
Al hacer clic sobre este botón cerramos el formulario Proyectos fin de carrera y
abrimos el formulario Proyectos fin de carrera – Nuevo registro.
34. Botón de comando BCEliminar
No pertenece a ninguna de las fichas y tiene asociada una etiqueta titulada Eliminar
registro.
Al hacer clic sobre este botón eliminamos el registro mostrado en el formulario.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 94 de 197
35. Botón de comando BCBuscar
No pertenece a ninguna de las fichas y tiene asociada una etiqueta titulada Buscar
registros.
Al hacer clic sobre este botón abrimos el formulario BuscarProyectos (el título de
este formulario es Buscar registros).
36. Botón de comando BCOrdenar
No pertenece a ninguna de las fichas y tiene asociada una etiqueta titulada Ordenar
registros.
Al hacer clic sobre este botón abrimos el formulario OrdenarProyectos (el título de
este formulario es Ordenar registros).
37. Botón de comando BCQuitarFiltro
No pertenece a ninguna de las fichas y tiene asociada una etiqueta titulada Quitar
filtro u orden.
Al hacer clic sobre este botón quitamos los filtros y ordenaciones existentes en el
formulario. De esta forma, utilizando los botones de desplazamiento y el cuadro de
número de registro, situados en la parte inferior izquierda del formulario, podemos
desplazarnos por todos los registros de la tabla Pfc, los cuales aparecen en el orden
en que han sido introducidos en dicha tabla.
38. Botón de comando BCCertifDef
No pertenece a ninguna de las fichas y tiene asociada una etiqueta titulada
Certificado defensa PFC.
Al hacer clic sobre este botón abrimos el informe Certificado de defensa de
proyecto fin de carrera.
39. Botón de comando BCPfcCa
No pertenece a ninguna de las fichas y tiene asociada una etiqueta titulada Nº de
PFCs según curso académico.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 95 de 197
Al hacer clic sobre este botón abrimos el formulario ProyectosGraficos (el título de
este formulario es Configurar gráfico).
40. Botón de comando BCSesTrib
No pertenece a ninguna de las fichas y tiene asociada una etiqueta titulada Ir a
Sesiones de Tribunal.
Al hacer clic sobre este botón cerramos el formulario Proyectos fin de carrera y
abrimos el formulario Sesiones de tribunal, de tal forma que el registro mostrado en
el formulario Sesiones de tribunal es la sesión de tribunal a la cual está asignado el
proyecto fin de carrera que mostraba el formulario Proyectos fin de carrera cuando
hicimos clic sobre el botón BCSesTrib.
41. Botón de comando BCMostrarRegistros
No pertenece a ninguna de las fichas y tiene asociada una etiqueta titulada Mostrar
todos los registros.
Se encuentra siempre desactivado y su presencia se debe a razones puramente
estéticas. Este botón de comando se utiliza en el formulario Proyectos fin de carrera
– Nuevo registro para cerrar dicho formulario y abrir el formulario Proyectos fin de
carrera. Esto dos formularios cuentan con el mismo aspecto para que, al pasar de
uno a otro, no se note que hemos cambiado de formulario y parezcan un mismo
formulario. Por este motivo se han incluido los mismos controles en ambos
formularios, de tal forma que en cada formulario desactivamos aquellos controles
que sólo sirven para el otro formulario.
42. Botón de comando BCAtras
No pertenece a ninguna de las fichas. Está situado en la esquina inferior izquierda
del formulario y contiene la imagen de una flecha de color verde.
Al hacer clic sobre este botón cerramos el formulario Proyectos fin de carrera y
regresamos al formulario que teníamos abierto anteriormente.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 96 de 197
43. Botón de comando BCCerrar
No pertenece a ninguna de las fichas. Está situado en la esquina inferior derecha del
formulario y contiene la imagen de una letra “X” de color gris oscuro.
Al hacer clic sobre este botón cerramos el formulario Proyectos fin de carrera y
abrimos el formulario Panel principal.
6.4.2.- Código VBA En este apartado citaremos todos los eventos a los cuales hemos asignado código VBA
y explicaremos para qué sirve dicho código.
1. Evento Al activar registro del formulario Proyectos Este evento se produce cuando el enfoque se desplaza a un registro, haciendo que sea el
registro actual, o cuando el formulario se actualiza o se somete a una nueva consulta.
El código asociado a este evento se utiliza para:
Bloquear la edición del registro mostrado en el formulario, es decir, no podemos
modificar los datos que aparecen en el formulario.
Activar los siguientes botones de comando: BCEditar, BCEliminar, BCBuscar,
BCOrdenar, BCQuitarFiltro, BCCertifDef y BCPfcCa.
Desactivar los siguientes botones de comando: BCGuardarReg, BCSelTut,
BCElimTut, BCSelProf, BCElimProf, BCAsigAutCargos y BCAsigManCargos.
Mostrar un mensaje indicando que el registro anterior al actual ha sido actualizado si
es que dicho registro fue modificado y no fue guardado con anterioridad.
Introducir en el cuadro combinado CCPlanEstudios la consulta que proporciona los
valores que aparecen en la lista desplegable de dicho cuadro combinado.
Introducir en el cuadro combinado CCIntensificacion la consulta que proporciona
los valores que aparecen en la lista desplegable de dicho cuadro combinado.
Comprobar que en el tribunal del proyecto fin de carrera mostrado en el formulario
no se encuentra ninguno de los tutores que dirigen dicho proyecto. Si alguno de los
tutores figura también como miembro del tribunal, entonces aparece una etiqueta
situada justo debajo del subformulario SFTribunalPfc con el siguiente mensaje en
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 97 de 197
letras de color rojo: “¡ALERTA: COINDIDENCIA ENTRE MIEMBROS DEL
TRIBUNAL Y TUTOR!”.
2. Evento Antes de actualizar del formulario Proyectos Este evento se produce antes de que se actualicen los datos de un registro.
El código asociado a este evento se utiliza para:
Impedir que se actualice un registro si se detecta que existe otro registro con el
mismo autor (nombre y apellidos) del proyecto fin de carrera.
En el caso de que se deshagan los cambios realizados en un registro debido a que se
ha encontrado otro registro con el mismo autor, introducir en el cuadro combinado
CCPlanEstudios la consulta que proporciona los valores que aparecen en la lista
desplegable de dicho cuadro combinado.
En el caso de que se deshagan los cambios realizados en un registro debido a que se
ha encontrado otro registro con el mismo autor, introducir en el cuadro combinado
CCIntensificacion la consulta que proporciona los valores que aparecen en la lista
desplegable de dicho cuadro combinado.
3. Evento Al Eliminar del formulario Proyectos Este evento se produce cuando el usuario hace clic sobre el botón de comando
BCEliminar para eliminar un registro, pero antes de que el registro se elimine
realmente.
El código asociado a este evento se utiliza para mostrar un mensaje al usuario
preguntándole si está seguro de que desea eliminar el registro que ha seleccionado.
4. Evento Al abrir del formulario Proyectos Este evento se produce cuando se abre el formulario, pero antes de que se muestre el
primer registro.
El código asociado a este evento se utiliza para que el formulario Proyectos fin de
carrera muestre el último registro de la tabla Pfc. Además, si en esta tabla no existiera
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 98 de 197
ningún registro, se muestra un mensaje explicando tal circunstancia y a continuación se
cierra el formulario Proyectos fin de carrera y se abre el formulario Proyectos fin de
carrera – Nuevo registro para que podamos introducir el primer registro.
5. Evento Al cerrar del formulario Proyectos Este evento se produce cuando el formulario se cierra y desaparece de la pantalla.
El código asociado a este evento se utiliza para mostrar un mensaje indicando que el
último registro mostrado por el formulario ha sido actualizado si es que dicho registro
fue modificado y no fue guardado con anterioridad.
6. Evento Al bajar una tecla del formulario Proyectos El código asociado a este evento se utiliza para desactivar los métodos abreviados de
teclado de Access. Con esto queremos evitar que al pulsar ciertas teclas se tenga acceso
a comandos u operaciones frecuentes en Access (por ejemplo: si pulsamos ALT+F4
salimos de Access, si pulsamos F12 se abre el cuadro de diálogo Guardar como, etc.).
Pretendemos que el usuario maneje la aplicación utilizando únicamente los controles de
la aplicación y de esta manera poder garantizar su correcto funcionamiento.
7. Evento Al ocurrir un error del formulario Proyectos El código asociado a este evento se utiliza para mostrar un mensaje de error cuando se
produce un error desconocido.
8. Evento Después de actualizar del cuadro de texto CTCursoAcad1 Este evento se produce después de que se actualicen los datos modificados en el cuadro
de texto.
El código asociado a este evento se utiliza para que el segundo año del curso académico
aparezca automáticamente en CTCursoAcad2 una vez hemos introducido el primer año
de dicho curso en CTCursoAcad1. Calcular el segundo año a partir del primero es muy
sencillo, basta con sumarle uno.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 99 de 197
9. Evento Después de actualizar del cuadro combinado CCTitulacion Este evento se produce después de que se actualicen los datos modificados en el cuadro
combinado.
El código asociado a este evento se utiliza para:
Dejar en blanco el contenido del cuadro combinado CCPlanEstudios e introducir en
él la consulta que proporciona los valores que aparecen en la lista desplegable de
dicho cuadro combinado.
Dejar en blanco el tanto el contenido como la lista desplegable del cuadro
combinado CCIntensificacion.
10. Evento Después de actualizar del cuadro combinado CCPlanEstudios Este evento se produce después de que se actualicen los datos modificados en el cuadro
combinado.
El código asociado a este evento se utiliza para dejar en blanco el contenido del cuadro
combinado CCIntensificacion e introducir en él la consulta que proporciona los valores
que aparecen en la lista desplegable de dicho cuadro combinado.
11. Evento Antes de actualizar del cuadro combinado CCNumTutores Este evento se produce antes de que se actualicen los datos del cuadro combinado.
El código asociado a este evento se utiliza para deshacer los cambios realizados en este
cuadro combinado si seleccionamos un número de tutores menor de los que ya contiene
el subformulario SFTutores.
12. Evento Al no estar en la lista del cuadro combinado CCNumTutores Este evento se produce cuando el usuario introduce en el componente cuadro de texto
del cuadro combinado un valor que no se encuentra en la lista del cuadro combinado.
El código asociado a este evento se utiliza para añadir dicho valor a la lista del cuadro
combinado si el usuario lo desea.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 100 de 197
13. Evento Al hacer clic del botón de comando BCSelTut El código asociado a este evento se utiliza para abrir el formulario SeleccionarTutor (el
título de este formulario es Seleccionar tutor).
14. Evento Al hacer clic del botón de comando BCElimTut El código asociado a este evento se utiliza para:
Mostrar un mensaje preguntando al usuario si está seguro de que desea eliminar del
subformulario SFTutores el tutor que ha seleccionado.
En el caso de que no hayamos seleccionado ningún tutor aparece un mensaje
indicando tal circunstancia.
Eliminar del subformulario SFTutores el tutor seleccionado si el usuario así lo
desea.
Comprobar que en el tribunal del proyecto fin de carrera mostrado en el formulario
no figura ninguno de los tutores que dirigen dicho proyecto. Si el tutor eliminado
pertenece al tribunal, entonces desaparecerá la etiqueta situada justo debajo del
subformulario SFTribunalPfc con el siguiente mensaje en letras de color rojo:
“¡ALERTA: COINDIDENCIA ENTRE MIEMBROS DEL TRIBUNAL Y
TUTOR!”.
Mostrar un mensaje indicando el número de tutores que faltan por asignar si es que
falta alguno.
15. Evento Al hacer clic del botón de comando BCProfTut El código asociado a este evento se utiliza para:
Cerrar el formulario Proyectos fin de carrera y abrir el formulario Profesores, de
tal forma que el registro mostrado en el formulario Profesores corresponde al
profesor-tutor que estaba seleccionado en el subformulario SFTutores del
formulario Proyectos fin de carrera.
En el caso de que no hayamos seleccionado ningún tutor aparece un mensaje
indicando tal circunstancia.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 101 de 197
Si el profesor seleccionado en el subformulario SFTutores no se encuentra entre los
registros del formulario Profesores, entonces se muestra un mensaje indicando que
dicho profesor fue eliminado desde el formulario Profesores con anterioridad.
16. Evento Después de actualizar del cuadro de texto CTCalifNum Este evento se produce después de que se actualicen los datos modificados en el cuadro
de texto.
El código asociado a este evento se utiliza para introducir en el cuadro combinado
CCCalifAlfanum la calificación alfanumérica que se corresponde con la calificación
numérica que acabamos de introducir en el cuadro de texto CTCalifNum.
17. Evento Antes de actualizar del cuadro combinado CCCalifAlfanum Este evento se produce antes de que se actualicen los datos del cuadro combinado.
El código asociado a este evento se utiliza para deshacer los cambios realizados en este
cuadro combinado si seleccionamos una calificación alfanumérica que no se
corresponde con la calificación numérica introducida en el cuadro de texto CTCalifNum.
18. Evento Al salir del subformulario SFTribunalPfc Este evento se produce inmediatamente antes de que el subformulario pierda el enfoque
en favor de otro control del mismo formulario.
El código asociado a este evento se utiliza para:
Activar el botón de comando BCAsigManCargos si se encuentran desactivados los
botones de comando BCAsigManCargos y BCEditar.
Bloquear el subformulario SFTribunalPfc si se encuentran desactivados los botones
de comando BCAsigManCargos y BCEditar.
19. Evento Al hacer clic del botón de comando BCSelProf El código asociado a este evento se utiliza para abrir el formulario Seleccionar profesor.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 102 de 197
20. Evento Al hacer clic del botón de comando BCElimProf El código asociado a este evento se utiliza para:
Mostrar un mensaje preguntando al usuario si está seguro de que desea eliminar del
tribunal al profesor que ha seleccionado.
En el caso de que no hayamos seleccionado ningún miembro del tribunal aparece un
mensaje indicando tal circunstancia.
Eliminar del tribunal al profesor seleccionado si el usuario así lo desea.
Comprobar que en el tribunal del proyecto fin de carrera mostrado en el formulario
no figura ninguno de los tutores que dirigen dicho proyecto. Si el profesor eliminado
del tribunal es el tutor del proyecto fin de carrera, entonces desaparecerá la etiqueta
situada justo debajo del subformulario SFTribunalPfc con el siguiente mensaje en
letras de color rojo: “¡ALERTA: COINDIDENCIA ENTRE MIEMBROS DEL
TRIBUNAL Y TUTOR!”.
Mostrar un mensaje indicando el número de miembros del tribunal que faltan por
asignar si es que falta alguno.
21. Evento Al hacer clic del botón de comando BCProfTrib El código asociado a este evento se utiliza para:
Cerrar el formulario Proyectos fin de carrera y abrir el formulario Profesores, de tal
forma que el registro mostrado en el formulario Profesores corresponde al profesor
que estaba seleccionado en el subformulario SFTribunalPfc del formulario
Proyectos fin de carrera.
En el caso de que no hayamos seleccionado ningún profesor aparece un mensaje
indicando tal circunstancia.
Si el profesor seleccionado en el subformulario SFTribunalPfc no se encuentra entre
los registros del formulario Profesores, entonces se muestra un mensaje indicando
que dicho profesor fue eliminado desde el formulario Profesores con anterioridad.
22. Evento Al hacer clic del botón de comando BCAsigAutCargos El código asociado a este evento se utiliza para:
Asignar de forma automática los cargos que desempeñan los miembros del tribunal.
Para ello es necesario que el tribunal esté formado por tres miembros. Recordemos
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 103 de 197
que en función de la categoría, la dedicación y la antigüedad (por este orden de
prioridad) que posee cada uno de los tres miembros del tribunal, ocuparán los cargos
de presidente, vocal y secretario de dicho tribunal.
Si el número de miembros del tribunal no es igual a tres, entonces aparece un
mensaje indicando que no es posible la asignación automática de cargos.
Si alguno de los profesores del tribunal no se encuentra entre los registros del
formulario Profesores, entonces se muestra un mensaje indicando que no es posible
asignar automáticamente los cargos debido a que alguno de los profesores del
tribunal fue eliminado con anterioridad desde el formulario Profesores.
23. Evento Al hacer clic del botón de comando AsigManCargos El código asociado a este evento se utiliza para:
Desactivar el botón de comando BCAsigManCargos.
Desbloquear el subformulario SFTribunalPfc, lo cual nos permite modificar los
cargos de los profesores del tribunal.
En el caso de que el tribunal no tenga ningún componente aparece un mensaje
indicando tal circunstancia.
24. Evento Al hacer clic del botón de comando BCEditar El código asociado a este evento se utiliza para:
Desbloquear la edición del registro mostrado en el formulario, es decir, podemos
modificar los datos que aparecen en el formulario.
Activar los siguientes botones de comando: BCGuardarReg, BCSelTut, BCElimTut,
BCSelProf, BCElimProf, BCAsigAutCargos y BCAsigManCargos.
Desactivar los siguientes botones de comando: BCEditar, BCEliminar, BCBuscar,
BCOrdenar, BCQuitarFiltro, BCCertifDef y BCPfcCa.
25. Evento Al hacer clic del botón de comando BCGuardarReg El código asociado a este evento se utiliza para:
Guardar los cambios realizados en el registro que muestra el formulario.
Mostrar un mensaje indicando que el registro ha sido actualizado.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 104 de 197
Bloquear la edición del registro mostrado en el formulario, es decir, no podemos
modificar los datos que aparecen en el formulario.
Activar los siguientes botones de comando: BCEditar, BCEliminar, BCBuscar,
BCOrdenar, BCQuitarFiltro, BCCertifDef y BCPfcCa.
Desactivar los siguientes botones de comando: BCGuardarReg, BCSelTut,
BCElimTut, BCSelProf, BCElimProf, BCAsigAutCargos y BCAsigManCargos.
26. Evento Al hacer clic del botón de comando BCNuevoReg El código asociado a este evento se utiliza para cerrar el formulario Proyectos fin de
carrera y abrir el formulario Proyectos fin de carrera – Nuevo registro.
27. Evento Al hacer clic del botón de comando BCEliminar El código asociado a este evento se utiliza para:
Eliminar el proyecto fin de carrera mostrado en el formulario.
Mostrar un mensaje confirmando que dicho proyecto ha sido eliminado.
Si queremos eliminar un proyecto fin de carrera se encuentra asignado a una sesión
de tribunal cuyo tribunal no está vacío, entonces aparece un mensaje indicando que
no es posible la eliminación de dicho proyecto fin de carrera.
28. Evento Al hacer clic del botón de comando BCBuscar El código asociado a este evento se utiliza para abrir el formulario BuscarProyectos (el
título de este formulario es Buscar registros).
29. Evento Al hacer clic del botón de comando BCOrdenar El código asociado a este evento se utiliza para abrir el formulario OrdenarProyectos
(el título de este formulario es Ordenar registros).
30. Evento Al hacer clic del botón de comando BCQuitarFiltro El código asociado a este evento se utiliza para quitar los filtros y ordenaciones
existentes en el formulario, sin que cambie el registro mostrado por el formulario.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 105 de 197
31. Evento Al hacer clic del botón de comando BCCertifDef El código asociado a este evento se utiliza para abrir el informe Certificado de defensa
de proyecto fin de carrera.
32. Evento Al hacer clic del botón de comando BCPfcCa El código asociado a este evento se utiliza para abrir el formulario ProyectosGraficos
(el título de este formulario es Configurar gráfico).
33. Evento Al hacer clic del botón de comando BCSesTrib El código asociado a este evento se utiliza para:
Cerrar el formulario Proyectos fin de carrera y abrir el formulario Sesiones de
tribunal, de tal forma que el registro mostrado en el formulario Sesiones de tribunal
es la sesión de tribunal a la cual está asignado el proyecto fin de carrera que
mostraba el formulario Proyectos fin de carrera cuando hicimos clic sobre el botón
BCSesTrib.
En el caso de que el proyecto fin de carrera seleccionado no se encuentre asignado a
ninguna sesión de tribunal aparece un mensaje indicando tal circunstancia.
34. Evento Al hacer clic del botón de comando BCAtras El código asociado a este evento se utiliza para cerrar el formulario Proyectos fin de
carrera y regresar al formulario que teníamos abierto anteriormente.
35. Evento Al hacer clic del botón de comando BCCerrar El código asociado a este evento se utiliza para cerrar el formulario Proyectos fin de
carrera y abrir el formulario Panel principal.
6.4.3.- Informes Desde el formulario Proyectos fin de carrera podemos abrir el informe
CertificadoDefensaPfc haciendo clic sobre el botón de comando BCCertifDef. Este
informe se titula Certificado de defensa de proyecto fin de carrera y recoge toda la
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 106 de 197
información asociada al proyecto fin de carrera mostrado en el formulario, es decir:
curso académico, título del proyecto, fecha de defensa, nombre y apellidos del autor (o
sea, del alumno) así como su titulación, plan de estudios e intensificación/especialidad,
el tutor o los tutores que dirigen el proyecto, los miembros del tribunal y la calificación
numérica y alfanumérica otorgada al proyecto por el tribunal. Además, al tratarse de un
certificado, se incluye la fecha actual y existe un espacio reservado para la firma del
Secretario/Subdirector/Director del Departamento.
Todas las páginas del informe cuentan con encabezado y pié de página que recogen la
siguiente información: logotipo de la Universidad de Sevilla, nombre del Departamento,
dirección de la Escuela Superior de Ingenieros, número de página y total de páginas del
informe.
Si queremos imprimir el informe tenemos todas las facilidades para ello: podemos
generar una vista previa del mismo, aplicar el zoom, seleccionar la impresora y las
opciones de impresión, configurar el tamaño y la posición del papel así como los
márgenes, etc.
6.4.4.- Gráficos Desde el formulario Proyectos fin de carrera podemos generar un gráfico que muestra
el número de proyectos fin de carrera dirigidos por el Departamento según curso
académico.
Haciendo clic sobre el botón de comando BCPfcCa del formulario Proyectos fin de
carrera abrimos el formulario ProyectosGraficos, el cual nos permite configurar el
gráfico que mostrará el número de proyectos fin de carrera dirigidos por el
Departamento según curso académico. Las opciones de configuración son las
siguientes:
Tipo de gráfico: barra (gráfico GrafPfcBarra) o circular (gráfico GrafPfcCir).
Cursos académicos: podemos seleccionar todos los cursos académicos o
solamente aquéllos que nos interesen.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 107 de 197
Si queremos imprimir el gráfico tenemos todas las facilidades para ello: podemos
generar una vista previa del gráfico, aplicar el zoom, seleccionar la impresora y las
opciones de impresión, configurar el tamaño y la posición del papel así como los
márgenes, etc.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 108 de 197
6.5.- Formulario ProyectosAgregar El aspecto que presenta el formulario ProyectosAgregar es el siguiente:
Figura 6.5.a
En la figura 6.5.a podemos ver que en la barra de título aparece el título del formulario:
Proyectos fin de carrera – Nuevo registro. Para referirnos a este formulario, podemos
hacerlo por su nombre (ProyectosAgregar) o bien por su título (Proyectos fin de carrera
– Nuevo registro).
Si comparamos las figuras 6.4.a y 6.5.a podemos apreciar que el formulario Proyectos
fin de carrera y el formulario Proyectos fin de carrera – Nuevo registro cuentan con el
mismo aspecto. Con esto se pretende que, al pasar de uno a otro, no se note que hemos
cambiado de formulario y parezcan un mismo formulario. Así, se han incluido los
mismos controles en ambos formularios, de tal forma que en cada formulario
desactivamos aquellos controles que sólo sirven para el otro formulario.
El formulario Proyectos fin de carrera – Nuevo registro sirve, como su propio nombre
indica, para incluir nuevos proyectos fin de carrera en la base de datos, es decir, a través
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 109 de 197
de este formulario podemos agregar nuevos registros a la tabla Pfc de la base de datos.
Además, cada vez que seleccionamos un profesor como tutor o como miembro del
tribunal, se agrega un nuevo registro a la tabla Tutores o a la tabla TribunalPfc
respectivamente.
Cuando el usuario está introduciendo un nuevo proyecto fin de carrera todavía no sabe
quiénes son los miembros del tribunal ni la calificación otorgada a dicho proyecto. Por
este motivo, tanto la ficha Calificación como la ficha Tribunal se encuentran
desactivadas en el formulario Proyectos fin de carrera – Nuevo registro. La selección
de los miembros del tribunal se realiza desde otro formulario titulado Sesiones de
tribunal o Sesiones de tribunal – Nuevo registro. También podemos modificar los
miembros que conforman el tribunal de cada proyecto fin de carrera desde la ficha
Tribunal del formulario Proyectos fin de carrera, por ejemplo cuando observemos que
alguno de los profesores del tribunal figura también como profesor-tutor.
6.5.1.- Controles Son los mismos que los del formulario Proyectos fin de carrera como ya hemos
comentado. Se encuentran desactivados los siguientes controles: BCBuscar,
BCOrdenar, BCQuitarFiltro, BCCertifDef, BCPfcCa y BCSesTrib. Además, al estar
desactivadas las fichas Calificación y Tribunal también lo están todos los controles
contenidos en ellas.
6.5.2.- Código VBA En este apartado citaremos todos los eventos a los cuales hemos asignado código VBA
y explicaremos para qué sirve dicho código.
1. Evento Antes de insertar del formulario ProyectosAgregar Este evento se produce cuando el usuario escribe el primer carácter de un nuevo
registro, pero antes de que el registro se cree realmente.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 110 de 197
El código asociado a este evento se utiliza para activar el botón de comando
BCGuardarReg.
2. Evento Antes de actualizar del formulario ProyectosAgregar El código asociado a este evento se utiliza para:
Impedir que guardemos un registro si se detecta que existe otro registro con el
mismo autor (nombre y apellidos) del proyecto fin de carrera.
En el caso de que se deshagan los cambios realizados en un registro debido a que se
ha encontrado otro registro con el mismo autor, introducir en el cuadro combinado
CCPlanEstudios la consulta que proporciona los valores que aparecen en la lista
desplegable de dicho cuadro combinado.
En el caso de que se deshagan los cambios realizados en un registro debido a que se
ha encontrado otro registro con el mismo autor, introducir en el cuadro combinado
CCIntensificacion la consulta que proporciona los valores que aparecen en la lista
desplegable de dicho cuadro combinado.
3. Evento Al eliminar del formulario ProyectosAgregar El código asociado a este evento se utiliza para mostrar un mensaje al usuario
preguntándole si está seguro de que desea eliminar el registro que ha seleccionado.
4. Evento Al cargar del formulario ProyectosAgregar Este evento se produce cuando se abre el formulario y se muestran sus registros.
El código asociado a este evento se utiliza para introducir el primer año del curso
académico en el cuadro de texto CTCursoAcad1 y el segundo año del curso académico
en el cuadro de texto CTCursoAcad2, de acuerdo con la fecha actual.
5. Evento Al cerrar del formulario ProyectosAgregar El código asociado a este evento se utiliza para mostrar un mensaje indicando que el
nuevo registro ha sido guardado si no hemos utilizado anteriormente el botón de
comando BCGuardarReg para guardarlo.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 111 de 197
6. Evento Al bajar una tecla del formulario ProyectosAgregar El código asociado a este evento se utiliza para desactivar los métodos abreviados de
teclado de Access. Con esto queremos evitar que al pulsar ciertas teclas se tenga acceso
a comandos u operaciones frecuentes en Access (por ejemplo: si pulsamos ALT+F4
salimos de Access, si pulsamos F12 se abre el cuadro de diálogo Guardar como, etc.).
Pretendemos que el usuario maneje la aplicación utilizando únicamente los controles de
la aplicación y de esta manera poder garantizar su correcto funcionamiento.
7. Evento Al ocurrir un error del formulario ProyectosAgregar El código asociado a este evento se utiliza para mostrar un mensaje de error cuando se
produce un error desconocido.
8. Evento Después de actualizar del cuadro de texto CTCursoAcad1 El código asociado a este evento se utiliza para que el segundo año del curso académico
aparezca automáticamente en CTCursoAcad2 una vez hemos introducido el primer año
de dicho curso en CTCursoAcad1. Calcular el segundo año a partir del primero es muy
sencillo, basta con sumarle uno.
9. Evento Después de actualizar del cuadro combinado CCTitulacion El código asociado a este evento se utiliza para:
Dejar en blanco el contenido del cuadro combinado CCPlanEstudios e introducir en
él la consulta que proporciona los valores que aparecen en la lista desplegable de
dicho cuadro combinado.
Dejar en blanco el tanto el contenido como la lista desplegable del cuadro
combinado CCIntensificacion.
10. Evento Después de actualizar del cuadro combinado CCPlanEstudios El código asociado a este evento se utiliza para dejar en blanco el contenido del cuadro
combinado CCIntensificacion e introducir en él la consulta que proporciona los valores
que aparecen en la lista desplegable de dicho cuadro combinado.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 112 de 197
11. Evento Antes de actualizar del cuadro combinado CCNumTutores El código asociado a este evento se utiliza para deshacer los cambios realizados en este
cuadro combinado si seleccionamos un número de tutores menor de los que ya contiene
el subformulario SFTutores.
12. Evento Al no estar en la lista del cuadro combinado CCNumTutores Este evento se produce cuando el usuario introduce en el componente cuadro de texto
del cuadro combinado un valor que no se encuentra en la lista del cuadro combinado.
El código asociado a este evento se utiliza para añadir dicho valor a la lista del cuadro
combinado si el usuario lo desea.
13. Evento Al hacer clic del botón de comando BCSelTut El código asociado a este evento se utiliza para:
Mostrar un mensaje indicando si falta por rellenar algún campo requerido.
Abrir el formulario SeleccionarTutorAgregar (el título de este formulario es
Seleccionar tutor).
14. Evento Al hacer clic del botón de comando BCElimTut El código asociado a este evento se utiliza para:
Mostrar un mensaje preguntando al usuario si está seguro de que desea eliminar del
formulario SFTutores el tutor que ha seleccionado.
En el caso de que no hayamos seleccionado ningún tutor aparece un mensaje
indicando tal circunstancia.
Eliminar del subformulario SFTutores el tutor seleccionado si el usuario así lo
desea.
Mostrar un mensaje indicando el número de tutores que faltan por asignar si es que
falta alguno.
15. Evento Al hacer clic del botón de comando BCProfTut El código asociado a este evento se utiliza para:
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 113 de 197
Cerrar el formulario Proyectos fin de carrera – Nuevo registro y abrir el formulario
Profesores, de tal forma que el registro mostrado en el formulario Profesores
corresponde al profesor-tutor que estaba seleccionado en el subformulario
SFTutores del formulario Proyectos fin de carrera – Nuevo registro.
En el caso de que no hayamos seleccionado ningún tutor aparece un mensaje
indicando tal circunstancia.
Si el profesor seleccionado en el subformulario SFTutores no se encuentra entre los
registros del formulario Profesores, entonces se muestra un mensaje indicando que
dicho profesor fue eliminado desde el formulario Profesores con anterioridad.
16. Evento Al hacer clic del botón de comando BCEditar El código asociado a este evento se utiliza para:
Desbloquear la edición del registro mostrado en el formulario, es decir, podemos
modificar los datos que aparecen en el formulario.
Activar los siguientes botones de comando: BCGuardarReg, BCSelTut y
BCElimTut.
Desactivar los siguientes botones de comando: BCEditar y BCEliminar.
17. Evento Al hacer clic del botón de comando BCGuardarReg El código asociado a este evento se utiliza para:
Mostrar un mensaje indicando si falta por rellenar algún campo requerido.
Guardar el nuevo registro, o los cambios realizados en él si ya había sido guardado
previamente.
Mostrar un mensaje indicando que el nuevo registro ha sido guardado.
Bloquear la edición del registro mostrado en el formulario, es decir, no podemos
modificar los datos que aparecen en el formulario.
Activar los siguientes botones de comando: BCEditar, BCNuevoReg y BCEliminar.
Desactivar los siguientes botones de comando: BCGuardarReg, BCSelTut y
BCElimTut.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 114 de 197
18. Evento Al hacer clic del botón de comando BCNuevoReg El código asociado a este evento se utiliza para cerrar el formulario Proyectos fin de
carrera – Nuevo registro y abrirlo de nuevo.
19. Evento Al hacer clic del botón de comando BCEliminar El código asociado a este evento se utiliza para:
Eliminar el proyecto fin de carrera mostrado en el formulario.
Mostrar un mensaje confirmando que dicho proyecto ha sido eliminado.
Desbloquear la edición del formulario, es decir, podemos introducir datos en los
cuadros de texto y cuadros combinados del formulario.
Activar los siguientes botones de comando: BCSelTut y BCElimTut.
Desactivar los siguientes botones de comando: BCEditar, BCGuardarReg,
BCNuevoReg y BCEliminar.
Introducir el primer año del curso académico en el cuadro de texto CTCursoAcad1 y
el segundo año del curso académico en el cuadro de texto CTCursoAcad2, de
acuerdo con la fecha actual.
20. Evento Al hacer clic del botón de comando BCMostrarRegistros El código asociado a este evento se utiliza para:
Cerrar el formulario Proyectos fin de carrera – Nuevo registro y abrir el formulario
Proyectos fin de carrera.
Mostrar un mensaje cuando no sea posible guardar el nuevo registro antes de cerrar
el formulario Proyectos fin de carrera – Nuevo registro, debido a que falta por
rellenar algún campo requerido o porque se ha detectado otro registro con el mismo
autor (nombre y apellidos) del proyecto fin de carrera. Este mensaje pregunta al
usuario si desea salir del formulario Proyectos fin de carrera – Nuevo registro sin
guardar el nuevo registro o, por el contrario, prefiere permanecer en dicho
formulario para poder introducir las modificaciones oportunas y guardar dicho
registro.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 115 de 197
21. Evento Al hacer clic del botón de comando BCAtras El código asociado a este evento se utiliza para:
Cerrar el formulario Proyectos fin de carrera – Nuevo registro y regresar al
formulario que teníamos abierto anteriormente.
Mostrar un mensaje cuando no sea posible guardar el nuevo registro antes de cerrar
el formulario Proyectos fin de carrera – Nuevo registro, debido a que falta por
rellenar algún campo requerido o porque se ha detectado otro registro con el mismo
profesor (nombre y apellidos). Este mensaje pregunta al usuario si desea salir del
formulario Proyectos fin de carrera – Nuevo registro sin guardar el nuevo registro
o, por el contrario, prefiere permanecer en dicho formulario para poder introducir las
modificaciones oportunas y guardar dicho registro.
22. Evento Al hacer clic del botón de comando BCCerrar El código asociado a este evento se utiliza para:
Cerrar el formulario Proyectos fin de carrera – Nuevo registro y abrir el formulario
Panel principal.
Mostrar un mensaje cuando no sea posible guardar el nuevo registro antes de cerrar
el formulario Proyectos fin de carrera – Nuevo registro, debido a que falta por
rellenar algún campo requerido o porque se ha detectado otro registro con el mismo
profesor (nombre y apellidos). Este mensaje pregunta al usuario si desea salir del
formulario Proyectos fin de carrera – Nuevo registro sin guardar el nuevo registro
o, por el contrario, prefiere permanecer en dicho formulario para poder introducir las
modificaciones oportunas y guardar dicho registro.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 116 de 197
6.6.- Formulario SesionesDeTribunal El aspecto que presenta el formulario SesionesDeTribunal es el siguiente:
Figura 6.6.a
Este formulario muestra toda la información asociada a las sesiones de tribunal.
Llamamos sesión de tribunal al conjunto formado por el tribunal y los proyectos fin de
carrera que son evaluados por dicho tribunal. Cada tribunal está compuesto por tres
profesores del Departamento. Además, los tribunales se constituyen con una frecuencia
mensual, y cada tribunal puede evaluar un máximo de seis proyectos fin de carrera. Esto
quiere decir que si, por ejemplo, en el último mes se presentaron 14 proyectos fin de
carrera, habrá que generar tres tribunales diferentes, es decir, tres sesiones de tribunal,
dos de cinco proyectos y una de cuatro, si realizamos un reparto lo más homogéneo
posible.
En la figura 6.6.a podemos ver que en la barra de título aparece el título del formulario:
Sesiones de tribunal. Para referirnos a este formulario, podemos hacerlo por su nombre
(SesionesDeTribunal) o bien por su título (Sesiones de tribunal). Los registros de este
formulario proceden de la tabla SesionesDeTribunal de la base de datos y se muestran
de uno en uno.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 117 de 197
También podemos apreciar que el formulario cuenta con varias fichas, es decir, varias
páginas dentro del mismo formulario. Más concretamente, vemos que en la figura 6.6.a
se encuentra seleccionada la ficha titulada Sesión de tribunal. Existen además otras dos
fichas cuyo aspecto mostramos a continuación:
Figura 6.6.b – Ficha Proyectos fin de carrera
Figura 6.6.c – Ficha Tribunal
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 118 de 197
6.6.1.- Controles Vamos a realizar una descripción de cada uno de los controles que posee el formulario
Sesiones de tribunal, lo cual nos ayudará a comprender el funcionamiento de este
formulario.
1. Ficha Sesion
Es la ficha seleccionada en la figura 6.6.a. Se titula Sesión de tribunal aunque su
nombre es simplemente Sesion. Para referirnos a esta ficha, podemos hacerlo por su
nombre (Sesion) o bien por su título (Sesión de tribunal).
A esta ficha pertenecen los siguientes controles del formulario: CTCursoAcad1,
CTCursoAcad2, CCMes, CTFechaDef, CTHoraDef y CCAulaDef.
Contiene el curso académico, el mes del año en el que se celebra la sesión de
tribunal, la fecha de defensa (día, mes y año) de los proyectos incluidos en la sesión,
la hora de celebración de la sesión de tribunal así como el aula o salón donde tiene
lugar dicha celebración.
2. Ficha Proyectos
Es la ficha seleccionada en la figura 6.6.b. Se titula Proyectos fin de carrera aunque
su nombre es simplemente Proyectos. Para referirnos a esta ficha, podemos hacerlo
por su nombre (Proyectos) o bien por su título (Proyectos fin de carrera).
A esta ficha pertenecen los siguientes controles del formulario: CCNumProyectos,
SFProyectos, BCSelProy, BCElimProy y BCProyectos.
Contiene los proyectos fin de carrera incluidos en la sesión de tribunal.
3. Ficha Tribunal
Es la ficha seleccionada en la figura 6.6.c. Se titula Tribunal, por lo que en este caso
coinciden el nombre y el título de la ficha.
A esta ficha pertenecen los siguientes controles del formulario: CCNumProfesores,
SFTribunal, BCSelTrib, BCElimProf, BCElimTrib, BCProfesores,
BCAsigAutCargos y BCAsigManCargos.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 119 de 197
Contiene a los profesores del tribunal encargado de evaluar los proyectos fin de
carrera incluidos en la sesión de tribunal.
4. Cuadro de texto CTCursoAcad1
Pertenece a la ficha Sesión de tribunal. La etiqueta titulada Curso académico está
asociada a los cuadros de texto CTCursoAcad1 y CTCursoAcad2.
Muestra el campo CursoAcad1 de la tabla SesionesDeTribunal de la base de datos.
Este campo tiene las siguientes propiedades:
Tipo de datos: texto (es decir, texto o combinaciones de texto y números).
Tamaño del campo: el número máximo de caracteres es de 4.
Máscara de entrada: 0000;_
La máscara de entrada sirve para que los usuarios introduzcan en el cuadro de
texto valores que se ajustan a un determinado formato, en este caso el formato
de un año, o sea, un número entero positivo con cuatro cifras. Usaremos el guión
bajo como carácter marcador.
Regla de validación: entre 1964 y 2100 (ambos inclusive).
La regla de validación sirve para que los datos introducidos en el cuadro de texto
no infrinjan dicha regla.
Requerido: sí (es decir, la entrada de datos es obligatoria en este campo).
Permitir longitud cero: no.
Cada curso académico esta compuesto por dos años: por ejemplo, el curso
académico 2004/2005 está formado por los años 2004 y 2005. El cuadro de texto
CTCursoAcad1 contiene el primero de los años del curso académico (o sea, en el
ejemplo sería el año 2004).
5. Cuadro de texto CTCursoAcad2
Pertenece a la ficha Sesión de tribunal. La etiqueta titulada Curso académico está
asociada a los cuadros de texto CTCursoAcad1 y CTCursoAcad2.
Muestra el campo CursoAcad2 de la tabla SesionesDeTribunal de la base de datos.
Este campo tiene las siguientes propiedades:
Tipo de datos: texto (es decir, texto o combinaciones de texto y números).
Tamaño del campo: el número máximo de caracteres es de 4.
Requerido: sí (es decir, la entrada de datos es obligatoria en este campo).
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 120 de 197
Permitir longitud cero: no.
Cada curso académico esta compuesto por dos años: por ejemplo, el curso
académico 2004/2005 está formado por los años 2004 y 2005. El cuadro de texto
CTCursoAcad2 contiene el segundo de los años del curso académico (o sea, en el
ejemplo sería el año 2005).
Está bloqueado, es decir, no podemos modificar el contenido de este cuadro de
texto. El segundo año del curso académico se escribe automáticamente en
CTCursoAcad2 cuando introducimos el primer año de dicho curso en
CTCursoAcad1. Calcular el segundo año a partir del primero es muy sencillo, basta
con sumarle uno.
6. Cuadro combinado CCMes
Pertenece a la ficha Sesión de tribunal y tiene asociada una etiqueta titulada Mes.
Muestra el campo MesID de la tabla SesionesDeTribunal de la base de datos. Este
campo tiene las siguientes propiedades:
Tipo de datos: número.
Tamaño del campo: entero largo.
Requerido: sí (es decir, la entrada de datos es obligatoria en este campo).
Tiene como origen la siguiente consulta:
“SELECT Meses.MesID, Meses.Mes FROM Meses ORDER BY Meses.MesID;”
Esta consulta genera una tabla con dos columnas, que son los campos MesID y Mes
de la tabla Meses, y tantas filas como registros contiene la tabla Meses. Los valores
que aparecen en la lista desplegable del cuadro combinado son los del campo Mes
mientras que en la tabla SesionesDeTribunal se guardan los valores del campo
MesID debido a que tiene menor tamaño.
Contiene, por tanto, el mes del año en el que se celebra la sesión de tribunal.
Está limitado a la lista, es decir, no puede contener ningún valor que no se encuentre
en la lista.
7. Cuadro de texto CTFechaDef
Pertenece a la ficha Sesión de tribunal y tiene asociada una etiqueta titulada Fecha
de defensa.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 121 de 197
Muestra el campo FechaDefensa de la tabla SesionesDeTribunal de la base de datos.
Este campo tiene las siguientes propiedades:
Tipo de datos: fecha/hora.
Formato: fecha corta (por ejemplo: 20/05/2005)
Máscara de entrada: 00/00/0000;_
La máscara de entrada sirve para que los usuarios introduzcan en el cuadro de
texto valores que se ajustan a un determinado formato, en este caso el formato de
fecha corta. Usaremos el guión bajo como carácter marcador.
Requerido: sí (es decir, la entrada de datos es obligatoria en este campo).
Contiene, por tanto, la fecha de defensa de los proyectos fin de carrera incluidos en
la sesión de tribunal.
8. Cuadro de texto CTHoraDef
Pertenece a la ficha Sesión de tribunal y tiene asociada una etiqueta titulada Hora de
defensa.
Muestra el campo HoraDefensa de la tabla SesionesDeTribunal de la base de datos.
Este campo tiene las siguientes propiedades:
Tipo de datos: fecha/hora.
Formato: hora corta (por ejemplo: 17:34)
Máscara de entrada: 00:00;_
La máscara de entrada sirve para que los usuarios introduzcan en el cuadro de
texto valores que se ajustan a un determinado formato, en este caso el formato de
fecha corta. Usaremos el guión bajo como carácter marcador.
Requerido: no (es decir, la entrada de datos no es obligatoria en este campo).
Contiene, por tanto, la hora de celebración de la sesión de tribunal.
9. Cuadro combinado CCAulaDef
Pertenece a la ficha Sesión de tribunal y tiene asociada una etiqueta titulada Aula de
defensa.
Muestra el campo AulaID de la tabla SesionesDeTribunal de la base de datos. Este
campo tiene las siguientes propiedades:
Tipo de datos: número.
Tamaño del campo: entero largo.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 122 de 197
Requerido: no (es decir, la entrada de datos no es obligatoria en este campo).
Tiene como origen la siguiente consulta:
“SELECT Aulas.AulaID, Aulas.Aula FROM Aulas ORDER BY Aulas.Aula;”
Esta consulta genera una tabla con dos columnas, que son los campos AulaID y Aula
de la tabla Aulas, y tantas filas como registros contiene la tabla Aulas. Los valores
que aparecen en la lista desplegable del cuadro combinado son los del campo Aula
mientras que en la tabla SesionesDeTribunal se guardan los valores del campo
AulaID debido a que tiene menor tamaño.
Contiene, por tanto, el aula o salón donde se celebra la sesión de tribunal.
Está limitado a la lista, es decir, no puede contener ningún valor que no se encuentre
en la lista.
10. Cuadro combinado CCNumProyectos
Pertenece a la ficha Proyectos fin de carrera y tiene asociada una etiqueta titulada
Número de proyectos fin de carrera.
Muestra el campo NumProyectos de la tabla SesionesDeTribunal de la base de
datos. Este campo tiene las siguientes propiedades:
Tipo de datos: número.
Tamaño del campo: entero.
Valor predeterminado: 6.
Requerido: sí (es decir, la entrada de datos es obligatoria en este campo).
Tiene como origen la tabla NumeroProyectos de la base de datos. Por tanto, los
valores que aparecen en la lista desplegable del cuadro combinado son los valores
del campo NumProyectos de la tabla NumeroProyectos.
Contiene, por tanto, el número de proyectos fin de carrera que han de incluirse en la
sesión de tribunal.
11. Subformulario SFProyectos
Pertenece a la ficha Proyectos fin de carrera y no lleva asociada ninguna etiqueta.
Sabemos que un subformulario es un formulario que se inserta en otro. El
formulario primario se denomina formulario principal, y el formulario dentro del
formulario se denomina subformulario. En este caso, el formulario principal es el
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 123 de 197
formulario SesionesDeTribunal y el subformulario recibe el nombre de
SFProyectos.
Los registros de este subformulario proceden de la tabla Proyectos de la base de
datos, mientras que los del formulario SesionesDeTribunal provienen de la tabla
SesionesDeTribunal como ya sabemos. La relación SesionesDeTribunal – Proyectos
es uno a varios, por lo que el formulario principal muestra la parte “uno” de la
relación, es decir, la sesión de tribunal en cuestión, mientras que el subformulario
muestra la parte “varios” de la relación, o sea, los proyectos fin de carrera incluidos
en dicha sesión de tribunal.
Recoge, por tanto, los proyectos fin de carrera incluidos en la sesión de tribunal.
Contiene cinco cuadros de texto que se titulan F/E Secretaría, Título, Autor: primer
apellido, Autor: segundo apellido y Autor: nombre. El primero recoge la fecha de
entrada en Secretaría, el segundo contiene el título del proyecto fin de carrera y los
tres últimos muestran el nombre y los dos apellidos del autor de dicho proyecto.
Está bloqueado, es decir, no podemos modificar el contenido de los cuadros de
texto.
12. Botón de comando BCSelProy
Pertenece a la ficha Proyectos fin de carrera y tiene asociada una etiqueta titulada
Seleccionar.
Al hacer clic sobre este botón abrimos el formulario Seleccionar proyectos fin de
carrera.
13. Botón de comando BCElimProy
Pertenece a la ficha Proyectos fin de carrera y tiene asociada una etiqueta titulada
Eliminar.
Al hacer clic sobre este botón eliminamos el proyecto fin de carrera que se
encuentra seleccionado en el subformulario SFProyectos.
14. Botón de comando BCProyectos
Pertenece a la ficha Proyectos fin de carrera y tiene asociada una etiqueta titulada Ir
a Proyectos Fin de Carrera.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 124 de 197
Al hacer clic sobre este botón cerramos el formulario Sesiones de tribunal y abrimos
el formulario Proyectos fin de carrera, de tal forma que el registro mostrado en el
formulario Proyectos fin de carrera corresponde al proyecto que estaba
seleccionado en el subformulario SFProyectos del formulario Sesiones de tribunal..
15. Cuadro combinado CCNumProfesores
Pertenece a la ficha Tribunal y tiene asociada una etiqueta titulada Número de
profesores.
Muestra el campo NumProfesores de la tabla SesionesDeTribunal de la base de
datos. Este campo tiene las siguientes propiedades:
Tipo de datos: número.
Tamaño del campo: entero.
Valor predeterminado: 3.
Requerido: sí (es decir, la entrada de datos es obligatoria en este campo).
Tiene como origen la tabla NumeroProfesores de la base de datos. Por tanto, los
valores que aparecen en la lista desplegable del cuadro combinado son los valores
del campo NumProfesores de la tabla NumeroProfesores.
Contiene, por tanto, el número de profesores que ha de tener el tribunal.
16. Subformulario SFTribunal
Pertenece a la ficha Tribunal y no lleva asociada ninguna etiqueta.
Sabemos que un subformulario es un formulario que se inserta en otro. El
formulario primario se denomina formulario principal, y el formulario dentro del
formulario se denomina subformulario. En este caso, el formulario principal es el
formulario SesionesDeTribunal y el subformulario recibe el nombre de SFTribunal.
Los registros de este subformulario proceden de la tabla Tribunales de la base de
datos, mientras que los del formulario SesionesDeTribunal provienen de la tabla
SesionesDeTribunal como ya sabemos. La relación SesionesDeTribunal –
Tribunales es uno a varios, por lo que el formulario principal muestra la parte “uno”
de la relación, es decir, la sesión de tribunal en cuestión, mientras que el
subformulario muestra la parte “varios” de la relación, o sea, los profesores del
tribunal correspondiente a dicha sesión de tribunal.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 125 de 197
Recoge, por tanto, los profesores del tribunal encargado de evaluar los proyectos fin
de carrera incluidos en la sesión de tribunal.
Contiene un cuadro combinado titulado Cargo y tres cuadros de texto que se titulan
Primer apellido, Segundo apellido y Nombre. Los cuadros de texto muestran el
nombre y los dos apellidos de cada profesor del tribunal mientras que el cuadro
combinado recoge el cargo que desempeña cada profesor dentro del tribunal. En la
lista desplegable del cuadro combinado aparecen tres posibles cargos, que son los de
Presidente, Vocal y Secretario. Los tres cuadros de texto se encuentran bloqueados,
por lo que resulta imposible modificar su contenido. El cuadro combinado, sin
embargo, no está bloqueado.
Está bloqueado, es decir, no podemos modificar el contenido de los cuadros de texto
ni tampoco el del cuadro combinado. Si el subformulario no estuviese bloqueado,
sólo podríamos modificar el contenido del cuadro combinado puesto que los cuadros
de texto se encuentran bloqueados ya de por sí.
17. Botón de comando BCSelTrib
Pertenece a la ficha Tribunal y tiene asociada una etiqueta titulada Seleccionar.
Al hacer clic sobre este botón abrimos el formulario Seleccionar tribunal.
18. Botón de comando BCElimProf
Pertenece a la ficha Tribunal y tiene asociada una etiqueta titulada Eliminar
profesor del tribunal.
Al hacer clic sobre este botón eliminamos el profesor que se encuentra seleccionado
en el subformulario SFTribunal.
19. Botón de comando BCElimTrib
Pertenece a la ficha Tribunal y tiene asociada una etiqueta titulada Eliminar tribunal
completo.
Al hacer clic sobre este botón eliminamos todos los profesores que aparecen en el
subformulario SFTribunal.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 126 de 197
20. Botón de comando BCProfesores
Pertenece a la ficha Tribunal y tiene asociada una etiqueta titulada Ir a Profesores.
Al hacer clic sobre este botón cerramos el formulario Sesiones de tribunal y abrimos
el formulario Profesores, de tal forma que el registro mostrado en el formulario
Profesores corresponde al profesor que estaba seleccionado en el subformulario
SFTribunal del formulario Sesiones de tribunal.
21. Botón de comando BCAsigAutCargos
Pertenece a la ficha Tribunal y tiene asociada una etiqueta titulada Asignación
automática de cargos.
Al hacer clic sobre este botón se asignan de forma automática los cargos que
desempeñan los miembros del tribunal. Para ello es necesario que el tribunal esté
formado por tres miembros. Recordemos que en función de la categoría, la
dedicación y la antigüedad (por este orden de prioridad) que posee cada uno de los
tres miembros del tribunal, ocuparán los cargos de presidente, vocal y secretario de
dicho tribunal.
22. Botón de comando BCAsigManCargos
Pertenece a la ficha Tribunal y tiene asociada una etiqueta titulada Asignación
manual de cargos.
Al hacer clic sobre este botón desbloqueamos el subformulario SFTribunal, lo cual
nos permite modificar los cargos de los profesores del tribunal.
23. Botón de comando BCEditar
No pertenece a ninguna de las fichas y tiene asociada una etiqueta titulada Editar
registro.
Al hacer clic sobre este botón desbloqueamos la edición del registro mostrado en el
formulario, es decir, podemos modificar los datos que aparecen en el formulario.
24. Botón de comando BCGuardarReg
No pertenece a ninguna de las fichas y tiene asociada una etiqueta titulada Guardar
registro.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 127 de 197
Al hacer clic sobre este botón bloqueamos la edición del registro mostrado en el
formulario y se guardan los cambios realizados en dicho registro.
25. Botón de comando BCNuevoReg
No pertenece a ninguna de las fichas y tiene asociada una etiqueta titulada Nuevo
registro.
Al hacer clic sobre este botón cerramos el formulario Sesiones de tribunal y abrimos
el formulario Sesiones de tribunal – Nuevo registro.
26. Botón de comando BCEliminar
No pertenece a ninguna de las fichas y tiene asociada una etiqueta titulada Eliminar
registro.
Al hacer clic sobre este botón eliminamos el registro mostrado en el formulario.
27. Botón de comando BCBuscar
No pertenece a ninguna de las fichas y tiene asociada una etiqueta titulada Buscar
registros.
Al hacer clic sobre este botón abrimos el formulario BuscarSesiones (el título de
este formulario es Buscar registros).
28. Botón de comando BCOrdenar
No pertenece a ninguna de las fichas y tiene asociada una etiqueta titulada Ordenar
registros.
Al hacer clic sobre este botón abrimos el formulario OrdenarSesiones (el título de
este formulario es Ordenar registros).
29. Botón de comando BCQuitarFiltro
No pertenece a ninguna de las fichas y tiene asociada una etiqueta titulada Quitar
filtro u orden.
Al hacer clic sobre este botón quitamos los filtros y ordenaciones existentes en el
formulario. De esta forma, utilizando los botones de desplazamiento y el cuadro de
número de registro, situados en la parte inferior izquierda del formulario, podemos
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 128 de 197
desplazarnos por todos los registros de la tabla SesionesDeTribunal, los cuales
aparecen en el orden en que han sido introducidos en dicha tabla.
30. Botón de comando BCMostrarRegistros
No pertenece a ninguna de las fichas y tiene asociada una etiqueta titulada Mostrar
todos los registros.
Se encuentra siempre desactivado y su presencia se debe a razones puramente
estéticas. Este botón de comando se utiliza en el formulario Sesiones de tribunal –
Nuevo registro para cerrar dicho formulario y abrir el formulario Sesiones de
tribunal. Esto dos formularios cuentan con el mismo aspecto para que, al pasar de
uno a otro, no se note que hemos cambiado de formulario y parezcan un mismo
formulario. Por este motivo se han incluido los mismos controles en ambos
formularios, de tal forma que en cada formulario desactivamos aquellos controles
que sólo sirven para el otro formulario.
31. Botón de comando BCAtras
No pertenece a ninguna de las fichas. Está situado en la esquina inferior izquierda
del formulario y contiene la imagen de una flecha de color verde.
Al hacer clic sobre este botón cerramos el formulario Sesiones de tribunal y
regresamos al formulario que teníamos abierto anteriormente.
32. Botón de comando BCAvisoReloj
No pertenece a ninguna de las fichas. Está situado en la parte inferior central del
formulario y contiene la imagen de un reloj.
Al hacer clic sobre este botón abrimos el formulario AvisoReloj (el título de este
formulario es Importante), en el cual se muestra simplemente un mensaje para
recordar al usuario que mantenga el reloj del sistema operativo ajustado a la fecha y
hora actuales.
33. Botón de comando BCCerrar
No pertenece a ninguna de las fichas. Está situado en la esquina inferior derecha del
formulario y contiene la imagen de una letra “X” de color gris oscuro.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 129 de 197
Al hacer clic sobre este botón cerramos el formulario Sesiones de tribunal y abrimos
el formulario Panel principal.
6.6.2.- Código VBA En este apartado citaremos todos los eventos a los cuales hemos asignado código VBA
y explicaremos para qué sirve dicho código.
1. Evento Al activar registro del formulario SesionesDeTribunal Este evento se produce cuando el enfoque se desplaza a un registro, haciendo que sea el
registro actual, o cuando el formulario se actualiza o se somete a una nueva consulta.
El código asociado a este evento se utiliza para:
Bloquear la edición del registro mostrado en el formulario, es decir, no podemos
modificar los datos que aparecen en el formulario.
Activar los siguientes botones de comando: BCEditar, BCEliminar, BCBuscar,
BCOrdenar y BCQuitarFiltro.
Desactivar los siguientes botones de comando: BCGuardarReg, BCSelProy,
BCElimProy, BCSelTrib, BCElimProf, BCElimTrib, BCAsigAutCargos y
BCAsigManCargos.
Mostrar un mensaje indicando que el registro anterior al actual ha sido actualizado si
es que dicho registro fue modificado y no fue guardado con anterioridad.
2. Evento Al Eliminar del formulario SesionesDeTribunal Este evento se produce cuando el usuario hace clic sobre el botón de comando
BCEliminar para eliminar un registro, pero antes de que el registro se elimine
realmente.
El código asociado a este evento se utiliza para mostrar un mensaje al usuario
preguntándole si está seguro de que desea eliminar el registro que ha seleccionado.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 130 de 197
3. Evento Al abrir del formulario SesionesDeTribunal Este evento se produce cuando se abre el formulario, pero antes de que se muestre el
primer registro.
El código asociado a este evento se utiliza para que el formulario Sesiones de tribunal
muestre el último registro de la tabla SesionesDeTribunal. Además, si en esta tabla no
existiera ningún registro, se muestra un mensaje explicando tal circunstancia y a
continuación se cierra el formulario Sesiones de tribunal y se abre el formulario
Sesiones de tribunal – Nuevo registro para que podamos introducir el primer registro.
4. Evento Al cerrar del formulario SesionesDeTribunal Este evento se produce cuando el formulario se cierra y desaparece de la pantalla.
El código asociado a este evento se utiliza para mostrar un mensaje indicando que el
último registro mostrado por el formulario ha sido actualizado si es que dicho registro
fue modificado y no fue guardado con anterioridad.
5. Evento Al bajar una tecla del formulario SesionesDeTribunal El código asociado a este evento se utiliza para desactivar los métodos abreviados de
teclado de Access. Con esto queremos evitar que al pulsar ciertas teclas se tenga acceso
a comandos u operaciones frecuentes en Access (por ejemplo: si pulsamos ALT+F4
salimos de Access, si pulsamos F12 se abre el cuadro de diálogo Guardar como, etc.).
Pretendemos que el usuario maneje la aplicación utilizando únicamente los controles de
la aplicación y de esta manera poder garantizar su correcto funcionamiento.
6. Evento Al ocurrir un error del formulario SesionesDeTribunal El código asociado a este evento se utiliza para mostrar un mensaje de error cuando se
produce un error desconocido.
7. Evento Antes de actualizar del cuadro de texto CTCursoAcad1 Este evento se produce antes de que se actualicen los datos del cuadro de texto.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 131 de 197
El código asociado a este evento se utiliza para deshacer los cambios realizados en este
cuadro de texto si el subformulario SFTribunal contiene algún registro. Es decir, no
podemos modificar el curso académico a menos que el tribunal esté vacío.
8. Evento Después de actualizar del cuadro de texto CTCursoAcad1 Este evento se produce después de que se actualicen los datos modificados en el cuadro
de texto.
El código asociado a este evento se utiliza para que el segundo año del curso académico
aparezca automáticamente en CTCursoAcad2 una vez hemos introducido el primer año
de dicho curso en CTCursoAcad1. Calcular el segundo año a partir del primero es muy
sencillo, basta con sumarle uno.
9. Evento Antes de actualizar del cuadro combinado CCMes Este evento se produce antes de que se actualicen los datos del cuadro combinado.
El código asociado a este evento se utiliza para deshacer los cambios realizados en este
cuadro combinado si el subformulario SFTribunal contiene algún registro. Es decir, no
podemos modificar el mes en el que se celebra la sesión de tribunal a menos que el
tribunal esté vacío.
10. Evento Antes de actualizar del cuadro combinado CCNumProyectos Este evento se produce antes de que se actualicen los datos del cuadro combinado.
El código asociado a este evento se utiliza para:
Deshacer los cambios realizados en este cuadro combinado si seleccionamos un
número de proyectos menor de los que ya contiene el subformulario SFProyectos.
Deshacer los cambios realizados en este cuadro combinado si el subformulario
SFTribunal contiene algún registro. Es decir, no podemos modificar el número de
proyectos fin de carrera que deben incluirse en la sesión de tribunal a menos que el
tribunal esté vacío.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 132 de 197
11. Evento Al no estar en la lista del cuadro combinado CCNumProyectos Este evento se produce cuando el usuario introduce en el componente cuadro de texto
del cuadro combinado un valor que no se encuentra en la lista del cuadro combinado.
El código asociado a este evento se utiliza para añadir dicho valor a la lista del cuadro
combinado si el usuario lo desea.
12. Evento Al hacer clic del botón de comando BCSelProy El código asociado a este evento se utiliza para abrir el formulario SeleccionarPfc (el
título de este formulario es Seleccionar proyectos fin de carrera).
13. Evento Al hacer clic del botón de comando BCElimProy El código asociado a este evento se utiliza para:
Mostrar un mensaje preguntando al usuario si está seguro de que desea eliminar del
subformulario SFProyectos el proyecto fin de carrera que ha seleccionado.
En el caso de que no hayamos seleccionado ningún proyecto fin de carrera aparece
un mensaje indicando tal circunstancia.
Eliminar del subformulario SFProyectos el proyecto fin de carrera seleccionado si el
usuario así lo desea.
Impedir que se elimine del subformulario SFProyectos el proyecto fin de carrera
seleccionado si el subformulario SFTribunal contiene algún registro. Es decir, no
podemos eliminar ninguno de los proyectos fin de carrera que aparecen en el
subformulario SFProyectos a menos que el tribunal esté vacío.
14. Evento Al hacer clic del botón de comando BCProyectos El código asociado a este evento se utiliza para:
Cerrar el formulario Sesiones de tribunal y abrir el formulario Proyectos fin de
carrera, de tal forma que el registro mostrado en el formulario Proyectos fin de
carrera corresponde al proyecto que estaba seleccionado en el subformulario
SFProyectos del formulario Sesiones de tribunal.
En el caso de que no hayamos seleccionado ningún proyecto fin de carrera aparece
un mensaje indicando tal circunstancia.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 133 de 197
15. Evento Antes de actualizar del cuadro combinado CCNumProfesores Este evento se produce antes de que se actualicen los datos del cuadro combinado.
El código asociado a este evento se utiliza para deshacer los cambios realizados en este
cuadro combinado si seleccionamos un número de profesores menor de los que ya
contiene el subformulario SFTribunales.
16. Evento Al no estar en la lista del cuadro combinado CCNumProfesores Este evento se produce cuando el usuario introduce en el componente cuadro de texto
del cuadro combinado un valor que no se encuentra en la lista del cuadro combinado.
El código asociado a este evento se utiliza para añadir dicho valor a la lista del cuadro
combinado si el usuario lo desea.
17. Evento Al salir del subformulario STTribunal Este evento se produce inmediatamente antes de que el subformulario pierda el enfoque
en favor de otro control del mismo formulario.
El código asociado a este evento se utiliza para:
Activar el botón de comando BCAsigManCargos si se encuentran desactivados los
botones de comando BCAsigManCargos y BCEditar.
Bloquear el subformulario SFTribunal si se encuentran desactivados los botones de
comando BCAsigManCargos y BCEditar.
18. Evento Al hacer clic del botón de comando BCSelTrib El código asociado a este evento se utiliza para abrir el formulario SeleccionarTribunal
(el título de este formulario es Seleccionar tribunal), pero solamente si ya hemos
introducido todos los proyectos fin de carrera, es decir, sólo en el caso de que el número
indicado en CCNumProyectos coincida con el número de registros que contiene el
subformulario SFProyectos.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 134 de 197
19. Evento Al hacer clic del botón de comando BCElimProf El código asociado a este evento se utiliza para:
Mostrar un mensaje preguntando al usuario si está seguro de que desea eliminar del
tribunal al profesor que ha seleccionado.
En el caso de que no hayamos seleccionado ningún miembro del tribunal aparece un
mensaje indicando tal circunstancia.
Mostrar un mensaje cuando el curso académico o el mes en el que se celebra la
sesión de tribunal se alejan demasiado de la fecha actual proporcionada por el
sistema operativo, pidiendo al usuario que revise las fechas antes de continuar.
Eliminar del tribunal al profesor seleccionado si el usuario así lo desea.
Mostrar un mensaje cuando el curso académico o el mes en el que se celebra la
sesión de tribunal se alejan demasiado de la fecha actual proporcionada por el
sistema operativo, preguntando al usuario si desea que los cambios realizados (es
decir, eliminar del tribunal al profesor seleccionado) afecten o no a la secuenciación
de los tribunales.
Actualizar la secuenciación de los tribunales tras quitar del tribunal al profesor
seleccionado, si el usuario así lo desea.
Si el profesor eliminado del tribunal no se encuentra entre los registros del
formulario Profesores, entonces se muestra un mensaje indicando que dicho
profesor no forma parte de la secuenciación actualmente.
Mostrar un mensaje indicando el número de miembros del tribunal que faltan por
asignar si es que falta alguno.
20. Evento Al hacer clic del botón de comando BCElimTrib Igual que el evento anterior pero en vez de quitar del tribunal únicamente al profesor
seleccionado, en este caso eliminamos del tribunal a todos los profesores que figuran en
el subformulario SFTribunal. Además, los profesores son eliminados del tribunal en
sentido contrario a como fueron asignados, es decir, el profesor que fue asignado en
primer lugar será el último en ser eliminado y viceversa. De esta forma, si los profesores
vuelven a la cola de la secuenciación, mantendrán las posiciones relativas que tenían
antes de ser asignados al tribunal.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 135 de 197
21. Evento Al hacer clic del botón de comando BCProfesores El código asociado a este evento se utiliza para:
Cerrar el formulario Sesiones de tribunal y abrir el formulario Profesores, de tal
forma que el registro mostrado en el formulario Profesores corresponde al profesor
que estaba seleccionado en el subformulario SFTribunal del formulario Sesiones de
tribunal.
En el caso de que no hayamos seleccionado ningún profesor aparece un mensaje
indicando tal circunstancia.
Si el profesor seleccionado en el subformulario SFTribunal no se encuentra entre los
registros del formulario Profesores, entonces se muestra un mensaje indicando que
dicho profesor fue eliminado desde el formulario Profesores con anterioridad.
22. Evento Al hacer clic del botón de comando BCAsigAutCargos El código asociado a este evento se utiliza para:
Asignar de forma automática los cargos que desempeñan los miembros del tribunal.
Para ello es necesario que el tribunal esté formado por tres miembros. Recordemos
que en función de la categoría, la dedicación y la antigüedad (por este orden de
prioridad) que posee cada uno de los tres miembros del tribunal, ocuparán los cargos
de presidente, vocal y secretario de dicho tribunal.
Si el número de miembros del tribunal no es igual a tres, entonces aparece un
mensaje indicando que no es posible la asignación automática de cargos.
Si alguno de los profesores del tribunal no se encuentra entre los registros del
formulario Profesores, entonces se muestra un mensaje indicando que no es posible
asignar automáticamente los cargos debido a que alguno de los profesores del
tribunal fue eliminado con anterioridad desde el formulario Profesores.
23. Evento Al hacer clic del botón de comando BCAsigManCargos El código asociado a este evento se utiliza para:
Desactivar el botón de comando BCAsigManCargos.
Desbloquear el subformulario SFTribunal, lo cual nos permite modificar los cargos
de los profesores del tribunal.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 136 de 197
En el caso de que el tribunal no tenga ningún componente aparece un mensaje
indicando tal circunstancia.
24. Evento Al hacer clic del botón de comando BCEditar El código asociado a este evento se utiliza para:
Desbloquear la edición del registro mostrado en el formulario, es decir, podemos
modificar los datos que aparecen en el formulario.
Activar los siguientes botones de comando: BCGuardarReg, BCSelProy,
BCElimProy, BCSelTrib, BCElimProf, BCElimTrib, BCAsigAutCargos y
BCAsigManCargos.
Desactivar los siguientes botones de comando: BCEditar, BCEliminar, BCBuscar,
BCOrdenar y BCQuitarFiltro.
25. Evento Al hacer clic del botón de comando BCGuardarReg El código asociado a este evento se utiliza para:
Guardar los cambios realizados en el registro que muestra el formulario.
Mostrar un mensaje indicando que el registro ha sido actualizado.
Bloquear la edición del registro mostrado en el formulario, es decir, no podemos
modificar los datos que aparecen en el formulario.
Activar los siguientes botones de comando: BCEditar, BCEliminar, BCBuscar,
BCOrdenar y BCQuitarFiltro.
Desactivar los siguientes botones de comando: BCGuardarReg, BCSelProy,
BCElimProy, BCSelTrib, BCElimProf, BCElimTrib, BCAsigAutCargos y
BCAsigManCargos.
26. Evento Al hacer clic del botón de comando BCNuevoReg El código asociado a este evento se utiliza para cerrar el formulario Sesiones de tribunal
y abrir el formulario Sesiones de tribunal – Nuevo registro.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 137 de 197
27. Evento Al hacer clic del botón de comando BCEliminar El código asociado a este evento se utiliza para:
Eliminar la sesión de tribunal mostrada en el formulario.
Mostrar un mensaje confirmando que dicho sesión de tribunal ha sido eliminada.
Si queremos eliminar una sesión de tribunal cuyo tribunal no está vacío, entonces
aparece un mensaje indicando que no es posible la eliminación de dicha sesión de
tribunal. Es decir, no podemos eliminar una sesión de tribunal a menos que el
tribunal correspondiente a dicha sesión se encuentre vacío.
28. Evento Al hacer clic del botón de comando BCBuscar El código asociado a este evento se utiliza para abrir el formulario BuscarSesiones (el
título de este formulario es Buscar registros).
29. Evento Al hacer clic del botón de comando BCOrdenar El código asociado a este evento se utiliza para abrir el formulario OrdenarSesiones (el
título de este formulario es Ordenar registros).
30. Evento Al hacer clic del botón de comando BCQuitarFiltro El código asociado a este evento se utiliza para quitar los filtros y ordenaciones
existentes en el formulario, sin que cambie el registro mostrado por el formulario.
31. Evento Al hacer clic del botón de comando BCAtras El código asociado a este evento se utiliza para cerrar el formulario Sesiones de tribunal
y regresar al formulario que teníamos abierto anteriormente.
32. Evento Al hacer clic del formulario BCAvisoReloj El código asociado a este evento se utiliza para abrir el formulario AvisoReloj (el título
de este formulario es Importante).
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 138 de 197
33. Evento Al hacer clic del formulario BCCerrar El código asociado a este evento se utiliza para cerrar el formulario Sesiones de tribunal
y abrir el formulario Panel principal.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 139 de 197
6.7.- Formulario SesionesDeTribunalAgregar El aspecto que presenta el formulario SesionesDeTribunalAgregar es el siguiente:
Figura 6.7.a
En la figura 6.7.a podemos ver que en la barra de título aparece el título del formulario:
Sesiones de tribunal – Nuevo registro. Para referirnos a este formulario, podemos
hacerlo por su nombre (SesionesDeTribunalAgregar) o bien por su título (Sesiones de
tribunal – Nuevo registro).
Si comparamos las figuras 6.6.a y 6.7.a podemos apreciar que el formulario Sesiones de
tribunal y el formulario Sesiones de tribunal – Nuevo registro cuentan con el mismo
aspecto. Con esto se pretende que, al pasar de uno a otro, no se note que hemos
cambiado de formulario y parezcan un mismo formulario. Así, se han incluido los
mismos controles en ambos formularios, de tal forma que en cada formulario
desactivamos aquellos controles que sólo sirven para el otro formulario.
El formulario Sesiones de tribunal – Nuevo registro sirve, como su propio nombre
indica, para crear nueva sesiones de tribunal, es decir, a través de este formulario
podemos agregar nuevos registros a la tabla SesionesDeTribunal de la base de datos.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 140 de 197
Además, cada vez que incluimos un proyecto fin de carrera en el subformulario
SFProyectos o un miembro del tribunal en el subformulario SFTribunales, se agrega un
nuevo registro a la tabla Proyectos o a la tabla Tribunales respectivamente.
6.7.1.- Controles Son los mismos que los del formulario Sesiones de tribunal como ya hemos comentado.
Se encuentran desactivados los siguientes controles: BCBuscar, BCOrdenar y
BCQuitarFiltro.
6.7.2.- Código VBA En este apartado citaremos todos los eventos a los cuales hemos asignado código VBA
y explicaremos para qué sirve dicho código.
1. Evento Antes de insertar del formulario SesionesDeTribunalAgregar Este evento se produce cuando el usuario escribe el primer carácter de un nuevo
registro, pero antes de que el registro se cree realmente.
El código asociado a este evento se utiliza para activar el botón de comando
BCGuardarReg.
2. Evento Al eliminar del formulario SesionesDeTribunalAgregar El código asociado a este evento se utiliza para mostrar un mensaje al usuario
preguntándole si está seguro de que desea eliminar el registro que ha seleccionado.
3. Evento Al cargar del formulario SesionesDeTribunalAgregar Este evento se produce cuando se abre el formulario y se muestran sus registros.
El código asociado a este evento se utiliza para introducir el primer año del curso
académico en el cuadro de texto CTCursoAcad1 y el segundo año del curso académico
en el cuadro de texto CTCursoAcad2, de acuerdo con la fecha actual.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 141 de 197
4. Evento Al cerrar del formulario SesionesDeTribunalAgregar El código asociado a este evento se utiliza para mostrar un mensaje indicando que el
nuevo registro ha sido guardado si no hemos utilizado anteriormente el botón de
comando BCGuardarReg para guardarlo.
5. Evento Al bajar una tecla del formulario SesionesDeTribunalAgregar El código asociado a este evento se utiliza para desactivar los métodos abreviados de
teclado de Access. Con esto queremos evitar que al pulsar ciertas teclas se tenga acceso
a comandos u operaciones frecuentes en Access (por ejemplo: si pulsamos ALT+F4
salimos de Access, si pulsamos F12 se abre el cuadro de diálogo Guardar como, etc.).
Pretendemos que el usuario maneje la aplicación utilizando únicamente los controles de
la aplicación y de esta manera poder garantizar su correcto funcionamiento.
6. Evento Al ocurrir un error del formulario SesionesDeTribunalAgregar El código asociado a este evento se utiliza para mostrar un mensaje de error cuando se
produce un error desconocido.
7. Evento Antes de actualizar del cuadro de texto CTCursoAcad1 El código asociado a este evento se utiliza para deshacer los cambios realizados en este
cuadro de texto si el subformulario SFTribunal contiene algún registro. Es decir, no
podemos modificar el curso académico a menos que el tribunal esté vacío.
8. Evento Después de actualizar del cuadro de texto CTCursoAcad1 El código asociado a este evento se utiliza para que el segundo año del curso académico
aparezca automáticamente en CTCursoAcad2 una vez hemos introducido el primer año
de dicho curso en CTCursoAcad1. Calcular el segundo año a partir del primero es muy
sencillo, basta con sumarle uno.
9. Evento Antes de actualizar del cuadro combinado CCMes El código asociado a este evento se utiliza para deshacer los cambios realizados en este
cuadro combinado si el subformulario SFTribunal contiene algún registro. Es decir, no
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 142 de 197
podemos modificar el mes en el que se celebra la sesión de tribunal a menos que el
tribunal esté vacío.
10. Evento Antes de actualizar del cuadro combinado CCNumProyectos El código asociado a este evento se utiliza para:
Deshacer los cambios realizados en este cuadro combinado si seleccionamos un
número de proyectos menor de los que ya contiene el subformulario SFProyectos.
Deshacer los cambios realizados en este cuadro combinado si el subformulario
SFTribunal contiene algún registro. Es decir, no podemos modificar el número de
proyectos fin de carrera que deben incluirse en la sesión de tribunal a menos que el
tribunal esté vacío.
11. Evento Al no estar en la lista del cuadro combinado CCNumProyectos Este evento se produce cuando el usuario introduce en el componente cuadro de texto
del cuadro combinado un valor que no se encuentra en la lista del cuadro combinado.
El código asociado a este evento se utiliza para añadir dicho valor a la lista del cuadro
combinado si el usuario lo desea.
12. Evento Al hacer clic del botón de comando BCSelProy El código asociado a este evento se utiliza para:
Mostrar un mensaje indicando si falta por rellenar algún campo requerido.
Abrir el formulario SeleccionarPfcAgregar (el título de este formulario es
Seleccionar proyectos fin de carrera).
13. Evento Al hacer clic del botón de comando BCElimProy El código asociado a este evento se utiliza para:
Mostrar un mensaje preguntando al usuario si está seguro de que desea eliminar del
subformulario SFProyectos el proyecto fin de carrera que ha seleccionado.
En el caso de que no hayamos seleccionado ningún proyecto fin de carrera aparece
un mensaje indicando tal circunstancia.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 143 de 197
Eliminar del subformulario SFProyectos el proyecto fin de carrera seleccionado si el
usuario así lo desea.
Impedir que se elimine del subformulario SFProyectos el proyecto fin de carrera
seleccionado si el subformulario SFTribunal contiene algún registro. Es decir, no
podemos eliminar ninguno de los proyectos fin de carrera que aparecen en el
subformulario SFProyectos a menos que el tribunal esté vacío.
14. Evento Al hacer clic del botón de comando BCProyectos El código asociado a este evento se utiliza para:
Cerrar el formulario Sesiones de tribunal – Nuevo registro y abrir el formulario
Proyectos fin de carrera, de tal forma que el registro mostrado en el formulario
Proyectos fin de carrera corresponde al proyecto que estaba seleccionado en el
subformulario SFProyectos del formulario Sesiones de tribunal – Nuevo registro.
En el caso de que no hayamos seleccionado ningún proyecto fin de carrera aparece
un mensaje indicando tal circunstancia.
15. Evento Antes de actualizar del cuadro combinado CCNumProfesores El código asociado a este evento se utiliza para deshacer los cambios realizados en este
cuadro combinado si seleccionamos un número de profesores menor de los que ya
contiene el subformulario SFTribunales.
16. Evento Al no estar en la lista del cuadro combinado CCNumProfesores Este evento se produce cuando el usuario introduce en el componente cuadro de texto
del cuadro combinado un valor que no se encuentra en la lista del cuadro combinado.
El código asociado a este evento se utiliza para añadir dicho valor a la lista del cuadro
combinado si el usuario lo desea.
17. Evento Al salir del subformulario SFTribunales El código asociado a este evento se utiliza para:
Activar el botón de comando BCAsigManCargos si se encuentran desactivados los
botones de comando BCAsigManCargos y BCEditar.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 144 de 197
Bloquear el subformulario SFTribunal si se encuentran desactivados los botones de
comando BCAsigManCargos y BCEditar.
18. Evento Al hacer clic del botón de comando BCSelTrib El código asociado a este evento se utiliza para:
Mostrar un mensaje indicando si falta por rellenar algún campo requerido.
Abrir el formulario SeleccionarTribunalAgregar (el título de este formulario es
Seleccionar tribunal), pero solamente si ya hemos introducido todos los proyectos
fin de carrera, es decir, sólo en el caso de que el número indicado en
CCNumProyectos coincida con el número de registros que contiene el
subformulario SFProyectos.
19. Evento Al hacer clic del botón de comando BCElimProf El código asociado a este evento se utiliza para:
Mostrar un mensaje preguntando al usuario si está seguro de que desea eliminar del
tribunal al profesor que ha seleccionado.
En el caso de que no hayamos seleccionado ningún miembro del tribunal aparece un
mensaje indicando tal circunstancia.
Mostrar un mensaje cuando el curso académico o el mes en el que se celebra la
sesión de tribunal se alejan demasiado de la fecha actual proporcionada por el
sistema operativo, pidiendo al usuario que revise las fechas antes de continuar.
Eliminar del tribunal al profesor seleccionado si el usuario así lo desea.
Mostrar un mensaje cuando el curso académico o el mes en el que se celebra la
sesión de tribunal se alejan demasiado de la fecha actual proporcionada por el
sistema operativo, preguntando al usuario si desea que los cambios realizados (es
decir, eliminar del tribunal al profesor seleccionado) afecten o no a la secuenciación
de los tribunales.
Actualizar la secuenciación de los tribunales tras quitar del tribunal al profesor
seleccionado, si el usuario así lo desea.
Si el profesor eliminado del tribunal no se encuentra entre los registros del
formulario Profesores, entonces se muestra un mensaje indicando que dicho
profesor no forma parte de la secuenciación actualmente.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 145 de 197
Mostrar un mensaje indicando el número de miembros del tribunal que faltan por
asignar si es que falta alguno.
20. Evento Al hacer clic del botón de comando BCElimTrib Igual que el evento anterior pero en vez de quitar del tribunal únicamente al profesor
seleccionado, en este caso eliminamos del tribunal a todos los profesores que figuran en
el subformulario SFTribunal. Además, los profesores son eliminados del tribunal en
sentido contrario a como fueron asignados, es decir, el profesor que fue asignado en
primer lugar será el último en ser eliminado y viceversa. De esta forma, si los profesores
vuelven a la cola de la secuenciación, mantendrán las posiciones relativas que tenían
antes de ser asignados al tribunal.
21. Evento Al hacer clic del botón de comando BCProfesores El código asociado a este evento se utiliza para:
Cerrar el formulario Sesiones de tribunal – Nuevo registro y abrir el formulario
Profesores, de tal forma que el registro mostrado en el formulario Profesores
corresponde al profesor que estaba seleccionado en el subformulario SFTribunal del
formulario Sesiones de tribunal – Nuevo registro.
En el caso de que no hayamos seleccionado ningún profesor aparece un mensaje
indicando tal circunstancia.
Si el profesor seleccionado en el subformulario SFTribunal no se encuentra entre los
registros del formulario Profesores, entonces se muestra un mensaje indicando que
dicho profesor fue eliminado desde el formulario Profesores con anterioridad.
22. Evento Al hacer clic del botón de comando BCAsigAutCargos El código asociado a este evento se utiliza para:
Asignar de forma automática los cargos que desempeñan los miembros del tribunal.
Para ello es necesario que el tribunal esté formado por tres miembros. Recordemos
que en función de la categoría, la dedicación y la antigüedad (por este orden de
prioridad) que posee cada uno de los tres miembros del tribunal, ocuparán los cargos
de presidente, vocal y secretario de dicho tribunal.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 146 de 197
Si el número de miembros del tribunal no es igual a tres, entonces aparece un
mensaje indicando que no es posible la asignación automática de cargos.
Si alguno de los profesores del tribunal no se encuentra entre los registros del
formulario Profesores, entonces se muestra un mensaje indicando que no es posible
asignar automáticamente los cargos debido a que alguno de los profesores del
tribunal fue eliminado con anterioridad desde el formulario Profesores.
23. Evento Al hacer clic del botón de comando BCAsigManCargos El código asociado a este evento se utiliza para:
Desactivar el botón de comando BCAsigManCargos.
Desbloquear el subformulario SFTribunal, lo cual nos permite modificar los cargos
de los profesores del tribunal.
En el caso de que el tribunal no tenga ningún componente aparece un mensaje
indicando tal circunstancia.
24. Evento Al hacer clic del botón de comando BCEditar El código asociado a este evento se utiliza para:
Desbloquear la edición del registro mostrado en el formulario, es decir, podemos
modificar los datos que aparecen en el formulario.
Activar los siguientes botones de comando: BCGuardarReg, BCSelProy,
BCElimProy, BCSelTrib, BCElimProf, BCElimTrib, BCAsigAutCargos y
BCAsigManCargos.
Desactivar los siguientes botones de comando: BCEditar y BCEliminar.
25. Evento Al hacer clic del botón de comando BCGuardarReg El código asociado a este evento se utiliza para:
Mostrar un mensaje indicando si falta por rellenar algún campo requerido.
Guardar el nuevo registro, o los cambios realizados en él si ya había sido guardado
previamente.
Mostrar un mensaje indicando que el nuevo registro ha sido guardado.
Bloquear la edición del registro mostrado en el formulario, es decir, no podemos
modificar los datos que aparecen en el formulario.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 147 de 197
Activar los siguientes botones de comando: BCEditar, BCNuevoReg y BCEliminar.
Desactivar los siguientes botones de comando: BCGuardarReg, BCSelProy y
BCElimProy, BCSelTrib, BCElimProf, BCElimTrib, BCAsigAutCargos y
BCAsigManCargos.
26. Evento Al hacer clic del botón de comando BCNuevoReg El código asociado a este evento se utiliza para cerrar el formulario Sesiones de tribunal
– Nuevo registro y abrirlo de nuevo.
27. Evento Al hacer clic del botón de comando BCEliminar
Eliminar la sesión de tribunal mostrada en el formulario.
Mostrar un mensaje confirmando que dicha sesión de tribunal ha sido eliminada.
Si queremos eliminar una sesión de tribunal cuyo tribunal no está vacío, entonces
aparece un mensaje indicando que no es posible la eliminación de dicha sesión de
tribunal. Es decir, no podemos eliminar una sesión de tribunal a menos que el
tribunal correspondiente a dicha sesión se encuentre vacío.
Desbloquear la edición del formulario, es decir, podemos introducir datos en los
cuadros de texto y cuadros combinados del formulario.
Activar los siguientes botones de comando: BCSelProy, BCElimProy, BCSelTrib,
BCElimProf, BCElimTrib, BCAsigAutCargos y BCAsigManCargos.
Desactivar los siguientes botones de comando: BCEditar, BCGuardarReg,
BCNuevoReg y BCEliminar.
Introducir el primer año del curso académico en el cuadro de texto CTCursoAcad1 y
el segundo año del curso académico en el cuadro de texto CTCursoAcad2, de
acuerdo con la fecha actual.
28. Evento Al hacer clic del botón de comando BCMostrarRegistros El código asociado a este evento se utiliza para:
Cerrar el formulario Sesiones de tribunal – Nuevo registro y abrir el formulario
Sesiones de tribunal.
Mostrar un mensaje cuando no sea posible guardar el nuevo registro antes de cerrar
el formulario Sesiones de tribunal – Nuevo registro, debido a que falta por rellenar
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 148 de 197
algún campo requerido. Este mensaje pregunta al usuario si desea salir del
formulario Sesiones de tribunal – Nuevo registro sin guardar el nuevo registro o, por
el contrario, prefiere permanecer en dicho formulario para poder introducir las
modificaciones oportunas y guardar dicho registro.
29. Evento Al hacer clic del botón de comando BCAtras El código asociado a este evento se utiliza para:
Cerrar el formulario Sesiones de tribunal – Nuevo registro y regresar al formulario
que teníamos abierto anteriormente.
Mostrar un mensaje cuando no sea posible guardar el nuevo registro antes de cerrar
el formulario Sesiones de tribunal – Nuevo registro, debido a que falta por rellenar
algún campo requerido. Este mensaje pregunta al usuario si desea salir del
formulario Sesiones de tribunal – Nuevo registro sin guardar el nuevo registro o, por
el contrario, prefiere permanecer en dicho formulario para poder introducir las
modificaciones oportunas y guardar dicho registro.
30. Evento Al hacer clic del botón de comando BCAvisoReloj El código asociado a este evento se utiliza para abrir el formulario AvisoReloj (el título
de este formulario es Importante).
31. Evento Al hacer clic del botón de comando BCCerrar El código asociado a este evento se utiliza para:
Cerrar el formulario Sesiones de tribunal – Nuevo registro y abrir el formulario
Panel principal.
Mostrar un mensaje cuando no sea posible guardar el nuevo registro antes de cerrar
el formulario Sesiones de tribunal – Nuevo registro, debido a que falta por rellenar
algún campo requerido. Este mensaje pregunta al usuario si desea salir del
formulario Sesiones de tribunal – Nuevo registro sin guardar el nuevo registro o, por
el contrario, prefiere permanecer en dicho formulario para poder introducir las
modificaciones oportunas y guardar dicho registro.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 149 de 197
6.8.- Formulario SeleccionarTribunal El aspecto que presenta el formulario SeleccionarTribunal es el siguiente:
Figura 6.8.a – Ficha Profesores que pueden ser presidentes de un tribunal
Figura 6.8.b – Ficha Profesores que pueden ser miembros de un tribunal
Tanto en la figura 6.8.a como en la 6.8.b podemos ver que en la barra de título aparece
el título del formulario: Seleccionar tribunal. Para referirnos a este formulario
utilizaremos siempre su nombre (SeleccionarTribunal).
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 150 de 197
El formulario SeleccionarTribunal se abre al hacer clic sobre el botón Seleccionar (es
decir, el botón de comando BCSelTrib) que se encuentra situado en la ficha Tribunal del
formulario Sesiones de tribunal (ver figura 6.6.c).
A través de este formulario seleccionaremos a los profesores que figuran en el tribunal
de cada sesión. Normalmente son tres los profesores que hay en cada tribunal. Para
seleccionar estos tres profesores tenemos que hacer lo siguiente:
1) En la lista de profesores de la ficha Profesores que pueden ser presidentes de un
tribunal tenemos que seleccionar un profesor. En esta lista, el orden de aparición
de los profesores coincide con el orden de preferencia en que debe ser asignados.
Por tanto, elegiremos al primer profesor que aparece en la lista.
2) En la lista de profesores de la ficha Profesores que puede ser miembros de un
tribunal tenemos que seleccionar los dos profesores que quedan. En esta lista, el
orden de aparición de los profesores coincide también con el orden de
preferencia en que deben ser asignados. Por tanto, elegiremos el primero y el
segundo de la lista.
El código VBA que carga las dos listas de profesores se encarga de que la selección de
los profesores sea tan fácil como seguir siempre estos dos pasos sin tener que
preocuparnos de nada más. Veamos a continuación este código, el cual se encuentra
asociado al evento Al cargar del formulario SeleccionarTribunal:
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 151 de 197
Private Sub Form_Load() On Error GoTo Err_Form_Load DoCmd.Hourglass True Dim lngSesionID As Long Dim intCursoAcad1 As Integer Dim lngMes As Long Dim strConsMesCA As String Dim strConsCLFuncionarios As String Dim strConsCLProfesores Dim dbs As Database Dim qdfConsMesCA As QueryDef lngSesionID = Forms!SesionesDeTribunal!SesionID intCursoAcad1 = Forms!SesionesDeTribunal!CursoAcad1 lngMes = Forms!SesionesDeTribunal!Mes Set dbs = CurrentDb strConsMesCA = "SELECT Tribunales.ProfesorID FROM SesionesDeTribunal INNER JOIN Tribunales " _ & "ON SesionesDeTribunal.SesionID = Tribunales.SesionID " _ & "WHERE SesionesDeTribunal.CursoAcad1 LIKE '" & intCursoAcad1 & "' " _ & "AND SesionesDeTribunal.Mes LIKE '" & lngMes & "';" Set qdfConsMesCA = dbs.CreateQueryDef("ConsMesCA", strConsMesCA) strConsCLFuncionarios = "SELECT ConsPosPres.ProfesorID, ConsPosPres.ContadosAsistencias, ConsPosPres.Ap1Profesor, " _ & "ConsPosPres.Ap2Profesor, ConsPosPres.NombProfesor, ConsPosPres.PosicionCola " _ & "FROM ConsPosPres LEFT JOIN ConsMesCA ON ConsPosPres.ProfesorID = ConsMesCA.ProfesorID " _ & "WHERE ConsMesCA.ProfesorID Is Null " _ & "ORDER BY ConsPosPres.ContadorAsistencias DESC, ConsPosPres.PosicionCola, ConsPosPres.FechaSalidaCola;" strConsCLProfesores = "SELECT ConsPosTrib.ProfesorID, ConsPosTrib.ContadosAsistencias, ConsPosTrib.Ap1Profesor, " _ & "ConsPosTrib.Ap2Profesor, ConsPosTrib.NombProfesor, ConsPosTrib.PosicionCola " _ & "FROM ConsPosTrib LEFT JOIN ConsMesCA ON ConsPosTrib.ProfesorID = ConsMesCA.ProfesorID " _ & "WHERE ConsMesCA.ProfesorID Is Null " _ & "ORDER BY ConsPosTrib.ContadosAsistencias DESC, ConsPosTrib.PosicionCola, ConsPosTrib.FechaSalidaCola;" Me.CLFuncionarios.RowSource = strConsCLFuncionarios Me.CLProfesores.RowSource = strConsCLProfesores
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 152 de 197
dbs.QueryDefs.Delete "ConsMesCA" Set qdfConsMesCA = Nothing Set dbs = Nothing DoCmd.Hourglass False Exit_Form_Load: Exit Sub Err_Form_Load: DoCmd.Hourglass False DisplayMessage "Error desconocido (Identificador: SLTR-14)." Resume Exit_Form_Load End Sub
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 153 de 197
Analizando el código observamos que éste genera tres consultas importantes, que son
las siguientes:
1. Consulta ConsMesCa Es la consulta que queda guardada en la variable strConsMesCA. La consulta
ConsMesCA sirve para seleccionar todos aquellos profesores que han sido miembros del
tribunal en el curso académico y en el mes de la sesión de tribunal mostrada en el
formulario Sesiones de tribunal.
2. Consulta ConsCLFuncionarios Es la consulta que queda guardada en la variable strConsCLFuncionarios. La consulta
ConsCLFuncionarios sirve para seleccionar todos los profesores que pueden ser
presidentes de un tribunal excepto aquéllos que han sido miembros del tribunal en el
curso académico y en el mes de la sesión de tribunal mostrada en el formulario Sesiones
de tribunal.
La lista de profesores de la ficha Profesores que pueden ser presidentes de un tribunal
(cuadro de lista CLFuncionarios) tiene como origen la consulta ConsCLFuncionarios.
Por ello, el orden de aparición de los profesores en esta consulta coincide con el orden
de preferencia en que deben ser asignados al tribunal de la sesión en cuestión. Así, el
primer profesor de la lista será el de mayor ContadorAsistencias, menor PosicionCola y
menor FechaSalidaCola (por este orden de prioridad), considerando que una fecha es
menor que otra cuando es más antigua. El resto de la lista se genera siguiendo este
mismo criterio.
La consulta ConsCLFuncionarios se genera a partir de otras dos consultas:
ConsPosPres y ConsMesCA. La consulta ConsMesCA acabamos de describirla en el
punto anterior, pero aún no sabemos en qué consiste la consulta ConsPosPres.
La consulta ConsPosPres ha sido creada con Access y podemos hacer referencia a ella
en el código VBA como si fuera una tabla más de la base de datos. Esta consulta recoge
a todos los profesores que puede ser presidentes de un tribunal. Si la expresamos en
lenguaje SQL queda de la siguiente manera:
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 154 de 197
“SELECT Profesores.ProfesorID, Profesores.Ap1Profesor, Profesores.Ap2Profesor,
Profesores.NombProfesor, Profesores.ContadorAsistencias, Profesores.PosicionCola,
Profesores.FechaSalidaCola, Categorias.PosPres
FROM Categorias INNER JOIN Profesores
ON Categorias.CategoriaID = Profesores.CategoriaID
WHERE Categorias.PosPres = Yes;”
3. Consulta ConsCLProfesores Es la consulta que queda guardada en la variable strConsCLProfesores. La consulta
ConsCLProfesores sirve para seleccionar todos los profesores que pueden ser miembros
de un tribunal excepto aquéllos que han sido miembros del tribunal en el curso
académico y en el mes de la sesión de tribunal mostrada en el formulario Sesiones de
tribunal.
La lista de profesores de la ficha Profesores que pueden ser miembros de un tribunal
(cuadro de lista CLProfesores) tiene como origen la consulta ConsCLProfesores. Por
ello, el orden de aparición de los profesores en esta consulta coincide con el orden de
preferencia en que deben ser asignados al tribunal de la sesión en cuestión. Así, el
primer profesor de la lista será el de mayor ContadorAsistencias, menor PosicionCola y
menor FechaSalidaCola (por este orden de prioridad), considerando que una fecha es
menor que otra cuando es más antigua. El resto de la lista se genera siguiendo este
mismo criterio.
La consulta ConsCLProfesores se genera a partir de otras dos consultas: ConsPosTrib y
ConsMesCA. La consulta ConsMesCA ha sido descrita anteriormente, pero aún no
sabemos en qué consiste la consulta ConsPosTrib.
La consulta ConsPosTrib ha sido creada con Access y podemos hacer referencia a ella
en el código VBA como si fuera una tabla más de la base de datos. Esta consulta recoge
a todos los profesores que pueden ser miembros de un tribunal. Si la expresamos en
lenguaje SQL queda de la siguiente manera:
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 155 de 197
“SELECT Profesores.ProfesorID, Profesores.Ap1Profesor, Profesores.Ap2Profesor,
Profesores.NombProfesor, Profesores.ContadorAsistencias, Profesores.PosicionCola,
Profesores.FechaSalidaCola, Categorias.PosTrib
FROM Categorias INNER JOIN Profesores
ON Categorias.CategoriaID = Profesores.Categoria
WHERE Categorias.PosTrib = Yes;”
Una vez hemos comprendido cómo se generan las dos listas de profesores que aparecen
en el formulario SeleccionarTribunal, vamos a ocuparnos a continuación de analizar
qué sucede cuando seleccionamos un profesor en el cuadro de lista CLFuncionarios y lo
asignamos al tribunal de la sesión mostrada en el formulario Sesiones de tribunal.
El código VBA asociado al evento Al hacer clic del botón Asignar (botón de comando
BCAsigFunc) de la ficha Profesores que pueden ser presidentes de un tribunal es el
siguiente:
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 156 de 197
Private Sub BCAsigFunc_Click() On Error GoTo Err_BCAsigFunc_Click DoCmd.Hourglass True Dim cnn As Connection Dim rstTribunales As New ADODB.Recordset Dim rstConsProfesores As New ADODB.Recordset Dim varPosicion1 As Variant Dim varPosicion2 As Variant Dim strCriterio As String Dim strMensaje1 As String Dim strMensaje2 As String Dim lngSesionID As Long Dim intNumMiembros As Integer Dim intNumMiembSubf As Integer Dim intNumMiembSel As Integer Dim intNumMiembSuma As Integer Dim intNumMiembResta As Integer Dim intNumTribunales As Integer Dim intContadorAsistencias As Integer Dim intPosicionCola As Integer Dim intPosColaAlAsignar As Integer Dim intPosColaAlEliminar As Integer Dim intPosColaAlAsigUno As Integer Dim intPosColaAlElimUno As Integer Dim intNumEnCola As Integer Dim intNumEnColaCorreg As Integer Dim intCursoActual1 As Integer Dim intCursoActual2 As Integer Dim intNumProf As Integer Dim intNumProfSel As Integer Dim intNumProfDif As Integer lngSesionID = Forms!SesionesDeProyectos!SesionID intNumMiembros = Forms!SesionesDeProyectos!NumProfesores intNumMiembSubf = DCount("[MiembroID]", "Tribunales", "SesionID = " & lngSesionID) intNumMiembSel = CLFuncionarios.ItemsSelected.Count intNumMiembSuma = intNumMiembSubf + intNumMiembSel
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 157 de 197
intNumMiembResta = intNumMiembros - intNumMiembSubf If intNumMiembSel = 0 Then DoCmd.Hourglass False DisplayMessage "No ha seleccionado ningún elemento de la lista." Exit Sub End If If intNumMiembSuma > intNumMiembros Then DoCmd.Hourglass False DisplayMessage "El número máximo de profesores que puede seleccionar es de: " & intNumMiembResta & " " _ & "(teniendo en cuenta el número de profesores que ha elegido)." Exit Sub End If If Month(Date) >= 10 Then intCursoActual1 = Year(Date) Else intCursoActual1 = Year(Date) - 1 End If intCursoActual2 = intCursoActual1 + 1 If (Forms!SesionesDeProyectos!CTCursoAcad1 <> intCursoActual1) Or _ (Forms!SesionesDeProyectos!CTCursoAcad1 = intCursoActual1 And Forms!SesionesDeProyectos!CCMes < Month(Date)) Or _ (Forms!SesionesDeProyectos!CTCursoAcad1 = intCursoActual1 And Forms!SesionesDeProyectos!CCMes > Month(Date) + 1) Then strMensaje1 = "El curso académico o el mes que ha seleccionado parecen alejarse de la fecha actual " _ & "proporcionada el sistema operativo. Es recomendable que revise las fechas antes de continuar. " _ & "¿Desea continuar?" If Not Confirm(strMensaje1) Then DoCmd.Close acForm, "SeleccionarTribunal" DoCmd.Hourglass False Exit Sub End If End If Set cnn = CurrentProject.Connection rstConsProfesores.Open "ConsProfesores", cnn, adOpenKeyset, adLockOptimistic, adCmdTableDirect rstTribunales.Open "Tribunales", cnn, adOpenKeyset, adLockOptimistic, adCmdTableDirect For Each varPosicion1 In CLFuncionarios.ItemsSelected
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 158 de 197
strCriterio = "ProfesorID = " & CLFuncionarios.ItemData(varPosicion1) rstConsProfesores.MoveFirst rstConsProfesores.Find (strCriterio) rstTribunales.AddNew cnn.BeginTrans rstTribunales!SesionID = lngSesionID rstTribunales!ProfesorID = rstConsProfesores!ProfesorID rstTribunales!Ap1Miembro = rstConsProfesores!Ap1Profesor rstTribunales!Ap2Miembro = rstConsProfesores!Ap2Profesor rstTribunales!NombMiembro = rstConsProfesores!NombProfesor rstTribunales.Update If rstConsProfesores!ContadorAsistencias = 0 And rstConsProfesores!NumTribunales > 1 Then rstConsProfesores!FechaSalidaCola = Now 'Generamos FHSC. rstConsProfesores.Update End If cnn.CommitTrans Next varPosicion1 Forms!SesionesDeProyectos.Refresh Forms!SesionesDeProyectos.PRAsigTrib blnAUSubf = True If (Forms!SesionesDeProyectos!CTCursoAcad1 <> intCursoActual1) Or _ (Forms!SesionesDeProyectos!CTCursoAcad1 = intCursoActual1 And Forms!SesionesDeProyectos!CCMes < Month(Date)) Or _ (Forms!SesionesDeProyectos!CTCursoAcad1 = intCursoActual1 And Forms!SesionesDeProyectos!CCMes > Month(Date) + 1) Then strMensaje2 = "¿Desea que los cambios realizados afecten a la secuenciación de los profesores?" If Not Confirm(strMensaje2) Then rstConsProfesores.Close rstTribunales.Close Set cnn = Nothing DoCmd.Close acForm, "SeleccionarTribunal" DoCmd.Hourglass False Exit Sub End If End If For Each varPosicion2 In CLFuncionarios.ItemsSelected strCriterio = "ProfesorID = " & CLFuncionarios.ItemData(varPosicion2)
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 159 de 197
rstConsProfesores.MoveFirst rstConsProfesores.Find (strCriterio) intNumTribunales = rstConsProfesores!NumTribunales intContadorAsistencias = rstConsProfesores!ContadorAsistencias intPosicionCola = rstConsProfesores!PosicionCola intPosColaAlAsignar = rstConsProfesores!PosColaAlAsignar intPosColaAlEliminar = rstConsProfesores!PosColaAlEliminar intPosColaAlAsigUno = rstConsProfesores!PosColaAlAsigUno intPosColaAlElimUno = rstConsProfesores!PosColaAlElimUno If intContadorAsistencias = 0 And intPosicionCola > 0 Then 'Caso NSC = 0 y PC > 0 -> profesor en cola. If intNumTribunales = 1 Then 'Caso NS = 1 -> caso particular. intNumEnCola = DCount("[ProfesorID]", "Profesores", "[ContadorAsistencias] = 0") If intPosColaAlElimUno = 0 Then 'Caso PCEU = 0 -> caso general: profesor no eliminado previamente; Nota: PCAU puede ser mayor o igual que cero. rstConsProfesores.MoveFirst Do Until rstConsProfesores.EOF 'Tapamos el hueco. If rstConsProfesores!ContadorAsistencias = 0 And rstConsProfesores!PosicionCola > intPosicionCola Then cnn.BeginTrans rstConsProfesores!PosicionCola = rstConsProfesores!PosicionCola - 1 rstConsProfesores.Update cnn.CommitTrans End If rstConsProfesores.MoveNext Loop rstConsProfesores.MoveFirst rstConsProfesores.Find (strCriterio) cnn.BeginTrans rstConsProfesores!PosicionCola = intNumEnCola 'Pasa al último de la cola -> PC = último; Nota: el código funciona ok si es el único profesor en la cola. rstConsProfesores!PosColaAlAsigUno = intPosicionCola 'Generamos PCAU. rstConsProfesores.Update cnn.CommitTrans ElseIf intPosColaAlElimUno > 0 And intPosColaAlAsigUno = 0 Then 'Caso PCEU > 0 -> caso particular: profesor eliminado previamente; Nota: PCAU debe valer cero. rstConsProfesores.MoveFirst Do Until rstConsProfesores.EOF 'Tapamos el hueco. If rstConsProfesores!ContadorAsistencias = 0 And rstConsProfesores!PosicionCola > intPosicionCola Then cnn.BeginTrans rstConsProfesores!PosicionCola = rstConsProfesores!PosicionCola - 1
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 160 de 197
rstConsProfesores.Update cnn.CommitTrans End If rstConsProfesores.MoveNext Loop intNumEnColaCorreg = intNumEnCola - 1 If intNumEnColaCorreg >= intPosColaAlElimUno Then rstConsProfesores.MoveFirst 'Abrimos el hueco. Do Until rstConsProfesores.EOF If rstConsProfesores!ContadorAsistencias = 0 And rstConsProfesores!PosicionCola >= intPosColaAlElimUno Then cnn.BeginTrans rstConsProfesores!PosicionCola = rstConsProfesores!PosicionCola + 1 rstConsProfesores.Update cnn.CommitTrans End If rstConsProfesores.MoveNext Loop rstConsProfesores.MoveFirst rstConsProfesores.Find (strCriterio) cnn.BeginTrans rstConsProfesores!PosicionCola = intPosColaAlElimUno 'Vuelve a PCEU -> PC = PCEU y PCEU = 0. rstConsProfesores!PosColaAlElimUno = 0 rstConsProfesores.Update cnn.CommitTrans Else rstConsProfesores.MoveFirst rstConsProfesores.Find (strCriterio) cnn.BeginTrans rstConsProfesores!PosicionCola = intNumEnCola 'Nota: el código funciona ok si es el único profesor en la cola. rstConsProfesores!PosColaAlElimUno = 0 rstConsProfesores.Update cnn.CommitTrans End If Else DisplayMessage "Error desconocido (Identificador: SLTR-1)." End If ElseIf intNumTribunales > 1 Then 'Caso NS > 1 -> caso general; Nota: recordemos que NS >= 0, y si NS = 0 entonces quedan en blanco NSC,PC,PCA,PCE,PCAU y PCEU, por lo que el profesor no forma parte de la secuenciación. cnn.BeginTrans rstConsProfesores!ContadorAsistencias = 1 'Pasa a servicio -> NSC = 1 y PC = 0.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 161 de 197
rstConsProfesores!PosicionCola = 0 rstConsProfesores!PosColaAlAsignar = intPosicionCola 'Generamos PCA. rstConsProfesores.Update cnn.CommitTrans rstConsProfesores.MoveFirst Do Until rstConsProfesores.EOF 'Tapamos el hueco. If rstConsProfesores!ContadorAsistencias = 0 And rstConsProfesores!PosicionCola > intPosicionCola Then cnn.BeginTrans rstConsProfesores!PosicionCola = rstConsProfesores!PosicionCola - 1 rstConsProfesores.Update cnn.CommitTrans End If rstConsProfesores.MoveNext Loop Else DisplayMessage "Error desconocido (Identificador: SLTR-2)." End If ElseIf intContadorAsistencias > 0 And intPosicionCola = 0 Then 'Caso NSC > 0 y PC = 0 -> profesor en servicio. If intContadorAsistencias < intNumTribunales - 1 Then 'Caso NSC < NS - 1 -> profesor sin terminar el servicio. cnn.BeginTrans rstConsProfesores!ContadorAsistencias = rstConsProfesores!ContadorAsistencias + 1 'Incrementamos NSC. rstConsProfesores.Update cnn.CommitTrans ElseIf intContadorAsistencias = intNumTribunales - 1 And intPosColaAlAsignar = 0 And intPosColaAlEliminar > 0 Then 'Caso NSC = NS - 1, PCA = 0 y PCE > 0 -> profesor eliminado previamente que ha terminado el servicio. intNumEnCola = DCount("[ProfesorID]", "Profesores", "[ContadorAsistencias] = 0") If intNumEnCola >= intPosColaAlEliminar Then rstConsProfesores.MoveFirst Do Until rstConsProfesores.EOF 'Abrimos el hueco. If rstConsProfesores!ContadorAsistencias = 0 And rstConsProfesores!PosicionCola >= intPosColaAlEliminar Then cnn.BeginTrans rstConsProfesores!PosicionCola = rstConsProfesores!PosicionCola + 1 rstConsProfesores.Update cnn.CommitTrans End If rstConsProfesores.MoveNext Loop rstConsProfesores.MoveFirst rstConsProfesores.Find (strCriterio) cnn.BeginTrans rstConsProfesores!ContadorAsistencias = 0
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 162 de 197
rstConsProfesores!PosicionCola = intPosColaAlEliminar 'Vuelve a PCE -> NSC = 0, PC = PCE y PCE = 0. rstConsProfesores!PosColaAlEliminar = 0 rstConsProfesores.Update cnn.CommitTrans Else cnn.BeginTrans rstConsProfesores!ContadorAsistencias = 0 rstConsProfesores!PosicionCola = intNumEnCola + 1 'Nota: el código funciona ok si no hay profesores en la cola. rstConsProfesores!PosColaAlEliminar = 0 rstConsProfesores.Update cnn.CommitTrans End If ElseIf intContadorAsistencias = intNumTribunales - 1 And intPosColaAlAsignar > 0 And intPosColaAlEliminar = 0 Then 'Caso NSC = NS - 1, PCA > 0 y PCE = 0 -> profesor asignado previamente que ha terminado el servicio. intNumEnCola = DCount("[ProfesorID]", "Profesores", "[ContadorAsistencias] = 0") cnn.BeginTrans rstConsProfesores!ContadorAsistencias = 0 rstConsProfesores!PosicionCola = intNumEnCola + 1 'Pasa al último de la cola -> NSC = 0, PC = último y PCA = 0; Nota: el código funciona ok si no hay profesores en la cola. rstConsProfesores!PosColaAlAsignar = 0 rstConsProfesores.Update cnn.CommitTrans Else DisplayMessage "Error desconocido (Identificador: SLTR-3)." End If Else DisplayMessage "Error desconocido (Identificador: SLTR-4)." End If Next varPosicion2 rstConsProfesores.Close rstTribunales.Close Set cnn = Nothing DoCmd.Close acForm, "SeleccionarTribunal" intNumProf = DCount("[MiembroID]", "Tribunales", "[SesionID] = " & lngSesionID) intNumProfSel = Forms!SesionesDeProyectos!CCNumProfesores
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 163 de 197
intNumProfDif = intNumProfSel - intNumProf If intNumProf < intNumProfSel Then DisplayMessage "El número de profesores que faltan por asignar es de " & intNumProfDif & " (teniendo en " _ & "cuenta el número de profesores que ha elegido)." End If DoCmd.Hourglass False Exit_BCAsigFunc_Click: Exit Sub Err_BCAsigFunc_Click: DoCmd.Hourglass False DisplayMessage "Error desconocido (Identificador: SLTR-5)." Resume Exit_BCAsigFunc_Click End Sub
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 164 de 197
Analizando el código observamos que éste recurre simplemente a la tabla Tribunales de
la base de datos y a la consulta ConsProfesores. Esta consulta ha sido creada con
Access y recoge a todos los profesores que pueden ser miembros de un tribunal,
mostrando además para cada profesor todos los campos procedentes de la tabla
Profesores y de la tabla Categorias que influyen en la secuenciación de los tribunales.
Expresada en lenguaje SQL, la consulta ConsProfesores queda de la siguiente manera:
“SELECT Profesores.ProfesorID, Profesores.Ap1Profesor, Profesores.Ap2Profesor,
Profesores.NombProfesor, Categorias.Prioridad, Profesores.Dedicacion,
Profesores.Antiguedad, Categorias.NumTribunales, Profesores.ContadorAsistencias,
Profesores.PosicionCola, Profesores.PosColaAlAsignar,
Profesores.PosColaAlEliminar, Profesores.PosColaAlAsigUno,
Profesores.PosColaAlElimUno, Profesores.FechaSalidaCola, Categorias.PosTrib
FROM Categorias INNER JOIN Profesores
ON Categorias.CategoriaID = Profesores.CategoriaID
WHERE Categorias.PosTrib = Yes;”
Los comentarios sobre el código aparecen en color verde, y se han utilizado las
siguientes abreviaturas para referirnos a los campos de la consulta ConsProfesores:
o NumTribunales = NS (número de sesiones de tribunal)
o ContadorAsistencias = NSC (número de sesiones de tribunal cumplidas)
o PosicionCola = PC (posición en la cola)
o PosColaAlAsignar = PCA (posición en la cola al asignar)
o PosColaAlEliminar = PCE (posición en la cola al eliminar)
o PosColaAlAsigUno = PCAU (posición en la cola al asignar, caso NS = 1)
o PosColaAlElimUno = PCEU (posición en la cola al eliminar, caso NS = 1)
o FechaSalidaCola = FHSC (fecha y hora de salida de la cola).
A continuación vamos a resumir las tareas que realiza el código VBA asociado al
evento Al hacer clic del botón Asignar (botón de comando BCAsigFunc) de la ficha
Profesores que pueden ser presidentes de un tribunal:
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 165 de 197
Si no hemos seleccionado ningún profesor del cuadro de lista CLFuncionarios
aparece un mensaje indicando tal circunstancia.
Si la suma del número de profesores que hemos seleccionado en el cuadro de lista
CLFuncionarios y el número de profesores que ya figuran en el subformulario
SFTribunales del formulario Sesiones de tribunal resulta ser mayor que el número
indicado en el cuadro combinado CCNumProfesores del formulario Sesiones de
tribunal, entonces se muestra un mensaje indicando tal circunstancia y
especificando además cuál es el número máximo de tutores que podemos
seleccionar del cuadro de lista CLFuncionarios en ese momento.
Mostrar un mensaje cuando el curso académico o el mes en el que se celebra la
sesión de tribunal mostrada en el formulario Sesiones de tribunal se alejan
demasiado de la fecha actual proporcionada por el sistema operativo, pidiendo al
usuario que revise las fechas antes de continuar.
Introducir en la tabla Tribunales de la base de datos al profesor que hemos
seleccionado en el cuadro de lista CLFuncionarios. De esta forma, observaremos
como dicho profesor aparece en el subformulario SFTribunales de la sesión de
tribunal mostrada en el formulario Sesiones de tribunal. Si el profesor en cuestión
abandona la cola de la secuenciación, quedará registrada la hora y la fecha actual en
el campo FHSC del registro correspondiente a dicho profesor en la tabla Profesores
de la base de datos.
Introducir también en la tabla TribunalPfc de la base de datos al profesor que hemos
seleccionado en el cuadro de lista CLFuncionarios. De esta forma, observaremos
como dicho profesor aparece en el subformulario SFTribunalPfc del formulario
Proyectos fin de carrera cuando este formulario muestre cualquiera de los proyectos
que están incluidos en la sesión de tribunal mostrada en el formulario Sesiones de
tribunal.
Mostrar un mensaje cuando el curso académico o el mes en el que se celebra la
sesión de tribunal mostrada en el formulario Sesiones de tribunal se alejan
demasiado de la fecha actual proporcionada por el sistema operativo, preguntando al
usuario si desea que los cambios realizados (es decir, introducir en el tribunal de
dicha sesión al profesor seleccionado en el cuadro de lista CLFuncionarios) afecten
o no a la secuenciación de los tribunales.
Actualizar la secuenciación de los tribunales tras introducir en el tribunal al profesor
seleccionado en el cuadro de lista CLFuncionarios.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 166 de 197
Finalmente, mostrar un mensaje indicando el número de miembros del tribunal que
faltan por asignar si es que falta alguno.
Tanto en el código que acabamos de analizar como en el resto del código de la
aplicación hemos utilizado transacciones a la hora de introducir modificaciones en la
base de datos. Una transacción es un grupo de cambios que queremos que Access trate
como una operación única. Abrir una transacción indica a Access que recuerde los
cambios que haga, pero que espere hasta que cierre la transacción para guardarlos en el
disco. Si queremos abrir una transacción tenemos que utilizar el método BeginTrans del
objeto Connection, y para cerrarla el método CommitTrans.
Utilizar transacciones para realizar varios cambios en los datos tiene dos ventajas: puede
acelerar la ejecución del código, porque accede solamente una vez a la unidad de disco,
en lugar de acceder cada vez que cambie un registro; segundo, nunca dejará registros
parcialmente modificados si se produce un error o un corte del suministro eléctrico
antes de que se hayan realizado todos los cambios.
Por último, comentar que el código VBA asociado al evento Al hacer clic del botón
Asignar (botón de comando BCAsigProf) de la ficha Profesores que pueden ser
miembros de un tribunal es análogo al código VBA asociado al evento Al hace clic del
botón de comando BCAsigFunc que acabamos de analizar. Por otra parte, existe un
formulario llamado SeleccionarTribunalAgregar que es idéntico al formulario
SeleccionarTribunal. La única diferencia reside en que el formulario
SeleccionarTribunalAgregar se abre desde el formulario SesionesDeTribunalAgregar
mientras que SeleccionarTribunal se abre desde SesionesDeTribunal.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 167 de 197
6.9.- Descripción del resto de formularios Hemos realizado una descripción destallada de los formularios más importantes de la
aplicación de base de datos: Panel Principal, Proyectos fin de carrera, Sesiones de
tribunal, Profesores, etc. A continuación citaremos el resto de formularios que posee la
aplicación de base de datos haciendo una breve descripción de cada uno de ellos. Por
sencillez, nos referiremos a cada uno de ellos por su título en vez de por su nombre
como hemos venido haciendo hasta ahora.
1. Formulario Panel de configuración Presenta el siguiente aspecto:
Figura 6.9.a
Este formulario se abre al hacer clic sobre el botón Panel de configuración del
formulario Panel principal (ver figura 6.1.a). Desde el formulario Panel de
configuración podemos acceder a otros formularios que nos permiten configurar la
aplicación de base de datos para que funcione correctamente.
2. Formulario Secuenciación de los tribunales Presenta el siguiente aspecto:
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 168 de 197
Figura 6.9.b
Este formulario se abre al hacer clic sobre el botón Secuenciación de los tribunales del
formulario Panel de configuración (ver figura 6.9.a). Desde el formulario
Secuenciación de los tribunales podemos modificar los parámetros que controlan dicha
secuenciación. En condiciones normales no habrá que utilizar este formulario pues la
secuenciación, una vez configurada, funciona por sí sola y no necesita mantenimiento.
Sin embargo, al instalar por primera vez la aplicación o cuando queramos alterar el
orden de la secuencia, haremos uso de este formulario, el cual debe ser manipulado por
un usuario avanzado que conozca bien el funcionamiento de la secuenciación. De todos
modos, si realizamos algún cambio que pueda alterar el buen funcionamiento de la
secuenciación, la aplicación mostrará un mensaje antes de guardar dicho cambio, en el
cual se explica dónde está la equivocación que hemos cometido para que podamos
corregirla.
3. Formulario Categorías Presenta el siguiente aspecto:
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 169 de 197
Figura 6.9.c
Este formulario se abre al hacer clic sobre el botón Categorías del formulario Panel de
configuración (ver figura 6.9.a). El formulario Categorías muestra toda la información
asociada a las categorías de los profesores. Los registros de este formulario proceden de
la tabla Categorias de la base de datos y se muestran de uno en uno.
Veamos a continuación algunas de las características más destacadas que presenta el
formulario Categorías:
No podemos guardar o actualizar un registro si se detecta que existe otro registro
con la mima categoría (mismo contenido del cuadro de texto Categoría).
No es posible eliminar un registro del formulario Categorías que tiene registros
relacionados en el formulario Profesores. De esta forma evitamos que haya
profesores que se quedan sin pertenecer a ninguna categoría.
Si hacemos clic sobre el botón Editar registro para actualizar un registro del
formulario Categorías que tiene registros relacionados en el formulario Profesores,
entonces podremos modificar el contenido del formulario Categorías a excepción de
la casilla de verificación Los profesores pertenecientes a esta categoría pueden ser
miembros de un tribunal y del cuadro combinado Número de sesiones. De esta
forma evitamos que puedan producirse daños en la secuenciación de los tribunales.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 170 de 197
Podemos sacar un informe que contiene un listado con todas las categorías y sus
características, en el que las categorías aparecen ordenadas de mayor a menor
prioridad.
A la hora de modificar las prioridades de las diferentes categorías podemos utilizar
el formulario Modificar prioridades, que ha sido especialmente diseñado para
facilitar dicha tarea.
Por lo demás, el funcionamiento del formulario Categorías es similar al de otros
formularios de la aplicación como, por ejemplo, el formulario Profesores. De hecho,
existe un formulario titulado Categorías – Nuevo registro que se abre al hacer clic sobre
el botón Nuevo registro del formulario Categorías y sirve para incluir nuevas categorías
en la base de datos.
4. Formulario Modificar prioridades Presenta el siguiente aspecto:
Figura 6.9.d
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 171 de 197
Este formulario se abre al hacer clic sobre el botón Modificar propiedades del
formulario Categorías (ver figura 6.9.c). El formulario Modificar propiedades sirve
para modificar de una forma rápida y sencilla las prioridades de las diferentes
categorías.
Al hacer clic sobre el botón Editar podemos introducir cambios en las prioridades, y si
hacemos clic sobre el botón Bloquear edición conseguiremos, por un lado, bloquear la
lista para que no se puedan introducir más cambios y, por otro, ordenar las categorías de
mayor a menor prioridad.
La prioridad de una categoría está representada por un número entero mayor o igual que
uno con el siguiente significado: la prioridad es menor conforme aumenta este número,
y la prioridad máxima corresponde al número uno. La categoría que tiene prioridad
sobre el resto es la de Catedrático de Universidad, y por tanto aparece con prioridad
uno. En la figura 6.9.d vemos también que algunas categorías que tienen igual
prioridad: por ejemplo, tanto Catedrático de Escuela Universitaria como Titular de
Universidad aparecen con prioridad dos.
5. Formulario Grupos de investigación Presenta el siguiente aspecto:
Figura 6.9.e
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 172 de 197
Este formulario se abre al hacer clic sobre el botón Grupos de investigación del
formulario Panel de configuración (ver figura 6.9.a). El formulario Grupos de
investigación muestra toda la información asociada a los grupos de investigación
pertenecientes al Departamento de Organización Industrial y Gestión de Empresas. Los
registros de este formulario proceden de la tabla GruposInvestigacion de la base de
datos y se muestran de uno en uno.
Veamos a continuación algunas de las características más destacadas que presenta el
formulario Grupos de investigación:
No podemos guardar o actualizar un registro si se detecta que existe otro registro
con el mismo grupo de investigación (mismo contenido del cuadro de texto Grupo
de investigación).
No es posible eliminar un registro del formulario Grupos de investigación que tiene
registros relacionados en el formulario Profesores. De esta forma evitamos que haya
profesores que se quedan sin pertenecer a ningún grupo de investigación.
Podemos sacar un informe que contiene un listado con todos los grupos de
investigación pertenecientes al Departamento.
Podemos obtener un gráfico que muestra el número de proyectos fin de carrera
dirigidos según grupo de investigación. Haciendo clic sobre el botón Nº de PFCs
dirigidos según GI abrimos el formulario GIGraficos, el cual nos permite configurar
el gráfico mediante las siguientes opciones de configuración:
Tipo de gráfico: columna agrupada (gráfico GrafGIColAg) o columna apilada
(gráfico GrafGIColAp).
Cursos académicos: podemos seleccionar todos los cursos académicos o
solamente aquéllos que nos interesen.
Grupos de investigación: podemos seleccionar todos los grupos de investigación
o solamente aquéllos que nos interesen.
Por lo demás, el funcionamiento del formulario Grupos de investigación es similar al de
otros formularios de la aplicación como, por ejemplo, el formulario Profesores. De
hecho, existe un formulario titulado Grupos de investigación – Nuevo registro que se
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 173 de 197
abre al hacer clic sobre el botón Nuevo registro del formulario Grupos de investigación
y sirve para incluir nuevas grupos de investigación en la base de datos.
6. Formulario Titulaciones Presenta el siguiente aspecto:
Figura 6.9.f
Este formulario se abre al hacer clic sobre el botón Titulaciones del formulario Panel de
configuración (ver figura 6.9.a). El formulario Titulaciones muestra todas las
titulaciones universitarias existentes en la Escuela Superior de Ingenieros de Sevilla.
Los registros de este formulario proceden de la tabla Titulaciones de la base de datos y
se muestran de uno en uno.
Veamos a continuación algunas de las características más destacadas que presenta el
formulario Titulaciones:
No podemos guardar o actualizar un registro si se detecta que existe otro registro
con la misma titulación (mismo contenido del cuadro de texto Titulación).
No es posible eliminar un registro del formulario Titulaciones que tiene registros
relacionados en el formulario Planes de estudios o en el formulario Proyectos fin de
carrera. De esta forma evitamos que haya planes de estudios o alumnos (es decir,
autores de un proyecto fin de carrera) que se quedan sin pertenecer a ninguna
titulación.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 174 de 197
Podemos sacar un informe que contiene un listado con todas las titulaciones
universitarias que se imparten en la Escuela Superior de Ingenieros de Sevilla.
Por lo demás, el funcionamiento del formulario Titulaciones es similar al de otros
formularios de la aplicación como, por ejemplo, el formulario Profesores. De hecho,
existe un formulario titulado Titulaciones – Nuevo registro que se abre al hacer clic
sobre el botón Nuevo registro del formulario Titulaciones y sirve para incluir nuevas
titulaciones en la base de datos.
7. Formulario Planes de estudios Presenta el siguiente aspecto:
Figura 6.9.g
Este formulario se abre al hacer clic en el botón Planes de estudios del formulario Panel
de configuración (ver figura 6.9.a). El formulario Planes de estudios muestra los
diferentes planes de estudios que existen así como la titulación a la que corresponde
cada uno de ellos. Los registros de este formulario proceden de la tabla PlanesEstudios
de la base de datos y se muestran de uno en uno.
Veamos a continuación algunas de las características más destacadas que presenta el
formulario Planes de estudios:
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 175 de 197
No podemos guardar o actualizar un registro si se detecta que existe otro registro
con el mismo plan de estudios (mismo contenido del cuadro de texto Plan de
estudios y del cuadro combinado Titulación).
No es posible eliminar un registro del formulario Planes de estudios que tiene
registros relacionados en el formulario Intensificaciones/Especialidades o en el
formulario Proyectos fin de carrera. De esta forma evitamos que haya
intensificaciones/especialidades que se quedan sin pertenecer a ningún plan de
estudios o alumnos (es decir, autores de un proyecto fin de carrera) que pertenecían
a un determinado plan de estudios y dejan de pertenecer a él porque hemos
eliminado dicho plan.
Podemos sacar un informe que contiene un listado con todos los planes de estudios
así como la titulación a la que pertenece cada uno de ellos.
Por lo demás, el funcionamiento del formulario Planes de estudios es similar al de otros
formularios de la aplicación como, por ejemplo, el formulario Profesores. De hecho,
existe un formulario titulado Planes de estudios – Nuevo registro que se abre al hacer
clic sobre el botón Nuevo registro del formulario Planes de estudios y sirve para incluir
nuevos planes de estudios en la base de datos.
8. Formulario Intensificaciones/Especialidades Presenta el siguiente aspecto:
Figura 6.9.h
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 176 de 197
Este formulario se abre al hacer clic sobre el botón Intensificaciones/Especialidades del
formulario Panel de configuración (ver figura 6.9.a). El formulario
Intensificaciones/Especialidades muestra las diferentes intensificaciones o
especialidades que existen así como el plan de estudios al que corresponde cada una de
ellas. Cada plan de estudios, a su vez, corresponde a una determinada titulación, como
ya vimos en el formulario Planes de estudios, y por este motivo en la lista desplegable
del cuadro combinado Plan de estudios aparece no sólo el nombre de los planes sino
también la titulación a la que corresponde cada uno de ellos. Los registros del
formulario Intensificaciones/Especialidades proceden de la tabla Intensificaciones de la
base de datos y se muestran de uno en uno.
Veamos a continuación algunas de las características más destacadas que presenta el
formulario Intensificaciones/Especialidades:
No podemos guardar o actualizar un registro si se detecta que existe otro registro
con la misma intensificación o especialidad (mismo contenido del cuadro de texto
Intensificación/Especialidad y del cuadro combinado Plan de estudios).
No es posible eliminar un registro del formulario Intensificaciones/Especialidades
que tiene registros relacionados en el formulario Proyectos fin de carrera. De esta
forma evitamos que haya alumnos (es decir, autores de un proyecto fin de carrera)
que pertenecían a una intensificación o especialidad y dejan de pertenecer a ella
porque hemos eliminado dicha intensificación o especialidad.
Podemos sacar un informe que contiene un listado con todas las intensificaciones y
especialidades así como el plan de estudios y la titulación a la que pertenece cada
una de ellas.
Por lo demás, el funcionamiento del formulario Intensificaciones/Especialidades es
similar al de otros formularios de la aplicación como, por ejemplo, el formulario
Profesores. De hecho, existe un formulario titulado Intensificaciones/Especialidades –
Nuevo registro que se abre al hacer clic sobre el botón Nuevo registro del formulario
Intensificaciones/Especialidades y sirve para incluir nuevas intensificaciones o
especialidades en la base de datos.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 177 de 197
9. Formulario Aulas de defensa Presenta el siguiente aspecto:
Figura 6.9.i
Este formulario se abre al hacer clic sobre el botón Aulas de defensa del formulario
Panel de configuración (ver figura 6.9.a). El formulario Aulas de defensa muestra las
distintas aulas o salones de la Escuela Superior de Ingenieros donde puede celebrarse la
defensa de los proyectos fin de carrera. Los registros de este formulario proceden de la
tabla Aulas de la base de datos y se muestran de uno en uno.
No podemos guardar o actualizar un registro si se detecta que existe otro registro con
igual aula (mismo contenido del cuadro de texto Aula de defensa). Tampoco podemos
eliminar un registro del formulario Aulas de defensa que tiene registros relacionados en
el formulario Sesiones de tribunal. De esta forma evitamos que haya sesiones de
tribunal que tenían asignada un aula y se pierde este dato porque hemos eliminado dicha
aula.
Por lo demás, el funcionamiento del formulario Aulas de defensa es similar al de otros
formularios de la aplicación como, por ejemplo, el formulario Profesores. De hecho,
existe un formulario titulado Aulas de defensa – Nuevo registro que se abre al hacer clic
sobre el botón Nuevo registro del formulario Aulas de defensa y sirve para incluir
nuevas aulas en la base de datos.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 178 de 197
10. Formulario Proyectos fin de carrera como tutor Presenta el siguiente aspecto:
Figura 6.9.j
Este formulario se abre al hacer clic sobre el botón PFCs como tutor del formulario
Profesores (ver figura 6.2.a). El formulario Proyectos fin de carrera como tutor muestra
todos los proyectos fin de carrera dirigidos por el profesor cuyo nombre y apellidos
figuran en la parte superior izquierda del formulario. Este profesor no es otro que el
mostrado por el formulario Profesores en el momento de hacer clic sobre el botón PFCs
como tutor. La información que se ofrece de cada proyecto fin de carrera es la siguiente:
curso académico, título del proyecto, así como el nombre y los apellidos del autor, o
sea, del alumno.
Si queremos que solamente aparezcan en la lista los proyectos correspondientes a un
determinado curso académico, entonces debemos introducir el curso académico deseado
en el cuadro de texto Curso académico y hacer clic sobre el botón Filtrar. Para que
vuelvan a mostrarse todos los proyectos, basta con hacer clic sobre el botón Quitar
filtro.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 179 de 197
Existe la posibilidad de generar un certificado de dirección de proyectos fin de carrera
en el que se recogen todos los proyectos fin de carrera dirigidos por el profesor en
cuestión. Además, este informe puede recoger solamente los proyectos correspondientes
a un cierto curso académico si antes de hacer clic en el botón Certificado dirección
PFCs introducimos en el cuadro de texto Curso académico dicho curso.
Finalmente, si seleccionamos cualquiera de los proyectos fin de carrera que aparecen en
la lista y hacemos clic sobre el botón Ir a Proyectos Fin de Carrera, entonces se
cerrarán los formularios que están abiertos, o sea, Proyectos fin de carrera como tutor y
Profesores, y se abrirá el formulario Proyectos fin de carrera, de tal forma que el
proyecto mostrado en este formulario es el que habíamos seleccionado previamente en
el formulario Proyectos fin de carrera como tutor.
11. Formulario Proyectos fin de carrera como miembro del tribunal Presenta el siguiente aspecto:
Figura 6.9.k
Este formulario se abre al hacer clic sobre el botón PFCs como miembro del tribunal
del formulario Profesores (ver figura 6.2.a). El formulario Proyectos fin de carrera
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 180 de 197
como miembro del tribunal muestra todos los proyectos fin de carrera a los que ha
asistido como miembro del tribunal el profesor cuyo nombre y apellidos figuran en la
parte superior izquierda del formulario. Este profesor no es otro que el mostrado por el
formulario Profesores en el momento de hacer clic sobre el botón PFCs como miembro
del tribunal. La información que se ofrece de cada proyecto fin de carrera es la
siguiente: curso académico, título del proyecto, así como el nombre y los apellidos del
autor, o sea, del alumno.
Si queremos que solamente aparezcan en la lista los proyectos correspondientes a un
determinado curso académico, entonces debemos introducir el curso académico deseado
en el cuadro de texto Curso académico y hacer clic sobre el botón Filtrar. Para que
vuelvan a mostrarse todos los proyectos, basta con hacer clic sobre el botón Quitar
filtro.
Existe la posibilidad de generar un certificado de asistencia a tribunales de proyectos fin
de carrera en el que se recogen todos los proyectos fin de carrera a los que ha asistido
como miembro del tribunal el profesor en cuestión. Además, este informe puede recoger
solamente los proyectos correspondientes a un cierto curso académico si antes de hacer
clic en el botón Certificado asistencia tribunales PFCs introducimos en el cuadro de
texto Curso académico dicho curso.
Finalmente, si seleccionamos cualquiera de los proyectos fin de carrera que aparecen en
la lista y hacemos clic sobre el botón Ir a Proyectos Fin de Carrera, entonces se
cerrarán los formularios que están abiertos, o sea, Proyectos fin de carrera como
miembro del tribunal y Profesores, y se abrirá el formulario Proyectos fin de carrera,
de tal forma que el proyecto mostrado en este formulario es el que habíamos
seleccionado previamente en el formulario Proyectos fin de carrera como miembro del
tribunal.
12. Formularios Buscar registros Existen tres formularios que poseen este título (Buscar registros) y sus nombres son los
siguientes: BuscarProfesores, BuscarProyectos y BuscarSesiones. Para acceder a ellos
tenemos que hacer clic sobre el botón de comando Buscar registros del formulario
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 181 de 197
Profesores (ver figura 6.2.a), Proyectos fin de carrera (ver figura 6.4.a) y Sesiones de
tribunal (ver figura 6.6.a) respectivamente.
Veamos a continuación el aspecto que presentan estos tres formularios:
Figura 6.9.l – Formulario BuscarProfesores
Figura 6.9.m – Formulario BuscarProyectos
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 182 de 197
Figura 6.9.n – Formulario BuscarSesiones
Son formularios de búsqueda de registros, que contienen cuadros de texto y cuadros
combinados en los que introducimos o seleccionamos los criterios de búsqueda. Cada
cuadro de texto va acompañado de un cuadro combinado en el que podemos seleccionar
si hacer coincidir todo el campo, cualquier parte del campo o el comienzo del campo.
Podemos utilizar todos o solamente aquellos cuadros de texto y cuadros combinados
que nos interesen.
Una vez definidos los criterios de búsqueda, tenemos que hacer clic sobre el botón
Buscar y entonces se cerrará el formulario Buscar registros y observaremos que los
registros del formulario Profesores, Proyectos fin de carrera o Sesiones de tribunal han
sido filtrados de acuerdo con los criterios de búsqueda seleccionados en el formulario
BuscarProfesores, BuscarProyectos o BuscarSesiones respectivamente.
13. Formularios Ir a registro Existen siete formularios que poseen este título (Ir a registro) y sus nombres son los
siguientes: CuadroProfesores, CuadroCategorias, CuadroGruposInvestigacion,
CuadroTitulaciones, CuadroPlanesEstudios, CuadroIntensificaciones y CuadroAulas.
Para acceder a ellos tenemos que hacer clic sobre el botón de comando Ir a registro del
formulario Profesores (ver figura 6.2.a), Categorías (ver figura 6.9.c), Grupos de
investigación (ver figura 6.9.e), Titulaciones (ver figura 6.9.f), Planes de estudio (ver
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 183 de 197
figura 6.9.g), Intensificaciones/Especialidades (ver figura 6.9.h) y Aulas de defensa (ver
figura 6.9.i) respectivamente.
Veamos a continuación el aspecto que presentan cada uno de estos formularios:
Figura 6.9.o – Formulario CuadroProfesores
Figura 6.9.p – Formulario CuadroCategorias
Figura 6.9.q – Formulario CuadroGruposInvestigacion
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 184 de 197
Figura 6.9.r – Formulario CuadroTitulaciones
Figura 6.9.s – Formulario CuadroPlanesEstudios
Figura 6.9.t – Formulario CuadroIntensificaciones
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 185 de 197
Figura 6.9.u – Formulario CuadroAulas
Todos estos formularios sirven para localizar y desplazarnos rápidamente hacia un
registro determinado. Por ello cuentan con un cuadro de lista en el que aparecen todos
los registros del formulario desde el cual hemos abierto el formulario Ir a registro. Si
seleccionamos uno de los registros del cuadro de lista y hacemos clic sobre el botón
Seleccionar, entonces se cierra el formulario Ir a registro y aparece el registro
seleccionado en el formulario correspondiente.
14. Formularios Ordenar registros Existen tres formularios que poseen este título (Ordenar registros) y sus nombres son
los siguientes: OrdenarProfesores, OrdenarProyectos y OrdenarSesiones. Para acceder
a ellos tenemos que hacer clic sobre el botón de comando Buscar registros del
formulario Profesores (ver figura 6.2.a), Proyectos fin de carrera (ver figura 6.4.a) y
Sesiones de tribunal (ver figura 6.6.a) respectivamente.
Los tres formularios presentan el mismo aspecto y es el siguiente:
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 186 de 197
Figura 6.9.v – Ejemplo del formulario OrdenarProfesores
Nos apoyaremos en el ejemplo de la figura 6.9.v para comprender el funcionamiento de
los formularios Ordenar registros. En este caso, los registros del formulario Profesores
quedarán de la siguiente manera:
Agrupados por categorías, es decir, aparecen juntos todos los profesores
pertenecientes a una misma categoría.
Dentro de cada categoría, los profesores están ordenados de mayor a menor
dedicación.
Si dentro de una misma categoría hay dos o más profesores con igual
dedicación, entonces aparecerán ordenados de mayor a menor antigüedad, es
decir, de menor a mayor fecha a partir de la cual el profesor pertenece a su
categoría.
15. Formularios Seleccionar tutor Existen dos formularios que poseen este título (Seleccionar tutor) y sus nombres son los
siguientes: SeleccionarTutor y SeleccionarTutorAgregar. Para acceder a ellos tenemos
que hacer clic sobre el botón de comando Seleccionar perteneciente a la ficha Tutor del
formulario Proyectos fin de carrera (ver figura 6.4.c) y Proyectos fin de carrera –
Nuevo registro respectivamente.
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 187 de 197
Los dos formularios presentan el mismo aspecto y es el siguiente:
Figura 6.9.w
En la figura 6.9.w podemos ver que el formulario contiene un cuadro de lista con todos
los profesores del Departamento. Si seleccionamos a uno o varios de los profesores del
cuadro de lista y hacemos clic sobre el botón Asignar, entonces se cierra el formulario
Seleccionar tutor y aparece el profesor o los profesores seleccionados en el
subformulario SFTutores del formulario Proyectos fin de carrera (en el caso del
formulario SeleccionarTutor) o Proyectos fin de carrera – Nuevo registro (en el caso
del formulario SelecccionarTutorAgregar).
16. Formulario Seleccionar profesores Presenta el siguiente aspecto:
Figura 6.9.x
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 188 de 197
Este formulario contiene un cuadro de lista con todos los profesores del Departamento.
Si seleccionamos a uno o varios de los profesores del cuadro de lista y hacemos clic
sobre el botón Asignar, entonces se cierra el formulario Seleccionar profesores y
aparece el profesor o los profesores seleccionados en el subformulario SFTribunalPfc
del formulario Proyectos fin de carrera.
17. Formularios Seleccionar proyectos fin de carrera Existen dos formularios que poseen este título (Seleccionar proyectos fin de carrera) y
sus nombres son los siguientes: SeleccionarPfc y SeleccionarPfcAgregar. Para acceder
a ellos tenemos que hacer clic sobre el botón de comando Seleccionar perteneciente a la
ficha Proyectos fin de carrera del formulario Sesiones de tribunal (ver figura 6.4.c) y
Sesiones de tribunal – Nuevo registro respectivamente.
Los dos formularios presentan el mismo aspecto y es el siguiente:
Figura 6.9.y
El formulario Seleccionar proyectos fin de carrera cuenta con un cuadro de lista en el
que figuran todos los proyectos fin de carrera que todavía no han sido asignados a
ninguna sesión de tribunal. Si seleccionamos uno o varios de los proyectos del cuadro
de lista y hacemos clic sobre el botón Asignar, entonces se cierra el formulario
Seleccionar proyectos fin de carrera y aparece el proyecto o los proyectos
seleccionados en el subformulario SFProyectos del formulario Sesiones de tribunal (en
el caso del formulario SeleccionarPfc) o Sesiones de tribunal – Nuevo registro (en el
caso del formulario SelecccionarPfcAgregar).
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 189 de 197
18. Formulario Números de tutores Presenta el siguiente aspecto:
Figura 6.9.z
Este formulario se abre al hacer clic sobre el botón Nº de tutores del formulario Panel
de configuración (ver figura 6.9.a). El formulario Números de tutores contiene todos los
valores que aparecen en la lista desplegable del cuadro combinado Número de tutores
(CCNumTutores) perteneciente a la ficha Tutor de los formularios Proyecto fin de
carrera (ver figura 6.4.c) y Proyectos fin de carrera – Nuevo registro. Como ya
sabemos, este cuadro combinado nos permite añadir nuevos valores a su lista
desplegable. Pues bien, el formulario Números de tutores sirve para eliminar aquellos
valores que deseamos que no aparezcan en dicha lista debido a que, por ejemplo, han
sido añadidos por error.
19. Formulario Números de proyectos fin de carrera El aspecto que presenta este formulario es muy parecido al del formulario Números de
tutores (ver figura 6.9.z). El formulario Números de proyectos fin de carrera se abre al
hacer clic sobre el botón Nº de proyectos fin de carrera del formulario Panel de
configuración (ver figura 6.9.a), y contiene todos los valores que aparecen en la lista
desplegable del cuadro combinado Número de proyectos fin de carrera
(CCNumProyectos) perteneciente a la ficha Proyectos fin de carrera de los formularios
Sesiones de tribunal (ver figura 6.6.b) y Sesiones de tribunal – Nuevo registro. Como ya
sabemos, este cuadro combinado nos permite añadir nuevos valores a su lista
desplegable. Pues bien, el formulario Números de proyectos fin de carrera sirve para
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 190 de 197
eliminar aquellos valores que deseamos que no aparezcan en dicha lista debido a que,
por ejemplo, han sido añadidos por error.
20. Formulario Números de profesores El aspecto que presenta este formulario es muy parecido al del formulario Números de
tutores (ver figura 6.9.z). El formulario Números de profesores se abre al hacer clic
sobre el botón Nº de profesores del formulario Panel de configuración (ver figura
6.9.a), y contiene todos los valores que aparecen en la lista desplegable del cuadro
combinado Número de profesores (CCNumProfesores) perteneciente a la ficha Tribunal
de los formularios Sesiones de tribunal (ver figura 6.6.b) y Sesiones de tribunal – Nuevo
registro. Como ya sabemos, este cuadro combinado nos permite añadir nuevos valores a
su lista desplegable. Pues bien, el formulario Números de profesores sirve para eliminar
aquellos valores que deseamos que no aparezcan en dicha lista debido a que, por
ejemplo, han sido añadidos por error.
21. Formulario Números de sesiones El aspecto que presenta este formulario es muy parecido al del formulario Números de
tutores (ver figura 6.9.z). El formulario Números de sesiones se abre al hacer clic sobre
el botón Nº de sesiones del formulario Panel de configuración (ver figura 6.9.a), y
contiene todos los valores que aparecen en la lista desplegable del cuadro combinado
Número de sesiones perteneciente a los formularios Categorías (ver figura 6.9.c) y
Categorías – Nuevo registro. Como ya sabemos, este cuadro combinado nos permite
añadir nuevos valores a su lista desplegable. Pues bien, el formulario Números de
sesiones sirve para eliminar aquellos valores que deseamos que no aparezcan en dicha
lista debido a que, por ejemplo, han sido añadidos por error.
22. Formulario Prioridades El aspecto que presenta este formulario es muy parecido al del formulario Números de
tutores (ver figura 6.9.z). El formulario Prioridades se abre al hacer clic sobre el botón
Prioridades del formulario Panel de configuración (ver figura 6.9.a), y contiene todos
los valores que aparecen en la lista desplegable del cuadro combinado Prioridad
(CCPrioridad) perteneciente a los formularios Categorías (ver figura 6.9.c) y
Categorías – Nuevo registro. Como ya sabemos, este cuadro combinado nos permite
INTERFAZ DE USUARIO Y CÓDIGO VBA
Página 191 de 197
añadir nuevos valores a su lista desplegable. Pues bien, el formulario Prioridades sirve
para eliminar aquellos valores que deseamos que no aparezcan en dicha lista debido a
que, por ejemplo, han sido añadidos por error.
23. Formulario Dedicaciones El aspecto que presenta este formulario es muy parecido al del formulario Números de
tutores (ver figura 6.9.z). El formulario Dedicaciones se abre al hacer clic sobre el botón
Dedicaciones del formulario Panel de configuración (ver figura 6.9.a), y contiene todos
los valores que aparecen en la lista desplegable del cuadro combinado Dedicación
(CCDedicacion) perteneciente a los formularios Profesores (ver figura 6.2.a) y
Profesores – Nuevo registro (ver figura 6.3.a). Como ya sabemos, este cuadro
combinado nos permite añadir nuevos valores a su lista desplegable. Pues bien, el
formulario Dedicaciones sirve para eliminar aquellos valores que deseamos que no
aparezcan en dicha lista debido a que, por ejemplo, han sido añadidos por error.
Recommended