Você está na página 1de 199

DIRECCIN GENERAL DE EDUCACIN

SUPERIOR TECNOLGICA
INSTITUTO TECNOLGICO SUPERIOR DE TAMAZUNCHALE

MANUAL TCNICO
SISTEMA DE CONTROL ESCOLAR UNITAM

PRESENTA
MARCELA ACOSTA VIDALES

NO. DE CONTROL
05ISC025

ASESOR
ING. GABINO MRQUEZ PREZ

TAMAZUNCHALE, S.L.P.

JUNIO 2012

SISTEMA DE CONTROL ESCOLAR UNITAM

ndice
1 Objetivo General y Especficos.........................................................................3
2 Resea...............................................................................................................4
3 Manual de Tcnico..5
4 Instalacin de Visual Studio 2005.6
5 Instalacin de MySql Server 5.0..14
6 Instalacion de MySql Tools For 5.0.25
7 Instalacin del conector ODBC 5.1 para MySql30
8 Modulos del Sistema.37
9 Modelos para el Desarrollo de Software41
10 Requerimientos Funcionales y No funcionales...48
11 Casos de Prueba..50
12 Tablas de la Base de Datos...64
13 Conexin a la Base de Datos71
14 Formulario Acceso...71
15 Formulario Principal74
16 Formulario Inscripciones78
17 Formulario Ver Materias86
18 Formulario Reinscripciones...87
19 Formulario Lista de Asistencia.102
20 Formulario Documentacin..108
21 Reporte de Entrega de Documentacin114
22 Formulario Calificaciones (Preparatoria)...116
23 Formulario Actas de Evaluacin.134
24 Formulario de Calificaciones...143
25 Formulario Bsqueda Alumno-Cardex..150
26 Formulario Materias..157
27 Formulario Docentes163
28 Formulario Seguimiento Datos del Alumno..168
29 Formulario Modificar Contrasea...174
30 Formulario Ajustes Grupo....176
31 Formulario Concentrado de Calificaciones...178
32 Formulario Plan de Estudios...187
33 Formulario Actas de Calificaciones por Materia..190
34 Formulario Registro de Calificaciones..193

Objetivo General Y Especficos


2

SISTEMA DE CONTROL ESCOLAR UNITAM

Objetivo General
Dar a conocer el proceso de instalacin y configuracin de programas utilizados.
Explicar la programacin de cada uno de los formularios que componen el
Sistema de Control Escolar Unitam.
Objetivos Especficos

Explicar detalladamente la instalacin de los programas que se van a


utilizar para el manejo del sistema y su configuracin.

Presentar el cdigo fuente que maneja cada uno de los formularios.

Resea
3

SISTEMA DE CONTROL ESCOLAR UNITAM

El presente manual muestran cada uno de los formularios y su respectivo cdigo


para que el usuario programador logre comprender como se program cada
accin de los formularios.
En el manual se observa los requerimientos funcinales y no funcinales que se
tomaron en cuenta para el desarrollo del Sistema.
Se analizaron los diferentes modelos de desarrollo de software y de datos con sus
respectivos diagramas y se muestra cual es el que se implement para el
desarrollo del proyecto.
Se muestran las tablas que se ocuparon en la base de datos y se explica el
campo, el nombre, su tipo y tamao.
A continuacin se mencionarn las instalaciones previas que se tuvieron que
realizar antes de comenzar con el proceso de programacin.

SISTEMA DE CONTROL ESCOLAR UNITAM

Manual Tcnico

Instalacin de Visual Studio 2005


5

SISTEMA DE CONTROL ESCOLAR UNITAM

Esta es la primera pantalla que nos aparece al inicio de la instalacin,


seleccionamos Instalar Visual Studio 2005.

Esta pantalla comienza el Asistente con la instalacin de los diferentes


componentes.

SISTEMA DE CONTROL ESCOLAR UNITAM

Aqu finaliza el asistente y le damos siguiente para continuar.

Esta es la siguiente pantalla, nos muestra el contrato de licencia, tenemos que


activar la casilla de verificacin para continuar.
7

SISTEMA DE CONTROL ESCOLAR UNITAM

Una vez activada la casilla daremos clic en la opcion de siguiente para continuar
con la instalacin.

Aqu nos muestra el tipo de instalacin, el lugar donde se almacenara el programa


asi como el espacio en disco duro que tenemos. Seleccionaremos la opcin
personalizada par ver que aplicaciones se instalaran y le damos siguiente.

SISTEMA DE CONTROL ESCOLAR UNITAM

Esta pantalla nos muestra las diferentes aplicaciones a instalar, dejaremos todas
las casillas activadas y le daremos clic en Instalar.

Aqu nos muestra el avance de nuestra instalacin, podemos observar como se


van instalando aplicacin por aplicacin.

SISTEMA DE CONTROL ESCOLAR UNITAM

Esta pantalla nos indicara el momento en que debemos introducir el segundo


disco para continuar con la instalacin.

En este caso la instalacion la hicimos utilizando el DAEMON asi que buscaremos


la segunda imagen para continuar con la instalacin.

10

SISTEMA DE CONTROL ESCOLAR UNITAM

Seleccionamos el segundo CD y le damos abrir.

En esta pantalla se muestra la continuacin de la instalacin.

11

SISTEMA DE CONTROL ESCOLAR UNITAM

Esta pantalla muestra la ultima aplicacin instalada.

Al terminar la instalacin nos muestra esta pantalla le damos en finalizar.

12

SISTEMA DE CONTROL ESCOLAR UNITAM

Esta pantalla se muestra al cargar por primera vez Visual Studio 2005

Esta es la interfaz que nos muestra al abrir nuestra aplicacin.

13

SISTEMA DE CONTROL ESCOLAR UNITAM

Instalacin de Mysql Server 5.0

Al ejecutar la aplicacin nos mostrara la primera ventana donde nos seala las
aplicaciones y versiones del programa a instalar.

En esta pantalla seleccionaremos el tipo de instalacin que puede ser tpica,


completa o personalizada, en este caso seleccionamos completa y le damos
siguiente (Next).

14

SISTEMA DE CONTROL ESCOLAR UNITAM

Este pantalla nos muestra el tipo de instalacin que seleccionamos asi como el
lugar donde se ubicaran los archivos a instalar le damos Install para continuar.

Aqu nos muestra el inicio de la instalacin.

15

SISTEMA DE CONTROL ESCOLAR UNITAM

Esta pantalla nos muestra el avance que tiene la instalacin.

En esta pantalla observamos los archivos a instalar, le damos siguiente para


continuar (Next).

16

SISTEMA DE CONTROL ESCOLAR UNITAM

En esta pantalla nos muestran informacin sobre los programas a instalar.

Esta es la pantalla que nos muestra al finalizar la instalacin, seleccionaremos la


casilla de verificacin para continuar con la configuracin del mismo, le damos
Finish para continuar.

17

SISTEMA DE CONTROL ESCOLAR UNITAM

Configuracin del Servidor

Esta es la primera pantalla que nos muestra el asistente al comenzar con la


configuracin, le damos siguiente (Next) para continuar.

Seleccionamos la primera opcin para continuar con la instalacin.

18

SISTEMA DE CONTROL ESCOLAR UNITAM

Nuevamente selleccionamos el primer tipo de servidor a instalar y le damos


siguiente (Next).

Seleccionamos la primera opcin Multifunctional DataBase y le damos


siguiente(Next).

19

SISTEMA DE CONTROL ESCOLAR UNITAM

Esta pantalla muestra el lugar donde se va almacenar asi como tambien la


capacidad en el disco duro disponible para la instalacin y su sistema de archivos.

Aqu se selecciona la primera opcin Decisin Support (DSS)/OLAP y damos clic


en Next.

20

SISTEMA DE CONTROL ESCOLAR UNITAM

Aqu seleccionamos las dos opciones y dejamos el puerto 3306 y le damos


siguiente (Next).

Aqu seleccionamos la primera opcin para los caracteres y en la parte de inferior


dejamos el latin1 y le damos siguiente(Next) para continuar.

21

SISTEMA DE CONTROL ESCOLAR UNITAM

Aqu seleccionamos las tres casillas de verificacin, dejamos como nombre de


servicio a MySQL y le damos siguiente (Next).

En esta pantalla seleccionamos la primera casilla de verificacin.

22

SISTEMA DE CONTROL ESCOLAR UNITAM

Aqu introducimos la contrasea (unitam) para seguridad de la informacin y le


damos siguiente(Next).

En esta ventana damos clic en ejecutar (Execute) para continuar.

23

SISTEMA DE CONTROL ESCOLAR UNITAM

Esta pantalla nos muestra las aplicaciones ya instaladas le damos Finish para
finalizar la configuracin del servidor.

24

SISTEMA DE CONTROL ESCOLAR UNITAM

Instalacin del Mysql Tools For 5.0

Esta es la primer pantalla que nos aparece al comenzar con la instalacin damos
clic en Next.

Aqu nos muestra informacin sobre la licencia de la aplicacin seleccionamos la


primera opcin de aceptar los terminos y le damos siguiente (Next).

25

SISTEMA DE CONTROL ESCOLAR UNITAM

Esta pantalla muestra el directorio donde se almacenara la aplicacin, le damos


siguiente(Next) para continuar.

En esta pantalla seleccionaremos el tipo de instalacin a realizar en este caso


seleccionamos la primera opcin de completa y le damos siguiente.

26

SISTEMA DE CONTROL ESCOLAR UNITAM

Aqu se muestra la informacin de lo que seleccionamos anteriormente para


confirmar si es correcto, damos clic en Install para continuar.

Esta pantalla nos muestra el avance que tiene la instalacin.

27

SISTEMA DE CONTROL ESCOLAR UNITAM

Esta es la ltima pantalla que se muestra al terminar la instalacin le damos clic


en Finish para finalizar.

Nos vamos al menu de incio para verificar que se hayan intalado todas nuestras
aplicaciones.

Seleccionamos la opcin de MySQL Administrator.

28

SISTEMA DE CONTROL ESCOLAR UNITAM

Nos abrira esta ventana donde pondremos nuestro usuario y contrasea.

Esta es la ventana que nos mostrara para verificar que efectivamente ya esta
funcionando correctamente nuestro servidor.

29

SISTEMA DE CONTROL ESCOLAR UNITAM

Instalacin del Conector Odbc 5.1 para Mysql


Se da doble clic sobre el programa de instalacin del conector y muestra la
siguiente ventana, se da clic en el botn Next.

Enseguida se muestra la siguiente ventana donde se elige el tipo de instalacin


que deseamos, se elige Typical y de clic en el botn Next.

.
30

SISTEMA DE CONTROL ESCOLAR UNITAM

Luego en la siguiente ventana se da clic en Install para que empiece la instalacin


del conector en el equipo.

Muestra la siguiente ventana donde se indica el estado de la instalacin, esperar


unos segundos.

31

SISTEMA DE CONTROL ESCOLAR UNITAM

Finalmente aparece la siguiente ventana donde el asistente dice que la instalacin


ha sido completada, se da clic en Finish para terminar.

32

SISTEMA DE CONTROL ESCOLAR UNITAM

Configuracin del Odbc


Para poder utilizar el conector ODBC de MySql tenemos que hacer la siguiente
configuracin, Ir al panel de Control y seleccionar la opcin de Herramientas
administrativas.

Seleccionamos el icono de Orgenes de datos ODBC

Aparecer la siguiente ventana, damos clic en agregar.


33

SISTEMA DE CONTROL ESCOLAR UNITAM

Aparecer la siguiente pantalla en la cual se elige MySQL ODBC 5.1 Driver y se


da clic en Finalizar.

Mandara la siguiente ventana en la cual se tiene que llenar los datos que pide, en
la ventana de abajo se indica que datos debe colocar.
34

SISTEMA DE CONTROL ESCOLAR UNITAM

En la parte de Database se selecciona la base de datos, seguidamente de clic en


test para verificar la conexin.

Si es correcto se mandar el siguiente mensaje, pulse aceptar y despus en ok

35

SISTEMA DE CONTROL ESCOLAR UNITAM

Nuevamente se da aceptar.

36

SISTEMA DE CONTROL ESCOLAR UNITAM

Pasos para el Mdulo Inscripciones


El alumno se presenta a la UNITAM en el rea de control escolar para entregar la
siguiente documentacin:
- Solicitud de inscripcin (Se llena cuando el alumno ha pagado su colegiatura y
entregado toda su documentacin)
- Acta de nacimiento
- Certificado de Bachillerato y/o Secundaria (Con todas las materias acreditadas,
fecha previa al inicio de inscripcin)
- Certificado mdico
- Curp
- Comprobante de domicilio
- 6 fotos T/i (De frente, a color)
- Carta de conducta (para bachillerato)
La documentacin se puede entregar hasta un mes despus de la fecha de
inscripcin.
Preguntarle la carrera que va cursar; tiene 2 semanas para cambiarse de carrera.
Como paso final se llena la solicitud de inscripcin.
Diagrama de Procesos del Departamento de Control
Escolar de la Unitam
Mdulo de Inscripcin
ENTRADAS

REA

Datos de los alumnos


Documentacin

SALIDAS
Lista de Asistencia
Constancias

DIRIGIDO A:
Docentes
Alumnos

inscripcin, Acta de
nacimiento,
Certificado de
Bachillerato y/o
Secundaria,
Certificado mdico,
Curp, Comprobante
de domicilio, 6 fotos,
Carta de conducta)

CONROL ESCOLAR

(Solicitud de

37

SISTEMA DE CONTROL ESCOLAR UNITAM

Pasos para el Mdulo Calificaciones


El tiene que presentarse en la UNITAM en el rea de control escolar para
reinscribirse para ello tiene que:
Dar su nmero de control con el cual se verificaran las materias y calificaciones
del semestre que curs.
El encargado podr observar si el alumno a inscribirse pas el semestre como un
alumno regular, con lo cual haya cubierto el total de materias con calificaciones
aprobatorias.
Si no paso alguna materia si podr darse de alta sin embargo se almacenar esa
informacin para que en el siguiente ciclo escolar tenga que recursarla.
Si la materia que reprob est seriada, s podr darse de alta pero no podr
cursar la materia en ese semestre hasta que haya cursado la materia que
reprob, la cual tendr que recursar hasta el semestre posterior.
Se validar que como mximo de materias reprobadas sea igual a 3 para que el
alumno pueda cursar el semestre, si no tendr que revalidar el semestre completo
inicindolo el siguiente ciclo escolar.

Mdulo de Calificaciones
ENTRADAS

RE

SALIDAS

DIRIGIDO A:

A
Listas de asistencia
Lista de calificaciones

Lista de Asistencia
Boletas

Docentes
Alumnos
38

por materia
(Ordinario, final,
extraordinario,
especial.)

CONTROL ESCOLAR

SISTEMA DE CONTROL ESCOLAR UNITAM

Parciales/Totales

Actas y concentrado de

(Firmado por el

calificaciones
Certificados

Rector) SEGE
Alumnos

Parciales/Totales

Pasos para el Mdulo de Seguimiento y Control de Alumnos

Una vez inscrito el alumno tendr que ir con el encargado del rea de Control
Escolar para dar de alta datos personales los cuales se almacenaran como un
historial personal.
Una vez insertado las calificaciones por semestre de los alumnos, se podrn
visualizar los promedios por parcial, final y general, manejando con esto las
estadsticas y el cardex de cada uno de los alumnos.
El alumno podr consultar su historial personal y acadmico, solo con presentarse
en el rea de Control Escolar y dar su nmero de control.

Mdulo de Seguimiento y Control de Alumnos


ENTRADAS

RE

SALIDAS

DIRIGIDO A:

Estadsticas(filtros)

Encargado de

A
Listas de asistencia

control escolar
Comprobante de

Cardex (historial
39

domicilio
Historial Mdico
Datos Personales
Escuela de
Procedencia

CONTROL ESCOLAR

SISTEMA DE CONTROL ESCOLAR UNITAM

acadmico)

Eleccin del Modelo para Desarrollo de Software


Modelo en Cascada
En Ingeniera de software el desarrollo en cascada, tambin llamado modelo en
cascada, es el enfoque metodolgico que ordena rigurosamente las etapas del

40

SISTEMA DE CONTROL ESCOLAR UNITAM

ciclo de vida del software, de tal forma que el inicio de cada etapa debe esperar a
la finalizacin de la inmediatamente anterior.
Un ejemplo de una metodologa de desarrollo en cascada es:
1. Anlisis de requisitos
2. Diseo del Sistema
3. Diseo del Programa
4. Codificacin
5. Pruebas
6. Implantacin
7. Mantenimiento

Justificacin
Se decidi basarse en l modelo en cascada ya que es el ms completo porque
plantea el desarrollo de software dividindolo por etapas llevndose a cabo:
Anlisis de requisitos.- En esta etapa es donde analizaremos las necesidades del
o los usuarios finales que estn en contacto con el software a desarrollar, con esto
determinaremos los objetivos a cubrir.
Tambin se analizar la informacin que se maneja y su funcin para que no
exista redundancia en el manejo de los datos.
Esta parte es trascendental en el desarrollo del software puesto que de aqu
partir el desarrollo del mismo.
Diseo del sistema y del programa.- En esta etapa se separarn y organizarn los
diferentes elementos que va contener el sistema, obtenindose

lo que deba

hacer cada una de sus partes, as como la manera en que se combinan unas con
otras, de esto parten las diferentes relaciones que existirn en las tablas mediante
los campos clave.

41

SISTEMA DE CONTROL ESCOLAR UNITAM

Aqu le dar una estructura a los datos a la vez que se plantearn las interfaces
para comenzar con la siguiente etapa.
Codificacin.- Antes de comenzar con esta etapa elegiremos un lenguaje de
programacin en el cual se desarrollar el software adems de un gestor de base
de datos en donde se almacenar la informacin, una vez elegidos se comenzar
con la programacin.
Pruebas.- En esta etapa realizaremos las pruebas necesarias a los elementos ya
programados para detectar y corregir los posibles errores que lleguen a surgir.
Implantacin.- Esta es una de las ltimas etapas y se compondr bsicamente en
la instalacin del software terminado.
Mantenimiento.- Esta etapa se lleva a cabo cuando esta ya en uso el software,
aqu corregiremos algunos errores que llegaran a presentarse o realizaremos
mejoras al software.

Eleccin del Modelo de Datos


Modelo Entidad-Relacin
Modelo:

42

SISTEMA DE CONTROL ESCOLAR UNITAM

Es una representacin de la realidad que contiene las caractersticas generales


de algo que se va a realizar. En base de datos, esta representacin la elaboramos
de forma grfica.
El modelo Entidad-Relacin es una representacin conceptual de la informacin.
Mediante una serie de procedimientos se puede pasar del modelo E-R a otros,
como por ejemplo el modelo relacional.
El modelado entidad-relacin es una tcnica para el modelado de datos utilizando
diagramas entidad relacin. No es la nica tcnica pero s la ms utilizada.
Brevemente consiste en los siguientes pasos:
1. Se parte de una descripcin textual del problema o sistema de informacin
a automatizar (los requisitos).
2. Se hace una lista de los sustantivos y verbos que aparecen.
3. Los sustantivos son posibles entidades o atributos.
4. Los verbos son posibles relaciones.
5. Analizando las frases se determina las relaciones y otros detalles.
6. Se elabora el diagrama (o diagramas) entidad-relacin.
El modelo entidad-relacin se basa en los conceptos descritos a continuacin
para representar un modelo de la vida real.
Entidad
Representa una cosa u objeto del mundo real con existencia independiente, es
decir, se diferencia nicamente de cualquier otro objeto o cosa, incluso siendo del
mismo tipo.
Conjunto de entidades
Es una coleccin de entidades que comparten los mismos atributos o
caractersticas.
43

SISTEMA DE CONTROL ESCOLAR UNITAM

Atributos
Los atributos son las propiedades que describen a cada entidad en un conjunto de
entidades.
Relacin
Describe cierta dependencia entre entidades o permite la asociacin de las
mismas.
Conjunto de relaciones
Consiste en una coleccin de relaciones de la misma naturaleza.
Claves
Es un subconjunto del conjunto de atributos comunes en una coleccin de
entidades, que permite identificar unvocamente cada una de las entidades
pertenecientes a dicha coleccin. Asimismo, permiten distinguir entre s las
relaciones de un conjunto de relaciones.
Diagrama entidad-relacin
Formalmente, los diagramas E-R son un lenguaje grfico para describir
conceptos. Informalmente, son simples dibujos o grficos que describen la
informacin que trata un sistema de informacin y el software que lo automatiza.
Bueno, ahora nos falta describir como se representa un modelo E-R
grficamente, la representacin es muy sencilla, se emplean smbolos, los cuales
son:

44

SISTEMA DE CONTROL ESCOLAR UNITAM

Smbolo

Representa

Justificacin
Una vez analizado los diferentes modelos de datos que se utilizan para el diseo
grfico de sistemas, decidimos utilizar el modelo entidad- relacin ya que en base
a sus diagramas se representan de una forma mucho ms completa el diseo de
las estructuras de datos y el manejo de la informacin.

45

SISTEMA DE CONTROL ESCOLAR UNITAM

Diagrama Entidad-Relacin
A continuacin se muestran algunos ejemplos de diagramas E-R utilizados en el
desarrollo del proyecto.
edad

nom_alumno
entrega

no_control

sexo

alumno

especialidad
acta_nac

no_control

fotografias
const_estudios

documentacin

certificado_sec
curp
comp_domicilio
bachillerato_sec
edad

nom_alumno

carta_conducta

El siguiente diagrama se
utilizado tambin para los
dems semestres y carreras

registro

no_control

sexo

alumno

especialidad

semestre, ciclo_escolar, cal1p_1,


cal1p_2,
cal1p_3, cal1p_4, cal1p_5, cal1p_6, cal1p_7,
cal1p_8 prom1p, cal2p_1, cal2p_2, cal2p_3,
cal2p_4, cal2p_5, cal2p_6, cal2p_7, cal2p_8,
prom2p, calor_1, calor_2, calor_3, calor_4, calor_5,
calor_6, calor_7, calor_8, promor, promgral, prom1,
prom2, prom3, prom4, prom5, prom6, prom7,
prom8, ext1, ext2, ext3, ext4, ext5, ext6,
ext7,ext8,clave_m1,
clave_m2,
clave_m3,
clave_m4,
clave_m5,
clave_m6,
clave_m7,
clave_m8.

Administracin1

no_control

46

SISTEMA DE CONTROL ESCOLAR UNITAM

edad

nom_alumno
alta

no_control

sexo

alumno

especialidad

ap_p, ap_m, nombre, sexo, edad, curp, tel,


domicilio, colonia, municipio, estado,
cod_postal, estado_civil, ult_ nivel_cur,
area_estudio, nom_instituto, localidad_
instituto, municipio_ insti tuto, entidad_
instituto, diagnostico_ problema_clnico,
teraputica_ empleado.

datos_alumno

no_control

47

SISTEMA DE CONTROL ESCOLAR UNITAM

Requerimientos Funcionales
Este sistema contar con los siguientes mdulos:
Inscripciones:
Funciones principales del mdulo:
1. La clave de acceso para ingresar a este mdulo ser nica, solo el
encargado del rea de control escolar tendr acceso al sistema.
2. La validacin ser mediante un nombre de usuario y contrasea.
Posteriormente se podr cambiar la contrasea.
3. Se necesitar una identificacin para el registro del alumno, la cual si es un
nuevo alumno se le asignar un nmero de control que la institucin otorga
desde el primer semestre.
4. Permitir el registro

del alumno siempre y cuando cumpla con los

requisitos establecidos por la institucin.


5. Permitir la inscripcin de alumnos para nivel medio superior y superior
(preparatoria y universidad)
6. Permitir la reinscripcin de alumnos dados de alta en el sistema.
7. Permitir generar listas de asistencia.
Calificaciones:
Funciones principales del mdulo:
1. Permitir la captura de calificaciones.
2. Reporte de actas y boletas de calificaciones.
3. Se podrn generar concentrados de calificaciones.
Seguimiento y control de alumnos:
Funciones principales del mdulo:
1. Permitir ver el historial acadmico de cada alumno inscrito dentro de la
institucin. (Cardex)
2. Permitir capturar materias para posteriormente generar las cargas
acadmicas en el mdulo de inscripcin.
3. Se podr dar de alta a docentes.
4. Se podr obtener realizar consultas mediante deferentes tipos de filtros.

48

SISTEMA DE CONTROL ESCOLAR UNITAM

Requerimientos No Funcionales
Los requerimientos no funcinales para el sistema son:
1. El sistema no estar disponible en red por la seguridad de la informacin,
tambin porque la Universidad no cuenta con una red local.
2. No se podrn crear cuentas de usuario en el sistema, solo el administrador
tendr acceso.
3. Los procesos de preinscripcin no estarn disponibles en el sistema.

49

SISTEMA DE CONTROL ESCOLAR UNITAM

Casos De Prueba
Arquitectura Tcnica
Cambiar contrasea (solo se podr modificar la contrasea) - Men ajustes
1

Ventana Cambiar contrasea

Escribir nombre de usuario actual

Escribir contrasea

Condicin
Si Campos llenos - Entonces

NO

Llenar los campos solicitados

Condicin
Si Datos Correctos - Entonces
Si

5a

5b
Si
6a

Continuar

6b
Si

No

7b

7a

Escribir nueva contrasea

No

Si

Datos incorrectos

No
Cancelar

8a

Confirmar contrasea

No

8b

Si
Condicin
Si Campos llenos - Entonces

No
Llene los campos

Condicin
Si contraseas iguales - Entonces

Si
10b

10a

Si

11a

No

11a

Guardar Datos

Corregir contrasea

50

SISTEMA DE CONTROL ESCOLAR UNITAM

Ajustes Grupo - Men ajustes

Condicin
Si Cambiar contrasea - Entonces

Si
Llenar campo
Condicin
Si campo lleno - Entonces

2a

Si

Guardar

No

2a

2b

Cerrar

No
2a

Cancelar

51

SISTEMA DE CONTROL ESCOLAR UNITAM

Ingreso al sistema
FORMULARIO DE ACCESO AL SISTEMA
Proporcionar nombre de usuario y contrasea
Validar los datos

Proporcionar nombre de usuario y contrasea

Se debe Llenar ambos campos


Validar los datos
Condicin
Si - campos llenos - entonces

3
SI

Condicin
Si - Datos son correctos - Entonces

4
SI
NO

5a
Bienvenido al sistema SCE

5b

NO

6b

SI

Condicin
Si Intento Mayor que 3 - Entonces

6a

Los datos son incorrectos, vuelva a intentarlo.

El nmero de intentos ha terminado

52

SISTEMA DE CONTROL ESCOLAR UNITAM

Inscripcin
1

Bienvenido al sistema SCE


Men Reinscripciones

Elegir una especialidad


Condicin
Si elije especialidad - entonces

3b

NO

Elija especialidad

SI
FORMULARIO INSCRIPCIONES
Alta de alumnos

Se Activa Botn Nuevo

Clic Genera No. De Control, ciclo Escolar y asigna grupo automtic

Condicin
Si modificar - entonces

5b
NO

SI

Podr Modificar No. Control, ciclo escolar y Grupo

6b

Condicin
6a
Si - Llenar campos, nombre, apellido paterno, apellido materno, fecha de nacimiento, sexo - entonces
NO
SI

7b

SI

7a

7 7a

Llena los campos

Cancelar

Condicin
Si Materias- entonces

8a
NO

SI

Condicin
Si Guardar - entonces

9a

Visualiza carga acadmica 9a

NO

SI

10b

10a

Cancelar

Llenar el campo que modifique

NO

Cerrar

Condicin
Si Informacin correcta - entonces

SI

11b

SI

Datos Guardados

NO

11a
Condicin
Si Corregir Datos entonces

53

Eliminar

Cancela

SISTEMA DE CONTROL ESCOLAR UNITAM

Reinscripcin

Bienvenido al sistema SCE


Men Reinscripciones

Condicin
Si - Llenar
2 campos, No. De control y elige semestre a cursar - entonces

FORMULARIO REINSCRIPCIONES

SI
Condicin
Si A presentado ms de 12 extraordinarios - entonces

NO

3b

NO

3b
SI

Se debe Llenar los campos

Sera dado de baja

3a
SI
Condicin
Si No. De materias reprobadas >4 - entonces
NO

4
SI

Condicin
Si puede recursar - entonces
NO

No se puede reinscribir por el momento vuelva el prximo semestre


Mostrar datos del alumno, y se generar ciclo escolar4a

4a

Condicin
Si modificar - entonces

SI

Podr Modificar ciclo escolar y grupo

5b
SI

NO reprobadas
Muestra carga acadmica del semestre anterior y las materias

NO

6b

Llenar el campo que modifique

5a
6a

Cancelar

Hacer una bsqueda de la carga acadmica que llevar en el semestre a cursar

Si hay optativas o nfasis tendr que agregar


SI

Se har una bsqueda en semestres anteriores Si hay materias reprobadas, se agregaran automticamente a la carga acadmica sino abra op

Condicin
Si Si datos son correctos - entonces
NO

10

Condicin
Si elementos de carga acadmica >8 - entonces

Se debe quitar materias

SI

11b
NO

11a
SI

12a

12b

Guardar

Cancelar

13a

Cerrar o regresar No. 2

54

SISTEMA DE CONTROL ESCOLAR UNITAM

Calificaciones

Condicin
Bienvenido al sistema SCE
Si Exportar Boleta- entonces
Menu calificaciones
c

Carga datos al entrar, Se puede elegir semestre, ciclo escolar y grupo


Condicin
Si recorrer campos - entonces

FORMULARIO CALIFICACIONES

2
Condicin
Si - modificar - entonces

3a

3e

Condicin
Si - Eliminar- entonces

Condicin
Si - Boleta - entonces
Condicin
Si - Consulta - entonces

3b

3d
Condicin

3c

3fSi Falta una calificacin - entonces


Corregir

Condicin
Si - modificar - entonces

3a

Condicin
Si - Eliminar- entonces

Agregarla
Si Datos correctos entonces

4a

5a

5a
SI

NO

Condicin
Si Elegir que calificacin va a modificar - entonces

3b

SI

SI

Condicin
Si Si datos son correctos - entonces

SI
Condicin
NO
NO
Si Realmente desea eliminar los registros de este alumno - entonces

6a
Condicin
Si - Consulta - entonces

SI

Condicin
Si - Boleta - entonces

NO

Guardar

Puede regresar a No. 2


Datos Eliminados
Bsqueda
Condicin
Si Encuentra alumno - entonces

Puede regresar a No. 2

3d

Cancelar

5b

Cancelar

NO

SI

6b

NO

5a

3c

Guardar

Condicin
Si - Llenar campo No. De control - entonces

SI

Llene el campo para continuar

5b

SI

NOMuestras

6b

Datos Puede elegir 3a, 3b, 3d, 3e, 3f

5a
Cancelar

6a

55

SISTEMA DE CONTROL ESCOLAR UNITAM

Condicin
Si - Boleta - entonces

3d

Manda una vista Previa de la boleta del alumno

Condicin
Si Guardar - entonces

SI
SI

3e

5a

Condicin
SI Exportar Boleta PDF- entonces
Si

Condicin
Si Imprimir - entonces

5b
NO

SI

SI

6b

NO

6a
Elegir impresora e imprimir

4b
Elegir formato y guardar Elegir formato y guardar Cerrar

4a

Cancelar

Puede regresar a No. 2

Cerrar

56

SISTEMA DE CONTROL ESCOLAR UNITAM

Lista de asistencia
1

Bienvenido al sistema SCE


Men Reinscripciones

Condicin
Si - elige carrera - entonces

LISTA DE ASISTENCIA

NO

SI

Podr elegir el semestre, ciclo escolar, clave de la materia, turno, grupo, catedrtico, y encargado
Cerrar
escolar
3b de control

3a

SI
Condicin
Si filtrar - entonces

4
Bsqueda
Condicin
Si Encuentra - entonces

SI

NO

4
NO

SI

Muestra Datos
Condicin
Si Imprimir - entonces

Condicin
Si - Elegir impresora - entonces

Cancelar

Regresar No. 3 o 3b

5
NO

SI

5a

5b

Condicin
Si Guardar - entonces

SI

Elegir formato y Guardar

65a

65a
NO

Imprimir

Cerrar

57

SISTEMA DE CONTROL ESCOLAR UNITAM

Documentacin

Documentacin

Bienvenido al sistema SCE


Men Reinscripciones

Condicin
Si navegar - entonces

SI

Condicin
Si Consultar - entonces

NO

SI
Llenar el campo No. De control
Condicin
Si campo lleno - entonces

Condicin
Si Modificar - entonces

NO

4a

4b

Modifica - Condicin
Si Modifica- entonces

NO
SI

Bsqueda
Condicin
Si Encuentra - entonces

SI

5b

5a

Condicin
Si Guarda - entonces

Llene campos
Cancelar

NO

SI

6a

7b

Cerrar

7b
NO

Bsqueda
Condicin
Si Todas las carreras- entonces

8b
8a

NO
SI

NO
Elija Para continuar

NO

SI

7a

9a

7a

NO

6a

Condicin
Si Reportes - entonces

SI
Bsqueda
Condicin
Si Elija carrera y Semestres- entonces

Cancelar
SI

NO

Puede regresar No. 3 o 4b

Bsqueda
Condicin
Si por carrera- entonces

6b

Guarda

6b

Muestra Datos
Condicin
Si Imprimir - entonces

Condicin
Si - Elegir impresora - entonces

Salir

9b
NO

SI

10a

10b

Condicin
Si Guardar - entonces

Elegir formato y Guardar

11a

11b
NO

Imprimir

Cerrar

58

SISTEMA DE CONTROL ESCOLAR UNITAM

Actas de Evaluacin
1
Actas de Evaluacin

Bienvenido al sistema SCE


Men Calificaciones
Elegir carrera
Condicin
Si Elige - entonces

2
SI

NO

Cerrar
3b
Podr elegir el semestre, ciclo escolar, clave de la materia, turno, grupo, catedrtico, y encargado de control escolar
Elegir tipo de3a
acta, acta de evaluacin final, Extraordinaria y especial
SI
Condicin
Si filtrar - entonces

4
SI

Bsqueda
Condicin
Si Encuentra - entonces

NO

4
NO

SI

Muestra Datos
Condicin
Si Imprimir - entonces

Condicin
Si - Elegir impresora - entonces

Cancelar

Regresar No. 3 o 3b

5
NO

SI

5a

5b

Condicin
Si Guardar - entonces

SI

Elegir formato y Guardar

65a

65a
NO

Imprimir

Cerrar

59

SISTEMA DE CONTROL ESCOLAR UNITAM

Actas Calificaciones
1
Actas de Evaluacin

Bienvenido al sistema SCE


Men calificaciones
Elegir carrera
Condicin
Si Elige - entonces

2
SI

NO

Cerrar
3b
Podr elegir el semestre, ciclo escolar, clave de la materia, turno, grupo, catedrtico, y encargado de control escolar

3a
SI
Condicin
Si filtrar - entonces

4
SI

Bsqueda
Condicin
Si Encuentra - entonces

NO

4
NO

SI

Muestra Datos
Condicin
Si Imprimir - entonces

Condicin
Si - Elegir impresora - entonces

Cancelar

Regresar No. 3 o 3b

5
NO

SI

5a

5b

Condicin
Si Guardar - entonces

SI

Elegir formato y Guardar

65a

65a
NO

Imprimir

Cerrar

60

SISTEMA DE CONTROL ESCOLAR UNITAM

Materias
1
Materias

Bienvenido al sistema SCE


Men seguimiento
Condicin
Si navegar - entonces

2
NO

SI

3a

Condicin
Si Consultar - entonces
SI

Condicin
Si Nuevo - entonces

3b

Cancelar

NO
NO
SI
Llenar los
campos clave de la materia,
nombre, semestre, crditos, seriacin, tipo de materia, nfasis y elige la ca
Condicin
Si4 campos llenos - entonces
4a

Llenar el campo No. De control


Condicin
Si campo lleno - entonces

4b

NO

SI
Bsqueda
Condicin
Si Encuentra - entonces

NO

5b

5a

SI

Cancelar

5a
SI
Cancelar

6a

5b

Llene campos
NO

Condicin
Si Datos Correctos - entonces

6
4

Modifica - Condicin
Si Modifica- entonces

NO

7a
SI

Guarda

Condicin
Si Guarda - entonces

Condicin
Si Datos Correctos - entonces5

6a
SI

7a

6b

NO

8a

NO

7b

Cancelar

Corrige Datos

NO

SI

Guarda

Condicin
Si Guardar- entonces

Condicin
Si Eliminar- entonces
SI

8b

Datos Eliminados

7b
Cancelar

Corrige Datos

61

SISTEMA DE CONTROL ESCOLAR UNITAM

Docentes
1
Docentes

Bienvenido al sistema SCE


Men seguimiento
Condicin
Si navegar - entonces

2
NO

SI

3a

Condicin
Si Consultar - entonces
SI

Condicin
Si Nuevo - entonces

3b

Cancelar

NO
NO
SI
Llenar los
campos clave de la materia,
nombre, semestre, crditos, seriacin, tipo de materia, nfasis y elige la ca
Condicin
Si4 campos llenos - entonces
4a

Llenar el campo No. De control


Condicin
Si campo lleno - entonces

4b

NO

SI
Bsqueda
Condicin
Si Encuentra - entonces

NO

5b

5a

SI

Cancelar

5a
SI
Cancelar

6a

5b

Llene campos
NO

Condicin
Si Datos Correctos - entonces

6
4

Modifica - Condicin
Si Modifica- entonces

NO

7a
SI

Guarda

Condicin
Si Guarda - entonces

Condicin
Si Datos Correctos - entonces5

6a
SI

7a

6b

NO

8a

NO

7b

Cancelar

Corrige Datos

NO

SI

Guarda

Condicin
Si Guardar- entonces

Condicin
Si Eliminar- entonces
SI

8b

Datos Eliminados

7b
Cancelar

Corrige Datos

62

SISTEMA DE CONTROL ESCOLAR UNITAM

Seguimiento

1
Seguimiento

Cancelar

SI

4a

NO

Llenar el campo No. De control


Condicin
Si campo lleno - entonces

4b
SI

5a

6a

Condicin
Si Consultar - entonces

SI

Guarda

3b

3a

Condicin
Si Datos Correctos - entonces

SI

SI

SI

Condicin
Si Guarda - entonces

Condicin
Si navegar - entonces

2
NO

Modifica - Condicin
Si Modifica- entonces
Podr generar curp

Bienvenido al sistema SCE


Men seguimiento

Bsqueda
Condicin
Si Encuentra - entonces

NO

5b

Llene campo
NO

5b
5a

NO

6a

Cancelar

6b
Cancelar

Corrige Datos

63

SISTEMA DE CONTROL ESCOLAR UNITAM

Acceso
Nombre
Descripcin
contrasena Almacena la contrasea del usuario
usuario
Almacena el nombre del usuario
cant_grupo
Almacena la cantidad de alumnos
permitidos por grupo

Tipo de dato

varchar
varchar
int

Tamao
6
10
10

Tablas de la Base de Datos


Cabe mencionar que el nombre de la base de datos en mysql en: bd_unitam.
Esta tabla almacena informacin relacionada con el usuario y contrasea la cual
le permitir ingresar al sistema.
En esta tabla se almacenan los datos de la carrera de Administracin primer
semestre.
administracin1
Nombre
no_control
semestre
ciclo_escolar
cal1p_1
cal1p_2
cal1p_3
cal1p_4
cal1p_5
Nombre
cal1p_6
cal1p_7
cal1p_8
prom1p
cal2p_1
cal2p_2

Descripcin
Almacena el nmero de control del
alumno
Almacena el semestre
Almacena el ciclo escolar
Almacena la calificacin del primer
parcial de la primera materia
Almacena la calificacin del primer
parcial de la segunda materia
Almacena la calificacin del primer
parcial de la tercera materia
Almacena la calificacin del primer
parcial de la cuarta materia
Almacena la calificacin del primer
parcial de la quinta materia
Descripcin
Almacena la calificacin del primer
parcial de la sexta materia
Almacena la calificacin del primer
parcial de la sptima materia
Almacena la calificacin del primer
parcial de la octava materia
Almacena el promedio del primer
parcial
Almacena
la
calificacin
del
segundo parcial de la primera
materia
Almacena
la
calificacin
del
segundo parcial de la segunda

Tipo de dato
varchar

Tamao
10

int
varchar
varchar

1
10
3

varchar

varchar

varchar

varchar

Tipo de dato
varchar

Tamao
3

varchar

varchar

varchar

varchar

varchar

3
64

SISTEMA DE CONTROL ESCOLAR UNITAM

cal2p_3
cal2p_4
cal2p_5
cal2p_6
cal2p_7
cal2p_8
prom2p
calor_1
calor_2
Nombre
calor_3
calor_4
calor_5
calor_6
calor_7
calor_8
promor
promgral
prom1
prom2
prom3
prom4
prom5
prom6

materia
Almacena
la
calificacin
del
segundo parcial de la tercera
materia
Almacena
la
calificacin
del
segundo parcial de la cuarta materia
Almacena
la
calificacin
del
segundo parcial de la quinta materia
Almacena
la
calificacin
del
segundo parcial de la sexta materia
Almacena
la
calificacin
del
segundo parcial de la sptima
materia
Almacena
la
calificacin
del
segundo parcial de la octava materia
Almacena el promedio del segundo
parcial
Almacena la calificacin ordinaria de
la primera materia
Almacena la calificacin ordinaria de
la segunda materia
Descripcin
Almacena la calificacin ordinaria de
la tercera materia
Almacena la calificacin ordinaria de
la cuarta materia
Almacena la calificacin ordinaria de
la quinta materia
Almacena la calificacin ordinaria de
la sexta materia
Almacena la calificacin ordinaria de
la sptima materia
Almacena la calificacin ordinaria de
la octava materia
Almacena el promedio de las
calificaciones ordinarias
Almacena el promedio general
Almacena el promedio de la primera
materia
Almacena el promedio de la
segunda materia
Almacena el promedio de la tercera
materia
Almacena el promedio de la cuarta
materia
Almacena el promedio de la quinta
materia
Almacena el promedio de la sexta

varchar

varchar

varchar

varchar

varchar

varchar

varchar

varchar

varchar

Tipo de dato
varchar

Tamao
3

varchar

varchar

varchar

varchar

varchar

varchar

varchar
varchar

4
4

varchar

varchar

varchar

varchar

varchar

4
65

SISTEMA DE CONTROL ESCOLAR UNITAM

prom7
prom8
Nombre
ext1
ext2
ext3
ext4
ext5
ext6
ext7
ext8
clave_m1
clave_m2
Nombre
clave_m3
clave_m4
clave_m5
clave_m6

materia
Almacena el promedio de la sptima
materia
Almacena el promedio de la octava
materia
Descripcin
Almacena la primer calificacin final
redondeada y la modalidad (e
extraordinario u es especial)
Almacena la segunda calificacin
final redondeada y la modalidad (e
extraordinario u es especial)
Almacena la tercera calificacin final
redondeada y la modalidad (e
extraordinario u es especial)
Almacena la cuarta calificacin final
redondeada y la modalidad (e
extraordinario u es especial)
Almacena la quinta calificacin final
redondeada y la modalidad (e
extraordinario u es especial)
Almacena la sexta calificacin final
redondeada y la modalidad (e
extraordinario u es especial)
Almacena la sptima calificacin
final redondeada y la modalidad (e
extraordinario u es especial)
Almacena la octava calificacin final
redondeada y la modalidad (e
extraordinario u es especial)
Almacena la clave de la cuarta
materia
del
semestre
correspondiente
Almacena la clave de la cuarta
materia
del
semestre
correspondiente
Descripcin
Almacena la clave de la cuarta
materia
del
semestre
correspondiente
Almacena la clave de la cuarta
materia
del
semestre
correspondiente
Almacena la clave de la quinta
materia
del
semestre
correspondiente
Almacena la clave de la cuarta
materia
del
semestre
correspondiente

varchar

varchar

Tipo de dato
varchar

Tamao
3

varchar

varchar

varchar

varchar

varchar

varchar

varchar

varchar

varchar

Tipo de dato
varchar

Tamao
6

varchar

varchar

varchar

66

SISTEMA DE CONTROL ESCOLAR UNITAM

clave_m7
clave_m8

Almacena la clave de la cuarta varchar


materia
del
semestre
correspondiente
Almacena la clave de la cuarta varchar
materia
del
semestre
correspondiente

6
6

El formato de la tabla anterior se utiliza para las siguientes carreras ocupando una
por cada semestre:
CARRERA
LICENCIATURA EN ADMINISTRACION
LICENCIATURA EN COMUNICACIN Y P.
LICENCIATURA EN CONTADURIA
LICENCIATURA EN DERECHO
LICENCIATURA EN EDUCACION
LICENCIATURA EN SISTEMAS
PREPARATORIA

TABLAS
9
8
8
10
8
9
6

Se utilizan un total de 58 tablas para las diferentes carreras y semestres.


En esta tabla se almacenan los datos correspondientes al rea de actas de
evaluacin (final, extraordinaria, especial) solo nos sirve para guardar los datos y
mostrarlos desde el formulario FrmActasEvalFi_es para su impresin.
Nombre
no_control
num
nombre
cal_num
cal_letra
asistencia
acred_si
acred_no

Actas
Descripcin

Tipo de

dato
Almacena el nmero de control del varchar
alumno
Almacena el nmero de acta
varchar
Almacena el nombre del tipo de acta varchar
Almacena la calificacin final en varchar
nmero
Almacena la calificacin final en letra varchar
Almacena el porcentaje de asistencia varchar
Almacena si acredito
varchar
Almacena si no acredito
varchar

Tamao
10
10
50
3
15
5
2
2

En esta tabla se almacenan los datos correspondientes al rea de actas de


calificaciones solo nos sirve para guardar los datos y mostrarlos desde el
formulario FrmActasEvaluacion para su impresin.
actascalificaciones
67

SISTEMA DE CONTROL ESCOLAR UNITAM

Nombre
no_control
alumno
parcial1
parcial2
global
final
acreditado
Semestre

Descripcin

Tipo de

dato
Almacena el nmero de control del varchar
alumno
Almacena el nombre del alumno
varchar
Almacena las calificaciones del
varchar
primer parcial
Almacena las calificaciones del
varchar
segundo parcial
Almacena las calificaciones globales varchar
Almacena las calificaciones finales
varchar
Almacena si est acreditado
varchar
Almacena el semestre
varchar

Tamao
10
60
6
6
6
6
5
3

En esta tabla se almacenan los datos correspondientes al rea de listas de


asistencia solo nos sirve para guardar los datos y mostrarlos desde el formulario
FrmListasdeAsistencia para su impresin.
Nombre
no_control
num
alumno

Listas
Descripcin

Tipo de
dato
Almacena el nmero de control del varchar
alumno
Almacena el nmero de asistencia
varchar
Almacena el nombre del alumno
varchar

Tamao
10
10
60

Esta tabla almacena datos relacionados con la salud, direccin, nivel de estudios
entre otros datos que se obtendrn una vez inscrito el alumno en la institucin.
Nombre
no_control
fecha_nac
nombre
ape_p
ape_m
sexo
edad
tel
celular
curp
domicilio
colonia
municipio

datos_alumnos
Descripcin

Tipo de
dato
Almacena el nmero de control del varchar
alumno
Almacena la fecha de nacimiento
varchar
Almacena el nombre del alumno
varchar
Almacena el apellido paterno
varchar
Almacena el apellido materno
varchar
Almacena el sexo del alumno
varchar
Almacena la edad del alumno
int
Almacena el numero de telfono
varchar
Almacena el numero de celular
varchar
Almacena la curp del alumno
varchar
Almacena el domicilio del alumno
varchar
Almacena la colonia del alumno
varchar
Almacena el municipio del alumno
varchar

Tamao
10
20
30
20
20
10
3
20
45
45
45
60
45
68

SISTEMA DE CONTROL ESCOLAR UNITAM

estado
cod_postal
estado_civil
ult_nivel_ cur
area_estudio
nom_instituto
localidad_
instituto
municipio_
instituto
entidad_
instituto
nivel_ingresa
diagnostico_
problemas_
clinicos
teraputica_
empleado
dosis

Almacena el estado o entidad


Almacena el cdigo postal
Almacena el estado civil del alumno
Almacena el ultimo nivel cursado
Almacena el area de estudio
Almacena el nombre del instituto
Almacena la localidad del instituto
que donde realizo sus estudios.
Almacena el municipio del instituto
que donde realizo sus estudios.
Almacena la entidad del instituto que
donde realizo sus estudios.
Almacena el nivel al que ingresa
Almacena algn problema clnico que
pueda presentar el alumno

varchar
varchar
varchar
varchar
varchar
varchar
varchar

30
10
15
45
25
45
25

varchar

30

varchar

30

varchar
varchar

25
150

Almacena el terapeuta empleado del varchar


alumno
si
presenta
alguna
enfermedad.
Almacena la dosis del medicamento varchar
del alumno si presenta alguna
enfermedad.

60
45

La siguiente tabla almacena los datos para imprimir las boletas de los alumnos.
Nombre
nombre
cal1p
cal2p
calor
final

Boleta
Descripcin

Tipo de
dato
Almacena el nombre del alumno
varchar
Almacena la calificacin del 1er varchar
parcial.
Almacena la calificacin del segundo varchar
parcial.
Almacena la calificacin ordinaria
varchar
Almacena la calificacin final o varchar
promedio

Tamao
55
5
5
5
5

La tabla plan de estudios almacena los datos de los planes de estudios que
actualmente estn activos.
Nombre
Clave
nombre

plan_estudio
Descripcin

Tipo de
dato
Almacena la clave del plan de varchar
estudio.
Almacena nombre del plan de varchar
estudio.

Tamao
20
45

69

SISTEMA DE CONTROL ESCOLAR UNITAM

Esta tabla almacena los datos correspondientes a las materias que estn dentro
de un plan de estudio.
Nombre
no_materia
clave
nombre
carrera
semestre
creditos
seriacion
optativa
nfasis
plan_estudio

Materias
Descripcin

Tipo de
dato
Almacena el numero de materia
int
Almacena la clave de la materia
varchar
Almacena el nombre de la materia
varchar
Almacena la carrera a la que varchar
pertenece la materia
Almacena el semestre al que varchar
pertenece la materia
Almacena los crditos de la materia
varchar
Almacena la clave de la materia varchar
seriada
Almacena o activa la materia como varchar
optativa
Almacena el nfasis de la materia
varchar
Almacena el plan de estudio de la varchar
materia.

Tamao
10
10
90
60
5
5
10
45
45
45

Esta tabla almacena los datos correspondientes a los docentes que actualmente
trabajan en la universidad.
Nombre
id
nombre
ape_p
ape_m
profesion
f_nacimiento
domicilio

Docentes
Descripcin

Tipo de
dato
Almacena la clave del plan de varchar
estudio.
Almacena nombre del plan de varchar
estudio.
Almacena el apellido paterno del varchar
docente.
Almacena el apellido materno del varchar
docente.
Almacena la profesin del docente.
varchar
Almacena la fecha de nacimiento del varchar
docente.
Almacena el domicilio actual del varchar
docente.

Tamao
10
30
25
25
20
20
80

70

SISTEMA DE CONTROL ESCOLAR UNITAM

Conexin a la Base de Datos


Este apartado permite la conexin con la base de datos del sistema, ser
mandado a llamar desde los formularios para abrir y cerrar la conexin.
ModConexion.vb
El siguiente cdigo importa la libreria a utilizar.
Imports System.Data.Odbc

A continuacin se gener el mdulo ModConexion.


Module ModConexion

Se generan algunas variables publicas.


Public oDtMaterias As DataTable : Public carrera As String

El siguiente apartado es la cadena de conexin en la cual se indica el tipo de


conexin, y servidor, el nombre de la base de datos y el nombre de usuario y
contrasea de la misma.
Public oConexion As OdbcConnection = New
OdbcConnection("Driver=MySQL ODBC 5.1 Driver; Server=localhost;
Database=bd_unitam2; Dsn=bd_unitam2; Uid=root; Pwd=unitam;
Port=3306") : End Module

Formulario Acceso
El siguiente formulario es el que se muestra al usuario al iniciar el sistema y valida
el acceso mediante un nombre de usuario y contrasea.
Esta compuesto por:
Tipo
Form
Label
Label
PictureBox
TextBox
TextBox
Button
Button

Nombre
FrmAcceso
Label2
Label3
PictureBox1
txtUsu
txtPass
btnAceptar
btnCancelar

Descripcin
Formulario de Acceso al sistema
Muestra la palabra Usuario:
Muestra la palabra Contrasea:
Muestra el logo de la institucin
Muestra la caja de texto de Usuario
Muestra la caja de texto Contrasea
Muestra el botn Aceptar
Muestra el botn Cancelar

71

SISTEMA DE CONTROL ESCOLAR UNITAM

Al inicio del formulario se muestra el siguiente cdigo


Se importan las librerias a utilizar.
Imports System.Data.Odbc

Se inicializa la clase FrmAcceso, se declaran las variables y se define su tipo.


Public Class FrmAcceso: Dim oAdapter As OdbcDataAdapter
Dim oDataSet As DataSet : Dim oDaRow As DataRow
Dim usu, pass As String : Dim f, c As Integer

Cdigo del botn Aceptar


El inicio del cdigo muestra el evento en el cual sta el cdigo del botn
btnAceptar.
Private Sub btnAceptar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs)
btnAceptar.Clic

Handles

El siguiente bloque de cdigo estar manejado para el control de errores por esta
razn lo incluimos dentro del bloque Try.
Try

Se declaran algunas variables validados con el RTrim que eliminan de una


cadena los espacios en blanco a la derecha.
usu = RTrim(txtUsu.Text ) : pass = RTrim(txtPass.Text)

Aqu se muestran los mensajes que se mandan al validar si se deja vaco el


espacio del TextBox para usuario y contrasea.
If usu = "" Then : MessageBox.Show("Por favor introduzca el nombre de
Usuario", "Sistema de Control Escolar - Unitam"): txtUsu.Focus()
ElseIf pass = "" Then : MessageBox.Show("Por favor introduzca la Contrasea",
"Sistema de Control Escolar - Unitam"): txtPass.Focus() :
Else

En el siguiente apartado se declaran las variables indicando el nombre y tipo de la


variable.
Dim principal As New MDIPrincipal: Dim seguridad As New FrmAcceso

Se abre la conexin para seleccionar de la base de datos la tabla a utilizar.


ModConexion.oConexion.Open()

Crear adaptador y el conjunto de datos donde se guardara el resultado de la


consulta.
oAdapter = New OdbcDataAdapter("Select * from acceso where usuario='" & usu & "'",
ModConexion.oConexion) : oDataSet = New DataSet

Utilizar el adaptador para llenar el dataset con una tabla y cerrar conexin.
oAdapter.Fill(oDataSet, "alumno") :

ModConexion.oConexion.Close()

Se validan y cargan los valores de los campos del registro


If oDataSet.Tables("alumno").Rows.Count = 1 Then
oDaRow = oDataSet.Tables("alumno").Rows(0)

Se valida la contrasea y se muestra y oculta respectivamente un control.


If pass = oDaRow("contrasena") Then : principal.Show()
seguridad.Hide() : Me.Hide() :
Else

Se validan 3 intentos de entrada al sistema y se mandan algunos mensajes


cuando se ha exedido el nmero de intentos o el nombre de usuario o contrasea
es incorrecto.
72

SISTEMA DE CONTROL ESCOLAR UNITAM

c += 1 : If c = 3 Then : MessageBox.Show("Ah excedido el nmero de intentos permitidos,


Que tenga buen dia!", "Sistema de Control Escolar - Unitam")
End : Else : MessageBox.Show("La contrasea es Incorrecta, Intento No. " & c, "Sistema
de Control Escolar - Unitam"): txtPass.Text = "" : txtPass.Focus()
End If : End If : Else : c += 1 : If c = 3 Then
MessageBox.Show("Ah excedido el nmero de intentos permitidos, Que tenga buen dia!",
"Sistema de Control Escolar - Unitam")
End : Else : MessageBox.Show("Este usuario no esxiste , Intento No. " & c, "Sistema de
Control Escolar - Unitam")
txtUsu.Text = "" : txtPass.Text = "" : txtUsu.Focus() : End If
End If : End If

Si se produce un error se detecta en el siguiente el bloque del Catch.


Catch ex As Exception :

MsgBox(ex.Message) : Finally

Se indica el final del bloque de control de excepciones.


End Try : End Sub

Cdigo del botn Salir


El inicio del cdigo muestra el evento en el cual sta el cdigo del botn
btnCancelar.
Private Sub btnCancelar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnCancelar.Clic
If MessageBox.Show("Realmente desea salir del sistema?", "Sistema de Control EScolar - Unitam",
MessageBoxButentonces.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then :
End: Else: txtUsu.Focus() : End If : End Sub

Se hacen validaciones sobre el Textbox txtUsu y se muestra el evento en el que


se validarn.
Private Sub txtUsu_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtUsu.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If

Si no es nmero y tampoco letra y no se a tecleado el botn de retorno entonces


no va dejar hacer insertar datos
If Not Char.IsNumber(e.KeyChar) And Not Char.IsLetter(e.KeyChar) And Not e.KeyChar = ChrW(Keys.Back)
And e.KeyChar = ChrW(Keys.Space) Then : e.KeyChar = Chr(0) : End If
End Sub

Se hacen validaciones sobre el Textbox txtPass y se muestra el evento en el


que se validarn.
Private Sub txtPass_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtPass.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}") : End If

Si no es nmero y tampoco letra y no se a tecleado el botn de retorno entonces


no va dejar hacer insertar datos
If Not Char.IsNumber(e.KeyChar) And Not Char.IsLetter(e.KeyChar) And Not e.KeyChar =
ChrW(Keys.Back) And e.KeyChar = ChrW(Keys.Space) Then
e.KeyChar = Chr(0) : End If : End Sub : End Class

Formulario Principal
El siguiente formulario funcina como formulario principal y se utiliza para accesar
a los demas formularios.
Esta compuesto por:
73

SISTEMA DE CONTROL ESCOLAR UNITAM

Tipo
Form
ToolStrip

Nombre
FrmPrincipal
ToolStrip1

StatusStrip

StatusStrip1

ToolStripStatus
Label
ToolStripStatus
Label
ToolStripStatus
Label
ToolStripStatus
Label
ToolStripStatus
Label
ToolStripMenItem
ToolStripMenItem
ToolStripMenItem
ToolStripMenItem
ToolStripMenItem
ToolStripMenItem
ToolStripMenItem
ToolStripMenItem

ToolStripStatus
Label1
tsslHora

ToolStripMenItem
ToolStripMenItem
ToolStripMenItem
ToolStripMenItem
ToolStripMenItem
ToolStripMenItem
ToolStripMenItem
ToolStripMenItem
ToolStripMenItem
ToolStripMenItem
ToolStripMenItem
ToolStripMenItem
ToolStripMenItem
ToolStripMenItem
ToolStripMenItem
ToolStripMenItem
ToolStripMenItem
ToolStripMenItem

ToolStripStatus
Label2
ToolStripStatus
Label3
ToolStripStatus
Label4
tsmiMenArchivo
tsmiSalir
tsmiMenInscripciones
tsmiInscripciones
tsmiReinscripcin
tsmiListaAsistencia
tsmiDocumentacin
tsmiMen
Calificaciones
tsmiSubMen
Calificaciones
tsmiPreparatoria
tsmiAdministracin
tsmiContadura
tsmiComunicacin
tsmiDerecho
tsmiEducacin
tsmiSistemas
tsmiSubMenActas
Concentrados
tsmiActas
Calificaciones
tsmiCardex
tsmiMen
Seguimiento
tsmiMaterias
tsmiDocentes
tsmiDatosDelAlumno
tsmiMenAjustes
tsmiCambia
Contrasea
tsmiCantidad
AlumGrupo

Descripcin
Formulario principal
Muestra una barra colocada debajo del
men principal
Muestra la barra colocada en la parte de
abajo del formulario
Muestra la etiqueta Hora del Da
Muestra una etiqueta en donde se coloca la
hora
Muestra una etiqueta en donde se menciona
el nombre de la institucin
Muestra una etiqueta en donde se menciona
la pgina web
Muestra una etiqueta en donde se menciona
el nmero de telfono
Muestra el men Archivo
Muestra el submen cerrar
Muestra el men Inscripciones
Muestra el submen Inscripciones
Muestra el submen Reinscripcin
Muestra el submen Lista de Asistencia
Muestra el submen Documentacin
Muestra el men Calificaciones
Muestra el submen Calificaciones
Muestra el submen Preparatoria
Muestra el submen Administracin
Muestra el submen Contadura
Muestra el submen Comunicacin
Muestra el submen Derecho
Muestra el submen Educacin
Muestra el submen Sistemas
Muestra el submen Actas y Concentrados
Muestra el submen Actas de Calificaciones
Muestra el submen Cardex
Muestra el men Seguimiento y Control
Muestra el submen Materias
Muestra el submen Docentes
Muestra el submen Datos del alumno
Muestra el men Ajustes
Muestra el submen CambiaContrasea
Muestra el submen Cantidad de Alumnos x
Grupo

74

SISTEMA DE CONTROL ESCOLAR UNITAM

Al inicio del formulario se muestra el siguiente cdigo


Public Class FrmPrincipal

Esta parte de cdigo es para preguntar si el usuario realmente desee salir del
sistema.
Private Sub tsmiSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
tsmiSalir.Click
If MessageBox.Show("Realmente desea salir del sistema?", "Sistema de Control Escolar - Unitam",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then : End :
End If : End Sub
Private Sub FrmPrincipal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load

Se declara una variable para mostrar la hora en la barra de estado del sistema.
Dim oTiempo As New Timer : oTiempo.Interval = 1000
AddHandler oTiempo.Tick, AddressOf PonerHoraActual : oTiempo.Start() : End Sub

El siguiente cdigo esta sobre la etiqueta PonerHoraActual y se utiliza para darle


valor a la etiqueta.
Private Sub PonerHoraActual(ByVal sender As Object, ByVal e As EventArgs)
Me.tsslHora.Text = DateTime.Now.ToString("HH:mm:ss") : End Sub

A continuacin se instancian los siguientes formularios para mandarlos a llamar.


Private Sub tsmiDocumentacion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles tsmiDocumentacion.Click : Dim doc As New FrmDocumentacion : doc.ShowDialog() : End Sub
Private Sub tsmiMaterias_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
tsmiMaterias.Click : Dim materias As New FrmMaterias: materias.ShowDialog() : End Sub
Private Sub tsmiIncripciones_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles tsmiIncripciones.Click : Dim inscripcion As New FrmInscripciones: inscripcion.ShowDialog()
End Sub

75

SISTEMA DE CONTROL ESCOLAR UNITAM

Private Sub tsmiActasEvaluacion_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles


tsmiActasEvaluacion.Click : Dim actas As New FrmActasEvalFi_Ex_es : actas.ShowDialog()
End Sub
Private Sub tsmiDocentes_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles
tsmiDocentes.Click : Dim docentes As New FrmDocentes: docentes.ShowDialog() : End Sub
Private Sub tsmiListaAsistencia_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles
tsmiListaAsistencia.Click : Dim listas As New FrmListasdeAsistencia listas.ShowDialog() : End Sub
Private Sub tsmiActasCalificaciones_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles
tsmiActasCalificaciones.Click
Dim actascalificaciones As New FrmActasEvaluacion: actascalificaciones.ShowDialog() : End Sub
Private Sub tsmiCambiaContrasea_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles
tsmiCambiaContrasea.Click
Dim modificapass As New FrmModificaPass : modificapass.ShowDialog() : End Sub
Private Sub tsmiAdministracion_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles
tsmiAdministracion.Click
Dim admon As New FrmCal_Admon : admon.ShowDialog() : End Sub
Private Sub tsmiComunicacion_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles
tsmiComunicacion.Click
Dim comunicacion As New FrmCal_Comunicacion : comunicacion.ShowDialog() : End Sub
Private Sub tsmiContaduria_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles
tsmiContaduria.Click
Dim contaduria As New FrmCal_Contaduria : contaduria.ShowDialog() : End Sub
Private Sub tsmiDerecho_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles
tsmiDerecho.Click
Dim derecho As New FrmCal_Derecho : derecho.ShowDialog() : End Sub
Private Sub tsmiEducacion_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles
tsmiEducacion.Click
Dim educacion As New FrmCal_Educacion : educacion.ShowDialog() : End Sub
Private Sub tsmiPreparatoria_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles
tsmiPreparatoria.Click
Dim prepa As New FrmCal_Preparatoria : prepa.ShowDialog() : End Sub
Private Sub tsmiSistemas_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles
tsmiSistemas.Click
Dim sistemas As New FrmCal_Sistemas : sistemas.ShowDialog() : End Sub
Private Sub tsmiReinscripcion_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles
tsmiReinscripcion.Click
Dim reinscripcion As New FrmReinscripciones: reinscripcion.ShowDialog() : End Sub
Private Sub tsmiCardex_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles
tsmiCardex.Click
Dim filtrocardex As New FrmFiltroAlumnoCardex : filtrocardex.ShowDialog() : End Sub
Private Sub tsmiCantidadAlumGrupo_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles
tsmiCantidadAlumGrupo.Click
Dim cantgrupo As New FrmAjustesGrupo : cantgrupo.ShowDialog() : End Sub
Private Sub tsmiConcentradoCalificaciones_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles tsmiConcentradoCalificaciones.Click
Dim concentrado As New FrmConcentrados : concentrado.ShowDialog() : End Sub
Private Sub SeguimientoAlumnosToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles SeguimientoAlumnosToolStripMenuItem.Click
Dim seguimiento As New FrmSeguimiento : seguimiento.ShowDialog() : End Sub

76

SISTEMA DE CONTROL ESCOLAR UNITAM

Codigo para salir del sistema.


Private Sub tsbSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
tsbSalir.Click
If MessageBox.Show("Realmente desea salir del sistema?", "Sistema de Control Escolar - Unitam",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then : End :
End If : End Sub

El siguiente codigo instanca cada formulario para mandarlos a llamar y visualizar


el formulario respectivo.
Private Sub tsmiAltaDeCalificacionesPorMateria_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles tsmiAltaDeCalificacionesPorMateria.Click
Dim calificacionxmateria As New FrmAltaCalificacionesXMateria
calificacionxmateria.ShowDialog() : End Sub
Private Sub tsmiEstadisticas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles tsmiEstadisticas.Click
Dim estadistica As New FrmFiltroEstadisticas : estadistica.ShowDialog() : End Sub
Private Sub tsbReinscripcion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
tsbReinscripcion.Click
Dim reinscripcionBtn As New FrmReinscripciones : reinscripcionBtn.ShowDialog() : End Sub
Private Sub tsbInscripcion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
tsbInscripcion.Click
Dim inscripcionBtn As New FrmInscripciones : inscripcionBtn.ShowDialog() : End Sub
Private Sub tsbDocumentacion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles tsbDocumentacion.Click
Dim docBtn As New FrmDocumentacion : docBtn.ShowDialog() : End Sub
Private Sub tsbMaterias_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
tsbMaterias.Click
Dim materiasBtn As New FrmMaterias : materiasBtn.ShowDialog() : End Sub
Private Sub tsbDocentes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
tsbDocentes.Click
Dim docentesBtn As New FrmDocentes : docentesBtn.ShowDialog()
End Sub : End Class

Formulario Inscripciones

77

SISTEMA DE CONTROL ESCOLAR UNITAM

El siguiente formulario es el que se muestra para inscribir al alumno ya sea a


Preparatoria o alguna especilidad de Licenciatura.
Esta compuesto por:
Form
Label

Tipo

Nombre
FrmInscripciones
Label6

Button
Label
Button
GroupBox

btnVerMaterias
Label2
btnCancelar
GroupBox2

MaskedTextBox
MaskedTextBox
Label
ComboBox
Label
TextBox
Button
Label
Button
Label
ComboBox
Datagrid
Button
Button
GroupBox

mtxCiclo
mtxNoControl
Label12
cbGrupo
Label1
txtCiclo
btnModicar
Label7
btnCerrar
Label8
cbEspec
dgNoControles
btnNuevo
btnGuardar
GroupBox1

DataTimePicker

dtpFechaNac

Label
Label
Label
TextBox
TextBox
Label
ComboBox
Label
TextBox
Label
TextBox

Label9
Label11
Label10
txtApep
txtApem
Label5
cbSexo
Label4
txtEdad
Label3
txtNombre

Descripcin
Formulario para inscripciones
Muestra el nombre de la Universidad y las
incripciones 1 semestre
Muestra el botn Materias
Muestra la etiqueta No. Control Registrados
Muestra el botn Cancelar
Muestra el grupo de objetos del apartado Datos
Escolares
Muestra el campo NoControl
Muestra la etiqueta Grupo
Muestra el combo Grupo
Muestra la etiqueta No. Control
Muestra la caja de texto Ciclo
Muestra el botn Modificar
Muestra la etiqueta Ciclo Escolar
Muestra el botn Cerrar
Muestra la etiqueta Especialidad
Muestra el combo Especialidad
Muestra el datagrid de No. Control
Muestra el botn Nuevo
Muestra el botn Guardar
Muestra el grupo de objetos del apartado Datos
Personales
Muestra el calendario para la fecha seleccionar la
fecha de nacimiento
Muestra la etiqueta Fecha de Nacimiento
Muestra la etiqueta Apellido Materno
Muestra la etiqueta Apellido Paterno
Muestra la caja de texto Apellido Paterno
Muestra la caja de texto Apellido Materno
Muestra la etiqueta Sexo
Muestra el combo Sexo
Muestra la etiqueta Edad
Muestra la caja de texto Edad
Muestra la etiqueta Nombre(s)
Muestra la caja de texto Nombre

78

SISTEMA DE CONTROL ESCOLAR UNITAM

Al inicio del formulario se muestra el siguiente cdigo


Se agregan las librerias que se utilizan en este formulario
Imports System.Data.Odbc : Imports System.String : Imports vb = Microsoft.VisualBasic

Se inicializa la clase FrmInscripciones, se declaran las variables y se define su


tipo.
Public Class FrmInscripciones : Dim oDataAdapter, oDaMaterias, oDaExiste As OdbcDataAdapter
Dim oDataRow, oDrExiste As DataRow : Dim oDsExiste As DataSet
Dim oDataTable As DataTable : Dim posicin, semestre, pos, nm, ire As Integer
Dim SelEsp, ncFinal, tabla, ao1, ao2, ciclo, ao, ncImcomp, CadDerecha, suma, nocres As String :
Dim m1, m2, m3, m4, m5, m6, m7, m8, campos, claves As String : Dim ci, ad As Date

Se coloca el siguiente cdigo en el evento load del formulario para validar que los
campos sean dados de alta en maysculas y el campo.
Private Sub FrmInscripciones_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
txtNombre.CharacterCasing = CharacterCasing.Upper
txtApep.CharacterCasing = CharacterCasing.Upper
txtApem.CharacterCasing = CharacterCasing.Upper
cbSexo.SelectedIndex = 0 : cbGrupo.SelectedIndex = 0
dtpFechaNac.Text = Date.Now.ToString("dd/MM/yyyy") : End Sub

Cdigo del botn Nuevo


El inicio del cdigo muestra el evento en el cual sta el cdigo del botn
btnNuevo.
Private Sub btnNuevo_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnNuevo.Clic

Se hacen validaciones para que no se deje vaco el combo cbEspec si no se


manda un mensaje.
If cbEspec.Text = "Elija una especialidad" Then
MessageBox.Show("Por favor, elija una especialidad", "Sistema de Control Escolar - Unitam",
MessageBoxButentonces.OK, MessageBoxIcon.Information)
cbEspec.Focus() : Else

Se activan los elementos para que comencemos con el llenado del formulario.
carrera = cbEspec.Text : txtNombre.Enabled = True : txtEdad.Enabled = True
cbSexo.Enabled = True : btnGuardar.Enabled = True
txtApep.Enabled = True : txtApem.Enabled = True

79

SISTEMA DE CONTROL ESCOLAR UNITAM

txtNombre.Focus() : btnCancelar.Enabled = True


dtpFechaNac.Enabled = True : btnVerMaterias.Enabled = True
dtpFechaNac.Text = Date.Now.ToString("dd/MM/yyyy")
cbEspec.Enabled = False : Especialidad()

Se indican que campos se extraen de la tablas materias validado por la carrera y


el semestre.
oDaMaterias = New OdbcDataAdapter("Select clave, nombre, creditos From materias WHERE carrera='" +
cbEspec.Text + "' and semestre=1", ModConexion.oConexion)
oDtMateriasCarrera = New DataTable : oDaMaterias.Fill(oDtMateriasCarrera)
ire = oDtMateriasCarrera.Rows.Count

Obtenemos la fecha, sacamos el ao, y lo concatenamos con las letras


pertenecientes a la carrera.
ad = DateTime.Now : ao = ad.ToString("yy") : ncImcomp = ao & SelEsp

Ahora haremos la consulta para ver el nmero consecutivo para el nuevo nmero
de control del alumno a inscribir.
Try : oDataAdapter = New OdbcDataAdapter("Select no_control From alumnos WHERE no_control
LIKE '" & ncImcomp & "%'", ModConexion.oConexion)
oDataTable = New DataTable : oDataAdapter.Fill(oDataTable)
dgNoControles.DataSource = oDataTable

Si la fila del datatable es mayor a 0 quiere decir que se encontro la informacin


deseada.
If oDataTable.Rows.Count > 0 Then
pos = oDataTable.Rows.Count 1 : oDataRow = oDataTable.Rows(pos)
nocres = oDataRow("no_control") : CadDerecha = vb.Right(nocres, 3)
suma = CadDerecha + 1 : nm = vb.Len(suma)
If nm = 1 Then : ncFinal = ncImcomp & "00" & suma
ElseIf nm = 2 Then : ncFinal = ncImcomp & "0" & suma
ElseIf nm = 3 Then : ncFinal = ncImcomp & suma
End If : mtxtNoControl.Text = ncFinal
Else : ncFinal = ncImcomp & "001" : mtxtNoControl.Text = ncFinal
End If : Catch exc As Exception : MessageBox.Show(exc.Message) : End Try
ci = DateTime.Now : ao1 = ci.ToString("yyyy")
ao2 = ao1 + 1 : ciclo = "08" & ao1 & "-" & "01" & ao2
mtxtCiclo.Text = ciclo : btnNuevo.Enabled = False : BtnModificar.Enabled = True
End If : End Sub

El siguiente cdigo es de un procedimiento que iguala la especialidad


seleccionada en el combo cbEspec a su respectiva tabla en la base de datos.
Sub Especialidad()
If cbEspec.Text = "PREPARATORIA" Then : SelEsp = "BOO" : tabla = "preparatoria1"
ElseIf cbEspec.Text = "LICENCIATURA EN ADMINISTRACION" Then
SelEsp = "LAD" : tabla = "administracion1"
ElseIf cbEspec.Text = "LICENCIATURA EN DERECHO" Then
SelEsp = "LDE" : tabla = "derecho1"
ElseIf cbEspec.Text = "LICENCIATURA EN SISTEMAS COMPUTACIONALES" Then
SelEsp = "LSC" : tabla = "sistemas1"
ElseIf cbEspec.Text = "LICENCIATURA EN CONTADURA" Then
SelEsp = "LCO" : tabla = "Contadura1"
ElseIf cbEspec.Text = "LICENCIATURA EN CIENCIAS DE LA EDUCACION SUPERIOR" Then
SelEsp = "LCE" : tabla = "educacion1"
ElseIf cbEspec.Text = "LICENCIATURA EN COMUNICACION Y PERIODISMO" Then
SelEsp = "LCP" : tabla = "comunicacion1"
End If : End Sub

Cdigo del botn Guardar


El inicio del cdigo muestra el evento en el cual sta el cdigo del botn
btnGuardar.
80

SISTEMA DE CONTROL ESCOLAR UNITAM

Private Sub btnGuardar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


btnGuardar.Clic
Dim sSql, sSql2, asSql As String : Dim iResultado, ires, iResultados As Integer
Especialidad()

El siguiente cdigo valida los espacios en blanco en el objeto mtxNoControl, si


existen manda un mensaje.
If mtxtNoControl.Text = "" Then
MessageBox.Show("Ingrese un No. de Control", "Sistema de Control Escolar - Unitam")
mtxtNoControl.Enabled = True : BtnModificar.Text = "Cancelar" : mtxtNoControl.Focus()

El siguiente cdigo valida el no. de control mediante su tamao en el objeto


mtxtNoControl, si no esta completo manda un mensaje.
ElseIf Not Len(mtxtNoControl.Text) = 8 Then
MessageBox.Show("El No. de Control es incorrecto", "Sistema de Control Escolar - Unitam")
mtxtNoControl.Enabled = True : BtnModificar.Text = "Cancelar" : mtxtNoControl.Focus()

El siguiente cdigo valida el no. de control en cuanto a la clave de la carrera en el


objeto mtxtNoControl, si no esta correcta manda un mensaje.
ElseIf Mid(mtxtNoControl.Text, 3, 3) <> SelEsp Then
MessageBox.Show("No. de Control es incorrecto, tiene que llevar " & SelEsp, "Sistema de Control Escolar Unitam")
mtxtNoControl.Enabled = True : BtnModificar.Text = "Cancelar" : mtxtNoControl.Focus()

El siguiente cdigo valida los espacios en blanco en el objeto mtxtCiclo, si existen


manda un mensaje.
ElseIf mtxtCiclo.Text = "" Then
MessageBox.Show("Ingrese el Ciclo Escolar", "Sistema de Control Escolar - Unitam")
mtxtCiclo.Enabled = True : BtnModificar.Text = "Cancelar" : mtxtCiclo.Focus()

El siguiente cdigo valida el no. de control mediante su tamao en el objeto


mtxtCiclo, si no esta completo manda un mensaje.
ElseIf Not Len(mtxtCiclo.Text) = 13 Then
MessageBox.Show("El Ciclo Escolar no es aceptable", "Sistema de Control Escolar - Unitam")
mtxtCiclo.Enabled = True : BtnModificar.Text = "Cancelar" : mtxtCiclo.Focus()

En los siguientes codigos se validan los espacios en blancos para las cajas de
texto, si estas existen el sistema mandara uno de los siguientes mensages.
ElseIf txtNombre.Text = "" Then
MessageBox.Show("Ingrese el nombre del Alumno", "Sistema de Control Escolar - Unitam")
txtNombre.Focus() : ElseIf txtApep.Text = "" Then
MessageBox.Show("Ingrese el Apellido Paterno", "Sistema de Control Escolar - Unitam")
txtApep.Focus() : ElseIf txtApem.Text = "" Then
MessageBox.Show("Ingrese el Apellido Materno", "Sistema de Control Escolar - Unitam")
txtApem.Focus() : ElseIf txtEdad.Text = "" Or txtEdad.Text = 0 Then
MessageBox.Show("Indique una fecha de nacimiento", "Sistema de Control Escolar - Unitam")
dtpFechaNac.Focus()

El siguiente cdigo es para concatenar el campo nombre, apellido paterno y


apellido materno.
Else : Dim completo, confirmaNom As String : confirmaNom = "si"
completo = RTrim(txtNombre.Text) & " " & RTrim(txtApep.Text) & " " & RTrim(txtApem.Text)

El siguiente cdigo es para validar si el alumno ya esta inscrito.


oDaExiste = New OdbcDataAdapter("select * from alumnos", ModConexion.oConexion)
oDsExiste = New DataSet : ModConexion.oConexion.Open()
oDaExiste.Fill(oDsExiste, "existe") : ModConexion.oConexion.Close()
If oDsExiste.Tables("existe").Rows.Count > 0 Then
Dim oDrExiste As DataRow : Dim rec, exNc, exNom As Integer :exNc = 0 : exNom= 0
For rec = 0 To oDsExiste.Tables("existe").Rows.Count - 1
oDrExiste = oDsExiste.Tables("existe").Rows(rec)
If mtxtNoControl.Text = oDrExiste("no_control") Then : exNc = 1 : End If

81

SISTEMA DE CONTROL ESCOLAR UNITAM

If completo = oDrExiste("nom_alumno") Then : exNom = 1 : End If


Next : If exNc = 1 Then

El siguiente mensaje se manda cuando existe el nmero de control en la base de


datos.
MessageBox.Show("El nmero de Control ya existe", "Sistema de Control Escolar",
MessageBoxButentonces.OK, MessageBoxIcon.Information)
mtxtNoControl.Enabled = True : BtnModificar.Text = "Cancelar"
mtxtNoControl.Focus() : Exit Sub :
End If :
If exNom = 1 Then

El siguiente mensaje se manda cuando el nombre del alumno ya existe en la


base de datos.
If MessageBox.Show("El nombre de este alumno ya existe, Desea continuar?", "Sistema de Control
Escolar", MessageBoxButentonces.YesNo, _
MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
confirmaNom = "si" : Else : confirmaNom = "no" : End If
End If : End If :
If confirmaNom = "si" Then

El siguiente cdigo cuenta la cantidad de alumnos que van iscribindose en un


mismo grupo.
Dim ipSql As String : ipSql = "Select COUNT(*) From " & tabla & " where grupo='" & cbGrupo.Text & "'
and ciclo_escolar='" & mtxtCiclo.Text & "'"
Dim oCmdP As New OdbcCommand(ipSql, ModConexion.oConexion)
Dim cantgrupo, bd_cgrupo As Integer
ModConexion.oConexion.Open() ' abrir conexin
cantgrupo = oCmdP.ExecuteScalar() ' ejecutar comando
ModConexion.oConexion.Close() ' cerrar conexin

El siguiente cdigo valida la cantidad de alumnos en un mismo grupo y manda un


mensaje cuando ya esta saturado.
Dim oDaGrupo As OdbcDataAdapter : Dim oDsGrupo As DataSet : Dim oDrGrupo As DataRow
oDaGrupo = New OdbcDataAdapter("Select cant_grupo from acceso where usuario='admin'",
ModConexion.oConexion)
oDsGrupo = New DataSet : oDaGrupo.Fill(oDsGrupo, "grupos")
If oDsGrupo.Tables("grupos").Rows.Count > 0 Then
oDrGrupo = oDsGrupo.Tables("grupos").Rows(0) : bd_cgrupo = oDrGrupo("cant_grupo")
End If : If cantgrupo >= bd_cgrupo Then
MessageBox.Show("La cantidad de alumnos en el Grupo " & cbGrupo.Text & " ya esta saturado,
indique el siguiente grupo para continuar...", "Sistema de Control Escolar", MessageBoxButentonces.OK,
MessageBoxIcon.Information)
cbGrupo.Enabled = True : BtnModificar.Text = "Cancelar" : cbGrupo.Focus()
Exit Sub : End If

Despues de que los datos son validados se manda un mensaje de confirmacin al


guardar los datos.
If MessageBox.Show("Realmente desea Guardar los Datos?", "Sistema de Control Escolar Unitam", MessageBoxButentonces.YesNo, _
MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
ncFinal = mtxtNoControl.Text : ciclo = mtxtCiclo.Text

Se guardan los datos a la tabla alumnos.


sSql = "Insert Into alumnos " & _
"values ('" + ncFinal + "','" + completo + "','" + cbEspec.Text + "','" + cbSexo.Text + "','" +
txtEdad.Text + "','" + dtpFechaNac.Text + "')"
Dim oComando As New OdbcCommand(sSql, ModConexion.oConexion)
ModConexion.oConexion.Open() : iResultado = oComando.ExecuteNonQuery

Se guardan los datos a la tabla datos_alumnos.


asSql = "Insert Into datos_alumno (no_control, nombre, ap_p, ap_m, edad, sexo, fecha_nac) " & _ "values ('"
+ ncFinal + "','" + txtNombre.Text + "','" + txtApep.Text + "','" + txtApem.Text + "','" + txtEdad.Text + "','" +
cbSexo.Text + "','" + dtpFechaNac.Text + "')"
Dim oComand As New OdbcCommand(asSql, ModConexion.oConexion)

82

SISTEMA DE CONTROL ESCOLAR UNITAM

iResultados = oComand.ExecuteNonQuery

Se guardan los datos a la tabla documentacin.


sSql = "Insert Into documentacin
(no_control,acta_nac,certificado_sec,certificado_bac,const_estudios,fotografias,carta_conducta,curp,comp_d
omicilio) values ('" + ncFinal + "','0','0','0','0','0','0','0','0')"
Dim oComando2 As New OdbcCommand(sSql, ModConexion.oConexion)
iResultado = oComando2.ExecuteNonQuery
ModConexion.oConexion.Close() : InsertaClaves()
sSql2 = "Insert Into " & tabla & " (no_control,ciclo_escolar,semestre,grupo" & campos & ") values
('" + ncFinal + "','" + ciclo + "','1','" + cbGrupo.Text + "'" & claves & ")"
Dim oCom As New OdbcCommand(sSql2, ModConexion.oConexion)
ModConexion.oConexion.Open() : ires = oCom.ExecuteNonQuery
ModConexion.oConexion.Close()

Los objetos regresan a su estado inicial al guardar.


btnGuardar.Enabled = False : btnCancelar.Enabled = False
txtNombre.Enabled = False : txtEdad.Enabled = False
cbSexo.Enabled = False : btnGuardar.Enabled = False : btnNuevo.Enabled = True
BtnModificar.Enabled = False : btnVerMaterias.Enabled = False
txtApep.Enabled = False : txtApem.Enabled = False : txtNombre.Text = ""
txtEdad.Text = "" : cbSexo.SelectedIndex = 0 : txtApep.Text = ""
txtApem.Text = "" : Label1.Text = "" : mtxtNoControl.Text = "" : mtxtCiclo.Text = ""
mtxtNoControl.Enabled = False : mtxtCiclo.Enabled = False : cbEspec.Enabled = True
cbEspec.Text = "Elija una especialidad" : cbEspec.Focus()
cbGrupo.SelectedIndex = 0 : cbGrupo.Enabled = False
dtpFechaNac.Text = Date.Now.ToString("dd/MM/yyyy")
dtpFechaNac.Enabled = False : oDataTable.Rows.Clear()
MessageBox.Show("El Alumno se inscribi con xito", "Sistema de Control Escolar")
End If : Else : btnGuardar.Enabled = False : btnCancelar.Enabled = False
txtNombre.Enabled = False : txtEdad.Enabled = False
cbSexo.Enabled = False : btnGuardar.Enabled = False : btnNuevo.Enabled = True
BtnModificar.Enabled = False : btnVerMaterias.Enabled = False
txtApep.Enabled = False : txtApem.Enabled = False
txtNombre.Text = "" : txtEdad.Text = "" : cbSexo.SelectedIndex = 0 : txtApep.Text = ""
txtApem.Text = "" : Label1.Text = "" : mtxtNoControl.Text = "" : mtxtCiclo.Text = ""
mtxtNoControl.Enabled = False : mtxtCiclo.Enabled = False
cbGrupo.SelectedIndex = 0 : cbGrupo.Enabled = False
dtpFechaNac.Text = Date.Now.ToString("dd/MM/yyyy")
dtpFechaNac.Enabled = False : cbEspec.Enabled = True
cbEspec.Text = "Elija una especialidad" : cbEspec.Focus() : oDataTable.Rows.Clear()
End If : End If : End Sub

El siguiente cdigo es una funcin que checa el nmero de materias y obtiene sus
respectivas claves.
Sub InsertaClaves()
Select Case ire
Case 5 : m1 = oDtMateriasCarrera.Rows(0).Item(0) : m2 = oDtMateriasCarrera.Rows(1).Item(0)
m3 = oDtMateriasCarrera.Rows(2).Item(0) : m4 = oDtMateriasCarrera.Rows(3).Item(0)
m5 = oDtMateriasCarrera.Rows(4).Item(0)
campos = ", clave_m1, clave_m2, clave_m3, clave_m4, clave_m5"
claves = ",'" & m1 & "','" & m2 & "','" & m3 & "','" & m4 & "','" & m5 & "'"
Case 6 : m1 = oDtMateriasCarrera.Rows(0).Item(0) : m2 = oDtMateriasCarrera.Rows(1).Item(0)
m3 = oDtMateriasCarrera.Rows(2).Item(0) : m4 = oDtMateriasCarrera.Rows(3).Item(0)
m5 = oDtMateriasCarrera.Rows(4).Item(0) : m6 = oDtMateriasCarrera.Rows(5).Item(0)
campos = ", clave_m1, clave_m2, clave_m3, clave_m4, clave_m5, clave_m6"
claves = ",'" & m1 & "','" & m2 & "','" & m3 & "','" & m4 & "','" & m5 & "','" & m6 & "'"
Case 7 : m1 = oDtMateriasCarrera.Rows(0).Item(0) : m2 = oDtMateriasCarrera.Rows(1).Item(0)
m3 = oDtMateriasCarrera.Rows(2).Item(0) : m4 = oDtMateriasCarrera.Rows(3).Item(0)
m5 = oDtMateriasCarrera.Rows(4).Item(0) : m6 = oDtMateriasCarrera.Rows(5).Item(0)
m7 = oDtMateriasCarrera.Rows(6).Item(0)
campos = ", clave_m1, clave_m2, clave_m3, clave_m4, clave_m5, clave_m6, clave_m7"
claves = ",'" & m1 & "','" & m2 & "','" & m3 & "','" & m4 & "','" & m5 & "','" & m6 & "','" & m7 & "'"
Case 8 : m1 = oDtMateriasCarrera.Rows(0).Item(0) : m2 = oDtMateriasCarrera.Rows(1).Item(0)

83

SISTEMA DE CONTROL ESCOLAR UNITAM

m3 = oDtMateriasCarrera.Rows(2).Item(0) : m4 = oDtMateriasCarrera.Rows(3).Item(0)
m5 = oDtMateriasCarrera.Rows(4).Item(0) : m6 = oDtMateriasCarrera.Rows(5).Item(0)
m7 = oDtMateriasCarrera.Rows(6).Item(0) : m8 = oDtMateriasCarrera.Rows(7).Item(0)
campos = ", clave_m1, clave_m2, clave_m3, clave_m4, clave_m5, clave_m6, clave_m7, clave_m8"
claves = ",'" & m1 & "','" & m2 & "','" & m3 & "','" & m4 & "','" & m5 & "','" & m6 & "','" & m7 & "','" & m8 & "'" :
End Select : End Sub

Cdigo del botn Modificar


El inicio del cdigo muestra el evento en el cual sta el cdigo del botn
BtnModificar.
Private Sub BtnModificar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
BtnModificar.Clic

Se hacen validaciones sobre el botn BtnModificar para cambiar propiedades de


ciertos objetos.
If BtnModificar.Text = "Modificar" Then : mtxtNoControl.Enabled = True : mtxtCiclo.Enabled = True
cbGrupo.Enabled = True : mtxtNoControl.Focus() : BtnModificar.Text = "Cancelar"
Else : BtnModificar.Text = "Modificar" : mtxtNoControl.Enabled = False
mtxtCiclo.Enabled = False : cbGrupo.Enabled = False : txtNombre.Focus()
End If : End Sub

Cdigo del botn Cerrar


El inicio del cdigo muestra el evento en el cual sta el cdigo del botn
btnCerrar.
Private Sub btnCerrar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnCerrar.Clic : Me.Close() : End Sub

Cdigo del botn Cancelar


El inicio del cdigo muestra el evento en el cual sta el cdigo del botn
btnCancelar.
Private Sub btnCancelar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnCancelar.Clic

El siguiente cdigo cambia las propiedades a los objetos al Cancelar.


BtnModificar.Enabled = False : mtxtNoControl.Text = "" : mtxtCiclo.Text = ""
txtNombre.Text = "" : txtApep.Text = "" : txtApem.Text = "" : txtEdad.Text = ""
cbGrupo.SelectedIndex = 0 : cbSexo.SelectedIndex = 0 : mtxtNoControl.Enabled = False
mtxtCiclo.Enabled = False : txtNombre.Enabled = False : txtApep.Enabled = False
txtApem.Enabled = False : txtEdad.Enabled = False : cbSexo.Enabled = False
btnGuardar.Enabled = False : cbGrupo.Enabled = False : btnNuevo.Enabled = True
dtpFechaNac.Text = Date.Now.ToString("dd/MM/yyyy") : dtpFechaNac.Enabled = False
cbEspec.Text = "Elija una especialidad" : cbEspec.Enabled = True
cbEspec.Focus() : btnCancelar.Enabled = False : btnVerMaterias.Enabled = False
oDataTable.Rows.Clear() : oDtMateriasCarrera.Rows.Clear() : End Sub

Cdigo del botn Materias


El inicio del cdigo muestra el evento en el cual sta el cdigo del botn
btnVerMaterias.
Private Sub btnVerMaterias_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnVerMaterias.Clic

El siguiente cdigo ejecuta el formulario FrmVerMAterias.


If oDtMateriasCarrera.Rows.Count > 0 Then : My.Forms.FrmVerMaterias.Show() :

Else

Se manda un mensaje si no estan disponibles las materias para la carrera y


semestre seleccionadas.
MessageBox.Show("Las materias para esta carrera y semestre no estan disponibles", "Sistema de
Control Escolar - Unitam") : End If : End Sub

84

SISTEMA DE CONTROL ESCOLAR UNITAM

Se hacen validaciones en el campo indicado sobre lo que se vaya insertando.


Private Sub txtNombre_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtNombre.KeyPress
If Char.IsLetter(e.KeyChar) Then : e.Handled = False
ElseIf Char.IsControl(e.KeyChar) Then : e.Handled = False
ElseIf Char.IsSeparator(e.KeyChar) Then : e.Handled = False : Else : e.Handled = True
End If

Si en el campo indicado no hay nada no deja meter espacios.


If Len(txtNombre.Text) = 0 Then : If e.KeyChar = " " Then : e.KeyChar = Chr(0) : End If
End If : If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}") : End If
: End Sub

Valida que no deje espacios y que no acepte signos ni nmeros.


Private Sub txtApep_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtApep.KeyPress
If Char.IsLetter(e.KeyChar) Then : e.Handled = False : ElseIf Char.IsControl(e.KeyChar) Then :
e.Handled = False : ElseIf Char.IsSeparator(e.KeyChar) Then : e.Handled = False
Else e.Handled = True : End If : If Len(txtApep.Text) = 0 Then : If e.KeyChar = " " Then
e.KeyChar = Chr(0) : End If : End If : If e.KeyChar = ChrW(Keys.Enter) Then
e.Handled = True : SendKeys.Send("{TAB}") : End If : End Sub

Valida que no deje espacios vacos.


Private Sub txtEdad_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtEdad.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}") : End If
If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = ChrW(Keys.Back) Then
e.KeyChar = Chr(0) : End If
If e.KeyChar = ChrW(Keys.Space) Then : e.KeyChar = Chr(0) : End If : End Sub

Se hacen validaciones sobre los combos indicado para que no deje teclear nada
solo seleccionar.
Private Sub cbSexo_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles cbSexo.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : btnGuardar.Focus() : End If
If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If : End Sub
Private Sub cbEspec_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles cbEspec.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If : End Sub
Private Sub cbGrupo_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles cbGrupo.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If : End Sub

Se hacen validaciones sobre las cajas de texto para que no deje espacios y que
no acepte signos ni nmeros.
Private Sub txtNoControl_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs)
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}") : End If
If Len(mtxtNoControl.Text) = 0 Then : If e.KeyChar = " " Then : e.KeyChar = Chr(0) : End If
End If : If e.KeyChar = ChrW(Keys.Space) Then : e.KeyChar = Chr(0) : End If
End Sub
Private Sub mtxtCiclo_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles mtxtCiclo.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If e.KeyChar = ChrW(Keys.Space) Then : e.KeyChar = Chr(0) : End If : End Sub
Private Sub mtxtNoControl_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles mtxtNoControl.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}") : End If
If e.KeyChar = ChrW(Keys.Space) Then : e.KeyChar = Chr(0) : End If : End Sub

85

SISTEMA DE CONTROL ESCOLAR UNITAM

Valida que no deje meter espacios.


Private Sub dtpFechaNac_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles dtpFechaNac.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : End Sub

Se aplica el formato al campo indicado.


Private Sub dtpFechaNac_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles dtpFechaNac.ValueChanged
Dim fn, fa As Date : fn = dtpFechaNac.Text : fa = Date.Now.ToString("dd/MM/yyyy")
txtEdad.Text = DateDiff(DateInterval.Year, fn, fa) : End Sub : End Class

Formulario Ver Materias


Este es el formulario que muestra las materias del primer semestre y entra en
funcin cuando se manda llamar desde el formulario inscripciones adems esta
validado con la carrera que elija en ese formulario.
Est compuesto por:
Tipo
Form
Label
Label
Label
Label
Label
Button
DataGridView

Nombre
FrmVerMaterias
Label4
Label3
lbCarrera
Label2
Label1
btnCerrar
dgvMaterias

Descripcin
Formulario que muestra materias del primer semestre
Muestra en la etiqueta 1
Muestra en la eiqueta Semestre:
Muestra el valor del campo Carrera
Muestra en la etiqueta Lista Materias
Muestra en la etiqueta Carrera
Muestra el botn Cerrar
Muestra las materias

Se inicia la clase FrmMaterias


Public Class FrmVerMaterias

El siguiente cdigo cierra el formulario FrmVerMaterias.


Private Sub btnCerrar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnCerrar.Clic : Me.Close() : End Sub

El siguiente cdigo genera las columnas Clave, Nombre y Creditos dentro del
Datagrid.
Private Sub FrmVerMaterias_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Try :
lbCarrera.Text = carrera : dgvMaterias.DataSource = oDtMateriasCarrera
dgvMaterias.Columns("clave").HeaderText = "Clave" : dgvMaterias.Columns("clave").Width = 50 :
dgvMaterias.Columns("nombre").HeaderText = "Nombre"

86

SISTEMA DE CONTROL ESCOLAR UNITAM

dgvMaterias.Columns("nombre").Width = 320
dgvMaterias.Columns("creditos").HeaderText = "Creditos"
dgvMaterias.Columns("creditos").Width = 53
dgvMaterias.CurrentCell.Selected = False
Catch exc As Exception : MessageBox.Show(exc.Message) : End Try : End Sub : End Class

Formulario Reinscripcin
El siguiente formulario se utiliza para reinscribir a un alumno.
Est compuesto por:
Tipo
Button

Nombre
FrmReinscripcione
s
BtnCarga

Label
Button
ListBox
Button
Button
GroupBox
Label
Label
Label
Button
Button
ListBox
Label
Button
Label
Label
Button
ListBox

Label10
btnCerrar
Listanollevo
Button3
BtnGuardar
GroupBox1
Label8
Label7
Label6
btnVerMaterias
btnAgregar
listaOptativas
Label9
btnBuscaMateria
Label12
Label13
btnQuitar
listanfasis

ListBox
Label

listaMaterias
Label4

Label

Label3

Label
GroupBox
Label
Button
Label
Label
ComboBox
Label
Label

Label17
GbAlumno
Label19
BtnAceptar
Label18
Label11
cbGrupo
Label12
Label1

MaskedTextBox
Button
MaskedTextBox
ComboBox
Label
Label
Button
Label
ListBox

CCiclo
BtnBuscar
NoControl
Cbsemestre
Label16
Label14
BtnModificar
lbTitulo
listaReprobadas

Form

Descripcin
Formulario de Reinscripciones
Muestra el botn Cargar Materias Reprobadas y No
Cursadas
Muestra la en la etiqueta Materias que No a Cursado
Muestra el botn Cerrar
Muestra las materias que no llevo
Muestra el botn QUITAR
Muestra el botn Reinscribir Alumno
Muestra el grupo Datos de la Materia
Muestra en la etiqueta nfasis
Muestra en la etiqueta Optativas
Muestra en la etiqueta Carga Academica
Muestra el botn Ver Materias
Muestra el botn Agregar
Muestra las materias optativas
Muestra en la etiqueta Nombre
Muestra el botn Buscar Materias
Muestra en la etiqueta Creditos
Muestra en la etiqueta Clave
Muestra el botn Quitar
Muestra la lista de los grupos de materias
consideradas como nfasis
Muestra la lista de materias a cursar
Muestra en la etiqueta Materias Reprobadas en el
semestre anterior
Muestra en la etiqueta Materias Cursadas en el
Semestre Anterior
Muestra en la etiqueta No. de extraordinarios:
Muestra el grupo Datos Alumno
Muestra en la etiqueta Grupo
Muestra el botn Aceptar
Muestra en la etiqueta Semestre
Muestra en la etiqueta No. de Control
Muestra el combo Grupo
Muestra en la etiqueta Nombre (s)
Muestra en la etiqueta Introduzca el Nmero de
Control del Alumno
Muestra la caja de texto Ciclo
Muestra el botn Buscar Materias
Muestra la caja de texto No. de Control
Muestra el combo Semestre
Muestra en la etiqueta Ciclo Escolar
Muestra en la etiqueta Especialidad:
Muestra el botn Buscar Materias
Muestra en la etiqueta Reinscripciones
Muestra la lista de materias reprobadas

87

SISTEMA DE CONTROL ESCOLAR UNITAM

DataGridView
Label

DGVMaterias
edad

Muestra las materias que curs


Muestra en la etiqueta la edad

Al inicio del formulario se muestra el siguiente cdigo


Se importan las librera a utilizar
Imports System.Data.Odbc : Imports System.String : Imports vb = Microsoft.VisualBasic

Se inicializa la clase FrmReinscripciones, se declaran las variables indicando el


tipo.
Public Class FrmReinscripciones
Dim oDataAdapter, claverep, oDataAdapter1, oDataAdapter2, oDa, oDa2, oDataAdapterG,
oDataAdapterCG As OdbcDataAdapter
Dim oDataSet, Orepetida, oDataSet1, oDataSet11, oDataSet2, oDatasetG, oDatasetCG As New DataSet :
Dim dt, dtc, oDt, oDt2, dtc1, mitabla, nollevo As New DataTable
Dim oDataRow, oDataRow2, oDataRow3, row, row2, rowss, rowextra, oDr, mirow, rowrep, rowG, rowCG As
DataRow : Dim arreglo As New ArrayList()
Dim ciclo, des, paraciclo, pSql, mes, tabla2 As String
Dim tabla, tabla1, campos, claves, com, CadIzquierda, clave, tablas, cad1, ciclog, vgrupo As String : Dim
ao, paraatras, cont, ind, x, z, iPos, pa, pami3, p1, variable, uu, variable2, n1, pacontar, pasaber1 As Integer :
Dim MiFecha, ci As Date
Dim p As Integer = 0 : Dim prueba As Integer = 0 : Dim gg As Integer = 0 : Dim mm As Integer = 0 : Dim f
As Integer = 0 : Dim n As Integer = 0 : Dim ji As Integer = 0 : Dim repetida As Integer = 0 : Dim l As Integer =
0
Dim mesr, c1, c2, c3, c4, c5, c6, c7, c8, cic, cicloant, modalidad, rep As String
Dim kk, kk1, KK2, KK11, k1, k, j, b, con, pos, posi, r, i, rest, cm, cmm, cm2, q, ps, c, d, u, numfil, rec, cuant,
pami, vr, nohay, h, cantciclo, cantG As Integer
Dim colclave, colMat, colProm, colclave2, colcred, colMat2, colclave3, colMat3, colclaves, colseriacin As
New DataColumn

Cdigo del Botn Buscar


Private Sub BtnBuscar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
BtnBuscar.Clic

Se manda un mensaje a pantalla cuando no se ha introducido un nmero de


control.
If BtnBuscar.Text = "Buscar" Then : If NoControl.Text = "" Then 'clave

88

SISTEMA DE CONTROL ESCOLAR UNITAM

MessageBox.Show("INTRODUZCA UNA CLAVE", "ALUMNOS", MessageBoxButentonces.OK,


MessageBoxIcon.Question) : NoControl.Focus() :
Else

Se realiza una busqueda sobre la tabla alumnos para obtener el nombre del
alumno.
BtnBuscar.Text = "Nueva Bsqueda" : NoControl.Enabled = False
Cbsemestre.Enabled = False
oDataAdapter = New OdbcDataAdapter("Select * From alumnos Where no_control='" +
NoControl.Text + "'", ModConexion.oConexion)
Dim ocom As OdbcCommandBuilder = New OdbcCommandBuilder(oDataAdapter)
Me.oDataSet = New DataSet : ModConexion.oConexion.Open()
Me.oDataAdapter.Fill(oDataSet, "alumnos") : ModConexion.oConexion.Close()
If oDataSet.Tables("alumnos").Rows.Count > 0 Then
oDataRow = oDataSet.Tables("alumnos").Rows(0)

Se manda a llamar la funcin fecha() y elijetabla(), realizando la resta para ir al


semestre anterior al seleccionado.
fecha() : rest = Val(Cbsemestre.Text) 1 : elijetabla()

Se concatenan datos del semestre anterior con el nombre de la tabla de la carrera


y se igualan a la variable tabla.
tabla = com & rest

Se realiza una consulta sobre la variable tabla para obtener las calificaciones del
semestre anterior.
oDataAdapter1 = New OdbcDataAdapter("Select * From " & tabla & " Where no_control='" +
NoControl.Text + "'", ModConexion.oConexion)
Dim ocom1 As OdbcCommandBuilder = New OdbcCommandBuilder(oDataAdapter1) :
oDataSet = New DataSet ModConexion.oConexion.Open()
Try : Me.oDataAdapter1.Fill(oDataSet, "nose")
Catch ex As Exception : MessageBox.Show(ex.Message)
Exit Sub : End Try : ModConexion.oConexion.Close()
If oDataSet.Tables("nose").Rows.Count > 0 Then
row = oDataSet.Tables("nose").Rows(0)
nombre.Text = oDataRow("nom_alumno")
especialidad.Text = oDataRow("especialidad")
ciclog = row("ciclo_escolar") : vgrupo = row("grupo") : grupo() : con = 0

Se realiza una bsqueda de todas las materias de la carrera.


oDataAdapter2 = New OdbcDataAdapter("Select * From materias Where carrera='" &
especialidad.Text & "'", ModConexion.oConexion)
oDataSet1 = New DataSet : Me.oDataAdapter2.Fill(oDataSet1, "nombremat")
leeclaves()

Se implementa la funcin extraordinarios() que verifica cuantos extraordinarios ha


presentado.
extraordinarios()

Se pasa la cantidad de claves que se encontro y se le asignan a una variable.


cmm = cm

Se indica el formato de las columnas del Datagrid.


DGVMaterias.DataSource = dt :DGVMaterias.Columns("Clave").ReadOnly = True
DGVMaterias.Columns("Clave").Width = 45
DGVMaterias.Columns("Nombre Materia").ReadOnly = True
DGVMaterias.Columns("Nombre Materia").Width = 247
DGVMaterias.Columns("Promedio").ReadOnly = True
DGVMaterias.Columns("Promedio").Width = 53 : Else

Se manda un mensaje a pantalla si el alumno no va en ese semestre.


89

SISTEMA DE CONTROL ESCOLAR UNITAM

MessageBox.Show("NO PUEDE CURSAR ESTE SEMESTRE,TIENE QUE CURSAR


SEMESTRES ANTERIORES", "REINSCRIPCION", MessageBoxButentonces.OK,
MessageBoxIcon.Question) : limpia() :
End If

Se manda un mensaje a pantalla cuando el alumno ha presentado 12


extraordinarios y ser dado de baja, se implementa la funcin limpia().
If n >= 12 Then
MessageBox.Show("A PRESENTADO 12 EXTRAORDINARIOS SERA DADO DE BAJA",
"REINSCRIPCION", MessageBoxButentonces.OK, MessageBoxIcon.Question)
limpia() : Else : Label15.Text = n

Valida las materias reprobadas, cuando


recursar el semestre.

debe mas de 4 materias tiene que

If con < 4 Then : btnBuscaMateria.Enabled = True : modalidad = "normal"

Verifica el semestre par al que va a recursar y el mes para saber si se puede


reinscribir.
ElseIf mesr = "par" And rest = 2 And rest = 4 And rest = 6 And rest = 8 And rest = 10 Then :
BtnGuardar.Enabled = False : Cbsemestre.Text = rest
MessageBox.Show("REPROB MAS DE 4 MATERIAS, VA A RECURSAR,SE BUSCARAN
LAS MATERIAS QUE LLEVAR EN EL SEMESTRE A RECURSAR", "REINSCRIPCION",
MessageBoxButentonces.OK, MessageBoxIcon.Question)
Cbsemestre.Text = rest : btnBuscaMateria.Enabled = True
BtnGuardar.Enabled = True : modalidad = "recursa"

Se implementa la funcin semestreatrasrecursa() y leerclaves().


semestreatrasrecursa()
leeclaves()

Verifica el semestre impar al que va a recursar y el mes para saber si se puede


reinscribir.
ElseIf mesr = "impar" And rest = 1 And rest = 3 And rest = 5 And rest = 7 And rest = 9 Then
Cbsemestre.Text = rest : btnBuscaMateria.Enabled = True : modalidad = "recursa"
BtnGuardar.Enabled = True : semestreatrasrecursa() : leeclaves() : Else

Se manda un mensaje indicando que se debe mas de 4 materias y tiene que


recursar el semestre.
MessageBox.Show("DEBE MAS DE 4 MATERIAS,TIENE QUE RECURSAR REGRECE
PROXIMO SEMESTRE,POR EL MOMENTO NO SE PUEDE REINSCRIBIR", "REINSCRIPCION",
MessageBoxButentonces.OK, MessageBoxIcon.Question)
limpia() :
End If : End If : Else

Se manda un mensaje cuando no se encuentra el nmero de control del alumno.


MessageBox.Show("INTRODUZCA OTRA CLAVE, ALUMNO NO ENCONTRADO,O ESTA
DADO DE BAJA", "REINSCRIPCION", MessageBoxButentonces.OK, MessageBoxIcon.Question)
limpia() : End If : End If : Else : BtnBuscar.Text = "Buscar"
limpia() : End If : End Sub

La siguiente funcin se utiliza para realizar una busqueda y obtener los grupos
existentes del ciclo escolar del alumno.
Sub consultagrupos() : rest = Val(Cbsemestre.Text) 1 : elijetabla()

Nos vamos un semestre atras para verificar sus calificaciones.


tabla = com & rest
oDataAdapterG = New OdbcDataAdapter("Select * From " & tabla & " where ciclo_escolar ='" & ciclog &
"'", ModConexion.oConexion)
Dim ocom1 As OdbcCommandBuilder = New OdbcCommandBuilder(oDataAdapterG)
oDatasetG = New DataSet : ModConexion.oConexion.Open()
Me.oDataAdapterG.Fill(oDatasetG, "grupo") : ModConexion.oConexion.Close() : End Sub

90

SISTEMA DE CONTROL ESCOLAR UNITAM

La siguiente funcin asigna valores al combo CbGrupo con el resultado de la


consulta en la funcin consultagrupos().
Sub grupo() : Dim i As Integer = 0 : Dim b As Integer : consultagrupos()
For i = 0 To oDatasetG.Tables("grupo").Rows.Count - 1
rowG = oDatasetG.Tables("grupo").Rows(i) : b = 0
For l = 0 To cbGrupo.Items.Count 1 : If rowG("grupo") = cbGrupo.Items(l) Then
b = 1 : End If : Next
If b = 0 Then : cbGrupo.Items.Add(rowG("grupo")) : End If : Next : indiceg() : End Sub

La siguiente funcin se utiliza para validar que se muestre el grupo en el que se


encuentra el alumno automaticamente en el combo cbGrupo.
Sub indiceg() : For l = 0 To cbGrupo.Items.Count - 1
If cbGrupo.Items(l) = vgrupo Then : cbGrupo.SelectedIndex = l : End If :

Next : End Sub

La siguiente funcin verifica si se pude cambiar de grupo.


Sub cuantosg() : cantG = 0 : Dim gg As Integer = 0
For gg = 0 To oDatasetG.Tables("grupo").Rows.Count - 1
rowG = oDatasetG.Tables("grupo").Rows(gg) : If cbGrupo.Text = rowG("grupo") Then
cantG += 1 : End If : Next : End Sub

La siguiente funcin realiza una consulta para saber el lmite de alumnos por
grupo.
Sub cangrupos()
Dim xg As Integer = 0 : oDataAdapterCG = New OdbcDataAdapter("Select cant_grupo From acceso",
ModConexion.oConexion)
Dim ocom1 As OdbcCommandBuilder = New OdbcCommandBuilder(oDataAdapterCG)
oDatasetCG = New DataSet : ModConexion.oConexion.Open()
Me.oDataAdapterCG.Fill(oDatasetCG, "cantidad")
ModConexion.oConexion.Close() : If oDatasetCG.Tables("cantidad").Rows.Count > 0 Then
rowCG = oDatasetCG.Tables("cantidad").Rows(0) : End If : End Sub
Private Sub FrmInscripciones_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load

Se le asignan los nombres a las columnas del DataGrid.


colclave.ColumnName = "Clave" : colMat.ColumnName = "Nombre Materia" : colProm.ColumnName =
"Promedio"
dt.Columns.Add(colclave) : dt.Columns.Add(colMat) : dt.Columns.Add(colProm)
mitabla.Columns.Add(colclave2) : mitabla.Columns.Add(colcred) : mitabla.Columns.Add(colMat2)
nollevo.Columns.Add(colclave3) : nollevo.Columns.Add(colMat3) : nollevo.Columns.Add(colseriacin)
NoControl.Focus() : Cbsemestre.SelectedIndex = 0 : dtc.Columns.Add(colclaves) : End Sub

Cdigo del Botn Reinscribir


Private Sub BtnGuardar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
BtnGuardar.Clic

Contabiliza el nmero de campos del datatable de las materias que llevar.


numfil = mitabla.Rows.Count Valida si la carga academica es mayor a 8 materias
If numfil < 9 Then Valida si se agrego el enfasis o la optativa
If cont = 1 Then : If MessageBox.Show("REALMENTE DESEA GUARDAR LOS DATOS?",
"ATENCIN", MessageBoxButentonces.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
If modalidad = "normal" Then

Valida si el alumno ya esta inscrito en el semestre seleccionado.


repetidas() :

If repetida = 0 Then

Verifica que el campo ciclo no este vaco


cantciclo = Len(CCiclo.Text) : If cantciclo < 13 Or cbGrupo.Enabled = True Then
Mensaje que se manda cuando se deja vaco el campo ciclo escolar.
MessageBox.Show("LLENE EL CAMPO CICLO,O DE CLIC EN ACEPTAR")

91

SISTEMA DE CONTROL ESCOLAR UNITAM

Else : Dim tSql As String : Dim iresults As Integer : ciclo = CCiclo.Text


tabla2 = com & Cbsemestre.Text

Una vez validados los datos se guardan en la tabla correspondiente.


InsertaClaves()
tSql = "Insert Into " & tabla2 & " (no_control,ciclo_escolar,semestre,grupo" & campos & ") values ('" +
NoControl.Text + "','" + ciclo + "','" + Cbsemestre.Text + "','" + cbGrupo.Text + "'" & claves & ")"
Dim oComa3 As New OdbcCommand(tSql, ModConexion.oConexion)
ModConexion.oConexion.Open() : iresults = oComa3.ExecuteNonQuery
ModConexion.oConexion.Close()

Se manda un mensaje de confirmacin al guardar.


MessageBox.Show("DATOS GUARDADOS", "REINSCRIPCION",
MessageBoxButentonces.OK, MessageBoxIcon.Question) : limpia() : End If : Else

Se manda un mensaje cuando el alumno ya esta inscrito.


MessageBox.Show("YA ESTA INSCRITO EN ESTE SEMESTRE", "REINSCRIPCION",
MessageBoxButentonces.OK, MessageBoxIcon.Question)
limpia() : End If

Se valida si la modalidad es recursa y se manda un mensaje de confirmacin


para eliminar los datos del semestre reprobado.
ElseIf modalidad = "recursa" Then
If MessageBox.Show("LOS DATOS DEL SEMESTRE REPROBADO SERAN BORRADOS
DESE CONTINUAR?", "Atencin", MessageBoxButentonces.YesNo, _
MessageBoxIcon.Question) = DialogResult.Yes Then
Especial() : camposblancos() : tabla = com & rest

Se actualiza los datos en la tabla correspondiente.


pSql = "update " & tabla & " Set ciclo_escolar='" + ciclo + "' Set grupo='" + cbGrupo.Text +
"'," & campos & " where no_control ='" + NoControl.Text + "'"
Dim oComando As New OdbcCommand(pSql, ModConexion.oConexion)
Dim iResultado As Integer : ModConexion.oConexion.Open()
iResultado = oComando.ExecuteNonQuery :ModConexion.oConexion.Close()

Se manda un mensaje de confirmacin al guardar los datos de un alumno que va


recursar.
MessageBox.Show("LOS DATOS HAN SIDO ACTUALIZADOS
CORRECTAMENTE,QUEDO INSCRITO", "REINSCRIPCIONES")
limpia() : End If : End If : Else : End If : Else

Se manda un mensaje a pantalla cuando no se han agregado enfasis u optativas.


MessageBox.Show("AGREGUE LAS MATERIAS PARA COMPLETAR Y GUARDAR LOS DATOS",
"REINSCRIPCIONES") : End If : Else : masdenueve() : End If : End Sub

Cdigo del Botn Modificar


El siguiente cdigo se utiliza para modificar el ciclo escolar y grupo activando los
elementos a modificar.
Private Sub BtnModificar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
BtnModificar.Clic
If BtnModificar.Text = "Modificar" Then
CCiclo.Enabled = True : cbGrupo.Enabled = True
BtnAceptar.Enabled = True : BtnModificar.Text = "Cancelar" : Else
Especial() : BtnModificar.Text = "Modificar" :
indiceg() : cbGrupo.Enabled = False
CCiclo.Enabled = False :
BtnAceptar.Enabled = False : End If : End Sub

Cdigo del Botn Materias


Private Sub btnBuscaMateria_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnBuscaMateria.Clic

92

SISTEMA DE CONTROL ESCOLAR UNITAM

listaOptativas.Enabled = True : listanfasis.Enabled = True : ind = 0 : pami = 0

Busca las materias del semestre a cursar.


oDa = New OdbcDataAdapter("Select * From materias Where semestre='" + Cbsemestre.Text + "' and
carrera='" + especialidad.Text + "'", ModConexion.oConexion)
ModConexion.oConexion.Open() : oDt = New DataTable : oDa.Fill(oDt)
ModConexion.oConexion.Close()

Valida si se encontraron materias.


If oDt.Rows.Count >= 1 Or j > 0 Or rep = "rpbds" Then
Dim pos As Integer : For pos = 0 To oDt.Rows.Count - 1

Realiza validaciones sobre las siguientes carreras.


If especialidad.Text = "LICENCIATURA EN SISTEMAS COMPUTACIONALES" Or especialidad.Text =
"LECENCIATURA EN DERECHO" Or especialidad.Text = "LICENCIATURA EN CIENCIAS DE LA
EDUCACION" Then
If Char.IsLetter(oDt.Rows(pos).Item(7)) Then
iPos = listanfasis.FindString(oDt.Rows(pos).Item(7))

Si ya elijio un nfasis solo le mostrar las materias de ese nfasis.


If oDt.Rows(pos).Item(7) = Label5.Text Then
If iPos = listanfasis.NoMatches Then : anfasis.Items.Add(oDt.Rows(pos).Item(7))
mm = 1 : End If : ElseIf Label5.Text = "" Then
If iPos = listanfasis.NoMatches Then
listanfasis.Items.Add(oDt.Rows(pos).Item(7))
mm = 1 : End If : End If : btnVerMaterias.Enabled = True : cont = 0
Else : Dim rj As Integer = 0 : Dim cad1, cad2 As String
cad1 = oDt.Rows(pos).Item(4) : seriadas()
For r = 0 To dtc.Rows.Count 1 : cad2 = dtc.Rows(r).Item(0)
If cad1 = cad2 Then : rj = 1 : End If : Next r
If rj = 0 Then
If uu = 1 Then : mirow = oDt.Rows(pos) : mitabla.Rows().Add()
mitabla.Rows(pami).Item(0) = mirow("clave") : mitabla.Rows(pami).Item(1) = mirow("creditos")
mitabla.Rows(pami).Item(2) = mirow("nombre") listaMaterias.Items.Add(mitabla.Rows(pami).Item(0) &
Chr(9) & mitabla.Rows(pami).Item(1) & Chr(9) & mitabla.Rows(pami).Item(2)) : pami = pami + 1 : ind = ind
+1
End If : End If : btnBuscaMateria.Enabled = False : End If
Else : If oDt.Rows(pos).Item(6) Like "optativa*" = True Then
listaOptativas.Items.Add(oDt.Rows(pos).Item(0) & Chr(9) & oDt.Rows(pos).Item(2) & Chr(9) &
oDt.Rows(pos).Item(1))

Habilitamos y deshabilitamos los botones del formulario.


btnAgregar.Enabled = True : btnVerMaterias.Enabled = False : cont = 0 : mm = 1
ElseIf oDt.Rows(pos).Item(7) = "" Then
Dim rj As Integer = 0 : Dim cad2 As String
cad1 = oDt.Rows(pos).Item(4) : seriadas()
For r = 0 To dtc.Rows.Count 1 : cad2 = dtc.Rows(r).Item(0)
If cad1 = cad2 Then : rj = 1 : End If
Next r
If rj = 0 And uu = 1 Then : mirow = oDt.Rows(pos) : mitabla.Rows().Add()
mitabla.Rows(pami).Item(0) = mirow("clave") : mitabla.Rows(pami).Item(1) = mirow("creditos")
mitabla.Rows(pami).Item(2) = mirow("nombre") : materias.Items.Add(mitabla.Rows(pami). Item(0) & Chr(9) &
mitabla.Rows(pami).Item(1) & Chr(9) & mitabla.Rows(pami).Item(2))
pami = pami + 1 : ind = ind + 1 : End If : Else

Agregamos los nfasis.


iPos = listanfasis.FindString(oDt.Rows(pos).Item(7))
If oDt.Rows(pos).Item(7) = Label5.Text Then
If iPos = listanfasis.NoMatches Then : listanfasis.Items.Add(oDt.Rows(pos).Item(7))
mm = 1 : End If : Else
If Label5.Text = "" Then : If iPos = listanfasis.NoMatches Then
listanfasis.Items.Add(oDt.Rows(pos).Item(7)) : mm = 1
End If : End If : cont = 0 : btnVerMaterias.Enabled = True
End If : End If : End If : Next pos
btnBuscaMateria.Enabled = False : Especial()

93

SISTEMA DE CONTROL ESCOLAR UNITAM

Else : MessageBox.Show("NO SE ENCONTRARON MATERIAS DE ESTA CARRERA Y SEMESTRE",


"REINSCRIPCION")
btnAgregar.Enabled = False : btnVerMaterias.Enabled = False : ind = 0
End If : pami3 = pami : BtnCarga.Enabled = True : BtnModificar.Enabled = True
If mm = 1 Then : cont = 0 : Else : cont = 1 : End If : End Sub

Cdigo del Botn Agregar


El siguiente cdigo se utiliza materias de la lista optativas y de la lista no llevo.
Private Sub btnAgregar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnAgregar.Clic
Dim cadena As String : If variable2 = 1 Then : If cont = 1 Then
MessageBox.Show("SOLO ESTA PERMITIDO INGRESAR UNA MATERIA OPCIONAL",
"REINSCRIPCION") : Else
If listaOptativas.SelectedIndex >= 0 Then
cadena = listaOptativas.SelectedItem : p1 = InStr(cadena, Chr(9))
clave = vb.Left(cadena, p1 - 1)
For pos = 0 To oDt.Rows.Count 1 : mirow = oDt.Rows(pos) : If mirow("clave") = clave Then
mitabla.Rows().Add() : mitabla.Rows(pami3).Item(0) = mirow("clave")
mitabla.Rows(pami3).Item(1) = mirow("creditos")
mitabla.Rows(pami3).Item(2) = mirow("nombre")
listaMaterias.Items.Add(mitabla.Rows(pami3).Item(0) & Chr(9) &
mitabla.Rows(pami3).Item(1) & Chr(9) & mitabla.Rows(pami3).Item(2))
pami3 = pami3 + 1 : btnQuitar.Enabled = True : cont = cont + 1
variable = 1 : f += 1 : End If : Next
Else : MessageBox.Show("SELECCIONE LA MATERIA QUE DESEE AGREGAR",
"REINSCRIPCION") : End If : End If : Else : If cont = 1 Then
Dim rj1 As Integer = 0 : Dim cad22 As String : Dim r1 As Integer : cadena = ""
If Listanollevo.SelectedIndex >= 0 Then
cadena = Listanollevo.SelectedItem : p1 = InStr(cadena, Chr(9))
clave = vb.Left(cadena, p1 - 1)
For r1 = 0 To mitabla.Rows.Count - 1
cad22 = mitabla.Rows(r1).Item(0) : If cad22 = clave Then : rj1 = 1 : End If
Next r1
If rj1 = 0 Then : For i = 0 To oDataSet1.Tables("nombremat").Rows.Count - 1
oDataRow3 = oDataSet1.Tables("nombremat").Rows(i)
If clave = oDataRow3("clave") Then
mitabla.Rows().Add() : mitabla.Rows(pami3).Item(0) = oDataRow3("clave")
mitabla.Rows(pami3).Item(1) = oDataRow3("creditos")
mitabla.Rows(pami3).Item(2) = oDataRow3("nombre")
listaMaterias.Items.Add(mitabla.Rows(pami3).Item(0) & Chr(9) &
mitabla.Rows(pami3).Item(1) & Chr(9) & mitabla.Rows(pami3).Item(2))
pami3 = pami3 + 1 : btnQuitar.Enabled = True
pasaber1 += 1 : variable = 2 : End If :
Next
Else : MessageBox.Show("EL ELEMENTO YA FUE AGREGADO", "REINSCRIPCION",
MessageBoxButentonces.OK, MessageBoxIcon.Question) : End If : End If
numfil = mitabla.Rows.Count : listaOptativas.ClearSelected() : Listanollevo.ClearSelected()
End If : End If : End Sub

Cdigo del Botn Quitar


Quita materias de la lista materias.
Private Sub btnQuitar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnQuitar.Clic
Dim index, in2, in3, pp As Integer : If variable = 3 Then
If especialidad.Text = "LICENCIATURA EN SISTEMAS COMPUTACIONALES" Or especialidad.Text =
"LICENCIATURA EN DERECHO" Or especialidad.Text = "LICENCIATURA EN CIENCIAS DE LA
EDUCACION" Then
If listaMaterias.SelectedIndex >= 0 Then : index = listaMaterias.SelectedIndex
If index > ind - 1 Then : pp = pa pacontar : in2 = pp
For in3 = in2 To pa
Try : listaMaterias.SelectedIndex = in3
listaMaterias.Items.RemoveAt(listaMaterias.SelectedIndex)
mitabla.Rows(in3).Delete() : pami3 = pami3 - 1
cont = 0 : f -= 1 : cont = 0 : in3 -= 1
Catch : Exit For : End Try

94

SISTEMA DE CONTROL ESCOLAR UNITAM

Next : Else
MessageBox.Show("LA MATERIA ES OBLIGATORIA, NO SE PUEDE QUITAR",
"REINSCRIPCION") :
End If : Else
MessageBox.Show("SELECCIONE LA MATERIA QUE DESEE QUITAR DE LA LISTA",
"REINSCRIPCION") : End If : Else
For in3 = 0 To pacontar 1 : Try
listaMaterias.SelectedIndex = in3 : listaMaterias.Items.RemoveAt(listaMaterias.SelectedIndex)
mitabla.Rows(in3).Delete() : pami3 = pami3 1 : f -= 1 : in3 -= 1
btnQuitar.Enabled = False : btnAgregar.Enabled = False
Catch ex As Exception : Exit For : End Try :
Next
ind = 0 : pami3 = 0 : btnQuitar.Enabled = False : listaMaterias.Items.Clear() : cont = cont - 1
End If : Else : If variable = 1 Then
If listaMaterias.SelectedIndex > ind - 1 Then
index = listaMaterias.SelectedIndex : 'If index >= ind Then
listaMaterias.Items.RemoveAt(index) : mitabla.Rows(index).Delete()
cont = 0 : pami3 = pami3 - 1
f -= 1 : 'Else : 'End If
Else : MessageBox.Show("LA MATERIA ES OBLIGATORIA, NO SE PUEDE QUITAR",
"REINSCRIPCION") : End If : Else : gg = ind + f
If listaMaterias.SelectedIndex > gg - 1 And variable = 2 Then
index = listaMaterias.SelectedIndex : 'If index > gg Then
listaMaterias.Items.RemoveAt(index) : mitabla.Rows(index).Delete()
pami3 = pami3 1 : pasaber1 -= 1 : 'End If : End If : End If
End If : listaOptativas.ClearSelected() : Listanollevo.ClearSelected() : End Sub

Cdigo del Botn Ver Materias


Muestra las materias que pertenecen al enfasis seleccionado agregandolas a la
lista materias.
Private Sub btnVerMaterias_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnVerMaterias.Clic
pa = pami3 : Dim elem As String : If cont = 1 Then
MessageBox.Show("SOLO ESTA PERMITIDO INGRESAR UN NFASIS","REINSCRIPCION")
Else : pacontar = 0 : If listanfasis.SelectedIndex >= 0 Then
x = listanfasis.SelectedIndex : elem = listanfasis.Items(x)
ModConexion.oConexion.Open()
oDa2 = New OdbcDataAdapter("Select * From materias Where semestre='" + Cbsemestre.Text + "'
and carrera='" + especialidad.Text + "' and nfasis='" & elem & "'", ModConexion.oConexion)
oDt2 = New DataTable : oDa2.Fill(oDt2) : ModConexion.oConexion.Close() : Dim ie As Integer
For ie = 0 To oDt2.Rows.Count 1 : oDr = oDt2.Rows(ie) : If elem = oDr("nfasis") Then
mitabla.Rows().Add() : mitabla.Rows(pami3).Item(0) = oDr("clave")
mitabla.Rows(pami3).Item(1) = oDr("creditos")
mitabla.Rows(pami3).Item(2) = oDr("nombre")
listaMaterias.Items.Add(mitabla.Rows(pami3).Item(0) & Chr(9) & mitabla.Rows(pami3).Item(1)
& Chr(9) & mitabla.Rows(pami3).Item(2))
pa += 1 : pami3 = pami3 + 1 : pacontar += 1 : cont = 1 : cuant += 1 : f += 1
variable = 3 : End If : Next : btnQuitar.Enabled = True
Else : MessageBox.Show("SELECCIONE LA MATERIA QUE DESEE AGREGAR",
"REINSCRIPCION")
End If : End If : listanfasis.ClearSelected() : numfil = mitabla.Rows.Count
End Sub

Cdigo del Botn Quitar


Se habilita cuando el nmero de la lista materias es superior a 8 y se utiliza para
quitar materias basicas de la misma.
Private Sub Button3_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button3.Clic
numfil = mitabla.Rows.Count : If listaMaterias.SelectedIndex >= 0 Then
If numfil >= 9 Then : Dim index As Integer : index = listaMaterias.SelectedIndex
If index <= pami - 1 Then
listaMaterias.Items.RemoveAt(listaMaterias.SelectedIndex)
mitabla.Rows(index).Delete() : pami3 = pami3 - 1
ind = ind 1 : btnQuitar.Enabled = True : Button3.Enabled = False
Button3.Visible = False : Else
MessageBox.Show("NO SE PUEDE QUITAR", "REINSCRPCION")

95

SISTEMA DE CONTROL ESCOLAR UNITAM

End If : End If : Else


MessageBox.Show("SELECCIONE LA MATERIA QUE DESEE QUITAR DE LA LISTA",
"REINSCRPCION") : End If : End Sub

Limpia la seleccin en las siguientes listas.


Private Sub listaOptativas_clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
listaOptativas.Clic
Listanollevo.ClearSelected() : listanfasis.ClearSelected() : variable2 = 1 :End Sub
Private Sub Listanollevo_clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Listanollevo.Clic
listaOptativas.ClearSelected() : listanfasis.ClearSelected() : variable2 = 2 : End Sub
Private Sub Listanfasis_clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
listanfasis.Clic
listaOptativas.ClearSelected() : Listanollevo.ClearSelected() : End Sub

El siguiente cdigo se utiliza para que no se puedan insertar valores al combo ni


dar espacios.
Private Sub Cbsemestre_KeyPress(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles Cbsemestre.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If : End Sub

El siguiente cdigo se utiliza para que no se puedan insertar valores al combo ni


dar espacios.
Private Sub cbGrupo_KeyPress(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles cbGrupo.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If : End Sub

Se utiliza para regresar los valores a los elementos al estado inicial del formulario.
Sub limpia()
BtnCarga.Enabled = False : BtnGuardar.Enabled = False : cbGrupo.Enabled = False
cbGrupo.Text = "" : NoControl.Enabled = True : Cbsemestre.Enabled = True
Cbsemestre.SelectedIndex = 0 : BtnModificar.Enabled = False : BtnModificar.Text = "Modificar"
Label5.Text = "" : BtnBuscar.Text = "Buscar" : Label15.Text = "" : NoControl.Text = ""
nombre.Text = "" : especialidad.Text = "" : edad.Text = "" : CCiclo.Text = ""
listaReprobadas.Items.Clear() : dt.Rows.Clear() : listaMaterias.Items.Clear()
listaOptativas.Items.Clear() : listanfasis.Items.Clear() : CCiclo.Enabled = False
btnBuscaMateria.Enabled = False : dt.Rows.Clear() : nollevo.Rows.Clear()
Listanollevo.Items.Clear() : nollevo.Rows.Clear() : arreglo.Clear() : mitabla.Rows.Clear()
cbGrupo.Items.Clear() : btnAgregar.Enabled = False : btnQuitar.Enabled = False
btnVerMaterias.Enabled = False : NoControl.Focus() : Button3.Enabled = False
Button3.Visible = False : pasaber1 = 0 : pacontar = 0 : f = 0 : ind = 0
BtnAceptar.Enabled = False : End Sub

La siguiente funcin se utiliza para realizar una consulta al semestre anterior al


que va recursar.
Sub semestreatrasrecursa()
rec = rest 1 : tabla = com & rec : oDataAdapter1 = New OdbcDataAdapter("Select * From " & tabla & "
Where no_control='" + NoControl.Text + "'", ModConexion.oConexion)
Dim ocom2 As OdbcCommandBuilder = New OdbcCommandBuilder(oDataAdapter1)
oDataSet = New DataSet : Me.oDataAdapter1.Fill(oDataSet, "nose")
If oDataSet.Tables("nose").Rows.Count > 0 Then
row = oDataSet.Tables("nose").Rows(0) : End If : End Sub

La siguiente funcin se utiliza para realizar una consulta y verificar si el alumo ya


esta inscrito en el semestre seleccionado.
Sub repetidas() : Dim t As Integer = 0 : repetida = 0 : tabla2 = com & Cbsemestre.Text
claverep = New OdbcDataAdapter("Select * From " & tabla2 & "", ModConexion.oConexion)
Dim ocom2 As OdbcCommandBuilder = New OdbcCommandBuilder(claverep)
Orepetida = New DataSet : Me.claverep.Fill(Orepetida, "tabla")

96

SISTEMA DE CONTROL ESCOLAR UNITAM

If Orepetida.Tables("tabla").Rows.Count > 0 Then


For t = 0 To Orepetida.Tables("tabla").Rows.Count - 1
rowrep = Orepetida.Tables("tabla").Rows(t) : If NoControl.Text = rowrep("no_control") Then
repetida = 1 : End If : Next : End If : End Sub

La siguiente funcin se utiliza para obtener el ciclo escolar.


Sub Especial()
If Cbsemestre.Text = "2" Or Cbsemestre.Text = "4" Or Cbsemestre.Text = "6" Or Cbsemestre.Text = "8"
Then : ci = DateTime.Now : cic = ci.ToString("yyyy")
des = cic + 1 : ciclo = "02" & cic & "-" & "07" & des : CCiclo.Text = ciclo
ElseIf Cbsemestre.Text = "3" Or Cbsemestre.Text = "5" Or Cbsemestre.Text = "7" Or Cbsemestre.Text =
"9" Then : ci = DateTime.Now : cic = ci.ToString("yyyy")
des = cic + 1 : ciclo = "08" & cic & "-" & "01" & des : CCiclo.Text = ciclo
End If : End Sub

La siguiente funcin se utiliza para leer las claves y calificaciones de las materias
de un semestre anterior al seleccionado.
Sub leeclaves()
Dim letra1, nmero1 As String : Dim caracter1, num1, acumulador1 As Integer
con = 0 : dtc.Rows.Clear() : cm = 0 : dt.Rows.Clear() : For q = 1 To 14
Try : If Not IsDBNull(row("clave_m" & q)) And row("clave_m" & q) <> "" Then
cm += 1 : End If : Catch ex As Exception : Exit For : End Try
Next : k = 0 : r = 0 : j = 0 : h = 0 : nohay = 0
listaReprobadas.Items.Clear()
For b = 1 To cm
For i = 0 To oDataSet1.Tables("nombremat").Rows.Count - 1
oDataRow3 = oDataSet1.Tables("nombremat").Rows(i)
If Not IsDBNull(row("ext" & b)) Or IsDBNull(row("clave_m" & b)) Then
letra1 = "" : acumulador1 = 0 : caracter1 = 1 : letra1 = row("ext" & b)
caracter1 = Len(letra1) : For num1 = 1 To caracter1
nmero1 = Mid(letra1, num1, 1) : If Char.IsNumber(nmero1) Then
acumulador1 = acumulador1 & nmero1 : End If : Next
If oDataRow3("clave") = row("clave_m" & b) Then
dt.Rows.Add() : dt.Rows(k).Item(0) = row("clave_m" & b)
dt.Rows(k).Item(1) = oDataRow3("nombre")
dt.Rows(k).Item(2) = row("ext" & b) : h += 1
If Char.IsLetter(oDataRow3("nfasis")) Then
Label5.Text = oDataRow3("nfasis") : End If : k += 1
If especialidad.Text = "PREPARATORIA" Then
If acumulador1 < 6 Then : con = con + 1 : dtc.Rows.Add()
listaReprobadas.Items.Add(row("clave_m" & b) & Chr(9) & oDataRow3("nombre"))
dtc.Rows(r).Item(0) = row("clave_m" & b) : r += 1 : End If
Else : If acumulador1 < 7 Then 'Validar item del listbox
con = con + 1 : dtc.Rows.Add()
listaReprobadas.Items.Add(row("clave_m" & b) & Chr(9) & oDataRow3("nombre"))
dtc.Rows(r).Item(0) = row("clave_m" & b) : r += 1 : End If
End If : Else : nohay += 1 : End If : End If
Next : Next
If nohay = h Then : limpia() : MessageBox.Show("NO SE PUEDE INSCRIBIR,ESTA INSCRITO EN EL
SEMESTRE ANTERIOR PERO NO HAY PROMEDIOS", "Sistema de Control Escolar") : End If : End Sub

La siguiente funcin se utiliza para obtener el nombre de la tabla a partir de la


carrera.
Sub elijetabla() : If oDataRow("especialidad") = "LICENCIATURA EN ADMINISTRACION" Then : com =
"administracion" : ElseIf oDataRow("especialidad") = "PREPARATORIA" Then com = "preparatoria" : ElseIf
oDataRow("especialidad") = "LICENCIATURA EN DERECHO" Then : com = "derecho" : ElseIf
oDataRow("especialidad") = "LICENCIATURA EN SISTEMAS COMPUTACIONALES" Then : com =
"sistemas" : ElseIf oDataRow("especialidad") = "LICENCIATURA EN CIENCIAS DE LA EDUCACION" Then
com = "educacion" : ElseIf oDataRow("especialidad") = "LICENCIATURA EN COMUNICACION Y
PERIODISMO" Then : com = "comunicacion"
ElseIf oDataRow("especialidad") = "LICENCIATURA EN CONTADURA" Then
com = "Contadura" : End If : End Sub

La siguiente funcin se utiliza para obtener la fecha del sistema.


97

SISTEMA DE CONTROL ESCOLAR UNITAM

Sub fecha() : ci = DateTime.Now : cic = ci.ToString("yy") : MiFecha = Now()


mes = DatePart(DateInterval.Month, MiFecha)
If mes = 2 Or mes = 3 Or mes = 4 Or mes = 5 Or mes = 6 Or mes = 7 Then
mesr = "par" : Else : mesr = "impar" : End If : End Sub

La siguiente funcin se utiliza para saber con que valor se va inicializar un for.
Sub parimpar() : n1 = 0
If Val(Cbsemestre.Text) = 2 Or Val(Cbsemestre.Text) = 4 Or Val(Cbsemestre.Text) = 6 Or
Val(Cbsemestre.Text) = 8 Or Val(Cbsemestre.Text) = 10 Then : n1 = 2
Else : n1 = 1 : End If : End Sub

La siguiente funcin se utiliza para saber si la materia reprobada tiene seriacin.


Sub seriadas() : uu = 0 : If Char.IsLetter(cad1) Then : For ji = 0 To dt.Rows.Count - 1
If cad1 = dt.Rows(ji).Item(0) Then : uu = 1 : End If : Next : Else : uu = 1
End If : End Sub

La siguiente funcin busca materias anteriores que haya reprobado y tenga que
llevar en este semestre.
Sub pabuscarreprobadas() : If Val(Cbsemestre.Text) = 2 Then : Else : k = 0 : vr = 0
Dim l, mi1 As Integer : parimpar() : For l = n1 To Val(Cbsemestre.Text) - 1 Step 2
tabla1 = com & l : oDataAdapter1 = New OdbcDataAdapter("Select * From " & tabla1 & " Where
no_control='" + NoControl.Text + "'", ModConexion.oConexion)
Dim ocom1 As OdbcCommandBuilder = New OdbcCommandBuilder(oDataAdapter1)
oDataSet2 = New DataSet : ModConexion.oConexion.Open()
Me.oDataAdapter1.Fill(oDataSet2, "semsatras") : ModConexion.oConexion.Close()
row2 = oDataSet2.Tables("semsatras").Rows(0)

Verificamos cuantas claves hay.


Dim letra2, nmero2 As String : Dim acumulador2, caracter2, num2 As Integer
For d = 1 To 14 : Try
If Not IsDBNull(row2("clave_m" & d)) And row2("clave_m" & d) <> "" Then

Checa las materias reprobadas que agregara.


For u = 0 To oDataSet1.Tables("nombremat").Rows.Count - 1
oDataRow3 = oDataSet1.Tables("nombremat").Rows(u) : mi1 = 0
KK11 = 0 : If oDataRow3("clave") = row2("clave_m" & d) Then

Inserta todas las materias que llevo y checa si se repite.


If k = 0 Then : arreglo.Insert(k, oDataRow3("clave")) : k += 1
For vr = 0 To arreglo.Count 1 : If oDataRow3("clave") = arreglo(vr) Then
mi1 += 1 : End If :
Next
If mi1 = 0 Then : arreglo.Insert(k, oDataRow3("clave")) : k += 1
End If : End If
If Not IsDBNull(row2("ext" & d)) Then
letra2 = "" : acumulador2 = 0 : caracter2 = 1 : letra2 = row2("ext" & d)
caracter2 = Len(letra2) : For num2 = 1 To caracter2
nmero2 = Mid(letra2, num2, 1) : If Char.IsNumber(nmero2) Then
acumulador2 = acumulador2 & nmero2 : End If
Next
If especialidad.Text = "PREPARATORIA" Then :If acumulador2 < 6 Then
For KK2 = 1 To mitabla.Rows.Count - 1
If mitabla.Rows(KK2).Item(0) = row2("clave_m" & d) Then : KK11 += 1
End If : Next : If KK11 = 0 Then : mitabla.Rows.Add()
mitabla.Rows(pami3).Item(0) = row2("clave_m" & d)
mitabla.Rows(pami3).Item(1) = oDataRow3("creditos")
mitabla.Rows(pami3).Item(2) = oDataRow3("nombre")
listaMaterias.Items.Add(mitabla.Rows(pami3).Item(0) & Chr(9) &
mitabla.Rows(pami3).Item(1) & Chr(9) & mitabla.Rows(pami3).Item(2))
Else :

Utilizamos la variable pami2 que continuar con la secuencia.


pami3 += 1 : ind = ind + 1 : rep = "rpbds" : End If
End If : Else
If acumulador2 < 7 Then : For KK2 = 1 To mitabla.Rows.Count - 1

98

SISTEMA DE CONTROL ESCOLAR UNITAM

If mitabla.Rows(KK2).Item(0) = row2("clave_m" & d) Then


KK11 += 1 : End If : Next : If KK11 = 0 Then
mitabla.Rows().Add() : mitabla.Rows(pami3).Item(0) = row2("clave_m" & d)
mitabla.Rows(pami3).Item(1) = oDataRow3("creditos")
mitabla.Rows(pami3).Item(2) = oDataRow3("nombre")
listaMaterias.Items.Add(mitabla.Rows(pami3).Item(0) & Chr(9) &
mitabla.Rows(pami3).Item(1) & Chr(9) & mitabla.Rows(pami3).Item(2)) : pami3 += 1
ind = ind + 1 : rep = "rpbds" : End If : End If : End If
End If : End If : Next : End If : Catch ex As Exception : Exit For
End Try : Next : Next : numfil = mitabla.Rows.Count
If numfil >= 9 Then : Button3.Enabled = True : Button3.Visible = True : End If

Se verifican las materias que no llevo por motivo de seriacin o por que la
reprob.
For i = 0 To oDataSet1.Tables("nombremat").Rows.Count - 1
oDataRow3 = oDataSet1.Tables("nombremat").Rows(i)
prueba = 0 : kk1 = 0 : p = 0 : For p = 0 To (arreglo.Count - 1)
If oDataRow3("clave") = arreglo(p) Then : prueba += 1 : End If : Next
For k1 = n1 To Val(Cbsemestre.Text) - 1 Step 2 : Try
If prueba = 0 And oDataRow3("semestre") = k1 And Not Char.IsLetter(oDataRow3("nfasis"))
And oDataRow3("optativas") <> "optativa" Then

Se verifican si no han sido agregadas ya en las reprobadas.


For kk = 1 To mitabla.Rows.Count - 1
If mitabla.Rows(kk).Item(0) = oDataRow3("clave") Then : kk1 = 1
End If : Next : If kk1 = 0 Then : nollevo.Rows.Add()
nollevo.Rows(j).Item(0) = oDataRow3("clave")
nollevo.Rows(j).Item(1) = oDataRow3("nombre")
nollevo.Rows(j).Item(2) = oDataRow3("seriacin")
Listanollevo.Items.Add(oDataRow3("clave") & Chr(9) & oDataRow3("nombre") & Chr(9) &
oDataRow3("seriacin")) : btnAgregar.Enabled = True
btnQuitar.Enabled = True : j += 1 : End If : End If
Catch ex As Exception : Exit For : End Try : Next : Next : End If : End Sub

La siguiente funcin se utiliza para saber el nmero de extraordinarios que ha


presentado.
Sub extraordinarios() : Label15.Text = "" : n = 0 : Dim s As Integer = 0 : Dim num As Integer = 0
Dim caracter, acumulador As Integer : Dim letra, nmero As String
For z = 1 To Val(Cbsemestre.Text) 1 : tablas = com & z
oDataAdapter1 = New OdbcDataAdapter("Select * From " & tablas & " Where no_control='" +
NoControl.Text + "'", ModConexion.oConexion)
Dim ocom1 As OdbcCommandBuilder = New OdbcCommandBuilder(oDataAdapter1)
oDataSet = New DataSet : ModConexion.oConexion.Open()
Me.oDataAdapter1.Fill(oDataSet, "extra") : ModConexion.oConexion.Close()
rowextra = oDataSet.Tables("extra").Rows(0) : For s = 1 To 14 : Try
If Not IsDBNull(rowextra("ext" & s)) And rowextra("ext" & s) <> "" Then

Aqu se extrae la cadena y se recorre verificando si es un nmero.


cm += 1 : letra = rowextra("ext" & s) : caracter = Len(letra) : For num = 1 To
nmero = Mid(letra, num, 1) : If Char.IsNumber(nmero) Then
acumulador = +1 : End If : Next num
If caracter <> acumulador Then : n += 1 : End If : End If
Catch ex As Exception : Exit For : End Try : Next : Next : Label15.Text = n
End Sub

La siguiente funcin se utiliza para guardar las claves de las materias.


Sub InsertaClaves()
Select Case numfil : Case 4 : c1 = mitabla.Rows(0).Item(0)
c2 = mitabla.Rows(1).Item(0) : c3 = mitabla.Rows(2).Item(0)
c4 = mitabla.Rows(3).Item(0) : campos = ", clave_m1, clave_m2, clave_m3, clave_m4"
claves = ",'" & c1 & "','" & c2 & "','" & c3 & "','" & c4 & "'"
Case 5 : c1 = mitabla.Rows(0).Item(0) : c2 = mitabla.Rows(1).Item(0)
c3 = mitabla.Rows(2).Item(0) : c4 = mitabla.Rows(3).Item(0) : c5 = mitabla.Rows(4).Item(0)

99

SISTEMA DE CONTROL ESCOLAR UNITAM

campos = ", clave_m1, clave_m2, clave_m3, clave_m4, clave_m5"


claves = ",'" & c1 & "','" & c2 & "','" & c3 & "','" & c4 & "','" & c5 & "'"
Case 6 : c1 = mitabla.Rows(0).Item(0) : c2 = mitabla.Rows(1).Item(0)
c3 = mitabla.Rows(2).Item(0) : c4 = mitabla.Rows(3).Item(0)
c5 = mitabla.Rows(4).Item(0) : c6 = mitabla.Rows(5).Item(0)
campos = ", clave_m1, clave_m2, clave_m3, clave_m4, clave_m5, clave_m6"
claves = ",'" & c1 & "','" & c2 & "','" & c3 & "','" & c4 & "','" & c5 & "','" & c6 & "'"
Case 7 : c1 = mitabla.Rows(0).Item(0) : c2 = mitabla.Rows(1).Item(0)
c3 = mitabla.Rows(2).Item(0) : c4 = mitabla.Rows(3).Item(0)
c5 = mitabla.Rows(4).Item(0) : c6 = mitabla.Rows(5).Item(0)
c7 = mitabla.Rows(6).Item(0) : campos = ", clave_m1, clave_m2, clave_m3, clave_m4, clave_m5,
clave_m6, clave_m7" : claves = ",'" & c1 & "','" & c2 & "','" & c3 & "','" & c4 & "','" & c5 & "','" & c6 & "','" & c7 &
"'"
Case 8 : c1 = mitabla.Rows(0).Item(0) : c2 = mitabla.Rows(1).Item(0)
c3 = mitabla.Rows(2).Item(0) : c4 = mitabla.Rows(3).Item(0)
c5 = mitabla.Rows(4).Item(0) : c6 = mitabla.Rows(5).Item(0)
c7 = mitabla.Rows(6).Item(0) : c8 = mitabla.Rows(7).Item(0)
campos = ", clave_m1, clave_m2, clave_m3, clave_m4, clave_m5, clave_m6, clave_m7, clave_m8" : claves
= ",'" & c1 & "','" & c2 & "','" & c3 & "','" & c4 & "','" & c5 & "','" & c6 & "','" & c7 & "','" & c8 & "'" : End Select :
End Sub

La siguiente funcin se utiliza para actualizar los datos del alumno cuando este va
recursar el semestre.
Sub camposblancos()
Select Case cmm : Case 4 : c1 = oDt.Rows(0).Item(0) : c2 = oDt.Rows(1).Item(0)
c3 = oDt.Rows(2).Item(0) : c4 = oDt.Rows(3).Item(0) : campos =
"cal1p='',cal1p_1='',cal1p_2='',cal1p_3='',cal1p_4='',prom1p=0,cal2p_1='',cal2p_2='',cal2p_3='',cal2p_4='',pro
m2p=0" & _
",calor_1='',calor_2='',calor_3='',calor_4='',promor=0,promgral=0,prom1=0,prom2=0,prom3=0,prom4=0,prom
mat=0,ext1='',ext2='',ext3='',ext4='',clave_m1='" + c1 + "',clave_m2='" + c2 + "',clave_m3='" + c3 +
"',clave_m4='" + c4 + "'"
Case 5 : c1 = oDt.Rows(0).Item(0) : c2 = oDt.Rows(1).Item(0) : c3 = oDt.Rows(2).Item(0)
c4 = oDt.Rows(3).Item(0) : c5 = oDt.Rows(4).Item(0) : campos =
"cal1p_1='',cal1p_2='',cal1p_3='',cal1p_4='',cal1p_5='',prom1p=0,cal2p_1='',cal2p_2='',cal2p_3='',cal2p_4='',c
al2p_5='',prom2p=0,calor_1='',calor_2='',calor_3='',calor_4='',calor_5='',promor=0" & _
",promgral=0,prom1=0,prom2=0,prom3=0,prom4=0,prom5=0,prommat=0,ext1='',ext2='',ext3='',ext4='',ext5='',
clave_m1='" + c1 + "',clave_m2='" + c2 + "',clave_m3='" + c3 + "',clave_m4='" + c4 + "',clave_m5='" + c5 + "'"
Case 6 : c1 = oDt.Rows(0).Item(0) : c2 = oDt.Rows(1).Item(0)
c3 = oDt.Rows(2).Item(0) : c4 = oDt.Rows(3).Item(0) : c5 = oDt.Rows(4).Item(0)
c6 = oDt.Rows(5).Item(0) : campos = "cal1p_1='',cal1p_2='',cal1p_3='',cal1p_4
='',cal1p_5='',cal1p_6='',prom1p=0,cal2p_1='',cal2p_2='',cal2p_3='',cal2p_4='',cal2p_5='',cal2p_6='',prom2p=0
,calor_1='',calor_2='',calor_3=''" & _ : ",calor_3='',calor_4='',calor_5
='',calor_6='',promor=0,calor_4='',calor_5='',calor_6='',promor=0,promgral=0,prom1=0,prom2=0,prom3=0,pro
m4=0,prom5=0,prom6=0,prommat=0,ext1='',ext2='',ext3='',ext4='',ext5='',ext6='',clave_m1='" + c1 +
"',clave_m2='" + c2 + "',clave_m3='" + c3 + "',clave_m4='" + c4 + "',clave_m5='" + c5 + "',clave_m6='" + c6 +
"'"
Case 7 : c1 = oDt.Rows(0).Item(0) : c2 = oDt.Rows(1).Item(0) : c3 = oDt.Rows(2).Item(0)
c4 = oDt.Rows(3).Item(0) : c5 = oDt.Rows(4).Item(0) : c6 = oDt.Rows(5).Item(0)
c7 = oDt.Rows(6).Item(0) : campos = "cal1p_1='',cal1p_2='',cal1p_3='',cal1p_4
='',cal1p_5='',cal1p_6='',cal1p_7='',prom1p=0,cal2p_1='',cal2p_2='',cal2p_3='',cal2p_4='',cal2p_5='',cal2p_6=''
,cal2p_7='',prom2p=0,calor_1='',calor_2=''" & _ : ",promgral=0,prom1=0,prom2=
0,prom3=0,prom4=0,prom5=0,prom6=0,prom7=0,prommat=0,ext1='',ext2='',ext3='',ext4='',ext5='',ext6='',ext7
='',clave_m1='" + c1 + "',clave_m2='" + c2 + "',clave_m3='" + c3 + "',clave_m4='" + c4 + "',clave_m5='" + c5 +
"',clave_m6='" + c6 + "',clave_m7='" + c7 + "'"
Case 8 : c1 = oDt.Rows(0).Item(0) : c2 = oDt.Rows(1).Item(0) : c3 = oDt.Rows(2).Item(0)
c4 = oDt.Rows(3).Item(0) : c5 = oDt.Rows(4).Item(0) : c6 = oDt.Rows(5).Item(0)
c7 = oDt.Rows(6).Item(0) : c8 = oDt.Rows(7).Item(0) : campos =
"cal1p_1='',cal1p_2='',cal1p_3='',cal1p_4='',cal1p_5='',cal1p_6='',cal1p_7='',cal1p_8='',prom1p=0,cal2p_1='',c
al2p_2='',cal2p_3='',cal2p_4='',cal2p_5='',cal2p_6='',cal2p_7='',cal2p_8='',prom2p=0,calor_1='',calor_2='',calo
r_3='',calor_4=''" & _
",calor_5='',calor_6='',calor_7='',calor_8='',promor=0,promgral=0,prom1=0,prom2=0,prom3=0,prom4=0,prom5
=0,prom6=0,prom7=0,prom8=0,prommat=0,ext1='',ext2='',ext3='',ext4='',ext5='',ext6='',ext7='',ext8='',clave_m
1='" + c1 + "',clave_m2='" + c2 + "',clave_m3='" + c3 + "',clave_m4='" + c4 + "',clave_m5='" + c5 +
"',clave_m6='" + c6 + "',clave_m7='" + c7 + "',clave_m8='" + c8 + "'"
End Select : End Sub

100

SISTEMA DE CONTROL ESCOLAR UNITAM

Cdigo del Botn Aceptar


El siguiente cdigo se utiliza cuando se hace alguna modificacin sobre los
campos ciclo escolar y grupo.
Private Sub BtnAceptar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
BtnAceptar.Clic
Dim bandera1 As Integer = 0 : cantciclo = Len(CCiclo.Text)
If cantciclo < 13 Then : MessageBox.Show("LLENE EL CAMPO CICLO") : Else
If cbGrupo.Text <> vgrupo Then : cuantosg() : cangrupos()
If cantG >= rowCG("cant_grupo") Then
indiceg() : MessageBox.Show("NO SE PUEDE CAMBIAR DE GRUPO", "REINSCRIPCIONES")
: End If
Else : CCiclo.Enabled = False : cbGrupo.Enabled = False : BtnAceptar.Enabled = False
BtnModificar.Text = "Modificar" : End If : End If : End Sub

Cdigo del Botn Cargar Materias Reprobadas y No Cursadas


El siguiente cdigo se utiliza para cargar las materias Reprobada y No cursadas
por motivos de seriacin.
Private Sub BtnCarga_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
BtnCarga.Clic
If cont = 1 Then : If MessageBox.Show("REALMENTE DESEA CONTINUAR?YA NO PODRA
MODIFICAR OPTATIVAS O NFASIS,SOLO MATERIAS QUE NO LLEVO", "ATENCIN",
MessageBoxButentonces.YesNo, _ : MessageBoxIcon.Question) = DialogResult.Yes Then :
pabuscarreprobadas() : variable = 2
listaOptativas.Enabled = False : listanfasis.Enabled = False
BtnGuardar.Enabled = True : End If : Else
MessageBox.Show("AGREGE LAS MATERIAS PARA PODER CONTINUAR")
End If : End Sub

La siguiente funcin habilita el botn QUITAR si se han sobrepasado el lmite de


materias permitidas.
Sub masdenueve() : If numfil >= 9 Then : Button3.Enabled = True : Button3.Visible = True
MessageBox.Show("EL LMITE DE MATERIAS ES DE 8,QUITE MATERIAS BASICAS")
End If : End Sub

Cdigo del Botn Cerrar


Private Sub btnCerrar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnCerrar.Clic : Close() : End Sub : End Class

101

SISTEMA DE CONTROL ESCOLAR UNITAM

Formulario Lista de Asistencia


El siguiente formulario se utiliza para generar las listas de asistencia.
Est compuesto por:
Tipo
Form
GoupBox
Label
ComboBox
Label
ComboBox
Label
ComboBox
Label
ComboBox
DataGridView
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
Button
Button
Button
Button
Label
GroupBox
ComboBox
Label
TextBox
Label
GroupBox
ComboBox
Label
Label
ComboBox
Label
ComboBox

Nombre
FrmListasdeAsistencia
s
gboxDatosDoc
Label1

Descripcin
Muestra el Formulario de Listas de Asistencia

cbControlEscolar
Label8
cbTurno
Label9
cbGrupo
Label10
cbCatedrticos
dgvListaAsistencia
Nmero

Muestra el grupo datos del documento


Muestra en la etiqueta Encargado de Control
Escolar
Muestra la lista de Encargado de Control Escolar
Muestra en la etiqueta Turno
Muestra la lista de Turnos
Muestra en la etiqueta Grupo
Muestra la lista de Grupos
Muestra en la etiqueta Catedrtico
Muestra la lista de Catedrticos
Muestra la lista de asistencia
Muestra la columna nmero

Nocontrol

Muestra la columna no. control

Nombre

Muestra la columna nombre

btnCerrar
btnCancelar
btnVisorReporte
btnFiltro
Lbtitulo
gboxMateria
cbClavesMat
Label5
txtMateria
Label7
gboxCarrera
cbCarrera
Label2
Label4
cbSemestre
Label6
cbCicloEscolar

Muestra el botn Cerrar


Muestra el botn Cancelar
Muestra el botn Imprimir
Muestra el botn Filtrar
Muestra en la etiqueta el nombre de la institucin
Muestra el grupo datos de la materia
Muestra la lista de claves de las materias
Muestra en la etiqueta Clave:
Muestra la caja de texto materia
Muestra en la etiqueta Nombre:
Muestra el grupo Datos de la Carrera
Muestra el combo carrera
Muestra en la etiqueta nombre
Muestra en la etiqueta semestre
Muestra el combo semestre
Muestra en la etiqueta Ciclo Escolar
Muestra el combo ciclo escolar

102

SISTEMA DE CONTROL ESCOLAR UNITAM

Al inicio del formulario se muestra el siguiente cdigo


Se importan las libreras a utilizar
Imports System.Data.Odbc : Imports vb = Microsoft.VisualBasic
Imports CrystalDecisions.Shared : Imports CrystalDecisions.CrystalReports.Engine

Se inicia la clase FrmListasdeAsistencia y se declaran algunas variables


indicando su tipo.
Public Class FrmListasdeAsistencia
Dim oDaCiclos, oDaActas, oDaAlumno, oDaClaves, oDaMateria, oDaDocent As OdbcDataAdapter : Dim
oDsCiclos, oDsActas, oDsAlumno, oDsClaves, oDsMateria, oDsDocent As DataSet : Dim oDrCiclos,
oDrActas, oDrAlumno, oDrClaves, oDrMateria, oDrDoc As DataRow : Dim tabla, nletras, numVal, acredit,
tipocal, profesin As String
Dim filtro, iSQl, letrasCiclo As String : Dim i, c, x, ax, y, tc, k As Integer
Dim calf, c1p, c2p, co, semletras As String

Se manda llamar a la funcin CargaDocentes(), se inicializa el combo Carrera, se


valida la caja de texto txtMateria para que muestre valores solo en maysculas.
Private Sub FrmListasdeAsistencia_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load : cbCarrera.Focus() : txtMateria.CharacterCasing = CharacterCasing.Upper : ax =
0 : CargaDocentes()
End Sub

Se declara un procedimiento que realiza una consulta sobre la tabla docentes e


iguala su profesin a caracteres abreviados.
Sub CargaDocentes()
oDaDocent = New OdbcDataAdapter("Select * from docentes", ModConexion.oConexion)
oDsDocent = New DataSet : oDaDocent.Fill(oDsDocent, "docent") '<>
If oDsDocent.Tables("docent").Rows.Count > 0 Then
For k = 0 To oDsDocent.Tables("docent").Rows.Count - 1
oDrDoc = oDsDocent.Tables("docent").Rows(k)
If oDrDoc("profesin") = "LICENCIADO(A)" Then : profesin = "LIC."
ElseIf oDrDoc("profesin") = "PSICOLOGO(A)" Then : profesin = "PSI."
ElseIf oDrDoc("profesin") = "INGENIERO" Then : profesin = "ING."
ElseIf oDrDoc("profesin") = "ARQUITECTO(A)" Then : profesin = "ARQ."
ElseIf oDrDoc("profesin") = "DOCTOR(A)" Then : profesin = "DR."
ElseIf oDrDoc("profesin") = "PROFESOR(A)" Then : profesin = "PROF(RA)."
End If
cbCatedrticos.Items.Add(profesin & " " & oDrDoc("nombre") & " " & oDrDoc("ape_p") & " " &
oDrDoc("ape_m")) : cbCatedrticos.Text = cbCatedrticos.Items(0)
cbControlEscolar.Items.Add(profesin & " " & oDrDoc("nombre") & " " & oDrDoc("ape_p") & " " &
oDrDoc("ape_m")) : cbControlEscolar.Text = cbCatedrticos.Items(0)
Next : End If : End Sub

Funcin que se utiliza para obtener los ciclos escolares para que nada mas
aparescan una vez los que esten repetidos.
Private Sub FiltraDatos() : cbCicloEscolar.Items.Clear() : Especialidad()
oDaCiclos = New OdbcDataAdapter("Select * from " & tabla & cbSemestre.Text & " ",
ModConexion.oConexion) : oDsCiclos = New DataSet : Try
oDaCiclos.Fill(oDsCiclos, "ciclos") : Catch ex As Exception :MessageBox.Show(ex.Message)
Exit Sub : End Try
If oDsCiclos.Tables("ciclos").Rows.Count > 0 Then
For i = 0 To oDsCiclos.Tables("ciclos").Rows.Count 1 : x = 0
oDrCiclos = oDsCiclos.Tables("ciclos").Rows(i) : If i = 0 Then
cbCicloEscolar.Items.Add(oDrCiclos("ciclo_escolar"))
cbCicloEscolar.Text = oDrCiclos("ciclo_escolar") : Else
For c = 0 To cbCicloEscolar.Items.Count - 1
If cbCicloEscolar.Items(c).ToString = oDrCiclos("ciclo_escolar") Then : x += 1
End If : Next : If x = 0 Then
cbCicloEscolar.Items.Add(oDrCiclos("ciclo_escolar")) : End If
End If : Next : End If : ax = 1 : End Sub

103

SISTEMA DE CONTROL ESCOLAR UNITAM

Se le dan valores a la variable tabla de acuerdo a la especialidad seleccionada en


el cbCarrera.
Sub Especialidad()
If cbCarrera.Text = "PREPARATORIA" Then : tabla = "preparatoria"
ElseIf cbCarrera.Text = "LICENCIATURA EN ADMINISTRACION" Then
tabla = "administracion" : ElseIf cbCarrera.Text = "LICENCIATURA EN DERECHO" Then : tabla =
"derecho" : ElseIf cbCarrera.Text = "LICENCIATURA EN SISTEMAS COMPUTACIONALES" Then : tabla =
"sistemas" : ElseIf cbCarrera.Text = "LICENCIATURA EN CONTADURA" Then : tabla = "Contadura" :
ElseIf cbCarrera.Text = "LICENCIATURA EN CIENCIAS DE LA EDUCACION SUPERIOR" Then : tabla =
"educacion"
ElseIf cbCarrera.Text = "LICENCIATURA EN COMUNICACION Y PERIODISMO" Then
tabla = "comunicacion" : End If : End Sub

La siguiente funcin carga las claves de las materias.


Private Sub CargaClaves() : cbClavesMat.Items.Clear() : cbClavesMat.Text = ""
txtMateria.Text = "" : oDaClaves = New OdbcDataAdapter("Select * from materias where carrera='" +
cbCarrera.Text + "' and semestre= '" + cbSemestre.Text + "'", ModConexion.oConexion) : oDsClaves = New
DataSet : oDaClaves.Fill(oDsClaves, "claves")
If oDsClaves.Tables("claves").Rows.Count > 0 Then
Dim q As Integer : For q = 0 To oDsClaves.Tables("claves").Rows.Count 1
oDrClaves = oDsClaves.Tables("claves").Rows(q)
cbClavesMat.Items.Add(oDrClaves("clave"))
cbClavesMat.Text = cbClavesMat.Items(0).ToString : Next : End If
If cbClavesMat.Text = "" Then : btnFiltro.Enabled = False : btnVisorReporte.Enabled = False
Else : btnFiltro.Enabled = True : End If : End Sub

Se hacen validaciones sobre los diferentes combos utilzados en el formulario


indicando que no deje meter espacios ni caracteres solo que permita seleccionar.
Private Sub cbCarrera_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles cbCarrera.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If : End Sub
Private Sub cbSemestre_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles cbSemestre.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If : End Sub
Private Sub cbCicloEscolar_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles cbCicloEscolar.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If : End Sub
Private Sub cbClavesMat_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles cbClavesMat.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If : End Sub

Se hacen validaciones sobre el combo indicado para que implemente las


funciones de FiltraDatos() y CargaClaves().
Private Sub cbCarrera_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cbCarrera.SelectedIndexChanged : FiltraDatos()
CargaClaves() : End Sub

Se hacen validaciones sobre el combo indicado para que implemente las


funciones de FiltraDatos() y CargaClaves().
Private Sub cbSemestre_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cbSemestre.SelectedIndexChanged
If ax = 1 Then : FiltraDatos() : CargaClaves() : End If
End Sub

104

SISTEMA DE CONTROL ESCOLAR UNITAM

El siguiente cdigo es para que se ontenga el nombre de las materias cuando se


selecciona la clave de la misma
Private Sub cbClavesMat_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cbClavesMat.SelectedIndexChanged
oDaMateria = New OdbcDataAdapter("Select nombre from materias where clave='" + cbClavesMat.Text
+ "'", ModConexion.oConexion)
oDsMateria = New DataSet : oDaMateria.Fill(oDsMateria, "materia")
If oDsMateria.Tables("materia").Rows.Count > 0 Then
oDrMateria = oDsMateria.Tables("materia").Rows(0)
txtMateria.Text = oDrMateria("nombre") : btnFiltro.Enabled = True
btnCancelar.Enabled = True : Else : MessageBox.Show("El nombre para esta clave no esta
disponible", "Sistema de Control Escolar") : End If : End Sub

Cdigo del Botn Cancelar


El siguiente cdigo regresa al formulario a su estado inicial.
Private Sub btnCancelar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnCancelar.Clic : cbCarrera.Text = "Elija una carrera"
cbCarrera.Focus() : cbSemestre.SelectedIndex = 0 : cbCicloEscolar.Text = ""
cbCicloEscolar.Items.Clear() : cbClavesMat.Text = "" : cbClavesMat.Items.Clear()
txtMateria.Text = "" : dgvListaAsistencia.Rows.Clear() : cbTurno.SelectedIndex = 0
cbGrupo.SelectedIndex = 0 : cbCatedrticos.SelectedIndex = 0
cbControlEscolar.SelectedIndex =
0 : btnCancelar.Enabled = False : btnFiltro.Enabled = False
btnCancelar.Enabled = False : btnVisorReporte.Enabled = False
btnCerrar.Enabled = True : End Sub

Se hacen validaciones sobre el combo indicado para que no deje meter espacios
ni caracteres solo que permita seleccionar.
Private Sub cbTurno_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles cbTurno.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If : End Sub

Cdigo del Botn Filtrar


El siguiente cdigo valida que se hayan seleccionado datos, luego se realiza una
consulta en la tabla de la carrera y semestre que seleccion donde ciclo escolar y
grupo sean iguales a los antes indicados.
Private Sub btnFiltro_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnFiltro.Clic : If cbCarrera.Text = "Elija una carrera" Then
MessageBox.Show("Elija una carrera para filtrar la informacin", "Sistema de Control Escolar") :
cbCarrera.Focus() : Else
oDaActas = New OdbcDataAdapter("Select * from " & tabla & cbSemestre.Text & " where
ciclo_escolar= '" + cbCicloEscolar.Text + "' and grupo='" & cbGrupo.Text & "'", ModConexion.oConexion) :
oDsActas = New DataSet : oDaActas.Fill(oDsActas, "actas")
Dim cont As Integer ': Dim no_c As String : cont = 0 If
oDsActas.Tables("actas").Rows.Count > 0 Then : dgvListaAsistencia.Rows.Clear()
btnVisorReporte.Enabled = True : 'dgvActas.DataSource = oDsActas.Tables("actas")
For y = 0 To oDsActas.Tables("actas").Rows.Count 1
oDrActas = oDsActas.Tables("actas").Rows(y)

Ahora se realiza una consulta para obtener el nombre del alumno de la tabla
alumnos.
oDaAlumno = New OdbcDataAdapter("Select nom_alumno from alumnos where no_control= '" +
oDrActas("no_control") + "'", ModConexion.oConexion)
oDsAlumno = New DataSet : oDaAlumno.Fill(oDsAlumno, "alumno")
If oDsAlumno.Tables("alumno").Rows.Count > 0 Then
dgvListaAsistencia.Rows.Add()
oDrAlumno = oDsAlumno.Tables("alumno").Rows(0)
dgvListaAsistencia.Item(0, cont).Value = y + 1
dgvListaAsistencia.Item(1, cont).Value = oDrActas("no_control")
dgvListaAsistencia.Item(2, cont).Value = oDrAlumno("nom_alumno")

105

SISTEMA DE CONTROL ESCOLAR UNITAM

cont += 1 : Else
MessageBox.Show("No se encontraron datos del No. de Control - " & oDrActas("no_control"),
"Sistema de Control Escolar") : btnVisorReporte.Enabled = False
End If : Next : oDsAlumno.Tables("alumno").Rows.Clear() : Else
dgvListaAsistencia.Rows.Clear() : End If : End If : End Sub

Cdigo del Botn Imprimir


Private Sub btnVisorReporte_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnVisorReporte.Clic

Se declaran las variables para realizar la consulta.


If dgvListaAsistencia.Rows.Count > 0 Then : Dim oDaActasBusca As OdbcDataAdapter
Dim oDsActasBusca As DataSet : Dim res As Integer
ModConexion.oConexion.Open()

Se realiza una consulta en la tabla listas para checar si contiene informacin.


oDaActasBusca = New OdbcDataAdapter("Select * From listas", ModConexion.oConexion) :
oDsActasBusca = New DataSet
oDaActasBusca.Fill(oDsActasBusca, "listas")

Si el resultado de la busqueda es que la tabla contiene datos se realiza una


instruccin para eliminar completamente los datos de esa tabla por que se van a
insertar nuevos datos.
If oDsActasBusca.Tables("listas").Rows.Count > 0 Then : iSQl = "Delete from listas"
Dim oComand As New OdbcCommand(iSQl, ModConexion.oConexion)
res = oComand.ExecuteNonQuery : End If
Dim As Integer : Dim no, ncontrol, nomalumno As String
For = 0 To 39 : If <= dgvListaAsistencia.Rows.Count - 1 Then
no = dgvListaAsistencia.Rows().Cells(0).Value()
ncontrol = dgvListaAsistencia.Rows().Cells(1).Value()
nomalumno = dgvListaAsistencia.Rows().Cells(2).Value()
Else : no = + 1 : ncontrol = " " : nomalumno = " " : End If

Instruccin para insertar los valores a la base de datos por alumno.


iSQl = "Insert Into listas(num, nocontrol, alumno) " & _
"values ('" & no & "','" & ncontrol & "','" & nomalumno & "')"
Dim oComand As New OdbcCommand(iSQl, ModConexion.oConexion)
res = oComand.ExecuteNonQuery : Next : ModConexion.oConexion.Close()

Se declaran algunas variables para que se realice el reporte.


Dim oRptPrueba As New rptListaAsistencia
Dim pvValoresParametros As New ParameterValues()
Dim parCar, parSem, parCiclo, parNomMat, parTurno, parGrupo, parCated, parConEs As New
ParameterDiscreteValue() : LetrasSemestre() : LetrasCicloEscolar()

Se pasan los valores a los parametros que se declararon anteriormente y que se


van a utilizar para mostrar la informacin en el reporte.
parCiclo.Value = letrasCiclo : parCar.Value = cbCarrera.Text
parNomMat.Value = txtMateria.Text : parTurno.Value = cbTurno.Text
parGrupo.Value = cbGrupo.Text : parSem.Value = semletras
parCated.Value = cbCatedrticos.Text : parConEs.Value = cbControlEscolar.Text

Los parametros se agregan y se relacionan con los parametros creados en el


reporte.
pvValoresParametros.Add(parCar)
oRptPrueba.DataDefinition.ParameterFields("carrera").ApplyCurrentValues(pvValoresParametros) :
pvValoresParametros.Add(parSem) : oRptPrueba.DataDefinition.ParameterFields
("semestre").ApplyCurrentValues(pvValoresParametros):pvValoresParametros.Add(parCiclo)
oRptPrueba.DataDefinition.ParameterFields("cicloescolar").ApplyCurrentValues(pvValoresParametro) :
oRptPrueba.DataDefinition.ParameterFields("clave").ApplyCurrentValues (pvValoresParametros) :

106

SISTEMA DE CONTROL ESCOLAR UNITAM

pvValoresParametros.Add(parNomMat)
oRptPrueba.DataDefinition.ParameterFields("asignatura").ApplyCurrentValues(pvValoresParametro) :
pvValoresParametros.Add(parTurno) : oRptPrueba.DataDefinition.ParameterFields ("turno")
.ApplyCurrentValues(pvValoresParametros) : pvValoresParametros.Add(parGrupo)
oRptPrueba.DataDefinition.ParameterFields("grupo").ApplyCurrentValues(pvValoresParametros) :
pvValoresParametros.Add(parCated) : oRptPrueba.DataDefinition.ParameterFields
("Catedrtico").ApplyCurrentValues(pvValoresParametros) : pvValoresParametros.Add( parConEs) :
oRptPrueba.DataDefinition.ParameterFields("controlescolar").ApplyCurrentValues (pvValoresParametros)

Se declara una variable para mostrar el visor de reportes.


Dim Formulario As New FrmVisorReportes
Formulario.crvReportesVisor.ReportSource = oRptPrueba : Formulario.Show()
Else : MessageBox.Show("No hay informacin que imprimir para este tipo de Acta", "Sistema de Contol
Escolar") : End If : End Sub

Funcin que se utiliza para igualar los nmeros del semestre seleccionado a
nmeros romanos.
Private Sub LetrasSemestre() : If cbSemestre.Text = "1" Then : semletras = "I"
ElseIf cbSemestre.Text = "2" Then : semletras = "II"
ElseIf cbSemestre.Text = "3" Then : semletras = "III"
ElseIf cbSemestre.Text = "4" Then : semletras = "IV"
ElseIf cbSemestre.Text = "5" Then : semletras = "V"
ElseIf cbSemestre.Text = "6" Then : semletras = "VI"
ElseIf cbSemestre.Text = "7" Then : semletras = "VII"
ElseIf cbSemestre.Text = "8" Then : semletras = "VIII"
ElseIf cbSemestre.Text = "9" Then : semletras = "IX"
ElseIf cbSemestre.Text = "10" Then : semletras = "X"
ElseIf cbSemestre.Text = "11" Then : semletras = "XI"
ElseIf cbSemestre.Text = "12" Then : semletras = "XII" : End If : End Sub

Funcin que se utiliza para igualar los nmeros insertados como mes a su
correspondiente mes pero mostrado en letras.
Sub LetrasCicloEscolar()
Dim mes1, mes2, ao1, ao2 As String : If vb.Left(cbCicloEscolar.Text, 2) = "07" Then
mes1 = "JULIO" : ElseIf vb.Left(cbCicloEscolar.Text, 2) = "08" Then
mes1 = "AGOSTO" : ElseIf vb.Left(cbCicloEscolar.Text, 2) = "09" Then
mes1 = "SEPTIEMBRE" : ElseIf vb.Left(cbCicloEscolar.Text, 2) = "01" Then
mes1 = "ENERO" : ElseIf vb.Left(cbCicloEscolar.Text, 2) = "02" Then
mes1 = "FEBRERO" : End If : If Mid(cbCicloEscolar.Text, 8, 2) = "01" Then
mes2 = "ENERO" : ElseIf Mid(cbCicloEscolar.Text, 8, 2) = "12" Then
mes2 = "DICIEMBRE" : ElseIf Mid(cbCicloEscolar.Text, 8, 2) = "06" Then
mes2 = "JUNIO" : ElseIf Mid(cbCicloEscolar.Text, 8, 2) = "07" Then
mes2 = "JULIO" : End If : ao1 = Mid(cbCicloEscolar.Text, 3, 4)
ao2 = vb.Right(cbCicloEscolar.Text, 4) : If ao1 = ao2 Then
letrasCiclo = mes1 & " - " & mes2 & " " & ao2 : Else
letrasCiclo = mes1 & " " & ao1 & " - " & mes2 & " " & ao2 : End If
End Sub : End Clas

107

SISTEMA DE CONTROL ESCOLAR UNITAM

Formulario Documentacin
Este es el formulario que se muestra para llevar el control de la documentacin
que entrega el alumno al inscribirse.
Esta compuesto por:
Tipo
Form
Button
GroupBox

Nombre
FrmDocumentacin
btnCancelar
GroupBox3

Label
Button
Button
Button
Button
Label
GroupBox

lbNumRegistro
btnAnterior
btnSiguiente
btnPrimero
btnUltimo
lbTitulo
GroupBox2

Label
Label
MaskedTextBo
x
Label
Label

Label2
Label3
mtxtNoControl

Label

lbEspecialidad

Label
Label

Label1
lbEdad

Button
Button
Button
Button
GroupBox

btnBuscar
btnModifcar
btnCerrar
btnGuardar
GroupBox1

CheckBox
CheckBox
CheckBox

chbComprobanteDo
m
chbCurp
chbConducta

CheckBox
CheckBox

chbFotos
chbConstancia

CheckBox

chbCertificadoBach

CheckBox

chbCertificadoSec

CheckBox

chbActa

Label5
lbNombre

Descripcin
Formulario de Documentacin
Muestra el botn Cancelar
Muestra en el grupo de objetos del apartado
Controles
Muestra la etiqueta numRegistro
Muestra el botn Anterior
Muestra el botn Siguiente
Muestra el botn Primero
Muestra el botn Ultimo
Muestra la etiqueta con el nombre de la institucin
Muestra el grupo de objetos del apartado Datos del
Alumno
Muestra la etiqueta Nombre(s)
Muestra la etiqueta Especialidad
Muestra el No. de Control
Muestra la etiqueta Edad
Muestra la etiqueta donde se va a mostrar el nombre
del alumno
Muestra la etiqueta donde se va a mostrar la
especilidad del alumno
Muestra la etiqueta No. de Control
Muestra la etiqueta donde se va a mostrar la edad del
alumno
Muestra el botn Buscar
Muestra el botn Modificar
Muestra el botn Cerrar
Muestra el botn Guardar
Muestra el grupo de objetos del apartado
Documentacin
Muestra la casilla de verificacin del Comprobante de
Domicilio
Muestra la casilla de verificacin de la Curp
Muestra la casilla de verificacin de la carta de buena
conducta
Muestra la casilla de verificacin de las fotos
Muestra la casilla de verificacin de la cosntancia de
estudios
Muestra la casilla de verificacin del certificado de
bachillerato
Muestra la casilla de verificacin del cetificado de
secundaria
Muestra la casilla de verificacin del acta de
nacimiento

108

SISTEMA DE CONTROL ESCOLAR UNITAM

Al inicio del formulario se muestra el siguiente cdigo


Se importan las librerias a utilizar
Imports System.Data.Odbc

Se inicializa la clase FrmDocumentacin, se declaran las variables y se define su


tipo.
Public Class FrmDocumentacin
Dim oDa, oDad, oDaB As OdbcDataAdapter : Dim oDs, oDsd, oDsB As New DataSet
Dim oDataRow, oDrow As DataRow : Dim a, b, c, d, j, f, g, h, ap, am, no_control As String
Dim pos, i As Integer

Cdigo del Botn Buscar (Consulta)


Private Sub btnBuscar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnBuscar.Clic : If btnBuscar.Text = "Buscar" Then

Mensaje a pantalla que se manda cuando no se ha insertado el nmero de


control.
If mtxtNocontrol.Text = "" Then : MessageBox.Show("Por favor, introduzca un No. de Control",
"Sistema de Control Escolar - Unitam") : mtxtNocontrol.Focus() : Else

El siguiente cdigo se utiliza para realizar una consulta mediante el nmero de


control sobre la tabla alumnos.
btnBuscar.Text = "Consulta" : oDaB = New OdbcDataAdapter("Select * From alumnos Where
no_control='" + mtxtNocontrol.Text + "'", ModConexion.oConexion)
oDsB = New DataSet : ModConexion.oConexion.Open()
oDaB.Fill(oDsB, "alumnobusca") : ModConexion.oConexion.Close()
If oDsB.Tables("alumnobusca").Rows.Count > 0 Then
For i = 0 To oDsd.Tables("documentacin").Rows.Count - 1
oDataRow = oDsd.Tables("documentacin").Rows(i)
If mtxtNocontrol.Text = oDataRow("no_control") Then
no_control = mtxtNocontrol.Text : pos = i
oDataRow = oDsd.Tables("documentacin").Rows(pos)
MessageBox.Show("No. de Control encontrado", "Sistema de Control Escolar")
CargarDatos() : mtxtNocontrol.Enabled = False
btnBuscar.Text = "Consulta" : btnCancelar.Enabled = False

109

SISTEMA DE CONTROL ESCOLAR UNITAM

btnCerrar.Enabled = True : btnModificar.Enabled = True


HabilitaControles() : Exit For : End If : Next : Else

Se manda un mensaje cuando el nmero de control a buscar no existe.


MessageBox.Show("Este nmero de Control no existe, intente con otro", "Sistema de Control
Escolar - Unitam", MessageBoxButentonces.OK, MessageBoxIcon.Information)
btnBuscar.Text = "Buscar" : mtxtNocontrol.Text = "" : lbNombre.Text = ""
lbEspecialidad.Text = "" : lbEdad.Text = "" : mtxtNocontrol.Focus()
End If : End If : Else
btnBuscar.Text = "Buscar" : btnCancelar.Enabled = True
btnCerrar.Enabled = False : mtxtNocontrol.Enabled = True
mtxtNocontrol.Text = "" : lbNombre.Text = "" : lbEspecialidad.Text = "" : lbEdad.Text = ""
btnGuardar.Enabled = False : btnModificar.Enabled = False : mtxtNocontrol.Focus()
DeshabilitaControles() : End If : End Sub

Cdigo del Botn Guardar


Se manda un mensaje de confirmacin al guardar y se guardan los datos en la
tabla documentacin.
Private Sub btnGuardar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnGuardar.Clic
If MessageBox.Show("Realmente desea Guardar los Datos?", "Sistema de Control Escolar - Unitam",
MessageBoxButentonces.YesNo, _
MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
Dim nc As String = mtxtNocontrol.Text : Dim iSql As String
iSql = "Update documentacin Set acta_nac='" + a + "',certificado_sec='" + b + "',certificado_bac='" + c
+ "',const_estudios='" + d + "',fotografias='" + j + "',carta_conducta='" + f + "',curp='" + g + "',comp_domicilio='"
+ h + "' where no_control ='" + nc + "'"
Dim oCmd As New OdbcCommand(iSql, ModConexion.oConexion)
Dim iRe As Integer : ModConexion.oConexion.Open() : iRe = oCmd.ExecuteNonQuery
ModConexion.oConexion.Close()

Se manda un mensaje cuando los datos han sido correctamente guardados.


MessageBox.Show("Los datos han sido guardados correctamente", "Sistema de Control Escolar Unitam") : btnGuardar.Enabled = False : btnBuscar.Enabled = True
btnModificar.Enabled = True : btnCancelar.Enabled = False : btnCerrar.Enabled = True
HabilitaControles() : Cargar() : Else
Cargar() : btnGuardar.Enabled = False : btnBuscar.Enabled = True
btnModificar.Enabled = True : btnCancelar.Enabled = False : btnCerrar.Enabled = True
HabilitaControles() : End If : End Sub

La siguiente funcin se encarga de regresar las propiedades de los elementos al


estado inicial del formulario.
Sub RestablecerObjetos() : chbActa.Checked = False : chbCertificadoSec.Checked = False
chbCertificadoBach.Checked = False : chbConstancia.Checked = False
chbFotos.Checked = False : chbConducta.Checked = False
chbCurp.Checked = False : chbComprobanteDom.Checked = False
chbActa.Enabled = False : chbCertificadoSec.Enabled = False
chbCertificadoBach.Enabled = False : chbConstancia.Enabled = False
chbFotos.Enabled = False : chbConducta.Enabled = False
chbCurp.Enabled = False : chbComprobanteDom.Enabled = False : End Sub

La siguiente funcin desahabilita las casillas de verificacin .


Sub DeshabilitaChekes() : chbActa.Enabled = False : chbCertificadoSec.Enabled = False
chbCertificadoBach.Enabled = False : chbConstancia.Enabled = False
chbFotos.Enabled = False : chbConducta.Enabled = False
chbCurp.Enabled = False : chbComprobanteDom.Enabled = False : End Sub

Se agregan propiedades a elementos al inicio del formulario y se implementa la


funcin cargar().
Private Sub FrmDocumentacin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load : mtxtNocontrol.Focus() : Cargar()

110

SISTEMA DE CONTROL ESCOLAR UNITAM

pos = 0 : btnGuardar.Enabled = False


End Sub

La siguiente funcin selecciona los campos de la tabla documentacin y los


muestra en el formulario.
Sub Cargar() : Try : DeshabilitaChekes()
oDad = New OdbcDataAdapter("Select * From documentacin", ModConexion.oConexion) : oDsd =
New DataSet : ModConexion.oConexion.Open()
oDad.Fill(oDsd, "documentacin") : ModConexion.oConexion.Close()
If oDsd.Tables("documentacin").Rows.Count > 0 Then
oDataRow = oDsd.Tables("documentacin").Rows(pos)
no_control = oDataRow("no_control") : CargarDatos()
End If : Catch exc As Exception : MessageBox.Show(exc.Message) : End Try
End Sub

Se cargan ciertos datos del alumno de la tabla alumnos.


Sub CargarDatos() : oDa = New OdbcDataAdapter("Select * From alumnos Where no_control='" &
no_control & "'", ModConexion.oConexion) : oDs = New DataSet
oDa.Fill(oDs, "alumno") : If oDs.Tables("alumno").Rows.Count > 0 Then
oDrow = oDs.Tables("alumno").Rows(0) : mtxtNocontrol.Text = no_control
lbNombre.Text = oDrow("nom_alumno") : lbEspecialidad.Text = oDrow("especialidad")
lbEdad.Text = oDrow("edad") : lbNumRegistro.Text = "Registro: " & pos + 1 & " de " &
oDsd.Tables("documentacin").Rows.Count

Se asignan valores al datarow.


a = oDataRow("acta_nac") : b = oDataRow("certificado_sec")
c = oDataRow("certificado_bac") : d = oDataRow("const_estudios")
j = oDataRow("fotografias") : f = oDataRow("carta_conducta")
g = oDataRow("curp") : h = oDataRow("comp_domicilio")

Se valida cuando se activan las casillas de verificacin.


If a = "1" Then : chbActa.Checked = True : ElseIf a = "0" Then
chbActa.Checked = False : End If : If b = "1" Then
chbCertificadoSec.Checked = True : ElseIf b = "0" Then
chbCertificadoSec.Checked = False : End If : If c = "1" Then
chbCertificadoBach.Checked = True : ElseIf c = "0" Then
chbCertificadoBach.Checked = False :
End If
If d = "1" Then : chbConstancia.Checked = True : ElseIf d = "0" Then
chbConstancia.Checked = False : End If : If j = "1" Then
chbFotos.Checked = True : ElseIf j = "0" Then : chbFotos.Checked = False
End If
If f = "1" Then : chbConducta.Checked = True : ElseIf f = "0" Then
chbConducta.Checked = False : End If : If g = "1" Then
chbCurp.Checked = True : ElseIf g = "0" Then : chbCurp.Checked = False
End If : If h = "1" Then : chbComprobanteDom.Checked = True
ElseIf h = "0" Then : chbComprobanteDom.Checked = False : End If : End If :

End Sub

Cdigo del Botn Primero


Se posiciona sobre la primera posicin en la tabla.
Private Sub btnPrimero_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnPrimero.Clic : pos = 0 : Cargar() : End Sub

Cdigo del Botn Anterior


Se manda un a un registro anterior en la tabla.
Private Sub btnAnterior_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnAnterior.Clic : If pos = 0 Then
MessageBox.Show("Este es el primer registro", "Sistema de Control Escolar - Unitam")
Else : pos -= 1 : Cargar() : End If : End Sub

Cdigo del Botn Siguiente


Se manda a un registro siguiente en la tabla.
111

SISTEMA DE CONTROL ESCOLAR UNITAM

Private Sub btnSiguiente_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


btnSiguiente.Clic
If pos = (oDsd.Tables("documentacin").Rows.Count - 1) Then
MessageBox.Show("Este es el ultimo registro", "Sistema de Control Escolar - Unitam")
Else : pos += 1 : Cargar() : End If : End Sub

Cdigo del Botn Ultimo


Nos posiciona en la ultima posicin en la tabla.
Private Sub btnUltimo_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnUltimo.Clic : pos = (oDsd.Tables("documentacin").Rows.Count - 1)
Cargar() : End Sub

Se validan los valores de las casillas de verificacin.


Private Sub chbActa_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles chbActa.CheckedChanged
If chbActa.Checked = True Then : a = 1 : Else : a = 0 : End If : End Sub
Private Sub chbCertificadoSec_CheckedChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles chbCertificadoSec.CheckedChanged
If chbCertificadoSec.Checked = True Then : b = 1 : Else : b = 0 : End If : End Sub
Private Sub chbCertificadoBach_CheckedChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles chbCertificadoBach.CheckedChanged
If chbCertificadoBach.Checked = True Then : c = 1 : Else : c = 0 : End If : End Sub
Private Sub chbConstancia_CheckedChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles chbConstancia.CheckedChanged
If chbConstancia.Checked = True Then : d = 1 : Else : d = 0 : End If : End Sub
Private Sub chbFotos_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles chbFotos.CheckedChanged
If chbFotos.Checked = True Then : j = 1 : Else : j = 0 : End If : End Sub
Private Sub chbConducta_CheckedChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles chbConducta.CheckedChanged
If chbConducta.Checked = True Then : f = 1 : Else : f = 0 : End If : End Sub
Private Sub chbCurp_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles chbCurp.CheckedChanged
If chbCurp.Checked = True Then : g = 1 : Else : g = 0 : End If : End Sub
Private Sub chbComprobanteDom_CheckedChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles chbComprobanteDom.CheckedChanged
If chbComprobanteDom.Checked = True Then : h = 1 : Else : h = 0 : End If : End Sub

Cdigo del Botn Modificar


Activa a algunos elementos y desactiva otros para comenzar modificar.
Private Sub btnModificar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnModificar.Clic : chbActa.Enabled = True chbCertificadoSec.Enabled = True : chbCertificadoBach.Enabled
= True chbConstancia.Enabled = True : chbFotos.Enabled = True : chbConducta.Enabled = True
chbCurp.Enabled = True : chbComprobanteDom.Enabled = True
btnModificar.Enabled = False : btnGuardar.Enabled = True
btnCancelar.Enabled = True : btnCerrar.Enabled = False
btnBuscar.Enabled = False : DeshabilitaControles() : End Sub

Cdigo del Botn Cerrar


Private Sub btnCerrar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnCerrar.Clic : Me.Close() : End Sub

Se hacen validaciones para no aceptar espacios.


Private Sub mtxtNocontrol_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles mtxtNocontrol.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")

112

SISTEMA DE CONTROL ESCOLAR UNITAM

End If : If e.KeyChar = ChrW(Keys.Space) Then : e.KeyChar = Chr(0) : End If


End Sub

Cdigo del Botn Cancelar


Regresa al estado inicial del formulario.
Private Sub btnCancelar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnCancelar.Clic
DeshabilitaChekes() : btnGuardar.Enabled = False : btnModificar.Enabled = True
btnCerrar.Enabled = True : btnCancelar.Enabled = False : btnBuscar.Enabled = True
btnBuscar.Text = "Consulta" : mtxtNocontrol.Enabled = False : HabilitaControles()
Cargar() : End Sub

Habilita los controles de desplazamiento.


Sub HabilitaControles() : btnPrimero.Enabled = True : btnAnterior.Enabled = True
btnSiguiente.Enabled = True : btnUltimo.Enabled = True : End Sub

Deshabilita los controles de desplazamiento.


Sub DeshabilitaControles() : btnPrimero.Enabled = False : btnAnterior.Enabled = False
btnSiguiente.Enabled = False : btnUltimo.Enabled = False : End Sub

Cdigo del Botn Reportes


El siguiente cdigo manda a llamar al formulario FrmFiltroDocs.
Private Sub btnReporte_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnReporte.Clic : Dim report As New FrmFiltroDocs : report.Show() : End Sub
End Class

113

SISTEMA DE CONTROL ESCOLAR UNITAM

Formulario Reporte de Entrega de Documentacin


El siguiente formulario entra en funcin desde el formulario Documentacin y se
utiliza para validar una consulta y generar un reporte de los alumnos que indiquen
que papeles se han entregado y cuales esta pendientes de entregarse.
Est compuesto por:
Form

Tipo

Nombre
FrmFiltroDocs

TextBox
CheckBox
Label1
Button
Button
GroupBox
ComboBox
Label
Label
ComboBox

txtObservacon
cbxObservacon
Label1
btnImprimir
btnSalir
GroupBox
cbCarrera
lbCarrera
lbTipoFiltro
cbFiltro

Descripcin
Muestra el Formulario de los Documentos
Entregados
Muestra el area de texto para observaciones
Muestra el cuadro de verificacin de observaciones
Muestra el nombre del formulario
Muestra el botn Imprimir
Muestra el botn Salir
Muestra el grupo Datos del Filtrado
Muestra el combo carrera
Muestra en la etiqueta Carrera
Muestra enla etiqueta Tipo de Busqueda
Muestra el combo del tipo de buqueda

Se importan las librerias a utilizar.


Imports CrystalDecisions.CrystalReports.Engine : Imports CrystalDecisions.Shared
Public Class FrmFiltroDocs
Private Sub FrmFiltroDocs_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load : cbFiltro.SelectedIndex = 0 : End Sub

Cdigo del botn Imprimir


Private Sub btnImprimir_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnImprimir.Clic

Se declaran las variables para realizar la consulta.


Dim oRptPrueba As New rptDocs : Dim forVisor As New FrmVisorReportes
Dim pvValoresParametros As New ParameterValues()
Dim parCarrera, parObser As New ParameterDiscreteValue()

Se realiza una consulta en la tabla Documentacin para checar si contiene


informacin.
If cbFiltro.SelectedIndex = 0 Then
oRptPrueba.RecordSelectionFormula = "{Documentacin.acta_nac} = '0' or
{Documentacin.certificado_sec} = '0' " & _

114

SISTEMA DE CONTROL ESCOLAR UNITAM

"or {Documentacin.certificado_bac} = '0' or {Documentacin.const_estudios} = '0' or


{Documentacin.fotografias} = '0'" & _
"or {Documentacin.carta_conducta} = '0' or {Documentacin.curp} = '0' or
{Documentacin.comp_domicilio} = '0'"

Se valida la seleccin TODAS LAS CARRERAS.


parCarrera.Value = "TODAS LAS CARRERAS" : parObser.Value = txtObservacon.Text
pvValoresParametros.Add(parCarrera) :
oRptPrueba.DataDefinition.ParameterFields( "carrera" ).ApplyCurrentValues(pvValoresParametros) :
pvValoresParametros.Add(parObser)
oRptPrueba.DataDefinition.ParameterFields("observacon").ApplyCurrentValues(pvValoresParametros)
forVisor.crvReportesVisor.ReportSource = oRptPrueba : forVisor.Show()
Else : If cbCarrera.Text = "Elija una carrera o especialidad" Then
MessageBox.Show("Por favor elija una carrera para continuar", "Sistema de Control Escolar",
MessageBoxButentonces.OK, MessageBoxIcon.Information) : cbCarrera.Focus() :
Else

Se realiza una consulta en la tabla Documentacin para checar si contiene


informacin.
oRptPrueba.RecordSelectionFormula = "{alumnos.especialidad} ='" & cbCarrera.Text & "' and
({Documentacin.acta_nac} = '0' or {Documentacin.certificado_sec} = '0'" & _
"or {Documentacin.certificado_bac} = '0' or {Documentacin.const_estudios} = '0' or
{Documentacin.fotografias} = '0'" & _
"or {Documentacin.carta_conducta} = '0' or {Documentacin.curp} = '0' or
{Documentacin.comp_domicilio} = '0')"
parCarrera.Value = "CARRERA: " & cbCarrera.Text : parObser.Value = txtObservacon.Text

Los parametros se agregan y se relacionan con los parametros creados en el


reporte.
pvValoresParametros.Add(parCarrera) : oRptPrueba.DataDefinition.ParameterFields( "carrera").
ApplyCurrentValues(pvValoresParametros) : pvValoresParametros.Add(parObser)
oRptPrueba.DataDefinition.ParameterFields("observacon").ApplyCurrentValues(pvValoresParametros) :
forVisor.crvReportesVisor.ReportSource = oRptPrueba : forVisor.Show()
End If : End If : End Sub

Realiza validaciones sobre el combo cbFiltro para indicar el valor del indice 0 y
modificar sus propiedades.
Private Sub cbFiltro_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cbFiltro.SelectedIndexChanged
If cbFiltro.SelectedIndex = 0 Then : cbCarrera.Enabled = False
cbCarrera.Text = "Elija una carrera o especialidad" : Else : cbCarrera.Enabled = True
End If : End Sub

Cdigo del botn Salir


Se utiliza para salir del formulario.
Private Sub btnSalir_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnSalir.Clic : Close() : End Sub

Se realizan validaciones sobre el combo cbxObservacon.


Private Sub cbxObservacon_CheckedChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cbxObservacon.CheckedChanged
If cbxObservacon.Checked = True Then : txtObservacon.Enabled = True
txtObservacon.Focus() : Else : txtObservacon.Enabled = False
txtObservacon.Text = "" : End If : End Sub : End Class

115

SISTEMA DE CONTROL ESCOLAR UNITAM

Formulario Calificaciones
(Preparatoria)
El siguiente formulario es el que se muestra para dar de alta las calificaciones en
el rea de Preparatoria.
Esta compuesto por:
Tipo
Form
Label
Label
Button
Button
Button
Button
Button
Button
Button
Button
Button
GroupBox
Label
Label
GroupBox
Label
Button
Button
Button
Button
DataGridView

Nombre
FrmCal_
Preparatoria
lbUnitam
lbTitulo
btnExportar
btnImprimir
btnEliminar
btnConsultas
btnCerrar
btnCancelar
btnModificar
btnGuardar
btnAgregar
gboxPromedio
lbPromedioGral
lbPromedio
gboxControles
lbReg
btnSiguiente
btnUltimo
btnPrimero
btnAnterior
dgvCalPrepa

Descripcin
Formulario para Calificaciones en Preparatoria

DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
GroupBox

Materia

Muestra en la etiqueta el nombre de la institucin.


Muestra en la etiqueta el nombre del mdulo
Muestra el botn Exportar
Muestra el botn Imprimir
Muestra el botn Eliminar
Muestra el botn Consultas
Muestra el botn Cerrar
Muestra el botn Cancelar
Muestra el botn Modificar
Muestra el botn Guardar
Muestra el botn Agregar
Muestra el grupo promedio
Muestra en la etiqueta Promedio General:
Muestra el promedio general obtenido
Muestra el grupo Controles
Muestra el registro en el que se esta posicionado
Muestra el botn Siguiente
Muestra el botn Ultimo
Muestra el botn Primero
Muestra el botn Anterior
Muestra las materias para el llenado de sus
calificaciones
Muestra la columna Materia

P1

Muestra la columna primer parcial

P2

Muestra la columna segundo parcial

Ordinario

Muestra la columna ordinario

Final

Muestra la columna final

Ext

Muestra la columna Ext

gboxControl

ComboBox
ComboBox
Label
Label
ComboBox
Label
Label
GroupBox

cbGrupo
cbSemestre
lbSem
Label12
cbCicloEscolar
lbCiclo
lbCarrera
gboxDaos

Muestra el grupo de elementos semestre, ciclo


escolar y grupo
Muestra el combo Grupo
Muestra el combo Semestre
Muestra en la etiqueta Semestre:
Muestra en la etiqueta Grupo:
Muestra el combo Ciclo Escolar
Muestra en la etiqueta Ciclo Escolar:
Muestra en la etiqueta Carrera
Muestra el grupo datos del alumno

116

SISTEMA DE CONTROL ESCOLAR UNITAM

GroupBox
Label
MaskedTextBox
Label
Label
Label
Label

GroupBox1
lbNControl
mNoControl
lbEdad
lbNombre
lbTEdad
lbNom

Muestra en recuadro el nmero de control


Muestra en la etiqueta No. Control
Muestra la caja de texto No. Control
Muestra la edad del alumno
Muestra el nombre del alumno
Muestra en la etiqueta Edad:
Muestra en la etiqueta Nombre:

NOTA: El cdigo que se mecionar a continuacin es el mismo al que se utiliza en


los formularios de calificaciones de las carreras de licenciatura por esta razon
solamente se explica el siguiente formulario en el presente manual.
Al inicio del formulario se muestra el siguiente cdigo
Se importan las librerias a utilizar
Imports System.Data.Odbc : Imports vb = Microsoft.VisualBasic
Imports CrystalDecisions.Shared :Imports CrystalDecisions.CrystalReports.Engine
Imports System.IO : Imports System.Text : Imports System.Math

Se declara la clase FrmCal_Preparatoria.


Public Class FrmCal_Preparatoria

Se declaran las variables que se van a utilizar.


Dim oDaCalifica, oDaAlumno, oDaMaterias, AdapterMa, oDaCon, oDaba, oDaBoleta, oDaCiclos As
OdbcDataAdapter
Dim oDrCalifica, oDrAlumno, oDrMat, rowMa, oDrCiclos, DrCarrera As DataRow
Dim oDsCalifica, oDsCalifica2, oDsAlumno, oDsMaterias, oDsMa, oDsba, oDsBoleta, oDsCiclos As
DataSet : Dim mDtMaterias As DataTable = New DataTable
Dim cClave As DataColumn = New DataColumn : Dim cNom As DataColumn = New DataColumn : Dim
oRptPrueba As New rptBoleta
Dim pvValoresParametros As New ParameterValues()
Dim parCarrera, parNoControl, parNombre, parCiclo, parP1, parP2, parOr, parGral, parSem As New
ParameterDiscreteValue()
Dim pos, noMat, posi, asp, i, c, wa, inBueno, numCor, v, b, cons As Integer
Dim noControl, pp, semestre, cadenaSql, proPar, cadPromExtras, instruccionSql, gSql, ObjSel As String
Dim iSkl, pSql, c1, c2, c3, c4, c5, c6, c7, c8, pr1, pr2, pr3, pr4, pr5, pr6, pr7, pr8 As String

117

SISTEMA DE CONTROL ESCOLAR UNITAM

Dim sumac, total, promg, sum1, sum2, pro1, pro2, promf As Double

Se indica las variables utilizados para el reporte.


Dim iSql As String : Dim res, h, m, cnull, x, s, q, posNum, posEx As Integer
Dim car, noc, nom, ciclos, semes, pp1, pp2, ppo, pg, colMo As String
Private Sub FrmCal_Preparatoria_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load

Se igualan las variables a cero para checar las selecciones de algunos combos.
wa = 0 : cons = 0

Se agregan dos columnas al datatable llamada mDtMaterias y se manda a llamar


la funcin FiltraCiclosEscolares().
mDtMaterias.Columns.Add(cClave) :
FiltraCiclosEscolares()
End Sub

mDtMaterias.Columns.Add(cNom)

Realiza una consulta sobre la tabla preparatoria.


Private Sub FiltraCiclosEscolares()
cbCicloEscolar.Items.Clear()
oDaCiclos = New OdbcDataAdapter("Select * from preparatoria" & cbSemestre.Text & " ",
ModConexion.oConexion)
oDsCiclos = New DataSet : Try : oDaCiclos.Fill(oDsCiclos, "ciclos")
Catch ex As Exception : MessageBox.Show(ex.Message) :
Exit Sub
End Try : If oDsCiclos.Tables("ciclos").Rows.Count > 0 Then
For i = 0 To oDsCiclos.Tables("ciclos").Rows.Count 1 : x = 0
oDrCiclos = oDsCiclos.Tables("ciclos").Rows(i) : If i = 0 Then
cbCicloEscolar.Items.Add(oDrCiclos("ciclo_escolar"))
cbCicloEscolar.Text = oDrCiclos("ciclo_escolar") : Else
For c = 0 To cbCicloEscolar.Items.Count 1 : If cbCicloEscolar.Items(c).ToString =
oDrCiclos("ciclo_escolar") Then
x += 1 : End If
Next
If x = 0 Then : cbCicloEscolar.Items.Add(oDrCiclos("ciclo_escolar")) : End If
End If :
Next : CargarGrupos() : End If
End Sub

Carga todo los grupos que se encuentren para mostrarlos en el combo.


Private Sub CargarGrupos() : cbGrupo.Items.Clear()
For i = 0 To oDsCiclos.Tables("ciclos").Rows.Count 1 : x = 0
oDrCiclos = oDsCiclos.Tables("ciclos").Rows(i) : If i = 0 Then
cbGrupo.Items.Add(oDrCiclos("grupo")) : cbGrupo.Text = oDrCiclos("grupo")
Else : For c = 0 To cbGrupo.Items.Count - 1
If cbGrupo.Items(c).ToString = oDrCiclos("grupo") Then : x += 1
End If : Next : If x = 0 Then : cbGrupo.Items.Add(oDrCiclos("grupo"))
End If : End If : Next : pos = 0 : FiltroCalificaciones() : wa = 1
End Sub

Consulta para sacar todos los alumnos en esa carrera, semestre, ciclo escolar y
en ese grupo y los carga a un dataset.
Sub FiltroCalificaciones()
oDaCalifica = New OdbcDataAdapter("Select * from preparatoria" & cbSemestre.Text & " where
ciclo_escolar='" & cbCicloEscolar.Text & "' and grupo='" & cbGrupo.Text & "'", ModConexion.oConexion) :
oDsCalifica = New DataSet
Try : oDaCalifica.Fill(oDsCalifica, "califica") :
Catch ex As Exception
MessageBox.Show(ex.Message) : Exit Sub : End Try

Si se arroja un resultado entra a la funcin carga datos alumno.


If oDsCalifica.Tables("califica").Rows.Count > 0 Then : CargarDatosAlumno() : Else

Se manda un mensaje a pantalla indicando que no se encontraron registros.


If ObjSel = "grupo" Then

118

SISTEMA DE CONTROL ESCOLAR UNITAM

MessageBox.Show("No se encontraron registros en este Ciclo escolar: " & cbCicloEscolar.Text,


"Sistema de Control Escolar")
cbCicloEscolar.Focus() : If cbGrupo.SelectedIndex > 0 Then
cbGrupo.SelectedIndex = cbGrupo.SelectedIndex 1 : End If
Else : MessageBox.Show("No se encontraron registros de este Ciclo escolar: " & cbCicloEscolar.Text
& " en el grupo: " & cbGrupo.Text, "Sistema de Control Escolar")
cbGrupo.Focus() : End If : End If
End Sub

Realiza una consulta para obtener informacin del alumno de la tabla alumnos .
Sub CargarDatosAlumno() : oDrCalifica = oDsCalifica.Tables("califica").Rows(pos)
noControl = oDrCalifica("no_control")
oDaAlumno = New OdbcDataAdapter("Select * from alumnos where no_control= '" + noControl + "'",
ModConexion.oConexion)
oDsAlumno = New DataSet : oDaAlumno.Fill(oDsAlumno, "alumno")
If oDsAlumno.Tables("alumno").Rows.Count > 0 Then
oDrAlumno = oDsAlumno.Tables("alumno").Rows(0) : mNoControl.Text = noControl
lbNombre.Text = oDrAlumno("nom_alumno") : lbEdad.Text = oDrAlumno("edad")
lbReg.Text = "Registro: " & pos + 1 & " de " & oDsCalifica.Tables("califica").Rows.Count
NmeroMaterias() : If dgvCalPreparatoria.Rows.Count > 0 Then
dgvCalPreparatoria.CurrentCell.Selected = False : End If :
Else MessageBox.Show("No se
encontraron datos de este nmero de control: " & noControl, "Sistema de Control Escolar") : End If
End Sub

Obtiene el nmero de de materias que lleva el alumno y sus claves para agregar
de acuerdo al nmero de materias que se llevan en ese semestre.
Sub NmeroMaterias() : Dim q As Integer : noMat = 0 : For q = 1 To 12
Try : If Not IsDBNull(oDrCalifica("clave_m" & q)) And oDrCalifica("clave_m" & q) <> "" Then

Variable que incrementa para saber el nmero de materias que cursa el alumno.
noMat += 1 :

End If :

Catch ex As Exception :

Exit For :

End Try : Next

Se realiza una consulta para obtener el nombre de la materia a la cual pertence la


claves de la materias.
oDaMaterias = New OdbcDataAdapter("Select clave, nombre from materias where
carrera='PREPARATORIA'", ModConexion.oConexion) : oDsMaterias = New DataSet
oDaMaterias.Fill(oDsMaterias, "materias")

Limpiamos el Datagridview y la tabla de materias.


dgvCalPreparatoria.Rows.Clear() : mDtMaterias.Rows.Clear() :
For b = 1 To noMat

s=0

Se recorre otro for desde cero hasta el la ultima fila del oDataset3 menos uno.
For q = 0 To oDsMaterias.Tables("materias").Rows.Count 1
oDrMat = oDsMaterias.Tables("materias").Rows(q)

Se compara que las claves sean igual al de las materias con el de las claves de
las calificaciones.
If oDrMat("clave") = oDrCalifica("clave_m" & b) Then

Si encuentra una igual entonces agrega el nombre de esa materia a un


dtMat(datatable).
dgvCalPreparatoria.Rows.Add()
dgvCalPreparatoria.Item(0, s).Value = UCase(oDrMat("nombre"))

Aqu guardamos las claves y los nombres de las materias que cursa el alumno en
este semestre.
mDtMaterias.Rows.Add() : mDtMaterias.Rows(s).Item(0) = UCase(oDrMat("nombre"))
mDtMaterias.Rows(s).Item(1) = oDrMat("clave") : s += 1 : End If : Next : Next
CargaCalificaciones() : End Sub : Sub CargaCalificaciones() : posi = 0

119

SISTEMA DE CONTROL ESCOLAR UNITAM

For i = 0 To noMat 1

Se pasa lo que tiene el DataSet al DataRow en la posicin que se encuentre e


incrementamos su posicin.
posi += 1

Agregamos una nueva fila y agregamos datos de los dataRows 3 y 2 dependiendo


de la posicin que se encuentre.
dgvCalPreparatoria.Item(1, i).Value = oDrCalifica("cal1p_" & posi)
dgvCalPreparatoria.Item(1, i).ReadOnly = True
dgvCalPreparatoria.Item(2, i).Value = oDrCalifica("cal2p_" & posi)
dgvCalPreparatoria.Item(2, i).ReadOnly = True
dgvCalPreparatoria.Item(3, i).Value = oDrCalifica("calor_" & posi)
dgvCalPreparatoria.Item(3, i).ReadOnly = True
If IsDBNull(oDrCalifica("prom" & posi)) Then
dgvCalPreparatoria.Item(4, i).Value = oDrCalifica("prom" & posi)
ElseIf oDrCalifica("prom" & posi) = 0.0 Then : dgvCalPreparatoria.Item(4, i).Value = ""
Else : dgvCalPreparatoria.Item(4, i).Value = oDrCalifica("prom" & posi)
End If : dgvCalPreparatoria.Item(5, i).Value = oDrCalifica("ext" & posi)
dgvCalPreparatoria.Item(5, i).ReadOnly = True : If i = noMat - 1 Then
dgvCalPreparatoria.Rows.Add()
dgvCalPreparatoria.Item(0, i + 1).Value = "Promedios X Parcial"
If IsDBNull(oDrCalifica("prom1p")) Then
dgvCalPreparatoria.Item(1, i + 1).Value = oDrCalifica("prom1p")
ElseIf oDrCalifica("prom1p") = 0.0 Then : dgvCalPreparatoria.Item(1, i + 1).Value = ""
Else : dgvCalPreparatoria.Item(1, i + 1).Value = oDrCalifica("prom1p")
End If : If IsDBNull(oDrCalifica("prom2p")) Then
dgvCalPreparatoria.Item(2, i + 1).Value = oDrCalifica("prom2p")
ElseIf oDrCalifica("prom2p") = 0.0 Then : dgvCalPreparatoria.Item(2, i + 1).Value = ""
Else : dgvCalPreparatoria.Item(2, i + 1).Value = oDrCalifica("prom2p")
End If : If IsDBNull(oDrCalifica("promor")) Then
dgvCalPreparatoria.Item(3, i + 1).Value = oDrCalifica("promor")
ElseIf oDrCalifica("promor") = 0.0 Then : dgvCalPreparatoria.Item(3, i + 1).Value = ""
Else : dgvCalPreparatoria.Item(3, i + 1).Value = oDrCalifica("promor")
End If : dgvCalPreparatoria.Item(1, i + 1).ReadOnly = True
dgvCalPreparatoria.Item(2, i + 1).ReadOnly = True
dgvCalPreparatoria.Item(3, i + 1).ReadOnly = True :
End If

Si el valor indicado es nulo es 0.0 entonces se ocultan los etiquetas que se


indican.
If IsDBNull(oDrCalifica("promgral")) Then : lbPromedio.Visible = False
lbPromedioGral.Visible = False : ElseIf oDrCalifica("promgral") = 0.0 Then
lbPromedio.Visible = False : lbPromedioGral.Visible = False :
Else

Sino entonces las hacemos visibles y mostramos el promedio gral del alumno.
lbPromedio.Visible = True : lbPromedioGral.Visible = True
lbPromedioGral.Text = oDrCalifica("promgral") : End If : Next
RecorreGridView() : If asp <> 0 Then
btnAgregar.Enabled = True : btnImprimir.Enabled = False : btnExportar.Enabled = False
Else
btnAgregar.Enabled = False : btnImprimir.Enabled = True : btnExportar.Enabled = True
End If : End Sub : Sub RecorreGridView() :
asp = 0

For para recorrer las 3 columnas de las calificaciones.


For c = 1 To 3 :

For i = 0 To dgvCalPreparatoria.Rows.Count - 3

Si el valor de la celda es nulo entonces igualamos asp al valor de la columna.


If IsDBNull(dgvCalPreparatoria.Item(c, i).Value) Then :
ElseIf dgvCalPreparatoria.Item(c, i).Value = "" Then

asp = c

Si el valor es igual a "" o vaco entonces se pasa el valor de la columna a la


variable asp.
120

SISTEMA DE CONTROL ESCOLAR UNITAM

asp = c :

End If :

Next i

Checamos si asp es diferente de 0 entonces salimos del For y nos quedamos con
el valor del la columna.
If asp <> 0 Then :

Exit For :

End If :

Next c : End Sub

Habilita los controles de desplazamiento.


Sub HabilitaControles() : btnPrimero.Enabled = True : btnAnterior.Enabled = True
btnSiguiente.Enabled = True : btnUltimo.Enabled = True : End Sub

Deshabilita los controles de desplazamiento.


Sub DeshabilitaControles() : btnPrimero.Enabled = False : btnAnterior.Enabled = False
btnSiguiente.Enabled = False : btnUltimo.Enabled = False : End Sub

Se realizan validaciones sobre el combo cbSemestre para que no deje escribir


sobre el combo.
Private Sub cbSemestre_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles cbSemestre.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If : End Sub

Se realizan validaciones sobre el combo cbSemestre, se implementa la funcin


FiltraCiclosEscolares.
Private Sub cbSemestre_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cbSemestre.SelectedIndexChanged : If wa = 1 Then
FiltraCiclosEscolares() : End If : End Sub

Se realizan validaciones sobre el combo cbGrupo para que no deje escribir sobre
el combo.
Private Sub cbGrupo_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles cbGrupo.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If : End Sub

Se realizan validaciones sobre el combo cbGrupo, se implementa la funcin


FiltraCiclosEscolares.
Private Sub cbGrupo_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cbGrupo.SelectedIndexChanged
pos = 0 : ObjSel = "grupo" : FiltroCalificaciones() : End Sub

Se realizan validaciones sobre el combo cbCicloEscolar para que no deje escribir


sobre el combo.
Private Sub cbCicloEscolar_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles cbCicloEscolar.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If
End Sub

Se realizan validaciones sobre el combo cbCicloEscolar, se implementa la funcin


FiltroCalificaciones.
Private Sub cbCicloEscolar_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cbCicloEscolar.SelectedIndexChanged
If wa = 1 Then : pos = 0 : ObjSel = "cicloescolar" : FiltroCalificaciones() : End If
End Sub

Cdigo del Botn Cerrar


El siguiente cdigo se utiliza para salir del formulario.
121

SISTEMA DE CONTROL ESCOLAR UNITAM

Private Sub btnCerrar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


btnCerrar.Clic : Close() : End Sub

Cdigo del Botn Agregar


Private Sub btnAgregar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnAgregar.Clic

Checamos mediante la funcin RecoreGridView cual columna se encuentra vacia


para insertar calificaciones.
RecorreGridView()

Si asp es diferente a cero que tenga un 1,2 o 3 entonces, hacemos que la


columna de otro color y quitamos solo lectura y podremos escribir sobre ellas.
If asp <> 0 Then : For i = 0 To dgvCalPreparatoria.Rows.Count - 2
dgvCalPreparatoria.Item(asp, i).ReadOnly = False
dgvCalPreparatoria.Item(asp, i).Style.BackColor = Color.LightGreen : Next i

Si asp= algun nmero entonces le damos un nombre de columna e indicamos el


tipo de calificacin.
If asp = 1 Then : colMo = "p1" : pp = "1p" : ElseIf asp = 2 Then : colMo = "p2" : pp = "2p"
ElseIf asp = 3 Then : colMo = "ordinario" : pp = "or" :
End If

Nos posicionamos en la 1ra celda de la columna coloreada.


dgvCalPreparatoria.CurrentCell = dgvCalPreparatoria.Rows(0).Cells(colMo)
btnAgregar.Enabled = False : btnGuardar.Enabled = True
btnModificar.Enabled = False : btnConsultas.Enabled = False
btnCerrar.Enabled = False : btnCancelar.Enabled = True
btnImprimir.Enabled = False : cbSemestre.Enabled = False
btnEliminar.Enabled = False : btnExportar.Enabled = False
cbCicloEscolar.Enabled = False : cbGrupo.Enabled = False : DeshabilitaControles()
Else : MessageBox.Show("Las calificaciones estan completas, puede modificarlos si asi lo desea",
"Sistema de Control Escolar") : btnGuardar.Enabled = False : End If
End Sub

Cdigo del Botn Cancelar


Regresa todo a su estado inicial.
Private Sub btnCancelar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnCancelar.Clic : RestauraFormulario()
mNoControl.Text = noControl : wa = 1 : RecorreGridView() : If asp <> 0 Then
btnAgregar.Enabled = True : btnImprimir.Enabled = False
btnExportar.Enabled = False : Dim ii, yy, dva As Integer : dva = 0
For ii = 0 To dgvCalPreparatoria.Rows.Count - 2
If Not IsDBNull(dgvCalPreparatoria.Item(asp, ii).Value) Then : dva += 1
End If : Next : If dva <> dgvCalPreparatoria.Rows.Count Then
For yy = 0 To dgvCalPreparatoria.Rows.Count - 1
dgvCalPreparatoria.Item(asp, yy).Value = "" : Next : End If : Else
btnAgregar.Enabled = False : btnImprimir.Enabled = True : btnExportar.Enabled = True
End If : End Sub
Private Sub RestauraFormulario() : btnGuardar.Enabled = False : btnModificar.Enabled = True
btnAgregar.Enabled = True : btnCancelar.Enabled = False
btnCerrar.Enabled = True : btnConsultas.Enabled = True
btnImprimir.Enabled = True : cbSemestre.Enabled = True
cbCicloEscolar.Enabled = True : cbGrupo.Enabled = True
btnConsultas.Text = "Consulta" : mNoControl.Enabled = False
HabilitaControles() : btnEliminar.Enabled = True : btnExportar.Enabled = True
If cons <> 1 Then : Dim xd As Integer
For xd = 0 To dgvCalPreparatoria.Rows.Count - 1
dgvCalPreparatoria.Item(1, xd).ReadOnly = True
dgvCalPreparatoria.Item(1, xd).Style.BackColor = Color.White

122

SISTEMA DE CONTROL ESCOLAR UNITAM

Next xd : For xd = 0 To dgvCalPreparatoria.Rows.Count - 1


dgvCalPreparatoria.Item(2, xd).ReadOnly = True
dgvCalPreparatoria.Item(2, xd).Style.BackColor = Color.White
Next xd :
For xd = 0 To dgvCalPreparatoria.Rows.Count - 1
dgvCalPreparatoria.Item(3, xd).ReadOnly = True
dgvCalPreparatoria.Item(3, xd).Style.BackColor = Color.White
Next xd : For xd = 0 To dgvCalPreparatoria.Rows.Count - 1
dgvCalPreparatoria.Item(5, xd).ReadOnly = True
dgvCalPreparatoria.Item(5, xd).Style.BackColor = Color.White
Next xd : dgvCalPreparatoria.CurrentCell.Selected = False
End If : cons = 0 : wa = 1
End Sub
Private Sub dgvCalAdmons_EditingControlShowing(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles
dgvCalPreparatoria.EditingControlShowing

Declaramos una variable que obtiene el valor o dato que actualmente se ingresa o
edita.
Dim validar As TextBox = CType(e.Control, TextBox)
AddHandler validar.KeyPress, AddressOf validar_Keypress
End Sub

En esta funcin validamos el keypress de textbox de la celda que se edita.


Private Sub validar_Keypress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs)
Dim columna As Integer = dgvCalPreparatoria.CurrentCell.ColumnIndex
If columna = 1 Or columna = 2 Or columna = 3 Then
Dim caracter As Char = e.KeyChar

Si el valor no es un nmero, ni un Retroceso, ni un punto, ni las letras N,P,A


entonces no dejara ingresar nada.
If Not Char.IsNumber(caracter) And (caracter = ChrW(Keys.Back)) = False And Not caracter = "." _
And Not caracter = "N" And Not caracter = "P" And Not caracter = "A" And Not caracter = "S" And Not
caracter = "D" Then : e.KeyChar = Chr(0) :
End If
ElseIf columna = 5 Then : Dim caracter As Char = e.KeyChar
If caracter <> "6" And caracter <> "7" And caracter <> "1" And caracter <> "0" And caracter <> "8" And
caracter <> "9" _
And (caracter = ChrW(Keys.Back)) = False And Not caracter = "E" And Not caracter = "S" Then :
e.KeyChar = Chr(0) : End If : End If
End Sub

Esta es una funcin para hacer la suma de las calificaciones de algun parcial y
obtener su promedio.
Private Function promParcial(ByVal nColumna As String, ByVal Dgv As DataGridView) As Double
Try :

sumac = 0 : total = 0

Se recorre todas las filas de la columna hasta menos 2.


For i As Integer = 0 To Dgv.RowCount 2

Si no es letra entonces se suma a la suma.


If Not Char.IsLetter(Dgv.Item(nColumna.ToLower, i).Value) Then
sumac = sumac + CDbl(Dgv.Item(nColumna.ToLower, i).Value) : End If : Next

Dividimos la suma entre el nmero de materias para sacar el promedio de parcial.


total = sumac / noMat : Catch ex As Exception :
End Try : Return total : End Function

MsgBox(ex.Message.ToString)

Funcin para calcular las promedios finales de cada materia.


Sub promMateriaFinal()
For b = 0 To dgvCalPreparatoria.Rows.Count 2

123

SISTEMA DE CONTROL ESCOLAR UNITAM

sum1 = 0 : pro1 = 0 : pro2 = 0 : promf = 0


For v = 1 To 2
If Not Char.IsLetter(dgvCalPreparatoria.Item(v, b).Value) Then
sum1 = sum1 + CDbl(dgvCalPreparatoria.Item(v, b).Value) : End If : Next

Dividimos entre 2(1ro y 2do parcial) y el resultado lo multiplicamos por 0.6.


pro1 = (sum1 / 2) * 0.6

Sino es letra entonces hacemos la siguiente operacin.


If Not Char.IsLetter(dgvCalPreparatoria.Item(3, b).Value) Then

Multiplicamos la calificacin ordinaria por 0.4.


pro2 = CDbl(dgvCalPreparatoria.Item(3, b).Value) * 0.4 :

End If

Finalmente se suma los 2 promedio y sacamos el promedio final de cada materia


y la mostramos en su celda respectiva.
promf = pro1 + pro2

Si la calificaciones es menor o igual a 6 entonces guardamos 6.0 porque lo indica


segun el reglamento.
If promf <= 5 Then : promf = 5.0 : End If
dgvCalPreparatoria.Rows(b).Cells(4).Value() = Format(promf, "f").ToString
Next : End Sub

Para obtener el promedio general y redondear los promedios finales de cada


materia y pasarlos a otra columna.
Private Sub promExtrasPromGral() : Dim v, red As Integer : promg = 0 : sum2 = 0
For v = 0 To dgvCalPreparatoria.Rows.Count - 2
red = Math.Round((CType(dgvCalPreparatoria.Rows(v).Cells(4).Value(), Double)),
MidpointRounding.AwayFromZero) : dgvCalPreparatoria.Rows(v).Cells(5).Value() = red
sum2 = sum2 + CDbl(dgvCalPreparatoria.Rows(v).Cells(5).Value())
Next : promg = sum2 / noMat : End Sub

Este es otra funcin que nos sirve para seleccionar de acuerdo al caso el nmero
de materias que se muestran para igualar sus calificaciones a unas variables y
crear una instruccion para guardarlos a la Bd's.
Sub instSQL() : Select Case noMat : Case 4
c1 = dgvCalPreparatoria.Rows(0).Cells(colMo).Value() : c2 =
dgvCalPreparatoria.Rows(1).Cells(colMo).Value()
c3 = dgvCalPreparatoria.Rows(2).Cells(colMo).Value() : c4 =
dgvCalPreparatoria.Rows(3).Cells(colMo).Value()
proPar = Format(promParcial(colMo, dgvCalPreparatoria), "f").ToString
cadenaSQl = "cal" & pp & "_1='" & c1 & "', cal" & pp & "_2='" & c2 & "', cal" & pp & "_3='" & c3 & "',
cal" & pp & "_4='" & c4 & "', prom" & pp & "='" & proPar & "'"
Case 5 : c1 = dgvCalPreparatoria.Rows(0).Cells(colMo).Value() : c2 =
dgvCalPreparatoria.Rows(1).Cells(colMo).Value()
c3 = dgvCalPreparatoria.Rows(2).Cells(colMo).Value() : c4 =
dgvCalPreparatoria.Rows(3).Cells(colMo).Value()
c5 = dgvCalPreparatoria.Rows(4).Cells(colMo).Value()
proPar = Format(promParcial(colMo, dgvCalPreparatoria), "f").ToString
cadenaSQl = "cal" & pp & "_1='" & c1 & "', cal" & pp & "_2='" & c2 & "', cal" & pp & "_3='" & c3 & "',
cal" & pp & "_4='" & c4 & "', cal" & pp & "_5='" & c5 & "', prom" & pp & "='" & proPar & "'"
Case 6 : c1 = dgvCalPreparatoria.Rows(0).Cells(colMo).Value() : c2 =
dgvCalPreparatoria.Rows(1).Cells(colMo).Value()
c3 = dgvCalPreparatoria.Rows(2).Cells(colMo).Value() : c4 =
dgvCalPreparatoria.Rows(3).Cells(colMo).Value()
c5 = dgvCalPreparatoria.Rows(4).Cells(colMo).Value() : c6 =
dgvCalPreparatoria.Rows(5).Cells(colMo).Value()
proPar = Format(promParcial(colMo, dgvCalPreparatoria), "f").ToString
cadenaSQl = "cal" & pp & "_1='" & c1 & "', cal" & pp & "_2='" & c2 & "', cal" & pp & "_3='" & c3 & "',
cal" & pp & "_4='" & c4 & "', cal" & pp & "_5='" & c5 & "', cal" & pp & "_6='" & c6 & "', prom" & pp & "='" &
proPar & "'"

124

SISTEMA DE CONTROL ESCOLAR UNITAM

Case 7 : c1 = dgvCalPreparatoria.Rows(0).Cells(colMo).Value() : c2 =
dgvCalPreparatoria.Rows(1).Cells(colMo).Value()
c3 = dgvCalPreparatoria.Rows(2).Cells(colMo).Value() : c4 =
dgvCalPreparatoria.Rows(3).Cells(colMo).Value()
c5 = dgvCalPreparatoria.Rows(4).Cells(colMo).Value() : c6 =
dgvCalPreparatoria.Rows(5).Cells(colMo).Value()
c7 = dgvCalPreparatoria.Rows(6).Cells(colMo).Value()
proPar = Format(promParcial(colMo, dgvCalPreparatoria), "f").ToString
cadenaSQl = "cal" & pp & "_1='" & c1 & "', cal" & pp & "_2='" & c2 & "', cal" & pp & "_3='" & c3 & "',
cal" & pp & "_4='" & c4 & "', cal" & pp & "_5='" & c5 & "', cal" & pp & "_6='" & c6 & "', cal" & pp & "_7='" & c7 &
"', prom" & pp & "='" & proPar & "'"
Case 8 :
c1 = dgvCalPreparatoria.Rows(0).Cells(colMo).Value() : c2 =
dgvCalPreparatoria.Rows(1).Cells(colMo).Value()
c3 = dgvCalPreparatoria.Rows(2).Cells(colMo).Value() : c4 =
dgvCalPreparatoria.Rows(3).Cells(colMo).Value()
c5 = dgvCalPreparatoria.Rows(4).Cells(colMo).Value() : c6 =
dgvCalPreparatoria.Rows(5).Cells(colMo).Value()
c7 = dgvCalPreparatoria.Rows(6).Cells(colMo).Value() : c8 =
dgvCalPreparatoria.Rows(7).Cells(colMo).Value()
proPar = Format(promParcial(colMo, dgvCalPreparatoria), "f").ToString
cadenaSQl = "cal" & pp & "_1='" & c1 & "', cal" & pp & "_2='" & c2 & "', cal" & pp & "_3='" & c3 & "',
cal" & pp & "_4='" & c4 & "', cal" & pp & "_5='" & c5 & "', cal" & pp & "_6='" & c6 & "', cal" & pp & "_7='" & c7 &
"', cal" & pp & "_8='" & c8 & "', prom" & pp & "='" & proPar & "'"
End Select : End Sub

Este es una funcin que nos sirve para seleccionar de acuerdo al caso el nmero
da materias que se muestran para igualar los promedios a unas variables y crear
una instruccion para guardarlos a la Bd's.
Sub cadSql() : Select Case noMat : Case 4
pr1 = dgvCalPreparatoria.Rows(0).Cells(5).Value() : pr2 = dgvCalPreparatoria.Rows(1).Cells(5).Value()
pr3 = dgvCalPreparatoria.Rows(2).Cells(5).Value() : pr4 = dgvCalPreparatoria.Rows(3).Cells(5).Value()
adPromExtras = "ext1='" & pr1 & "', ext2='" & pr2 & "', ext3='" & pr3 & "', ext4='" & pr4 & "'"
c1 = dgvCalPreparatoria.Rows(0).Cells(4).Value() : c2 = dgvCalPreparatoria.Rows(1).Cells(4).Value()
c3 = dgvCalPreparatoria.Rows(2).Cells(4).Value() : c4 = dgvCalPreparatoria.Rows(3).Cells(4).Value()
instruccionSql = "prom1=" & c1 & " ,prom2=" & c2 & " ,prom3=" & c3 & " ,prom4=" & c4
Case 5 : pr1 = dgvCalPreparatoria.Rows(0).Cells(5).Value() : pr2 =
dgvCalPreparatoria.Rows(1).Cells(5).Value()
pr3 = dgvCalPreparatoria.Rows(2).Cells(5).Value() : pr4 = dgvCalPreparatoria.Rows(3).Cells(5).Value()
pr5 = dgvCalPreparatoria.Rows(4).Cells(5).Value()
cadPromExtras = "ext1='" & pr1 & "', ext2='" & pr2 & "', ext3='" & pr3 & "', ext4='" & pr4 & "', ext5='" & pr5 & "'"

c1 = dgvCalPreparatoria.Rows(0).Cells(4).Value() : c2 = dgvCalPreparatoria.Rows(1).Cells(4).Value()
c3 = dgvCalPreparatoria.Rows(2).Cells(4).Value() : c4 = dgvCalPreparatoria.Rows(3).Cells(4).Value()
c5 = dgvCalPreparatoria.Rows(4).Cells(4).Value()
instruccionSql = "prom1=" & c1 & " ,prom2=" & c2 & " ,prom3=" & c3 & " ,prom4=" & c4 & " , prom5=" & c5
Case 6 : pr1 = dgvCalPreparatoria.Rows(0).Cells(5).Value() : pr2 =
dgvCalPreparatoria.Rows(1).Cells(5).Value()
pr3 = dgvCalPreparatoria.Rows(2).Cells(5).Value() : pr4 = dgvCalPreparatoria.Rows(3).Cells(5).Value()
pr5 = dgvCalPreparatoria.Rows(4).Cells(5).Value() : pr6 = dgvCalPreparatoria.Rows(5).Cells(5).Value()
cadPromExtras = "ext1='" & pr1 & "', ext2='" & pr2 & "', ext3='" & pr3 & "', ext4='" & pr4 & "', ext5='" & pr5 & "',
ext6='" & pr6 & "'"
c1 = dgvCalPreparatoria.Rows(0).Cells(4).Value() : c2 = dgvCalPreparatoria.Rows(1).Cells(4).Value()
c3 = dgvCalPreparatoria.Rows(2).Cells(4).Value() : c4 = dgvCalPreparatoria.Rows(3).Cells(4).Value()
c5 = dgvCalPreparatoria.Rows(4).Cells(4).Value() : c6 = dgvCalPreparatoria.Rows(5).Cells(4).Value()
instruccionSql = "prom1=" & c1 & " ,prom2=" & c2 & " ,prom3=" & c3 & " ,prom4=" & c4 & " , prom5=" & c5 &
", prom6=" & c6
Case 7 : pr1 = dgvCalPreparatoria.Rows(0).Cells(5).Value() : pr2 =
dgvCalPreparatoria.Rows(1).Cells(5).Value()
pr3 = dgvCalPreparatoria.Rows(2).Cells(5).Value() : pr4 = dgvCalPreparatoria.Rows(3).Cells(5).Value()
pr5 = dgvCalPreparatoria.Rows(4).Cells(5).Value() : pr6 = dgvCalPreparatoria.Rows(5).Cells(5).Value()
pr7 = dgvCalPreparatoria.Rows(6).Cells(5).Value()
cadPromExtras = "ext1='" & pr1 & "', ext2='" & pr2 & "', ext3='" & pr3 & "', ext4='" & pr4 & "', ext5='" & pr5 & "',
ext6='" & pr6 & "', ext7='" & pr7 & "'"
c1 = dgvCalPreparatoria.Rows(0).Cells(4).Value() : c2 = dgvCalPreparatoria.Rows(1).Cells(4).Value()
c3 = dgvCalPreparatoria.Rows(2).Cells(4).Value() : c4 = dgvCalPreparatoria.Rows(3).Cells(4).Value()
c5 = dgvCalPreparatoria.Rows(4).Cells(4).Value() : c6 = dgvCalPreparatoria.Rows(5).Cells(4).Value()
c7 = dgvCalPreparatoria.Rows(6).Cells(4).Value()

125

SISTEMA DE CONTROL ESCOLAR UNITAM

instruccionSql = "prom1=" & c1 & " ,prom2=" & c2 & " ,prom3=" & c3 & " ,prom4=" & c4 & " , prom5=" & c5 &
", prom6=" & c6 & ", prom7=" & c7
Case 8 : pr1 = dgvCalPreparatoria.Rows(0).Cells(5).Value() : pr2 =
dgvCalPreparatoria.Rows(1).Cells(5).Value()
pr3 = dgvCalPreparatoria.Rows(2).Cells(5).Value() : pr4 = dgvCalPreparatoria.Rows(3).Cells(5).Value()
pr5 = dgvCalPreparatoria.Rows(4).Cells(5).Value() : pr6 = dgvCalPreparatoria.Rows(5).Cells(5).Value()
pr7 = dgvCalPreparatoria.Rows(6).Cells(5).Value() : pr8 = dgvCalPreparatoria.Rows(7).Cells(5).Value()
cadPromExtras = "ext1='" & pr1 & "', ext2='" & pr2 & "', ext3='" & pr3 & "', ext4='" & pr4 & "', ext5='" & pr5 &
"', ext6='" & pr6 & "', ext7='" & pr7 & "', ext8='" & pr8 & "'"
c1 = dgvCalPreparatoria.Rows(0).Cells(4).Value() : c2 = dgvCalPreparatoria.Rows(1).Cells(4).Value()
c3 = dgvCalPreparatoria.Rows(2).Cells(4).Value() : c4 = dgvCalPreparatoria.Rows(3).Cells(4).Value()
c5 = dgvCalPreparatoria.Rows(4).Cells(4).Value() : c6 = dgvCalPreparatoria.Rows(5).Cells(4).Value()
c7 = dgvCalPreparatoria.Rows(6).Cells(4).Value() : c8 = dgvCalPreparatoria.Rows(7).Cells(4).Value()
instruccionSql = "prom1=" & c1 & " ,prom2=" & c2 & " ,prom3=" & c3 & " ,prom4=" & c4 & " , prom5=" & c5 &
", prom6=" & c6 & ", prom7=" & c7 & ", prom8=" & c8
End Select : End Sub

Funcin que sirve para obtener alguna materia que se esta recursando y
cambiarle sus calificaciones.
Sub bClavesAtras() : Dim rt, sa, pc As Integer
Dim cadClave, actCalif, c1p, c2p, cor, cpp, cxt As String
If cbSemestre.Text >= 3 Then : sa = cbSemestre.Text - 2

Hacemos una consulta y sacamos todos los datos algun semestre pasado para
checar sus materias.
ModConexion.oConexion.Open()
AdapterMa = New OdbcDataAdapter("Select * From preparatoria" & sa & " where no_control='" &
mNoControl.Text & "'", ModConexion.oConexion)
oDsMa = New DataSet : AdapterMa.Fill(oDsMa, "calificaciones")
ModConexion.oConexion.Close() : rowMa = oDsMa.Tables("calificaciones").Rows(rt) : pc = 0

Se recorre desde 1 hasta que se produzca algun error, aunke aqu indicamos
hasta 15.
For pc = 1 To 15

Aqu evaluamos si no se produce un error sino se produce detenemos el for y


termina el recorrido.
Try : cadClave = rowMa("clave_m" & pc) : Catch ex As Exception
Exit For : End Try

Se recorre desde 0 hasta el ultimo nmero de materias menos 1.


For rt = 0 To noMat 1

Checamos si son iguales las claves entonces entramos y tomamos las


calificaciones a las guardamos en unas variables.
If cadClave = mDtMaterias.Rows(rt).Item(1) Then
cxt = dgvCalPreparatoria.Rows(rt).Cells(5).Value

Creamos la instruccion para concatenarla al guardar las calificaciones.


actCalif = "ext" & pc & "='" & cxt & "R'"

Guardamos las calificaciones al semestre -2 encontrado.


gSql = "Update preparatoria" & sa & " Set " & actCalif & " Where no_control='" +
mNoControl.Text + "'"
Dim gCmd As New OdbcCommand(gSql, ModConexion.oConexion)
ModConexion.oConexion.Open() : gCmd.ExecuteNonQuery()
ModConexion.oConexion.Close() : End If : Next : Next : End If
End Sub

126

SISTEMA DE CONTROL ESCOLAR UNITAM

Cdigo del Botn Guardar


Private Sub btnGuardar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnGuardar.Clic : Dim cuenta As Integer

Se recorre las filas del datagridview hasta la ultima posicin 2.


For i = 0 To dgvCalPreparatoria.Rows.Count - 2

Si el valor no es nulo entonces incrementamos la variable cuenta.


If Not IsDBNull(dgvCalPreparatoria.Rows(i).Cells(colMo).Value()) Then
If Not dgvCalPreparatoria.Rows(i).Cells(colMo).Value() = "" Then
cuenta += 1 : End If : End If : Next i

Si cuenta es igual al nmero de filas del datagridview-2.


If cuenta = dgvCalPreparatoria.Rows.Count - 1 Then
If colMo <> "ext" Then : inBueno = 0 : numCor = 0
For i As Integer = 0 To dgvCalPreparatoria.RowCount - 2
Dim kk, bb, nn, ll As Integer : kk = 0 : bb = 0 : nn = 0 : ll = 0
kk = Len(dgvCalPreparatoria.Item(colMo, i).Value) : For bb = 1 To kk
Dim cad As String : cad = Mid(dgvCalPreparatoria.Item(colMo, i).Value, bb, bb)
If Not Char.IsLetter(cad) And Not cad = "." And Not cad = ".." And Not cad = "..." Then
nn += 1 : Else : ll += 1 : End If :
Next
If kk = nn Then : inBueno += 1

Si el nmero esta dentro del rango permito entonces incremente el contador


numCor.
If Not Char.IsLetter(dgvCalPreparatoria.Item(colMo, i).Value) Then
If dgvCalPreparatoria.Item(colMo, i).Value >= 0 And dgvCalPreparatoria.Item(colMo, i).Value
<= 10 Then : numCor += 1 : End If
End If : End If

Si el valor es igual al valor indicado entonces incrementemos el contador inBueno.


If dgvCalPreparatoria.Item(colMo, i).Value = "NP" Or dgvCalPreparatoria.Item(colMo, i).Value =
"NA" Or dgvCalPreparatoria.Item(colMo, i).Value = "SD" Then : inBueno += 1 :
numCor += 1
End If

Si el valor es igual a un punto o puntos entonces decrementamos el contador


inBueno.
If dgvCalPreparatoria.Item(colMo, i).Value = "." Or dgvCalPreparatoria.Item(colMo, i).Value = ".."
Or dgvCalPreparatoria.Item(colMo, i).Value = "..." Then
inBueno -= 1 :
End If :
Next

Si inBueno el igual al nmero de materias entonces procedemos a guardar las


calificaciones.
If inBueno = noMat And numCor = noMat Then

Mandamos llamar la funcin instSQL y actualizamos las calificaciones en el


semestre indicado de la tabla preparatoria.
instSQL() : iSkl = "Update preparatoria" & cbSemestre.Text & " Set " & cadenaSql & " Where
no_control='" + mNoControl.Text + "'"
Dim oComando As New OdbcCommand(iSkl, ModConexion.oConexion)
ModConexion.oConexion.Open() : Dim iRes As Integer = oComando.ExecuteNonQuery()
ModConexion.oConexion.Close()

Mostramos en la fila del los Promedios x parcial el promedio de esa columna,


desseleccionamos el grid.
dgvCalPreparatoria.Rows(dgvCalPreparatoria.Rows.Count - 1).Cells(colMo).Value() =
Format(promParcial(colMo, dgvCalPreparatoria), "f").ToString

127

SISTEMA DE CONTROL ESCOLAR UNITAM

dgvCalPreparatoria.CurrentCell.Selected = False

Se recorre el Datagridview para saber la columna que tenga celdas vacias.


RecorreGridView()

Si no se encontraron celdas vacias entonces entramos a calcular los promedios x


materias y guardarlos.
If asp = 0 Then
lbPromedio.Visible = True : lbPromedioGral.Visible = True : promMateriaFinal()
Dim z, checa As Integer : checa = 0
For z = 0 To dgvCalPreparatoria.Rows.Count 2

Si el valor no es nulo entonces incrementamos la variable cuenta.


If Not IsDBNull(dgvCalPreparatoria.Rows(z).Cells("ext").Value()) Then
If Not dgvCalPreparatoria.Rows(z).Cells("ext").Value() = "" Then
checa += 1 : End If : End If : Next z

Si la columna contiene calificaciones entonces hace una pregunta, sino contiene


calificaciones entonces los calcula y guarda.
If checa > 0 Then : If MessageBox.Show("Desea que las calificaciones de la columna Exts
tambien sean modificadas?", "Sistema de Control Escolar", MessageBoxButentonces.YesNo,
MessageBoxIcon.Warning) = Windows.Forms.DialogResult.Yes Then :
promExtrasPromGral()
End If : Else : promExtrasPromGral() : End If :
cadSql()
lbPromedioGral.Text = Format(promg, "f").ToString

Enseguida realizamos la instruccion para guardar los promedios de cada materia.


pSql = "Update preparatoria" & cbSemestre.Text & " Set " & instruccionSql & "," &
cadPromExtras & ", promgral=" + lbPromedioGral.Text + " Where no_control='" + mNoControl.Text + "'"
Dim pCmd As New OdbcCommand(pSql, ModConexion.oConexion)
ModConexion.oConexion.Open() : Dim p As Integer = pCmd.ExecuteNonQuery()
ModConexion.oConexion.Close() : bClavesAtras() :
Else

Sino entonces ocultamos las etiquetas que muestran el promedio general.


lbPromedio.Visible = False : lbPromedioGral.Visible = False : End If
MessageBox.Show("Las calificaciones se guardaron correctamente", "Sistema de Control
Escolar", MessageBoxButentonces.OK, MessageBoxIcon.Information)
RestauraFormulario() : FiltroCalificaciones() : Else
MessageBox.Show("Una de las calificaciones no es aceptable o esta fuera del rango pemitido, 0
a 10", "Sistema de Control Escolar - Unitam") : End If : Else

Aqu se validan los datos de la columna de los Extraordinarios.


inBueno = 0 : numCor = 0 : sum2 = 0 : Dim tk, bb, cnum, s, le, lr As Integer
For i As Integer = 0 To dgvCalPreparatoria.RowCount - 2

Aqu validamos que el nmero sea correcto.


tk = 0 : bb = 0 : cnum = 0 : s = 0 : le = 0 : lr = 0 : posNum = 0
tk = Len(dgvCalPreparatoria.Item(colMo, i).Value)
For bb = 1 To tk : Dim cad As String
cad = Mid(dgvCalPreparatoria.Item(colMo, i).Value, bb, 1)
If Not Char.IsLetter(cad) Then : cnum += 1
posNum = bb : End If
If cad = "S" Then : s += 1 : End If : If cad = "E" Then : le += 1
posEx = bb : End If : If cad = "R" Then : lr += 1 : End If : Next
If tk = cnum And cnum >= 1 Then :
inBueno += 1
sum2 = sum2 + CDbl(dgvCalPreparatoria.Rows(i).Cells(5).Value())
ElseIf cnum >= 1 And s = 0 And le = 1 And lr = 0 And posNum = 1 And posEx = 2 Then '8E
inBueno += 1 : sum2 = sum2 + CDbl(vb.Left(dgvCalPreparatoria.Rows(i).Cells(5).Value(), 1))
ElseIf cnum >= 1 And s = 1 And le = 1 And lr = 0 And posNum = 1 And posEx = 2 Then '7ES
inBueno += 1 : sum2 = sum2 + CDbl(vb.Left(dgvCalPreparatoria.Rows(i).Cells(5).Value(), 1))
ElseIf cnum >= 1 And s = 0 And le = 0 And lr = 1 And posNum = 1 Then '8R
inBueno += 1 : sum2 = sum2 + CDbl(vb.Left(dgvCalPreparatoria.Rows(i).Cells(5).Value(), 1))
End If : Next : If inBueno = noMat Then : cadSql()

128

SISTEMA DE CONTROL ESCOLAR UNITAM

Aqu se vuelve a calcular el promedio por si se hicieron modificaciones .


promg = 0 :

promg = sum2 / noMat

Esta parte es para guardar los promedios redondeados de cada materia en la


columna de los exts.
pSql = "Update preparatoria" & cbSemestre.Text & " Set " & cadPromExtras & ", promgral=" &
promg & " Where no_control='" + mNoControl.Text + "'"
Dim pCmd As New OdbcCommand(pSql, ModConexion.oConexion)
ModConexion.oConexion.Open() : Dim p As Integer = pCmd.ExecuteNonQuery()
ModConexion.oConexion.Close() : bClavesAtras()
MessageBox.Show("Las modificaciones se guardaron correctamente", "Sistema de Control
Escolar - Unitam") : RestauraFormulario() : FiltroCalificaciones()
Else : MessageBox.Show("El(Los) valor(es) introducido(s) no es(son) aceptable(s)", "Sistema de
Control Escolar - Unitam") : End If : End If : Else

Si cuenta no es igual al nmero de filas del datagridview-2 entonces mandamos


un msg para indicar que ingresen todas.
MessageBox.Show("Ingrese todas las calificaciones para poder guardarlos", "sistema de control
escolar - Unitam") : End If : End Sub

Cdigo del Botn Modificar


Private Sub btnModificar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnModificar.Clic

Si se ha seleccionado alguna celda en el GridView entonces entramos a:.


If dgvCalPreparatoria.Rows.Count > 0 Then
If dgvCalPreparatoria.CurrentCell.Selected = True Then
For i = 0 To dgvCalPreparatoria.Rows.Count 2 : For c = 1 To 3
dgvCalPreparatoria.Item(c, i).ReadOnly = True
dgvCalPreparatoria.Item(c, i).Style.BackColor = Color.White
Next : Next i

Declaramos e igualamos la variable al nmero de columna seleccionado.


Dim colum As Integer :

colum = dgvCalPreparatoria.CurrentCell.ColumnIndex

Si column= algun nmero entonces le damos un nombre de columna e indicamos


el tipo de calificacion.
If colum = 1 Then : colMo = "p1" : pp = "1p"
ElseIf colum = 2 Then : colMo = "p2" : pp = "2p"
ElseIf colum = 3 Then : colMo = "ordinario"
pp = "or" : ElseIf colum = 5 Then : colMo = "ext" : End If : Dim ch As Integer = 0

Si colum es igual algun nmero indicado entonces entramos.


If colum = 1 Or colum = 2 Or colum = 3 Or colum = 5 Then

Se recorre las filas de la columna para ver que no sea nulo y se colorean las
celdas.
For i = 0 To dgvCalPreparatoria.Rows.Count - 2
If Not IsDBNull(dgvCalPreparatoria.Item(colum, i).Value) Then : ch += 1
End If : Next i
For i = 0 To dgvCalPreparatoria.Rows.Count 2 : If ch > 0 Then
dgvCalPreparatoria.Item(colum, i).ReadOnly = False
dgvCalPreparatoria.Item(colum, i).Style.BackColor = Color.LightGreen
End If :
Next i

Si ch es mayor a cero quiere decir que se puede modificar las calificaciones y se


habilita el botn guardar.
If ch > 0 Then : btnGuardar.Enabled = True : btnModificar.Enabled = False

129

SISTEMA DE CONTROL ESCOLAR UNITAM

btnAgregar.Enabled = False : btnCancelar.Enabled = True


btnCerrar.Enabled = False : btnImprimir.Enabled = False
btnConsultas.Enabled = False : btnEliminar.Enabled = False
cbSemestre.Enabled = False : btnExportar.Enabled = False
cbCicloEscolar.Enabled = False : cbGrupo.Enabled = False
DeshabilitaControles() : Else

Sino entonces quiere decir que no hay calificaciones a modificar en esta columna.
MessageBox.Show("Esta columna no tiene calificaciones, por favor seleccione otra que si los
tenga", "Sistema de Control Escolar - Unitam") : End If : Else

Sino quiere decir que la celda seleccionada no pertenece alguna de las columnas
de calificaciones.
btnGuardar.Enabled = False : MessageBox.Show("Esta columna no puede ser modificada, por
favor seleccione otra", "Sistema de Control Escolar - Unitam") : End If :
Else

Sino indicamos que seleccione alguna celda de alguna columna para modificar
calificaciones.
btnGuardar.Enabled = False : MessageBox.Show("Seleccione una celda de la columna que desee
modificar", "Sistema de Control Escolar - Unitam") : End If
Else : MessageBox.Show("No hay datos para modificar", "Sistema de Control Escolar")
End If : End Sub

Cdigo del Botn Consultas


Private Sub btnConsultas_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnConsultas.Clic : If btnConsultas.Text = "Consulta" Then
cons = 1 : mNoControl.Enabled = True : mNoControl.Text = "" : mNoControl.Focus()
btnAgregar.Enabled = False : btnModificar.Enabled = False
btnCancelar.Enabled = True : btnCerrar.Enabled = False
btnConsultas.Text = "Buscar" : btnImprimir.Enabled = False
btnEliminar.Enabled = False : btnExportar.Enabled = False
cbCicloEscolar.Enabled = False : cbGrupo.Enabled = False
DeshabilitaControles() :
wa = 0 :
Else

Realizamos la bsqueda del valor introducido.


If mNoControl.Text = "" Then
MessageBox.Show("Introduzca un nmero de control", "Sistema de Control Escolar - Unitam") :
mNoControl.Focus() : Else

Se hace una consulta validando que elnmero de control exista .


oDaba = New OdbcDataAdapter("Select * from alumnos where no_control='" + mNoControl.Text +
"'", ModConexion.oConexion)
oDsba = New DataSet
oDaba.Fill(oDsba, "buscaalumno")
If oDsba.Tables("buscaalumno").Rows.Count > 0 Then
DrCarrera = oDsba.Tables("buscaalumno").Rows(0)

Se compara la especialidad o carrera de ese alumno si es diferente a la carrera


actual en la que se encuentra
If DrCarrera("especialidad") <> "PREPARATORIA" Then
MessageBox.Show("Este alumno no es de esta carrera, introduzca un No. de Control",
"Sistema de Control Escolar", MessageBoxButentonces.OK, MessageBoxIcon.Information) :
mNoControl.Text = "" :
mNoControl.Focus()
Exit Sub :
End If

Se realiza una consulta para checar que el alumno si este cursando ese semestre
y si no manda un mensaje.
oDaCon = New OdbcDataAdapter("Select * From preparatoria" & cbSemestre.Text & " where
no_control='" & mNoControl.Text & "'", ModConexion.oConexion)
oDsCalifica = New DataSet
Try : oDaCon.Fill(oDsCalifica, "califica") : Catch ex As Exception

130

SISTEMA DE CONTROL ESCOLAR UNITAM

MessageBox.Show(ex.Message) : mNoControl.Text = "" : mNoControl.Focus()


cbSemestre.SelectedIndex = 0 : Exit Sub :
End Try
If oDsCalifica.Tables("califica").Rows.Count > 0 Then
oDrCalifica = oDsCalifica.Tables("califica").Rows(0)

Se realiza una consulta para sacar todos los datos en ese ciclo escolar y grupo
que se esta indicando en el formulario.
oDaCon = New OdbcDataAdapter("Select * From preparatoria" & cbSemestre.Text & "
where ciclo_escolar='" & oDrCalifica("ciclo_escolar") & "' and grupo='" & oDrCalifica("grupo") & "'",
ModConexion.oConexion)
oDsCalifica = New DataSet : oDaCon.Fill(oDsCalifica, "califica")
Dim r2, para2 As Integer : para2 = 0
For r2 = 0 To oDsCalifica.Tables("califica").Rows.Count - 1
oDrCalifica = oDsCalifica.Tables("califica").Rows(r2)
If oDrCalifica("no_control") = mNoControl.Text Then : pos = r2
para2 = 1 : End If : Next

Entra a la funcin cargar datos alumno.


If para2 = 1 Then
CargarDatosAlumno() : cbCicloEscolar.Text = oDrCalifica("ciclo_escolar")
cbGrupo.Text = oDrCalifica("grupo")
MessageBox.Show("Alumno encontrado", "Sistema de Control Escolar",
MessageBoxButentonces.OK, MessageBoxIcon.Information)
btnConsultas.Text = "Consulta" : HabilitaControles()
btnCancelar.Enabled = False : btnImprimir.Enabled = True
mNoControl.Enabled = False : btnModificar.Enabled = True
btnEliminar.Enabled = True : btnCerrar.Enabled = True
cbCicloEscolar.Enabled = True : cbGrupo.Enabled = True
cons = 0 :
wa = 1 :
Else
MessageBox.Show("Este alumno aun no cursa este semestre", "Sistema de Control Escolar")
If cbSemestre.Text > 1 Then : cbSemestre.Text = cbSemestre.Text - 1
End If : End If
Else
MessageBox.Show("Este alumno aun no cursa este semestre", "Sistema de Control Escolar")
If cbSemestre.Text > 1 Then : cbSemestre.Text = cbSemestre.Text 1 : End If
End If
Else : MessageBox.Show("El No. de control no existe, intente con otro No. de Control", "Sistema
de Control Escolar - Unitam")
mNoControl.Text = "" : mNoControl.Focus()
End If : End If : End If
End Sub

Cdigo del Botn Eliminar


Primero se manda un mensaje de confirmacin si contesta si se ejecuta una
funcin para eliminar los datos de ese alumno en la carrera, semestre en el que
se encuentra ubicado.
Private Sub btnEliminar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnEliminar.Clic
If MessageBox.Show("Realmente desea eliminar los registros de este alumno?", "Sistema de Control
Escolar - Unitam", MessageBoxButentonces.YesNo, MessageBoxIcon.Warning) =
Windows.Forms.DialogResult.Yes Then
Dim Sql As String : Sql = "Delete from preparatoria" & cbSemestre.Text & " Where no_control='" +
mNoControl.Text + "'"
Dim oCmd As New OdbcCommand(Sql, ModConexion.oConexion)
ModConexion.oConexion.Open() : Dim iRe As Integer = oCmd.ExecuteNonQuery
ModConexion.oConexion.Close()
MessageBox.Show("Los registros de: " & mNoControl.Text & " han sido eliminados del semestre: " &
cbSemestre.Text, "Sistema de Control Escolar", MessageBoxButentonces.OK,
MessageBoxIcon.Information) : pos = 0 : FiltroCalificaciones() : End If
End Sub

131

SISTEMA DE CONTROL ESCOLAR UNITAM

Cdigo del Botn Imprimir


Private Sub btnImprimir_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnImprimir.Clic
If dgvCalPreparatoria.Rows.Count > 0 Then : cnull = 0
For m = 1 To 3 : For h = 0 To noMat - 1
If IsDBNull(dgvCalPreparatoria.Item(m, h).Value) Then : cnull += 1
End If : Next
Next : If cnull = 0 Then : CreaReporte()

Se declaran las variables para realizar la consulta.


Dim Formulario As New FrmVisorReportes
Formulario.crvReportesVisor.ReportSource = oRptPrueba : Formulario.Show()
Else : MessageBox.Show("Las calificaciones no estan completas para imprimir la Boleta", "Sistema
de Control Escolar") :
End If
Else : MessageBox.Show("No hay datos que mostrar en la Boleta", "Sistema de Control Escolar") :
End If
End Sub

Funcin para generar el reporte.


Private Sub CreaReporte()
car = "PREPARATORIA" : noc = mNoControl.Text : nom = lbNombre.Text
ciclos = cbCicloEscolar.Text : semes = cbSemestre.Text
pp1 = dgvCalPreparatoria.Rows(noMat).Cells(1).Value()
pp2 = dgvCalPreparatoria.Rows(noMat).Cells(2).Value()
ppo = dgvCalPreparatoria.Rows(noMat).Cells(3).Value() : pg = lbPromedioGral.Text

Se realiza una consulta en la tabla boleta para checar si contiene informacin.


oDaBoleta = New OdbcDataAdapter("Select * From boleta", ModConexion.oConexion)
oDsBoleta = New DataSet : oDaBoleta.Fill(oDsBoleta, "boleta")
ModConexion.oConexion.Open()

Si el resultado de la busqueda es que la tabla contiene datos se realiza una


instruccin para eliminar completamente los datos de esa tabla por que se van a
insertar nuevos datos.
If oDsBoleta.Tables("boleta").Rows.Count > 0 Then
iSql = "Delete from boleta"
Dim oComand As New OdbcCommand(iSql, ModConexion.oConexion)
res = oComand.ExecuteNonQuery
End If : Dim As Integer : Dim materia, parcial1, parcial2, ordinario, final As String
For = 0 To noMat 1 : materia = dgvCalPreparatoria.Rows().Cells(0).Value()
parcial1 = dgvCalPreparatoria.Rows().Cells(1).Value()
parcial2 = dgvCalPreparatoria.Rows().Cells(2).Value()
ordinario = dgvCalPreparatoria.Rows().Cells(3).Value()
final = dgvCalPreparatoria.Rows().Cells(5).Value()

Se insertan los valores a la base de datos por alumno.


iSql = "Insert Into boleta(nombre, cal1p, cal2p, calor, final) " & _
"values('" & materia & "','" & parcial1 & "','" & parcial2 & "','" & ordinario & "','" & final & "')"
Dim oComand As New OdbcCommand(iSql, ModConexion.oConexion)
res = oComand.ExecuteNonQuery : Next
ModConexion.oConexion.Close()

Se pasan los valores a los parametros que se declararon anteriormente y que se


van a utilizar para mostrar la informacin en el reporte.
parCarrera.Value = car : parNoControl.Value = noc : parNombre.Value = nom
parCiclo.Value = ciclos : parSem.Value = semes : parP1.Value = pp1
parP2.Value = pp2 : parOr.Value = ppo :
parGral.Value = pg

Los parametros se agregan y se relacionan con los parametros creados en el


reporte.
132

SISTEMA DE CONTROL ESCOLAR UNITAM

pvValoresParametros.Add(parCarrera)
oRptPrueba.DataDefinition.ParameterFields("carrera").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parNoControl)
oRptPrueba.DataDefinition.ParameterFields("nocontrol").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parNombre)
oRptPrueba.DataDefinition.ParameterFields("nombre").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parCiclo)
oRptPrueba.DataDefinition.ParameterFields("ciclo").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parSem)
oRptPrueba.DataDefinition.ParameterFields("semestre").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parP1)
oRptPrueba.DataDefinition.ParameterFields("promp1").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parP2)
oRptPrueba.DataDefinition.ParameterFields("promp2").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parOr)
oRptPrueba.DataDefinition.ParameterFields("promor").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parGral)
oRptPrueba.DataDefinition.ParameterFields("promgral").ApplyCurrentValues(pvValoresParametros)
End Sub

Cdigo del Botn Exportar


Private Sub btnExportar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnExportar.Clic

Primero se checa el datagrid si tenga informacin y se tengan todas las


calificaciones ya llenas.
If dgvCalPreparatoria.Rows.Count > 0 Then
cnull = 0 : For m = 1 To 3 : For h = 0 To noMat - 1
If IsDBNull(dgvCalPreparatoria.Item(m, h).Value) Then : cnull += 1 : End If
Next : Next
If cnull = 0 Then

Se manda a llamar la funcin CreaReporte().


CreaReporte() : Dim Formulario As New FrmVisorReportes
Formulario.crvReportesVisor.ReportSource = oRptPrueba
Se manda llamar la funcin exportar del reporte si ir al formulario visor
Formulario.crvReportesVisor.ExportReport()
Else : MessageBox.Show("Las calificaciones no estan completas para exportarlos", "Sistema de
Control Escolar") :
End If
Else
MessageBox.Show("No hay datos para realizar la exportacion", "Sistema de Control Escolar")
End If : End Sub : End Class

133

SISTEMA DE CONTROL ESCOLAR UNITAM

Formulario Actas de Evaluacin


El siguiente formulario se utiliza para generar las actas de evaluacin.
Est compuesto por:
Tipo
Form
Label
DataGridView
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
Button
Button
GroupBox
ComboBox
Label
Label
ComboBox
Label
ComboBox
Label
DataTimePicker
ComboBox
Label
Label
ComboBox
Label
ComboBox
GroupBox
ComboBox
Label
TextBox
Label
GroupBox
ComboBox
Label
Label
ComboBox
Label
ComboBox

Nombre
FrmActasEvalFi
_
Ex_es
lbTitulo
dgvActas
Num

Descripcin
Formulario para generar las Actas de Evaluacin

Nocontrol

Muestra la columna No. de control

Nombre

Muestra la columna Nombre

Cal_num

Muestra la columna Cal_Num

Cal_letra

Muestra la columna Cal_letra

Asistencia

Muestra la columna % Asistencia

Acred_si

Muestra la columna Si

Acred_no

Muestra la columna No

btnCerrar
btnCancelar
gboxDatosDoc
cbNoActa
lbNoActa
Label1
cbControlEscola
r
Label8
cbTurno
Label9
dtpFecha
cbTipoActa
Label3
Label11
cbGrupo
Label10
cbCatedrticos
gboxMateria
cbClavesMat
Label5
txtMateria
Label7
gboxCarrera
cbCarrera
Label2
Label4
cbSemestre
Label6
cbCicloEscolar

Muestra el botn Cerrar


Muestra el botn Cancelar
Muestra el grupo Datos del Documento
Muestra el combo No.Acta
Muestra en la etiqueta Acta No.
Muestra en la etiqueta Encargado de Control Escolar:
Muestra el combo Control Escolar

Muestra en la etiqueta el nombre del formulario


Muestra el resultado despues de filtrar los datos
Muestra la columna nmero

Muestra en la etiqueta Turno:


Muestra el combo Turno
Muestra en la etiqueta Grupo:
Muestra el calendario fecha
Muestra el combo Tipo de Acta
Muestra en la etiqueta Tipo de Acta:
Muestra en la etiqueta Fecha:
Muestra el combo Grupo
Muestra en la etiqueta Catedrtico:
Muestra el combo Catedrtico
Muestra el grupo Materias
Muestra el combo Clave de la Materia
Muestra en la etiqueta Clave:
Muestra la caja de texto Materia
Muestra en la etiqueta Nombre:
Muestra el grupo Datos de la Carrera
Muestra el combo Carrera
Muestra en la etiqueta Nombre:
Muestra en la etiqueta Semestre
Muestra el combo Semestre
Muestra en la etiqueta Ciclo Escolar:
Muestra el combo Ciclo Escolar

134

SISTEMA DE CONTROL ESCOLAR UNITAM

Button
Button

btnVisorReporte
btnFiltro

Muestra el botn Imprimir


Muestra el botn Filtrar

Al inicio del formulario se muestra el siguiente cdigo


Se importan las librerias a utilizar.
Imports System.Data.Odbc : Imports vb = Microsoft.VisualBasic
Imports CrystalDecisions.Shared : Imports CrystalDecisions.CrystalReports.Engine

Se inicializa la clase.
Public Class FrmActasEvalFi_Ex_es

Se declaran las variables que se van a utilizar.


Dim oDaCiclos, oDaActas, oDaAlumno, oDaClaves, oDaMateria, oDaDocent As OdbcDataAdapter
Dim oDsCiclos, oDsActas, oDsAlumno, oDsClaves, oDsMateria, oDsDocent As DataSet
Dim oDrCiclos, oDrActas, oDrAlumno, oDrClaves, oDrMateria, oDrDoc As DataRow
Dim tabla, nletras, numVal, acredSi, acredNo, tipocal As String
Dim calnew, filtro, iSQl, semletras, fechaLetras, profesin, selcar As String
Dim i, c, x, ax, y, tc, k, nacred, nregu As Integer

Se manda llamar a la funcin CargaDocentes(), se inicializa el combo Carrera, se


valida la caja de texto txtMateria para que muestre valores solo en maysculas.
Private Sub FrmActas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load : cbCarrera.Focus()
txtMateria.CharacterCasing = CharacterCasing.Upper : ax = 0 : CargaDocentes()
End Sub

Se declara una funcin que realiza una consulta sobre la tabla docentes e iguala
su profesin a caracteres abreviados.
Sub CargaDocentes()
oDaDocent = New OdbcDataAdapter("Select * from docentes", ModConexion.oConexion)
oDsDocent = New DataSet : oDaDocent.Fill(oDsDocent, "docent") '<>
If oDsDocent.Tables("docent").Rows.Count > 0 Then
For k = 0 To oDsDocent.Tables("docent").Rows.Count - 1
oDrDoc = oDsDocent.Tables("docent").Rows(k)
If oDrDoc("profesin") = "LICENCIADO(A)" Then : profesin = "LIC."
ElseIf oDrDoc("profesin") = "PSICOLOGO(A)" Then : profesin = "PSI."
ElseIf oDrDoc("profesin") = "INGENIERO" Then : profesin = "ING."
ElseIf oDrDoc("profesin") = "ARQUITECTO(A)" Then : profesin = "ARQ."
ElseIf oDrDoc("profesin") = "DOCTOR(A)" Then : profesin = "DR."

135

SISTEMA DE CONTROL ESCOLAR UNITAM

ElseIf oDrDoc("profesin") = "PROFESOR(A)" Then : profesin = "PROF(RA)."


End If
cbCatedrticos.Items.Add(profesin & " " & oDrDoc("nombre") & " " & oDrDoc("ape_p") & " " &
oDrDoc("ape_m"))
cbCatedrticos.Text = cbCatedrticos.Items(0)
cbControlEscolar.Items.Add(profesin & " " & oDrDoc("nombre") & " " & oDrDoc("ape_p") & " " &
oDrDoc("ape_m"))
cbControlEscolar.Text = cbCatedrticos.Items(0)
Next : End If
End Sub

Funcin que se utiliza para obtener los ciclos escolares para que nada mas
aparescaran una vez los que esten repetidos.
Private Sub FiltraDatos()
cbCicloEscolar.Items.Clear() : Especialidad()
oDaCiclos = New OdbcDataAdapter("Select * from " & tabla & cbSemestre.Text & " ",
ModConexion.oConexion) : oDsCiclos = New DataSet
Try : oDaCiclos.Fill(oDsCiclos, "ciclos") : Catch ex As Exception
MessageBox.Show(ex.Message) : Exit Sub
End Try
If oDsCiclos.Tables("ciclos").Rows.Count > 0 Then
For i = 0 To oDsCiclos.Tables("ciclos").Rows.Count 1 : x = 0
oDrCiclos = oDsCiclos.Tables("ciclos").Rows(i)
If i = 0 Then : cbCicloEscolar.Items.Add(oDrCiclos("ciclo_escolar"))
cbCicloEscolar.Text = oDrCiclos("ciclo_escolar")
Else : For c = 0 To cbCicloEscolar.Items.Count - 1
If cbCicloEscolar.Items(c).ToString = oDrCiclos("ciclo_escolar") Then
x += 1 : End If
Next
If x = 0 Then : cbCicloEscolar.Items.Add(oDrCiclos("ciclo_escolar"))
End If : End If : Next : End If : ax = 1
End Sub

Se le dan valores a la variable tabla de acuerdo a la especialidad seleccionada en


el cbCarrera.
Sub Especialidad()
If cbCarrera.Text = "PREPARATORIA" Then : tabla = "preparatoria"
ElseIf cbCarrera.Text = "LICENCIATURA EN ADMINISTRACION" Then : tabla = "administracion"
ElseIf cbCarrera.Text = "LICENCIATURA EN DERECHO" Then : tabla = "derecho"
ElseIf cbCarrera.Text = "LICENCIATURA EN SISTEMAS COMPUTACIONALES" Then
tabla = "sistemas"
ElseIf cbCarrera.Text = "LICENCIATURA EN CONTADURA" Then : tabla = "Contadura"
ElseIf cbCarrera.Text = "LICENCIATURA EN CIENCIAS DE LA EDUCACION SUPERIOR" Then : tabla =
"educacion"
ElseIf cbCarrera.Text = "LICENCIATURA EN COMUNICACION Y PERIODISMO" Then
tabla = "comunicacion" : End If : End Sub

La siguiente funcin carga las claves de las materias.


Private Sub CargaClaves() : cbClavesMat.Items.Clear() : cbClavesMat.Text = ""
txtMateria.Text = "" : oDaClaves = New OdbcDataAdapter("Select * from " & tabla & cbSemestre.Text &
" where ciclo_escolar= '" + cbCicloEscolar.Text + "'", ModConexion.oConexion)
oDsClaves = New DataSet : oDaClaves.Fill(oDsClaves, "claves")
If oDsClaves.Tables("claves").Rows.Count > 0 Then
Dim q, z, pi, s As Integer : For q = 0 To oDsClaves.Tables("claves").Rows.Count - 1
oDrClaves = oDsClaves.Tables("claves").Rows(q)
For pi = 1 To 15 : z = 0 : Try : If q = 0 Then
If Not IsDBNull(oDrClaves("clave_m" & pi)) Then
cbClavesMat.Items.Add(oDrClaves("clave_m" & pi))
cbClavesMat.Text = cbClavesMat.Items(0).ToString : End If
Else : For s = 0 To cbClavesMat.Items.Count - 1
If cbClavesMat.Items(s).ToString = oDrClaves("clave_m" & pi) Then
z += 1 : End If
Next : If z = 0 Then
If Not IsDBNull(oDrClaves("clave_m" & pi)) Then
If Not oDrClaves("clave_m" & pi) = "" Then

136

SISTEMA DE CONTROL ESCOLAR UNITAM

cbClavesMat.Items.Add(oDrClaves("clave_m" & pi))


End If : End If : End If : End If : Catch ex As Exception
Exit For : End Try : Next :
Next : End If : End Sub

Se hacen validaciones sobre los campo indicado para que no deje meter espacios
ni caracteres solo que permita seleccionar.
Private Sub txtMateria_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtMateria.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If
End Sub
Private Sub cbTipoActa_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles cbTipoActa.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If
End Sub
Private Sub cbControlEscolar_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles cbControlEscolar.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If
End Sub

Se hacen validaciones sobre el combo indicado para que active o desactive


algunos elementos apartir de lo seleccionado.
Private Sub cbCarrera_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cbCarrera.SelectedIndexChanged
FiltraDatos() : If cbCarrera.Text = "PREPARATORIA" Then
lbNoActa.Visible = True : cbNoActa.Visible = True : Else
lbNoActa.Visible = False : cbNoActa.Visible = False : End If
End Sub

Se hacen validaciones sobre el combo indicado para que implemente la funcin


FiltrarDatos().
Private Sub cbSemestre_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cbSemestre.SelectedIndexChanged
If ax = 1 Then : FiltraDatos() : End If
End Sub

Se hacen validaciones sobre el combo indicado para que implemente la funcin


CargarClaves().
Private Sub cbCicloEscolar_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cbCicloEscolar.SelectedIndexChanged : CargaClaves()
End Sub

La siguiente funcin valida el tipo de acta a generar.


Sub SabeCalificacion()
Dim ti, ta, ci As Integer : Dim cc, calif, lc As String : For ci = 1 To 15
Try : If oDrActas("clave_m" & ci) = cbClavesMat.Text Then
calif = oDrActas("ext" & ci) : Exit For : End If
Catch ex As Exception : Exit For : End Try
Next
tc = Len(calif) : For ti = 1 To tc
cc = Mid(calif, ti, 1) : If Char.IsNumber(cc) Then : ta += 1 : End If : Next
If tc = ta Then : numVal = calif : tipocal = "final"
Else : lc = vb.Right(calif, tc - ta)
If lc = "E" Then : numVal = vb.Left(calif, 1) : tipocal = "extra"
ElseIf lc = "ES" Then : numVal = vb.Left(calif, 1) : tipocal = "especial"
End If : End If
If cbCarrera.Text = "PREPARATORIA" Then : selcar = "prepa"
Else : selcar = "lic" : End If
End Sub

137

SISTEMA DE CONTROL ESCOLAR UNITAM

La siguiente funcin valida y marca los alumnos que han acreditado la materia.
Sub MarcaAcreditados()
If selcar = "prepa" Then : If Char.IsNumber(calnew) Then
If calnew >= 6 Then : acredSi = "X" : acredNo = ""
Else : acredSi = "" : acredNo = "X"
End If
Else : acredSi = "" : acredNo = "X" : End If
ElseIf selcar = "lic" Then : If Char.IsNumber(calnew) Then
If calnew >= 7 Then : acredSi = "X" : acredNo = ""
Else : acredSi = "" : acredNo = "X" : End If
Else : acredSi = "" : acredNo = "X" : End If : End If
End Sub

El siguiente cdigo es para que se obtenga el nombre de las materias cuando se


selecciona la clave de la misma.
Private Sub cbClavesMat_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cbClavesMat.SelectedIndexChanged
oDaMateria = New OdbcDataAdapter("Select nombre from materias where clave='" + cbClavesMat.Text
+ "'", ModConexion.oConexion) : oDsMateria = New DataSet
oDaMateria.Fill(oDsMateria, "materia")
If oDsMateria.Tables("materia").Rows.Count > 0 Then
oDrMateria = oDsMateria.Tables("materia").Rows(0)
txtMateria.Text = oDrMateria("nombre") : btnFiltro.Enabled = True
btnCancelar.Enabled = True : Else
MessageBox.Show("El nombre para esta clave no esta disponible", "Sistema de Control Escolar") :
End If
End Sub

La siguiente funcin valida las calificaciones en nmero y las muestra a su


correspondiente letra tambien valida las abreviaturas NP,NA,SD.
Sub NmerosLetras()
If calnew = "1" Then : nletras = "UNO" : ElseIf calnew = "2" Then : nletras = "DOS"
ElseIf calnew = "3" Then : nletras = "TRES" : ElseIf calnew = "4" Then : nletras = "CUATRO"
ElseIf calnew = "5" Then : nletras = "CINCO" : ElseIf calnew = "6" Then : nletras = "SEIS"
ElseIf calnew = "7" Then : nletras = "SIETE": ElseIf calnew = "8" Then : nletras = "OCHO"
ElseIf calnew = "9" Then : nletras = "NUEVE" : ElseIf calnew = "10" Then : nletras = "DIEZ"
ElseIf calnew = "NP" Then : nletras = "NO PRESENTO" : ElseIf calnew = "NA" Then : nletras = "NO
APROBO" : ElseIf calnew = "SD" Then : nletras = "SIN DERECHO" : End If
End Sub

La siguiente funcin obtiene el semestre en nmero y los iguala a letras.


Private Sub LetrasSemestre()
If cbSemestre.Text = "1" Then : semletras = "PRIMERO"
ElseIf cbSemestre.Text = "2" Then : semletras = "SEGUNDO"
ElseIf cbSemestre.Text = "3" Then : semletras = "TERCERO"
ElseIf cbSemestre.Text = "4" Then : semletras = "CUARTO"
ElseIf cbSemestre.Text = "5" Then : semletras = "QUINTO"
ElseIf cbSemestre.Text = "6" Then : semletras = "SEXTO"
ElseIf cbSemestre.Text = "7" Then : semletras = "SEPTIMO"
ElseIf cbSemestre.Text = "8" Then : semletras = "OCTAVO"
ElseIf cbSemestre.Text = "9" Then : semletras = "NOVENO"
ElseIf cbSemestre.Text = "10" Then : semletras = "DECIMO"
ElseIf cbSemestre.Text = "11" Then : semletras = "ONCEAVO"
ElseIf cbSemestre.Text = "12" Then : semletras = "DOCEAVO"
ElseIf cbSemestre.Text = "13" Then : semletras = "TRECEAVO"
End If
End Sub

Funcin que se utiliza para igualar los nmeros insertados como mes a su
correspondiente mes pero mostrado en letras.
Private Sub LetrasFecha()
Dim dia, mes, ao, fval As String : fval = Mid(dtpFecha.Text, 4, 2)

138

SISTEMA DE CONTROL ESCOLAR UNITAM

dia = vb.Left(dtpFecha.Text, 2) : ao = vb.Right(dtpFecha.Text, 4)


If fval = "01" Then : mes = "ENERO"
ElseIf fval = "02" Then : mes = "FEBRERO" : ElseIf fval = "03" Then : mes = "MARZO"
ElseIf fval = "04" Then : mes = "ABRIL" : ElseIf fval = "05" Then : mes = "MAYO"
ElseIf fval = "06" Then : mes = "JUNIO" : ElseIf fval = "07" Then : mes = "JULIO"
ElseIf fval = "08" Then : mes = "AGOSTO"
ElseIf fval = "09" Then : mes = "SEPTIEMBRE"
ElseIf fval = "10" Then : mes = "OCTUBRE"
ElseIf fval = "11" Then : mes = "NOVIEMBRE"
ElseIf fval = "12" Then : mes = "DICIEMBRE" : End If
fechaLetras = dia & " DE " & mes & " DE " & ao
End Sub

Cdigo del Botn Filtro


El siguiente cdigo valida que se hayan seleccionado datos luego se realiza una
consulta en la tabla de la carrera y semestre que seleccion donde ciclo escolar y
grupo sean iguales a los antes indicados.
Private Sub btnFiltro_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnFiltro.Clic : If cbCarrera.Text = "Elija una carrera" Then
MessageBox.Show("Elija una carrera para filtrar la informacin", "Sistema de Control Escolar") :
cbCarrera.Focus()
Else : oDaActas = New OdbcDataAdapter("Select * from " & tabla & cbSemestre.Text & " where
ciclo_escolar= '" + cbCicloEscolar.Text + "' and grupo='" + cbGrupo.Text + "'", ModConexion.oConexion)
oDsActas = New DataSet : oDaActas.Fill(oDsActas, "actas")
Dim cont As Integer : cont = 0 : nacred = 0 : nregu = 0
If oDsActas.Tables("actas").Rows.Count > 0 Then
dgvActas.Rows.Clear() : For y = 0 To oDsActas.Tables("actas").Rows.Count - 1
oDrActas = oDsActas.Tables("actas").Rows(y)

Ahora se realiza una consulta para obtener el nombre del alumno de la tabla
alumnos.
oDaAlumno = New OdbcDataAdapter("Select nom_alumno from alumnos where no_control= '" +
oDrActas("no_control") + "'", ModConexion.oConexion)
oDsAlumno = New DataSet : oDaAlumno.Fill(oDsAlumno, "alumno")
If oDsAlumno.Tables("alumno").Rows.Count > 0 Then
btnFiltro.Enabled = True : btnVisorReporte.Enabled = True
btnCancelar.Enabled = True : oDrAlumno = oDsAlumno.Tables("alumno").Rows(0)
If cbTipoActa.SelectedIndex = 0 Then 'Acta de Evaluacin Final
SabeCalificacion() : filtro = "nopasa" : If selcar = "prepa" Then
If tipocal = "extra" Then : calnew = "5" : filtro = "pasa"
ElseIf tipocal = "especial" Then : calnew = "5"
filtro = "pasa" : ElseIf tipocal = "final" Then
If numVal < 6 Then : calnew = numVal : filtro = "pasa"
Else : calnew = numVal : filtro = "pasa" : End If
End If
ElseIf selcar = "lic" Then : If tipocal = "extra" Then : calnew = "6"
filtro = "pasa" : ElseIf tipocal = "especial" Then
calnew = "6" : filtro = "pasa" : ElseIf tipocal = "final" Then
If numVal < 7 Then : calnew = numVal : filtro = "pasa"
Else : calnew = numVal : filtro = "pasa" : End If
End If : End If
If filtro = "pasa" Then : dgvActas.Rows.Add()
dgvActas.Item(0, cont).Value = cont + 1
dgvActas.Item(1, cont).Value = oDrActas("no_control")
dgvActas.Item(2, cont).Value = oDrAlumno("nom_alumno")
dgvActas.Item(3, cont).Value = calnew : NmerosLetras()
dgvActas.Item(4, cont).Value = nletras : dgvActas.Item(5, cont).Value = "100%"
MarcaAcreditados() : If Not acredSi = "" Then : nacred += 1 : End If
If Not acredNo = "" Then : nregu += 1 : End If
dgvActas.Item(6, cont).Value = acredSi
dgvActas.Item(7, cont).Value = acredNo : cont += 1
End If

139

SISTEMA DE CONTROL ESCOLAR UNITAM

ElseIf cbTipoActa.SelectedIndex = 1 Then 'Acta de Evaluacin Extraordinaria


SabeCalificacion() : filtro = "nopasa" : If selcar = "prepa" Then
If tipocal = "extra" Then : calnew = numVal : filtro = "pasa"
ElseIf tipocal = "especial" Then : calnew = "5" : filtro = "pasa"
ElseIf tipocal = "final" Then : If numVal < 6 Then
calnew = numVal : filtro = "pasa" : End If
End If
ElseIf selcar = "lic" Then : If tipocal = "extra" Then
calnew = numVal : filtro = "pasa" : ElseIf tipocal = "especial" Then
calnew = "6" : filtro = "pasa" : ElseIf tipocal = "final" Then
If numVal < 7 Then : calnew = numVal : filtro = "pasa"
End If : End If
End If
If filtro = "pasa" Then : dgvActas.Rows.Add()
dgvActas.Item(0, cont).Value = cont + 1
dgvActas.Item(1, cont).Value = oDrActas("no_control")
dgvActas.Item(2, cont).Value = oDrAlumno("nom_alumno")
dgvActas.Item(3, cont).Value = calnew : NmerosLetras()
dgvActas.Item(4, cont).Value = nletras
dgvActas.Item(5, cont).Value = "100%" : MarcaAcreditados()
If Not acredSi = "" Then : nacred += 1 : End If
If Not acredNo = "" Then : nregu += 1 : End If
dgvActas.Item(6, cont).Value = acredSi
dgvActas.Item(7, cont).Value = acredNo : cont += 1
End If : ElseIf cbTipoActa.SelectedIndex = 2 Then 'Acta de Evaluacin Especial
SabeCalificacion() : filtro = "nopasa"
If selcar = "prepa" Then
If tipocal = "extra" Then : calnew = numVal : filtro = "nopasa"
ElseIf tipocal = "especial" Then : calnew = numVal : filtro = "pasa"
ElseIf tipocal = "final" Then : If numVal < 6 Then
calnew = numVal : filtro = "pasa" : End If :
End If
ElseIf selcar = "lic" Then : If tipocal = "extra" Then
calnew = numVal : filtro = "nopasa" : ElseIf tipocal = "especial" Then
calnew = numVal : filtro = "pasa" : ElseIf tipocal = "final" Then
If numVal < 7 Then : calnew = numVal : filtro = "pasa" : End If
End If : End If
If filtro = "pasa" Then : dgvActas.Rows.Add()
dgvActas.Item(0, cont).Value = cont + 1
dgvActas.Item(1, cont).Value = oDrActas("no_control")
dgvActas.Item(2, cont).Value = oDrAlumno("nom_alumno")
dgvActas.Item(3, cont).Value = calnew : NmerosLetras()
dgvActas.Item(4, cont).Value = nletras
dgvActas.Item(5, cont).Value = "100%" : MarcaAcreditados()
If Not acredSi = "" Then : nacred += 1 : End If
If Not acredNo = "" Then : nregu += 1 : End If
dgvActas.Item(6, cont).Value = acredSi
dgvActas.Item(7, cont).Value = acredNo : cont += 1
End If : End If : Else
MessageBox.Show("No se encontraron datos del No. de Control - " & oDrActas("no_control"),
"Sistema de Control Escolar") : btnVisorReporte.Enabled = False
End If : Next : oDsAlumno.Tables("alumno").Rows.Clear()
Else : dgvActas.Rows.Clear() : End If : End If
End Sub

Cdigo del Botn Imprimir


Private Sub btnVisorReporte_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnVisorReporte.Clic
If dgvActas.Rows.Count > 0 Then : Dim oDaActasBusca As OdbcDataAdapter
Dim oDsActasBusca As DataSet : Dim res As Integer
ModConexion.oConexion.Open()

Se realiza una consulta en la tabla actas para checar si contiene informacin.


oDaActasBusca = New OdbcDataAdapter("Select * From actas", ModConexion.oConexion) :
oDsActasBusca = New DataSet
oDaActasBusca.Fill(oDsActasBusca, "actas")

140

SISTEMA DE CONTROL ESCOLAR UNITAM

Si el resultado de la busqueda es que la tabla contiene datos se realiza una


instruccin para eliminar completamente los datos de esa tabla por que se van a
insertar nuevos datos.
If oDsActasBusca.Tables("actas").Rows.Count > 0 Then
iSQl = "Delete from actas" : Dim oComand As New OdbcCommand(iSQl,
ModConexion.oConexion) : res = oComand.ExecuteNonQuery : End If
Dim As Integer : Dim no, ncontrol, nomalumno, caln, calet, asist, acSi, acNo As String
For = 0 To 39

Se le asignan los valores a una variable.


If <= dgvActas.Rows.Count - 1 Then : no = dgvActas.Rows().Cells(0).Value()
ncontrol = dgvActas.Rows().Cells(1).Value()
nomalumno = dgvActas.Rows().Cells(2).Value()
caln = dgvActas.Rows().Cells(3).Value() : calet = dgvActas.Rows().Cells(4).Value()
asist = dgvActas.Rows().Cells(5).Value() : acSi = dgvActas.Rows().Cells(6).Value()
acNo = dgvActas.Rows().Cells(7).Value() : Else : no = + 1
ncontrol = " " : nomalumno = " " : caln = " " : calet = " " : asist = " " : acSi = " " : acNo = " "
End If

Se insertan los valores a la base de datos por alumno.


iSQl = "Insert Into actas(num, no_control, nombre, cal_num, cal_letra, asistencia, acred_si,
acred_no) " & _
"values ('" & no & "','" & ncontrol & "','" & nomalumno & "','" & caln & "','" & calet & "','" & asist &
"','" & acSi & "','" & acNo & "')"
Dim oComand As New OdbcCommand(iSQl, ModConexion.oConexion)
res = oComand.ExecuteNonQuery : Next : ModConexion.oConexion.Close()

Se declaran algunas variables para que se realice el reporte.


Dim oRptPruebaPrepa As New rptActasdeEvalFi_Ex_Es_Prepa
Dim oRptPrueba As New rptActasdeEvalFi_Ex_Es
Dim Formulario As New FrmVisorReportes
Dim pvValoresParametros As New ParameterValues()
Dim parCar, parSem, parCiclo, parTipoActa, parClave, parNomMat, parTurno, parGrupo As New
ParameterDiscreteValue()
Dim parTot, parCated, parFecha, parConEs, parNoActa, parNoAcred, parNoRegu As New
ParameterDiscreteValue()

Funciones donde se igualan los nmeros con letras.


LetrasSemestre()

Se pasan los valores a los parametros que se declararon anteriormente y que se


van a utilizar para mostrar la informacin en el reporte.
parCar.Value = cbCarrera.Text : parSem.Value = semletras
parCiclo.Value = cbCicloEscolar.Text : parClave.Value = cbClavesMat.Text
parNomMat.Value = txtMateria.Text : parTurno.Value = cbTurno.Text
parGrupo.Value = cbGrupo.Text : parTot.Value = dgvActas.Rows.Count
parCated.Value = cbCatedrticos.Text : parConEs.Value = cbControlEscolar.Text
LetrasFecha()

Se asigan valores dependiendo lo seleccionado en el combo cbTipoActa.


parFecha.Value = "TAMAZUNCHALE S.L.P. A " & fechaLetras
If cbCarrera.Text = "PREPARATORIA" Then : If cbTipoActa.SelectedIndex = 0 Then
parTipoActa.Value = "ACTA DE RESULTADOS DE EVALUACIN FINAL"
ElseIf cbTipoActa.SelectedIndex = 1 Then
parTipoActa.Value = "ACTA DE RESULTADOS DE EVALUACIN EXTRAORDINARIA" : ElseIf
cbTipoActa.SelectedIndex = 2 Then
parTipoActa.Value = "ACTA DE RESULTADOS DE EVALUACIN ESPECIAL"
End If : parNoActa.Value = cbNoActa.Text
parNoAcred.Value = nacred
parNoRegu.Value = nregu

141

SISTEMA DE CONTROL ESCOLAR UNITAM

Los parametros se agregan y se relacionan con los parametros creados en el


reporte.
pvValoresParametros.Add(parNoAcred)
oRptPruebaPrepa.DataDefinition.ParameterFields("numacred").ApplyCurrentValues(pvValoresParametros) :
pvValoresParametros.Add(parNoRegu)
oRptPruebaPrepa.DataDefinition.ParameterFields("numregu").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parNoActa)
oRptPruebaPrepa.DataDefinition.ParameterFields("numacta").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parSem)
oRptPruebaPrepa.DataDefinition.ParameterFields("semestre").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parCiclo)
oRptPruebaPrepa.DataDefinition.ParameterFields("cicloescolar").ApplyCurrentValues(pvValoresParametros)
:
pvValoresParametros.Add(parTipoActa)
oRptPruebaPrepa.DataDefinition.ParameterFields("tipoacta").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parClave)
oRptPruebaPrepa.DataDefinition.ParameterFields("clave").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parNomMat)
oRptPruebaPrepa.DataDefinition.ParameterFields("asignatura").ApplyCurrentValues(pvValoresParametros) :
pvValoresParametros.Add(parTurno)
oRptPruebaPrepa.DataDefinition.ParameterFields("turno").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parGrupo)
oRptPruebaPrepa.DataDefinition.ParameterFields("grupo").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parTot)
oRptPruebaPrepa.DataDefinition.ParameterFields("total").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parCated)
oRptPruebaPrepa.DataDefinition.ParameterFields("Catedrtico").ApplyCurrentValues(pvValoresParametros) :
pvValoresParametros.Add(parFecha)
oRptPruebaPrepa.DataDefinition.ParameterFields("fecha").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parConEs)
oRptPruebaPrepa.DataDefinition.ParameterFields("controlescolar").ApplyCurrentValues(pvValoresParametro
s) : Formulario.crvReportesVisor.ReportSource = oRptPruebaPrepa :
Else
parTipoActa.Value = cbTipoActa.Text : pvValoresParametros.Add(parCar)
oRptPrueba.DataDefinition.ParameterFields("carrera").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parSem)
oRptPrueba.DataDefinition.ParameterFields("semestre").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parCiclo)
oRptPrueba.DataDefinition.ParameterFields("cicloescolar").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parTipoActa)
oRptPrueba.DataDefinition.ParameterFields("tipoacta").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parClave)
oRptPrueba.DataDefinition.ParameterFields("clave").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parNomMat)
oRptPrueba.DataDefinition.ParameterFields("asignatura").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parTurno)
oRptPrueba.DataDefinition.ParameterFields("turno").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parGrupo)
oRptPrueba.DataDefinition.ParameterFields("grupo").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parTot)
oRptPrueba.DataDefinition.ParameterFields("total").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parCated)
oRptPrueba.DataDefinition.ParameterFields("Catedrtico").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parFecha)
oRptPrueba.DataDefinition.ParameterFields("fecha").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parConEs)
oRptPrueba.DataDefinition.ParameterFields("controlescolar").ApplyCurrentValues(pvValoresParametros)
Formulario.crvReportesVisor.ReportSource = oRptPrueba : End If
Formulario.Show() : Else
MessageBox.Show("No hay informacin que imprimir para este tipo de Acta", "Sistema de Contol
Escolar") : End If : End Sub

Cdigo del Botn Cancelar


El siguiente cdigo muestra al formulario a su estado inicial.
Private Sub btnCancelar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnCancelar.Clic
cbCarrera.Text = "Elija una carrera" : cbCarrera.Focus() : cbSemestre.Text = "1"

142

SISTEMA DE CONTROL ESCOLAR UNITAM

cbCicloEscolar.Text = "" : cbCicloEscolar.Items.Clear() : cbClavesMat.Text = ""


cbClavesMat.Items.Clear() : txtMateria.Text = "" : cbTurno.SelectedIndex = 0
cbGrupo.SelectedIndex = 0 : cbTipoActa.SelectedIndex = 0
cbCatedrticos.SelectedIndex = 0 : cbControlEscolar.SelectedIndex = 0
dgvActas.Rows.Clear() : btnCancelar.Enabled = False : btnFiltro.Enabled = False
btnCancelar.Enabled = False : btnVisorReporte.Enabled = False
btnCerrar.Enabled = True : cbNoActa.SelectedIndex = 0 : End Sub
End Class

Formulario Actas de Calificaciones


El siguiente formulario se utiliza para generar las actas de calificaciones.
Est compuesto por:
Tipo
Form
GoupBox
Label
ComboBox
Label
Label
ComboBox
ComboBox
DataGridView
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
Button
Button
Button
Button
Label
GroupBox
ComboBox
Label
TextBox
Label
GroupBox
Label

Nombre
FrmActas
Evaluacin
gboxDatosDoc
Label1
cbControlEscolar
Label8
Label10
cbCatedrticos
cbTurno
dgvActasCalificacion
Num

Descripcin
Formulario para generar las Actas de
Calificaciones
Muestra el grupo Datos del Documento
Muestra en la etiqueta Encargado de Control
Escolar
Muestra el combo Control Escolar
Muestra en la etiqueta Turno:
Muestra en la etiqueta Catedrtico
Muestra el combo Catedrticos
Muestra el combo Turno
Muestra el resultado despues de filtrar los datos
Muestra la columna No.

Nocontrol

Muestra la columna No. Control

Nombre

Muestra la columna Nombre del alumno (a)

Par1

Muestra la columna 1er. Par.

Par2

Muestra la columna 2do. Par.

Global

Muestra la columna Ordin.

Calfinal

Muestra la columna Cal. F.

Ext

Muestra la columna Ext

Esp

Muestra la columna ESp

final

Muestra la columna Final

btnCerrar
BtnCancelar
BtnVisorReporte
BtnFiltro
lbTitulo
gboxMateria
cbClavesMat
Label5
txtMateria
Label7
gboxCarrera
Label12

Muestra el botn Cerrar


Muestra el botn Cancelar
Muestra el botn Imprimir
Muestra el botn Filtrar
Muestra en la etiqueta el titulo del formulario
Muestra el grupo Datos de la Materia
Muestra el combo Claves de la Materia
Muestra en la etiqueta Clave:
Muestra la caja de texto Materia
Muestra en la etiqueta Nombre:
Muestra el grupo Datos de la Carrera
Muestra en la etiqueta Grupo:

143

SISTEMA DE CONTROL ESCOLAR UNITAM

ComboBox
ComboBox
Label
Label
ComboBox
Label
ComboBox

cbGrupo
cbCarrera
Label2
Label4
cbSemestre
Label6
cbCicloEscolar

Muestra el combo Grupo


Muestra el combo Carrera
Muestra en la etiqueta Carrera:
Muestra en la etiqueta Semestre:
Muestra el combo Semestre
Muestra en la etiqueta Ciclo Escolar:
Muestra el combo Ciclo Escolar

Al inicio del formulario se muestra el siguiente cdigo


Se importan las libreras a utilizar.
Imports System.Data.Odbc : Imports vb = Microsoft.VisualBasic
Imports CrystalDecisions.Shared : Imports CrystalDecisions.CrystalReports.Engine

Se inicializa la clase.
Public Class FrmActasEvaluacin

Se declaran las variables que se van a utilizar.


Dim oDaCiclos, oDaActas, oDaAlumno, oDaClaves, oDaMateria, oDaDocent As OdbcDataAdapter
Dim oDsCiclos, oDsActas, oDsAlumno, oDsClaves, oDsMateria, oDsDocent As DataSet
Dim oDrCiclos, oDrActas, oDrAlumno, oDrClaves, oDrMateria, oDrDoc As DataRow
Dim tabla, nletras, numVal, acredit, tipocal, semLetras As String
Dim filtro, iSQl, profesin As String : Dim mcf, mcex, mces, letrasCiclo As String
Dim i, c, x, ax, y, tc, k As Integer : Dim calf, c1p, c2p, co As String

Se manda llamar a la funcin CargaDocentes(), se inicializa el combo Carrera y


grupo , se valida la caja de texto txtMateria para que muestre valores solo en
maysculas.
Private Sub FrmActasCalificaciones_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
cbCarrera.Focus() : txtMateria.CharacterCasing = CharacterCasing.Upper
cbGrupo.SelectedIndex = 0 : ax = 0 : CargaDocentes()
End Sub

Funcin que se utiliza para obtener los ciclos escolares para que nada mas
aparescarn una vez los que esten repetidos.
Private Sub FiltraDatos() : cbCicloEscolar.Items.Clear() : Especialidad()

144

SISTEMA DE CONTROL ESCOLAR UNITAM

oDaCiclos = New OdbcDataAdapter("Select * from " & tabla & cbSemestre.Text & " ",
ModConexion.oConexion) : oDsCiclos = New DataSet
Try : oDaCiclos.Fill(oDsCiclos, "ciclos") : Catch ex As Exception
MessageBox.Show(ex.Message) :
Exit Sub : End Try
If oDsCiclos.Tables("ciclos").Rows.Count > 0 Then
For i = 0 To oDsCiclos.Tables("ciclos").Rows.Count - 1
x = 0 : oDrCiclos = oDsCiclos.Tables("ciclos").Rows(i)
If i = 0 Then : cbCicloEscolar.Items.Add(oDrCiclos("ciclo_escolar"))
cbCicloEscolar.Text = oDrCiclos("ciclo_escolar") : Else
For c = 0 To cbCicloEscolar.Items.Count - 1
If cbCicloEscolar.Items(c).ToString = oDrCiclos("ciclo_escolar") Then : x += 1
End If : Next
If x = 0 Then : cbCicloEscolar.Items.Add(oDrCiclos("ciclo_escolar")) : End If
End If : Next : End If : ax = 1
End Sub

Se declara un procedimiento que realiza una consulta sobre la tabla docentes e


iguala su profesin a caracteres abreviados.
Sub CargaDocentes()
oDaDocent = New OdbcDataAdapter("Select * from docentes", ModConexion.oConexion)
oDsDocent = New DataSet
oDaDocent.Fill(oDsDocent, "docent")
If oDsDocent.Tables("docent").Rows.Count > 0 Then
For k = 0 To oDsDocent.Tables("docent").Rows.Count - 1
oDrDoc = oDsDocent.Tables("docent").Rows(k)
If oDrDoc("profesin") = "LICENCIADO(A)" Then : profesin = "LIC."
ElseIf oDrDoc("profesin") = "PSICOLOGO(A)" Then : profesin = "PSI."
ElseIf oDrDoc("profesin") = "INGENIERO" Then : profesin = "ING."
ElseIf oDrDoc("profesin") = "ARQUITECTO(A)" Then : profesin = "ARQ."
ElseIf oDrDoc("profesin") = "DOCTOR(A)" Then : profesin = "DR."
ElseIf oDrDoc("profesin") = "PROFESOR(A)" Then : profesin = "PROF(RA)."
End If
cbCatedrticos.Items.Add(profesin & " " & oDrDoc("nombre") & " " & oDrDoc("ape_p") & " " &
oDrDoc("ape_m")) : cbCatedrticos.Text = cbCatedrticos.Items(0)
cbControlEscolar.Items.Add(profesin & " " & oDrDoc("nombre") & " " & oDrDoc("ape_p") & " " &
oDrDoc("ape_m")) : cbControlEscolar.Text = cbCatedrticos.Items(0)
Next : End If : End Sub

Se le dan valores a la variable tabla de acuerdo a la especialidad seleccionada en


el cbCarrera.
Sub Especialidad() : If cbCarrera.Text = "PREPARATORIA" Then : tabla = "preparatoria"
ElseIf cbCarrera.Text = "LICENCIATURA EN ADMINISTRACION" Then
tabla = "administracion"
ElseIf cbCarrera.Text = "LICENCIATURA EN DERECHO" Then : tabla = "derecho"
ElseIf cbCarrera.Text = "LICENCIATURA EN SISTEMAS COMPUTACIONALES" Then
tabla = "sistemas"
ElseIf cbCarrera.Text = "LICENCIATURA EN CONTADURA" Then : tabla = "Contadura"
ElseIf cbCarrera.Text = "LICENCIATURA EN CIENCIAS DE LA EDUCACION SUPERIOR" Then : tabla
= "educacion"
ElseIf cbCarrera.Text = "LICENCIATURA EN COMUNICACION Y PERIODISMO" Then
tabla = "comunicacion" : End If : End Sub

La siguiente funcin carga las claves de las materias.


Private Sub CargaClaves() : cbClavesMat.Items.Clear() : cbClavesMat.Text = ""
txtMateria.Text = "" : oDaClaves = New OdbcDataAdapter("Select * from " & tabla & cbSemestre.Text &
" where ciclo_escolar= '" + cbCicloEscolar.Text + "'", ModConexion.oConexion) : oDsClaves = New DataSet
oDaClaves.Fill(oDsClaves, "claves")
If oDsClaves.Tables("claves").Rows.Count > 0 Then
Dim q, z, pi, s As Integer : For q = 0 To oDsClaves.Tables("claves").Rows.Count - 1
oDrClaves = oDsClaves.Tables("claves").Rows(q) : For pi = 1 To 15 : z = 0
Try : If q = 0 Then : If Not IsDBNull(oDrClaves("clave_m" & pi)) Then
cbClavesMat.Items.Add(oDrClaves("clave_m" & pi))
cbClavesMat.Text = cbClavesMat.Items(0).ToString : End If : Else
For s = 0 To cbClavesMat.Items.Count - 1
If cbClavesMat.Items(s).ToString = oDrClaves("clave_m" & pi) Then

145

SISTEMA DE CONTROL ESCOLAR UNITAM

z += 1 : End If : Next
If z = 0 Then
If Not IsDBNull(oDrClaves("clave_m" & pi)) Then
If Not oDrClaves("clave_m" & pi) = "" Then
cbClavesMat.Items.Add(oDrClaves("clave_m" & pi)) : End If
End If : End If : End If : Catch ex As Exception : Exit For
End Try : Next : Next : End If : If cbClavesMat.Text = "" Then
btnFiltro.Enabled = False : btnVisorReporte.Enabled = False
Else : btnFiltro.Enabled = True : End If : End Sub

Se hacen validaciones para los combos utilizados en el formulario para que no


deje meter espacios ni caracteres solo seleccionar.
Private Sub cbCarrera_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles cbCarrera.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" :
End If
End Sub
Private Sub cbSemestre_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles cbSemestre.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If
End Sub
Private Sub cbCicloEscolar_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles cbCicloEscolar.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If
End Sub
Private Sub cbClavesMat_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles cbClavesMat.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If
End Sub

Se hacen validaciones sobre el combo indicado para que implemente la funcin


FiltrarDatos().
Private Sub cbSemestre_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cbSemestre.SelectedIndexChanged
If ax = 1 Then : FiltraDatos() : End If
End Sub

Funcion para sacar las calificaciones de las materias.


Sub SacaCalificacion() : Dim ci, ti, ta As Integer : Dim calext, cc, lc As String

Se recorre todas las claves para buscar y sacar la calificacion referente a esa
materia.
For ci = 1 To 15 : Try : If oDrActas("clave_m" & ci) = cbClavesMat.Text Then
c1p = oDrActas("cal1p_" & ci) : c2p = oDrActas("cal2p_" & ci)
co = oDrActas("calor_" & ci) : calf = oDrActas("prom" & ci)
calext = oDrActas("ext" & ci) : Exit For : End If : Catch ex As Exception
Exit For : End Try : Next : tc = Len(calext)
For ti = 1 To tc : cc = Mid(calext, ti, 1) : If Char.IsNumber(cc) Then : ta += 1 : End If
Next

Se verifica que tipo de calificacion es y los separa, si es extraordinario, especial o


una calificacion normal.
If tc = ta Then : numVal = calext : tipocal = "final" : Else : lc = vb.Right(calext, tc - ta)
If lc = "E" Then : numVal = vb.Left(calext, 1) : tipocal = "extra"
ElseIf lc = "ES" Then : numVal = vb.Left(calext, 1) : tipocal = "esp"
End If : End If

Pasar los valores a mostrar segun el tipo de calificacin.


146

SISTEMA DE CONTROL ESCOLAR UNITAM

If tipocal = "final" Then : mcf = numVal : mcex = "" : mces = ""


ElseIf tipocal = "extra" Then : mcf = numVal : mcex = numVal : mces = ""
ElseIf tipocal = "esp" Then : mcf = numVal : mces = numVal : If cbCarrera.Text = "PREPARATORIA"
Then : mcex = "5" : Else : mcex = "6" : End If
End If : End Sub

El siguiente cdigo es para que se ontenga el nombre de las materias cuando se


selecciona la clave de la misma.
Private Sub cbClavesMat_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cbClavesMat.SelectedIndexChanged
oDaMateria = New OdbcDataAdapter("Select nombre from materias where clave='" + cbClavesMat.Text
+ "'", ModConexion.oConexion)
oDsMateria = New DataSet : oDaMateria.Fill(oDsMateria, "materia")
If oDsMateria.Tables("materia").Rows.Count > 0 Then
oDrMateria = oDsMateria.Tables("materia").Rows(0)
txtMateria.Text = oDrMateria("nombre") : btnFiltro.Enabled = True
btnCancelar.Enabled = True : Else
MessageBox.Show("El nombre para esta clave no esta disponible", "Sistema de Control Escolar") :
End If
End Sub

Cdigo del Botn Filtrar


El siguiente cdigo valida que se hayan seleccionado datos luego se realiza una
consulta en la tabla de la carrera y semestre que seleccion donde ciclo escolar y
grupo sean iguales a los antes indicados.
Private Sub btnFiltro_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnFiltro.Clic : If cbCarrera.Text = "Elija una carrera" Then
MessageBox.Show("Elija una carrera para filtrar la informacin", "Sistema de Control Escolar") :
cbCarrera.Focus() : Else
oDaActas = New OdbcDataAdapter("Select * from " & tabla & cbSemestre.Text & " where
ciclo_escolar= '" + cbCicloEscolar.Text + "' and grupo='" + cbGrupo.Text + "'", ModConexion.oConexion)
oDsActas = New DataSet : oDaActas.Fill(oDsActas, "actas")
Dim cont As Integer ': Dim no_c As String : cont = 0
If oDsActas.Tables("actas").Rows.Count > 0 Then
dgvActasCalificaciones.Rows.Clear() : btnVisorReporte.Enabled = True
For y = 0 To oDsActas.Tables("actas").Rows.Count - 1
oDrActas = oDsActas.Tables("actas").Rows(y)

Ahora se realiza una consulta para obtener el nombre del alumno de la tabla
alumnos.
oDaAlumno = New OdbcDataAdapter("Select nom_alumno from alumnos where no_control= '" +
oDrActas("no_control") + "'", ModConexion.oConexion)
oDsAlumno = New DataSet : oDaAlumno.Fill(oDsAlumno, "alumno")
If oDsAlumno.Tables("alumno").Rows.Count > 0 Then
dgvActasCalificaciones.Rows.Add()
oDrAlumno = oDsAlumno.Tables("alumno").Rows(0) : SacaCalificacion()
dgvActasCalificaciones.Item(0, cont).Value = y + 1
dgvActasCalificaciones.Item(1, cont).Value = oDrActas("no_control")
dgvActasCalificaciones.Item(2, cont).Value = oDrAlumno("nom_alumno")
dgvActasCalificaciones.Item(3, cont).Value = c1p
dgvActasCalificaciones.Item(4, cont).Value = c2p
dgvActasCalificaciones.Item(5, cont).Value = co
dgvActasCalificaciones.Item(6, cont).Value = calf
dgvActasCalificaciones.Item(7, cont).Value = mcex
dgvActasCalificaciones.Item(8, cont).Value = mces
dgvActasCalificaciones.Item(9, cont).Value = mcf : cont += 1
Else : MessageBox.Show("No se encontraron datos del No. de Control - " &
oDrActas("no_control"), "Sistema de Control Escolar")
btnVisorReporte.Enabled = False : End If : Next
oDsAlumno.Tables("alumno").Rows.Clear() : Else
dgvActasCalificaciones.Rows.Clear() : End If : End If
End Sub

147

SISTEMA DE CONTROL ESCOLAR UNITAM

Cdigo del Botn Cancelar


El siguiente cdigo regresa al formulario a su estado inicial.
Private Sub btnCancelar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnCancelar.Clic
cbCarrera.Text = "Elija una carrera": cbCarrera.Focus() : cbSemestre.SelectedIndex = 0
cbGrupo.SelectedIndex = 0 : cbCicloEscolar.Text = "" : cbCicloEscolar.Items.Clear()
cbClavesMat.Text = "" : cbClavesMat.Items.Clear() : txtMateria.Text = ""
cbTurno.SelectedIndex = 0 : cbCatedrticos.SelectedIndex = 0
dgvActasCalificaciones.Rows.Clear()
btnCancelar.Enabled = False : btnFiltro.Enabled = False : btnCancelar.Enabled = False
btnVisorReporte.Enabled = False : btnCerrar.Enabled = True
End Sub

Cdigo del Botn Imprimir


Private Sub btnVisorReporte_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnVisorReporte.Clic

Se declaran las variables para realizar la consulta.


If dgvActasCalificaciones.Rows.Count > 0 Then
Dim oDaActasBusca As OdbcDataAdapter : Dim oDsActasBusca As DataSet
Dim res As Integer :
ModConexion.oConexion.Open()

Se realiza una consulta en la tabla actaevaluacion para checar si contiene


informacin.
oDaActasBusca = New OdbcDataAdapter("Select * From actaevaluacin", ModConexion.oConexion)
oDsActasBusca = New DataSet : oDaActasBusca.Fill(oDsActasBusca, "actas")

Si el resultado de la busqueda es que la tabla contiene datos se realiza una


instruccin para eliminar completamente los datos de esa tabla por que se van a
insertar nuevos datos.
If oDsActasBusca.Tables("actas").Rows.Count > 0 Then
iSQl = "Delete from actaevaluacin"
Dim oComand As New OdbcCommand(iSQl, ModConexion.oConexion)
res = oComand.ExecuteNonQuery : End If
Dim As Integer : Dim num, ncontrol, nomalumno, cal1p, cal2p, calor, calfinal, caext, caesp, cafinal
As String
For = 0 To 39

Se le asignan los valores a una variable.


If <= dgvActasCalificaciones.Rows.Count - 1 Then
num = dgvActasCalificaciones.Rows().Cells(0).Value()
ncontrol = dgvActasCalificaciones.Rows().Cells(1).Value()
nomalumno = dgvActasCalificaciones.Rows().Cells(2).Value()
cal1p = dgvActasCalificaciones.Rows().Cells(3).Value()
cal2p = dgvActasCalificaciones.Rows().Cells(4).Value()
calor = dgvActasCalificaciones.Rows().Cells(5).Value()
calfinal = dgvActasCalificaciones.Rows().Cells(6).Value()
caext = dgvActasCalificaciones.Rows().Cells(7).Value()
caesp = dgvActasCalificaciones.Rows().Cells(8).Value()
cafinal = dgvActasCalificaciones.Rows().Cells(9).Value()
Else :
num = + 1
ncontrol = " " : nomalumno = " " : cal1p = " " : cal2p = " " : calor = " "
calfinal = " " : caext = " " : caesp = " " : cafinal = " "
End If

Se insertan los valores a la base de datos por alumno


iSQl = "Insert Into actaevaluacin(no, no_control, alumno, parcial1, parcial2, ordinario, cal_final,
extra, espec, final) " & _

148

SISTEMA DE CONTROL ESCOLAR UNITAM

"values ('" & num & "','" & ncontrol & "','" & nomalumno & "','" & cal1p & "','" & cal2p & "','" & calor
& "','" & calfinal & "','" & caext & "','" & caesp & "','" & cafinal & "')"
Dim oComand As New OdbcCommand(iSQl, ModConexion.oConexion)
res = oComand.ExecuteNonQuery : Next : ModConexion.oConexion.Close()

Se declaran algunas variables para que se realice el reporte.


Dim oRptPrueba As New rptActasdeEvaluacin
Dim pvValoresParametros As New ParameterValues()
Dim parCar, parCiclo, parNomMat, parCate, parControl, parTurno, parClaveMAt, parSem As New
ParameterDiscreteValue()

Funciones donde se igualan los nmeros con letras.


LetrasCicloEscolar() : LetrasSemestre()

Se pasan los valores a los parametros que se declararon anteriormente y que se


van a utilizar para mostrar la informacin en el reporte.
parCar.Value = cbCarrera.Text : parCiclo.Value = letrasCiclo
parNomMat.Value = txtMateria.Text : parClaveMAt.Value = cbClavesMat.Text
parSem.Value = semLetras : parTurno.Value = cbTurno.Text
parCate.Value = cbCatedrticos.Text : parControl.Value = cbControlEscolar.Text

Los parametros se agregan y se relacionan con los parametros creados en el


reporte.
pvValoresParametros.Add(parCar)
oRptPrueba.DataDefinition.ParameterFields("carrera").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parCiclo)
oRptPrueba.DataDefinition.ParameterFields("cicloescolar").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parNomMat)
oRptPrueba.DataDefinition.ParameterFields("asignatura").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parClaveMAt)
oRptPrueba.DataDefinition.ParameterFields("clave").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parSem)
oRptPrueba.DataDefinition.ParameterFields("semestre").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parTurno)
oRptPrueba.DataDefinition.ParameterFields("turno").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parCate)
oRptPrueba.DataDefinition.ParameterFields("Catedrtico").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parControl)
oRptPrueba.DataDefinition.ParameterFields("controlescolar").ApplyCurrentValues(pvValoresParametros)

Se declara una variable para mostrar el visor de reportes.


Dim Formulario As New FrmVisorReportes
Formulario.crvReportesVisor.ReportSource = oRptPrueba : Formulario.Show()
Else : MessageBox.Show("No hay informacin que imprimir para esta Acta", "Sistema de Contol
Escolar") : End If
End Sub

Funcin que se utiliza para igualar los nmeros insertados como mes a su
correspondiente mes pero mostrado en letras.
Sub LetrasCicloEscolar()
Dim mes1, mes2, ao1, ao2 As String : If vb.Left(cbCicloEscolar.Text, 2) = "07" Then
mes1 = "JULIO" : ElseIf vb.Left(cbCicloEscolar.Text, 2) = "08" Then
mes1 = "AGOSTO" : ElseIf vb.Left(cbCicloEscolar.Text, 2) = "09" Then
mes1 = "SEPTIEMBRE" : ElseIf vb.Left(cbCicloEscolar.Text, 2) = "01" Then
mes1 = "ENERO" : ElseIf vb.Left(cbCicloEscolar.Text, 2) = "02" Then
mes1 = "FEBRERO" : End If
If Mid(cbCicloEscolar.Text, 8, 2) = "01" Then
mes2 = "ENERO" : ElseIf Mid(cbCicloEscolar.Text, 8, 2) = "12" Then
mes2 = "DICIEMBRE" : ElseIf Mid(cbCicloEscolar.Text, 8, 2) = "06" Then
mes2 = "JUNIO" : ElseIf Mid(cbCicloEscolar.Text, 8, 2) = "07" Then
mes2 = "JULIO" : End If
ao1 = Mid(cbCicloEscolar.Text, 3, 4) : ao2 = vb.Right(cbCicloEscolar.Text, 4)
If ao1 = ao2 Then : letrasCiclo = mes1 & " - " & mes2 & " " & ao2

149

SISTEMA DE CONTROL ESCOLAR UNITAM

Else : letrasCiclo = mes1 & " " & ao1 & " - " & mes2 & " " & ao2 : End If
End Sub

Funcin que se utiliza para igualar los nmeros del semestre seleccionado a
nmeros romanos.
Private Sub LetrasSemestre()
If cbSemestre.Text = "1" Then : semletras = "I" : ElseIf cbSemestre.Text = "2" Then : semletras = "II"
ElseIf cbSemestre.Text = "3" Then : semletras = "III"
ElseIf cbSemestre.Text = "4" Then : semletras = "IV"
ElseIf cbSemestre.Text = "5" Then : semletras = "V"
ElseIf cbSemestre.Text = "6" Then : semletras = "VI"
ElseIf cbSemestre.Text = "7" Then : semletras = "VII"
ElseIf cbSemestre.Text = "8" Then : semletras = "VIII"
ElseIf cbSemestre.Text = "9" Then : semletras = "IX"
ElseIf cbSemestre.Text = "10" Then : semletras = "X"
ElseIf cbSemestre.Text = "11" Then : semletras = "XI"
ElseIf cbSemestre.Text = "12" Then : semletras = "XII" : End If : End Sub
Private Sub dgvActasCalificaciones_EditingControlShowing(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles
dgvActasCalificaciones.EditingControlShowing

Declaramos una variable que obtiene el valor o dato que actualmente se ingresa o
edita.
Dim validar As TextBox = CType(e.Control, TextBox)
AddHandler validar.KeyPress, AddressOf validar_Keypress
End Sub
Private Sub validar_Keypress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs)

En esta funcin validamos el keypress de textbox de la celda que se edita.


Dim columna As Integer = dgvActasCalificaciones.CurrentCell.ColumnIndex
If columna = 7 Or columna = 7 Then : Dim caracter As Char = e.KeyChar

Si el valor no es un nmero, ni un Retroceso, ni un punto, ni las letras N,P,A


entonces no dejara ingresar nada.
If Not Char.IsNumber(caracter) And (caracter = ChrW(Keys.Back)) = False And Not caracter = "." _
And Not caracter = "N" And Not caracter = "P" And Not caracter = "A" And Not caracter = "S" And Not
caracter = "D" Then : e.KeyChar = Chr(0) : End If :
End If
End Sub

Formulario Bsqueda Alumno Cardex


El siguiente formulario se utiliza para realizar la bsqueda del alumno y generar
su cardex.
Est compuesto por:
Tipo
Form
Button
Button
DataGridView
DataGridView
TextBoxColum
n
DataGridView
TextBoxColum
n
DataGridView

Nombre
FrmFiltroAlumno
Cardex
btnCerrar
btnIrCardex
dgvFiltroAlumno
Nocontrol

Descripcin
Formulario para realizar la bsqueda del alumno
y generar su cardex
Muestra el botn Cerrar
Muestra el botn Ver Cardex
Muestra el resultado despues de filtrar los datos
Muestra la columna No. de Control

Nombre

Muestra la columna Nombre

Carrera

Muestra la columna Carrera

150

SISTEMA DE CONTROL ESCOLAR UNITAM

TextBoxColum
n
GroupBox
Label
TextBox
ComboBox
Label

gboxAlumno
Label2
txtFiltro
CbFiltro
lbFiltro

Muestra el grupo Filtro


Muestra la etiqueta Filtrar Por:
Muestra la caja de texto Filtro
Muestra el combo Filtro
Muestra la etiqueta No. de Control:

Al inicio del formulario se muestra el siguiente cdigo


Se importan las libreras a utilizar.
Imports System.Data.Odbc

Se inicializa la clase.
Public Class FrmFiltroAlumnoCardex
Dim oDataAdapter As OdbcDataAdapter : Dim oDaSetAl As DataSet
Dim oDaFila As DataRow

Se hacen validaciones sobre el campo indicado para que no deje espacios en


blanco.
Private Sub txtFiltro_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtFiltro.KeyPress
If Len(txtFiltro.Text) = 0 Then : If e.KeyChar = " " Then
e.KeyChar = Chr(0) : End If : End If : End Sub

Valida la caja de texto txtFiltro para que se realice la consulta dependiendo de lo


seleccionado en el cbFiltro.
Private Sub txtFiltro_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles txtFiltro.TextChanged
Try : Dim condicion As String : Dim i As Integer
If cbFiltro.Text = "No. de Control" Then : condicion = "no_control"
ElseIf cbFiltro.Text = "Nombre, Apellido" Then : condicion = "nom_alumno"
End If : oDataAdapter = New OdbcDataAdapter("Select * From alumnos WHERE " & condicion & "
LIKE '" & txtFiltro.Text & "%'", ModConexion.oConexion)
oDaSetAl = New DataSet : oDataAdapter.Fill(oDaSetAl, "alumnos") '<>
If oDaSetAl.Tables("alumnos").Rows.Count > 0 Then
btnIrCardex.Enabled = True : dgvFiltroAlumno.Rows.Clear()
For i = 0 To oDaSetAl.Tables("alumnos").Rows.Count - 1
oDaFila = oDaSetAl.Tables("alumnos").Rows(i) : dgvFiltroAlumno.Rows.Add()
dgvFiltroAlumno.Item(0, i).Value = oDaFila("no_control")
dgvFiltroAlumno.Item(1, i).Value = oDaFila("nom_alumno")
dgvFiltroAlumno.Item(2, i).Value = oDaFila("especialidad") : Next

151

SISTEMA DE CONTROL ESCOLAR UNITAM

Else : btnIrCardex.Enabled = False : End If


Catch exc As Exception : MessageBox.Show(exc.Message) :

End Try :

End Sub

Cdigo del Botn Cerrar


El siguiente cdigo cierra el formulario.
Private Sub btnCerrar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnCerrar.Clic : Close()
End Sub

Cdigo del Botn Cardex


Private Sub btnIrCardex_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnIrCardex.Clic : Dim posf As Integer

Se le asignan los valores a una variable para generar el reporte.


If dgvFiltroAlumno.Rows.Count > 0 Then : posf = dgvFiltroAlumno.CurrentRow.Index
fnc = dgvFiltroAlumno.Item(0, posf).Value : fnom = dgvFiltroAlumno.Item(1, posf).Value
fcar = dgvFiltroAlumno.Item(2, posf).Value

Se manda llamar al formulario FrmCardexAlumno.


Dim cardex As New FrmCardexAlumno :
cardex.Show()
Else : MessageBox.Show("No hay datos para mostrar el Cardex del alumno", "Sistema de Control
Escolar") : End If
End Sub

Se hacen validaciones sobre el combo indicado para que no deje espacios en


blanco ni caracteres solo le permita seleccionar.
Private Sub cbFiltro_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles cbFiltro.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If
End Sub

Se hacen validaciones sobre el combo indicado para que cambie su valor


dependiendo la seleccin que se realice.
Private Sub cbFiltro_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cbFiltro.SelectedIndexChanged
If cbFiltro.SelectedIndex = 0 Then : lbFiltro.Text = "No. de Control:" : Else
lbFiltro.Text = "Nombre, Apellido:" : End If : txtFiltro.Focus()
End Sub : End Class

Formulario Cardex
El siguiente formulario muestra el resultado de la bsqueda realizada en el
formulario Bsqueda-Alumno-Cardex.
Est compuesto por:
Tipo
Form
Button
Button
GroupBox
Label
Label
Label
Label
Label

Nombre
FrmCardexAlumno
btnCerrar
btnReporte
gboxAlumno
lbCarrera
Label3
lbNombre
Label2
lbNoControl

Descripcin
Formulario que muestra el cardex del alumno
Muestra el botn Cerrar
Muestra el botn Reporte
Muetra el grupo Datos del alumno
Muestra la carrera
Muestra en la etiqueta Carrera:
Muestra el nombre del alumno
Muestra en la etiqueta Nombre:
Muestra el No. Control

152

SISTEMA DE CONTROL ESCOLAR UNITAM

Label
Label
DataGridView
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn

Label1
LbTitulo
dgvCardex
Clave

Muestra en la etiqueta No. de Control:


Muestra el titulo del formulario
Muestra el cardex del alumno
Muestra la columna Clave

Materia

Muestra la columna Materia

Parcial1

Muestra la columna 1er. Par.

Parcial2

Muestra la columna 2do. Par

Ordinario

Muestra la columna Ord

Final

Muestra la columna Final

Extra

Muestra la columna Extra

Especial

Muestra la columna Esp.

Finalgral

Muestra la columna F.Gral

Recursar

Muestra la columna Rec.

Semestre

Muestra la columna Semestre.

Al inicio del formulario se muestra el siguiente cdigo


Se importan las libreras a utilizar.
Imports System.Data.Odbc : Imports vb = Microsoft.VisualBasic
Imports CrystalDecisions.CrystalReports.Engine : Imports CrystalDecisions.Shared

Se inicializa la clase.
Public Class FrmCardexAlumno

Se declaran las variables que se van a utilizar.


Dim oDataAd, oDaMaterias, oDaCardex As OdbcDataAdapter

153

SISTEMA DE CONTROL ESCOLAR UNITAM

Dim oDaSet, oDsMaterias, oDsCardex As DataSet


Dim oDaRow, oDrMaterias, oDrMatQuedo As DataRow
Dim tabla, numVal, tipocal, mcf, mcex, mces, mcre, iSql, lesem, semletras, lsopt As String
Dim i, b, s, q, noMat, res, cquedo, z, squedo, c, optNum As Integer
Dim oRptPrueba As New rptCardex
Private Sub FrmCardexAlumno_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load

Se le asignan valores a las variables.


lbNoControl.Text = fnc : lbNombre.Text = fnom : lbCarrera.Text = fcar : optNum = 0

Se manda a llamar la siguiente funcin.


SabeCarrera()

Se hace una consulta en la tabla materias validado por lo seleccionado en


lbCarrera.
oDaMaterias = New OdbcDataAdapter("Select * from materias where carrera='" & lbCarrera.Text & "'",
ModConexion.oConexion) : oDsMaterias = New DataSet
oDaMaterias.Fill(oDsMaterias, "materias") : For i = 1 To 15

Se realiza otra consulta a partir del valor de la variable tabla y del nmero de
control.
oDataAd = New OdbcDataAdapter("select * from " & tabla & i & " where no_control='" &
lbNoControl.Text & "'", ModConexion.oConexion) : oDaSet = New DataSet
Try : oDataAd.Fill(oDaSet, "cardex")
oDaRow = oDaSet.Tables("cardex").Rows(0) : Catch ex As Exception
cquedo = I : Exit For
End Try : If oDaSet.Tables("cardex").Rows.Count > 0 Then
AgregaMaterias() :
End If
Next
For z = cquedo To 15 : Dim opt, opCon As Integer : Dim clv, nomM As String
opt = 0 : opCon = 0 : For c = 0 To oDsMaterias.Tables("materias").Rows.Count - 1
oDrMatQuedo = oDsMaterias.Tables("materias").Rows(c)
If z = oDrMatQuedo("semestre") Then : clv = oDrMatQuedo("clave")
nomM = UCase(oDrMatQuedo("nombre")) : If oDrMatQuedo("optativa") <> "" Then
opCon = 1 : End If : If opt = 0 Then : If opCon = 1 Then
opt = +1 : optNum += 1 : LetSemOpta() : clv = ""
nomM = "OPTATIVA " & lsopt : End If
dgvCardex.Rows.Add()

Se pasan los valores a los parametros que se declararon anteriormente y que se


van a utilizar para mostrar la informacin en el reporte.
dgvCardex.Item(0, squedo).Value = clv : dgvCardex.Item(1, squedo).Value = nomM
dgvCardex.Item(2, squedo).Value = "" : dgvCardex.Item(3, squedo).Value = ""
dgvCardex.Item(4, squedo).Value = "" : dgvCardex.Item(5, squedo).Value = ""
dgvCardex.Item(6, squedo).Value = "" : dgvCardex.Item(7, squedo).Value = ""
dgvCardex.Item(8, squedo).Value = "" : dgvCardex.Item(9, squedo).Value = ""
dgvCardex.Item(10, squedo).Value = z : squedo += 1 : End If : End If
Next : Next
End Sub

Funcin que se utiliza para igualar los nmeros del semestre seleccionado a
nmeros romanos.
Sub LetSemOpta()
If optNum = 1 Then : lsopt = "I" : ElseIf optNum = 2 Then : lsopt = "II"
ElseIf optNum = 3 Then : lsopt = "III" : ElseIf optNum = 4 Then : lsopt = "IV"
ElseIf optNum = 5 Then : lsopt = "V" : ElseIf optNum = 6 Then : lsopt = "VI"
ElseIf optNum = 7 Then : lsopt = "VII" : ElseIf optNum = 8 Then : lsopt = "VIII"
End If
End Sub

154

SISTEMA DE CONTROL ESCOLAR UNITAM

La siguiente funcin agrega materias y los muestra en el datarow.


Sub AgregaMaterias()
noMat = 0 : For q = 1 To 12 : Try
If Not IsDBNull(oDaRow("clave_m" & q)) And oDaRow("clave_m" & q) <> "" Then
noMat += 1 :
End If : Catch ex As Exception : Exit For : End Try
Next
For b = 1 To noMat : For q = 0 To oDsMaterias.Tables("materias").Rows.Count - 1
oDrMaterias = oDsMaterias.Tables("materias").Rows(q)
If oDrMaterias("clave") = oDaRow("clave_m" & b) Then
If i = oDrMaterias("semestre") Then : dgvCardex.Rows.Add()
SacaCalificacion() : dgvCardex.Item(0, s).Value = oDrMaterias("clave")
dgvCardex.Item(1, s).Value = UCase(oDrMaterias("nombre"))
dgvCardex.Item(2, s).Value = oDaRow("cal1p_" & b)
dgvCardex.Item(3, s).Value = oDaRow("cal2p_" & b)
dgvCardex.Item(4, s).Value = oDaRow("calor_" & b)
dgvCardex.Item(5, s).Value = oDaRow("prom" & b)
dgvCardex.Item(6, s).Value = mcex : dgvCardex.Item(7, s).Value = mces
dgvCardex.Item(8, s).Value = mcf : dgvCardex.Item(9, s).Value = mcre
dgvCardex.Item(10, s).Value = i : s += 1 : squedo = s
If oDrMaterias("optativa") <> "" Then : optNum += 1 : End If
End If : End If : Next : Next : End Sub
Sub SacaCalificacion()
Dim ti, ta, tc As Integer : Dim cc, lc As String : numVal = "" : tipocal = ""

Se recorre todas las claves para buscar y sacar la calificacin referente a esa
materia.
If Not IsDBNull(oDaRow("ext" & b)) Then
tc = Len(oDaRow("ext" & b)) : For ti = 1 To tc
cc = Mid(oDaRow("ext" & b), ti, 1) : If Char.IsNumber(cc) Then : ta += 1 : End If
Next

Se verifica que tipo de calificacin es y los separa, si es extraordinario, especial o


una calificacin normal.
If tc = ta Then : If lbCarrera.Text <> "PREPARATORIA" Then
If oDaRow("ext" & b) < 7 Then : numVal = "NP"
Else : numVal = oDaRow("ext" & b)
End If : Else : If oDaRow("ext" & b) < 6 Then
numVal = "NP" : Else : numVal = oDaRow("ext" & b)
End If : End If : tipocal = "final" : Else
lc = vb.Right(oDaRow("ext" & b), tc - ta) : If lc = "E" Then
numVal = vb.Left(oDaRow("ext" & b), 1) : tipocal = "extra"
ElseIf lc = "ES" Then : numVal = vb.Left(oDaRow("ext" & b), 1)
tipocal = "esp" : ElseIf lc = "R" Then : numVal = vb.Left(oDaRow("ext" & b), 1)
tipocal = "rec" : End If : End If

Pasar los valores a mostrar segun el tipo de calificacin.


If tipocal = "final" Then : mcf = numVa l : mcex = " " : mces = " " : mcre = " "
ElseIf tipocal = "extra" Then : mcf = numVal : mcex = numVal : mces = " " : mcre = " "
ElseIf tipocal = "esp" Then : mcf = numVal : mces = numVal : mcre = " "
If lbCarrera.Text = "PREPARATORIA" Then : mcex = "5" : Else : mcex = "6"
End If : ElseIf tipocal = "rec" Then : If lbCarrera.Text = "PREPARATORIA" Then
mcex = "5" : mcf = "5" : mces = "5" : mcre = numVal : Else
mcex = "6" : mcf = "6" : mces = "6" : mcre = numVal : End If
End If : Else : mcf = " " : mcex = " " : mces = " " : mcre = " " : End If
End Sub

Se le dan valores a la variable tabla de acuerdo a la especialidad seleccionada en


el cbCarrera.
Sub SabeCarrera()
If lbCarrera.Text = "PREPARATORIA" Then : tabla = "preparatoria"
ElseIf lbCarrera.Text = "LICENCIATURA EN ADMINISTRACION" Then
tabla = "administracion"

155

SISTEMA DE CONTROL ESCOLAR UNITAM

ElseIf lbCarrera.Text = "LICENCIATURA EN DERECHO" Then


tabla = "derecho"
ElseIf lbCarrera.Text = "LICENCIATURA EN SISTEMAS COMPUTACIONALES" Then
tabla = "sistemas"
ElseIf lbCarrera.Text = "LICENCIATURA EN CONTADURA" Then
tabla = "Contadura"
ElseIf lbCarrera.Text = "LICENCIATURA EN CIENCIAS DE LA EDUCACION SUPERIOR" Then :
= "educacion"
ElseIf lbCarrera.Text = "LICENCIATURA EN COMUNICACION Y PERIODISMO" Then
tabla = "comunicacion" : End If : End Sub

tabla

Cdigo del Botn Reporte


Private Sub btnReporte_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnReporte.Clic : If dgvCardex.Rows.Count > 0 Then

Se manda a llamar la funcin CreaReporte().


CreaReporte()

Se declaran las variables para realizar la consulta.


Dim Formulario As New FrmVisorReportes
Formulario.crvReportesVisor.ReportSource = oRptPrueba : Formulario.Show()
Else : MessageBox.Show("No hay datos que mostrar", "Sistema de Control Escolar")
End If : End Sub
Private Sub CreaReporte()

Se realiza una consulta en la tabla cardex para checar si contiene informacin.


oDaCardex = New OdbcDataAdapter("Select * From cardex", ModConexion.oConexion)
oDsCardex = New DataSet : oDaCardex.Fill(oDsCardex, "bcardex")
ModConexion.oConexion.Open()

Si el resultado de la busqueda es que la tabla contiene datos se realiza una


instruccin para eliminar completamente los datos de esa tabla por que se van a
insertar nuevos datos.
If oDsCardex.Tables("bcardex").Rows.Count > 0 Then : iSql = "Delete from cardex"
Dim oComand As New OdbcCommand(iSql, ModConexion.oConexion)
res = oComand.ExecuteNonQuery : End If

Se le asignan los valores a una variable.


Dim w As Integer
Dim no, clave, materia, p1, p2, ord, final, extra, esp, finalgral, recursa, sem As String
For w = 0 To dgvCardex.Rows.Count 1 : no = w + 1
clave = dgvCardex.Rows(w).Cells(0).Value()
materia = dgvCardex.Rows(w).Cells(1).Value()
If Not IsDBNull(dgvCardex.Rows(w).Cells(2).Value()) Then
p1 = dgvCardex.Rows(w).Cells(2).Value() : Else : p1 = " "
End If : If Not IsDBNull(dgvCardex.Rows(w).Cells(3).Value()) Then
p2 = dgvCardex.Rows(w).Cells(3).Value() : Else : p2 = " "
End If : If Not IsDBNull(dgvCardex.Rows(w).Cells(4).Value()) Then
ord = dgvCardex.Rows(w).Cells(4).Value() : Else : ord = " "
End If : If Not IsDBNull(dgvCardex.Rows(w).Cells(5).Value()) Then
final = dgvCardex.Rows(w).Cells(5).Value() : Else : final = " "
End If : extra = dgvCardex.Rows(w).Cells(6).Value()
esp = dgvCardex.Rows(w).Cells(7).Value()
finalgral = dgvCardex.Rows(w).Cells(8).Value()
recursa = dgvCardex.Rows(w).Cells(9).Value()
lesem = dgvCardex.Rows(w).Cells(10).Value()

Se implementa una funcin donde se igualan los nmeros con letras.


LetrasSemestre() : sem = semletras

Se insertan los valores a la base de datos por alumno.


iSql = "Insert Into cardex " & _

156

SISTEMA DE CONTROL ESCOLAR UNITAM

"values('" & no & "','" & clave & "','" & materia & "','" & p1 & "','" & p2 & "','" & ord & "','" & final & "','" & extra &
"','" & esp & "','" & finalgral & "','" & recursa & "','" & sem & "')"
Dim oComand As New OdbcCommand(iSql, ModConexion.oConexion)
res = oComand.ExecuteNonQuery : Next : ModConexion.oConexion.Close()
Dim pvValoresParametros As New ParameterValues()
Dim parCar, parNoControl, parAlumno, parClaveCar As New ParameterDiscreteValue()

Se pasan los valores a los parametros que se declararon anteriormente y que se


van a utilizar para mostrar la informacin en el reporte.
parCar.Value = lbCarrera.Text : parNoControl.Value = lbNoControl.Text
parAlumno.Value = lbNombre.Text : parClaveCar.Value = "EF45FG45GG"

Los parametros se agregan y se relacionan con los parametros creados en el


reporte.
pvValoresParametros.Add(parCar)
oRptPrueba.DataDefinition.ParameterFields("carrera").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parNoControl)
oRptPrueba.DataDefinition.ParameterFields("nocontrol").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parAlumno)
oRptPrueba.DataDefinition.ParameterFields("alumno").ApplyCurrentValues(pvValoresParametros)
pvValoresParametros.Add(parClaveCar)
oRptPrueba.DataDefinition.ParameterFields("clavecarrera").ApplyCurrentValues(pvValoresParametros) :
End Sub

Formulario Materias
El siguiente formulario permite dar de alta materias.
Est compuesto por:
Tipo
Form
Label
Button
Button
Button
Button
Button
Button
GroupBox
Label
Button
Button
Button
Button
Button
GroupBox
ComboBox
ComboBox
Label

Nombre
FrmCapMaterias
lbTitulo
btnEliminar
btnConsultas
btnCerrar
btnModificar
btnGuardar
btnCancelar
GroupBox2
lbNumRegistro
btnAnterior
btnSiguiente
btnPrimero
btnUltimo
btnNuevo
GroupBox1
CbSeriacin
cbOptativa
Label10

TextBox
Label
TextBox
ComboBox
ComboBox
Label
Label
TextBox
Label

txtnfasis
Label8
txtClave
cbCarrera
cbSemestre
Label7
Label1
txtCreditos
Label4

Descripcin
Formulario que permite dar de alta materias
Muestra el nombre del formulario
Muestra el botn Eliminar
Muestra el botn Consultar
Muestra el botn Cerrar
Muestra el botn Modificar
Muestra el botn Guardar
Muestra el botn Cancelar
Muestra el grupo Controles
Muestra en la etiqueta numRegistro
Muestra el botn Anterior
Muestra el botn Siguiente
Muestra el botn Primero
Muestra el botn Ultimo
Muestra el botn Nuevo
Muestra el grupo Datos de la Materia
Muestra el combo Seriacin
Muestra el combo Optativa
Muestra en la etiqueta Escriba el nombre del
nfasis
Muestra la caja de texto nfasis
Muestra en la etiqueta nfasis:
Muestra la caja de texto Clave
Muestra el combo Carrera
Muestra el combo Semestre
Muestra en la etiqueta Tipo de Materia:
Muestra en la etiqueta Clave Materia:
Muestra la caja de texto Creditos
Muestra en la etiqueta Carrera:

157

SISTEMA DE CONTROL ESCOLAR UNITAM

Label
TextBox
Label
Label
Label

Label6
txtNombre
Label2
Label3
Label5

Muestra en la etiqueta Seriacin:


Muestra la caja de texto Nombre
Muestra en la etiqueta Nombre:
Muestra en la etiqueta Semestre:
Muestra en la etiqueta Creditos:

Al inicio del formulario se muestra el siguiente cdigo


Se importan las libreras a utilizar.
Imports System.Data.Odbc

Se inicializa la clase.
Public Class FrmCapMaterias

Se declaran las variables que se van a utilizar.


Dim oDa, oDaSerie As OdbcDataAdapter : Dim oDt As DataTable
Dim oDr, oDrSerie, oDrClaveExiste As DataRow : Dim oDs, oDsSerie As DataSet
Dim pos, p, san, axion, i, car As Integer : Dim iSql, cred, eSQl As String
Dim limon, limpenfa, clavegral As String

Se
validan los campos para que los datos insertados se muestren en
maysculas.
Private Sub FrmCapMaterias_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Cargar() : txtClave.CharacterCasing = CharacterCasing.Upper
End Sub : Sub Cargar()

Funcin que sirve para consultar todas las materias y mostrar la que se encuentra
en 1ra posicin.
Try : oDa = New OdbcDataAdapter("select * From materias Order By carrera",
ModConexion.oConexion)
oDs = New DataSet : ModConexion.oConexion.Open()
oDa.Fill(oDs, "materias") :
ModConexion.oConexion.Close()
pos = 0 : CargarDatos() : Catch exc As Exception : MessageBox.Show(exc.Message)
End Try : End Sub

Esta funcin muestra los datos en las cajas de texto, en la posicin que se indica.
Private Sub CargarDatos() : Try : oDr = oDs.Tables("materias").Rows(pos)
txtClave.Text = oDr("clave") : cbCarrera.Text = oDr("carrera")
txtNombre.Text = oDr("nombre") : cbSemestre.Text = oDr("semestre")
txtCreditos.Text = oDr("creditos") : If IsDBNull(oDr("seriacin")) Then
cbSeriacin.Text = "Ninguno" : ElseIf oDr("seriacin") = "" Then
cbSeriacin.Text = "Ninguno" : Else : cbSeriacin.Text = oDr("seriacin") : End If

158

SISTEMA DE CONTROL ESCOLAR UNITAM

If oDr("optativa") Like "Optativa*" = True Then


cbOptativa.Text = oDr("optativa") : Else : cbOptativa.Text = "Normal"
End If : If Not IsDBNull(oDr("nfasis")) Then
txtnfasis.Text = oDr("nfasis") : Else : txtnfasis.Text = ""
End If : lbNumRegistro.Text = "Registro: " & pos + 1 & " de " & oDs.Tables("materias").Rows.Count :
txtCreditos.Enabled = False
Catch exc As Exception :
MessageBox.Show(exc.Message)
End Try : End Sub

Cdigo del Botn Nuevo


El siguiente cdigo genera un nuevo registro en la tabla docentes.
Private Sub btnNuevo_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnNuevo.Clic : axion = 1 : LimpiaTxt() : Habilita()
lbNumRegistro.Text = "Nuevo registro: " & oDs.Tables("materias").Rows.Count + 1
txtClave.Focus() : btnNuevo.Enabled = False : btnGuardar.Enabled = True
btnModificar.Enabled = False : btnCancelar.Enabled = True
btnConsultas.Enabled = False : btnCerrar.Enabled = False
btnEliminar.Enabled = False : DeshabilitaControles() : End Sub

La siguiente funcin deshabilita los campos indicados.


Private Sub Deshabilita() : txtClave.Enabled = False : txtNombre.Enabled = False
cbSemestre.Enabled = False : cbCarrera.Enabled = False
txtCreditos.Enabled = False : cbSeriacin.Enabled = False
cbOptativa.Enabled = False : txtnfasis.Enabled = False
End Sub

La siguiente funcin limpia los campos indicados.


Sub LimpiaTxt() : txtClave.Text = "" : txtNombre.Text = ""
cbCarrera.Text = "Elija una carrera" : cbSemestre.Text = "1"
txtCreditos.Text = "" : cbSeriacin.Text = "Ninguno"
cbOptativa.Text = "Normal" : txtnfasis.Text = ""
End Sub

La siguiente funcin habilita los campos indicados


Sub Habilita() : txtClave.Enabled = True : txtNombre.Enabled = True
cbSemestre.Enabled = True : cbCarrera.Enabled = True
txtCreditos.Enabled = True : cbSeriacin.Enabled = True
cbOptativa.Enabled = True : txtnfasis.Enabled = True
End Sub

Cdigo del Botn Cancelar


El siguiente cdigo se utiliza para regresar al formulario a su estado inicial
Private Sub btnCancelar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnCancelar.Clic
HabilitaControles() : Deshabilita() : btnNuevo.Enabled = True : btnGuardar.Enabled = False
btnModificar.Enabled = True : btnCancelar.Enabled = False : btnCerrar.Enabled = True
btnConsultas.Enabled = True : btnEliminar.Enabled = True : btnConsultas.Text = "Consulta"
Cargar() : car = 0 : End Sub

Se valida para que el campo que se indica no acepte espacios, nmeros y signos.
Private Sub txtClave_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtClave.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If
If Not Char.IsLetter(e.KeyChar) And (e.KeyChar = ChrW(Keys.Back)) = False _
And Not e.KeyChar = ChrW(Keys.Space) And Not Char.IsNumber(e.KeyChar) Then
e.KeyChar = Chr(0) : End If : If Len(txtClave.Text) = 0 Then : If e.KeyChar = " " Then
e.KeyChar = Chr(0) : End If : End If
End Sub

Se validan los campos para que no acepten ciertos signos.


If e.KeyChar = "" Or e.KeyChar = "" Then
e.KeyChar = Chr(0) : End If

159

SISTEMA DE CONTROL ESCOLAR UNITAM

If e.KeyChar = "," Or e.KeyChar = "" Or e.KeyChar = "-" _


Or e.KeyChar = "!" Or e.KeyChar = "" Or e.KeyChar = "$" Or e.KeyChar = "%" Or e.KeyChar = "&" _
Or e.KeyChar = "/" Or e.KeyChar = "(" Or e.KeyChar = ")" Or e.KeyChar = "=" Or e.KeyChar = "?" _
Or e.KeyChar = "" Or e.KeyChar = "" Or e.KeyChar = "" Or e.KeyChar = ";" Or e.KeyChar = ":" _
Or e.KeyChar = "+" Or e.KeyChar = "_" Or e.KeyChar = "" Or e.KeyChar = "" _
Or e.KeyChar = "'" Or e.KeyChar = "|" Or e.KeyChar = "#" Or e.KeyChar = "@" Or e.KeyChar = "" _
Or e.KeyChar = "~" Or e.KeyChar = "" Or e.KeyChar = "[" Or e.KeyChar = "]" Or e.KeyChar = "{" _
Or e.KeyChar = "}" Or e.KeyChar = "^" Or e.KeyChar = "*" Or e.KeyChar = "" Then
e.KeyChar = Chr(0)
End If : End Sub

Se valida para que el campo que se indica no acepte espacios, signos ni letras
solo nmeros.
Private Sub txtCreditos_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtCreditos.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If e.KeyChar.IsNumber(e.KeyChar) Then : e.Handled = False
ElseIf e.KeyChar.IsControl(e.KeyChar) Then : e.Handled = False
Else : e.Handled = True : End If : If e.KeyChar = ChrW(Keys.Space) = True Then
e.KeyChar = Chr(0) : End If
End Sub

Se valida para que el campo que se indica no acepte espacios ni signos.


Private Sub txtSeriacin_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) : If e.KeyChar = ChrW(Keys.Enter) Then
e.Handled = True : SendKeys.Send("{TAB}") : End If : End Sub

Se valida para que el campo que se indica no acepte espacios, nmeros y signos.
Private Sub txtnfasis_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtnfasis.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If Len(txtnfasis.Text) = 0 Then : If e.KeyChar = " " Then : e.KeyChar = Chr(0)
End If : End If : If Not e.KeyChar = "." Then :
e.KeyChar = Chr(0)
End If : If Not Char.IsLetter(e.KeyChar) And (e.KeyChar = ChrW(Keys.Back)) = False And Not
e.KeyChar = ChrW(Keys.Space) Then : e.KeyChar = Chr(0) : End If : End Sub

Se valida para que el campo que se indica no acepte espacios ni se pueda


escribir sobre el.
Private Sub cbSemestre_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cbSemestre.SelectedIndexChanged : CargaClavesSeriacin()
End Sub

La siguiente funcin carga las claves de las materias de un semestre anterior en


la la especialidad y semestre indicado.
Private Sub CargaClavesSeriacin() : Try : cbSeriacin.Items.Clear() : If cbSemestre.SelectedIndex >= 1
Then : san = cbSemestre.SelectedItem - 1
oDaSerie = New OdbcDataAdapter("select clave from materias where semestre=" & san & " and
carrera='" + cbCarrera.Text + "'", ModConexion.oConexion)
oDsSerie = New DataSet : ModConexion.oConexion.Open()
oDaSerie.Fill(oDsSerie, "claves") : ModConexion.oConexion.Close()
cbSeriacin.Items.Add("Ninguno")
For p = 0 To oDsSerie.Tables("claves").Rows.Count - 1
oDrSerie = oDsSerie.Tables("claves").Rows(p) : Seriacin.Items.Add(oDrSerie("clave"))
Next : End If : Catch exc As Exception :
MessageBox.Show(exc.Message)
End Try : End Sub

Cdigo del Botn Guardar


Private Sub btnGuardar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnGuardar.Clic

El siguiente cdigo valida si se han insertado los datos completos.


If axion = 1 Then : If txtClave.Text = "" Then
MessageBox.Show("Ingrese una clave para la materia", "Sistema de Control Escolar - Unitam")

160

SISTEMA DE CONTROL ESCOLAR UNITAM

txtClave.Focus() : ElseIf cbCarrera.Text = "Elija una carrera" Then


MessageBox.Show("Por favor, elija una carrera", "Sistema de Control Escolar - Unitam")
cbCarrera.Focus() : ElseIf txtNombre.Text = "" Then
MessageBox.Show("Ingrese el nombre de la materias", "Sistema de Control Escolar - Unitam")
txtNombre.Focus() : ElseIf txtCreditos.Text = "" Then
MessageBox.Show("Ingrese los creditos para esta materia", "Sistema de Control Escolar")
txtCreditos.Focus() : Else :
Dim n, exs As Integer
For n = 0 To oDs.Tables("materias").Rows.Count - 1
oDrClaveExiste = oDs.Tables("materias").Rows(n)
If txtClave.Text = oDrClaveExiste("clave") Then : exs = 1 : Exit For : Else : exs = 0
End If : Next : If exs = 0 Then : Dim ser, optas As String
If cbOptativa.Text = "Normal" Then : optas = "" : Else
optas = cbOptativa.Text : End If : If cbSeriacin.Text = "Ninguno" Then
ser = "" : Else : ser = cbSeriacin.Text
End If : limon = RTrim(txtNombre.Text) : limpenfa = RTrim(txtnfasis.Text)

Se insertan los datos a la tabla materias.


iSql = "Insert Into materias (clave,nombre,carrera,semestre,creditos,seriacin,optativa,nfasis) "
&_
"values ('" + RTrim(txtClave.Text) + "','" + limon + "','" + cbCarrera.Text + "','" + cbSemestre.Text +
"','" + txtCreditos.Text + "','" & ser & "','" & optas & "','" + limpenfa + "')"
Dim oComando As New OdbcCommand(iSql, ModConexion.oConexion)
ModConexion.oConexion.Open() : Dim iRes As Integer = oComando.ExecuteNonQuery()
ModConexion.oConexion.Close() :
MessageBox.Show("Los datos se guardaron
correctamente", "Sistema de Control Escolar")
Cargar() : btnGuardar.Enabled = False : btnNuevo.Enabled = True
btnModificar.Enabled = True : btnCancelar.Enabled = False
btnCerrar.Enabled = True : btnConsultas.Enabled = True
btnEliminar.Enabled = True : Deshabilita() : HabilitaControles()
axion = 0 :
Else

Se valida si la clave de la materia ya existe y se manda un mensaje a pantalla.


MessageBox.Show("La clave " & txtClave.Text & " ya existe, ingrese una nueva clave",
"Sistema de Control Escolar") : txtClave.Text = "" : txtClave.Focus() : End If
End If : ElseIf axion = 2 Then : If txtClave.Text = "" Then
MessageBox.Show("Ingrese una clave para la materia", "Sistema de Control Escolar")
txtClave.Focus() : Exit Sub : ElseIf cbCarrera.Text = "Elija una carrera" Then
MessageBox.Show("Por favor, elija una carrera", "Sistema de Control Escolar - Unitam")
cbCarrera.Focus() : Exit Sub : ElseIf txtNombre.Text = "" Then
MessageBox.Show("Ingrese el nombre de la materias", "Sistema de Control Escolar - Unitam")
txtNombre.Focus() : Exit Sub : ElseIf txtCreditos.Text = "" Then
MessageBox.Show("Ingrese los creditos para esta materia", "Sistema de Control Escolar")
txtCreditos.Focus() : Exit Sub : End If : Dim p, exis As Integer
For p = 0 To oDs.Tables("materias").Rows.Count - 1
oDrClaveExiste = oDs.Tables("materias").Rows(p)
If txtClave.Text = oDrClaveExiste("clave") Then
exis = 1 : Exit For : Else : exis = 0
End If : Next : If exis = 1 And clavegral <> txtClave.Text Then
MessageBox.Show("La clave " & txtClave.Text & " ya existe, ingrese una nueva clave", "Sistema de
Control Escolar") : txtClave.Text = "" : txtClave.Focus() : Exit Sub : End If

Se manda un mensaje de confirmacin al guardar los datos.


If MessageBox.Show("Esta seguro de guardar los cambios realizados?", "Sistema de Control
Escolar - Unitam", MessageBoxButentonces.YesNo, _
MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
Dim clv, nom, car, sem, cre, serie, opt, enf As String
clv = txtClave.Text : nom = RTrim(txtNombre.Text) : car = cbCarrera.Text
sem = cbSemestre.Text : cre = txtCreditos.Text : serie = cbSeriacin.Text
If cbOptativa.Text = "Normal" Then : cbOptativa.Text = "" : End If
opt = cbOptativa.Text : enf = RTrim(txtnfasis.Text)
iSql = "Update materias Set clave='" & clv & "' ,nombre='" & nom & "',carrera='" & car &
"',semestre='" + sem + "',creditos='" & cre & "',seriacin='" & serie & "',optativa='" & opt & "' ,nfasis='" & enf &
"' where clave='" & clavegral & "'"

161

SISTEMA DE CONTROL ESCOLAR UNITAM

Dim oComando As New OdbcCommand(iSql, ModConexion.oConexion)


ModConexion.oConexion.Open()
Dim iResul As Integer = oComando.ExecuteNonQuery
ModConexion.oConexion.Close() : MessageBox.Show("Los datos han sido modificados
correctamente", "Sistema de Control Escolar - Unitam")
btnGuardar.Enabled = False : btnNuevo.Enabled = True
btnModificar.Enabled = True : btnCancelar.Enabled = False
btnCerrar.Enabled = True : btnConsultas.Enabled = True
btnEliminar.Enabled = True : Cargar() : Deshabilita() : HabilitaControles()
axion = 0 : End If : End If : End Sub

Cdigo del Botn Modificar


El siguiente cdigo habilita unos componentes del formulario y deshabila a otros.
Private Sub btnModificar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnModificar.Clic
axion = 2 : Habilita() : txtClave.Focus() : clavegral = txtClave.Text
DeshabilitaControles() : btnNuevo.Enabled = False : btnGuardar.Enabled = True
btnModificar.Enabled = False : btnCancelar.Enabled = True : btnCerrar.Enabled = False
btnConsultas.Enabled = False : btnEliminar.Enabled = False : If cbSeriacin.Text = "" Then
cbSeriacin.Text = "Ninguno" : End If : cred = txtCreditos.Text : End Sub

Cdigo del Botn Consulta


El siguiente cdigo se utiliza para realizar una consulta sobre la tabla materias.
Private Sub btnConsultas_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnConsultas.Clic
If btnConsultas.Text = "Consulta" Then : LimpiaTxt() : DeshabilitaControles()
txtClave.Enabled = True : txtClave.Focus() : btnNuevo.Enabled = False
btnGuardar.Enabled = False : btnModificar.Enabled = False : btnCerrar.Enabled = False
btnCancelar.Enabled = True : btnEliminar.Enabled = False : btnConsultas.Text = "Buscar"
car = 3 :
Else

Si no se colocan datos en el campo clave se manda un mensaje de verificacin.


car = 3 : If txtClave.Text = "" Then
MessageBox.Show("Ingrese una clave para realizar la consulta", "Sistema de Control Escolar Unitam") :
txtClave.Focus()
Else : Dim df As Integer : For pos = 0 To oDs.Tables("materias").Rows.Count - 1
oDr = oDs.Tables("materias").Rows(pos)
If txtClave.Text = oDr("clave") Then : CargarDatos()
txtClave.Enabled = False :
cbCarrera.Enabled = False
df = 1 : car = 0 : Exit For : End If : Next

Si se coloc una clave incorrecta se manda un mensaje a pantalla.


If Not df = 1 Then : MessageBox.Show("La clave no existe en la Bd's, intente con otra clave",
"Sistema de Control Escolar - Unitam") : txtClave.Focus()
txtClave.Text = "" : cbCarrera.Text = "Elija una carrera"
Else : btnConsultas.Text = "Consulta" : btnNuevo.Enabled = True
btnModificar.Enabled = True : btnCerrar.Enabled = True
btnCancelar.Enabled = False : btnEliminar.Enabled = True : HabilitaControles()
End If : End If : End If : End Sub

Cdigo del Botn Eliminar


La siguiente funcin elimina el registro indicado, primero manda un mensaje de
confirmacin despus se indica el registro a eliminar de la tabla docentes.
Private Sub btnEliminar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnEliminar.Clic
If MessageBox.Show("Esta seguro de eliminar este registro?", "Sistema de Control Escolar - Unitam",
MessageBoxButentonces.YesNo, _
MessageBoxIcon.Warning) = Windows.Forms.DialogResult.Yes Then
eSQl = "Delete from materias Where clave='" + txtClave.Text + "'"
Dim oCmd As New OdbcCommand(eSQl, ModConexion.oConexion)
ModConexion.oConexion.Open()
Dim iRe As Integer = oCmd.ExecuteNonQuery
ModConexion.oConexion.Close()

162

SISTEMA DE CONTROL ESCOLAR UNITAM

MessageBox.Show("Los datos del registro: " & pos + 1 & " han sido eliminados", "Sistema de Control
Escolar - Unitam", MessageBoxButentonces.OK, MessageBoxIcon.Information) : Cargar() : End If : End
Sub : End Class

Formulario Docentes
El siguiente formulario permite dar de alta docentes.
Est compuesto por:
Tipo
Form
Label
Button
Button
Button
Button
Button
Button
GroupBox
Label
Button
Button
Button
Button
Button
GroupBox
TextBox
Label
Label
DateTimePicker

Nombre
FrmDocentes
lbTitulo
btnEliminar
btnConsultas
btnCerrar
btnModificar
btnGuardar
btnCancelar
GroupBox2
lbNumRegistro
btnAnterior
btnSiguiente
btnPrimero
btnUltimo
btnNuevo
GroupBox1
txtDomicilio
Label6
lbEdad
dtpFechaNac

Label
ComboBox
TextBox
Label
TextBox
Label
TextBox
Label
TextBox
TextBox
Label
Label

Label4
cbProfesin
txtApe_m
Label3
txtEdad
Label8
txtId
Label1
txtApe_p
txtNombre
Label2
Label5

Descripcin
Formulario que permite dar de alta docentes
Muestra el nombre del formulario
Muestra el botn Eliminar
Muestra el botn Consultar
Muestra el botn Cerrar
Muestra el botn Modificar
Muestra el botn Guardar
Muestra el botn Cancelar
Muestra el grupo Controles
Muestra en la etiqueta numRegistro
Muestra el botn Anterior
Muestra el botn Siguiente
Muestra el botn Primero
Muestra el botn Ultimo
Muestra el botn Nuevo
Muestra el grupo Datos de la Materia
Muestra el campo de texto Domicilio
Muestra en la etiqueta Domicilio:
Muestra en la etiqueta Edad:
Muestra el calendario para seleccionar la
fecha de nacimiento
Muestra en la etiqueta Fecha de Nacimiento
Muestra el combo Profesin
Muestra la caja de texto Apellido Materno
Muestra en la etiqueta Apellido Materno:
Muestra la caja de texto Edad
Muestra en la etiqueta Profesin:
Muestra la caja de texto Id
Muestra en la etiqueta Id:
Muestra la caja de texto Apellido Paterno
Muestra la caja de texto Nombre
Muestra en la etiqueta Nombre (s)
Muestra en la etiqueta Apellido Paterno

163

SISTEMA DE CONTROL ESCOLAR UNITAM

Al inicio del formulario se muestra el siguiente cdigo


Se declaran las variables que se van a utilizar.
Dim oDaDocentes As OdbcDataAdapter : Dim oDrdocentes, oDrIdExiste As DataRow
Dim oDsDocentes As DataSet : Dim pos, i, axion, car As Integer
Dim iSql, rSql, idgral As String

Se
validan los campos para que los datos insertados se muestren en
maysculas.
Private Sub FrmDocentes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
txtId.CharacterCasing = CharacterCasing.Upper : txtNombre.CharacterCasing = CharacterCasing.Upper
txtApe_p.CharacterCasing = CharacterCasing.Upper : txtApe_m.CharacterCasing =
CharacterCasing.Upper
txtDomicilio.CharacterCasing = CharacterCasing.Upper
Cargar()
End Sub

Funcin que sirve para consultar todas las materias y mostrar la que se
encuentra en 1ra posicin.
Sub Cargar()
Try : oDaDocentes = New OdbcDataAdapter("select * from docentes", ModConexion.oConexion)
oDsDocentes = New DataSet : ModConexion.oConexion.Open()
oDaDocentes.Fill(oDsDocentes, "docentes")
ModConexion.oConexion.Close()
If oDsDocentes.Tables("docentes").Rows.Count > 0 Then
If oDsDocentes.Tables("docentes").Rows.Count >= 2 Then
HabilitaControles() : Else : DeshabilitaControles() : End If
pos = 0 : CargarDatos() : Else
lbNumRegistro.Text = "No se encontraron registros"
LimpiaTxt() : DeshabilitaControles() : btnModificar.Enabled = False
btnConsultas.Enabled = False : btnEliminar.Enabled = False
End If : Catch exc As Exception : MessageBox.Show(exc.Message)
End Try : End Sub

La siguiente funcin muestra los datos en las cajas de texto, en la posicin que se
indica.
Private Sub CargarDatos() : Try
oDrdocentes = oDsDocentes.Tables("docentes").Rows(pos)
txtId.Text = oDrdocentes("id") : txtNombre.Text = oDrdocentes("nombre")
txtApe_p.Text = oDrdocentes("ape_p") : txtApe_m.Text = oDrdocentes("ape_m")
cbProfesin.Text = oDrdocentes("profesin")
dtpFechaNac.Text = oDrdocentes("f_nacimiento")
txtDomicilio.Text = oDrdocentes("domicilio")
lbNumRegistro.Text = "Registro: " & pos + 1 & " de " & oDsDocentes.Tables("docentes").Rows.Count :
Catch exc As Exception
MessageBox.Show(exc.Message) : End Try

164

SISTEMA DE CONTROL ESCOLAR UNITAM

End Sub

Cdigo del Botn Nuevo


El siguiente cdigo genera un nuevo registro en la tabla docentes.
Private Sub btnNuevo_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnNuevo.Clic
axion = 1 : LimpiaTxt() : Habilita()
lbNumRegistro.Text = "Nuevo registro: " & oDsDocentes.Tables("docentes").Rows.Count + 1
txtId.Focus() : btnNuevo.Enabled = False : btnGuardar.Enabled = True
btnModificar.Enabled = False : btnCancelar.Enabled = True : btnConsultas.Enabled = False
btnCerrar.Enabled = False : btnEliminar.Enabled = False : DeshabilitaControles()
End Sub

Cdigo del Botn Cancelar


El siguiente cdigo se utiliza para regresar al formulario a su estado inicial.
Private Sub btnCancelar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnCancelar.Clic
HabilitaControles() : Deshabilita() : btnNuevo.Enabled = True
btnGuardar.Enabled = False : btnModificar.Enabled = True
btnCancelar.Enabled = False : btnCerrar.Enabled = True
btnConsultas.Enabled = True : btnEliminar.Enabled = True
btnConsultas.Text = "Consulta" : Cargar() : car = 0
End Sub

Cdigo del Botn Guardar


Private Sub btnGuardar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnGuardar.Clic

El siguiente cdigo valida si se han insertado los datos completos.


If axion = 1 Then : If txtId.Text = "" Then
MessageBox.Show("Ingrese un Id para el docente", "Sistema de Control Escolar")
txtId.Focus() : ElseIf txtNombre.Text = "" Then
MessageBox.Show("Introduzca el nombre del docente", "Sistema de Control Escolar")
txtNombre.Focus() : ElseIf txtApe_p.Text = "" Then
MessageBox.Show("Introduzca el apellido paterno", "Sistema de Control Escolar")
txtApe_p.Focus() : ElseIf txtApe_m.Text = "" Then
MessageBox.Show("Introduzca el apellido materno", "Sistema de Control Escolar")
txtApe_m.Focus() : ElseIf txtDomicilio.Text = "" Then
MessageBox.Show("Introduzca el domicilio del docente", "Sistema de Control Escolar")
txtDomicilio.Focus() : Else : Dim hh, existe As Integer
For hh = 0 To oDsDocentes.Tables("docentes").Rows.Count - 1
oDrIdExiste = oDsDocentes.Tables("docentes").Rows(hh)
If txtId.Text = oDrIdExiste("id") Then : existe = 1 :
Exit For
Else : existe = 0 : End If : Next : If existe = 0 Then
Dim lnom, lapep, lapem, ldom As String
lnom = RTrim(txtNombre.Text) : lapep = RTrim(txtApe_p.Text)
lapem = RTrim(txtApe_m.Text) : ldom = RTrim(txtDomicilio.Text)

Se insertan los datos a la tabla docentes.


iSql = "Insert Into docentes (id,nombre,ape_p,ape_m,profesin,f_nacimiento,domicilio) " & _
"values ('" + txtId.Text + "','" + lnom + "','" + lapep + "','" + lapem + "','" + cbProfesin.Text + "','" +
dtpFechaNac.Text + "','" + ldom + "')"
Dim oComando As New OdbcCommand(iSql, ModConexion.oConexion)
ModConexion.oConexion.Open() : Dim iRes As Integer = oComando.ExecuteNonQuery()
ModConexion.oConexion.Close()
MessageBox.Show("Los datos se guardaron correctamente", "Sistema de Control")
Cargar() : btnGuardar.Enabled = False : btnNuevo.Enabled = True
btnModificar.Enabled = True : btnCancelar.Enabled = False
btnCerrar.Enabled = True : btnConsultas.Enabled = True

165

SISTEMA DE CONTROL ESCOLAR UNITAM

btnEliminar.Enabled = True : Deshabilita() : HabilitaControles()


axion = 0 : Else : MessageBox.Show("El Id " & txtId.Text & " ya existe, ingrese un nuevo Id",
"Sistema de Control Escolar") : txtId.Text = "" :
txtId.Focus()
End If :
End If : ElseIf axion = 2 Then :
If txtId.Text = "" Then
MessageBox.Show("Ingrese un Id para el docente", "Sistema de Control Escolar")
txtId.Focus() : Exit Sub : ElseIf txtNombre.Text = "" Then
MessageBox.Show("Introduzca el nombre del docente", "Sistema de Control Escolar")
txtNombre.Focus() : Exit Sub : ElseIf txtApe_p.Text = "" Then
MessageBox.Show("Introduzca el apellido paterno", "Sistema de Control Escolar")
txtApe_p.Focus() : Exit Sub : ElseIf txtApe_m.Text = "" Then
MessageBox.Show("Introduzca el apellido materno", "Sistema de Control Escolar")
txtApe_m.Focus() : Exit Sub : ElseIf txtDomicilio.Text = "" Then
MessageBox.Show("Introduzca el domicilio del docente", "Sistema de Control Escolar")
txtDomicilio.Focus() : Exit Sub : End If : Dim hi, exist As Integer
For hi = 0 To oDsDocentes.Tables("docentes").Rows.Count - 1
oDrIdExiste = oDsDocentes.Tables("docentes").Rows(hi)
If txtId.Text = oDrIdExiste("id") Then : exist = 1 : Exit For
Else : exist = 0 : End If : Next

Se valida si la clave del docente ya existe y se manda un mensaje a pantalla.


If exist = 1 And idgral <> txtId.Text Then
MessageBox.Show("El Id: " & txtId.Text & " ya existe, ingrese un nuevo Id", "Sistema de Control
Escolar") : txtId.Text = "" : txtId.Focus() : Exit Sub
End If

Se manda un mensaje de confirmacin al guardar los datos.


If MessageBox.Show("Esta seguro de guardar los cambios realizados?", "Sistema de Control
Escolar - Unitam", MessageBoxButentonces.YesNo, _
MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
Dim id, nom, apep, apem, prof, fnac, dom As String
id = txtId.Text : nom = RTrim(txtNombre.Text) : apep = RTrim(txtApe_p.Text) : apem =
RTrim(txtApe_m.Text)
prof = cbProfesin.Text : fnac = dtpFechaNac.Text : dom = RTrim(txtDomicilio.Text)

Instruccion SQL para actualizar la base de datos.


iSql = "Update docentes Set id='" & id & "' ,nombre='" & nom & "',ape_p='" & apep & "',ape_m='" +
apem + "',profesin='" & prof & "',f_nacimiento='" & fnac & "',domicilio='" & dom & "' where id='" & idgral & "'"
Dim oComando As New OdbcCommand(iSql, ModConexion.oConexion)
ModConexion.oConexion.Open()
Dim iResul As Integer = oComando.ExecuteNonQuery
ModConexion.oConexion.Close() : MessageBox.Show("Los datos han sido actualizados
correctamente", "Sistema de Control Escolar - Unitam")
btnGuardar.Enabled = False : btnNuevo.Enabled = True
btnModificar.Enabled = True : btnCancelar.Enabled = False
btnCerrar.Enabled = True : btnConsultas.Enabled = True
btnEliminar.Enabled = True : Cargar() : Deshabilita()
HabilitaControles() : axion = 0 : End If : End If
End Sub

Cdigo del Botn Modificar


El siguiente cdigo habilita unos componentes del formulario y deshabila a otros.
Private Sub btnModificar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnModificar.Clic
axion = 2 : Habilita() : idgral = txtId.Text : txtId.Focus() : DeshabilitaControles()
btnNuevo.Enabled = False : btnGuardar.Enabled = True : btnModificar.Enabled = False
btnCancelar.Enabled = True : btnCerrar.Enabled = False : btnConsultas.Enabled = False
btnEliminar.Enabled = False
End Sub

Cdigo del Botn Eliminar


166

SISTEMA DE CONTROL ESCOLAR UNITAM

La siguiente funcin elimina el registro indicado, primero manda un mensaje de


confirmacin despus se indica el registro a eliminar de la tabla docentes.
Private Sub btnEliminar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnEliminar.Clic
If MessageBox.Show("Esta seguro de eliminar este registro?", "Sistema de Control Escolar - Unitam",
MessageBoxButentonces.YesNo, _
MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
rSql = "Delete from docentes Where id='" + txtId.Text + "'"
Dim oCmd As New OdbcCommand(rSql, ModConexion.oConexion)
ModConexion.oConexion.Open()
Dim iRe As Integer = oCmd.ExecuteNonQuery
ModConexion.oConexion.Close() : MessageBox.Show("Los datos del registro: " & pos + 1 & " han
sido eliminados", "Sistema de Control Escolar - Unitam") : Cargar() : End If
End Sub

Cdigo del Botn Consulta


El siguiente cdigo se utiliza para realizar una consulta sobre la tabla docentes.
Private Sub btnConsultas_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnConsultas.Clic
If btnConsultas.Text = "Consulta" Then
LimpiaTxt() : DeshabilitaControles() : txtId.Enabled = True
txtId.Focus() : btnNuevo.Enabled = False : btnGuardar.Enabled = False
btnModificar.Enabled = False : btnCerrar.Enabled = False
btnCancelar.Enabled = True : btnEliminar.Enabled = False
btnConsultas.Text = "Buscar" :
car = 3
Else

Si no se colocan datos en el campo id se manda un mensaje de verificacin.


:

car = 3 : If txtId.Text = "" Then


MessageBox.Show("Ingrese un Id para realizar la consulta", "Sistema de Control Escolar - Unitam")
txtId.Focus()
Else : Dim df As Integer
For pos = 0 To oDsDocentes.Tables("docentes").Rows.Count - 1
oDrdocentes = oDsDocentes.Tables("docentes").Rows(pos)
If txtId.Text = oDrdocentes("id") Then : CargarDatos()
txtId.Enabled = False : df = 1 : car = 0 :
Exit For
End If : Next

Si se coloco un id incorrecto se manda un mensaje a pantalla.


If Not df = 1 Then : MessageBox.Show("El Id: " & txtId.Text & " no existe en la Bd's, intente con
otro Id", "Sistema de Control Escolar - Unitam")
txtId.Focus() : txtId.Text = "" : Else : btnConsultas.Text = "Consulta"
btnNuevo.Enabled = True : btnModificar.Enabled = True
btnCerrar.Enabled = True : btnCancelar.Enabled = False
btnEliminar.Enabled = True : HabilitaControles()
End If : End If : End If : End Sub

La siguiente funcin obtiene la fecha y la muestra en el formato indicado.


Private Sub dtpFechaNac_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles dtpFechaNac.ValueChanged
Dim fn, fa As Date : fn = dtpFechaNac.Text : fa = Date.Now.ToString("dd/MM/yyyy")
txtEdad.Text = DateDiff(DateInterval.Year, fn, fa) & " Aos" : End Sub
End Class

167

SISTEMA DE CONTROL ESCOLAR UNITAM

Formulario Seguimiento-Datos del Alumno


El siguiente formulario se utiliza despus de haber inscrito un alumno y su objetivo
es recabar informacin concerniente a datos personales, acadmicos y clnicos
del alumno.
Est compuesto por:
Form

Tipo

Nombre
FrmSeguimiento

Label
Button
Button
Button
Button
Button
Button
Button
Button
Button
GroupBox
TextBox
TextBox
Label
Label

Label9
btnCerrar
BtnGenerar
BtnCancelar
BtnConsulta
BtnUltimo
BtnAdelante
BtnAtras
BtnPrimero
BtnModificar
GroupBox4
txtTerapeutica
txtClinico
Label29
Label2

Button
GroupBox
ComboBox
ComboBox
Label
Label
ComboBox
ComboBox
Label
Label
Label
TextBox
Label
TextBox
Label
TextBox
Label
GroupBox

BtnGuardar
GroupBox2
CbNivel_ingreso
CbArea
Label28
Label21
CbEntidad
CbMunicipio_ins
Label20
Label19
Label18
TxtLocalidad
Label17
TxtNombre_ins
Label16
TxtUltimo_nivel
Label15
GroupBox1

Descripcin
Formulario que permite obtener datos del alumno
inscrito
Muestra el nombre del formulario
Muestra el botn Cerrar
Muestra el botn Generar Curp
Muestra el botn Cancelar
Muestra el botn Consulta
Muestra el botn Ultimo
Muestra el botn Adelante
Muestra el botn Atrs
Muestra el botn Primero
Muestra el botn Modificar
Muestra el grupo Datos Clnicos
Muestra la caja d texto teraputica
Muestra la caja de texto problemas clnicos
Muestra en la etiqueta Teraputica Empleada
Muestra en la etiqueta Diagnstico o Problemas
Clnicos
Muestra el botn Guardar
Muestra el grupo Datos Acadmicos
Muestra el combo Nivel de ingreso
Muestra el combo Area
Muestra en la etiqueta Nivel de ingreso:
Muestra en la etiqueta Area de estudio
Muestra el combo entidad
Muestra el combo Municipio
Muestra en la etiqueta Entidad
Muestra en la etiqueta Municipio
Muestra en la etiqueta Localidad
Muestra la caja de texto Localidad
Muestra en la etiqueta (Nombre de la institucin)
Muestra la caja de texto Nombre de la Institucin
Muestra en la etiqueta Datos de la institucin
Muestra la caja de texto Ultimo Nivel que curs
Muestra en la etiqueta Ultimo Nivel Cursado
Muestra el grupo Datos Personales

168

SISTEMA DE CONTROL ESCOLAR UNITAM

Label
MaskedTextBox
MaskedTextBox
Label
MaskedTextBox
TextBox
Label
MaskedTextBox
Label
Label
Button
Label
Label
ComboBox
ComboBox
Label
Label
TextBox
Label
TextBox
Label
Label
ComboBox
Label
Label
Label
Label

Label7
TxtCP
TxtTelefono
Label22
mskCelular
TxtCurp
Label5
NoControl
Label4
Label3
BtnBuscar
Label14
Label13
CboEstado
CbMunicipio
Label12
Label11
TxtColonia
Label10
TxtDomicilio
Label8
Label6
Cbestado_civil
Sexo
Edad
LBLNOMBRE
nombre

Muestra en la etiqueta No. de Control


Muestra la caja de texto Cdigo Postal
Muestra la caja de texto Telefono
Muestra en la etiqueta Celular
Muestra la caja de texto Celular
Muestra la caja de texto Curp
Muestra en la etiqueta Clave CURP
Muestra la caja de texto No. de Control
Muestra en la etiqueta Sexo
Muestra en la etiqueta Edad
Muestra el botn Buscar
Muestra en la etiqueta CP
Muestra en la etiqueta Telefono
Muestra el combo estado
Muestra el combo municipio
Muestra en la etiqueta Estado
Muestra en la etiqueta Municipio
Muestra la caja de texto Colonia
Muestra en la etiqueta Colonia
Muestra la caja de texto Domicilio
Muestra en la etiqueta Domicilio
Muestra en la etiqueta Estado Civil
Muestra el combo Estado Civil
Muestra el valor del campo sexo
Muestra el valor del campo edad
Muestra en la etiqueta Nombre
Muestra el valor del campo Nombre

Al inicio del formulario se muestra el siguiente cdigo


Se importan las librerias a utilizar.
Imports SYSTEM.Data.Odbc : Imports vb = Microsoft.VisualBasic
Public Class FrmSeguimiento

En el siguiente cdigo se declaran las variables indicando su tipo de dato.


Dim oDataAdapter As OdbcDataAdapter : Dim oDataset As DataSet

169

SISTEMA DE CONTROL ESCOLAR UNITAM

Dim oDataRow, oDataRow1 As DataRow


Dim sSql, cad1, cons1, cons, cons2, fec, dia, mes, ao, c, est As String
Dim iResultado, sultado, iPosActual, num1, con1 As Integer

Cdigo del botn Buscar (Consulta)


Private Sub BtnBuscar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
BtnBuscar.Clic
Dim i As Integer = 0 : Dim P As Integer = 0

El siguiente cdigo verifica que no se deje el campo No. de control en blanco.


If NoControl.Text = "" Then : MessageBox.Show("ESCRIBA UN NMERO DE CONTROL")
Else

El siguiente cdigo verifica si el alumno se encuentra dentro de la consulta


realizada en la tabla alumnos para obtener datos del alumno.
For i = 0 To oDataset.Tables("alumnos").Rows.Count - 1
oDataRow1 = oDataset.Tables("alumnos").Rows(i)
If NoControl.Text = oDataRow1("no_control") Then : iPosActual = i
P = 1 : End If : Next
If P = 1 Then : oDataRow = oDataset.Tables("alumnos").Rows(iPosActual)
cargardatos() : Else

Si no se encuentra el alumno, se manda un mensaje a pantalla.


MessageBox.Show("NO SE ENCONTRO EL REGISTRO", "ALUMNOS", MessageBoxButtons.OK,
MessageBoxIcon.Question) : consulta() : cargardatos()
desactivar() : End If : End If : End Sub

En la siguiente funcin se activan cajas de texto y botones.


Sub activar()
Cbestado_civil.Enabled = True: TxtDomicilio.Enabled = True: TxtColonia.Enabled = True
CbMunicipio.Enabled = True: CbEstado.Enabled = True: Txttelefono.Enabled = True
TxtCP.Enabled = True: TxtUltimo_nivel.Enabled = True: TxtNombre_ins.Enabled = True
TxtLocalidad.Enabled = True: CbMunicipio_ins.Enabled = True: CbEntidad.Enabled = True
CbArea.Enabled = True: txtClinico.Enabled = True: txtTerapeutica.Enabled = True
mskCelular.Enabled = True: TxtCurp.Enabled = True : End Sub

En la siguiente funcin se desactivan cajas de texto y botones.


Sub desactivar()
BtnGenera.Visible = False: BtnGenera.Enabled = False: BtnBuscar.Visible = False
NoControl.Enabled = False: BtnConsulta.Enabled = True: Cbestado_civil.Enabled = False
TxtDomicilio.Enabled = False: TxtColonia.Enabled = False:CbMunicipio.Enabled = False
CbEstado.Enabled = False:Txttelefono.Enabled = False:TxtCP.Enabled = False
TxtUltimo_nivel.Enabled = False: TxtNombre_ins.Enabled = False: TxtLocalidad.Enabled = False:
CbMunicipio_ins.Enabled = False
CbEntidad.Enabled = False: CbArea.Enabled = False: TxtCurp.Enabled = False
txtClinico.Enabled = False: txtTerapeutica.Enabled = False: mskCelular.Enabled = False
BtnAdelante.Enabled = True: BtnAtras.Enabled = True: BtnPrimero.Enabled = True
BtnUltimo.Enabled = True: BtnGuardar.Enabled = False : End Sub

Cdigo del botn Guardar


El siguiente cdigo Verifica si algun campo quedo en blanco.
If NoControl.Text = "" Or TxtDomicilio.Text = "" Or TxtColonia.Text = "" Or Txttelefono.Text = "" Or
mskCelular.Text = "" Or TxtCP.Text = "" Or TxtNombre_ins.Text = "" Or TxtLocalidad.Text = "" Or TxtCurp.Text
= "" Then
MessageBox.Show("hay campos vacos llene los para poder continuar", "Sistema de Control Escolar Unitam") : Else

En el siguiente cdigo se manda un mensaje de verificacin a pantalla.


If MessageBox.Show("Realmente desea Guardar los Datos?", "Sistema de Control Escolar Unitam", MessageBoxButtons.YesNo, _
MessageBoxIcon.Question) = DialogResult.Yes Then

170

SISTEMA DE CONTROL ESCOLAR UNITAM

En el siguiente cdigo acualizamos los datos del alumno en la tabla datos


alumnos.
sSql = "update datos_alumno Set estado_civil='" + Cbestado_civil.Text + "',domicilio='" +
TxtDomicilio.Text + "',municipio='" + CbMunicipio.Text + "',estado='" + CbEstado.Text + "',tel='" +
Txttelefono.Text + "',cod_postal='" + TxtCP.Text + "',curp='" + TxtCurp.Text + "',ultimo_nivel_curso='" +
TxtUltimo_nivel.Text + "',nom_instituto='" + TxtNombre_ins.Text + "',localidad_instituto='" + TxtLocalidad.Text
+ "'" & _
",municipio_instituto='" + CbMunicipio_ins.Text + "',entidad_instituto='" + CbEntidad.Text +
"',diagnostico_problemas_clinicos='" + txtClinico.Text + "',terapeutica_empleada='" + txtTerapeutica.Text +
"',colonia='" + TxtColonia.Text + "',area_estudio='" + CbArea.Text + "',celular='" + mskCelular.Text + "' where
no_control ='" + NoControl.Text + "' "
Dim oComand As New OdbcCommand(sSql, ModConexion.oConexion)
ModConexion.oConexion.Open() : iResultado = oComand.ExecuteNonQuery
ModConexion.oConexion.Close()

En el siguiente cdigo se manda un mensaje de verificacin a pantalla.


MessageBox.Show("los datos han sido guardados", "Sistema de Control Escolar")
consulta() : cargardatos() :
desactivar()
End If : End If

Cdigo del botn Modificar


En el siguiente cdigo se utiliza para activar cajas de texto y poder realizar una
modificacin.
oDataRow = oDataset.Tables("alumnos").Rows(iPosActual) : cargardatos()
activar() : If TxtCurp.Text = "" Then : BtnGenera.Enabled = True
BtnGenera.Visible = True : End If : BtnAdelante.Enabled = False
BtnAtras.Enabled = False : BtnPrimero.Enabled = False
BtnUltimo.Enabled = False : BtnGuardar.Enabled = True
BtnConsulta.Enabled = False
Private Sub FrmSeguimiento_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load

El siguiente cdigo se utiliza para mostrar y guardar texto en maysculas.


TxtDomicilio.CharacterCasing = CharacterCasing.Upper
TxtUltimo_nivel.CharacterCasing = CharacterCasing.Upper
TxtNombre_ins.CharacterCasing = CharacterCasing.Upper
TxtLocalidad.CharacterCasing = CharacterCasing.Upper
txtClinico.CharacterCasing = CharacterCasing.Upper
txtTerapeutica.CharacterCasing = CharacterCasing.Upper
TxtCurp.CharacterCasing = CharacterCasing.Upper
Cbestado_civil.SelectedIndex = 0

El siguiente cdigo se utiliza para que el cursor se posicine en el campo no.


control.
NoControl.Focus() : consulta() :

cargardatos()

El siguientes cdigo verifica si se encontro informacin.


If oDataset.Tables("alumnos").Rows.Count > 0 Then : Else
MessageBox.Show("no se encontro ningun dato", "ALUMNO", MessageBoxButtons.OK,
MessageBoxIcon.Question) : NoControl.Text = "" : End If : End Sub

Funcin para cargar los datos al momento de abrir el formulario.


Sub cargardatos() : Dim mifecha As Date
Dim mes1, ao1, edad1, edad2, dia1 As Integer

En el siguiente cdigo se carga la informacin de los alumnos.


oDataRow = oDataset.Tables("alumnos").Rows(iPosActual)
NoControl.Text = oDataRow("no_control")

171

SISTEMA DE CONTROL ESCOLAR UNITAM

nombre.Text = oDataRow("nombre") & " " & oDataRow("ap_p") & " " & oDataRow("ap_m")

El siguiente cdigo se saca la edad.


mifecha = Now() : dia1 = DatePart(DateInterval.Day, mifecha)
mes1 = DatePart(DateInterval.Month, mifecha) : ao1 = DatePart(DateInterval.Year, mifecha)
paedad() : edad1 = ao1 ao : edad2 = vb.Right(edad1, 2)
If mes1 >= mes And dia1 >= dia Then : edad.Text = edad2
Else : edad.Text = edad2 1 : End If

El siguiente cdigo verifica si los datos que se obtubieron de la consulta no sean


nulos.
If IsDBNull(oDataRow("sexo")) Then : sexo.Text = ""
Else : sexo.Text = oDataRow("sexo") : End If
If IsDBNull(oDataRow("estado_civil")) Then : Cbestado_civil.Text = ""
Else : Cbestado_civil.Text = oDataRow("estado_civil") : End If
If IsDBNull(oDataRow("domicilio")) Then : TxtDomicilio.Text = "" : Else
TxtDomicilio.Text = oDataRow("domicilio") : End If
If IsDBNull(oDataRow("colonia")) Then : TxtColonia.Text = "" : Else
TxtColonia.Text = oDataRow("colonia") : End If : If IsDBNull(oDataRow("municipio")) Then
CbMunicipio.Text = "" : Else : CbMunicipio.Text = oDataRow("municipio")
End If : If IsDBNull(oDataRow("estado")) Then : CbEstado.Text = ""
Else : CbEstado.Text = oDataRow("estado") : End If
If IsDBNull(oDataRow("tel")) Then : Txttelefono.Text = "" : Else
Txttelefono.Text = oDataRow("tel") : End If : If IsDBNull(oDataRow("celular")) Then
mskCelular.Text = "" : Else : mskCelular.Text = oDataRow("celular")
End If : If IsDBNull(oDataRow("cod_postal")) Then : TxtCP.Text = ""
BtnGenera.Visible = True : Else : TxtCP.Text = oDataRow("cod_postal")
End If : If IsDBNull(oDataRow("ultimo_nivel_curso")) Then
TxtUltimo_nivel.Text = "" : Else : TxtUltimo_nivel.Text = oDataRow("ultimo_nivel_curso")
End If : If IsDBNull(oDataRow("nom_instituto")) Then : TxtNombre_ins.Text = ""
Else : TxtNombre_ins.Text = oDataRow("nom_instituto") : End If
If IsDBNull(oDataRow("localidad_instituto")) Then : TxtLocalidad.Text = ""
Else : TxtLocalidad.Text = oDataRow("localidad_instituto")
End If : If IsDBNull(oDataRow("municipio_instituto")) Then
CbMunicipio_ins.Text = "" : Else
CbMunicipio_ins.Text = oDataRow("municipio_instituto") : End If
If IsDBNull(oDataRow("entidad_instituto")) Then : CbEntidad.Text = ""
Else : CbEntidad.Text = oDataRow("entidad_instituto") : End If
If IsDBNull(oDataRow("area_estudio")) Then : CbArea.Text = "" : Else
CbArea.Text = oDataRow("area_estudio") : End If
If IsDBNull(oDataRow("diagnostico_problemas_clinicos")) Then
txtClinico.Text = "" : Else : txtClinico.Text = oDataRow("diagnostico_problemas_clinicos")
End If : If IsDBNull(oDataRow("terapeutica_empleada")) Then : txtTerapeutica.Text = ""
Else : txtTerapeutica.Text = oDataRow("terapeutica_empleada") : End If
If IsDBNull(oDataRow("curp")) Then : TxtCurp.Text = "" : Else
TxtCurp.Text = oDataRow("curp") : End If
Dim var1, var2, var3 As String : var1 = NoControl.Text : var2 = vb.Left(var1, 5)
var3 = vb.Right(var2, 3) : Label1.Text = var3

El siguiente cdigo se utiliza para sacar el nivel de ingreso.


If var3 = "BOO" Then : CbNivel_ingreso.Text = "Medio Superior"
Else : CbNivel_ingreso.Text = "Superior" : End If : BtnModificar.Enabled = True
End Sub

La siguiente funcin realiza una consulta sobre la tabla datos_alumno.


Sub consulta()
oDataAdapter = New OdbcDataAdapter("Select * From datos_alumno", ModConexion.oConexion)
Me.oDataset = New DataSet: ModConexion.oConexion.Open()
Me.oDataAdapter.Fill(oDataset, "alumnos"): ModConexion.oConexion.Close()
iPosActual = 0 : End Sub

Cdigo del botn Consulta


172

SISTEMA DE CONTROL ESCOLAR UNITAM

Private Sub BtnConsulta_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


BtnConsulta.Clic
BtnBuscar.Visible = True: NoControl.Enabled = True
NoControl.Focus(): NoControl.Text = ""
BtnAdelante.Enabled = False: BtnAtras.Enabled = False
BtnPrimero.Enabled = False: BtnUltimo.Enabled = False : End Sub

Cdigo del botn Cancelar


Private Sub BtnCancelar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
BtnCancelar.Clic : desactivar(): cargardatos() : End Sub

El siguiente cdigo se utiliza para sacar la curp .


Sub curp() : Dim letraap, letraam, letranom, p, cad, vocal, sexo1 As String
Dim num, i, con, z As Integer : con = 0 : p = oDataRow("ap_p")
num = Len(p) : For i = 1 To 5 : cad = p(i) :
z=0
If cad = "E" Or cad = "A" Or cad = "I" Or cad = "O" Or cad = "U" Then
z = 1 : con += 1 : End If : If z = 1 And con = 1 Then : vocal = cad
End If :
Next
letraap = vb.Left(oDataRow("ap_p"), 1) & vocal : letraam = vb.Left(oDataRow("ap_m"), 1)
letranom = vb.Left(oDataRow("nombre"), 1) : paedad()
If sexo.Text = "F" Then : sexo1 = "M" : Else : sexo1 = "H" : End If
num1 = 0: cons = "" : cad1 = oDataRow("ap_p"): num1 = Len(cad1)
conson(): cons2 = cons : cons = "" : cad1 = "" : cad1 = oDataRow("ap_m")
num1 = Len(cad1) : conson() : cons1 = cons : cons = ""
num1 = 0 : cad1 = "" : cad1 = oDataRow("nombre")
num1 = Len(cad1) : conson()
If cons2 = "" Then: cons2 = "X" : End If: If cons1 = "" Then: cons1 = "X": End If
estado() : TxtCurp.Text = letraap & letraam & letranom & ao & mes & dia & sexo1 & est & cons2 &
cons1 & cons : End Sub

El siguiente cdigo se utiliza para sacar la edad del alumno.


Sub paedad() : fec = oDataRow("edad") : c = vb.Left(fec, 5) : dia = vb.Left(fec, 2)
ao = vb.Right(fec, 2) : mes = vb.Right(c, 2) : End Sub

La siguiente funcin se utiliza para sacar las dos letras del estado.
Sub estado()
If CbEstado.Text = "AGUASCALIENTES" Then : est = "AS"
ElseIf CbEstado.Text = "BAJA CALIFORNIA" Then : est = "BC"
ElseIf CbEstado.Text = "BAJA CALIFORNIA SUR" Then : est = "BS"
ElseIf CbEstado.Text = "CAMPECHE" Then : est = "CC"
ElseIf CbEstado.Text = "CHIAPAS" Then : est = "CS"
ElseIf CbEstado.Text = "CHIHUAHUA" Then : est = "CH"
ElseIf CbEstado.Text = "COAHUILA" Then : est = "CL"
ElseIf CbEstado.Text = "COLIMA" Then : est = "CM"
ElseIf CbEstado.Text = "DISTRITO FEDERAL" Then : est = "DF"
ElseIf CbEstado.Text = "DURANGO" Then : est = "DG"
ElseIf CbEstado.Text = "GUANAJUATO" Then : est = "GT"
ElseIf CbEstado.Text = "GUERRERO" Then : est = "GR"
ElseIf CbEstado.Text = "HIDALGO" Then : est = "HG"
ElseIf CbEstado.Text = "JALISCO" Then : est = "JC"
ElseIf CbEstado.Text = "MEXICO" Then : est = "MC"
ElseIf CbEstado.Text = "MICHOACAN" Then : est = "MN"
ElseIf CbEstado.Text = "MORELOS" Then : est = "MS"
ElseIf CbEstado.Text = "NAYARIT" Then : est = "NT"
ElseIf CbEstado.Text = "NUEVO LEON" Then : est = "NL"
ElseIf CbEstado.Text = "OAXACA" Then : est = "OC"
ElseIf CbEstado.Text = "PUEBLA" Then : est = "PL"
ElseIf CbEstado.Text = "QUERETARO" Then : est = "QT"
ElseIf CbEstado.Text = "QUINTANA ROO" Then : est = "QR"
ElseIf CbEstado.Text = "SAN LUIS POTOSI" Then : est = "SP"
ElseIf CbEstado.Text = "SINALOA" Then : est = "SL"
ElseIf CbEstado.Text = "SONORA" Then : est = "SR"
ElseIf CbEstado.Text = "TABASCO" Then : est = "TC"
ElseIf CbEstado.Text = "TAMAULIPAS" Then : est = "TS"

173

SISTEMA DE CONTROL ESCOLAR UNITAM

ElseIf CbEstado.Text = "TLAXCALA" Then : est = "TL"


ElseIf CbEstado.Text = "VERACRUZ" Then : est = "VZ"
ElseIf CbEstado.Text = "YUCATN" Then : est = "YN"
ElseIf CbEstado.Text = "ZACATECAS" Then : est = "ZS" : End If
End Sub
Sub conson() : Dim z, x, z1, palen As Integer : Dim cad2 As String
con1 = 0 : For x = 1 To num1 1 : z = 0 : cad2 = cad1(x)
If cad2 = "A" Or cad2 = "E" Or cad2 = "I" Or cad2 = "O" Or cad2 = "U" Then
Else : z1 = 1: con1 = 1 :
End If
If z1 = 1 Then : palen = Len(cons) : If palen = 0 Then
cons = cad2 : End If : End If : Next : End Sub

Cdigo del botn Genera


Private Sub BtnGenera_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
BtnGenera.Clic : curp() : End Sub

Formulario Modificar Contrasea


El siguiente formulario se utiliza para cambiar la contrasea del administrador.
Est compuesto por:
Form

Tipo

Nombre
FrmModificaPass

Label
Button
Button
GroupBox
Button
Label
Label
TextBox

lbTitulo
btnCancelar
btnCerrar
GroupBox2
btnGuardar
Label4
Label3
txtConfirmaPass

TextBox

txtNuevoPass

GroupBox
Button
TextBox
Label
TexBox
Label

GroupBox1
btnContinuar
txtPassword
Label1
txtUsuario
Label2

Descripcin
Formulario
que
permite
cambiar
la
contrasea del administrador.
Muestra el titulo del formulario
Muestra el botn Cancelar
Muestra el botn Cerrar
Muestra el grupo Datos Nueva Contrasea
Muestra el botn Guardar
Muestra la etiqueta Confirmar Contrasea
Muestra la etiqueta Nueva Contrasea
Muestra el cuadro de texto Confirma
Contrasea
Muestra el cuadro de texto Nueva
Contrasea
Muestra el grupo Datos del usuario
Muestra el botn Continuar
Muestra el cuadro de texto Contrasea
Muestra en la etiqueta Nombre del Usuario:
Muestra el cuadro de texto Usuario
Muestra en la etiqueta Cotrasea:

174

SISTEMA DE CONTROL ESCOLAR UNITAM

Al inicio del formulario se muestra el siguiente cdigo


Se declaran las variables a importar.
Imports System.Data.Odbc : Public Class FrmModificaPass

Se declaran algunas variables indicando su tipo.


Dim DaUsu As OdbcDataAdapter : Dim oDsUsu As DataSet
Dim oDrUsuario As DataRow : Dim pass, usu, pSql As String

Se valida el siguiente campo indicando que no se acepten espacios.


Private Sub txtConfirmaPass_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtConfirmaPass.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If Not Char.IsNumber(e.KeyChar) And Not Char.IsLetter(e.KeyChar) And Not e.KeyChar =
ChrW(Keys.Back) And e.KeyChar = ChrW(Keys.Space) Then
e.KeyChar = Chr(0) : End If : End Sub

Cdigo del botn Continuar


Se vlidan que se hayan insertado todos los datos.
Private Sub btnContinuar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnContinuar.Clic
usu = RTrim(txtUsuario.Text): pass = RTrim(txtPassword.Text) : If usu = "" Then
MessageBox.Show("Por favor introduzca el nombre de Usuario", "Sistema de Control Escolar Unitam") : txtUsuario.Focus() : ElseIf pass = "" Then
MessageBox.Show("Por favor introduzca la Contrasea", "Sistema de Control Escolar - Unitam") :
txtPassword.Focus() : Else : ModConexion.oConexion.Open()

Se realiza una consulta sobre la tabla acceso.


DaUsu = New OdbcDataAdapter("Select * from acceso where usuario='" & usu & "'",
ModConexion.oConexion) : oDsUsu = New DataSet : DaUsu.Fill(oDsUsu, "usu")
ModConexion.oConexion.Close() : If oDsUsu.Tables("usu").Rows.Count = 1 Then
oDrUsuario = oDsUsu.Tables("usu").Rows(0) : If pass = oDrUsuario("contrasena") Then
txtUsuario.Enabled = False: txtPassword.Enabled = False
txtNuevoPass.Enabled = True: txtConfirmaPass.Enabled = True
btnGuardar.Enabled = True: btnContinuar.Enabled = False
btnCerrar.Enabled = False: btnCancelar.Enabled = True : Else
MessageBox.Show("La contrasea es incorrecta", "Sistema de Control Escolar")
txtPassword.Text = "": txtPassword.Focus() : End If : Else
MessageBox.Show("Este usuario no existe", "Sistema de Control Escolar - Unitam")
txtUsuario.Text = "" : txtPassword.Text = "" : txtUsuario.Focus() : End If
End If : End Sub

175

SISTEMA DE CONTROL ESCOLAR UNITAM

Cdigo del Botn Cancelar


Se cambian propiedades a los elementos y se dejan a su estado inicial.
Private Sub btnCancelar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnCancelar.Clic : txtUsuario.Text = "" : txtPassword.Text = ""
txtNuevoPass.Text = "" : txtConfirmaPass.Text = ""
txtUsuario.Enabled = True : txtPassword.Enabled = True
txtNuevoPass.Enabled = False : txtConfirmaPass.Enabled = False
btnGuardar.Enabled = False : btnCancelar.Enabled = False
btnContinuar.Enabled = True : btnCerrar.Enabled = True
txtUsuario.Focus() : End Sub

Cdigo del Botn Guardar


Se valida que se hayan introducido los datos y se confirman para una mayor
seguridad.
Private Sub btnGuardar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnGuardar.Clic : If txtNuevoPass.Text = "" Then
MessageBox.Show("Introduzca la nueva Contrasea", "Sistema de Control Escolar - Unitam") :
ElseIf txtConfirmaPass.Text = "" Then
MessageBox.Show("Introduzca la contrasea de Confirmacin", "Sistema de Control Escolar Unitam") : Else

Se actualiza la tabla acceso con los datos insertados.


If txtNuevoPass.Text = txtConfirmaPass.Text Then
pSql = "Update acceso Set contrasena='" & txtNuevoPass.Text & "' where usuario='" &
txtUsuario.Text & "'" : Dim oComando As New OdbcCommand(pSql, ModConexion.oConexion) :
ModConexion.oConexion.Open()
Dim iRes As Integer = oComando.ExecuteNonQuery()
ModConexion.oConexion.Close()

Se manda un mensaje a pantalla indicanco que la contrasea ha sido modificada.


MessageBox.Show("La contrasea ha sido modificada correctamente", "Sistema de Control
Escolar - Unitam") : txtUsuario.Text = "" : txtPassword.Text = ""
txtNuevoPass.Text = "" : txtConfirmaPass.Text = ""
txtUsuario.Enabled = True : txtPassword.Enabled = True
txtNuevoPass.Enabled = False : txtConfirmaPass.Enabled = False
btnGuardar.Enabled = False : btnCancelar.Enabled = False
btnContinuar.Enabled = True : btnCerrar.Enabled = True : txtUsuario.Focus()
Else : MessageBox.Show("La contrasea de confimacion no coincide con la nueva contrasea",
"Sistema de Control Escolar - Unitam") : txtConfirmaPass.Text = ""
txtConfirmaPass.Focus() : End If : End If : End Sub : End Class

Formulario Ajustes Grupo


El siguiente formulario permite dar de alta la cantidad de alumnos que se debe de
aceptar por grupo.
Est compuesto por:
Tipo
Form

Nombre
FrmAjustesGrupo

Button
Button
Label

btnCancelar
btnCerrar
Label1

Button
TextBox

btnModificar
txCantGrupo

Descripcin
Formulario que permite dar de alta la cantidad alumnos
por grupo
Muestra el botn Cancelar
Muestra el botn Cerrar
Muestra la etiqueta Cantidad de alumnos x grupo
permitidos
Muestra el botn Modificar
Muestra el cuadro de texto Cantidad x Grupo

176

SISTEMA DE CONTROL ESCOLAR UNITAM

Al inicio del formulario se muestra el siguiente cdigo


Se importan las librerias a utilizar.
Imports System.Data.Odbc

Se inicializa la clase.
Public Class FrmAjustesGrupo.

Se declaran algunas variables definiendo su tipo.


Dim adapter As OdbcDataAdapter : Dim dset As DataSet : Dim row As DataRow
Dim inSql As String

Se ejecuta la funcin CargaCantidadGrupo.


Private Sub FrmAjustesGrupo_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load : CargaCantidadGrupo() : End Sub

La siguiente funcin realiza una busqueda en la tabla acceso y obtiene el valor del
campo catn_grupo.
Sub CargaCantidadGrupo() : adapter = New OdbcDataAdapter("select cant_grupo from acceso",
ModConexion.oConexion) : dset = New DataSet
adapter.Fill(dset, "grupo") : If dset.Tables("grupo").Rows.Count > 0 Then
row = dset.Tables("grupo").Rows(0) : txtCantGrupo.Text = row("cant_grupo")
End If : End Sub

Cdigo del boton Modificar


Regresa los valores de los componentes al estado inicial del formulario.
Private Sub btnModificar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnModificar.Clic : If btnModificar.Text = "Modificar" Then
txtCantGrupo.Enabled = True : txtCantGrupo.Focus()
btnModificar.Text = "Guardar" : btnCerrar.Enabled = False
btnCancelar.Enabled = True :
Else

Se manda un mensaje a pantalla cuando se deja el campo en blanco.


If txtCantGrupo.Text = "" Then : MessageBox.Show("Introduzca la cantidad de alumnos por grupo",
"Sistema de Control Escolar") : txtCantGrupo.Focus() : Else

Se actualizan los datos en el campo cant_grupo.


inSql = "Update acceso Set cant_grupo='" & txtCantGrupo.Text & "'"
Dim oComando As New OdbcCommand(inSql, ModConexion.oConexion)
ModConexion.oConexion.Open()
Dim iResul As Integer = oComando.ExecuteNonQuery
ModConexion.oConexion.Close() : MessageBox.Show("El valor ha sido modificado
correctamente", "Sistema de Control Escolar - Unitam")
txtCantGrupo.Enabled = False : btnModificar.Text = "Modificar"
btnCerrar.Enabled = True : btnCancelar.Enabled = False
End If : End If : End Sub

Codigo de Boton Cancelar


177

SISTEMA DE CONTROL ESCOLAR UNITAM

El siguiente cdigo cambia los valores de ciertos componentes.


Private Sub btnCancelar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnCancelar.Clic : Me.txtCantGrupo.Enabled = False : btnCerrar.Enabled = True
btnCancelar.Enabled = False : btnModificar.Text = "Modificar"
CargaCantidadGrupo() : End Sub
End Class

Formulario Concentrado de Calificaciones


El siguiente formulario se utiliza para generar un concentrado de calificaciones.
Est compuesto por:
Tipo
Button
Label
Button
Button
Label

Nombre
FrmConcentrado
s
btnSalir
Label9
btnImprimir
btnFiltrar
Label5

Label

Label3

Label
DataGridView
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView

Label1
dgvConcentrado
No_control

Formulario
de
Calificaciones
Muestra el botn Salir
Muestra en la etiqueta Datos Alumno
Muestra el botn Imprimir
Muestra el botn Filtrar
Muestra en la etiqueta Calificacion
Especial
Muestra en la etiqueta Calificacion
Extraordinaria
Muestra en la etiqueta Calificacion Final
Muestra las calificaciones
Muestra la columna no. control

Alumno

Muestra la columna Alumno

Sexo

Muestra la columna Sexo

Form

Descripcin
de
Concentrado

178

SISTEMA DE CONTROL ESCOLAR UNITAM

TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn
DataGridView
TextBoxColumn

Cf1

Muestra la calificacion 1

Cf2

Muestra la calificacion 2

Cf3

Muestra la calificacion 3

Cf4

Muestra la calificacion 4

Cf5

Muestra la calificacion 5

Cf6

Muestra la calificacion 6

Cf7

Muestra la calificacion 7

Cf8

Muestra la calificacion 8

Promfinal

Muestra el promedio final

Cext1

Muestra la calificacion extraordinaria 1

Cext2

Muestra la calificacion extraordinaria 2

Cext3

Muestra la calificacion extraordinaria 3

Cext4

Muestra la calificacion extraordinaria 4

Cext5

Muestra la calificacion extraordinaria 5

Cext6

Muestra la calificacion extraordinaria 6

Cext7

Muestra la calificacion extraordinaria 7

Cext8

Muestra la calificacion extraordinaria 8

Cesp1

Muestra la calificacion especial 1

Cesp2

Muestra la calificacion especial 2

Cesp3

Muestra la calificacion especial 3

Cesp4

Muestra la calificacion especial 4

Cesp5

Muestra la calificacion especial 5

Cesp6

Muestra la calificacion especial 6

Cesp7

Muestra la calificacion especial 7


179

SISTEMA DE CONTROL ESCOLAR UNITAM

DataGridView
TextBoxColumn
Label
GroupBox
Label
ComboBox
Label
ComboBox
ComboBox
Label
Label
ComboBox
Label
ComboBox

Cesp8

Muestra la calificacion especial 8

lbTitulo
gboxCarrera
Label8
cbTurno
Label12
cbGrupo
cbCarrera
Label2
Label4
cbSemestre
Label6
cbCicloEscolar

Muestra el titulo del formulario


Muestra el grupo Datos
Muestra en la etiqueta Turno
Muestra el combo turno
Muestra en la etiqueta grupo
Muestra el combo grupo
Muestra el combo carrera
Muestra en la etiqueta carrera
Muestra en la etiqueta semestre
Muestra el combo semestre
Muestra en la etiqueta ciclo escolar
Muestra el combo ciclo escolar

Se importan las libreras a utilizar.


Imports System.Data.Odbc : Imports vb = Microsoft.VisualBasic
Imports CrystalDecisions.Shared : Imports CrystalDecisions.CrystalReports.Engine

Se inicializa la clase.
Public Class FrmConcentrados

Se declaran algunas variables indicando su tipo.


Dim oDaCiclos, oDaConcentra As OdbcDataAdapter
Dim oDsCiclos, oDsConcentra As DataSet : Dim oDrCiclos, oDrConcentra As DataRow
Dim i, c, x, ax, noM, noF, total As Integer
Dim tabla, irSql, letrasCiclo, semLetras As String
Dim cfi1, cx1, cs1, cfi2, cx2, cs2, cfi3, cx3, cs3, cfi4, cx4, cs4, cfi5, cx5, cs5, cfi6, cx6, cs6, cfi7, cx7, cs7,
cfi8, cx8, cs8 As String

Se inicializa el combo cbCarrera.


Private Sub FrmConcentrados_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load : cbCarrera.Focus() : ax = 0 : End Sub

Funcin que se utiliza para obtener los ciclos escolares para que nada mas
aparescan una vez los que esten repetidos.
Private Sub FiltraDatos() : cbCicloEscolar.Items.Clear() : Especialidad()

180

SISTEMA DE CONTROL ESCOLAR UNITAM

oDaCiclos = New OdbcDataAdapter("Select * from " & tabla & cbSemestre.Text & " ",
ModConexion.oConexion) : oDsCiclos = New DataSet : Try
oDaCiclos.Fill(oDsCiclos, "ciclos") : Catch ex As Exception
MessageBox.Show(ex.Message) : Exit Sub : End Try
If oDsCiclos.Tables("ciclos").Rows.Count > 0 Then
For i = 0 To oDsCiclos.Tables("ciclos").Rows.Count 1 : x = 0
oDrCiclos = oDsCiclos.Tables("ciclos").Rows(i) : If i = 0 Then
cbCicloEscolar.Items.Add(oDrCiclos("ciclo_escolar"))
cbCicloEscolar.Text = oDrCiclos("ciclo_escolar") : Else
For c = 0 To cbCicloEscolar.Items.Count - 1
If cbCicloEscolar.Items(c).ToString = oDrCiclos("ciclo_escolar") Then : x += 1
End If : Next : If x = 0 Then : cbCicloEscolar.Items.Add(oDrCiclos("ciclo_escolar"))
End If : End If : Next : End If : ax = 1 : CargarGrupos() : End Sub

Se le dan valores a la variable tabla de acuerdo a la especialidad seleccionada en


el cbCarrera.
Sub Especialidad() : If cbCarrera.Text = "PREPARATORIA" Then : tabla = "preparatoria"
ElseIf cbCarrera.Text = "LICENCIATURA EN ADMINISTRACION" Then
tabla = "administracion" : ElseIf cbCarrera.Text = "LICENCIATURA EN DERECHO" Then
tabla = "derecho" : ElseIf cbCarrera.Text = "LICENCIATURA EN SISTEMAS COMPUTACIONALES" Then :
tabla = "sistemas"
ElseIf cbCarrera.Text = "LICENCIATURA EN CONTADURIA" Then : tabla = "contaduria"
ElseIf cbCarrera.Text = "LICENCIATURA EN CIENCIAS DE LA EDUCACION SUPERIOR" Then : tabla =
"educacion" : ElseIf cbCarrera.Text = "LICENCIATURA EN COMUNICACION Y PERIODISMO" Then : tabla
= "comunicacion" : End If : End Sub

Se hacen validaciones sobre el combo indicado para que implemente la funcin


FiltraDatos().
Private Sub cbCarrera_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cbCarrera.SelectedIndexChanged : FiltraDatos() : End Sub

Carga todo los grupos que se encuentren para mostrarlos en el combo.


Private Sub CargarGrupos() : cbGrupo.Items.Clear()
For i = 0 To oDsCiclos.Tables("ciclos").Rows.Count 1 : x = 0
oDrCiclos = oDsCiclos.Tables("ciclos").Rows(i) : If i = 0 Then
cbGrupo.Items.Add(oDrCiclos("grupo")): cbGrupo.Text = oDrCiclos("grupo")
Else : For c = 0 To cbGrupo.Items.Count - 1
If cbGrupo.Items(c).ToString = oDrCiclos("grupo") Then: x += 1: End If
Next : If x = 0 Then : cbGrupo.Items.Add(oDrCiclos("grupo"))
End If: End If: Next : End Sub

El siguiente cdigo pasa los valores de la consulta a la columna que corresponde


en el datagridview.
Private Sub ClavesCabecera()
dgvConcentrado.Columns.Item(3).HeaderText = "Clave " & oDrConcentra("clave_m1")
dgvConcentrado.Columns.Item(4).HeaderText = "Clave " & oDrConcentra("clave_m2")
dgvConcentrado.Columns.Item(5).HeaderText = "Clave " & oDrConcentra("clave_m3")
dgvConcentrado.Columns.Item(6).HeaderText = "Clave " & oDrConcentra("clave_m4")
dgvConcentrado.Columns.Item(7).HeaderText = "Clave " & oDrConcentra("clave_m5")
dgvConcentrado.Columns.Item(8).HeaderText = "Clave " & oDrConcentra("clave_m6")
dgvConcentrado.Columns.Item(9).HeaderText = "Clave " & oDrConcentra("clave_m7")
dgvConcentrado.Columns.Item(10).HeaderText = "Clave " '& oDrConcentra("clave_m8")
dgvConcentrado.Columns.Item(12).HeaderText = "Clave " & oDrConcentra("clave_m1")
dgvConcentrado.Columns.Item(13).HeaderText = "Clave " & oDrConcentra("clave_m2")
dgvConcentrado.Columns.Item(14).HeaderText = "Clave " & oDrConcentra("clave_m3")
dgvConcentrado.Columns.Item(15).HeaderText = "Clave " & oDrConcentra("clave_m4")
dgvConcentrado.Columns.Item(16).HeaderText = "Clave " & oDrConcentra("clave_m5")
dgvConcentrado.Columns.Item(17).HeaderText = "Clave " & oDrConcentra("clave_m6")
dgvConcentrado.Columns.Item(18).HeaderText = "Clave " & oDrConcentra("clave_m7")
dgvConcentrado.Columns.Item(19).HeaderText = "Clave " '& oDrConcentra("clave_m8")
dgvConcentrado.Columns.Item(20).HeaderText = "Clave " & oDrConcentra("clave_m1")
dgvConcentrado.Columns.Item(21).HeaderText = "Clave " & oDrConcentra("clave_m2")
dgvConcentrado.Columns.Item(22).HeaderText = "Clave " & oDrConcentra("clave_m3")
dgvConcentrado.Columns.Item(23).HeaderText = "Clave " & oDrConcentra("clave_m4")

181

SISTEMA DE CONTROL ESCOLAR UNITAM

dgvConcentrado.Columns.Item(24).HeaderText = "Clave " & oDrConcentra("clave_m5")


dgvConcentrado.Columns.Item(25).HeaderText = "Clave " & oDrConcentra("clave_m6")
dgvConcentrado.Columns.Item(26).HeaderText = "Clave " & oDrConcentra("clave_m7")
dgvConcentrado.Columns.Item(27).HeaderText = "Clave " '& oDrConcentra("clave_m8")
End Sub

Cdigo del botn Filtrar


El siguiente cdigo valida que se hayan seleccionado datos luego se realiza una
consulta en la tabla de la carrera y semestre que seleccion donde ciclo escolar y
grupo sean iguales a los antes indicados.
Private Sub btnFiltrar_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnFiltrar.Clic
Dim a, d As Integer : If cbCarrera.Text = "Elija una carrera" Then
MessageBox.Show("Por favor elija una carrera para continuar", "Sistema de Control Escolar",
MessageBoxButtons.OK, MessageBoxIcon.Information)
cbCarrera.Focus() : Exit Sub : End If
oDaConcentra = New OdbcDataAdapter("Select * from " & tabla & cbSemestre.Text & " Inner Join
alumnos On " & tabla & cbSemestre.Text & ".no_control=alumnos.no_control where " & tabla &
cbSemestre.Text & ".ciclo_escolar='" & cbCicloEscolar.Text & "' and " & tabla & cbSemestre.Text & ".grupo='"
& cbGrupo.Text & "'", ModConexion.oConexion)
oDsConcentra = New DataSet : Try : oDaConcentra.Fill(oDsConcentra, "concentrado")
d = 0 : dgvConcentrado.Rows.Clear() : Catch ex As Exception
MessageBox.Show(ex.Message) : Exit Sub : End Try
If oDsConcentra.Tables("concentrado").Rows.Count > 0 Then
oDrConcentra = oDsConcentra.Tables("concentrado").Rows(0) : ClavesCabecera()
noM = 0 : noF = 0 : For a = 0 To oDsConcentra.Tables("concentrado").Rows.Count - 1
oDrConcentra = oDsConcentra.Tables("concentrado").Rows(a) : AnalizaCalificacion()
If oDrConcentra("sexo") = "M" Then : noM += 1
ElseIf oDrConcentra("sexo") = "F" Then : noF += 1 : End If
dgvConcentrado.Rows.Add() : dgvConcentrado.Item(0, d).Value = oDrConcentra("no_control")
dgvConcentrado.Item(1, d).Value = oDrConcentra("nom_alumno")
dgvConcentrado.Item(2, d).Value = oDrConcentra("sexo")
dgvConcentrado.Item(3, d).Value = cfi1 : dgvConcentrado.Item(4, d).Value = cfi2
dgvConcentrado.Item(5, d).Value = cfi3 : dgvConcentrado.Item(6, d).Value = cfi4
dgvConcentrado.Item(7, d).Value = cfi5 : dgvConcentrado.Item(8, d).Value = cfi6
dgvConcentrado.Item(9, d).Value = cfi7 : dgvConcentrado.Item(10, d).Value = "" 'cfi8
dgvConcentrado.Item(11, d).Value = oDrConcentra("promgral")
dgvConcentrado.Item(12, d).Value = cx1 : dgvConcentrado.Item(13, d).Value = cx2
dgvConcentrado.Item(14, d).Value = cx3 : dgvConcentrado.Item(15, d).Value = cx4
dgvConcentrado.Item(16, d).Value = cx5 : dgvConcentrado.Item(17, d).Value = cx6
dgvConcentrado.Item(18, d).Value = cx7 : dgvConcentrado.Item(19, d).Value = ""
dgvConcentrado.Item(20, d).Value = cs1 : dgvConcentrado.Item(21, d).Value = cs2
dgvConcentrado.Item(22, d).Value = cs3 : dgvConcentrado.Item(23, d).Value = cs4
dgvConcentrado.Item(24, d).Value = cs5 : dgvConcentrado.Item(25, d).Value = cs6
dgvConcentrado.Item(26, d).Value = cs7 : dgvConcentrado.Item(27, d).Value = ""
d += 1 : Next : Else
MessageBox.Show("No hay informacin en este semestre, ciclo escolar, grupo", "Sistema de Control
Escolar", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If : End Sub

La siguiente funcin lee los datos en la carrera seleccionada y valida si son de


Extraordinario o Especial.
Private Sub AnalizaCalificacion() : Dim cad As String : Dim z, conta As Integer
conta = 0 : If Not IsDBNull(oDrConcentra("ext1")) Then
For z = 1 To Len(oDrConcentra("ext1"))
cad = Mid(oDrConcentra("ext1"), z, 1) : If Char.IsNumber(cad) Then : conta += 1 : End If : Next : If
oDrConcentra("ext1") = "6" And cbCarrera.Text <> "PREPARATORIA" Then
cfi1 = "6" : cx1 = "6" : cs1 = "6R"
ElseIf oDrConcentra("ext1") = "5" And cbCarrera.Text = "PREPARATORIA" Then
cfi1 = "5" : cx1 = "5" : cs1 = "5R"
ElseIf vb.Left(oDrConcentra("ext1"), 2) = "10" And (vb.Right(oDrConcentra("ext1"), 1) = "E" Or
vb.Right(oDrConcentra("ext1"), 2) = "ES") Then
If vb.Right(oDrConcentra("ext1"), 1) = "E" Then

182

SISTEMA DE CONTROL ESCOLAR UNITAM

cfi1 = "NP" : cx1 = vb.Left(oDrConcentra("ext1"), 2) : cs1 = " "


ElseIf vb.Right(oDrConcentra("ext1"), 2) = "ES" Then
cfi1 = "NP" : cx1 = "NP" : cs1 = vb.Left(oDrConcentra("ext1"), 2)
End If : Else : If conta = Len(oDrConcentra("ext1")) Then
cfi1 = oDrConcentra("ext1") : cx1 = "" : cs1 = "" : Else
If vb.Right(oDrConcentra("ext1"), 1) = "E" Then
cfi1 = "NP" : cx1 = vb.Left(oDrConcentra("ext1"), 1) : cs1 = " "
ElseIf vb.Right(oDrConcentra("ext1"), 2) = "ES" Then
cfi1 = "NP" : cx1 = "NP" : cs1 = vb.Left(oDrConcentra("ext1"), 1)
End If : End If : End If : Else : cfi1 = "" : cx1 = "" : cs1 = ""
End If : conta = 0 : If Not IsDBNull(oDrConcentra("ext2")) Then
For z = 1 To Len(oDrConcentra("ext2"))
cad = Mid(oDrConcentra("ext2"), z, 1) : If Char.IsNumber(cad) Then : conta += 1 : End If : Next :
If oDrConcentra("ext2") = "6" And cbCarrera.Text <> "PREPARATORIA" Then
cfi2 = "6" : cx2 = "6" : cs2 = "6R"
ElseIf oDrConcentra("ext2") = "5" And cbCarrera.Text = "PREPARATORIA" Then
cfi2 = "5" : cx2 = "5" : cs2 = "5R"
ElseIf vb.Left(oDrConcentra("ext2"), 2) = "10" And (vb.Right(oDrConcentra("ext2"), 1) = "E" Or
vb.Right(oDrConcentra("ext2"), 2) = "ES") Then
If vb.Right(oDrConcentra("ext2"), 1) = "E" Then
cfi2 = "NP" : cx2 = vb.Left(oDrConcentra("ext2"), 2) : cs2 = " "
ElseIf vb.Right(oDrConcentra("ext2"), 2) = "ES" Then
cfi2 = "NP" : cx2 = "NP" : cs2 = vb.Left(oDrConcentra("ext2"), 2)
End If : Else : If conta = Len(oDrConcentra("ext2")) Then
cfi2 = oDrConcentra("ext2") : cx2 = "" : cs2 = ""
Else : If vb.Right(oDrConcentra("ext2"), 1) = "E" Then
cfi2 = "NP" : cx2 = vb.Left(oDrConcentra("ext1"), 1) : cs2 = " "
ElseIf vb.Right(oDrConcentra("ext2"), 2) = "ES" Then
cfi2 = "NP" : cx2 = "NP" : cs2 = vb.Left(oDrConcentra("ext2"), 1)
End If : End If : End If : Else : cfi2 = "" : cx2 = "" : cs2 = ""
End If : conta = 0 : If Not IsDBNull(oDrConcentra("ext3")) Then
For z = 1 To Len(oDrConcentra("ext3")) : cad = Mid(oDrConcentra("ext3"), z, 1) : If
Char.IsNumber(cad) Then : conta += 1 : End If : Next
If oDrConcentra("ext3") = "6" And cbCarrera.Text <> "PREPARATORIA" Then
cfi3 = "6" : cx3 = "6" : cs3 = "6R"
ElseIf oDrConcentra("ext3") = "5" And cbCarrera.Text = "PREPARATORIA" Then
cfi3 = "5" : cx3 = "5" : cs3 = "5R"
ElseIf vb.Left(oDrConcentra("ext3"), 2) = "10" And (vb.Right(oDrConcentra("ext3"), 1) = "E" Or
vb.Right(oDrConcentra("ext3"), 2) = "ES") Then
If vb.Right(oDrConcentra("ext3"), 1) = "E" Then
cfi3 = "NP" : cx3 = vb.Left(oDrConcentra("ext3"), 2) : cs3 = " "
ElseIf vb.Right(oDrConcentra("ext3"), 2) = "ES" Then
cfi3 = "NP" : cx3 = "NP" : cs3 = vb.Left(oDrConcentra("ext3"), 2)
End If : Else : If conta = Len(oDrConcentra("ext3")) Then
cfi3 = oDrConcentra("ext3") : cx3 = "" : cs3 = "" : Else
If vb.Right(oDrConcentra("ext3"), 1) = "E" Then
cfi3 = "NP" : cx3 = vb.Left(oDrConcentra("ext3"), 1) : cs3 = " "
ElseIf vb.Right(oDrConcentra("ext3"), 2) = "ES" Then
cfi3 = "NP" : cx3 = "NP" : cs3 = vb.Left(oDrConcentra("ext3"), 1)
End If : End If : End If : Else : cfi3 = "" : cx3 = "" : cs3 = ""
End If : conta = 0 : If Not IsDBNull(oDrConcentra("ext4")) Then
For z = 1 To Len(oDrConcentra("ext4"))
cad = Mid(oDrConcentra("ext4"), z, 1) : If Char.IsNumber(cad) Then : conta += 1 : End If : Next : If
oDrConcentra("ext4") = "6" And cbCarrera.Text <> "PREPARATORIA" Then
cfi4 = "6" : cx4 = "6" : cs4 = "6R"
ElseIf oDrConcentra("ext4") = "5" And cbCarrera.Text = "PREPARATORIA" Then
cfi4 = "5" : cx4 = "5" : cs4 = "5R"
ElseIf vb.Left(oDrConcentra("ext4"), 2) = "10" And (vb.Right(oDrConcentra("ext4"), 1) = "E" Or
vb.Right(oDrConcentra("ext4"), 2) = "ES") Then
If vb.Right(oDrConcentra("ext4"), 1) = "E" Then
cfi4 = "NP" : cx4 = vb.Left(oDrConcentra("ext4"), 2) : cs4 = " "
ElseIf vb.Right(oDrConcentra("ext4"), 2) = "ES" Then
cfi4 = "NP" : cx4 = "NP" : cs4 = vb.Left(oDrConcentra("ext4"), 2)
End If : Else : If conta = Len(oDrConcentra("ext4")) Then
cfi4 = oDrConcentra("ext4") : cx4 = "" : cs4 = "" : Else
If vb.Right(oDrConcentra("ext4"), 1) = "E" Then
cfi4 = "NP" : cx4 = vb.Left(oDrConcentra("ext4"), 1) : cs4 = " "

183

SISTEMA DE CONTROL ESCOLAR UNITAM

ElseIf vb.Right(oDrConcentra("ext4"), 2) = "ES" Then


cfi4 = "NP" : cx4 = "NP" : cs4 = vb.Left(oDrConcentra("ext4"), 1)
End If : End If : End If : Else : cfi4 = "" : cx4 = "" : cs4 = ""
End If : conta = 0 : If Not IsDBNull(oDrConcentra("ext5")) Then
For z = 1 To Len(oDrConcentra("ext5"))
cad = Mid(oDrConcentra("ext5"), z, 1) : If Char.IsNumber(cad) Then : conta += 1 : End If :
Next :
If oDrConcentra("ext5") = "6" And cbCarrera.Text <> "PREPARATORIA" Then
cfi5 = "6" : cx5 = "6" : cs5 = "6R"
ElseIf oDrConcentra("ext5") = "5" And cbCarrera.Text = "PREPARATORIA" Then
cfi5 = "5" : cx5 = "5" : cs5 = "5R"
ElseIf vb.Left(oDrConcentra("ext5"), 2) = "10" And (vb.Right(oDrConcentra("ext5"), 1) = "E" Or
vb.Right(oDrConcentra("ext5"), 2) = "ES") Then
If vb.Right(oDrConcentra("ext5"), 1) = "E" Then
cfi5 = "NP" : cx5 = vb.Left(oDrConcentra("ext5"), 2) : cs5 = " "
ElseIf vb.Right(oDrConcentra("ext5"), 2) = "ES" Then
cfi5 = "NP" : cx5 = "NP" : cs5 = vb.Left(oDrConcentra("ext5"), 2)
End If : Else : If conta = Len(oDrConcentra("ext5")) Then
cfi5 = oDrConcentra("ext5") : cx5 = "" : cs5 = ""
Else : If vb.Right(oDrConcentra("ext5"), 1) = "E" Then
cfi5 = "NP" : cx5 = vb.Left(oDrConcentra("ext5"), 1) : cs5 = " "
ElseIf vb.Right(oDrConcentra("ext5"), 2) = "ES" Then
cfi5 = "NP" : cx5 = "NP" : cs5 = vb.Left(oDrConcentra("ext5"), 1)
End If : End If : End If : Else : cfi5 = "" : cx5 = "" : cs5 = ""
End If : conta = 0 : If Not IsDBNull(oDrConcentra("ext6")) Then
For z = 1 To Len(oDrConcentra("ext6"))
cad = Mid(oDrConcentra("ext6"), z, 1) : If Char.IsNumber(cad) Then : conta += 1 : End If : Next
If oDrConcentra("ext6") = "6" And cbCarrera.Text <> "PREPARATORIA" Then
cfi6 = "6" : cx6 = "6" : cs6 = "6R"
ElseIf oDrConcentra("ext6") = "5" And cbCarrera.Text = "PREPARATORIA" Then
cfi6 = "5" : cx6 = "5" : cs6 = "5R"
ElseIf vb.Left(oDrConcentra("ext6"), 2) = "10" And (vb.Right(oDrConcentra("ext6"), 1) = "E" Or
vb.Right(oDrConcentra("ext6"), 2) = "ES") Then
If vb.Right(oDrConcentra("ext6"), 1) = "E" Then
cfi6 = "NP" : cx6 = vb.Left(oDrConcentra("ext6"), 2) : cs6 = " "
ElseIf vb.Right(oDrConcentra("ext6"), 2) = "ES" Then
cfi6 = "NP" : cx6 = "NP" : cs6 = vb.Left(oDrConcentra("ext6"), 2)
End If : Else : If conta = Len(oDrConcentra("ext6")) Then
cfi6 = oDrConcentra("ext6") : cx6 = "" : cs6 = "" : Else
If vb.Right(oDrConcentra("ext6"), 1) = "E" Then
cfi6 = "NP" : cx6 = vb.Left(oDrConcentra("ext6"), 1) : cs6 = " "
ElseIf vb.Right(oDrConcentra("ext6"), 2) = "ES" Then
cfi6 = "NP" : cx6 = "NP" : cs6 = vb.Left(oDrConcentra("ext6"), 1)
End If : End If : End If : Else : cfi6 = "" : cx6 = "" : cs6 = ""
End If : conta = 0 : If Not IsDBNull(oDrConcentra("ext7")) Then
For z = 1 To Len(oDrConcentra("ext7"))
cad = Mid(oDrConcentra("ext7"), z, 1) : If Char.IsNumber(cad) Then : conta += 1 : End If
Next : If oDrConcentra("ext7") = "6" And cbCarrera.Text <> "PREPARATORIA" Then
cfi7 = "6" : cx7 = "6" : cs7 = "6R"
ElseIf oDrConcentra("ext7") = "5" And cbCarrera.Text = "PREPARATORIA" Then
cfi7 = "5" : cx7 = "5" : cs7 = "5R"
ElseIf vb.Left(oDrConcentra("ext7"), 2) = "10" And (vb.Right(oDrConcentra("ext7"), 1) = "E" Or
vb.Right(oDrConcentra("ext7"), 2) = "ES") Then
If vb.Right(oDrConcentra("ext7"), 1) = "E" Then
cfi7 = "NP" : cx7 = vb.Left(oDrConcentra("ext7"), 2) : cs7 = " "
ElseIf vb.Right(oDrConcentra("ext6"), 2) = "ES" Then
cfi7 = "NP" : cx7 = "NP" : cs7 = vb.Left(oDrConcentra("ext7"), 2)
End If : Else : If conta = Len(oDrConcentra("ext7")) Then
cfi7 = oDrConcentra("ext7") : cx7 = "" : cs7 = ""
Else : If vb.Right(oDrConcentra("ext7"), 1) = "E" Then
cfi7 = "NP" : cx7 = vb.Left(oDrConcentra("ext7"), 1) : cs7 = " "
ElseIf vb.Right(oDrConcentra("ext7"), 2) = "ES" Then
cfi7 = "NP" : cx7 = "NP" : cs7 = vb.Left(oDrConcentra("ext7"), 1)
End If : End If : End If : Else : cfi7 = "" : cx7 = "" : cs7 = ""
End If
End Sub

184

SISTEMA DE CONTROL ESCOLAR UNITAM

Cdigo del botn Imprimir


Private Sub btnImprimir_Clic(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnImprimir.Clic
If dgvConcentrado.Rows.Count > 0 Then

Se declaran las variables para realizar la consulta.


Dim oDaActasBusca As OdbcDataAdapter : Dim oDsActasBusca As DataSet
Dim res As Integer

Se realiza una consulta en la tabla concentrados para checar si contiene


informacin.
oDaActasBusca = New OdbcDataAdapter("Select * From concentrado", ModConexion.oConexion) :
oDsActasBusca = New DataSet
oDaActasBusca.Fill(oDsActasBusca, "concentra")

Si el resultado de la busqueda es que la tabla contiene datos se realiza una


instruccin para eliminar completamente los datos de esa tabla por que se van a
insertar nuevos datos.
If oDsActasBusca.Tables("concentra").Rows.Count > 0 Then
irSql = "Delete from concentrado"
Dim oComand As New OdbcCommand(irSql, ModConexion.oConexion)
ModConexion.oConexion.Open() : res = oComand.ExecuteNonQuery
ModConexion.oConexion.Close() : End If :
Dim As Integer
Dim no, ncontrol, alumno, sexo, rf1, rf2, rf3, rf4, rf5, rf6, rf7, rf8, pg, rx1, rx2, rx3, rx4, rx5, rx6, rx7, rx8
As String : Dim rs1, rs2, rs3, rs4, rs5, rs6, rs7, rs8 As String
For = 0 To 25 : If <= dgvConcentrado.Rows.Count - 1 Then : no = + 1
ncontrol = dgvConcentrado.Rows().Cells(0).Value() : alumno = gvConcentrado.Rows().Cells(1).Value()
sexo = dgvConcentrado.Rows().Cells(2).Value() : rf1 = dgvConcentrado.Rows().Cells(3).Value()
rf2 = dgvConcentrado.Rows().Cells(4).Value() : rf3 = dgvConcentrado.Rows().Cells(5).Value()
rf4 = dgvConcentrado.Rows().Cells(6).Value() : rf5 = dgvConcentrado.Rows().Cells(7).Value()
rf6 = dgvConcentrado.Rows().Cells(8).Value() : rf7 = dgvConcentrado.Rows().Cells(9).Value()
rf8 = dgvConcentrado.Rows().Cells(10).Value() : pg = dgvConcentrado.Rows().Cells(11).Value()
rx1 = dgvConcentrado.Rows().Cells(12).Value() : rx2 = dgvConcentrado.Rows().Cells(13).Value()
rx3 = dgvConcentrado.Rows().Cells(14).Value() : rx4 = dgvConcentrado.Rows().Cells(15).Value()
rx5 = dgvConcentrado.Rows().Cells(16).Value() : rx6 = dgvConcentrado.Rows().Cells(17).Value()
rx7 = dgvConcentrado.Rows().Cells(18).Value() : rx8 = dgvConcentrado.Rows().Cells(19).Value()
rs1 = dgvConcentrado.Rows().Cells(20).Value() : rs2 = dgvConcentrado.Rows().Cells(21).Value()
rs3 = dgvConcentrado.Rows().Cells(22).Value() : rs4 = dgvConcentrado.Rows().Cells(23).Value()
rs5 = dgvConcentrado.Rows().Cells(24).Value() : rs6 = dgvConcentrado.Rows().Cells(25).Value()
rs7 = dgvConcentrado.Rows().Cells(26).Value() : rs8 = dgvConcentrado.Rows().Cells(27).Value()
Else : no = " " ' + 1 : ncontrol = " " : alumno = " " : sexo = " " : pg = " "
rf1 = " " : rf2 = " " : rf3 = " " : rf4 = " " : rf5 = " " : rf6 = " " : rf7 = " " : rf8 = " "
rx1 = " " : rx2 = " " : rx3 = " " : rx4 = " " : rx5 = " " : rx6 = " " : rx7 = " " : rx8 = " "
rs1 = " " : rs2 = " " : rs3 = " " : rs4 = " " : rs5 = " " : rs6 = " " : rs7 = " " : rs8 = " "
End If

Se insertan los valores a lla tabla concentrado.


irSql = "Insert Into concentrado values('" & no & "','" & ncontrol & "','" & alumno & "','" & sexo & "'," & _
"'" & rf1 & "','" & rf2 & "','" & rf3 & "','" & rf4 & "','" & rf5 & "','" & rf6 & "','" & rf7 & "','" & rf8 & "','" & pg
& "'," & _
"'" & rx1 & "','" & rx2 & "','" & rx3 & "','" & rx4 & "','" & rx5 & "','" & rx6 & "','" & rx7 & "','" & rx8 & "'," & _
"'" & rs1 & "','" & rs2 & "','" & rs3 & "','" & rs4 & "','" & rs5 & "','" & rs6 & "','" & rs7 & "','" & rs8 & "')"
Dim oComand As New OdbcCommand(irSql, ModConexion.oConexion)
res = oComand.ExecuteNonQuery : ModConexion.oConexion.Close()
Next : Dim oRptPrueba As New rptConcentrado_08
Dim Formulario As New FrmVisorReportes
Dim pvValParametros As New ParameterValues()
Dim parCar, parTurno, parSem, parGrupo, parCicloEsc, parM, parF, parTot As New
ParameterDiscreteValue()

Declaracion de los parametros para las claves de las materias.


185

SISTEMA DE CONTROL ESCOLAR UNITAM

Dim pcf1, pcf2, pcf3, pcf4, pcf5, pcf6, pcf7, pcf8 As New ParameterDiscreteValue()

Funciones donde se igualan los nmeros con letras.


LetrasCicloEscolar() : LetrasSemestre()

Se pasan los valores a los parametros que se declararon anteriormente y que se


van a utilizar para mostrar la informacin en el reporte.
parCar.Value = cbCarrera.Text : parTurno.Value = cbTurno.Text
parSem.Value = semLetras : parGrupo.Value = cbGrupo.Text
parCicloEsc.Value = letrasCiclo
pcf1.Value = UCase(dgvConcentrado.Columns.Item(3).HeaderText)
pcf2.Value = UCase(dgvConcentrado.Columns.Item(4).HeaderText)
pcf3.Value = UCase(dgvConcentrado.Columns.Item(5).HeaderText)
pcf4.Value = UCase(dgvConcentrado.Columns.Item(6).HeaderText)
pcf5.Value = UCase(dgvConcentrado.Columns.Item(7).HeaderText)
pcf6.Value = UCase(dgvConcentrado.Columns.Item(8).HeaderText)
pcf7.Value = UCase(dgvConcentrado.Columns.Item(9).HeaderText)
pcf8.Value = UCase(dgvConcentrado.Columns.Item(10).HeaderText)
total = 0 : parM.Value = noM : parF.Value = noF
total = noM + noF : parTot.Value = total

Los parametros se agregan y se relacionan con los parametros creados en el


reporte.
pvValParametros.Add(parCar)
oRptPrueba.DataDefinition.ParameterFields("carrera").ApplyCurrentValues(pvValParametros)
pvValParametros.Add(parTurno)
oRptPrueba.DataDefinition.ParameterFields("turno").ApplyCurrentValues(pvValParametros)
pvValParametros.Add(parSem)
oRptPrueba.DataDefinition.ParameterFields("semestre").ApplyCurrentValues(pvValParametros)
pvValParametros.Add(parGrupo)
oRptPrueba.DataDefinition.ParameterFields("grupo").ApplyCurrentValues(pvValParametros)
pvValParametros.Add(parCicloEsc)
oRptPrueba.DataDefinition.ParameterFields("cicloescolar").ApplyCurrentValues(pvValParametros) :
pvValParametros.Add(parM)
oRptPrueba.DataDefinition.ParameterFields("h").ApplyCurrentValues(pvValParametros)
pvValParametros.Add(parF)
oRptPrueba.DataDefinition.ParameterFields("m").ApplyCurrentValues(pvValParametros)
pvValParametros.Add(parTot)
oRptPrueba.DataDefinition.ParameterFields("total").ApplyCurrentValues(pvValParametros)
pvValParametros.Add(pcf1)
oRptPrueba.DataDefinition.ParameterFields("clave1").ApplyCurrentValues(pvValParametros)
pvValParametros.Add(pcf2)
oRptPrueba.DataDefinition.ParameterFields("clave2").ApplyCurrentValues(pvValParametros)
pvValParametros.Add(pcf3)
oRptPrueba.DataDefinition.ParameterFields("clave3").ApplyCurrentValues(pvValParametros)
pvValParametros.Add(pcf4)
oRptPrueba.DataDefinition.ParameterFields("clave4").ApplyCurrentValues(pvValParametros)
pvValParametros.Add(pcf5)
oRptPrueba.DataDefinition.ParameterFields("clave5").ApplyCurrentValues(pvValParametros)
pvValParametros.Add(pcf6)
oRptPrueba.DataDefinition.ParameterFields("clave6").ApplyCurrentValues(pvValParametros)
pvValParametros.Add(pcf7)
oRptPrueba.DataDefinition.ParameterFields("clave7").ApplyCurrentValues(pvValParametros)
pvValParametros.Add(pcf8)
oRptPrueba.DataDefinition.ParameterFields("clave8").ApplyCurrentValues(pvValParametros)
Formulario.crvReportesVisor.ReportSource = oRptPrueba
Formulario.MdiParent = ActiveForm :
Formulario.Show()
Else :
MessageBox.Show("No hay datos para mostrar el reporte", "Sistema de Control Escolar",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If : End Sub

La siguiente funcin valida los ciclos escolares para extraer el mes marcado en
nmero y mostrarlo en letra.
186

SISTEMA DE CONTROL ESCOLAR UNITAM

Sub LetrasCicloEscolar() : Dim mes1, mes2, ao1, ao2 As String


If vb.Left(cbCicloEscolar.Text, 2) = "07" Then : mes1 = "JULIO"
ElseIf vb.Left(cbCicloEscolar.Text, 2) = "08" Then : mes1 = "AGOSTO"
ElseIf vb.Left(cbCicloEscolar.Text, 2) = "09" Then : mes1 = "SEPTIEMBRE"
ElseIf vb.Left(cbCicloEscolar.Text, 2) = "01" Then : mes1 = "ENERO"
ElseIf vb.Left(cbCicloEscolar.Text, 2) = "02" Then : mes1 = "FEBRERO"
End If
If Mid(cbCicloEscolar.Text, 8, 2) = "01" Then : mes2 = "ENERO"
ElseIf Mid(cbCicloEscolar.Text, 8, 2) = "12" Then : mes2 = "DICIEMBRE"
ElseIf Mid(cbCicloEscolar.Text, 8, 2) = "06" Then : mes2 = "JUNIO"
ElseIf Mid(cbCicloEscolar.Text, 8, 2) = "07" Then : mes2 = "JULIO"
End If

Extraemos los aos y concatenamos las variables para formar el ciclo escolar en
letras.
ao1 = Mid(cbCicloEscolar.Text, 3, 4) : ao2 = vb.Right(cbCicloEscolar.Text, 4)
If ao1 = ao2 Then : letrasCiclo = mes1 & " - " & mes2 & " " & ao2
Else : letrasCiclo = mes1 & " " & ao1 & " - " & mes2 & " " & ao2
End If : End Sub

La siguiente funcin valida los nmeros seleccionados en el combo cbSemestre y


los muestra a su correspondiente nmero pero en letra.
Private Sub LetrasSemestre()
If cbSemestre.Text = "1" Then : semLetras = "PRIMERO"
ElseIf cbSemestre.Text = "2" Then : semLetras = "SEGUNDO"
ElseIf cbSemestre.Text = "3" Then : semLetras = "TERCERO"
ElseIf cbSemestre.Text = "4" Then : semLetras = "CUARTO"
ElseIf cbSemestre.Text = "5" Then : semLetras = "QUINTO"
ElseIf cbSemestre.Text = "6" Then : semLetras = "SEXTO"
ElseIf cbSemestre.Text = "7" Then : semLetras = "SEPTIMO"
ElseIf cbSemestre.Text = "8" Then : semLetras = "OCTAVO"
ElseIf cbSemestre.Text = "9" Then : semLetras = "NOVENO"
ElseIf cbSemestre.Text = "10" Then : semLetras = "DECIMO"
ElseIf cbSemestre.Text = "11" Then : semLetras = "ONCEAVO"
ElseIf cbSemestre.Text = "12" Then : semLetras = "DOCEAVO"
End If
End Sub
End Class

Formulario Plan de Estudios


Este formulario nos sirve para crear planes de estudio.

Se importan las librerias a utilizar en este formulario.


187

SISTEMA DE CONTROL ESCOLAR UNITAM

Imports System.Data.Odbc: Public Class FrmPlanEstudio

Se declaran algunas variables a utilizar y cargamos algunas funciones en el


evento load del formulario.
Dim oDaPlan As OdbcDataAdapter : Dim oDsPlan As DataSet : Dim iSql As String
Dim oDrPlan, oDrClaveExiste As DataRow : Dim bnd, axion As Integer
Private Sub FrmPlanEstudio_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
bnd = 1 : axion = 0 : CargaPlanes() : txtClave.CharacterCasing = CharacterCasing.Upper
txtNombre.CharacterCasing = CharacterCasing.Upper : End Sub

Funcin para Cargar los planes de estudio existentes y mostrarlos en pantalla.


Private Sub CargaPlanes() : oDaPlan = New OdbcDataAdapter("Select * from
ModConexion.oConexion) : oDsPlan = New DataSet
oDaPlan.Fill(oDsPlan, "plan") : Dim cont, y As Integer : cont = 0
If oDsPlan.Tables("plan").Rows.Count > 0 Then
dgvPlanEstudio.Rows.Clear() : For y = 0 To oDsPlan.Tables("plan").Rows.Count - 1
If cont >= 0 Then : bnd = 1 : End If
dgvPlanEstudio.Rows.Add() : oDrPlan = oDsPlan.Tables("plan").Rows(y)
dgvPlanEstudio.Item(0, cont).Value = oDrPlan("clave")
dgvPlanEstudio.Item(1, cont).Value = oDrPlan("nombre") : cont += 1
Next : Else : dgvPlanEstudio.Rows.Clear() : End If : End Sub

plan_estudio",

Aqui pasamos los valores seleccionados actualmente dentro del grid a unas cajas
de texto.
Private Sub dgvPlanEstudio_CurrentCellChanged(ByVal sender As Object, ByVal e As System.EventArgs)
Handles dgvPlanEstudio.CurrentCellChanged
Try : If bnd = 1 Then
txtClave.Text = oDsPlan.Tables("plan").Rows(dgvPlanEstudio.CurrentCell.RowIndex)(0)
txtNombre.Text = oDsPlan.Tables("plan").Rows(dgvPlanEstudio.CurrentCell.RowIndex)(1)
End If : Catch exc As Exception : MessageBox.Show(exc.Message)
End Try : End Sub

Cdigo del boton Nuevo


Se habilitan y deshabilitan algunos controles utilizados en el formulario.
Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnNuevo.Click : bnd = 0 : axion = 1 : txtClave.Text = "" : txtNombre.Text = ""
dgvPlanEstudio.Rows.Clear() : txtClave.Enabled = True
txtNombre.Enabled = True : btnNuevo.Enabled = False
btnGuardar.Enabled = True : btnModificar.Enabled = False
btnCancelar.Enabled = True : btnCerrar.Enabled = False
btnEliminar.Enabled = False : txtClave.Focus() : End Sub

Cdigo del boton Cancelar


El siguiente cdigo es para cancelar alguna operacin dentro del formulario y
volver a la pantalla inicial del formulario utilizado, tambien para activar las
opciones de modificacin y eliminar algun registro.
Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnCancelar.Click : bnd = 1 : axion = 0
CargaPlanes() : btnNuevo.Enabled = True
btnEliminar.Enabled = True : btnGuardar.Enabled = False
btnModificar.Enabled = True : btnCancelar.Enabled = False
btnCerrar.Enabled = True : txtClave.Enabled = False
txtNombre.Enabled = False : End Sub
Private Sub btnModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnModificar.Click
bnd = 0 : axion = 2 : dgvPlanEstudio.Rows.Clear() : txtNombre.Enabled = True
txtNombre.Focus() : btnNuevo.Enabled = False
btnGuardar.Enabled = True :
btnModificar.Enabled = False
btnEliminar.Enabled = False : btnCancelar.Enabled = True
btnCerrar.Enabled = False : End Sub

188

SISTEMA DE CONTROL ESCOLAR UNITAM

Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


btnEliminar.Click
If MessageBox.Show("Esta seguro de eliminar todos los registros a este plan de estudio?", "Sistema
de
Control
Escolar
Unitam",
MessageBoxButtons.YesNo,
MessageBoxIcon.Warning)
=
Windows.Forms.DialogResult.Yes Then

Se declara una variable para almacenar la instruccin sql que se va a ejecutar


para crear las consultas.
Dim Sql, SqlM As String
Sql = "Delete from plan_estudio Where clave='" + txtClave.Text + "'"
Dim oCmd As New OdbcCommand(Sql, ModConexion.oConexion)
ModConexion.oConexion.Open() : Dim iRe As Integer = oCmd.ExecuteNonQuery
ModConexion.oConexion.Close()
SqlM = "Delete from materias Where plan_estudio='" + txtClave.Text + "'"
Dim oCmdM As New OdbcCommand(SqlM, ModConexion.oConexion)
ModConexion.oConexion.Open() : Dim iReM As Integer = oCmdM.ExecuteNonQuery
ModConexion.oConexion.Close()
MessageBox.Show("Los registros del plan de estudio: " & txtNombre.Text & " han sido eliminados",
"Sistema de Control Escolar", MessageBoxButtons.OK, MessageBoxIcon.Information) :
bnd = 0
:
CargaPlanes() : End If : End Sub

Cdigo del boton Guardar


Private Sub btnGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnGuardar.Click

Se validan las cajas de texto.


If txtClave.Text = "" Then : MessageBox.Show("Ingrese una clave para el plan de estudio", "Atencin") :
txtClave.Focus() : Exit Sub : End If
If txtNombre.Text = "" Then : MessageBox.Show("Ingrese un nombre para este plan de estudio",
"Atencin") : txtNombre.Focus() : Exit Sub : End If
Dim n, exs As Integer : If axion = 1 Then
For n = 0 To oDsPlan.Tables("plan").Rows.Count - 1
oDrClaveExiste = oDsPlan.Tables("plan").Rows(n)
If txtClave.Text = oDrClaveExiste("clave") Then
exs = 1 : Exit For : Else : exs = 0
End If : Next : If exs = 0 Then
Dim cve_p, nom_p As String
cve_p = Trim(txtClave.Text) : nom_p = Trim(txtNombre.Text)

Instruccin para insertar nuevos registros a la Base de datos.


iSql = "Insert Into plan_estudio (clave,nombre) " & _
"values ('" + cve_p + "','" + nom_p + "')"
Dim cmdP As New OdbcCommand(iSql, ModConexion.oConexion)
ModConexion.oConexion.Open() : Dim iResP As Integer = cmdP.ExecuteNonQuery()
ModConexion.oConexion.Close()
MessageBox.Show("Los datos del plan: " & txtNombre.Text & " se guardaron correctamente",
"Sistema de Control Escolar")
txtClave.Enabled = False : txtNombre.Enabled = False
btnGuardar.Enabled = False :
btnNuevo.Enabled = True
btnModificar.Enabled = True : btnCancelar.Enabled = False
btnCerrar.Enabled = True : btnEliminar.Enabled = True
bnd = 1 : axion = 0 : CargaPlanes()
Else : MessageBox.Show("La clave " & txtClave.Text & " ya existe, ingrese una nueva clave",
"Sistema de Control Escolar") : txtClave.Text = "" : txtClave.Focus()
End If : ElseIf axion = 2 Then : If txtNombre.Text = "" Then
MessageBox.Show("Ingrese un nombre para este plan de estudio", "Atencin")
txtNombre.Focus() : Exit Sub : End If
For n = 0 To oDsPlan.Tables("plan").Rows.Count - 1
oDrClaveExiste = oDsPlan.Tables("plan").Rows(n)
If txtNombre.Text = oDrClaveExiste("nombre") Then
exs = 1 : Exit For : Else : exs = 0 : End If : Next
If exs = 0 Then

189

SISTEMA DE CONTROL ESCOLAR UNITAM

If MessageBox.Show("Esta seguro de guardar los cambios realizados?", "Sistema de Control


Escolar - Unitam", MessageBoxButtons.YesNo, _
MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
Dim clv, nom As String : clv = txtClave.Text : nom = Trim(txtNombre.Text)

Instruccin para Actualizar registros que hayan sido modificados.


iSql = "Update plan_estudio Set nombre='" & nom & "' where clave='" & clv & "'"
Dim oComando As New OdbcCommand(iSql, ModConexion.oConexion)
ModConexion.oConexion.Open() : Dim iResul As Integer = oComando.ExecuteNonQuery
ModConexion.oConexion.Close() : MessageBox.Show("Los datos han sido modificados
correctamente", "Sistema de Control Escolar - Unitam")
btnGuardar.Enabled = False :
btnNuevo.Enabled = True
btnModificar.Enabled = True :
btnCancelar.Enabled = False
btnCerrar.Enabled = True : btnEliminar.Enabled = True
txtNombre.Enabled = False : bnd = 1 : axion = 0 : CargaPlanes()
End If : Else
MessageBox.Show("El nombre: " & txtNombre.Text & " ya existe, ingrese un nuevo nombre",
"Sistema de Control Escolar") : txtNombre.Focus() : End If
End If : End Sub : End Class

Formulario Alta de Calificaciones por Materia


Este formulario nos sirve para filtrar o obtener las materias que deseeamos
ingresarle calificaciones, de acuerdo a ciertos criterios como la carrera, semestre,
ciclo escolar y el grupo al que pertenece.

Se importa la libreria que se va a utilizar en este formulario.


Imports System.Data.Odbc :Public Class FrmAltaCalificacionesXMateria

Se declaran algunas variables para realizar consultas, asi como contadores.


Dim oDaCiclos, oDaGrupos, oDaAsignaturas, oDaMaterias As OdbcDataAdapter
Dim oDsCiclos, oDsGrupos, oDsAsignaturas, oDsMaterias As DataSet
Dim oDrCiclos, oDrGrupos, oDrAsignaturas, oDrMat As DataRow
Dim tabla As String : Dim i, x, c, ax, noMat, s, b As Integer
Private Sub cbCarrera_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cbCarrera.SelectedIndexChanged
FiltraDatos() : End Sub

190

SISTEMA DE CONTROL ESCOLAR UNITAM

Private Sub FiltraDatos() : cbCicloEscolar.Items.Clear()


Especialidad() : oDaCiclos = New OdbcDataAdapter("Select * from " & tabla & cbSemestre.Text & " ",
ModConexion.oConexion) : oDsCiclos = New DataSet
Try : oDaCiclos.Fill(oDsCiclos, "ciclos")
Catch ex As Exception : MessageBox.Show(ex.Message)
Exit Sub : End Try : If oDsCiclos.Tables("ciclos").Rows.Count > 0 Then
For i = 0 To oDsCiclos.Tables("ciclos").Rows.Count 1 : x = 0
oDrCiclos = oDsCiclos.Tables("ciclos").Rows(i) : If i = 0 Then
cbCicloEscolar.Items.Add(oDrCiclos("ciclo_escolar"))
cbCicloEscolar.Text = oDrCiclos("ciclo_escolar") : Else
For c = 0 To cbCicloEscolar.Items.Count - 1
If cbCicloEscolar.Items(c).ToString = oDrCiclos("ciclo_escolar") Then
x += 1 : End If : Next : If x = 0 Then
cbCicloEscolar.Items.Add(oDrCiclos("ciclo_escolar"))
End If : End If : Next : End If : ax = 1 : End Sub

Se valida segun sea la opcin seleccionada en el combo pasamos el valor a una


variable que nos va a servir para realizar las consultas a las tablas de
calificaciones de cada carrera.
Sub Especialidad()
If cbCarrera.Text = "PREPARATORIA" Then : tabla = "preparatoria"
ElseIf cbCarrera.Text = "LICENCIATURA EN ADMINISTRACION" Then
tabla = "administracion" : ElseIf cbCarrera.Text = "LICENCIATURA EN DERECHO" Then
tabla = "derecho" :ElseIf cbCarrera.Text = "LICENCIATURA EN SISTEMAS COMPUTACIONALES" Then
tabla = "sistemas" : ElseIf cbCarrera.Text = "LICENCIATURA EN CONTADURIA" Then
tabla = "contaduria" : ElseIf cbCarrera.Text = "LICENCIATURA EN CIENCIAS DE LA EDUCACION
SUPERIOR" Then
tabla = "educacion" : ElseIf cbCarrera.Text = "LICENCIATURA EN COMUNICACION Y PERIODISMO"
Then : tabla = "comunicacion" : End If : End Sub

Funcin para cargar los grupos que existen en la base de datos.


Private Sub CargarGrupos() : cbGrupo.Items.Clear()
Especialidad() : oDaGrupos = New OdbcDataAdapter("Select * from " & tabla & cbSemestre.Text & "
where ciclo_escolar='" & cbCicloEscolar.Text & "'", ModConexion.oConexion) : oDsGrupos = New DataSet
Try : oDaGrupos.Fill(oDsGrupos, "grupos") : Catch ex As Exception
MessageBox.Show(ex.Message) : Exit Sub : End Try
If oDsGrupos.Tables("grupos").Rows.Count > 0 Then
For i = 0 To oDsGrupos.Tables("grupos").Rows.Count 1 : x = 0
oDrGrupos = oDsGrupos.Tables("grupos").Rows(i)
If i = 0 Then : cbGrupo.Items.Add(oDrGrupos("grupo"))
cbGrupo.Text = oDrGrupos("grupo") : Else
For c = 0 To cbGrupo.Items.Count - 1
If cbGrupo.Items(c).ToString = oDrGrupos("grupo") Then : x += 1
End If : Next : If x = 0 Then : cbGrupo.Items.Add(oDrGrupos("grupo"))
End If : End If : Next : ax = 1 : End If : End Sub
Private Sub FrmAltaCalificaciones_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
cbCarrera.Focus() : ax = 0 : End Sub

Se validan el combos para que no deje escribir sobre el objeto y solo deje
seleccionar.
Private
Sub
cbSemestre_KeyPress(ByVal
sender
As
Object,
ByVal
System.Windows.Forms.KeyPressEventArgs) Handles cbSemestre.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If : End Sub
Private
Sub
cbCicloEscolar_KeyPress(ByVal
sender
As
Object,
ByVal
System.Windows.Forms.KeyPressEventArgs) Handles cbCicloEscolar.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If : End Sub

As

As

191

SISTEMA DE CONTROL ESCOLAR UNITAM

Private
Sub
cbGrupo_KeyPress(ByVal
sender
As
Object,
ByVal
System.Windows.Forms.KeyPressEventArgs) Handles cbGrupo.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then : e.Handled = True : SendKeys.Send("{TAB}")
End If : If InStr(1, "", e.KeyChar) = 0 Then : e.KeyChar = "" : End If : End Sub

As

Private Sub cbSemestre_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles cbSemestre.SelectedIndexChanged
If ax = 1 Then : FiltraDatos() : End If : End Sub
Private Sub cbCicloEscolar_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cbCicloEscolar.SelectedIndexChanged
CargarGrupos() : End Sub
Private Sub cbGrupo_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cbGrupo.SelectedIndexChanged
NumeroMaterias() : End Sub

Funcin para obtener el numero de materias que llevan los alumnos del ciclo
escolar y grupo que se haya selecciondo.
Sub NumeroMaterias() : Especialidad()
oDaAsignaturas = New OdbcDataAdapter("Select * from " & tabla & cbSemestre.Text & " where
ciclo_escolar='" & cbCicloEscolar.Text & "' and grupo='" & cbGrupo.Text & "'", ModConexion.oConexion) :
oDsAsignaturas = New DataSet
Try : oDaAsignaturas.Fill(oDsAsignaturas, "asignaturas") '<>
oDrAsignaturas = oDsAsignaturas.Tables("asignaturas").Rows(0)
Catch ex As Exception : MessageBox.Show(ex.Message) : Exit Sub : End Try
Dim q As Integer : noMat = 0 : For q = 1 To 12 : Try
If Not IsDBNull(oDrAsignaturas("clave_m" & q)) And oDrAsignaturas("clave_m" & q) <> "" Then
'Variable que incrementa para saber el numero de materias que cursa el alumno
noMat += 1 : End If : Catch ex As Exception : Exit For : End Try : Next

Consulta para sacar las materias del semestre indicado.


oDaMaterias = New OdbcDataAdapter("Select clave, nombre from materias where carrera='" &
cbCarrera.Text & "' and plan_estudio='" & oDrAsignaturas("plan_estudio") & "'", ModConexion.oConexion) :
oDsMaterias = New DataSet
oDaMaterias.Fill(oDsMaterias, "materias") 'Limpiamos el Datagridview y la tabla de materias
dgvAsignaturas.Rows.Clear() : s = 0

Recorremos un bucle desde uno hasta el numero de materias encontradas.


For b = 1 To noMat : For q = 0 To oDsMaterias.Tables("materias").Rows.Count 1

Pasamos la fila en la posicin q en el oDataRow3


oDrMat = oDsMaterias.Tables("materias").Rows(q)

Comparamos que las claves sean igual al de las materias con el de las claves de
las calificaciones.
If oDrMat("clave") = oDrAsignaturas("clave_m" & b) Then
dgvAsignaturas.Rows.Add() : dgvAsignaturas.Item(0, s).Value = oDrMat("clave")
dgvAsignaturas.Item(1, s).Value = UCase(oDrMat("nombre")) : s += 1
End If : Next : Next
If dgvAsignaturas.RowCount > 0 Then : dgvAsignaturas.CurrentCell.Selected = False
btnProcesarCalificaciones.Enabled = True : Else
btnProcesarCalificaciones.Enabled = False : End If : End Sub

Cdigo del boton Procesar Calificaciones


Private Sub btnProcesarCalificaciones_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnProcesarCalificaciones.Click
If dgvAsignaturas.RowCount > 0 Then : If dgvAsignaturas.CurrentCell.Selected = False Then
MessageBox.Show("Seleccione una materia para continuar", "Atencin", MessageBoxButtons.OK,
MessageBoxIcon.Information) : Else
Dim fila As Integer : fila = dgvAsignaturas.CurrentCell.RowIndex

192

SISTEMA DE CONTROL ESCOLAR UNITAM

Pasamos los valores a las variables publicas que van a ser las que se van a
ocupar en el siguiente formulario.
carreraRC = cbCarrera.Text : semestreRC = cbSemestre.Text
cicloescolarRC = cbCicloEscolar.Text : grupoRC = cbGrupo.Text
claveRC = dgvAsignaturas.Item(0, fila).Value
materiaRC = dgvAsignaturas.Item(1, fila).Value : noMatRC = fila + 1
'Instanciamos el formulario al para indicar que nos mande a ella
Dim registroCal As New FrmRegistroCalificaciones : registroCal.ShowDialog()
End If :
Else : MessageBox.Show("Realice el filtro para seleccionar una materia", "Atencin",
MessageBoxButtons.OK, MessageBoxIcon.Information) : End If
End Sub : End Class

Formulario Registro de Calificaciones


El siguiente formulario nos permitir registrar o ingresar calificaciones y hacer
distintas operaciones con ellas, como sacar sus promedio y redondear promedios
para posteriormente generar las boletas de cada alumno.

Se importan las librerias a utilizar.


Imports System.Data.Odbc : Imports vb = Microsoft.VisualBasic
Public Class FrmRegistroCalificaciones
Dim oDaCalificacion As OdbcDataAdapter : Dim oDsCalificacion As DataSet
Dim oDrCalificacion As DataRow
Dim tablita, c1p, c2p, co, calf, promMat, pp, colMo, cad As String

193

SISTEMA DE CONTROL ESCOLAR UNITAM

Dim colV, c, i, calBueno, calBuenoX, posNum, posEx, x As Integer


Dim sumac, total, promg, sum1, sum2, pro1, pro2, promf As Double
Private Sub FrmRegistroCalificaciones_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
lbCarrera.Text = carreraRC : lbSemestre.Text = semestreRC
lbCicloEscolar.Text = cicloescolarRC : lbGrupo.Text = grupoRC
txtClave.Text = claveRC : txtAsignatura.Text = materiaRC : CargaCalificaciones()
End Sub
Private Sub CargaCalificaciones() : tablaCarrera()
oDaCalificacion = New OdbcDataAdapter("Select * from " & tablita & semestreRC & " Inner Join alumnos
On " & tablita & semestreRC & ".no_control=alumnos.no_control where " & tablita & semestreRC &
".ciclo_escolar='" & cicloescolarRC & "' and " & tablita & semestreRC & ".grupo='" & grupoRC & "'",
ModConexion.oConexion) : oDsCalificacion = New DataSet
Try : oDaCalificacion.Fill(oDsCalificacion, "calificacion")
Catch ex As Exception : MessageBox.Show(ex.Message) : Exit Sub : End Try
If oDsCalificacion.Tables("calificacion").Rows.Count > 0 Then : Dim a, d As Integer : d = 0
For a = 0 To oDsCalificacion.Tables("calificacion").Rows.Count - 1
oDrCalificacion = oDsCalificacion.Tables("calificacion").Rows(a)
ObtieneCalificaciones() : dgvCalificaciones.Rows.Add()
dgvCalificaciones.Item(0, d).Value = oDrCalificacion("no_control")
dgvCalificaciones.Item(1, d).Value = oDrCalificacion("nom_alumno")
dgvCalificaciones.Item(2, d).Value = c1p
dgvCalificaciones.Item(3, d).Value = c2p
dgvCalificaciones.Item(4, d).Value = co
dgvCalificaciones.Item(5, d).Value = promMat
dgvCalificaciones.Item(6, d).Value = calf : d += 1 : Next
ChecaColumnaVacia() : Else : MessageBox.Show("No hay informacion en este semestre, ciclo
escolar, grupo", "Atencin", MessageBoxButtons.OK, MessageBoxIcon .Information) : End If : End Sub
Private Sub ObtieneCalificaciones()
Dim ci As Integer : c1p = "" : c2p = "" : co = "" : promMat = "" : calf = ""

Recorremos todas las claves para buscar y sacar la calificacion referente a esa
materia.
For ci = 1 To 15 : Try : If oDrCalificacion("clave_m" & ci) = claveRC Then
c1p = oDrCalificacion("cal1p_" & ci) : c2p = oDrCalificacion("cal2p_" & ci)
co = oDrCalificacion("calor_" & ci) : promMat = oDrCalificacion("prom" & ci)
calf = oDrCalificacion("ext" & ci) : Exit For : End If : Catch ex As Exception
Exit For : End Try : Next : End Sub
Sub tablaCarrera() : If carreraRC = "PREPARATORIA" Then : tablita = "preparatoria"
ElseIf carreraRC = "LICENCIATURA EN ADMINISTRACION" Then : tablita = "administracion"
ElseIf carreraRC = "LICENCIATURA EN DERECHO" Then : tablita = "derecho"
ElseIf carreraRC = "LICENCIATURA EN SISTEMAS COMPUTACIONALES" Then : tablita = "sistemas"
ElseIf carreraRC = "LICENCIATURA EN CONTADURIA" Then : tablita = "contaduria"
ElseIf carreraRC = "LICENCIATURA EN CIENCIAS DE LA EDUCACION SUPERIOR" Then
tablita = "educacion" : ElseIf carreraRC = "LICENCIATURA EN COMUNICACION Y PERIODISMO"
Then : tablita = "comunicacion" : End If : End Sub
Sub ChecaColumnaVacia() : colV = 0
For c = 2 To 4 : For i = 0 To dgvCalificaciones.Rows.Count 1

Si el valor de la celda es nulo entonces igualamos colV al valor de la columna.


If IsDBNull(dgvCalificaciones.Item(c, i).Value) Then : colV = c
ElseIf dgvCalificaciones.Item(c, i).Value = "" Then : colV = c : End If : Next i

Checamos si colV es diferente de 0 entonces salimos del For y nos quedamos


con el valor del la columna.
If colV <> 0 Then : btnAgregar.Enabled = True : Exit For : Else
btnAgregar.Enabled = False : End If : Next c : End Sub

194

SISTEMA DE CONTROL ESCOLAR UNITAM

Cdigo para el boton Agregar


Private Sub btnAgregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnAgregar.Click
If colV <> 0 Then : For i = 0 To dgvCalificaciones.Rows.Count - 1
dgvCalificaciones.Item(colV, i).ReadOnly = False
dgvCalificaciones.Item(colV, i).Style.BackColor = Color.LightGreen
Next i

Si asp= algun numero tons le damos un nombre de columna e indicamos el tipo


de calificacin.
If colV = 2 Then : colMo = "p1" : pp = "1p" : ElseIf colV = 3 Then : colMo = "p2" : pp = "2p"
ElseIf colV = 4 Then : colMo = "ordinario" : pp = "or" : End If
dgvCalificaciones.CurrentCell = dgvCalificaciones.Rows(0).Cells(colMo)
btnAgregar.Enabled = False : btnGuardar.Enabled = True
btnModificar.Enabled = False ': btnImportar.Enabled = False
btnCerrar.Enabled = False : btnCancelar.Enabled = True : Else
MessageBox.Show("Las calificaciones estan completas, puede modificarlos si asi lo desea", "Sistema
de Control Escolar") : btnGuardar.Enabled = False : End If : End Sub

Codigo del boton guardar


Private Sub btnGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnGuardar.Click
If colMo = "p1" Or colMo = "p2" Or colMo = "ordinario" Then
'Solo entrara cuando se agregue o modifique en 1er parcial, 2do parcial y ordinario
ValidandoCalificacion() : If calBueno = dgvCalificaciones.Rows.Count Then
Dim iSql, mNoControl, cal As String : For i = 0 To dgvCalificaciones.Rows.Count - 1
mNoControl = dgvCalificaciones.Item(0, i).Value
cal = dgvCalificaciones.Rows(i).Cells(colMo).Value()
iSql = "Update " & tablita & semestreRC & " Set cal" & pp & "_" & noMatRC & "='" & cal & "'
Where no_control='" + mNoControl + "' and ciclo_escolar='" & cicloescolarRC & "' and grupo='" & grupoRC &
"'"
Dim oComando As New OdbcCommand(iSql, ModConexion.oConexion)
ModConexion.oConexion.Open() : Dim iRes As Integer = oComando.ExecuteNonQuery()
ModConexion.oConexion.Close() : Next : ChecaColumnaVacia()
If colV = 0 Then : promMateriaFinal() : promExtrasPromGral()
End If
MessageBox.Show("Las calificaciones se guardaron correctamente", "Sistema de Control Escolar",
MessageBoxButtons.OK, MessageBoxIcon.Information)
dgvCalificaciones.Rows.Clear() : CargaCalificaciones()
RestauraGrid() : btnModificar.Enabled = True
btnGuardar.Enabled = False : btnCancelar.Enabled = False
btnCerrar.Enabled = True : End If : Else

Aqui entrara cuando sea una modificaciones en calificaciones finales(exts).


ValidandoCalificacionFinal()
If calBuenoX = dgvCalificaciones.Rows.Count Then
Dim rSql, yNoControl, pex As String
For i As Integer = 0 To dgvCalificaciones.RowCount - 1
yNoControl = dgvCalificaciones.Item(0, i).Value
pex = dgvCalificaciones.Rows(i).Cells(6).Value()
rSql = "Update " & tablita & semestreRC & " Set ext" & noMatRC & "='" & pex & "' Where
no_control='" + yNoControl + "' and ciclo_escolar='" & cicloescolarRC & "' and grupo='" & grupoRC & "'"
Dim oComando As New OdbcCommand(rSql, ModConexion.oConexion)
ModConexion.oConexion.Open() : Dim iRes As Integer = oComando.ExecuteNonQuery()
ModConexion.oConexion.Close() : Next
dgvCalificaciones.Rows.Clear() : CargaCalificaciones()
RestauraGrid() : btnModificar.Enabled = True
btnGuardar.Enabled = False : btnCancelar.Enabled = False
btnCerrar.Enabled = True : 'bClavesAtras()
MessageBox.Show("Las modificaciones se guardaron correctamente", "Atencin",
MessageBoxButtons.OK, MessageBoxIcon.Information)
Else : MessageBox.Show("Uno de los valores introducidos no es correcto", "Atencin",
MessageBoxButtons.OK, MessageBoxIcon.Stop) : End If : End If : End Sub

195

SISTEMA DE CONTROL ESCOLAR UNITAM

Funcin para sacar el promedio final de cada materia.


Sub promMateriaFinal() : Dim pSql, promFG, gNoControl As String
For i = 0 To dgvCalificaciones.Rows.Count - 1
gNoControl = dgvCalificaciones.Item(0, i).Value
sum1 = 0 : pro1 = 0 : pro2 = 0 : promf = 0

Recorremos desde la posicion 1 que es 1er parcial hasta 2, que es 2do parcial.
For x = 2 To 3 : If Not Char.IsLetter(dgvCalificaciones.Item(x, i).Value) Then
sum1 = sum1 + CDbl(dgvCalificaciones.Item(x, i).Value) : End If : Next

Dividimos entre 2(1ro y 2do parcial) y el resultado lo multiplicamos por 0.6


pro1 = (sum1 / 2) * 0.6 : If Not Char.IsLetter(dgvCalificaciones.Item(4, i).Value) Then
pro2 = CDbl(dgvCalificaciones.Item(4, i).Value) * 0.4 : End If

Finalmente sumamos los 2 promedio y sacamos el promedio final de cada materia


y la mostramos en su celda respectiva.
promf = pro1 + pro2

Si la calificaciones es menor o igual a 6 tons guardamos 6.0 porque lo indica


segun el reglamento.
If promf <= 6 Then : promf = 6.0 :
End If
dgvCalificaciones.Rows(i).Cells(5).Value() = Format(promf, "f").ToString
'MessageBox.Show("Promedio de parciales: " & pro1 & ", Prom de Ordin: " & pro2 & ", Prom Final: " &
promf) : promFG = Format(promf, "f").ToString
pSql = "Update " & tablita & semestreRC & " Set prom" & noMatRC & "='" & promFG & "' Where
no_control='" + gNoControl + "' and ciclo_escolar='" & cicloescolarRC & "' and grupo='" & grupoRC & "'" : Dim
oComando As New OdbcCommand(pSql, ModConexion.oConexion)
ModConexion.oConexion.Open() : Dim iRes As Integer = oComando.ExecuteNonQuery()
ModConexion.oConexion.Close() : Next : End Sub

Funcin para sacar los redondear los promedios finales de cada materia y sacar
el promedio general.
Private Sub promExtrasPromGral()
Dim v, red As Integer :
promg = 0 : sum2 = 0 : Dim pSql, gNoControl As String
For v = 0 To dgvCalificaciones.Rows.Count - 1
gNoControl = dgvCalificaciones.Item(0, v).Value
red = Math.Round((CType(dgvCalificaciones.Rows(v).Cells(5).Value(), Double)),
MidpointRounding.AwayFromZero) : dgvCalificaciones.Rows(v).Cells(6).Value() = red
sum2 = sum2 + CDbl(dgvCalificaciones.Rows(v).Cells(6).Value())
pSql = "Update " & tablita & semestreRC & " Set ext" & noMatRC & "='" & red & "' Where no_control='"
+ gNoControl + "' and ciclo_escolar='" & cicloescolarRC & "' and grupo='" & grupoRC & "'" : Dim oComando
As New OdbcCommand(pSql, ModConexion.oConexion)
ModConexion.oConexion.Open() : Dim iRes As Integer = oComando.ExecuteNonQuery()
ModConexion.oConexion.Close() : Next : End Sub

Funcin para validar las calificaciones finales y checar que los numeros sean
correctos.
Private Sub ValidandoCalificacionFinal() : calBuenoX = 0 : sum2 = 0
Dim tk, bb, cnum, s, le, lr As Integer
For i As Integer = 0 To dgvCalificaciones.RowCount - 1
tk = 0 : bb = 0 : cnum = 0 : s = 0 : le = 0 : lr = 0 : posNum = 0
tk = Len(dgvCalificaciones.Item(colMo, i).Value) : For bb = 1 To tk
Dim cad As String : cad = Mid(dgvCalificaciones.Item(colMo, i).Value, bb, 1)
If Not Char.IsLetter(cad) Then : cnum += 1
posNum = bb : End If : If cad = "S" Then : s += 1
End If : If cad = "E" Then : le += 1 : posEx = bb
End If : If cad = "R" Then : lr += 1 :
End If : Next
If tk = cnum And cnum >= 1 Then : calBuenoX += 1
sum2 = sum2 + CDbl(dgvCalificaciones.Rows(i).Cells(5).Value())
ElseIf cnum >= 1 And s = 0 And le = 1 And lr = 0 And posNum = 1 And posEx = 2 Then '8E

196

SISTEMA DE CONTROL ESCOLAR UNITAM

calBuenoX += 1 :sum2 = sum2 + CDbl(vb.Left(dgvCalificaciones.Rows(i).Cells(5).Value(), 1))


ElseIf cnum >= 1 And s = 1 And le = 1 And lr = 0 And posNum = 1 And posEx = 2 Then '7ES
calBuenoX += 1 : sum2 = sum2 + CDbl(vb.Left(dgvCalificaciones.Rows(i).Cells(5).Value(), 1))
ElseIf cnum >= 1 And s = 0 And le = 0 And lr = 1 And posNum = 1 Then '8R
calBuenoX += 1 : sum2 = sum2 + CDbl(vb.Left(dgvCalificaciones.Rows(i).Cells(5).Value(), 1))
End If : Next : End Sub
Private Sub ValidandoCalificacion()
Dim tam, bb, nn, pts As Integer : calBueno = 0
For i As Integer = 0 To dgvCalificaciones.RowCount - 1
If Not IsDBNull(dgvCalificaciones.Rows(i).Cells(colMo).Value()) Then
If Not dgvCalificaciones.Rows(i).Cells(colMo).Value() = "" Then

Inicializo las algunos contadores y empiezo a recorrer las filas de la columna.


bb = 0 : nn = 0 : pts = 0 : tam = 0
tam = Len(dgvCalificaciones.Item(colMo, i).Value)
For bb = 1 To tam : cad = Mid(dgvCalificaciones.Item(colMo, i).Value, bb, 1)
If cad = "." Then : pts += 1 : End If
If Char.IsNumber(cad) Then : nn += 1 : End If : Next
If pts = 0 Or pts = 1 And nn <> 0 Then : If pts = 1 Then : nn += 1 : End If
If tam = nn Then : If Not Char.IsLetter(dgvCalificaciones.Item(colMo, i).Value) Then
If dgvCalificaciones.Item(colMo, i).Value >= 0 And dgvCalificaciones.Item(colMo, i).Value <= 10 Then :
calBueno += 1 : Else : MessageBox.Show("El valor " & dgvCalificaciones.Item (colMo, i).Value & " esta
fuera del rango permitido(0 - 10)", "Atencin", MessageBoxButtons.OK, MessageBoxIcon.Warning)
dgvCalificaciones.CurrentCell = dgvCalificaciones.Rows(i).Cells(colMo) : Exit Sub
End If : End If : Else : If dgvCalificaciones.Item(colMo, i).Value <> "NP" And
dgvCalificaciones.Item(colMo, i).Value <> "NA" And dgvCalificaciones.Item(colMo, i).Value <> "SD" Then :
MessageBox.Show("El valor " & dgvCalificaciones.Item(colMo, i).Value & " no es aceptable", "Atencin",
MessageBoxButtons.OK, MessageBoxIcon.Warning)
dgvCalificaciones.CurrentCell = dgvCalificaciones.Rows(i).Cells(colMo)
Exit Sub : End If : End If : Else
If dgvCalificaciones.Item(colMo, i).Value <> "NP" And dgvCalificaciones.Item(colMo, i).Value
<> "NA" And dgvCalificaciones.Item(colMo, i).Value <> "SD" Then :
MessageBox.Show("El valor " &
dgvCalificaciones.Item(colMo, i).Value & " no es aceptable", "Atencin", MessageBoxButtons.OK,
MessageBoxIcon.Warning)
dgvCalificaciones.CurrentCell = dgvCalificaciones.Rows(i).Cells(colMo) : Exit Sub
End If :
End If : If dgvCalificaciones.Item(colMo, i).Value = "NP" Or
dgvCalificaciones.Item(colMo, i).Value = "NA" Or dgvCalificaciones.Item(colMo, i).Value = "SD" Then :
calBueno += 1 : End If : Else : MessageBox.Show("Ingrese una calificacin para continuar", "Atencin",
MessageBoxButtons.OK, MessageBoxIcon.Warning)
dgvCalificaciones.CurrentCell = dgvCalificaciones.Rows(i).Cells(colMo)
Exit Sub : End If : End If : Next : End Sub

Cdigo del boton Cancelar


Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles
btnCancelar.Click
dgvCalificaciones.Rows.Clear():CargaCalificaciones() : RestauraGrid()
btnModificar.Enabled = True : btnGuardar.Enabled = False : btnCancelar.Enabled = False
btnCerrar.Enabled = True : End Sub

Funcin para restaurar las celdas del grid a normal.


Private Sub RestauraGrid() : Dim xd As Integer
For xd = 0 To dgvCalificaciones.Rows.Count 1 : dgvCalificaciones.Item(2, xd).ReadOnly = True
dgvCalificaciones.Item(2, xd).Style.BackColor = Color.White : Next xd
For xd = 0 To dgvCalificaciones.Rows.Count 1 : dgvCalificaciones.Item(3, xd).ReadOnly = True
dgvCalificaciones.Item(3, xd).Style.BackColor = Color.White : Next xd
For xd = 0 To dgvCalificaciones.Rows.Count 1 : dgvCalificaciones.Item(4, xd).ReadOnly = True
dgvCalificaciones.Item(4, xd).Style.BackColor = Color.White : Next xd
For xd = 0 To dgvCalificaciones.Rows.Count - 1
dgvCalificaciones.Item(6, xd).ReadOnly = True
dgvCalificaciones.Item(6, xd).Style.BackColor = Color.White : Next xd
dgvCalificaciones.CurrentCell.Selected = False : End Sub

197

SISTEMA DE CONTROL ESCOLAR UNITAM

Private Sub dgvCalificaciones_EditingControlShowing(ByVal sender As Object, ByVal e As


System.Windows.Forms.DataGridViewEditingControlShowingEventArgs)
Handles
dgvCalificaciones.EditingControlShowing : Dim validar As TextBox = CType(e.Control, TextBox)
AddHandler validar.KeyPress, AddressOf validar_Keypress : End Sub
Private
Sub
validar_Keypress(ByVal
sender
As
Object,
ByVal
e
As
System.Windows.Forms.KeyPressEventArgs)

En esta funcion validamos el keypress de textbox de la celda que se edita.


Dim columna As Integer = dgvCalificaciones.CurrentCell.ColumnIndex
If columna = 2 Or columna = 3 Or columna = 4 Then : Dim caracter As Char = e.KeyChar

Si el valor no es un numero, ni un Retroceso, ni un punto, ni las letras N,P,A


entonces no dejara ingresar nada.
If Not Char.IsNumber(caracter) And (caracter = ChrW(Keys.Back)) = False And Not caracter = "." _
And Not caracter = "N" And Not caracter = "P" And Not caracter = "A" And Not caracter = "S" And Not
caracter = "D" Then : e.KeyChar = Chr(0) : End If : ElseIf columna = 6 Then
Dim caracter As Char = e.KeyChar : If caracter <> "6" And caracter <> "7" And caracter <> "1" And
caracter <> "0" And caracter <> "8" And caracter <> "9" _
And (caracter = ChrW(Keys.Back)) = False And Not caracter = "E" And Not caracter = "S" Then :
e.KeyChar = Chr(0) : End If : End If : End Sub

Cdigo del boton Modificar


Private Sub btnModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnModificar.Click

Si se ha seleccionado alguna celda en el GridView entonces entramos a:


If dgvCalificaciones.Rows.Count > 0 Then :If dgvCalificaciones.CurrentCell.Selected = True Then

For i = 0 To dgvCalificaciones.Rows.Count 1 : For c = 2 To 4


dgvCalificaciones.Item(c, i).ReadOnly = True
dgvCalificaciones.Item(c, i).Style.BackColor = Color.White : Next
Next i

Declaramos e igualamos la variable al numero de columna seleccionado.


Dim colum As Integer : colum = dgvCalificaciones.CurrentCell.ColumnIndex
If colum = 2 Then :
colMo = "p1" : pp = "1p" : ElseIf colum = 3 Then : colMo = "p2" : pp = "2p"
ElseIf colum = 4 Then : colMo = "ordinario" : pp = "or" :
ElseIf colum = 6 Then
colMo = "ext" :
End If : Dim ch As Integer = 0
If colum = 2 Or colum = 3 Or colum = 4 Or colum = 6 Then

Recorremos las filas de la columna para ver que no sea nulo y coloremoa las
celdas.
For i = 0 To dgvCalificaciones.Rows.Count - 1
If Not IsDBNull(dgvCalificaciones.Item(colum, i).Value) Then : ch += 1
End If : Next i
For i = 0 To dgvCalificaciones.Rows.Count 1 : If ch > 0 Then
dgvCalificaciones.Item(colum, i).ReadOnly = False
dgvCalificaciones.Item(colum, i).Style.BackColor = Color.LightGreen
End If : Next i

Si ch es mayor a cero quiere decir que se puede modificar las calificaciones y se


habilita el boton guardar.
If ch > 0 Then : btnGuardar.Enabled = True : btnModificar.Enabled = False
btnAgregar.Enabled = False : btnCancelar.Enabled = True
btnCerrar.Enabled = False : Else

Sino entonces quiere decir que no hay calificaciones a modificar en esta columna.
MessageBox.Show("Esta columna no tiene calificaciones, por favor seleccione otra que si
los tenga", "Sistema de Control Escolar - Unitam") : End If : Else

198

SISTEMA DE CONTROL ESCOLAR UNITAM

Sino quiere decir que la celda seleccionada no pertenece alguna de las columnas
de calificaciones.
btnGuardar.Enabled = False : MessageBox.Show("Esta columna no puede ser modificada, por
favor seleccione otra", "Sistema de Control Escolar - Unitam") : End If
Else

Sino indicamos que seleccione alguna celda de alguna columna para modificar
calificaciones.
btnGuardar.Enabled = False : MessageBox.Show("Seleccione una celda de la columna que desee
modificar", "Sistema de Control Escolar - Unitam") : End If : Else
MessageBox.Show("No hay datos para modificar", "Sistema de Control Escolar")
End If : End Sub
End Class

199

Você também pode gostar