Tesis sistema informatico de la escuela 21 de mayo

  • 622 views
Uploaded on

es algo muy importante …

es algo muy importante

More in: Career
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • olle muy buena veo que la hiciste en Visual me pregunto si me podrias ayudar con el sistema que estoy elaborando es para una universidad de escasos recursos y nos interesaría poder tener un sistema como el de ustedes gracias de antemano cualquier ayuda me seria util
    Are you sure you want to
    Your message goes here
    Be the first to like this
No Downloads

Views

Total Views
622
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
104
Comments
1
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Universidad Técnica de Manabí Facultad de Ciencias Informáticas TESIS DE GRADO Previa a la Obtención del Título de: “ANALISTA EN SISTEMAS” TEMA:“DESARROLLO DE UN SISTEMA INFORMATICO ADMINISTRATIVOPARA LA ESCUELA FISCAL MIXTA “21 DE MAYO” DEL CANTÓNPORTOVIEJO, PROVINCIA DE MANABÍ”. AUTORAS: Ligia Elena Escobar Domínguez. Maryuri Johana Solórzano Tuàrez. DIRECTORA DE TESIS Ing. Maricela Pinargote Portoviejo - Manabí - Ecuador 2010
  • 2. CERTIFICACIONIng. Maricela Pinargote, certifica que la presente tesis ha sido elaborada por lasSrta. Ligia Elena Escobar Domínguez y Maryuri Johana Solórzano Tuárez, bajomi dirección, control y seguimiento. El presente trabajo reúne los requisitos deuna investigación y programación concluida mediante el esfuerzo, dedicación yconstancia, tanto en parte teorice, investigativa y practica, lo que permite otorgarsu originalidad.Para constancia y validez, firmo el documento. Atentamente, Maricela Pinargote DIRECTORA DE TESIS
  • 3. UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS ESCUELA DE COMPUTACIÓN TEMA:“DESARROLLO DE UN SISTEMA INFORMÁTICO ADMINISTRATIVOPARA LA ESCUELA FISCAL MIXTA “21 DE MAYO” DEL CANTÓNPORTOVIEJO, PROVINCIA DE MANABÍ”. TESIS DE GRADOSometida a consideración de los Miembros del Tribunal de Revisión ySustentación, legalizada por el Honorable Consejo Directivo como requisitoprevio a la obtención del título de: ANALISTA EN SISTEMAS aprobado por:DIRECTORA DE TESIS ____________________ Ing. Maricela PinargotePRESIDENTE DEL TRIBUNAL ____________________ Ing. Lenin RiveraDOCENTE DE AREA _________________ Ing. Javier CuzcoDOCENTE MIEMBRO DE COMISION _________________ Ing. Jimmy Zambrano
  • 4. DERECHO DEL AUTORLas presentes: Ligia Elena Escobar Domínguez y Maryuri Johana SolórzanoTuarez, declararan que la tesis es de total creación de las antes mencionadas;teniendo como directora de tesis a la Ing. Maricela Pinargote.Este proyecto está protegido por las Leyes del Autor y otros TratadosInternacionales. La reproducción o distribución no autorizadas de este trabajo o decualquier parte del mismo, pueden dar lugar a responsabilidades civiles y penalesque serán perseguidas por las autoridades competentes.Su análisis, diseño y codificación son de exclusividad de los autores.Para constancia firman.____________________ ____________________Ligia Escobar Domínguez Maryuri Solórzano Tuarez AUTORA AUTORA
  • 5. AGRADECIMIENTOAgradezco primeramente a Dios por hacer posible el sueño que todaestudiante anhela en la vida: ser una Profesional.A mis queridos profesores quienes con sus conocimientos yenseñanzas me inculcaron todos los valores morales, éticos yprofesionales los cuales los pondré en práctica durante toda mi vida.A la Ing. Maricela Pinargote, mi Directora de Tesis, quien ha sidoparte fundamental de este proyecto guiándome en los análisis ycomentarios suscitados en el transcurso de la misma.Así mismo a todas las personas que han colocado su granito de arenacolaborando de la manera más humilde y desinteresada que me hanllevado a obtener un gran éxito. LIGIA ESCOBAR DOMÍNGUEZ
  • 6. AGRADECIMIENTOCon especial afecto agradezco a los directivos de esta importanteInstitución Educativa como es la Universidad Técnica de Manabícomo son la Ing. Maricela Pinargote, Ing. Lenin Rivera, Ing. JavierCusco y Ing. Jimmy Zambrano, por su confianza y apoyo para laculminación de esta etapa importante de mi vida.A mi madre que me inculcó valores de responsabilidad y dedicaciónhacia la superación y el esfuerzo continuo para cumplir toda metaanhelada. Muchas gracias. MARYURI SOLÓRZANO TUAREZ
  • 7. DEDICATORIAA Dios por ser él quien me ha iluminado desde el cielo despejandocualquier duda y regalándome un poquito de sabiduría para poderterminar con éxito este proyecto.A mis padres Sr. Jorge Escobar y Sra. Jacqueline Domínguez, quienescon esfuerzo y sacrificio han sabido compartir mis momentos másdifíciles dándome el apoyo incondicional en todos los aspectos.A mi hija Camila Sánchez quien es mi fuente de inspiración y mimotivo de seguir siempre adelante.A mis hermanos Jacqueline, Jorge Luis y Kassandra quienes mebrindan toda la confianza para poder seguir adelante.A mí querido esposo por su motivación y su apoyo incondicional. LIGIA ESCOBAR DOMÍNGUEZ
  • 8. DEDICATORIADedico este trabajo primeramente a Dios por guiarnos y darnosfuerzas para seguir adelante. A nuestros progenitores por brindarnossu apoyo incondicional y llevarnos por la senda del bien.También dedico en especial a mi hijo Kendru Steven MoreiraSolórzano, por darme las fuerzas y motivación para el proceso de estainvestigación.A mi madre Dolores Tuárez, que con sus sabios consejos he podidoconseguir mis metas anheladas. MARYURI SOLÓRZANO TUAREZ
  • 9. RESUMEN EJECUTIVOEl desarrollo de un programa computarizado optimiza el tiempo, sistematizar lalabor del usuario, especialmente desarrollado para un análisis rápido y eficaz.Se ofrece una herramienta de trabajo a la Escuela Fiscal Mixta “21 de Mayo” queconsiste en un sistema de información más exacta y rápida para el personal queallí labora matriculando una cantidad de alumnos en un corto período de tiempopara dar inicio a las actividades del plantel de manera eficiente e integra.Presenta una interfaz amigable capaz de realizar: las operaciones básicas demantenimiento de archivos que proporcione una mejor manera de proveerinformación actualizada para la toma de decisiones, registro y control de todos losprocesos inherentes del sistema de inscripción, ofrecer reportes de acuerdo a lanecesidad del usuario.El objetivo central del proyecto “Desarrollo de un Sistema InformáticoAdministrativo para la Escuela Fiscal Mixta “21 de Mayo” del Cantón Portoviejo,provincia de Manabí”, es automatizar el proceso de inscripción de esta institucióneducativa y todos los procesos inherentes al mismo que genere informaciónoportuna, precisa y confiable mediante el uso de los sistemas de información,herramienta que contribuye a los diferentes sectores productivos de la sociedad enllevar las tareas administrativas rutinarias, tediosa y de gran volumen deinformación al computador, teoría que afianza la propuesta de sistema deinformación para el proceso de inscripción del plantel como nueva forma detrabajo que sustituya la metodología hasta ahora utilizada en los sistemasadministrativos escolares.
  • 10. EXECUTIVE SUMMARYThe development of a program computarizado optimize the time, systematize thelabor of the user, specially developed for a rapid and effective analysis.A tool of work offers to the Fiscal Mixed School " May 21 " that consists of asystem of more exact and rapid information for the personnel that there worksregistering a pupils quantity in a short period efficient of time to give beginningto the activities of the nursery of an way and it integrates.He presents an amicable interface capable of realizing: the basic operations ofmaintenance of files that provides a better way of providing information updatedfor the capture of decisions, record and control of all the inherent processes of thesystem of inscription, offering reports of agreement to the need of the user.The central aim of the project " Development of an IT Administrative System forthe Fiscal Mixed School " On May 21 " from the Canton Portoviejo, Manabísprovince ", is to automate the process of inscription of this educational institutionand all the processes inherent in the same one that generates opportune, preciseand reliable information by means of the use of the information systems, tool thathe contributes to the different productive sectors of the company in taking theadministrative routine tasks, tedious and of great volume of information to thecomputer, theory that guarantees the offer of information system for the process ofinscription of the nursery as new form of work that replaces the methodology tillnow used in the administrative school systems.
  • 11. ÍNDICECERTIFICACION IIAPROBACION IIIDERECHO DEL AUTOR IVAGRADECIMIENTO VIDEDICATORIA VIIIRESUMEN EJECUTIVO IXSUMARY XTEMAINTRODUCCIÓNCAPITULO I1.1. JUSTIFICACIÓN 12.1 PLANTEAMIENTO DEL PROBLEMA 22.2 OBJETIVOS 32.3 OBJETIVO GENERAL 32.4 OBJETIVOS ESPECÍFICOS 3CAPITULO II2. MARCO REFERENCIAL 52.1 MARCO TEÓRICO 62.1.1 DISEÑO DEL SISTEMA 72.1.2 OBJETIVOS DEL DISEÑO DE SQL. SERVER 82.1.3 VISUAL BASIC 11CAPITULO III3. DISEÑO METODOLÓGICO 133.1 METODOLOGÍA 133.2 TÉCNICAS 133.3 RESULTADOS OBTENIDO 143.3 PRESUPUESTO 15
  • 12. CAPITULO IV4.1 CONCLUSIONES Y RECOMENDACIONES 164.1.1 CONCLUSIONES 164.1.2 RECOMENDACIONES 17CAPITULO V5. PROPUESTA 185.1 DESCRIPCION GENERAL DEL SISTEMA 185.2 DETERMINACION DE REQUERIMIENTO 185.3 RELACIONES DE LAS BASES DE DATOS 195.4 CRONOGRAMA VALORADO 205.6 BIBLIOGRAFIA 21ANEXOSMANUAL DEL PROGRAMADORMANUAL DEL USUARIOCD DE INSTALACION
  • 13. TEMA:“DESARROLLO DE UN SISTEMA INFORMÁTICO ADMINISTRATIVOPARA LA ESCUELA FISCAL MIXTA “21 DE MAYO” DEL CANTÓNPORTOVIEJO, PROVINCIA DE MANABÍ”.
  • 14. IntroducciónLos Sistemas Informáticos en la actualidad son muy importantes ya que gracias aellos la mayoría de las instituciones por no decir todas, manejan las Bases deDatos de una forma más cómoda y sencilla, sin la necesidad de archivar losregistros en papeles u otros documentos, ya que la teneduría de libros se pasa acomputadora sin un sistema informático, lo que no permite obtener unainformación rápida de los registros diarios y mensuales que se necesitan en sudebido momento.Con los Sistemas Informáticos esta tarea resulta más fácil de manejar para losempleados que laboran en dichas instituciones, ya sean públicas o privadas.Institución escogida para aplicar este sistema informático es la Escuela NacionalMixta “21 de Mayo” por el prestigio que tiene y por las facilidades que brindarondesde un principio para la obtención de datos y materiales de apoyo para laculminación de este proyecto.Este trabajo tuvo como meta final la realización de un Sistema Informático creadoen lenguaje de programación Visual Basic 6.0, ya que es el más utilizado en laactualidad y es muy fácil de manejarlo y cualquier persona capacitada podrámanejarlo.Estos datos e instrucciones se codificaran en dicho lenguaje de programación paraque puedan ser convertidos en lenguajes de computadoras y así poder ejecutar elprograma.
  • 15. CAPITULO I1.1 Justificación.Este Sistema informático es trascendental por la importancia que presenta elcontrol de datos en la entidad Educativa “21 de Mayo”, permitiendo innumerablesbeneficios que va a recibir los mismos con la realización de un SistemaInformático que ayude como controlar de una mejor manera los reportes einformes que a diario en ella se elaboran.Para contribuir a la solución de la problemática se puso énfasis en la informaciónque ofreció la Escuela a la interesada para la realización de este sistema.En esta justificación se expresan las razones experimentales y las posiblesventajas que se derivarían de los resultados de la realización de este proyecto. Yes evidente que la labor debe coordinar un buen número de campos para poderresolver el propósito planteado.Un sistema de información es un conjunto de elementos que interactúan entre sícon el fin de apoyar las actividades de las instituciones educativas. 1
  • 16. 1.2 Planteamiento del problema.La Informática es la ciencia que sirve para que muchos procesos aumenten sueficiencia, y si una organización, institución o empresa requiere ofrecer a susclientes la calidad en el servicio que otorga, se hace emergente la búsqueda desoluciones que faciliten los procesos para servir mejor.La Escuela Fiscal Mixta “21 de Mayo”, institución que ayuda a la comunidad consu educación y prestigio, utiliza procesos manuales para recabar toda lainformación concerniente al alumnado y profesores como son las matriculas, notastrimestrales y asistencia del personal docente que surge durante el año lectivo, loque entorpece la agilidad y veracidad del procesamiento de datos, disminuyendopor consiguiente la efectividad de los servicios, lo que provoca insatisfaccióntanto para los alumnos como para la Institución.La manipulación del Sistema Administrativo con recursos materiales como papel,plumas, borrador y calculadora es muy complicado para quien lo maneja, por estarazón el problema queda planteado de la siguiente manera:¿Cómo influye el desarrollo de un Sistema Informático de registros deMatriculación, control de Notas y Asistencia del personal Docente, en la EscuelaFiscal Mixta “21 de Mayo” de la ciudad de Portoviejo? 2
  • 17. 1.3 Objetivos.1.3.1 Objetivo General.Solucionar con la implementación de un sistema informático administrativo lasdificultades que ocasiona a las autoridades de la Escuela “21 de Mayo” el controlde sus procesos de administración mediante registros manuales.1.3.2 Objetivos Específicos. Facilitar al personal de la Escuela el proceso de registros de matriculación, notas y asistencia del personal docente. Permitir un manejo simple del control de asistencia y otros datos de los docentes de la Escuela. Permitir la obtención inmediata de reportes de matriculas, notas, asistencia, etc. Proporcionar a través del sistema el acceso a una información ordenada y actualizada del proceso administrativo de la institución. 3
  • 18. 1.4 BENEFICIARIOS1.4.1. DIRECTOSLas principales personas que se beneficiaran con la implementación del SistemaInformático es el área de Colecturía de la Escuela Fiscal Mixta “21 de Mayo” dela ciudad de Portoviejo Provincia de Manabí.1.4.2. INDIRECTOSUsuarios en general. 4
  • 19. CAPITULO II2. Marco Referencial.Como consecuencia de fuertes invierno ocurridos entre los años 1982 - 1983hubieron muchos damnificados, los que fueron ubicados en lo que hoy es laciudadela San Alejo.Viendo las necesidades de está nueva Ciudadela y ante gestiones de susmoradores se crea la escuela “21 de Mayo”, la que toma el nombre este plantel dela fecha en que fue creada el 21 de Mayo de 1984.1Funcionaba en un terreno prestado, en un canchón de caña sin piso totalmenteantipedagógico con 200 alumnos aproximadamente y como único profesor el Sr.Jorge Bello Saltos.Por el número elevado de alumnos, las autoridades educativas creyeronconveniente reajustar la escuela Cristóbal Colón, pasando la Sra. EstrellaZambrano Macías a laborar en esta escuela; además colaboraban varios jóvenes.Con el pasar del tiempo se fue incrementando el número de profesores y en laactualidad la Institución cuenta con 11 profesores titulares, 2 contratos, 1 conserjey la Directora es la Lcda. Carlota Andrade.1 Manual de la Escuela “21 de Mayo” 5
  • 20. 2.1 Marco Teórico.La investigación se basa en la problemática que tiene la Escuela Fiscal Mixta “21de Mayo” siendo uno de estos problemas la falta de un Sistema Informáticoadecuado a sus necesidades y que sus computadoras no son actualizadas y porende no cumplen eficientemente en el correcto trabajo del mismo.Por medio de un Sistema Informático que se basa en un Software que Controle losRegistros como son: matriculación, control de notas y asistencia del personaldocente. La Directora ha decidido que; para el mejor desarrollo y progreso de laInstitución, que se actualice sus computadoras con un software que proporcionelos registros ya mencionados y va hacer en el lenguaje de programación llamadoVisual Basic, es el lenguaje más utilizado y el más fácil que encuentre unprogramador, ya que contiene muchas herramientas necesarias para construirprogramas para Windows de forma sencilla, eficiente y lograr hacer accesible alos programadores de Basic la posibilidad de programar para Windows.Una serie de herramientas ha permitido, que con algunos pocos de clic sea posiblecrear ventanas de Windows, colocarle botones de comando, menús, cuadros detextos, listas, etc.Esto es para que exista una mejor distribución de entrega de reportes, ya que coneste Software será de mucha ayuda y facilitará de manera más rápida los registrosque dispone la Escuela Fiscal Mixta “21 de Mayo”. 6
  • 21. LA CONSTRUCCIÓN DE UNA APLICACIÓN EN WINDOWS CONVISUAL BASIC IMPLICA TRES PASOS DE PROGRAMACIÓN. Crear la interfaz de usuario mediante los controles de VISUAL BASIC. Establecer las características o propiedades de los elementos de dicha interfaz de usuario, medida que sea necesaria. Escribir el código del programa para uno o más elementos de la interfaz del usuario, a medida que sean necesarios.2.1.1 Diseño del Sistema.Se llevara a cabo el análisis de requisitos del programa que es una base de datosque registra la información que tiene en la Escuela Fiscal Mixta “21 de Mayo”.Para esto es necesario que el programa tenga la capacidad de acceder y crear unabase de datos, las cuales se usarán para mantener guardados los datos en el discoaun después de terminar la ejecución del programa deberá contar también confunciones que sean necesarios, el programa debe validar los diversos datos que seingresaran, estos deben estar acompañados con un respectivo mensaje que ayude acomprender su correcta utilización.El desempeño de Software se ha centrado en facilitar el ingreso, de acceder ymanipular los datos de la Escuela, en desarrollar el Software de manera que lleveel control de la información haciendo que se envié un mensaje de alerta cuando un 7
  • 22. registro es incorrecto y por último el programa debe hacer que el reporte sea elcorrecto.2.1.2 Objetivos del Diseño de SQL ServerLos clientes están buscando soluciones para sus problemas de negocios. 2Lamayoría de las "soluciones" de bases de datos solamente traen múltiples nivelesde costos y complejidad. La estrategia de Microsoft es la de hacer que SQL Serversea la base de datos más fácil de utilizar para construir, administrar e implementaraplicaciones de negocios. Esto significa tener que poner a disposición un modelode programación rápido y sencillo para desarrolladores, eliminando laadministración de base de datos para operaciones estándar, y suministrandoherramientas sofisticadas para operaciones más complejas.SQL Server disminuye el costo total de propiedad a través de características comoadministración multi-servidor y con una sola consola; ejecución y alerta detrabajos basadas en eventos; seguridad integrada; y scripting administrativo. Estaversión también libera al administrador de base de datos para aspectos mássofisticados del trabajo al automatizar las tareas de rutina. Al combinar estospoderosos servicios de administración con las nuevas características deconfiguración automática, Microsoft SQL Server es la elección ideal deautomatización de sucursales y aplicaciones de base de datos insertadas.2 www. Monografías.com/trabajos14/sqlserver/sqlserver.shtml 8
  • 23. Los clientes invierten en sistemas de administración de bases de datos, en formade aplicaciones escritas para esa base de datos y la educación que implica para laimplementación y administración. Esa inversión debe protegerse: a medida que elnegocio crece, la base de datos deberá crecer y manejar más datos, transacciones yusuarios. Los clientes también desean proteger las inversiones a medida queescalan aplicaciones de base de datos hacia equipos portátiles y sucursales.Para cumplir con estas necesidades, Microsoft ofrece un motor de base datosúnico que escala desde una computadora portátil que ejecuta Windows® 95 oWindows 98, hasta clusters de procesadores múltiples simétricos de terabyte queejecutan Windows NT Server Enterprise Edition. Todos estos sistemas mantienenla seguridad y confiabilidad que exigen los sistemas de negocios de misión crítica.Nueva para el lanzamiento de 7.0 es una versión de rastro de baja memoria concapacidades de replicación de multi-sitio. Se ajusta muy bien a las necesidadescada vez mayores del mercado de la computación móvil. Las otras característicastales como bloqueo a nivel de línea dinámico, el paralelismo intra-query, querydistribuido, y mejoras para las bases de datos muy grandes (VLDB) hacen que elSQL Server 7.0 sea la elección ideal para sistemas OLTP de alta tecnología ysistemas de data warehousing.Mientras los sistemas de procesamiento siguen siendo un componente clave paralas infraestructuras de bases de datos corporativas, las compañías también estáninvirtiendo bastante en mejorar la comprensión que tienen de sus datos. Laestrategia de Microsoft consiste en reducir el costo y la complejidad del data 9
  • 24. warehousing mientras hace que la tecnología sea más accesible a una mayorcantidad de público.Microsoft ha establecido un enfoque total a todo el proceso de data warehousing(almacenamiento de datos). El objetivo es facilitar la construcción y diseño desoluciones de data warehousing costo efectivas a través de una combinación detecnologías, servicios y alianzas con los proveedores.La Microsoft Alliance for Data Warehousing es una coalición que une a loslíderes en la industria de almacenamiento de datos y aplicaciones. El MicrosoftData Warehousing Framework constituye un conjunto de interfaces deprogramación diseñadas para simplificar la integración y administración desoluciones de data warehousing.Las innovaciones del producto en SQL Server 7.0 mejoran el proceso de datawarehousing: Servicios de Transformación de Datos; manejo mejorado de lasconsultas complejas y bases de datos muy grandes; procesamiento analítico enlínea e integrado; y el Microsoft Repository. Otro componente esencial es elsoporte extenso para integración de terceros. 10
  • 25. 2.1.3 Visual Basic3 Este lenguaje de programación es desarrollado por Alan Cooper para Microsoft.El lenguaje de programación es un dialecto de BASIC, con importantes añadidos.Su primera versión fue presentada en 1991 con la intención de simplificar laprogramación utilizando un ambiente de desarrollo completamente gráfico quefacilitara la creación de interfaces gráficas y en cierta medida también laprogramación misma. Desde el 2001 Microsoft ha propuesto abandonar eldesarrollo basado en la API Win32 y pasar a trabajar sobre un framework o marcocomún de librerías independiente de la version del sistema operativo, .NETFramework, a través de Visual Basic .NET (y otros lenguajes como C Sharp (C#)de fácil transición de código entre ellos) que presenta serias incompatibilidadescon el código Visual Basic existente.Visual Basic constituye un IDE (entorno de desarrollo integrado o en inglésIntegrated Development Enviroment) que ha sido empaquetado como unprograma de aplicación, es decir, consiste en un editor de código (programa donde3 http://es. wikipedia.org/wiki/Visual_Basic 11
  • 26. se escribe el código fuente), un depurador (programa que corrige errores en elcódigo fuente para que pueda ser bien compilado), un compilador (programa quetraduce el código fuente a lenguaje de máquina), y un constructor de interfazgráfica o GUI (es una forma de programar en la que no es necesario escribir elcódigo para la parte gráfica del programa, sino que se puede hacer de formavisual). 12
  • 27. CAPITULO III3. Diseño Metodológico.Para realizar la investigación se consideraron los siguientes aspectos: Metodologíay Técnicas3.1 Metodología.La metodología que se aplicará son dos, de campo y el bibliográfico. Campo.- son un conjunto de métodos, técnicas y procedimientos sistemáticos que se utilizarán para obtener respuestas al problema planteado. Bibliográfico.- esta es de tipo bibliográfico por cuánto el desarrollo de la investigación se apoya en información de libros, Internet y en folletos, etc.3.2 Técnicas.Se aplicó la siguiente técnica: Técnicas de entrevista.- Permitirá recopilar información en forma verbal, a través de preguntas previamente elaboradas. Se entrevistarán de forma individual al personal de la Escuela Fiscal “21 de Mayo”, quienes serán los principales beneficiados del proyecto. 13
  • 28. 3.3 Resultados Obtenidos Con el desarrollo del sistema informático para la Escuela “21 de Mayo” se logró solucionar las dificultades que se originaban al momento de realizar los procesos de matriculación, reporte de notas y asistencia del personal. El sistema desarrollado permite un manejo fácil y eficiente del control de asistencia del personal, así como también datos de los alumnos de la Escuela. Se logro realizar un sistema cuyos resultados obtenidos sean fiables al momento de generar reportes de matriculas, notas, asistencias, entre otros. Proporcionar a través del sistema el acceso a una información ordenada y actualizada del proceso administrativo de la institución 14
  • 29. 3.3 Presupuesto. Costo Sub.Nro Descripción Cantidad Unitario Total1 Material de escritorio y oficina 1 30.00 $ 30.002 Copias 2334 0.03 $ 70.003 Transporte 1 30.00 $ 30.004 Tinta para impresora 3 25.00 $ 75.005 Impresión 1 65.00 $ 65.006 Empastadas de Tesis 9 7.00 $ 63.007 Alquiler de Internet y Computadora 1 60.00 $ 60.008 Material bibliográfico 1 50.00 $ 50.009 Remas de Hojas 7 4.00 $ 28.00 SUMAN $ 471.00 IMPREVISTOS 10% $ 47.10 TOTAL $ 518.10SON: QUINIENTOS DIECIOCHO 10/100 DOLARES. 15
  • 30. CAPITULO IV4.1 CONCLUSIONES Y RECOMENDACIONES4.1.1 CONCLUSIONESDespués de concluir con nuestro proyecto “DESARROLLO DE UN SISTEMAINFORMATICO ADMINISTRATIVO PARA LA ESCUELA FISCALMIXTA 21 DE MAYO DEL CANTÓN PORTOVIEJO, PROVINCIA DEMANABÍ”, se llegó a las siguientes conclusiones:  Se logró cumplir con el desarrollo de un sistema que permita optimizar el trabajo de matriculación, reporte de notas, asistencia del personal docente y demás procesos que se realizan en la Escuela.  El sistema cuenta con varias funcionabilidades que facilitan al usuario la comprensión y manejo del mismo.  El desarrollo del sistema cuenta con un manual de usuario que tiene la documentación necesaria que servirá a la persona encargada de administrar el sistema. 16
  • 31. 4.1.2 RECOMENDACIONESPara la debida utilización del sistema es recomendable tener en cuenta lassiguientes recomendaciones:  Que el Administrador de sistema tenga conocimientos básicos en Informática y una previa capacitación a la utilización del mismo.  Para cualquier ayuda utilizar el manual de usuario.  El administrador debe ser el único responsable de la información que se ingresa al sistema para que no hayan confusiones.  Para que la implementación del sistema sea efectiva es recomendable que la información se maneje con gran seguridad. 17
  • 32. CAPITULO V5. PROPUESTA5.1. DESCRIPCION GENERAL DEL SISTEMAEl programa llamado Ejecutable.exe es un sistema informático que sirve parallevar registros de matriculación, reporte de notas y asistencia del personaldocente de la Escuela Fiscal Mixta “21 de Mayo” de la ciudad de PortoviejoProvincia de Manabí.El presente sistema informático lo conforman los siguientes módulos: Formularios de Matriculación: Este modulo nos permite registrar los datos del estudiante, representante y matriculas que hubiesen en ese periodo. Formularios de Ingresos de Notas: Nos permite ingresar notas y tener un reporte confiable de las mismas. Formularios de Control de Asistencia del Docente: Permite llevar el control diario de asistencia del docente.5.2. DETERMINACION DE REQUERIMIENTOSe requiere de un sistema informático basado en computadoras, para ingresarmatriculas, reporte de notas y asistencia del personal docente para la EscuelaFiscal Mixta “21 de Mayo” de la ciudad de Portoviejo Provincia de Manabí.Los principales requerimientos del equipo de computación que se necesitan paraun óptimo funcionamiento son:Marca Mainborad: IntelTipo de Procesador: Dual Core de 2.0 GHz o SuperiorTamaño de Disco Duro: 160 GB de Espacio Inicial o SuperiorMemoria RAM: 1 GB o SuperiorMonitor: VGA o SVGAUnidad de CD: DVD-RomImpresora: Opcional 18
  • 33. 5.3 RELACIONES DE LAS BASES DE DATOS 19
  • 34. 5.4 CRONOGRAMA VALORADO
  • 35. SISTEMAMatriculación Notas Asistencias Configuración Registros Registros Registros Registros Estudiantes Notas de Estudiante Asistencias de Periodos Profesores Lectivos Representantes Informes Grados Informes Matricula Informe de Notas x Materias Alumno Resumido Informe de Asistencias Informes Paralelos de Profesores Informe de Notas x Profesores Informe De Alumno Alumnos Matriculados Parciales Informe de Notas x Trimestre Resumido Paralelos Informe de Notas x Profesores Trimestre Usuarios Informe Resumido de notas x Materias y Establecer Periodo Activo trimestres Bloquear Establecer Configuraciones Establecer materias a Profesor Establecer Permisos de 21 Usuarios
  • 36. 5.5 Bibliografía. BATINI, CERI Y NAVATHE. Diseño Conceptual de Bases de Datos. Adisson – Wesley. 1994. Internet de la página www.Google.com MICROSOFT PRESS. "Manual de Programador Visual Basic 6.0" EDITORIAL MC. Graw-Hill. 2003. MSDN. MICROSOFT "Ayuda de Visual Basic 6.0". Microsoft Coorpor. 2003. TIZNADO Santana Marco Antonio. Visual Basic. McGraww-Hill. 1997. VAQUERO, Antonio. Microsoft Visual BASIC 6.0. Referencias de Controles. Primera Edición McGraw Hill. España. 1993. 21 15
  • 37. ANEXOS
  • 38. MANUAL DELPROGRAMADOR
  • 39. ÍNDICE PÁG.1. CODIFICACIÓN DEL PROGRAMA 11.1 FORMULARIO DE ESTUDIANTE 11.2 FORMULARIO PRINCIPAL 21.3 FORMULARIO REGISTRO DE ESTUDIANTES 41.5 FORMULARIO REGISTRO SISTENCIAS DE PROFESORES 121.6 FORMULARIO BLOQUEO DE SISTEMA 221.7 FORMULARIO DE CONF. DE MATERIAS A GRADO 231.8 FORMULARIO DE REGISTRO DE MATERIAS 251.9 FORMULARIOS CONFIGURACION MATERIAS PROFESOR 271.10 FORMULARIOS REGISTRO DE MATRICULAS 401.11 FORMULARIO REGISTRO DE GRADOS 491.12 FORMULARIO REGISTRO DE NOTAS 511.13 FORMULARIO INFORME DE NOTAS RESUMIDO X MATERIAS Y TRIMESTRES 701.14 FORMULARIO REGISTRO DE PARALELOS 781.15 FORMULARIO REGISTRO DE TRIMESTRES O PARCIALES 831.16 FORMULARIO ESTABLCER PERIODO ACTIVO 851.17 FORMULARIO REGISTRO DE PERIODOS 851.18 FORMULARIO PERMISOS DE USUARIOS 881.19 FORMULARIO REGISTRO DE PROFESORES 891.20 FORMULARIO INFORME ASISTENCIAS DE PROFESORES 911.21 FORMULARIO INFORME DE NOTAS X TRIMESTRE 941.22 FORMULARIO INFORME AUMNOS MATRICULADOS 961.23 FORMULARIO INFORME DE NOTAS X ALUMNO RESUMIDO 991.24 FORMULARIO INFORME DE NOTAS DE ALUMNOS X 101 TRIMESTRE1.25 FORMULARIO INFORME DE NOTAS X TRIMESTRE 104 RESUMIDO1.26 FORMULARIO INFORME DE NOTAS X TRIMESTRE 1071.27 FORMULARIO REGISTRO DE REPRESENTANTES 1091.28 FORMULARIO REGISTRO DE USUARIOS 1121.29 FORMULARIO ESTABLECER CONFIGURACIONES 1141.30 FORMULARIO DE BUSQUEDA 1171.31 VARIABLE GLOBALES 1211.32 FUNCIONES GLOBALES 123
  • 40. 1. CODIFICACION DEL PROGRAMA1.1 FORMULARIO DE INGRESO AL SISTEMADim aux As BooleanPrivate Sub cmb_usuarios_Click()Cod_usuario = ExtraeIDCombo(cmb_usuarios)End SubPrivate Sub cmdCancel_Click()If base.State = 1 Then base.CloseEnd IfEndEnd SubPrivate Sub cmdOK_Click()Dim STRSQL As StringIf cmb_usuarios.ListIndex = -1 Then Exit SubSTRSQL = "SELECT COUNT(*) as total FROM USUARIOS WHEREcodigo=" & ExtraeIDCombo(cmb_usuarios) & " and upper(clave) = " &UCase(txt_clave.TEXT) & ""Set tabla = base.Execute(STRSQL)If tabla.Fields(0).Value > 0 Then aux = True tabla.Close Set tabla = Nothing Load MDIForm1 MDIForm1.Show frm_fondo.Show Unload Me Exit SubEnd Iftxt_clave.TEXT = ""MsgBox ("datos Incorrectos")tabla.CloseSet tabla = NothingEnd SubPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = 13 Then SendKeys vbTabEnd SubPrivate Sub Form_Load()cod_usu = Leer_Ini(ruta_ini, "usuario", "")aux = FalseLLENACOMBO cmb_usuarios, "select codigo,nombre from usuarios"End SubPrivate Sub Form_Unload(Cancel As Integer)If base.State = 1 And aux = False Then 1
  • 41. base.CloseEnd IfEnd Sub1.2 FORMULARIO PRINCIPALPrivate Sub m_a_i_inf_asis_alumno_Click()abrir_form form_rep_asistencias_alumno, "form_rep_asistencias_alumno"End SubPrivate Sub m_a_i_inf_asis_profe_Click()abrir_form form_rep_asistencias_profesores, "form_rep_asistencias_profesores"End SubPrivate Sub m_a_r_asis_estudiante_Click()abrir_form Form_asistencias_alumnos, "Form_asistencias_alumnos"End SubPrivate Sub m_a_r_asis_profesores_Click()abrir_form Form_asistencias_profesores, "Form_asistencias_profesores"End SubPrivate Sub m_bloquear_Click()Load form_Login2form_Login2.Show vbModalEnd SubPrivate Sub m_c_config_Click()abrir_form frm_config, "frm_config"End SubPrivate Sub m_c_mater_grados_Click()abrir_form form_materia_grado, "form_materia_grado"End SubPrivate Sub m_c_materia_profe_Click()abrir_form Form_materias_profe, "Form_materias_profe"End SubPrivate Sub m_c_periodoactivo_Click()abrir_form form_periodo_activo, "form_periodo_activo"End SubPrivate Sub m_c_r_areas_Click()abrir_form form_permisos2, "form_permisos2"End SubPrivate Sub m_c_r_materias_Click()abrir_form Form_materias, "Form_materias"End SubPrivate Sub m_c_r_niveles_Click()abrir_form Form_niveles, "Form_niveles"End SubPrivate Sub m_c_r_paralelos_Click()abrir_form Form_paralelos, "Form_paralelos" 2
  • 42. End SubPrivate Sub m_c_r_parciales_Click()abrir_form Form_parciales, "Form_parciales"End SubPrivate Sub m_c_r_periodos_Click()abrir_form Form_periodos, "Form_periodos"End SubPrivate Sub m_c_r_profesores_Click()abrir_form Form_profesores, "Form_profesores"End SubPrivate Sub m_c_r_uauarios_Click()abrir_form Form_Usuarios, "Form_Usuarios"End SubPrivate Sub m_m_i_inf_matri_Click()abrir_form form_rep_estudiantes_matriculados,"form_rep_estudiantes_matriculados"End SubPrivate Sub m_m_r_estudiantes_Click()abrir_form Form_estudiante, "Form_estudiante"End SubPrivate Sub m_m_r_matricual_otros_Click()abrir_form Form_matricula2, "Form_matricula2"End SubPrivate Sub m_m_r_matricula_Click()abrir_form Form_matricula, "Form_matricula"End SubPrivate Sub m_m_r_representantes_Click()abrir_form Form_representante, "Form_representante"End SubPrivate Sub m_n_i_inf_concentrado_Click()abrir_form form_rep_notas_concentrado, "form_rep_notas_concentrado"End SubPrivate Sub m_n_i_inf_notas_x_estudiante_Click()abrir_form form_rep_notas_alumno_x_trimestre,"form_rep_notas_alumno_x_trimestre"End SubPrivate Sub m_n_i_inf_notas_x_materias_trimestre_Click()abrir_form Form_notas_materias, "Form_notas_materias"End SubPrivate Sub m_n_i_inf_notas_x_trimestre_Click()abrir_form form_rep_notas_x_trimestre, "form_rep_notas_x_trimestre"End SubPrivate Sub m_n_i_notas_estu_concentrado_Click()abrir_form form_rep_notas_alumno_concentrado,"form_rep_notas_alumno_concentrado"End SubPrivate Sub m_n_notas_estudiante_Click()abrir_form Form_notas, "Form_notas" 3
  • 43. End SubPrivate Sub m_salir_Click()Unload MeEnd SubPrivate Sub MDIForm_Load()Set apli = New ApplicationCrae_aplicacion_excelNOMBRE_ESCUELA = Extrae_config("8")Set tabla = base.Execute("SELECT NOMBRE FROM PERIODO WHERECODIGO=" & Gperiodo & "")If tabla.EOF = False Then NOMBRE_PERIODO = tabla.Fields(0).ValueEnd Iftabla.CloseSet tabla = NothingMe.Caption = "Systema de Control Escolar - " & NOMBRE_PERIODOEnd SubPrivate Sub Crae_aplicacion_excel()Set Apli = New Excel.ApplicationEnd SubPrivate Sub MDIForm_Unload(Cancel As Integer)If base.State = 1 Then base.CloseEnd IfShell "TASKKILL /F /IM EXCEL.exe", vbMinimizedNoFocusEnd Sub1.3 FORMULARIO REGISTRO DE ESTUDIANTESDim strtabla As StringDim camposKP As StringDim nuevo_reg As StringDim reg_actual As StringDim filtro As StringDim opcion_foto As StringOption ExplicitDim DataFile As IntegerDim Chunk() As ByteConst conChunkSize As Integer = 16384Dim ar As FieldDim accion As StringPublic Sub Set_Accion(valor As String) accion = valorEnd Sub 4
  • 44. Public Function Get_Accion() As String Get_Accion = accionEnd FunctionPublic Function Get_filtro() As String Get_filtro = filtroEnd FunctionPublic Function Get_nuevo() As String Get_nuevo = nuevo_regEnd FunctionPublic Sub Set_Reg_actual(valor As String) reg_actual = valorEnd SubPublic Function Get_tabla() As String Get_tabla = strtablaEnd FunctionPublic Function Get_camposPK() As String Get_camposPK = camposKPEnd FunctionPublic Sub SALIR()Unload MeEnd SubPrivate Sub cmd_anterior_Click()LLenaDatosForm 3End SubPrivate Sub cmd_busca_madre_Click()On Error GoTo SALIRBusqueda_sql "SELECT codigo,nombre,cedula,direccion FROM representantewhere sexo=2"Busqueda_where " and codigo+NOMBRE+cedula "Busqueda_orden "2"Busqueda_Ncampos 4Busqueda_campos 0, "Codigo", 5Busqueda_campos 1, "Nombre", 40Busqueda_campos 2, "Cedula", 20Busqueda_campos 3, "Direccion", 60Busqueda_indice 0Busqueda.boton = TrueLoad frmbusquedafrmbusqueda.Show vbModalIf Busqueda.retorna <> "" Then If Busqueda.retorna <> "Abrir" Then txt_madre.TEXT = Busqueda.retorna If Busqueda.retorna = "Abrir" Then Load Form_representante Form_representante.Show End If 5
  • 45. End IfExit SubSALIR:End SubPrivate Sub cmd_busca_padre_Click()On Error GoTo SALIRBusqueda_sql "SELECT codigo,nombre,Cedula,direccion FROM representantewhere sexo=1"Busqueda_where " and codigo+NOMBRE+cedula "Busqueda_orden "2"Busqueda_Ncampos 4Busqueda_campos 0, "Codigo", 5Busqueda_campos 1, "Nombre", 40Busqueda_campos 2, "Cedula", 20Busqueda_campos 3, "Direccion", 60Busqueda_indice 0Busqueda.boton = TrueLoad frmbusquedafrmbusqueda.Show vbModalIf Busqueda.retorna <> "" Then If Busqueda.retorna <> "Abrir" Then txt_padre.TEXT = Busqueda.retorna End If If Busqueda.retorna = "Abrir" Then Load Form_representante Form_representante.Show End IfEnd IfExit SubSALIR:End SubPrivate Sub cmd_busca_repre_Click()On Error GoTo SALIRBusqueda_sql "SELECT codigo,nombre,cedula,direccion FROM representante "Busqueda_where "Where codigo+NOMBRE+cedula "Busqueda_orden "2"Busqueda_Ncampos 4Busqueda_campos 0, "Codigo", 5Busqueda_campos 1, "Nombre", 40Busqueda_campos 2, "Cedula", 20Busqueda_campos 3, "Direccion", 60Busqueda_indice 0Busqueda.boton = TrueLoad frmbusquedafrmbusqueda.Show vbModal 6
  • 46. If Busqueda.retorna <> "" Then If Busqueda.retorna <> "Abrir" Then txt_repre.TEXT = Busqueda.retorna If Busqueda.retorna = "Abrir" Then Load Form_representante Form_representante.Show End IfEnd IfExit SubSALIR:End SubPrivate Sub cmd_buscar_Click()On Error GoTo SALIRBusqueda_sql "SELECT codigo,NOMBREs,telefono,direccion FROM estudiante"Busqueda_where " WHERE codigo+NOMBREs "Busqueda_orden "2"Busqueda_Ncampos 4Busqueda_campos 0, "Codigo", 5Busqueda_campos 1, "Nombre", 40Busqueda_campos 2, "Telefono", 15Busqueda_campos 3, "Direccion", 40Busqueda_indice 0Load frmbusquedafrmbusqueda.Show vbModalIf Busqueda.retorna <> "" Then LLenaDatosForm 0, Busqueda.retornaEnd IfExit SubSALIR:ERRORESEnd SubPrivate Sub cmd_cancelar_Click()CancelarEnd SubPrivate Sub cmd_eliminar_Click()Elimna_regEnd SubPrivate Sub cmd_guarda_img_Click()Dim SQL12 As StringDim cade As StringGuardarcade = VerificarIf cade <> "" Then Exit SubIf opcion_foto = "0" Then 7
  • 47. SQL12 = "select * from imagenes where estudiante=" & eti_codigo.Caption &" and periodo=" & Gperiodo & ""Else SQL12 = "select * from imagenes where estudiante=" & eti_codigo.Caption &""End IfSet tabla_aux = base.Execute(SQL12)If tabla_aux.EOF = True Then SQL12 = "INSERT INTO IMAGENES(ESTUDIANTE,periodo) VALUES("& eti_codigo.Caption & "," & Gperiodo & " )" base.Execute (SQL12)End Iftabla_aux.CloseSet tabla_aux = NothingIf opcion_foto = "0" Then SQL12 = "select foto from imagenes where estudiante=" & eti_codigo.Caption& " and periodo=" & Gperiodo & ""Else SQL12 = "select foto from imagenes where estudiante=" & eti_codigo.Caption& ""End Iftabla_aux.Open SQL12, base, adOpenDynamic, adLockOptimisticGuardarBinary tabla_aux, foto, 0tabla_aux.updatetabla_aux.CloseSet tabla_aux = NothingEnd SubPrivate Sub cmd_guardar_Click()GuardarEnd SubPrivate Sub cmd_img_Click()On Error Resume NextIf eti_codigo.Caption = "" Then Exit Subcdl.CancelError = Truecdl.Filter = "imagenes de mapa de Bit *.bmp|*.bmp|imagenes *.jpg|*.jpg"cdl.FileName = "NOTAS " & cmb_materia.Text & " " &ExtraeIDCombo(cmb_grado) & cmb_paralelo.Text & " " &ExtraeIDCombo(cmb_parcial) & "º TRIMESTRE"cdl.ShowOpentxt_foto.TEXT = cdl.FileTitlefoto.Picture = LoadPicture(cdl.FileName)End SubPrivate Sub cmd_nuevo_Click() 8
  • 48. NuevoEnd SubPrivate Sub cmd_primero_Click()LLenaDatosForm 1End SubPrivate Sub cmd_salir_Click()SALIREnd SubPrivate Sub cmd_siguiente_Click()LLenaDatosForm 4End SubPrivate Sub cmd_ultimo_Click()LLenaDatosForm 2End SubPrivate Sub eti_codigo_Change()Dim SQL12 As StringIf eti_codigo.Caption <> "" Then If opcion_foto = "0" Then SQL12 = "SELECT top 1 FOTO FROM IMAGENES WHEREESTUDIANTE=" & eti_codigo.Caption & " and periodo=" & Gperiodo & "" Else SQL12 = "SELECT top 1 FOTO FROM IMAGENES WHEREESTUDIANTE=" & eti_codigo.Caption & "" End If Set tabla_aux = base.Execute(SQL12) If tabla_aux.EOF = False Then LeerBinary tabla_aux, foto, 0 tabla_aux.MoveNext Else Set foto.Picture = Nothing End If tabla_aux.Close Set tabla_aux = NothingElse Set foto.Picture = NothingEnd IfEnd SubPrivate Sub Form_Activate()Set FRM = MeEnd SubPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = 13 Then SendKeys vbTabEnd SubPrivate Sub Form_Load() 9
  • 49. Dim ruta As Stringruta = App.Path & "iconoslisto.gif"img_listo.Picture = LoadPicture(ruta)filtro = ""opcion_foto = Extrae_config("17")strtabla = "estudiante"camposKP = "|codigo|"nuevo_reg = "codigo"LLENACOMBO cmb_sexo, "select codigo,nombre from tsexo"Set FRM = MeLLenaDatosFormEnd SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)KeyAscii = SoloNombre(KeyAscii)End SubPrivate Sub Text2_Change()If Cedula(Text2) = False Then img_listo.Visible = FalseElse img_listo.Visible = TrueEnd IfEnd SubPrivate Sub Text2_KeyPress(KeyAscii As Integer)KeyAscii = SoloCedula(KeyAscii)End SubPrivate Sub txt_foto_Change()Dim SQL12 As StringIf eti_codigo.Caption <> "" Then If opcion_foto = "0" Then SQL12 = "SELECT top 1 FOTO FROM IMAGENES WHEREESTUDIANTE=" & eti_codigo.Caption & " and periodo=" & Gperiodo & "" Else SQL12 = "SELECT top 1 FOTO FROM IMAGENES WHEREESTUDIANTE=" & eti_codigo.Caption & "" End If Set tabla_aux = base.Execute(SQL12) If tabla_aux.EOF = False Then LeerBinary tabla_aux, foto, 0 tabla_aux.MoveNext Else Set foto.Picture = Nothing End If tabla_aux.Close Set tabla_aux = NothingElse Set foto.Picture = Nothing 10
  • 50. End IfEnd SubPrivate Sub txt_madre_Change()Dim SQL12 As StringSQL12 = "select nombre from representante where codigo=" & txt_madre.TEXT& " "Set tabla_aux = base.Execute(SQL12)If tabla_aux.EOF = False Then eti_madre.Caption = tabla_aux.Fields(0).ValueElse eti_madre.Caption = ""End Iftabla_aux.CloseSet tabla_aux = NothingEnd SubPrivate Sub txt_padre_Change()Dim SQL12 As StringSQL12 = "select nombre from representante where codigo=" & txt_padre.TEXT& " "Set tabla_aux = base.Execute(SQL12)If tabla_aux.EOF = False Then eti_padre.Caption = tabla_aux.Fields(0).ValueElse eti_padre.Caption = ""End Iftabla_aux.CloseSet tabla_aux = NothingEnd SubPrivate Sub txt_repre_Change()Dim SQL12 As StringSQL12 = "select nombre from representante where codigo=" & txt_repre.TEXT& " "Set tabla_aux = base.Execute(SQL12)If tabla_aux.EOF = False Then eti_repre.Caption = tabla_aux.Fields(0).ValueElse eti_repre.Caption = ""End Iftabla_aux.CloseSet tabla_aux = NothingEnd SubPrivate Sub txtdireccion_KeyPress(KeyAscii As Integer)KeyAscii = SoloTexto(KeyAscii)End Sub 11
  • 51. Private Sub txtnombres_KeyPress(KeyAscii As Integer)KeyAscii = SoloNombre(KeyAscii)End SubPrivate Sub txttelefono_KeyPress(KeyAscii As Integer)KeyAscii = SoloNumero(KeyAscii)End Sub1.5 FORMULARIO REGISTRO SISTENCIAS DE PROFESORESDim d_grid(100) As DATOS_GRIDDim Libro As Excel.WorkbookDim strtabla As StringDim HOJA As Excel.WorksheetDim a_col As IntegerDim a_fil As IntegerPrivate Sub CARGA_GRID(nombre As String, FILA As Integer, valor AsVariant) Dim I As Integer For I = 0 To GRID.Cols - 1 If UCase(d_grid(I).campo_col) = UCase(nombre) Then GRID.TextMatrix(FILA, d_grid(I).n_col) = valor If d_grid(I).revisar = True Then GRID.Row = FILA GRID.col = col_nombre(d_grid(I).cabecera_col) If valor = "S" Then Set GRID.CellPicture = LoadPicture(App.Path &"iconoschksi.bmp") Else Set GRID.CellPicture = LoadPicture(App.Path &"iconoschkno.bmp") End If GRID.CellPictureAlignment = 3 End If End If NextEnd SubPrivate Sub LIMPIA_GRID()Dim I, c As IntegerGRID.Rows = 2For c = 0 To GRID.Cols - 1 GRID.TextMatrix(1, c) = ""NextEnd SubPrivate Function col_nombre(nombre As String) As Integer Dim I As Integer 12
  • 52. For I = 0 To GRID.Cols - 1 If UCase(d_grid(I).campo_col) = UCase(nombre) Then col_nombre = d_grid(I).n_col Exit Function End If NextEnd FunctionPrivate Function row_valor(valor As String, c As Integer) As Integer Dim I As Integer For I = 0 To GRID.Rows - 1 If GRID.TextMatrix(I, c) = UCase(valor) Then row_valor = I Exit Function End If NextEnd FunctionPrivate Function EXITE_ASISTENCIA(FILA As Integer) As BooleanDim SQL1, strand As Stringstrand = " "EXITE_ASISTENCIA = FalseSQL1 = "select count(*) as UNOS from " & strtabla & " where "For I = 0 To GRID.Cols - 1 If d_grid(I).clave = True Then SQL1 = SQL1 & strand & d_grid(I).campo_col & " = " &GRID.TextMatrix(FILA, d_grid(I).n_col) & "" strand = " AND " End IfNextSet tabla = base.Execute(SQL1)If tabla.Fields(0).Value <> 0 Then EXITE_ASISTENCIA = TrueEnd Iftabla.CloseSet tabla = NothingEnd FunctionPrivate Function genera_INSERT(FILA As Integer) As StringDim SQL1, SQL2, strCOMA As StringstrCOMA = " "SQL1 = "INSERT INTO " & strtabla & "("SQL2 = " VALUES ("For I = 0 To GRID.Cols - 1 If d_grid(I).insertable = True Then SQL1 = SQL1 & strCOMA & d_grid(I).campo_col SQL2 = SQL2 & strCOMA & "" & GRID.TextMatrix(FILA,d_grid(I).n_col) & "" strCOMA = "," End If 13
  • 53. NextSQL1 = SQL1 & ") "SQL2 = SQL2 & ") "SQL1 = SQL1 & SQL2genera_INSERT = SQL1End FunctionPrivate Function genera_UPDATE(FILA As Integer) As StringDim SQL1, SQL2, strCOMA, strand As StringstrCOMA = " "strand = " "SQL1 = "UPDATE " & strtabla & " set "SQL2 = " WHERE "For I = 0 To GRID.Cols - 1 If d_grid(I).insertable = True And d_grid(I).clave = False Then SQL1 = SQL1 & strCOMA & d_grid(I).campo_col & "=" &GRID.TextMatrix(FILA, d_grid(I).n_col) & "" strCOMA = "," End If If d_grid(I).clave = True Then SQL2 = SQL2 & strand & d_grid(I).campo_col & " = " &GRID.TextMatrix(FILA, d_grid(I).n_col) & "" strand = " AND " End IfNextSQL1 = SQL1 & " "SQL2 = SQL2 & " "SQL1 = SQL1 & SQL2genera_UPDATE = SQL1End FunctionPrivate Sub cmd_entrada_Click()GRID.TextMatrix(a_fil, col_nombre("hora_e")) = lbl_hora.Captioncmd_entrada.Enabled = FalseEnd SubPrivate Sub cmd_guardar_Click()Dim SQL1, SQL2, SQL3 As StringDim FILA, I As IntegerIf GRID.TextMatrix(1, col_nombre("periodo")) <> "" And GRID.TextMatrix(1,col_nombre("profesor")) <> "" And GRID.TextMatrix(1, col_nombre("fecha"))<> "" Then If EXITE_ASISTENCIA(1) = True Then If Permiso("M", Me.Name) = False Then Exit Sub End IfEnd IfFor I = 1 To GRID.Rows - 1 14
  • 54. If GRID.TextMatrix(I, col_nombre("periodo")) <> "" And GRID.TextMatrix(I,col_nombre("profesor")) <> "" And GRID.TextMatrix(I, col_nombre("fecha"))<> "" Then If EXITE_ASISTENCIA(I) = True Then SQL1 = genera_UPDATE(I) Else SQL1 = genera_INSERT(I) End If base.Execute (SQL1) End IfNextEnd SubPrivate Sub cmd_procesar_Click()procesarEnd SubPrivate Sub procesar()Dim SQL1, SQL2 As StringDim FILA As Integertxt.Visible = FalseLIMPIA_GRIDIf cmb_grado.ListIndex = -1 Or cmb_paralelo.ListIndex = -1 Then Exit SubSQL1 = "select P.codigo as profesor,P.nombre,A.periodo as periodo,A.fecha asfecha,isnull(A.estado,S) as estado,isnull(A.justificada,N) asjustificada,isnull(A.atraso,N)as atraso,isnull(A.observacion,) asobservacion,isnull(A.hora_e,00:00:00) as hora_e,isnull(A.hora_s,00:00:00) ashora_s from profesor P left outer join asistencias_P A on P.codigo=A.profesorwhere A.fecha=" & dtp_fecha.Value & " and A.periodo=" & Gperiodo & "order by P.nombre"SQL1 = "select p.codigo as profesor,p.nombre,periodo=" & Gperiodo &",fecha=" & dtp_fecha.Value & ",estado=isnull((select estado from asistencias_pwhere profesor=p.codigo and periodo=" & Gperiodo & " and fecha=" &dtp_fecha.Value & "),S),justificada=isnull((select justificada from asistencias_pwhere profesor=p.codigo and periodo=" & Gperiodo & " and fecha=" &dtp_fecha.Value & "),N),atraso=isnull((select atraso from asistencias_p whereprofesor=p.codigo and periodo=" & Gperiodo & " and fecha=" &dtp_fecha.Value & "),N) "SQL1 = SQL1 & ",observacion=isnull((select observacion from asistencias_pwhere profesor=p.codigo and periodo=" & Gperiodo & " and fecha=" &dtp_fecha.Value & "),),hora_e=isnull((select hora_e from asistencias_p whereprofesor=p.codigo and periodo=" & Gperiodo & " and fecha=" &dtp_fecha.Value & "),00:00:00),hora_s=isnull((select hora_s from asistencias_pwhere profesor=p.codigo and periodo=" & Gperiodo & " and fecha=" &dtp_fecha.Value & "),00:00:00) from profesor P"SQL2 = "select P.codigo as profesor,P.nombre," & Gperiodo & " as periodo," &dtp_fecha.Value & " as fecha,S as estado,N as justificada,N as atraso, asobservacion,00:00:00 as hora_e ,00:00:00 as hora_s from profesor P order byP.nombre" 15
  • 55. Set tabla = base.Execute(SQL1)If tabla.EOF = True Then tabla.Close Set tabla = Nothing Set tabla = base.Execute(SQL2) If tabla.EOF = True Then tabla.Close Set tabla = Nothing MsgBox "No existen Estudiantes Matriculados", vbInformation, "SISTEMA" Exit Sub End IfEnd IfFILA = 1Do Until tabla.EOF = True For I = 0 To tabla.Fields.Count - 1 CARGA_GRID tabla.Fields.Item(I).Name, FILA, tabla.Fields(I).Value Next GRID.TextMatrix(FILA, col_nombre("N_lista")) = FILA tabla.MoveNext If tabla.EOF = False Then FILA = FILA + 1 GRID.Rows = GRID.Rows + 1 End IfLooptabla.CloseSet tabla = NothingEnd SubPrivate Sub cmd_salida_Click()GRID.TextMatrix(a_fil, col_nombre("hora_s")) = lbl_hora.Captioncmd_salida.Enabled = FalseEnd SubPrivate Sub cmd_salir_Click()SALIREnd SubPublic Sub SALIR()Unload MeEnd SubPrivate Sub dtp_Change()On Error Resume NextGRID.TextMatrix(a_fil, a_col) = dtp.ValueEnd Sub 16
  • 56. Private Sub dtp_fecha_Change()procesarEnd SubPrivate Sub dtp_fecha_Click()cmd_entrada.Enabled = Falsecmd_salida.Enabled = FalseprocesarEnd SubPrivate Sub Form_Load()Me.Top = 0Me.Left = 10coloca_tolti Mestrtabla = "Asistencias_P"DAT_gridCONF_GRIDdtp_fecha.Value = Dateprocesarlbl_hora.Caption = TimeEnd SubPrivate Sub DAT_grid()GRID.Cols = 14d_grid(0).n_col = 0d_grid(0).ancho_col = 0d_grid(0).cabecera_col = ""d_grid(0).campo_col = "periodo"d_grid(0).campo_col2 = ""d_grid(0).revisar = Falsed_grid(0).clave = Trued_grid(0).insertable = Trued_grid(0).Obligatorio = Falsed_grid(0).editable = Falsed_grid(1).n_col = 1d_grid(1).ancho_col = 0d_grid(1).cabecera_col = ""d_grid(1).campo_col = "profesor"d_grid(1).campo_col2 = ""d_grid(1).revisar = Falsed_grid(1).clave = Trued_grid(1).insertable = Trued_grid(1).editable = Falsed_grid(1).Obligatorio = Falsed_grid(2).n_col = 2d_grid(2).ancho_col = 0d_grid(2).cabecera_col = "" 17
  • 57. d_grid(2).campo_col = "fecha"d_grid(2).campo_col2 = ""d_grid(2).revisar = Falsed_grid(2).clave = Trued_grid(2).insertable = Trued_grid(2).editable = Falsed_grid(2).Obligatorio = Falsed_grid(3).n_col = 3d_grid(3).ancho_col = 600d_grid(3).cabecera_col = "Nº"d_grid(3).campo_col = "N_lista"d_grid(3).campo_col2 = ""d_grid(3).revisar = Falsed_grid(3).clave = Falsed_grid(3).insertable = Falsed_grid(3).editable = Falsed_grid(3).Obligatorio = Falsed_grid(4).n_col = 4d_grid(4).ancho_col = 3000d_grid(4).cabecera_col = "Nomina"d_grid(4).campo_col = "nombre"d_grid(4).campo_col2 = ""d_grid(4).revisar = Falsed_grid(4).clave = Falsed_grid(4).insertable = Falsed_grid(4).editable = Falsed_grid(4).Obligatorio = Falsed_grid(5).n_col = 5d_grid(5).ancho_col = 300d_grid(5).cabecera_col = "A"d_grid(5).campo_col = "estado2"d_grid(5).campo_col2 = "estado"d_grid(5).revisar = Trued_grid(5).clave = Falsed_grid(5).insertable = Falsed_grid(5).editable = Trued_grid(5).Obligatorio = Falsed_grid(6).n_col = 6d_grid(6).ancho_col = 300d_grid(6).cabecera_col = "J"d_grid(6).campo_col = "justificada2"d_grid(6).campo_col2 = "justificada"d_grid(6).revisar = Trued_grid(6).clave = Falsed_grid(6).insertable = Falsed_grid(6).editable = Trued_grid(6).Obligatorio = Falsed_grid(7).n_col = 7 18
  • 58. d_grid(7).ancho_col = 300d_grid(7).cabecera_col = "AT"d_grid(7).campo_col = "atraso2"d_grid(7).campo_col2 = "atraso"d_grid(7).revisar = Trued_grid(7).clave = Falsed_grid(7).insertable = Falsed_grid(7).editable = Trued_grid(7).Obligatorio = Falsed_grid(8).n_col = 8d_grid(8).ancho_col = 800d_grid(8).cabecera_col = "H entrada"d_grid(8).campo_col = "hora_e"d_grid(8).campo_col2 = ""d_grid(8).revisar = flased_grid(8).clave = Falsed_grid(8).insertable = Trued_grid(8).editable = Trued_grid(8).Obligatorio = Trued_grid(9).n_col = 9d_grid(9).ancho_col = 800d_grid(9).cabecera_col = "H Salida"d_grid(9).campo_col = "hora_s"d_grid(9).campo_col2 = ""d_grid(9).revisar = Falsed_grid(9).clave = Falsed_grid(9).insertable = Trued_grid(9).editable = Trued_grid(9).Obligatorio = Trued_grid(10).n_col = 10d_grid(10).ancho_col = 4000d_grid(10).cabecera_col = "Observacion"d_grid(10).campo_col = "Observacion"d_grid(10).campo_col2 = ""d_grid(10).revisar = Falsed_grid(10).clave = Falsed_grid(10).insertable = Trued_grid(10).editable = Trued_grid(10).Obligatorio = Falsed_grid(11).n_col = 11d_grid(11).ancho_col = 0d_grid(11).cabecera_col = "estado2"d_grid(11).campo_col = "estado"d_grid(11).campo_col2 = ""d_grid(11).revisar = Trued_grid(11).clave = Falsed_grid(11).insertable = Trued_grid(11).editable = False 19
  • 59. d_grid(11).Obligatorio = Falsed_grid(12).n_col = 12d_grid(12).ancho_col = 0d_grid(12).cabecera_col = "justificada2"d_grid(12).campo_col = "justificada"d_grid(12).campo_col2 = ""d_grid(12).revisar = Trued_grid(12).clave = Falsed_grid(12).insertable = Trued_grid(12).editable = Falsed_grid(12).Obligatorio = Falsed_grid(13).n_col = 13d_grid(13).ancho_col = 0d_grid(13).cabecera_col = "atraso2"d_grid(13).campo_col = "atraso"d_grid(13).campo_col2 = ""d_grid(13).revisar = Trued_grid(13).clave = Falsed_grid(13).insertable = Trued_grid(13).editable = Falsed_grid(13).Obligatorio = FalseEnd SubPrivate Sub CONF_GRID()Dim I As IntegerGRID.Rows = 2For I = 0 To GRID.Cols - 1 GRID.ColWidth(I) = d_grid(I).ancho_col GRID.TextMatrix(0, I) = d_grid(I).cabecera_colNextGRID.FixedCols = col_nombre("N_lista") + 1End SubPrivate Sub GRID_Click()Dim a_tex As Stringtxt.Visible = Falsetxt2.Visible = Falsea_col = GRID.cola_fil = GRID.Rowcmd_entrada.Enabled = Falsecmd_salida.Enabled = FalseIf d_grid(GRID.col).editable = False Then lbl_nombre.Caption = GRID.TextMatrix(a_fil, col_nombre("nombre")) If GRID.TextMatrix(a_fil, col_nombre("hora_e")) = "00:00:00" Then cmd_entrada.Enabled = True ElseIf GRID.TextMatrix(a_fil, col_nombre("hora_s")) = "00:00:00" Then cmd_salida.Enabled = True End IfElse 20
  • 60. a_col = GRID.col a_fil = GRID.Row If d_grid(GRID.col).revisar = False Then a_tex = "" txt.Visible = False txt2.Visible = False If d_grid(GRID.col).Obligatorio = False Then txt.Top = GRID.Top + GRID.CellTop txt.Left = GRID.Left + GRID.CellLeft txt.Width = GRID.CellWidth - 10 txt.Height = GRID.CellHeight - 10 txt.TEXT = GRID.TextMatrix(a_fil, a_col) txt.Visible = True txt.SetFocus txt.SelLength = Len(txt.TEXT) End If Else txt2.Top = GRID.Top + GRID.CellTop txt2.Left = GRID.Left + GRID.CellLeft txt2.Width = GRID.CellWidth - 10 txt2.Height = GRID.CellHeight - 10 txt2.TEXT = GRID.TextMatrix(a_fil, a_col) txt2.Visible = True txt2.SetFocus txt2.SelLength = Len(txt.TEXT) End If Else If GRID.TextMatrix(a_fil, col_nombre(d_grid(GRID.col).campo_col2)) ="S" Then GRID.TextMatrix(a_fil, col_nombre(d_grid(GRID.col).campo_col2)) ="N" Set GRID.CellPicture = LoadPicture(App.Path & "iconoschkno.bmp") Else GRID.TextMatrix(a_fil, col_nombre(d_grid(GRID.col).campo_col2)) ="S" Set GRID.CellPicture = LoadPicture(App.Path & "iconoschksi.bmp") End If End IfEnd IfEnd SubPrivate Sub GRID_KeyPress(KeyAscii As Integer)If KeyAscii = vbKeySpace Then GRID_ClickEnd If 21
  • 61. End SubPrivate Sub MaskEdBox1_Change()End SubPrivate Sub Timer1_Timer()lbl_hora.Caption = TimeEnd SubPrivate Sub txt_Change()On Error Resume NextGRID.TextMatrix(a_fil, a_col) = txt.TEXTEnd SubPrivate Sub txt_KeyPress(KeyAscii As Integer)KeyAscii = SoloTexto(KeyAscii)End SubPrivate Sub txt2_Change()On Error Resume NextGRID.TextMatrix(a_fil, a_col) = txt2.TEXTEnd SubPrivate Sub txt2_KeyPress(KeyAscii As Integer)KeyAscii = SoloTexto(KeyAscii)End Sub1.6 FORMULARIO BLOQUEO DE SISTEMAPrivate Sub cmb_usuarios_Click()Cod_usuario = ExtraeIDCombo(cmb_usuarios)End SubPrivate Sub cmdCancel_Click()If base.State = 1 Then base.CloseEnd IfEndEnd SubPrivate Sub cmdOK_Click()Dim STRSQL As StringIf cmb_usuarios.ListIndex = -1 Then Exit Sub 22
  • 62. STRSQL = "SELECT COUNT(*) as total FROM USUARIOS WHEREcodigo=" & ExtraeIDCombo(cmb_usuarios) & " and upper(clave) = " &UCase(txt_clave.TEXT) & ""Set tabla = base.Execute(STRSQL)If tabla.Fields(0).Value > 0 Then tabla.Close Set tabla = Nothing Unload Me Exit SubEnd Iftxt_clave.TEXT = ""MsgBox ("datos Incorrectos")tabla.CloseSet tabla = NothingEnd SubPrivate Sub Form_Load()cod_usu = Leer_Ini(ruta_ini, "usuario", "")LLENACOMBO cmb_usuarios, "select codigo,nombre from usuarios"End Sub1.7 FORMULARIO DE CONFIGURACION DE MATERIAS A GRADOPrivate Sub cmb_grado_Click()If cmb_grado.ListIndex = -1 Then Exit SubLLENACOMBO List_materi_grado, "select codigo,nombre from materias whereCODIGO IN(SELECT MATERIA FROM MATERIA_GRADO WHEREperiodo=" & Gperiodo & " and grado=" & ExtraeIDCombo(cmb_grado) & ")"End SubPrivate Sub EjecutaSQL(cade As String)On Error GoTo SALIR2 base.Execute (cade)Exit SubSALIR2:ERRORESEnd SubPrivate Sub cmd_guardar_Click()Dim SQL1 As StringDim SQL2 As StringDim MAX_COD As IntegerIf cmb_grado.ListIndex = -1 Then Exit SubIf list_aux.ListCount > 0 Then For I = 0 To list_aux.ListCount - 1 list_aux.ListIndex = I 23
  • 63. SQL1 = "DELETE FROM MATERIA_GRADO WHERE PERIODO=" &Gperiodo & " AND materia=" & ExtraeIDCombo(list_aux) & " and grado=" &ExtraeIDCombo(cmb_grado) & "" EjecutaSQL SQL1 Next list_aux.ClearEnd IfIf List_materi_grado.ListCount > 0 Then For I = 0 To List_materi_grado.ListCount - 1 List_materi_grado.ListIndex = I SQL1 = "SELECT COUNT(*) AS UNOS FROM MATERIA_GRADOWHERE PERIODO=" & Gperiodo & " AND materia=" &ExtraeIDCombo(List_materi_grado) & " and grado=" &ExtraeIDCombo(cmb_grado) & "" Set tabla = base.Execute(SQL1) If tabla.Fields(0).Value = 0 Then NO EXISTE SQL2 = "INSERT INTOMATERIA_GRADO(PERIODO,GRADO,MATERIA) VALUES(" & Gperiodo& "," & ExtraeIDCombo(cmb_grado) & "," &ExtraeIDCombo(List_materi_grado) & ")" EjecutaSQL SQL2 End If tabla.Close Set tabla = Nothing NextEnd IfEnd SubPrivate Sub cmd_pasauno_Click()If cmb_grado.ListIndex = -1 Then Exit SubIf list_materias.ListIndex = -1 Then Exit SubIf EXISTE_ITEM(List_materi_grado, CLng(ExtraeIDCombo(list_materias))) =True Then Exit SubList_materi_grado.AddItem list_materias.TEXTList_materi_grado.ItemData(List_materi_grado.NewIndex) =ExtraeIDCombo(list_materias)list_materias.RemoveItem (list_materias.ListIndex)End SubPrivate Sub cmd_quitatodo_Click()For I = 0 To List_materi_grado.ListCount - 1 List_materi_grado.ListIndex = I list_aux.AddItem List_materi_grado.TEXT list_aux.ItemData(list_aux.NewIndex) = ExtraeIDCombo(List_materi_grado)NextList_materi_grado.ClearEnd Sub 24
  • 64. Private Sub cmd_quitauno_Click()If List_materi_grado.ListIndex = -1 Then Exit Sublist_aux.AddItem List_materi_grado.TEXTlist_aux.ItemData(list_aux.NewIndex) = ExtraeIDCombo(List_materi_grado)List_materi_grado.RemoveItem (List_materi_grado.ListIndex)End SubPrivate Sub Form_Load()Me.Top = 0Me.Left = 10coloca_tolti MeLLENACOMBO cmb_grado, "select codigo,nombre from grados"LLENACOMBO list_materias, "select codigo,nombre from materias" order bynombre"End SubPrivate Sub cmd_salir_Click()SALIREnd SubPublic Sub SALIR()Unload MeEnd SubPrivate Sub list_materias_Click()list_materias.ToolTipText = ExtraeIDCombo(list_materias)End Sub1.8 FORMULARIO DE REGISTRO DE MATERIASDim strtabla As StringDim camposKP As StringDim nuevo_reg As StringDim reg_actual As StringDim filtro As StringDim retorna As StringDim accion As StringPublic Sub Set_Accion(valor As String) accion = valorEnd SubPublic Function Get_Accion() As String Get_Accion = accionEnd FunctionPublic Sub Set_Retorna(valor As String) retorna = valorEnd Sub 25
  • 65. Public Function Get_filtro() As String Get_filtro = filtroEnd FunctionPublic Function Get_nuevo() As String Get_nuevo = nuevo_regEnd FunctionPublic Sub Set_Reg_actual(valor As String) reg_actual = valorEnd SubPublic Function Get_tabla() As String Get_tabla = strtablaEnd FunctionPublic Function Get_camposPK() As String Get_camposPK = camposKPEnd FunctionPublic Sub SALIR()Unload MeEnd SubPrivate Sub cmd_anterior_Click()LLenaDatosForm 3End SubPrivate Sub cmd_buscar_Click()On Error GoTo SALIRBusqueda_sql "SELECT codigo,NOMBRE FROM materias "Busqueda_where " WHERE codigo+NOMBRE "Busqueda_orden "2"Busqueda_Ncampos 2Busqueda_campos 0, "Codigo", 20Busqueda_campos 1, "Nombre de Materia", 80Busqueda_indice 0Load frmbusquedafrmbusqueda.Show vbModalIf Busqueda.retorna <> "" Then LLenaDatosForm 0, Busqueda.retornaEnd IfExit SubSALIR:ERRORESEnd SubPrivate Sub cmd_cancelar_Click()CancelarEnd SubPrivate Sub cmd_eliminar_Click()Elimna_reg 26
  • 66. End SubPrivate Sub cmd_guardar_Click()GuardarEnd SubPrivate Sub cmd_nuevo_Click()NuevoEnd SubPrivate Sub cmd_primero_Click()LLenaDatosForm 1End SubPrivate Sub cmd_salir_Click()SALIREnd SubPrivate Sub cmd_siguiente_Click()LLenaDatosForm 4End SubPrivate Sub cmd_ultimo_Click()LLenaDatosForm 2End SubPrivate Sub Form_Activate()Set FRM = MeEnd SubPrivate Sub Form_Load()filtro = ""LLENACOMBO cmb_area, "Select codigo,nombre from areas order by nombre"strtabla = "materias"camposKP = "|codigo|"nuevo_reg = "codigo"Set FRM = MeLLenaDatosFormEnd SubPrivate Sub txtnombre_KeyPress(KeyAscii As Integer)KeyAscii = SoloTexto(KeyAscii)End Sub1.9 FORMULARIOS CONFIGURACION MATERIAS PROFESORDim strtabla As StringDim camposKP As StringDim nuevo_reg As StringDim reg_actual As StringDim filtro As StringDim d_grid(100) As DATOS_GRIDDim a_col As IntegerDim a_fil As IntegerPublic Function Get_filtro() As String 27
  • 67. Get_filtro = filtroEnd FunctionPublic Function Get_nuevo() As String Get_nuevo = nuevo_regEnd FunctionPublic Sub Set_Reg_actual(valor As String) reg_actual = valorEnd SubPublic Function Get_tabla() As String Get_tabla = strtablaEnd FunctionPublic Function Get_camposPK() As String Get_camposPK = camposKPEnd FunctionPublic Sub SALIR()Unload MeEnd SubPrivate Sub cmb_grado_Click()If cmb_grado.ListIndex = -1 Then Exit SubIf GRID.TextMatrix(a_fil, col_nombre("grado")) <>ExtraeIDCombo(cmb_grado) Then GRID.TextMatrix(a_fil, col_nombre("grado")) = ExtraeIDCombo(cmb_grado) GRID.TextMatrix(a_fil, col_nombre("Ngrado")) = cmb_grado.TEXT GRID.TextMatrix(a_fil, col_nombre("materia")) = "" GRID.TextMatrix(a_fil, col_nombre("Nmateria")) = "" GRID.TextMatrix(a_fil, col_nombre("paralelo")) = "" GRID.TextMatrix(a_fil, col_nombre("Nparalelo")) = ""End IfEnd SubPrivate Sub cmb_materias_Click()If cmb_materias.ListIndex = -1 Then Exit SubGRID.TextMatrix(a_fil, col_nombre("materia")) =ExtraeIDCombo(cmb_materias)GRID.TextMatrix(a_fil, col_nombre("Nmateria")) = cmb_materias.TEXTEnd SubPrivate Sub cmb_paralelo_Click()If cmb_paralelo.ListIndex = -1 Then Exit SubGRID.TextMatrix(a_fil, col_nombre("paralelo")) =ExtraeIDCombo(cmb_paralelo)GRID.TextMatrix(a_fil, col_nombre("Nparalelo")) = cmb_paralelo.TEXTEnd Sub 28
  • 68. Private Sub cmb_profesor_Click()procesarEnd SubPrivate Sub cmd_anterior_Click()LLenaDatosForm 3End SubPrivate Sub cmd_cancelar_Click()LLenaDatosFormEnd SubPrivate Sub cmd_eliminar_Click()cmb_grado.Visible = Falsecmb_materias.Visible = Falsecmb_paralelo.Visible = FalseELIMINA_ITEM_GRID GRID.RowEnd SubPrivate Sub cmd_guardar_Click()Dim SQL1 As StringDim FILA, I As IntegerIf cmb_profesor.ListIndex = -1 Then Exit Subcmb_grado.Visible = Falsecmb_materias.Visible = Falsecmb_paralelo.Visible = FalseFor I = 1 To GRID_RES.Rows - 1 If VALIDAR_ELIMINAR(I) = True Then SQL1 = genera_DELETE(I) EjecutaSQL SQL1 End IfNextLIMPIA_GRID_RESI=1If GRID.TextMatrix(I, col_nombre("grado")) <> "" And GRID.TextMatrix(I,col_nombre("paralelo")) <> "" And GRID.TextMatrix(I, col_nombre("materia"))<> "" Then If GRID.TextMatrix(I, col_nombre("periodo")) = "" And GRID.TextMatrix(I,col_nombre("profesor")) = "" Then GRID.TextMatrix(I, col_nombre("periodo")) = Gperiodo GRID.TextMatrix(I, col_nombre("profesor")) =ExtraeIDCombo(cmb_profesor) End IfEnd IfFor I = 1 To GRID.Rows - 1 If VALIDAR(I) = True Then If EXITE_NOTA(I) = False And MODIFICADO(I) = False Then 29
  • 69. SQL1 = genera_INSERT(I) Else SQL1 = genera_UPDATE(I) End If EjecutaSQL SQL1 End IfNextEnd SubPrivate Sub EjecutaSQL(cade As String)On Error GoTo SALIR2 base.Execute (cade)Exit SubSALIR2:ERRORESEnd SubPrivate Function MODIFICADO(FILA As Integer) As Boolean MODIFICADO = False Dim I As Integer For I = 0 To GRID.Cols - 1 If d_grid(I).revisar = True Then If GRID.TextMatrix(FILA, col_nombre(d_grid(I).campo_col)) = "" ThenExit Function End If Next For I = 0 To GRID.Cols - 1 If d_grid(I).revisar = True Then If GRID.TextMatrix(FILA, col_nombre(d_grid(I).cabecera_col)) <>GRID.TextMatrix(FILA, col_nombre(d_grid(I).campo_col)) Then MODIFICADO = True Exit Function End If End If NextEnd FunctionPrivate Function ELIMINABLE(FILA As Integer) As Boolean ELIMINABLE = False Dim I As Integer For I = 0 To GRID.Cols - 1 If d_grid(I).revisar = True Then If GRID.TextMatrix(FILA, col_nombre(d_grid(I).cabecera_col)) = ""Then Exit Function End If Next ELIMINABLE = TrueEnd FunctionPrivate Function VALIDAR_ELIMINAR(FILA As Integer) As Boolean VALIDAR_ELIMINAR = False Dim I As Integer 30
  • 70. For I = 0 To GRID_RES.Cols - 1 If d_grid(I).revisar = True Then If GRID_RES.TextMatrix(FILA, I) = "" Then Exit Function End If Next VALIDAR_ELIMINAR = TrueEnd FunctionPrivate Function VALIDAR(FILA As Integer) As Boolean VALIDAR = False Dim I As Integer For I = 0 To GRID.Cols - 1 If d_grid(I).Obligatorio = True Then If GRID.TextMatrix(FILA, I) = "" Then Exit Function End If Next VALIDAR = TrueEnd FunctionPrivate Sub cmd_nuevo_Click()NuevoIf cmb_profesor.ListIndex = -1 Then Exit Subcmb_grado.Visible = Falsecmb_materias.Visible = Falsecmb_paralelo.Visible = FalseGRID.Rows = GRID.Rows + 1GRID.TextMatrix(GRID.Rows - 1, col_nombre("profesor")) =ExtraeIDCombo(cmb_profesor)GRID.TextMatrix(GRID.Rows - 1, col_nombre("periodo")) = GperiodoEnd SubPrivate Sub cmd_primero_Click()LLenaDatosForm 1End SubPrivate Sub cmd_salir_Click()SALIREnd SubPrivate Sub cmd_siguiente_Click()LLenaDatosForm 4End SubPrivate Sub cmd_ultimo_Click()LLenaDatosForm 2End SubPrivate Sub Form_Load()Me.Top = 0Me.Left = 10coloca_tolti MeLLENACOMBO cmb_profesor, "select codigo,nombre from profesor"LLENACOMBO cmb_grado, "select codigo,nombre from grados"strtabla = "materia_profesor" 31
  • 71. DAT_gridCONF_GRIDIf cmb_cursos.ListCount > 0 Then cmb_cursos.ListIndex = 0Set FRM = MeLLenaDatosFormEnd SubPrivate Sub DAT_grid()GRID.Cols = 11GRID_RES.Cols = 11d_grid(0).n_col = 0d_grid(0).ancho_col = 0d_grid(0).cabecera_col = "profesor"d_grid(0).campo_col = "profesor"d_grid(0).editable = Falsed_grid(0).clave = Trued_grid(0).insertable = Trued_grid(0).revisar = Trued_grid(0).Obligatorio = Trued_grid(1).n_col = 1d_grid(1).ancho_col = 0d_grid(1).cabecera_col = ""d_grid(1).campo_col = "grado"d_grid(1).editable = Falsed_grid(1).clave = Trued_grid(1).insertable = Trued_grid(1).revisar = Falsed_grid(1).Obligatorio = Trued_grid(2).n_col = 2d_grid(2).ancho_col = 0d_grid(2).cabecera_col = ""d_grid(2).campo_col = "paralelo"d_grid(2).editable = Falsed_grid(2).clave = Trued_grid(2).insertable = Trued_grid(2).revisar = Falsed_grid(2).Obligatorio = Trued_grid(3).n_col = 3d_grid(3).ancho_col = 0d_grid(3).cabecera_col = ""d_grid(3).campo_col = "materia"d_grid(3).editable = Falsed_grid(3).clave = Trued_grid(3).insertable = Trued_grid(3).revisar = Falsed_grid(3).Obligatorio = Trued_grid(4).n_col = 4d_grid(4).ancho_col = 2000 32
  • 72. d_grid(4).cabecera_col = "Grado"d_grid(4).campo_col = "Ngrado"d_grid(4).editable = Trued_grid(4).clave = Falsed_grid(4).insertable = Falsed_grid(4).revisar = Falsed_grid(4).Obligatorio = Falsed_grid(5).n_col = 5d_grid(5).ancho_col = 4000d_grid(5).cabecera_col = "Materia"d_grid(5).campo_col = "Nmateria"d_grid(5).editable = Trued_grid(5).clave = Falsed_grid(5).insertable = Falsed_grid(5).revisar = Falsed_grid(5).Obligatorio = Falsed_grid(6).n_col = 6d_grid(6).ancho_col = 1000d_grid(6).cabecera_col = "Paralelo"d_grid(6).campo_col = "Nparalelo"d_grid(6).editable = Trued_grid(6).clave = Falsed_grid(6).insertable = Falsed_grid(6).revisar = Falsed_grid(6).Obligatorio = Falsed_grid(7).n_col = 7d_grid(7).ancho_col = 0d_grid(7).cabecera_col = "periodo"d_grid(7).campo_col = "periodo"d_grid(7).editable = Trued_grid(7).clave = Trued_grid(7).insertable = Trued_grid(7).revisar = Trued_grid(7).Obligatorio = Trued_grid(8).n_col = 8d_grid(8).ancho_col = 0d_grid(8).cabecera_col = "grado"d_grid(8).campo_col = "grado2"d_grid(8).editable = Falsed_grid(8).clave = Falsed_grid(8).insertable = Falsed_grid(8).revisar = Trued_grid(8).Obligatorio = Falsed_grid(9).n_col = 9d_grid(9).ancho_col = 0d_grid(9).cabecera_col = "paralelo"d_grid(9).campo_col = "paralelo2"d_grid(9).editable = False 33
  • 73. d_grid(9).clave = Falsed_grid(9).insertable = Falsed_grid(9).revisar = Trued_grid(9).Obligatorio = Falsed_grid(10).n_col = 10d_grid(10).ancho_col = 0d_grid(10).cabecera_col = "materia"d_grid(10).campo_col = "materia2"d_grid(10).editable = Falsed_grid(10).clave = Falsed_grid(10).insertable = Falsed_grid(10).revisar = Trued_grid(10).Obligatorio = FalseEnd SubPrivate Sub CONF_GRID()Dim I As IntegerGRID.Rows = 2For I = 0 To GRID.Cols - 1 GRID.ColWidth(I) = d_grid(I).ancho_col GRID.TextMatrix(0, I) = d_grid(I).cabecera_colNextEnd SubPrivate Sub GRID_Click()Dim a_tex As StringOn Error Resume NextIf cmb_profesor.ListIndex = -1 Then Exit SubIf d_grid(GRID.col).editable = False Then Exit Suba_col = GRID.cola_fil = GRID.RowIf GRID.col = col_nombre("Ngrado") Then cmb_materias.Visible = False cmb_paralelo.Visible = False cmb_grado.Visible = False cmb_grado.Top = GRID.Top + GRID.CellTop cmb_grado.Left = GRID.Left + GRID.CellLeft cmb_grado.Width = GRID.CellWidth - 10 cmb_grado.Height = GRID.CellHeight - 10 cmb_grado.ListIndex = IndexList(cmb_grado, CLng(valor_celda(a_fil,"grado"))) cmb_grado.Visible = True Exit SubEnd IfIf GRID.col = col_nombre("Nmateria") And valor_celda(a_fil, "grado") <> 0Then LLENACOMBO cmb_materias, "select codigo,nombre from materias whereCODIGO IN(SELECT MATERIA FROM MATERIA_GRADO WHEREperiodo=" & Gperiodo & " and grado=" & valor_celda(a_fil, "grado") & ")" 34
  • 74. cmb_materias.Visible = False cmb_paralelo.Visible = False cmb_grado.Visible = False cmb_materias.Top = GRID.Top + GRID.CellTop cmb_materias.Left = GRID.Left + GRID.CellLeft cmb_materias.Width = GRID.CellWidth - 10 cmb_materias.ListIndex = IndexList(cmb_materias, CLng(valor_celda(a_fil,"materia"))) cmb_materias.Visible = True Exit SubEnd IfIf GRID.col = col_nombre("Nparalelo") And valor_celda(a_fil, "grado") <> 0Then LLENACOMBO cmb_paralelo, "select codigo,nombre from paralelo wheregrado=" & valor_celda(a_fil, "grado") & " and periodo=" & Gperiodo & "" cmb_materias.Visible = False cmb_paralelo.Visible = False cmb_grado.Visible = False cmb_paralelo.Top = GRID.Top + GRID.CellTop cmb_paralelo.Left = GRID.Left + GRID.CellLeft cmb_paralelo.Width = GRID.CellWidth - 10 cmb_paralelo.ListIndex = IndexList(cmb_paralelo, CLng(valor_celda(a_fil,"paralelo"))) cmb_paralelo.Visible = TrueEnd IfEnd SubPrivate Sub txt_Change()GRID.TextMatrix(a_fil, a_col) = txt.TEXTEnd SubPrivate Sub GUARDA_GRID()Dim I, mayor As IntegerDim SQLSTR As StringSet tabla = base.Execute("select isnull(max(cast(" & nuevo_reg & " as integer)),0)+ 1 as nuevo from " & strtabla)mayor = tabla.Fields(0).Valuetabla.CloseSet tabla = NothingFor I = 1 To GRID.Rows - 1 If GRID.TextMatrix(I, 0) = "" Then hay que insertar SQLSTR = "INSERT INTO " & strtabla & "(codigo,grado,periodo,nombre)Values (" & mayor & "," & GRID.TextMatrix(I, 1) & "," &GRID.TextMatrix(I, 2) & "," & GRID.TextMatrix(I, 3) & ")" GRID.TextMatrix(I, 0) = mayor mayor = mayor + 1 Else hay que actualizar SQLSTR = "UPDATE " & strtabla & " set nombre=" & GRID.TextMatrix(I,3) & " where codigo=" & GRID.TextMatrix(I, 0) & "" 35
  • 75. End If base.Execute (SQLSTR)NextEnd SubPrivate Sub BORRA_DATOS_GRID()Dim I, c As IntegerDim SQLSTR As StringFor I = 1 To GRID_RES.Rows - 1 If GRID_RES.TextMatrix(I, 0) <> "" Then SQLSTR = "DELETE FROM " & strtabla & " WHERE codigo=" &GRID_RES.TextMatrix(I, 0) & "" base.Execute (SQLSTR) End IfNextGRID_RES.Rows = 2For c = 0 To GRID_RES.Cols - 1 GRID_RES.TextMatrix(1, c) = ""NextEnd SubPrivate Sub CARGA_GRID(nombre As String, FILA As Integer, valor AsVariant) Dim I As Integer For I = 0 To GRID.Cols - 1 If d_grid(I).campo_col = nombre Then GRID.TextMatrix(FILA, d_grid(I).n_col) = valor End If NextEnd SubPrivate Sub ELIMINA_ITEM_GRID(FILA As Integer)Dim c, f As IntegerIf ELIMINABLE(FILA) = True Then If GRID_RES.TextMatrix(GRID_RES.Rows - 1, 0) <> "" Then GRID_RES.Rows = GRID_RES.Rows + 1 End If f = GRID_RES.Rows - 1 For c = 0 To GRID.Cols - 1 GRID_RES.TextMatrix(f, c) = GRID.TextMatrix(FILA, c) NextEnd IfIf GRID.Rows > 2 Then For f = FILA To GRID.Rows - 2 For c = 0 To GRID.Cols - 1 GRID.TextMatrix(f, c) = GRID.TextMatrix(f + 1, c) Next Next GRID.Rows = GRID.Rows - 1Else LIMPIA_GRID 36
  • 76. End IfEnd SubPrivate Function EXITE_NOTA(FILA As Integer) As BooleanDim SQL1, strand As Stringstrand = " "EXITE_NOTA = FalseSQL1 = "select count(*) as UNOS from " & strtabla & " where "For I = 0 To GRID.Cols - 1 If d_grid(I).clave = True Then SQL1 = SQL1 & strand & d_grid(I).campo_col & " = " &GRID.TextMatrix(FILA, d_grid(I).n_col) & "" strand = " AND " End IfNextSet tabla = base.Execute(SQL1)If tabla.Fields(0).Value <> 0 Then EXITE_NOTA = TrueEnd Iftabla.CloseSet tabla = NothingEnd FunctionPrivate Function genera_INSERT(FILA As Integer) As StringDim SQL1, SQL2, strCOMA As StringstrCOMA = " "SQL1 = "INSERT INTO " & strtabla & "("SQL2 = " VALUES ("For I = 0 To GRID.Cols - 1 If d_grid(I).insertable = True Then SQL1 = SQL1 & strCOMA & d_grid(I).campo_col SQL2 = SQL2 & strCOMA & "" & GRID.TextMatrix(FILA,d_grid(I).n_col) & "" strCOMA = "," End IfNextSQL1 = SQL1 & ") "SQL2 = SQL2 & ") "SQL1 = SQL1 & SQL2genera_INSERT = SQL1End FunctionPrivate Function genera_UPDATE(FILA As Integer) As StringDim SQL1, SQL2, strCOMA, strand As StringstrCOMA = " "strand = " "SQL1 = "UPDATE " & strtabla & " set "SQL2 = " WHERE "For I = 0 To GRID.Cols - 1 If d_grid(I).insertable = True And d_grid(I).revisar = False Then 37
  • 77. SQL1 = SQL1 & strCOMA & d_grid(I).campo_col & "=" &GRID.TextMatrix(FILA, d_grid(I).n_col) & "" strCOMA = "," End If If d_grid(I).revisar = True Then SQL2 = SQL2 & strand & d_grid(I).cabecera_col & " = " &GRID.TextMatrix(FILA, d_grid(I).n_col) & "" strand = " AND " End IfNextSQL1 = SQL1 & " "SQL2 = SQL2 & " "SQL1 = SQL1 & SQL2genera_UPDATE = SQL1End FunctionPrivate Function genera_DELETE(FILA As Integer) As StringDim SQL1, SQL2, strCOMA, strand As StringstrCOMA = " "strand = " "SQL2 = "DELETE FROM " & strtabla & " WHERE "For I = 0 To GRID_RES.Cols - 1 If d_grid(I).revisar = True Then SQL2 = SQL2 & strand & d_grid(I).cabecera_col & " = " &GRID_RES.TextMatrix(FILA, d_grid(I).n_col) & "" strand = " AND " End IfNextgenera_DELETE = SQL2End FunctionPrivate Function valor_celda(FILA As Integer, nombre As String) As Integer Dim I As Integer valor_celda = -1 For I = 0 To GRID.Cols - 1 If UCase(d_grid(I).campo_col) = UCase(nombre) Then valor_celda = Val(GRID.TextMatrix(FILA, d_grid(I).n_col)) Exit Function End If NextEnd FunctionPrivate Function col_nombre(nombre As String) As Integer Dim I As Integer For I = 0 To GRID.Cols - 1 If UCase(d_grid(I).campo_col) = UCase(nombre) Then col_nombre = d_grid(I).n_col Exit Function End If Next 38
  • 78. End FunctionPrivate Sub procesar()Dim SQL1, SQL2 As StringDim FILA As IntegerLIMPIA_GRIDLIMPIA_GRID_REScmb_grado.Visible = Falsecmb_materias.Visible = Falsecmb_paralelo.Visible = FalseIf cmb_profesor.ListIndex = -1 Then Exit SubSQL1 = "selectMP.materia,MP.profesor,MP.paralelo,MP.grado,MP.periodo,(select nombre frommaterias where codigo=MP.materia ) as Nmateria,(select nombre from gradoswhere codigo=MP.grado) as Ngrado,(select nombre from paralelo wherecodigo=MP.paralelo ) as Nparalelo,MP.materia as materia2,MP.paralelo asparalelo2,MP.grado as grado2 FROM MATERIA_profesor MP where periodo="& Gperiodo & " and profesor=" & ExtraeIDCombo(cmb_profesor) & ""Set tabla = base.Execute(SQL1)If tabla.EOF = True Then tabla.Close Set tabla = Nothing Exit SubEnd IfFILA = 1Do Until tabla.EOF = True For I = 0 To tabla.Fields.Count - 1 CARGA_GRID tabla.Fields.Item(I).Name, FILA, tabla.Fields(I).Value Next tabla.MoveNext If tabla.EOF = False Then FILA = FILA + 1 GRID.Rows = GRID.Rows + 1 End IfLooptabla.CloseSet tabla = NothingEnd SubPrivate Sub LIMPIA_GRID()Dim I, c As IntegerGRID.Rows = 2For c = 0 To GRID.Cols - 1 GRID.TextMatrix(1, c) = ""NextEnd SubPrivate Sub LIMPIA_GRID_RES()Dim I, c As IntegerGRID_RES.Rows = 2 39
  • 79. For c = 0 To GRID_RES.Cols - 1 GRID_RES.TextMatrix(1, c) = ""NextEnd Sub1.10 FORMULARIOS REGISTRO DE MATRICULASDim strtabla As StringDim camposKP As StringDim nuevo_reg As StringDim reg_actual As StringDim opcion_foto As StringDim filtro As StringDim accion As StringPublic Sub Set_Accion(valor As String) accion = valorEnd SubPublic Function Get_Accion() As String Get_Accion = accionEnd FunctionPublic Function Get_filtro() As String Get_filtro = filtroEnd FunctionPublic Function Get_nuevo() As String Get_nuevo = nuevo_regEnd FunctionPublic Sub Set_Reg_actual(valor As String) reg_actual = valorEnd SubPublic Function Get_tabla() As String Get_tabla = strtablaEnd FunctionPublic Function Get_camposPK() As String Get_camposPK = camposKPEnd FunctionPublic Sub SALIR()Unload MeEnd SubPrivate Sub cmb_grado_Click()LLENACOMBO cmb_paralelo, "select codigo,nombre from paralelo wheregrado=" & ExtraeIDCombo(cmb_grado) & " and periodo=" & Gperiodo & ""End SubPrivate Sub cmd_anterior_Click() 40
  • 80. cmb_grado.Locked = FalseLLenaDatosForm 3cmb_grado.Locked = Truecmd_busca_estudiante.Visible = NotEXISTE_MATRICULA(eti_matricula.Caption)End SubPrivate Sub cmd_busca_estudiante_Click()On Error GoTo SALIRIf eti_matricula.Caption = "" Then Exit SubBusqueda_sql "SELECT codigo,NOMBREs,telefono,direccion FROM estudiante"Busqueda_where " WHERE codigo+NOMBREs "Busqueda_orden "2"Busqueda_Ncampos 4Busqueda_campos 0, "Codigo", 5Busqueda_campos 1, "Nombre", 40Busqueda_campos 2, "Telefono", 15Busqueda_campos 3, "Direccion", 40Busqueda_indice 0Load frmbusquedafrmbusqueda.Show vbModalIf Busqueda.retorna <> "" Then If ALUMN_MATRICULADO(Busqueda.retorna) = False Then txt_estudiante.TEXT = Busqueda.retorna GRAGO_SIGUIENTE End IfEnd IfExit SubSALIR:ERRORESEnd SubPrivate Function ALUMN_MATRICULADO(estu As String) As BooleanDim matri As StringDim SQL12 As StringALUMN_MATRICULADO = FalseSQL12 = "select codigo from matricula where periodo=" & Gperiodo & " andestudiante=" & estu & ""Set tabla_aux = base.Execute(SQL12)If tabla_aux.EOF = False Then matri = tabla_aux.Fields(0).Value MsgBox "El Alumno ya esta Matriculado en la Matricula Nº: " & matri,vbInformation, "SISTEMA" ALUMN_MATRICULADO = TrueEnd Iftabla_aux.CloseSet tabla_aux = NothingEnd Function 41
  • 81. Private Function EXISTE_MATRICULA(MATRICU As String) As BooleanDim matri As StringDim SQL12 As StringEXISTE_MATRICULA = FalseSQL12 = "select codigo from matricula where periodo=" & Gperiodo & " andCODIGO=" & MATRICU & ""Set tabla_aux = base.Execute(SQL12)If tabla_aux.EOF = False Then matri = tabla_aux.Fields(0).Value EXISTE_MATRICULA = TrueEnd Iftabla_aux.CloseSet tabla_aux = NothingEnd FunctionPrivate Sub GRAGO_SIGUIENTE()Dim tabla_rep As New ADODB.RecordsetDim SQL12 As StringDim I As IntegerDim matri, grado, periodo, para, estado As StringSQL12 = "select top 1 codigo,grado,periodo,paralelo,estado from matricula whereestudiante=" & txt_estudiante.TEXT & " order by grado desc"Set tabla_aux = base.Execute(SQL12)cmb_grado.Locked = FalseIf tabla_aux.EOF = False Then matri = tabla_aux.Fields(0).Value grado = tabla_aux.Fields(1).Value periodo = tabla_aux.Fields(2).Value para = tabla_aux.Fields(3).Value estado = tabla_aux.Fields(4).Value If estado = "N" Then avansa al siguiente grado grado = CLng(grado) + 1 cmb_grado.ListIndex = IndexList(cmb_grado, CLng(grado)) tabla_aux.Close Set tabla_aux = Nothing cmb_grado.Locked = True Exit Sub End If LLENACOMBO cmb_materia, "select codigo,abreviatura from materias whereCODIGO IN(SELECT MATERIA FROM MATERIA_GRADO WHEREperiodo=" & periodo & " and grado=" & grado & ")" For I = 0 To cmb_materia.ListCount - 1 cmb_materia.ListIndex = I SQL1 = "select M2.codigo asmatricula,total=M2.promedio1+M2.promedio2+M2.promedio3 from (SELECTpromedio1=isnull((select promedio2 from notas where periodo=M.periodo andmatricula=M.codigo and trimestre=1 and materia=" & 42
  • 82. ExtraeIDCombo(cmb_materia) & "),0),promedio2=isnull((select promedio2 fromnotas where periodo=M.periodo and matricula=M.codigo and trimestre=2 andmateria=" & ExtraeIDCombo(cmb_materia) & "),0),promedio3=isnull((selectpromedio2 from notas where periodo=M.periodo and matricula=M.codigo andtrimestre=3 and materia=" & ExtraeIDCombo(cmb_materia) & "),0),M.codigoas Codigo,M.periodo as periodo,M.grado as grado,M.paralelo as paralelo FROMMATRICULA M) M2 " SQL1 = SQL1 & " where M2.codigo=" & matri & " and M2.periodo=" &periodo & " and M2.grado=" & grado & " and M2.paralelo=" & para & " " Set tabla_rep = base.Execute(SQL1) Do Until tabla_rep.EOF = True If tabla_rep.Fields(1).Value < CInt(NOTA_APRUEBA) Then cmb_grado.ListIndex = IndexList(cmb_grado, CLng(grado)) tabla_rep.Close Set tabla_rep = Nothing tabla_aux.Close Set tabla_aux = Nothing cmb_grado.Locked = True Exit Sub End If tabla_rep.MoveNext Loop tabla_rep.Close Set tabla_rep = Nothing Next cmb_grado.ListIndex = IndexList(cmb_grado, (CLng(grado) + 1))Else cmb_grado.ListIndex = IndexList(cmb_grado, 1)End Iftabla_aux.CloseSet tabla_aux = Nothingcmb_grado.Locked = TrueEnd SubPrivate Sub cmd_buscar_Click()On Error GoTo SALIRBusqueda_sql "SELECT M.CODIGO,M.NOMBRE,M.FECHA FROM (SELECTcodigo as codigo,nombre=(select nombres from estudiante wherematricula.estudiante=codigo),fecha as fecha FROM matricula where periodo=" &Gperiodo & " and estado=S) M "Busqueda_where "WHERE M.codigo + M.NOMBRE "Busqueda_orden "2"Busqueda_Ncampos 3Busqueda_campos 0, "Codigo", 10Busqueda_campos 1, "Nombre", 60Busqueda_campos 2, "Fecha", 30Busqueda_indice 0Load frmbusqueda 43
  • 83. frmbusqueda.Show vbModalIf Busqueda.retorna <> "" Then cmb_grado.Locked = False LLenaDatosForm 0, Busqueda.retorna cmb_grado.Locked = True cmd_busca_estudiante.Visible = NotEXISTE_MATRICULA(eti_matricula.Caption)End IfExit SubSALIR:ERRORESEnd SubPrivate Sub cmd_cancelar_Click()cmb_grado.Locked = FalseCancelarcmb_grado.Locked = Truecmd_busca_estudiante.Visible = NotEXISTE_MATRICULA(eti_matricula.Caption)End SubPrivate Sub cmd_eliminar_Click()cmb_grado.Locked = FalseElimna_regcmb_grado.Locked = Truecmd_busca_estudiante.Visible = NotEXISTE_MATRICULA(eti_matricula.Caption)End SubPrivate Sub cmd_guarda_img_Click()Dim SQL12 As StringGuardarIf EXISTE_MATRICULA(eti_matricula.Caption) = False Then Exit SubIf ALUMN_MATRICULADO(txt_estudiante.TEXT) = False Then Exit SubIf opcion_foto = "0" Then SQL12 = "select * from imagenes where estudiante=" & txt_estudiante.TEXT& " and periodo=" & Gperiodo & ""Else SQL12 = "select * from imagenes where estudiante=" & txt_estudiante.TEXT& ""End IfSet tabla_aux = base.Execute(SQL12)If tabla_aux.EOF = True Then SQL12 = "INSERT INTO IMAGENES(ESTUDIANTE,periodo) VALUES("& txt_estudiante.TEXT & "," & Gperiodo & " )" base.Execute (SQL12)End Iftabla_aux.Close 44
  • 84. Set tabla_aux = NothingIf opcion_foto = "0" Then SQL12 = "select foto from imagenes where estudiante=" &txt_estudiante.TEXT & " and periodo=" & Gperiodo & ""Else SQL12 = "select foto from imagenes where estudiante=" &txt_estudiante.TEXT & ""End Iftabla_aux.Open SQL12, base, adOpenDynamic, adLockOptimisticIf tabla_aux.State = 0 Then MsgBox "No se registro la Imagen", vbInformation,"SISTEMA": Set tabla_aux = Nothing: Exit SubGuardarBinary tabla_aux, foto, 0MsgBox tabla_aux.Fields.Counttabla_aux.updatetabla_aux.CloseSet tabla_aux = NothingEnd SubPrivate Sub cmd_guardar_Click()cmb_grado.Locked = FalseGuardarcmb_grado.Locked = Truecmd_busca_estudiante.Visible = NotEXISTE_MATRICULA(eti_matricula.Caption)End SubPrivate Sub cmd_img_Click()On Error Resume NextIf txt_estudiante.TEXT = "" Then Exit SubIf EXISTE_MATRICULA(eti_matricula.Caption) = False Then Exit SubIf ALUMN_MATRICULADO(txt_estudiante.TEXT) = False Then Exit Subcdl.CancelError = Truecdl.Filter = "imagenes de mapa de Bit *.bmp|*.bmp|imagenes *.jpg|*.jpg"cdl.FileName = "NOTAS " & cmb_materia.Text & " " &ExtraeIDCombo(cmb_grado) & cmb_paralelo.Text & " " &ExtraeIDCombo(cmb_parcial) & "º TRIMESTRE"cdl.ShowOpentxt_foto.TEXT = cdl.FileTitlefoto.Picture = LoadPicture(cdl.FileName)End SubPrivate Sub cmd_imprimir_Click()Dim tabla_rep As New ADODB.RecordsetDim SQL1 As StringDim SQL2 As StringDim numero As Integernumero = 1 45
  • 85. dtr_matricula.Visible = FalseIf eti_matricula.Caption = "" Then Exit SubSQL1 = "select M.codigo as N_matricula,M.fecha as fecha,alumno=(selectnombres from estudiante where codigo=M.estudiante),padre=(select nombre fromrepresentante where codigo=(select padre from estudiante wherecodigo=M.estudiante)),Madre=(select nombre from representante wherecodigo=(select madre from estudiante wherecodigo=M.estudiante)),repres=(select nombre from representante wherecodigo=(select repres1 from estudiante where codigo=M.estudiante)),sexo=(selectnombre from tsexo where codigo=(select sexo from estudiante wherecodigo=M.estudiante)),fecha_nac=(select fecha_nac from estudiante wherecodigo=M.estudiante),edad=datediff(year,(select fecha_nac from estudiante wherecodigo=M.estudiante),M.fecha),grado=(select nombre from grados wherecodigo=M.grado),paralelo=(select nombre from paralelo wherecodigo=M.paralelo),observacion=M.descripcion from matricula M whereM.codigo=" & eti_matricula.Caption & " and M.periodo=" & Gperiodo & ""tabla_rep.Open SQL1, base, adOpenDynamic, adLockOptimisticdtr_matricula.Sections("S4").Controls("eti_periodo").Caption =NOMBRE_PERIODOdtr_matricula.Sections("S4").Controls("eti_escuela").Caption =NOMBRE_ESCUELASet dtr_matricula.Sections("S4").Controls("escudo").Picture =LoadPicture(ruta_escudo)Set dtr_matricula.DataSource = tabla_repSet dtr_matricula.Sections("S1").Controls("foto").Picture = foto.PictureImprimir = Truedtr_matricula.PrintReportUnload dtr_matriculatabla_rep.CloseSet tabla_rep = NothingEnd SubPrivate Sub cmd_nuevo_Click()cmb_grado.Locked = FalseNuevo2txtperiodo.TEXT = Gperiodotxtestado = "S"cmd_busca_estudiante.Visible = Truecmb_grado.Locked = TrueEnd SubPublic Sub Nuevo2()Dim STRSQL As StringDim nuevo_reg As Integerstrtabla = CallByName(FRM, "get_tabla", VbMethod)campoPK = CallByName(FRM, "get_nuevo", VbMethod)STRSQL = "select isnull(max(cast(CODIGO as integer)),0) + 1 as nuevo from "& strtabla & " WHERE PERIODO=" & Gperiodo & "" 46
  • 86. If VerificaCambiosContenedor = True Then If MsgBox("Se ha realizado cambios, Desea Grabarlos......?", vbYesNo +vbInformation, "SISTEMA") = vbYes Then Guardar End IfEnd IfLimpiarSet tabla = base.Execute(STRSQL)nuevo_reg = tabla.Fields(0).Valuetabla.CloseSet tabla = NothingWith FRM Dim I As Object For Each I In .Controls If TypeOf I Is TextBox Or TypeOf I Is ComboBox Or TypeOf I IsListBox Or TypeOf I Is DTPicker Or TypeOf I Is CheckBox Or TypeOf I Is LabelThen If I.Container.Name = FRM.Name And I.DataField <> "" Then If campoPK = I.DataField Then If TypeOf I Is TextBox Then I.TEXT = nuevo_reg: I.tag =nuevo_reg If TypeOf I Is Label Then I.Caption = nuevo_reg: I.tag =nuevo_reg End If End If End If Next IEnd WithhabilitaContenedor TrueActiva_nuevoEnd SubPrivate Sub cmd_primero_Click()cmb_grado.Locked = FalseLLenaDatosForm 1cmb_grado.Locked = Truecmd_busca_estudiante.Visible = NotEXISTE_MATRICULA(eti_matricula.Caption)End SubPrivate Sub cmd_salir_Click()SALIREnd SubPrivate Sub cmd_siguiente_Click()cmb_grado.Locked = FalseLLenaDatosForm 4cmb_grado.Locked = Truecmd_busca_estudiante.Visible = NotEXISTE_MATRICULA(eti_matricula.Caption) 47
  • 87. End SubPrivate Sub cmd_ultimo_Click()cmb_grado.Locked = FalseLLenaDatosForm 2cmb_grado.Locked = Truecmd_busca_estudiante.Visible = NotEXISTE_MATRICULA(eti_matricula.Caption)End SubPrivate Sub Form_Activate()Set FRM = MeEnd SubPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = 13 Then SendKeys vbTabEnd SubPrivate Sub Form_Load()filtro = " periodo=" & Gperiodo & " and estado=S "strtabla = "matricula"camposKP = "|codigo|periodo|"nuevo_reg = "codigo"opcion_foto = Extrae_config("17")NOTA_APRUEBA = Extrae_config("14")cmb_grado.Locked = FalseLLENACOMBO cmb_grado, "select codigo,nombre from grados"Set FRM = MeLLenaDatosFormcmb_grado.Locked = TrueEnd SubPrivate Sub Label2_Click()End SubPrivate Sub LaVolpeButton1_Click()End SubPrivate Sub txt_estudiante_Change()Dim SQL12 As StringSQL12 = "select nombres from estudiante where codigo=" &txt_estudiante.TEXT & " "Set tabla_aux = base.Execute(SQL12)If tabla_aux.EOF = False Then eti_estu.Caption = tabla_aux.Fields(0).ValueElse 48
  • 88. eti_estu.Caption = ""End Iftabla_aux.CloseSet tabla_aux = Nothingcambio_fotoEnd SubPrivate Sub cambio_foto()Dim SQL12 As StringIf txt_estudiante.TEXT <> "" Then If opcion_foto = "0" Then SQL12 = "SELECT FOTO FROM IMAGENES WHERE ESTUDIANTE="& txt_estudiante.TEXT & " and periodo=" & Gperiodo & "" Else SQL12 = "SELECT top 1 FOTO FROM IMAGENES WHEREESTUDIANTE=" & txt_estudiante.TEXT & "" End If Set tabla_aux = base.Execute(SQL12) If tabla_aux.EOF = False Then LeerBinary tabla_aux, foto, 0 tabla_aux.MoveNext Else Set foto.Picture = Nothing End If tabla_aux.Close Set tabla_aux = NothingElse Set foto.Picture = NothingEnd IfEnd SubPrivate Sub txtdescripcion_KeyPress(KeyAscii As Integer)KeyAscii = SoloTexto(KeyAscii)End SubPrivate Sub txtfolio_KeyPress(KeyAscii As Integer)KeyAscii = SoloTexto(KeyAscii)End Sub1.11 FORMULARIO REGISTRO DE GRADOSDim strtabla As StringDim camposKP As StringDim nuevo_reg As StringDim reg_actual As StringDim filtro As StringDim accion As StringPublic Sub Set_Accion(valor As String) accion = valorEnd Sub 49
  • 89. Public Function Get_Accion() As String Get_Accion = accionEnd FunctionPublic Function Get_filtro() As String Get_filtro = filtroEnd FunctionPublic Function Get_nuevo() As String Get_nuevo = nuevo_regEnd FunctionPublic Sub Set_Reg_actual(valor As String) reg_actual = valorEnd SubPublic Function Get_tabla() As String Get_tabla = strtablaEnd FunctionPublic Function Get_camposPK() As String Get_camposPK = camposKPEnd FunctionPublic Sub SALIR()Unload MeEnd SubPrivate Sub cmd_anterior_Click()LLenaDatosForm 3End SubPrivate Sub cmd_cancelar_Click()CancelarEnd SubPrivate Sub cmd_eliminar_Click()Elimna_regEnd SubPrivate Sub cmd_guardar_Click()GuardarEnd SubPrivate Sub cmd_nuevo_Click()NuevoEnd SubPrivate Sub cmd_primero_Click()LLenaDatosForm 1End SubPrivate Sub cmd_salir_Click()SALIREnd SubPrivate Sub cmd_siguiente_Click()LLenaDatosForm 4 50
  • 90. End SubPrivate Sub cmd_ultimo_Click()LLenaDatosForm 2End SubPrivate Sub Command1_Click()CallByName FRM, "Set_Reg_actual", VbMethod, "hola"End SubPrivate Sub Command2_Click()MsgBox reg_actualEnd SubPrivate Sub Form_Activate()Set FRM = MeEnd SubPrivate Sub Form_Load()filtro = ""strtabla = "grados"camposKP = "|codigo|"nuevo_reg = "codigo"Set FRM = MeLLenaDatosFormEnd SubPrivate Sub txtnombre_KeyPress(KeyAscii As Integer)KeyAscii = SoloTexto(KeyAscii)End Sub1.12 FORMULARIO REGISTRO DE NOTASDim strtabla As StringDim camposKP As StringDim nuevo_reg As StringDim reg_actual As StringDim filtro As StringDim d_grid(100) As DATOS_GRIDDim a_col As IntegerDim a_fil As IntegerDim accion As StringDim Libro As Excel.WorkbookDim HOJA As Excel.WorksheetPublic Sub SALIR()Unload MeEnd SubPrivate Sub cmb_grado_Click()cmb_paralelo.Clearcmb_materia.ClearIf cmb_grado.ListIndex = -1 Then Exit Sub 51
  • 91. LLENACOMBO cmb_paralelo, "select codigo,nombre from paralelo wheregrado=" & ExtraeIDCombo(cmb_grado) & " and periodo=" & Gperiodo & ""End SubPrivate Sub cmb_paralelo_Click()cmb_materia.ClearIf cmb_paralelo.ListIndex = -1 Then Exit SubLLENACOMBO cmb_materia, "select codigo,nombre from materias WHERECODIGO IN(SELECT MATERIA from MATERIA_PROFESOR WHEREPERIODO=" & Gperiodo & " AND PROFESOR=" &ExtraeIDCombo(cmb_profesor) & " and grado=" &ExtraeIDCombo(cmb_grado) & " and paralelo=" &ExtraeIDCombo(cmb_paralelo) & " )"End SubPrivate Sub cmb_profesor_Click()cmb_paralelo.Clearcmb_grado.Clearcmb_materia.ClearIf cmb_profesor.ListIndex = -1 Then Exit SubLLENACOMBO cmb_grado, "select codigo,nombre from grados WHERECODIGO IN(SELECT grado from MATERIA_PROFESOR WHEREPERIODO=" & Gperiodo & " AND PROFESOR=" &ExtraeIDCombo(cmb_profesor) & " )"End SubPrivate Sub cmd_eliminar_Click()Dim SQL1, SQL2, SQL3 As StringDim FILA, I As IntegerIf cmb_grado.ListIndex = -1 Or cmb_materia.ListIndex = -1 Orcmb_paralelo.ListIndex = -1 Or cmb_parcial.ListIndex = -1 Orcmb_profesor.ListIndex = -1 Then Exit SubIf GRID.Rows > 2 Or GRID.TextMatrix(1, 0) <> "" Then If MsgBox("Esta seguro de Borrar Las Notas ..........?", vbYesNo +vbInformation, "SISTEMA") <> vbYes Then Exit SubEnd IfFor I = 1 To GRID.Rows - 1 If GRID.TextMatrix(I, 0) <> "" And GRID.TextMatrix(I, 1) <> "" AndGRID.TextMatrix(I, 2) <> "" And GRID.TextMatrix(I, 3) <> "" AndGRID.TextMatrix(I, 4) <> "" And GRID.TextMatrix(I, 5) <> "" Then SQL1 = genera_DELETE(I) base.Execute (SQL1) End IfNextIf GRID.Rows > 2 Or GRID.TextMatrix(1, 0) <> "" ThenForm_msg.Timer1.Enabled = False 52
  • 92. Form_msg.Timer2.Enabled = TrueForm_msg.cmd_aceptar.Visible = FalseForm_msg.ProgressBar1.Visible = TrueMensage "Borrando Notas........ "End IfLIMPIA_GRIDEnd SubPrivate Sub cmd_generaexel_Click()Dim I, j As IntegerOn Error GoTo SALIRIf GRID.TextMatrix(1, 0) = "" And GRID.TextMatrix(1, 1) = "" Then Exit SubIf Permiso("EX", Me.Name) = False Then Exit SubIf Apli.Workbooks.Count > 0 Then Apli.Workbooks(1).Close FalseSet Libro = Apli.Workbooks.AddLibro.Worksheets(3).DeleteLibro.Worksheets(2).DeleteSet HOJA = Libro.Worksheets(1)HOJA.Rows("1:1").RowHeight = 18Apli.Range("G1:R1").SelectWith Apli.Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = FalseEnd WithApli.Selection.MergeApli.Range("G1:R1").SelectApli.ActiveCell.FormulaR1C1 = NOMBRE_ESCUELAApli.Range("G2:R2").SelectWith Apli.Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = FalseEnd WithApli.Selection.MergeApli.Range("G2:R2").Select 53
  • 93. Apli.ActiveCell.FormulaR1C1 = NOMBRE_PERIODOHOJA.Columns("A:F").Hidden = TrueHOJA.Columns("S:S").Hidden = TrueHOJA.Columns("G:G").ColumnWidth = 2.71HOJA.Columns("H:H").ColumnWidth = 30HOJA.Columns("I:Q").ColumnWidth = 9HOJA.Columns("R:R").ColumnWidth = 16HOJA.Name = "NOTAS"HOJA.Cells(5, 7) = "Nº"HOJA.Cells(5, 8) = "Nomina"HOJA.Cells(5, 9) = "Conducta"HOJA.Cells(5, 10) = "Deberes"HOJA.Cells(5, 11) = "Lecciones"HOJA.Cells(5, 12) = "Trabajo"HOJA.Cells(5, 13) = "Aportes"HOJA.Cells(5, 14) = "Examenes"HOJA.Cells(5, 15) = "Actuacion"HOJA.Cells(5, 16) = "Total"HOJA.Cells(5, 17) = "Promedio"HOJA.Cells(5, 18) = "Observacion"colocar los datos de las notasHOJA.Cells(3, 8) = "PROFESOR:"HOJA.Cells(4, 8) = "MATERIA:"Apli.Range("H3:H4").SelectApli.Selection.HorizontalAlignment = xlRightApli.Range("L3:L3").SelectApli.Selection.HorizontalAlignment = xlRightApli.ActiveCell.FormulaR1C1 = "GRADO:"Apli.Range("I3:K3").SelectWith Apli.Selection .HorizontalAlignment = xlLeft .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = FalseEnd WithApli.Selection.MergeApli.Range("I3:K3").SelectApli.ActiveCell.FormulaR1C1 = cmb_profesor.TEXTApli.Range("I4:K4").SelectWith Apli.Selection .HorizontalAlignment = xlLeft .VerticalAlignment = xlBottom .WrapText = False 54
  • 94. .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = FalseEnd WithApli.Selection.MergeApli.Range("I4:K4").SelectApli.ActiveCell.FormulaR1C1 = cmb_materia.TEXTApli.Range("M3:N3").SelectWith Apli.Selection .HorizontalAlignment = xlLeft .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = FalseEnd WithApli.Selection.MergeApli.Range("M3:N3").SelectApli.ActiveCell.FormulaR1C1 = cmb_grado.TEXTApli.Range("O3:P3").SelectWith Apli.Selection .HorizontalAlignment = xlRight .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = FalseEnd WithApli.Selection.MergeApli.Range("O3:P3").SelectApli.ActiveCell.FormulaR1C1 = "PARALELO:"Apli.Range("Q3").SelectApli.Selection.HorizontalAlignment = xlRightApli.ActiveCell.FormulaR1C1 = cmb_paralelo.TEXTApli.Range("L4:M4").SelectWith Apli.Selection .HorizontalAlignment = xlRight .VerticalAlignment = xlBottom .WrapText = False 55
  • 95. .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = FalseEnd WithApli.Selection.MergeApli.Range("L4:O4").SelectWith Apli.Selection .HorizontalAlignment = xlLeft .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = FalseEnd WithApli.Selection.MergeApli.Range("L4:O4").SelectApli.ActiveCell.FormulaR1C1 = cmb_parcial.TEXT & " TRIMESTRE"I = GRID.Rows - 1Apli.Range("I6:O" & I + 6).SelectWith Apli.Selection.Validation .Delete .Add Type:=xlValidateDecimal, AlertStyle:=xlValidAlertStop,Operator:=xlBetween, Formula1:="0", Formula2:="20" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "SISTEMA" .InputMessage = "" .ErrorMessage = "VALORES PERMITIDOS (0 a 20)" .ShowInput = True .ShowError = TrueEnd With COMENSAMOS A LLENAR LA HOJADim A As XlEditionTypeFor I = 1 To GRID.Rows - 1 HOJA.Cells(I + 5, 1) = GRID.TextMatrix(I, 0) HOJA.Cells(I + 5, 2) = GRID.TextMatrix(I, 1) HOJA.Cells(I + 5, 3) = GRID.TextMatrix(I, 2) HOJA.Cells(I + 5, 4) = GRID.TextMatrix(I, 3) HOJA.Cells(I + 5, 5) = GRID.TextMatrix(I, 4) HOJA.Cells(I + 5, 6) = GRID.TextMatrix(I, 5) 56
  • 96. HOJA.Cells(I + 5, 7) = GRID.TextMatrix(I, 6) HOJA.Cells(I + 5, 8) = GRID.TextMatrix(I, 7) HOJA.Cells(I + 5, 9) = GRID.TextMatrix(I, 8) HOJA.Cells(I + 5, 10) = GRID.TextMatrix(I, 9) HOJA.Cells(I + 5, 11) = GRID.TextMatrix(I, 10) HOJA.Cells(I + 5, 12) = GRID.TextMatrix(I, 11) HOJA.Cells(I + 5, 13) = GRID.TextMatrix(I, 12) HOJA.Cells(I + 5, 14) = GRID.TextMatrix(I, 13) HOJA.Cells(I + 5, 15) = GRID.TextMatrix(I, 14) HOJA.Cells(I + 5, 16).Formula = "=SUM(RC[-6]:RC[-1])" HOJA.Cells(I + 5, 17).Formula = "=ROUND(RC[-1]/6,0)" HOJA.Cells(I + 5, 18).Formula = "=IF(RC[-1]>=" &NOTA_SOBRESALIENTE & ",""SOBRESALIENTE"",IF(RC[-1]>=" &NOTA_MUYBUENO & ",""MUY BUENO"",IF(RC[-1]>=" & NOTA_BUENO& ",""BUENO"",IF(RC[-1]>=" & NOTA_REGULAR &",""REGULAR"",""INSUFICIENTE""))))" HOJA.Cells(I + 5, 19) = GRID.TextMatrix(I, 18) Hoja.Cells.AllowEditNextHOJA.Protection.AllowEditRanges.Add Title:="Notas", Range:=Range("I6:O" &I + 4)HOJA.Protect "LigiaMayu", DrawingObjects:=True, Contents:=True,Scenarios:=Truecdl.CancelError = Truecdl.Filter = "Archivos de Excel|*.xls"cdl.FileName = "NOTAS " & cmb_materia.TEXT & " " &ExtraeIDCombo(cmb_grado) & cmb_paralelo.TEXT & " " &ExtraeIDCombo(cmb_parcial) & "º TRIMESTRE"cdl.ShowSavenombre = cdl.FileName InputBox("Guardar como")Libro.SaveAs nombre "C:" & nombre & ".xls"SALIR2:Set Hoja = NothingSet Libro = NothingSet Apli = NothingApli.Visible = TrueSALIR:End SubPrivate Sub cmd_guardar_Click()Dim SQL1, SQL2, SQL3 As StringDim aux As BooleanDim FILA, I As Integeraux = FalseOn Error GoTo SALIR2If Permiso("G", Me.Name) = False Then Exit Sub 57
  • 97. If EXITE_NOTA(1) = True Then If Permiso("M", Me.Name) = False Then Exit SubEnd IfIf cmb_grado.ListIndex = -1 Or cmb_materia.ListIndex = -1 Orcmb_paralelo.ListIndex = -1 Or cmb_parcial.ListIndex = -1 Orcmb_profesor.ListIndex = -1 Then Exit SubFor I = 1 To GRID.Rows - 1 If GRID.TextMatrix(I, 0) <> "" And GRID.TextMatrix(I, 1) <> "" AndGRID.TextMatrix(I, 2) <> "" And GRID.TextMatrix(I, 3) <> "" AndGRID.TextMatrix(I, 4) <> "" And GRID.TextMatrix(I, 5) <> "" Then If EXITE_NOTA(I) = True Then SQL1 = genera_UPDATE(I) Else SQL1 = genera_INSERT(I) End If base.Execute (SQL1) End IfNextIf GRID.Rows > 2 Or GRID.TextMatrix(1, 0) <> "" Thenaux = TrueForm_msg.Timer1.Enabled = FalseForm_msg.Timer2.Enabled = TrueForm_msg.cmd_aceptar.Visible = FalseForm_msg.ProgressBar1.Visible = TrueMensage "Guardando o Modificando Notas "aux = FalseExit SubSALIR2: If aux = True Then Unload Form_msg End If ERRORESEnd IfEnd SubPrivate Sub procesar()Dim SQL1, SQL2 As StringDim FILA As IntegerLIMPIA_GRIDtxt.TEXT = ""txt.Visible = FalseIf cmb_grado.ListIndex = -1 Or cmb_materia.ListIndex = -1 Orcmb_paralelo.ListIndex = -1 Or cmb_parcial.ListIndex = -1 Orcmb_profesor.ListIndex = -1 Then Exit SubSQL1 = "select (select nombres from estudiante where codigo=M.estudiante) asestudiante,M.codigo as matricula ,isnull(N.trimestre,) as trimestre,isnull(N.materia,)as materia,isnull(N.periodo,) as periodo,isnull(N.conducta,0) 58
  • 98. as conducta,isnull(N.deber," & CStr(NOTA_MIN) & ") asdeber,isnull(N.leccion," & CStr(NOTA_MIN) & ") as leccion,isnull(N.actuacion,"& CStr(NOTA_MIN) & ") as actuacion,isnull(N.trabajo," & CStr(NOTA_MIN)& ") as trabajo,isnull(N.aporte," & CStr(NOTA_MIN) & ") asaporte,isnull(N.examen," & CStr(NOTA_MIN) & ") asexamen,isnull(N.actuacion," & CStr(NOTA_MIN) & ") as actuacion,M.GRADOAS grado,M.paralelo as paralelo,M.periodo as periodo from matricula M joinNotas N on N.matricula=M.codigo where M.estado=S and M.grado=" &ExtraeIDCombo(cmb_grado) & " and M.paralelo=" &ExtraeIDCombo(cmb_paralelo) & " and M.periodo=" & Gperiodo & " andN.materia=" & ExtraeIDCombo(cmb_materia) & " and N.trimestre=" &ExtraeIDCombo(cmb_parcial) & " order by estudiante"SQL2 = "select (select nombres from estudiante where codigo=M.estudiante) asestudiante,M.codigo as matricula ," & ExtraeIDCombo(cmb_parcial) & " astrimestre ," & ExtraeIDCombo(cmb_materia) & "as materia," & Gperiodo & "as periodo," & CStr(NOTA_MIN) & " as conducta," & CStr(NOTA_MIN) & " asdeber," & CStr(NOTA_MIN) & " as leccion," & CStr(NOTA_MIN) & " asactuacion," & CStr(NOTA_MIN) & " as trabajo," & CStr(NOTA_MIN) & " asaporte," & CStr(NOTA_MIN) & " as examen," & CStr(NOTA_MIN) & " asactuacion,M.GRADO AS grado,M.paralelo as paralelo,M.periodo as periodo frommatricula M where estado=S and grado=" & ExtraeIDCombo(cmb_grado) & "and paralelo=" & ExtraeIDCombo(cmb_paralelo) & " and M.periodo=" &Gperiodo & " order by estudiante"Set tabla = base.Execute(SQL1)If tabla.EOF = True Then tabla.Close accion = "M" Set tabla = Nothing If MsgBox("No existen notas registradas todabia, Desea generarlas ...............?", vbYesNo + vbInformation, "SISTEMA") <> vbYes Then Exit Sub Set tabla = base.Execute(SQL2) If tabla.EOF = True Then accion = "N" tabla.Close Set tabla = Nothing MsgBox "No existen Estudiantes Matriculados", vbInformation, "SISTEMA" Exit Sub End IfEnd IfFILA = 1Do Until tabla.EOF = True For I = 0 To tabla.Fields.Count - 1 CARGA_GRID tabla.Fields.Item(I).Name, FILA, tabla.Fields(I).Value Next GRID.TextMatrix(FILA, col_nombre("Nº")) = FILA GRID.TextMatrix(FILA, col_nombre("profesor")) =ExtraeIDCombo(cmb_profesor) CALCULAR FILA 59
  • 99. tabla.MoveNext If tabla.EOF = False Then FILA = FILA + 1 GRID.Rows = GRID.Rows + 1 End IfLooptabla.CloseSet tabla = NothingEnd SubPrivate Sub CALCULAR(FILA As Integer) GRID.TextMatrix(FILA, col_nombre("Total")) = valor_celda(FILA, "deber") +valor_celda(FILA, "leccion") + valor_celda(FILA, "trabajo") + valor_celda(FILA,"aporte") + valor_celda(FILA, "examen") + valor_celda(FILA, "actuacion") GRID.TextMatrix(FILA, col_nombre("Promedio")) =Round(valor_celda(FILA, "Total") / 6, 3) GRID.TextMatrix(FILA, col_nombre("Promedio2")) =Round(valor_celda(FILA, "Total") / 6, 0) GRID.TextMatrix(FILA, col_nombre("Observacion")) =VAL_OBSER(CStr(valor_celda(FILA, "Promedio")))End SubPrivate Function valor_celda(FILA As Integer, nombre As String) As Double Dim I As Integer For I = 0 To GRID.Cols - 1 If UCase(d_grid(I).campo_col) = UCase(nombre) Then valor_celda = Val(GRID.TextMatrix(FILA, d_grid(I).n_col)) Exit Function End If NextEnd FunctionPrivate Function col_nombre(nombre As String) As Integer Dim I As Integer For I = 0 To GRID.Cols - 1 If UCase(d_grid(I).campo_col) = UCase(nombre) Then col_nombre = d_grid(I).n_col Exit Function End If NextEnd FunctionPrivate Function VAL_OBSER(NOTA As String) As String Dim N As Double N = Val(NOTA) VAL_OBSER = "" If N >= NOTA_SOBRESALIENTE Then VAL_OBSER ="SOBRESALIENTE": Exit Function If N >= NOTA_MUYBUENO Then VAL_OBSER = "MUY BUENO": ExitFunction 60
  • 100. If N >= NOTA_BUENO Then VAL_OBSER = "BUENO": Exit Function If N >= NOTA_REGULAR Then VAL_OBSER = "REGULAR": ExitFunction If N < NOTA_INSUFICIENTE Then VAL_OBSER = "INSUFICIENTE": ExitFunctionEnd FunctionPrivate Sub cmd_procesar_Click()procesarEnd SubPrivate Sub cmd_salir_Click()SALIREnd SubPrivate Sub cmd_siguiente_Click()LLenaDatosForm 4End SubPrivate Sub cmd_subirexel_Click()Dim I, j As IntegerPublic Apli2 As Excel.ApplicationOn Error GoTo SALIR2If GRID.TextMatrix(1, 0) = "" And GRID.TextMatrix(1, 1) = "" Then Exit Subcdl.CancelError = Truecdl.Filter = "Archivos de Excel|*.xls"cdl.FileName = "NOTAS " & cmb_materia.Text & " " &ExtraeIDCombo(cmb_grado) & cmb_paralelo.Text & " " &ExtraeIDCombo(cmb_parcial) & "º TRIMESTRE"cdl.ShowOpenIf Apli.Workbooks.Count > 0 Then Apli.Workbooks(1).Close FalseApli.Workbooks.Open FileName:=cdl.FileNameIf cdl.FileName = "" Then Exit SubSet Apli2 = New ApplicationSet Libro = Apli.Workbooks(1)Set HOJA = Libro.Worksheets(1)HOJA.Unprotect "LigiaMayu"LIMPIA_GRIDI=6If HOJA.Cells(I, 1) <> "" Then cmb_profesor.ListIndex = IndexList(cmb_profesor, CLng(HOJA.Cells(I, 19))) cmb_grado.ListIndex = IndexList(cmb_grado, CLng(HOJA.Cells(I, 2))) cmb_paralelo.ListIndex = IndexList(cmb_paralelo, CLng(HOJA.Cells(I, 3))) cmb_parcial.ListIndex = IndexList(cmb_parcial, CLng(HOJA.Cells(I, 5))) cmb_materia.ListIndex = IndexList(cmb_materia, CLng(HOJA.Cells(I, 6)))End IfDo Until HOJA.Cells(I, 1) = "" If GRID.TextMatrix(I - 6, 0) <> "" Then GRID.Rows = GRID.Rows + 1 GRID.TextMatrix(I - 5, 0) = HOJA.Cells(I, 1) 61
  • 101. GRID.TextMatrix(I - 5, 1) = HOJA.Cells(I, 2) GRID.TextMatrix(I - 5, 2) = HOJA.Cells(I, 3) GRID.TextMatrix(I - 5, 3) = HOJA.Cells(I, 4) GRID.TextMatrix(I - 5, 4) = HOJA.Cells(I, 5) GRID.TextMatrix(I - 5, 5) = HOJA.Cells(I, 6) GRID.TextMatrix(I - 5, 6) = HOJA.Cells(I, 7) GRID.TextMatrix(I - 5, 7) = HOJA.Cells(I, 8) GRID.TextMatrix(I - 5, 8) = HOJA.Cells(I, 9) GRID.TextMatrix(I - 5, 9) = HOJA.Cells(I, 10) GRID.TextMatrix(I - 5, 10) = HOJA.Cells(I, 11) GRID.TextMatrix(I - 5, 11) = HOJA.Cells(I, 12) GRID.TextMatrix(I - 5, 12) = HOJA.Cells(I, 13) GRID.TextMatrix(I - 5, 13) = HOJA.Cells(I, 14) GRID.TextMatrix(I - 5, 14) = HOJA.Cells(I, 15) GRID.TextMatrix(I - 5, 18) = HOJA.Cells(I, 19) CALCULAR I - 5 I=I+1 DoEventsLoopIf Apli.Workbooks.Count > 0 Then Apli.Workbooks(1).Close Falseaccion = ""Libro.CloseExit SubSALIR2:If Apli.Workbooks.Count > 0 Then Apli.Workbooks(1).Close FalseEnd SubPrivate Sub cmd_ultimo_Click()LLenaDatosForm 2End SubPrivate Sub Form_Load()filtro = ""coloca_tolti Metxtperiodo.TEXT = GperiodoMe.Top = 0Me.Left = 10LLENACOMBO cmb_profesor, "select codigo,nombre from profesor"LLENACOMBO cmb_parcial, "select codigo,nombre from trimestres"strtabla = "notas"camposKP = "|codigo|"nuevo_reg = "codigo"DAT_gridCONF_GRIDNOTA_MAX = Val(Extrae_config("1"))NOTA_MIN = Val(Extrae_config("2"))NOTA_SOBRESALIENTE = Val(Extrae_config("3"))NOTA_MUYBUENO = Val(Extrae_config("4")) 62
  • 102. NOTA_BUENO = Val(Extrae_config("5"))NOTA_REGULAR = Val(Extrae_config("6"))NOTA_INSUFICIENTE = Val(Extrae_config("7"))Libro.Worksheets(1).DeleteEnd SubPrivate Function EXITE_NOTA(FILA As Integer) As BooleanDim SQL1, strand As Stringstrand = " "EXITE_NOTA = FalseSQL1 = "select count(*) as UNOS from " & strtabla & " where "For I = 0 To GRID.Cols - 1 If d_grid(I).clave = True Then SQL1 = SQL1 & strand & d_grid(I).campo_col & " = " &GRID.TextMatrix(FILA, d_grid(I).n_col) & "" strand = " AND " End IfNextSet tabla = base.Execute(SQL1)If tabla.Fields(0).Value <> 0 Then EXITE_NOTA = TrueEnd Iftabla.CloseSet tabla = NothingEnd FunctionPrivate Function genera_INSERT(FILA As Integer) As StringDim SQL1, SQL2, strCOMA As StringstrCOMA = " "SQL1 = "INSERT INTO " & strtabla & "("SQL2 = " VALUES ("For I = 0 To GRID.Cols - 1 If d_grid(I).insertable = True Then SQL1 = SQL1 & strCOMA & d_grid(I).campo_col SQL2 = SQL2 & strCOMA & "" & GRID.TextMatrix(FILA,d_grid(I).n_col) & "" strCOMA = "," End IfNextSQL1 = SQL1 & ") "SQL2 = SQL2 & ") "SQL1 = SQL1 & SQL2genera_INSERT = SQL1End FunctionPrivate Function genera_UPDATE(FILA As Integer) As String 63
  • 103. Dim SQL1, SQL2, strCOMA, strand As StringstrCOMA = " "strand = " "SQL1 = "UPDATE " & strtabla & " set "SQL2 = " WHERE "For I = 0 To GRID.Cols - 1 If d_grid(I).insertable = True And d_grid(I).clave = False Then SQL1 = SQL1 & strCOMA & d_grid(I).campo_col & "=" &GRID.TextMatrix(FILA, d_grid(I).n_col) & "" strCOMA = "," End If If d_grid(I).clave = True Then SQL2 = SQL2 & strand & d_grid(I).campo_col & " = " &GRID.TextMatrix(FILA, d_grid(I).n_col) & "" strand = " AND " End IfNextSQL1 = SQL1 & " "SQL2 = SQL2 & " "SQL1 = SQL1 & SQL2genera_UPDATE = SQL1End FunctionPrivate Function genera_DELETE(FILA As Integer) As StringDim SQL2, strand As Stringstrand = " "SQL2 = "DELETE FROM " & strtabla & " WHERE "For I = 0 To GRID.Cols - 1 If d_grid(I).clave = True Then SQL2 = SQL2 & strand & d_grid(I).campo_col & " = " &GRID.TextMatrix(FILA, d_grid(I).n_col) & "" strand = " AND " End IfNextgenera_DELETE = SQL2End FunctionPrivate Sub DAT_grid()GRID.Cols = 20GRID_RES.Cols = 20d_grid(0).n_col = 0d_grid(0).ancho_col = 0d_grid(0).cabecera_col = ""d_grid(0).campo_col = "periodo"d_grid(0).editable = Falsed_grid(0).clave = Trued_grid(0).insertable = Trued_grid(1).n_col = 1 64
  • 104. d_grid(1).ancho_col = 0d_grid(1).cabecera_col = ""d_grid(1).campo_col = "grado"d_grid(1).editable = Falsed_grid(1).clave = Trued_grid(1).insertable = Trued_grid(2).n_col = 2d_grid(2).ancho_col = 0d_grid(2).cabecera_col = ""d_grid(2).campo_col = "paralelo"d_grid(2).editable = Falsed_grid(2).clave = Falsed_grid(2).insertable = Falsed_grid(3).n_col = 3d_grid(3).ancho_col = 0d_grid(3).cabecera_col = ""d_grid(3).campo_col = "matricula"d_grid(3).editable = Falsed_grid(3).clave = Trued_grid(3).insertable = Trued_grid(4).n_col = 4d_grid(4).ancho_col = 0d_grid(4).cabecera_col = ""d_grid(4).campo_col = "trimestre"d_grid(4).editable = Falsed_grid(4).clave = Trued_grid(4).insertable = Trued_grid(5).n_col = 5d_grid(5).ancho_col = 0d_grid(5).cabecera_col = ""d_grid(5).campo_col = "materia"d_grid(5).editable = Falsed_grid(5).clave = Trued_grid(5).insertable = Trued_grid(6).n_col = 6d_grid(6).ancho_col = 400d_grid(6).cabecera_col = "Nº"d_grid(6).campo_col = "Nº"d_grid(6).editable = Falsed_grid(6).clave = Falsed_grid(6).insertable = Falsed_grid(7).n_col = 7d_grid(7).ancho_col = 3500d_grid(7).cabecera_col = "Nomina"d_grid(7).campo_col = "estudiante"d_grid(7).editable = Falsed_grid(7).clave = Falsed_grid(7).insertable = False 65
  • 105. d_grid(8).n_col = 8d_grid(8).ancho_col = 800d_grid(8).cabecera_col = "Conducta"d_grid(8).campo_col = "conducta"d_grid(8).editable = Trued_grid(8).clave = Falsed_grid(8).insertable = Trued_grid(9).n_col = 9d_grid(9).ancho_col = 800d_grid(9).cabecera_col = "Deber"d_grid(9).campo_col = "deber"d_grid(9).editable = Trued_grid(9).clave = Falsed_grid(9).insertable = Trued_grid(10).n_col = 10d_grid(10).ancho_col = 800d_grid(10).cabecera_col = "Leccion"d_grid(10).campo_col = "leccion"d_grid(10).editable = Trued_grid(10).clave = Falsed_grid(10).insertable = Trued_grid(11).n_col = 11d_grid(11).ancho_col = 800d_grid(11).cabecera_col = "Invest."d_grid(11).campo_col = "trabajo"d_grid(11).editable = Trued_grid(11).clave = Falsed_grid(11).insertable = Trued_grid(12).n_col = 12d_grid(12).ancho_col = 800d_grid(12).cabecera_col = "Aporte"d_grid(12).campo_col = "aporte"d_grid(12).editable = Trued_grid(12).clave = Falsed_grid(12).insertable = Trued_grid(13).n_col = 13d_grid(13).ancho_col = 800d_grid(13).cabecera_col = "Examen"d_grid(13).campo_col = "examen"d_grid(13).editable = Trued_grid(13).clave = Falsed_grid(13).insertable = Trued_grid(14).n_col = 14d_grid(14).ancho_col = 800d_grid(14).cabecera_col = "Actuacion"d_grid(14).campo_col = "actuacion"d_grid(14).editable = Trued_grid(14).clave = False 66
  • 106. d_grid(14).insertable = Trued_grid(15).n_col = 15d_grid(15).ancho_col = 800d_grid(15).cabecera_col = "Total"d_grid(15).campo_col = "Total"d_grid(15).editable = Falsed_grid(15).clave = Falsed_grid(15).insertable = Trued_grid(16).n_col = 16d_grid(16).ancho_col = 800d_grid(16).cabecera_col = "Promedio"d_grid(16).campo_col = "Promedio2"d_grid(16).editable = Falsed_grid(16).clave = Falsed_grid(16).insertable = Trued_grid(17).n_col = 17d_grid(17).ancho_col = 1800d_grid(17).cabecera_col = "Observacion"d_grid(17).campo_col = "Observacion"d_grid(17).editable = Falsed_grid(17).clave = Falsed_grid(17).insertable = Falsed_grid(18).n_col = 18d_grid(18).ancho_col = 0d_grid(18).cabecera_col = ""d_grid(18).campo_col = "profesor"d_grid(18).editable = Falsed_grid(18).clave = Falsed_grid(18).insertable = Falsed_grid(19).n_col = 19d_grid(19).ancho_col = 0d_grid(19).cabecera_col = "Promedio"d_grid(19).campo_col = "promedio"d_grid(19).editable = Falsed_grid(19).clave = Falsed_grid(19).insertable = TrueEnd SubPrivate Sub CONF_GRID()Dim I As IntegerGRID.Rows = 2For I = 0 To GRID.Cols - 1 GRID.ColWidth(I) = d_grid(I).ancho_col GRID.TextMatrix(0, I) = d_grid(I).cabecera_colNextEnd SubPrivate Sub GRID_Click() 67
  • 107. Dim a_tex As StringIf cmb_grado.ListIndex = -1 Then Exit SubIf d_grid(GRID.col).editable = False Or GRID.Row = 0 Then Exit Suba_col = GRID.cola_fil = GRID.Rowa_tex = ""txt.Visible = Falsetxt.Top = GRID.Top + GRID.CellToptxt.Left = GRID.Left + GRID.CellLefttxt.Width = GRID.CellWidth - 10txt.Height = GRID.CellHeight - 10txt.TEXT = GRID.TextMatrix(a_fil, a_col)txt.Visible = Truetxt.SetFocustxt.SelLength = Len(txt.TEXT)txt.SelStart = 1End SubPrivate Sub GRID_Scroll()txt.Visible = FalseGRID.RowSel = GRID.RowEnd SubPrivate Sub txt_Change()On Error Resume NextIf Val(txt.TEXT) > NOTA_MAX Then Mensage "El rango de la nota debe ser entre " & CStr(NOTA_MIN) & " y " &CStr(NOTA_MAX) txt.TEXT = CStr(NOTA_MIN) txt.SelLength = 1 Exit SubEnd IfIf txt.TEXT = "" Then txt.TEXT = CStr(NOTA_MIN) txt.SelLength = 1 Exit SubEnd IfGRID.TextMatrix(a_fil, a_col) = txt.TEXTCALCULAR a_filEnd SubPrivate Sub LIMPIA_GRID()Dim I, c As IntegerGRID.Rows = 2For c = 0 To GRID.Cols - 1 GRID.TextMatrix(1, c) = "" 68
  • 108. NextEnd SubPrivate Sub CARGA_GRID(nombre As String, FILA As Integer, valor AsVariant) Dim I As Integer For I = 0 To GRID.Cols - 1 If d_grid(I).campo_col = nombre Then GRID.TextMatrix(FILA, d_grid(I).n_col) = valor End If NextEnd SubPrivate Sub txt_KeyDown(KeyCode As Integer, Shift As Integer)Dim f, c As IntegerIf KeyCode = 13 And Shift <> 1 Then c = GRID.col f = GRID.Row If f = GRID.Rows - 1 And c = 14 Then Exit Sub If c < 14 Then c=c+1 Else f=f+1 c=8 End If GRID.Row = f GRID.col = c GRID_ClickEnd IfIf Shift = 1 And KeyCode = 13 Then c = GRID.col f = GRID.Row If f = 1 And c = 8 Then Exit Sub If c > 8 Then c=c-1 Else f=f-1 c = 14 End If GRID.Row = f GRID.col = c GRID_ClickEnd IfIf KeyCode = 40 And Shift = 0 Then FLECHA PA ABAJO c = GRID.col f = GRID.Row If f = GRID.Rows - 1 Then Exit Sub f=f+1 GRID.Row = f 69
  • 109. GRID.col = c GRID_ClickEnd IfIf KeyCode = 38 And Shift = 0 Then FLECHA PA ARRIBA c = GRID.col f = GRID.Row If f = 1 Then Exit Sub f=f-1 GRID.Row = f GRID.col = c GRID_ClickEnd IfEnd SubPrivate Sub txt_KeyPress(KeyAscii As Integer)KeyAscii = SoloNumero(KeyAscii)End SubPrivate Sub txt_KeyUp(KeyCode As Integer, Shift As Integer)Clipboard.ClearClipboard.SetText ""End SubPrivate Sub txt_MouseDown(Button As Integer, Shift As Integer, X As Single, YAs Single)Clipboard.ClearClipboard.SetText ""End Sub1.13 FORMULARIO INFORME DE NOTAS RESUMIDO X MATERIASY TRIMESTRESDim d_grid(100) As DATOS_GRIDDim Libro As Excel.WorkbookDim HOJA As Excel.WorksheetPrivate Sub cmb_grado_Click()If cmb_grado.ListIndex = -1 Then Exit SubLLENACOMBO cmb_paralelo, "select codigo,nombre from paralelo wheregrado=" & ExtraeIDCombo(cmb_grado) & " and periodo=" &ExtraeIDCombo(cmb_periodo) & ""LLENACOMBO cmb_materia, "select codigo,abreviatura from materias whereCODIGO IN(SELECT MATERIA FROM MATERIA_GRADO WHEREperiodo=" & ExtraeIDCombo(cmb_periodo) & " and grado=" &ExtraeIDCombo(cmb_grado) & ")"End Sub 70
  • 110. Private Sub CARGA_GRID(nombre As String, FILA As Integer, valor AsVariant) Dim I As Integer For I = 0 To GRID.Cols - 1 If d_grid(I).campo_col = nombre Then GRID.TextMatrix(FILA, d_grid(I).n_col) = valor End If NextEnd SubPrivate Sub LIMPIA_GRID()Dim I, c As IntegerGRID.Rows = 2For c = 0 To GRID.Cols - 1 GRID.TextMatrix(1, c) = ""NextEnd SubPrivate Sub cmb_periodo_Click()cmb_paralelo.Clearcmb_materia.ClearLLENACOMBO cmb_grado, "select codigo,nombre from grados WHERECODIGO IN(SELECT DISTINCT GRADO FROM MATERIA_GRADOWHERE PERIODO=" & ExtraeIDCombo(cmb_periodo) & " )"End SubPrivate Sub cmd_generaexel_Click()Dim f, c As IntegerOn Error Resume NextIf GRID.TextMatrix(1, 0) = "" And GRID.TextMatrix(1, 1) = "" Then Exit SubIf Apli.Workbooks.Count > 0 Then Apli.Workbooks(1).Close FalseSet Libro = Apli.Workbooks.AddLibro.Worksheets(3).DeleteLibro.Worksheets(2).DeleteSet HOJA = Libro.Worksheets(1)c = GRID.Cols - 1f = GRID.Rows - 1Apli.Range.Font.Bold = TrueApli.Range("A1:" & LETRA_NUMERO(c) & "1").SelectWith Apli.Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .Size = 14 .Bold = True .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False 71
  • 111. .ReadingOrder = xlContext .MergeCells = FalseEnd WithApli.Selection.MergeApli.Range("A1:" & LETRA_NUMERO(c) & "1").SelectApli.ActiveCell.FormulaR1C1 = NOMBRE_ESCUELAApli.Range("A2:" & LETRA_NUMERO(c) & "2").SelectWith Apli.Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .Size = 14 .Bold = True .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = FalseEnd WithApli.Selection.MergeApli.Range("A2:" & LETRA_NUMERO(c) & "2").SelectApli.ActiveCell.FormulaR1C1 = cmb_periodo.TEXTApli.Range("A3:" & LETRA_NUMERO(c) & "3").SelectWith Apli.Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .Size = 14 .Bold = True .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = FalseEnd WithApli.Selection.MergeApli.Range("A3:" & LETRA_NUMERO(c) & "3").SelectApli.ActiveCell.FormulaR1C1 = "INFORME RESUMIDO DE NOTAS XMATERIAS Y ALUMNOS"HOJA.Cells(4, 2) = "GRADO : " & cmb_grado.TEXTHOJA.Cells(4, 5) = "PARALELO : " & cmb_paralelo.TEXTHOJA.Columns("A:A").ColumnWidth = 2.71HOJA.Columns("B:B").ColumnWidth = 33For c = 3 To GRID.Cols - 2 HOJA.Columns(c).ColumnWidth = 5.14Next 72
  • 112. HOJA.Columns(GRID.Cols - 1).ColumnWidth = 20For f = 0 To GRID.Rows - 1 For c = 1 To GRID.Cols - 1 HOJA.Cells(f + 5, c) = GRID.TextMatrix(f, c) If Val(GRID.TextMatrix(f, c)) < CInt(NOTA_APRUEBA) And c > 2 And f> 0 And GRID.TextMatrix(f, col_nombre("observacion")) <> "APRUEBA" Then HOJA.Cells(f + 5, c).Font.Color = -16776961 End If HOJA.Cells(f + 5, c).Borders(xlEdgeLeft).LineStyle = xlContinuous HOJA.Cells(f + 5, c).Borders(xlEdgeLeft).ColorIndex = 0 HOJA.Cells(f + 5, c).Borders(xlEdgeLeft).Weight = xlThin HOJA.Cells(f + 5, c).Borders(xlEdgeTop).LineStyle = xlContinuous HOJA.Cells(f + 5, c).Borders(xlEdgeTop).ColorIndex = 0 HOJA.Cells(f + 5, c).Borders(xlEdgeTop).Weight = xlThin HOJA.Cells(f + 5, c).Borders(xlEdgeBottom).LineStyle = xlContinuous HOJA.Cells(f + 5, c).Borders(xlEdgeBottom).ColorIndex = 0 HOJA.Cells(f + 5, c).Borders(xlEdgeBottom).Weight = xlThin HOJA.Cells(f + 5, c).Borders(xlEdgeRight).LineStyle = xlContinuous HOJA.Cells(f + 5, c).Borders(xlEdgeRight).ColorIndex = 0 HOJA.Cells(f + 5, c).Borders(xlEdgeRight).Weight = xlThin If f = 0 And c > 2 Then HOJA.Cells(f + 5, c).Orientation = 90 NextNextHOJA.PageSetup.Orientation = xlLandscapeHOJA.PrintOutEnd SubPrivate Sub cmd_procesar_Click()Dim tabla_rep As New ADODB.RecordsetDim SQL1 As StringDim SQL2 As StringDim numero As IntegerDim C_matricula As IntegerDim C_materia As IntegerDim FILA As IntegerLIMPIA_GRIDIf cmb_grado.ListIndex = -1 Or cmb_paralelo.ListIndex = -1 Orcmb_materia.ListCount = 0 Then Exit Subcargar_materiasCONF_GRIDnumero = 1C_matricula = col_nombre("matricula")SQL1 = "SELECT M.N_lista,M.codigo as matricula,estu=(select nombres fromestudiante where codigo=M.estudiante) FROM MATRICULA M "SQL1 = SQL1 & " where M.estado=S and M.periodo=" &ExtraeIDCombo(cmb_periodo) & " and M.grado=" & 73
  • 113. ExtraeIDCombo(cmb_grado) & " and M.paralelo=" &ExtraeIDCombo(cmb_paralelo) & " order by estu"Set tabla_rep = base.Execute(SQL1)Do Until tabla_rep.EOF = True SQL2 = "update matricula set N_lista=" & numero & " where periodo=" &Gperiodo & " and codigo=" & tabla_rep.Fields(1).Value & " " base.Execute (SQL2) numero = numero + 1 tabla_rep.MoveNextLooptabla_rep.CloseSet tabla_rep = NothingSQL1 = "SELECT M.N_lista,M.codigo as matricula,estu=(select nombres fromestudiante where codigo=M.estudiante) FROM MATRICULA M "SQL1 = SQL1 & " where M.estado=S and M.periodo=" &ExtraeIDCombo(cmb_periodo) & " and M.grado=" &ExtraeIDCombo(cmb_grado) & " and M.paralelo=" &ExtraeIDCombo(cmb_paralelo) & " order by estu"Set tabla_rep = base.Execute(SQL1)FILA = 1Do Until tabla_rep.EOF = True For I = 0 To tabla_rep.Fields.Count - 1 CARGA_GRID tabla_rep.Fields.Item(I).Name, FILA,tabla_rep.Fields(I).Value Next tabla_rep.MoveNext If tabla_rep.EOF = False Then FILA = FILA + 1 GRID.Rows = GRID.Rows + 1 End IfLooptabla_rep.CloseSet tabla_rep = NothingFor I = 0 To cmb_materia.ListCount - 1 cmb_materia.ListIndex = I C_materia = col_nombre(cmb_materia.TEXT) SQL1 = "select M2.codigo asmatricula,total=M2.promedio1+M2.promedio2+M2.promedio3 from (SELECTM.N_lista as N_lista,estu=(select nombres from estudiante wherecodigo=M.estudiante),promedio1=isnull((select promedio2 from notas whereperiodo=M.periodo and matricula=M.codigo and trimestre=1 and materia=" &ExtraeIDCombo(cmb_materia) & "),0),promedio2=isnull((select promedio2 fromnotas where periodo=M.periodo and matricula=M.codigo and trimestre=2 andmateria=" & ExtraeIDCombo(cmb_materia) & "),0),promedio3=isnull((selectpromedio2 from notas where periodo=M.periodo and matricula=M.codigo andtrimestre=3 and materia=" & ExtraeIDCombo(cmb_materia) & "),0),M.codigo 74
  • 114. as Codigo,M.periodo as periodo,M.grado as grado,M.paralelo as paralelo FROMMATRICULA M where M.estado=S) M2 " SQL1 = SQL1 & " where M2.periodo=" & ExtraeIDCombo(cmb_periodo) & "and M2.grado=" & ExtraeIDCombo(cmb_grado) & " and M2.paralelo=" &ExtraeIDCombo(cmb_paralelo) & " order by estu" Set tabla_rep = base.Execute(SQL1) Do Until tabla_rep.EOF = True FILA = row_valor(tabla_rep.Fields(0).Value, C_matricula) GRID.TextMatrix(FILA, C_materia) = tabla_rep.Fields(1).Value If tabla_rep.Fields(1).Value < CInt(NOTA_APRUEBA) Then GRID.Row = FILA GRID.col = C_materia GRID.CellForeColor = vbRed End If tabla_rep.MoveNext Loop tabla_rep.Close Set tabla_rep = NothingNextCALCULAREnd SubPrivate Sub CALCULAR() Dim I As Integer For I = 1 To GRID.Rows - 1 If GRID.TextMatrix(1, 0) <> "" Then GRID.TextMatrix(I, col_nombre("observacion")) = get_observ(I) If GRID.TextMatrix(I, col_nombre("observacion")) <> "APRUEBA"Then GRID.Row = I GRID.col = col_nombre("observacion") GRID.CellForeColor = vbRed End If End If NextEnd SubPrivate Function get_observ(FILA As Integer) As String Dim c As Integer Dim CADE1 As String Dim NUM As Integer NUM = 0 CADE1 = "APRUEBA" For c = 3 To GRID.Cols - 2 If Val(GRID.TextMatrix(FILA, c)) < CInt(NOTA_APRUEBA) Then CADE1 = "REPRUEBA" NUM = NUM + 1 End If Next If NUM > 0 Then CADE1 = CADE1 & "(" & NUM & ")" 75
  • 115. get_observ = CADE1End FunctionPrivate Function col_nombre(nombre As String) As Integer Dim I As Integer For I = 0 To GRID.Cols - 1 If UCase(d_grid(I).campo_col) = UCase(nombre) Then col_nombre = d_grid(I).n_col Exit Function End If NextEnd FunctionPrivate Function row_valor(valor As String, c As Integer) As Integer Dim I As Integer For I = 0 To GRID.Rows - 1 If GRID.TextMatrix(I, c) = UCase(valor) Then row_valor = I Exit Function End If NextEnd FunctionPrivate Sub cmd_salir_Click()Unload MeEnd SubPrivate Sub Form_Load()Me.Top = 0Me.Left = 10coloca_tolti MeNOTA_APRUEBA = Extrae_config("14")NOTA_REPRUEBA = Extrae_config("16")NOTA_SUPLE = Extrae_config("15")LLENACOMBO cmb_periodo, "select codigo,nombre from periodo"cmb_periodo.ListIndex = IndexList(cmb_periodo, CLng(Gperiodo))DAT_gridEnd SubPrivate Sub DAT_grid()GRID.Cols = 3d_grid(0).n_col = 0d_grid(0).ancho_col = 0d_grid(0).cabecera_col = ""d_grid(0).campo_col = "matricula"d_grid(0).revisar = Falsed_grid(1).n_col = 1d_grid(1).ancho_col = 300d_grid(1).cabecera_col = "Nº" 76
  • 116. d_grid(1).campo_col = "N_lista"d_grid(1).revisar = Falsed_grid(2).n_col = 2d_grid(2).ancho_col = 3000d_grid(2).cabecera_col = "Nomina"d_grid(2).campo_col = "estu"d_grid(2).revisar = FalseEnd SubPrivate Sub cargar_materias() Dim I As Integer GRID.Cols = cmb_materia.ListCount + 4 For I = 3 To GRID.Cols - 2 cmb_materia.ListIndex = I - 3 d_grid(I).n_col = I d_grid(I).ancho_col = 700 d_grid(I).cabecera_col = cmb_materia.TEXT d_grid(I).campo_col = cmb_materia.TEXT d_grid(I).revisar = True Next I = GRID.Cols - 1 d_grid(I).n_col = I d_grid(I).ancho_col = 1500 d_grid(I).cabecera_col = "Observacion" d_grid(I).campo_col = "Observacion" d_grid(I).revisar = FalseEnd SubPrivate Sub CONF_GRID()Dim I As IntegerGRID.Rows = 2For I = 0 To GRID.Cols - 1 GRID.ColWidth(I) = d_grid(I).ancho_col GRID.TextMatrix(0, I) = d_grid(I).cabecera_colNextEnd SubPrivate Function LETRA_NUMERO(NUM As Integer) As String Select Case NUM Case 1: LETRA_NUMERO = "A" Case 2: LETRA_NUMERO = "B" Case 3: LETRA_NUMERO = "C" Case 4: LETRA_NUMERO = "D" Case 5: LETRA_NUMERO = "E" Case 6: LETRA_NUMERO = "F" Case 7: LETRA_NUMERO = "G" Case 8: LETRA_NUMERO = "H" Case 9: LETRA_NUMERO = "I" Case 10: LETRA_NUMERO = "J" Case 11: LETRA_NUMERO = "K" Case 12: LETRA_NUMERO = "L" 77
  • 117. Case 13: LETRA_NUMERO = "M" Case 14: LETRA_NUMERO = "N" Case 15: LETRA_NUMERO = "O" Case 16: LETRA_NUMERO = "P" Case 17: LETRA_NUMERO = "Q" Case 18: LETRA_NUMERO = "R" Case 19: LETRA_NUMERO = "S" Case 20: LETRA_NUMERO = "T" Case 21: LETRA_NUMERO = "U" Case 22: LETRA_NUMERO = "V" Case 23: LETRA_NUMERO = "W" Case 24: LETRA_NUMERO = "X" Case 25: LETRA_NUMERO = "Y" Case 26: LETRA_NUMERO = "Z" Case 27: LETRA_NUMERO = "AA" Case 28: LETRA_NUMERO = "AB" Case 29: LETRA_NUMERO = "AC" Case 30: LETRA_NUMERO = "AD" Case 31: LETRA_NUMERO = "AE" Case 32: LETRA_NUMERO = "AF" Case 33: LETRA_NUMERO = "AG" Case 34: LETRA_NUMERO = "AH" Case Else: LETRA_NUMERO = "A" End SelectEnd Function1.14 FORMULARIO REGISTRO DE PARALELOSDim strtabla As StringDim camposKP As StringDim nuevo_reg As StringDim reg_actual As StringDim filtro As StringDim d_grid(100) As DATOS_GRIDDim a_col As IntegerDim a_fil As IntegerPublic Function Get_filtro() As String Get_filtro = filtroEnd FunctionPublic Function Get_nuevo() As String Get_nuevo = nuevo_regEnd FunctionPublic Sub Set_Reg_actual(valor As String) reg_actual = valorEnd SubPublic Function Get_tabla() As String Get_tabla = strtabla 78
  • 118. End FunctionPublic Function Get_camposPK() As String Get_camposPK = camposKPEnd FunctionPublic Sub SALIR()Unload MeEnd SubPrivate Sub cmb_cursos_Click()Dim c As Integertxt.Visible = FalseGRID.Rows = 2For c = 0 To GRID.Cols - 1 GRID_RES.TextMatrix(1, c) = "" If c = 0 Or c = 3 Then GRID.TextMatrix(1, c) = "" ElseIf c = 1 Then GRID.TextMatrix(1, c) = ExtraeIDCombo(cmb_cursos) Else GRID.TextMatrix(1, c) = txtperiodo.TEXT End IfNextCARGA_GRIDEnd SubPrivate Sub cmd_anterior_Click()LLenaDatosForm 3End SubPrivate Sub cmd_cancelar_Click()LLenaDatosFormEnd SubPrivate Sub cmd_eliminar_Click()txt.Visible = FalseIf Permiso("E", Me.Name) = False Then Exit SubELIMINA_ITEM_GRID GRID.RowEnd SubPrivate Sub cmd_guardar_Click()GuardarBORRA_DATOS_GRIDGUARDA_GRIDEnd SubPrivate Sub cmd_nuevo_Click() 79
  • 119. NuevoIf cmb_cursos.ListIndex = -1 Then Exit SubGRID.Rows = GRID.Rows + 1GRID.TextMatrix(GRID.Rows - 1, 1) = ExtraeIDCombo(cmb_cursos)MsgBox (ExtraeIDCombo(cmb_cursos))GRID.TextMatrix(GRID.Rows - 1, 2) = txtperiodo.TEXTEnd SubPrivate Sub cmd_primero_Click()LLenaDatosForm 1End SubPrivate Sub cmd_salir_Click()SALIREnd SubPrivate Sub cmd_siguiente_Click()LLenaDatosForm 4End SubPrivate Sub cmd_ultimo_Click()LLenaDatosForm 2End SubPrivate Sub Form_Activate()Set FRM = MeEnd SubPrivate Sub Form_Load()filtro = ""coloca_tolti Metxtperiodo.TEXT = GperiodoLLENACOMBO cmb_cursos, "select codigo,nombre from grados"strtabla = "paralelo"camposKP = "|codigo|"nuevo_reg = "codigo"DAT_gridCONF_GRIDIf cmb_cursos.ListCount > 0 Then cmb_cursos.ListIndex = 0Set FRM = MeLLenaDatosFormEnd SubPrivate Sub DAT_grid()GRID.Cols = 4GRID_RES.Cols = 4d_grid(0).n_col = 0d_grid(0).ancho_col = 800d_grid(0).cabecera_col = "Codigo"d_grid(0).campo_col = "codigo"d_grid(0).editable = Falsed_grid(1).n_col = 1d_grid(1).ancho_col = 0d_grid(1).cabecera_col = "" 80
  • 120. d_grid(1).campo_col = "grado"d_grid(1).editable = Falsed_grid(2).n_col = 2d_grid(2).ancho_col = 0d_grid(2).cabecera_col = ""d_grid(2).campo_col = "periodo"d_grid(2).editable = Falsed_grid(3).n_col = 3d_grid(3).ancho_col = 1000d_grid(3).cabecera_col = "Nombre"d_grid(3).campo_col = "codigo"d_grid(3).editable = TrueEnd SubPrivate Sub CONF_GRID()Dim I As IntegerGRID.Rows = 2For I = 0 To GRID.Cols - 1 GRID.ColWidth(I) = d_grid(I).ancho_col GRID.TextMatrix(0, I) = d_grid(I).cabecera_colNextEnd SubPrivate Sub GRID_Click()Dim a_tex As StringIf cmb_cursos.ListIndex = -1 Then Exit SubIf d_grid(GRID.col).editable = False Or GRID.Row = 0 Then Exit Suba_col = GRID.cola_fil = GRID.Rowa_tex = ""txt.Visible = Falsetxt.Top = GRID.Top + GRID.CellToptxt.Left = GRID.Left + GRID.CellLefttxt.Width = GRID.CellWidth - 10txt.Height = GRID.CellHeight - 10txt.TEXT = GRID.TextMatrix(a_fil, a_col)txt.Visible = Truetxt.SetFocusEnd SubPrivate Sub txt_Change()GRID.TextMatrix(a_fil, a_col) = txt.TEXTEnd SubPrivate Sub GUARDA_GRID()Dim I, mayor As IntegerDim SQLSTR As StringSet tabla = base.Execute("select isnull(max(cast(" & nuevo_reg & " as integer)),0)+ 1 as nuevo from " & strtabla)mayor = tabla.Fields(0).Value 81
  • 121. tabla.CloseSet tabla = NothingFor I = 1 To GRID.Rows - 1 If GRID.TextMatrix(I, 0) = "" Then hay que insertar SQLSTR = "INSERT INTO " & strtabla & "(codigo,grado,periodo,nombre)Values (" & mayor & "," & GRID.TextMatrix(I, 1) & "," &GRID.TextMatrix(I, 2) & "," & GRID.TextMatrix(I, 3) & ")" GRID.TextMatrix(I, 0) = mayor mayor = mayor + 1 Else hay que actualizar SQLSTR = "UPDATE " & strtabla & " set nombre=" & GRID.TextMatrix(I,3) & " where codigo=" & GRID.TextMatrix(I, 0) & "" End If base.Execute (SQLSTR)NextEnd SubPrivate Sub BORRA_DATOS_GRID()Dim I, c As IntegerDim SQLSTR As StringFor I = 1 To GRID_RES.Rows - 1 If GRID_RES.TextMatrix(I, 0) <> "" Then SQLSTR = "DELETE FROM " & strtabla & " WHERE codigo=" &GRID_RES.TextMatrix(I, 0) & "" base.Execute (SQLSTR) End IfNextGRID_RES.Rows = 2For c = 0 To GRID_RES.Cols - 1 GRID_RES.TextMatrix(1, c) = ""NextEnd SubPrivate Sub CARGA_GRID() Dim SQLSTR As String Dim I, FILAS As Integer FILAS = 1 SQLSTR = "SELECT CODIGO,grado,PERIODO,NOMBRE FROMPARALELO WHERE grado=" & ExtraeIDCombo(cmb_cursos) & " ANDPERIODO=" & txtperiodo.TEXT & " ORDER BY CAST(CODIGO ASINTEGER)" Set tabla = base.Execute(SQLSTR) Do Until tabla.EOF = True If FILAS = GRID.Rows Then GRID.Rows = GRID.Rows + 1 GRID.TextMatrix(FILAS, 0) = tabla.Fields(0).Value GRID.TextMatrix(FILAS, 1) = tabla.Fields(1).Value GRID.TextMatrix(FILAS, 2) = tabla.Fields(2).Value GRID.TextMatrix(FILAS, 3) = tabla.Fields(3).Value FILAS = FILAS + 1 tabla.MoveNext 82
  • 122. Loop tabla.Close Set tabla = NothingEnd SubPrivate Sub ELIMINA_ITEM_GRID(FILA As Integer)Dim r, I As IntegerIf GRID.TextMatrix(FILA, 0) <> "" Then If GRID_RES.Rows = 2 And GRID_RES.TextMatrix(1, 0) = "" Then NOHAY NADA GRID_RES.TextMatrix(1, 0) = GRID.TextMatrix(FILA, 0) GRID_RES.TextMatrix(1, 1) = GRID.TextMatrix(FILA, 1) GRID_RES.TextMatrix(1, 2) = GRID.TextMatrix(FILA, 2) GRID_RES.TextMatrix(1, 3) = GRID.TextMatrix(FILA, 3) Else r = GRID_RES.Rows GRID_RES.Rows = GRID_RES.Rows + 1 GRID_RES.TextMatrix(r, 0) = GRID.TextMatrix(FILA, 0) GRID_RES.TextMatrix(r, 1) = GRID.TextMatrix(FILA, 1) GRID_RES.TextMatrix(r, 2) = GRID.TextMatrix(FILA, 2) GRID_RES.TextMatrix(r, 3) = GRID.TextMatrix(FILA, 3) End IfEnd IfFor I = FILA To GRID.Rows - 2 GRID.TextMatrix(I, 0) = GRID.TextMatrix(I + 1, 0) GRID.TextMatrix(I, 1) = GRID.TextMatrix(I + 1, 1) GRID.TextMatrix(I, 2) = GRID.TextMatrix(I + 1, 2) GRID.TextMatrix(I, 3) = GRID.TextMatrix(I + 1, 3)NextGRID.Rows = GRID.Rows - 1End SubPrivate Sub txt_KeyPress(KeyAscii As Integer)KeyAscii = SoloNombre(KeyAscii)End Sub1.15 FORMULARIO REGISTRO DE TRIMESTRES O PARCIALESDim strtabla As StringDim camposKP As StringDim nuevo_reg As StringDim reg_actual As StringDim filtro As StringDim accion As StringPublic Sub Set_Accion(valor As String) accion = valorEnd SubPublic Function Get_Accion() As String Get_Accion = accion 83
  • 123. End FunctionPublic Function Get_filtro() As String Get_filtro = filtroEnd FunctionPublic Function Get_nuevo() As String Get_nuevo = nuevo_regEnd FunctionPublic Sub Set_Reg_actual(valor As String) reg_actual = valorEnd SubPublic Function Get_tabla() As String Get_tabla = strtablaEnd FunctionPublic Function Get_camposPK() As String Get_camposPK = camposKPEnd FunctionPublic Sub SALIR()Unload MeEnd SubPrivate Sub cmd_anterior_Click()LLenaDatosForm 3End SubPrivate Sub cmd_cancelar_Click()CancelarEnd SubPrivate Sub cmd_eliminar_Click()Elimna_regEnd SubPrivate Sub cmd_guardar_Click()GuardarEnd SubPrivate Sub cmd_nuevo_Click()NuevoEnd SubPrivate Sub cmd_primero_Click()LLenaDatosForm 1End SubPrivate Sub cmd_salir_Click()SALIREnd SubPrivate Sub cmd_siguiente_Click()LLenaDatosForm 4End SubPrivate Sub cmd_ultimo_Click() 84
  • 124. LLenaDatosForm 2End SubPrivate Sub Form_Activate()Set FRM = MeEnd SubPrivate Sub Form_Load()filtro = ""strtabla = "trimestres"camposKP = "|codigo|"nuevo_reg = "codigo"Set FRM = MeLLenaDatosFormEnd SubPrivate Sub txtnombre_KeyPress(KeyAscii As Integer)KeyAscii = SoloTexto(KeyAscii)End Sub1.16 FORMULARIO ESTABLCER PERIODO ACTIVOPrivate Sub Form_Load()LLENACOMBO cmb_periodos, "select codigo,nombre from periodo"SELECTCOMBO cmb_periodos, GperiodoEnd SubPrivate Sub LaVolpeButton1_Click()Gperiodo = ExtraeIDCombo(cmb_periodos)Grabar_Ini ruta_ini, "periodo", GperiodoNOMBRE_PERIODO = cmb_periodos.TEXTMDIForm1.Caption = "Systema de Control Escolar - " & cmb_periodos.TEXTEnd SubPrivate Sub LaVolpeButton2_Click()Unload MeEnd Sub1.17 FORMULARIO REGISTRO DE PERIODOSDim strtabla As StringDim camposKP As StringDim nuevo_reg As StringDim reg_actual As StringDim filtro As StringDim accion As StringPublic Sub Set_Accion(valor As String) accion = valorEnd SubPublic Function Get_Accion() As String Get_Accion = accionEnd Function 85
  • 125. Public Function Get_filtro() As String Get_filtro = filtroEnd FunctionPublic Function Get_nuevo() As String Get_nuevo = nuevo_regEnd FunctionPublic Sub Set_Reg_actual(valor As String) reg_actual = valorEnd SubPublic Function Get_tabla() As String Get_tabla = strtablaEnd FunctionPublic Function Get_camposPK() As String Get_camposPK = camposKPEnd FunctionPublic Sub SALIR()Unload MeEnd SubPrivate Sub cmd_anterior_Click()LLenaDatosForm 3End SubPrivate Sub cmd_buscar_Click()On Error GoTo SALIRBusqueda_sql "SELECT codigo,NOMBRE FROM periodo "Busqueda_where " WHERE codigo+NOMBRE "Busqueda_orden "2"Busqueda_Ncampos 2Busqueda_campos 0, "Codigo", 20Busqueda_campos 1, "Periodo", 80Busqueda_indice 0Load frmbusquedafrmbusqueda.Show vbModalIf Busqueda.retorna <> "" Then LLenaDatosForm 0, Busqueda.retornaEnd IfExit SubSALIR:ERRORESEnd SubPrivate Sub cmd_cancelar_Click()CancelarEnd SubPrivate Sub cmd_eliminar_Click() 86
  • 126. Elimna_regEnd SubPrivate Sub cmd_guardar_Click()GuardarEnd SubPrivate Sub cmd_nuevo_Click()NuevoEnd SubPrivate Sub cmd_primero_Click()LLenaDatosForm 1End SubPrivate Sub cmd_salir_Click()SALIREnd SubPrivate Sub cmd_siguiente_Click()LLenaDatosForm 4End SubPrivate Sub cmd_ultimo_Click()LLenaDatosForm 2End SubPrivate Sub Form_Activate()Set FRM = MeEnd SubPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = 13 Then SendKeys vbTabEnd SubPrivate Sub Form_Load()filtro = ""strtabla = "PERIODO"camposKP = "|codigo|"nuevo_reg = "codigo"Set FRM = MeLLenaDatosFormEnd SubPrivate Sub txtdescripcion_KeyPress(KeyAscii As Integer)KeyAscii = SoloTexto(KeyAscii)End SubPrivate Sub txtnombre_KeyPress(KeyAscii As Integer)KeyAscii = SoloTexto(KeyAscii)End Sub 87
  • 127. 1.18 FORMULARIO PERMISOS DE USUARIOSPrivate Sub EjecutaSQL(cade As String)On Error GoTo SALIR2 base.Execute (cade)Exit SubSALIR2:ERRORESEnd SubPrivate Sub cmb_usuario_Click()If cmb_usuario.ListIndex = -1 Then Exit SubLLENAListCheck list_permisos, "select p.codigo,p.nombre,estado=isnull((selectestado from permisos_usuario where permiso=p.codigo and usuario=" &ExtraeIDCombo(cmb_usuario) & " ),0) from permisos p order by p.nombre"End SubPrivate Sub cmd_guardar_Click()Dim SQL1 As StringDim SQL2 As StringDim I As IntegerDim t_per As New ADODB.RecordsetIf cmb_usuario.ListIndex = -1 Then Exit SubFor I = 0 To list_permisos.ListCount - 1 list_permisos.ListIndex = I SQL1 = "select * from permisos_usuario where permiso=" &ExtraeIDCombo(list_permisos) & " and usuario=" &ExtraeIDCombo(cmb_usuario) & "" Set t_per = base.Execute(SQL1) If t_per.EOF = False Then SQL2 = "UPDATE PERMISOS_USUARIO SET ESTADO=" &CInt(list_permisos.Selected(I)) & " WHERE permiso=" &ExtraeIDCombo(list_permisos) & " and usuario=" &ExtraeIDCombo(cmb_usuario) & "" Else SQL2 = "INSERT INTOPERMISOS_USUARIO(PERMISO,USUARIO,ESTADO) VALUES(" &ExtraeIDCombo(list_permisos) & "," & ExtraeIDCombo(cmb_usuario) & "," &CInt(list_permisos.Selected(I)) & ")" End If t_per.Close Set t_per = Nothing EjecutaSQL SQL2NextMensage "Registro Guardado o Modificado los permisos"End SubPrivate Sub Form_Load()Me.Top = 0 88
  • 128. Me.Left = 10coloca_tolti MeLLENACOMBO cmb_usuario, "select codigo,nombre from usuarios order bynombre"End SubPrivate Sub cmd_salir_Click()SALIREnd SubPublic Sub SALIR()Unload MeEnd Sub1.19 FORMULARIO REGISTRO DE PROFESORESDim strtabla As StringDim camposKP As StringDim nuevo_reg As StringDim reg_actual As StringDim filtro As StringDim accion As StringPublic Sub Set_Accion(valor As String) accion = valorEnd SubPublic Function Get_Accion() As String Get_Accion = accionEnd FunctionPublic Function Get_filtro() As String Get_filtro = filtroEnd FunctionPublic Function Get_nuevo() As String Get_nuevo = nuevo_regEnd FunctionPublic Sub Set_Reg_actual(valor As String) reg_actual = valorEnd SubPublic Function Get_tabla() As String Get_tabla = strtablaEnd FunctionPublic Function Get_camposPK() As String Get_camposPK = camposKPEnd FunctionPublic Sub SALIR()Unload MeEnd SubPrivate Sub cmd_anterior_Click()LLenaDatosForm 3End SubPrivate Sub cmd_buscar_Click() 89
  • 129. On Error GoTo SALIRBusqueda_sql "SELECT codigo,NOMBRE,cedula,direccion FROM profesor "Busqueda_where " WHERE codigo+NOMBRE+cedula "Busqueda_orden "2"Busqueda_Ncampos 4Busqueda_campos 0, "Codigo", 5Busqueda_campos 1, "Nombre", 30Busqueda_campos 2, "Cedula", 15Busqueda_campos 3, "Direccion", 50Busqueda_indice 0Load frmbusquedafrmbusqueda.Show vbModalIf Busqueda.retorna <> "" Then LLenaDatosForm 0, Busqueda.retornaEnd IfExit SubSALIR:ERRORESEnd SubPrivate Sub cmd_cancelar_Click()CancelarEnd SubPrivate Sub cmd_eliminar_Click()Elimna_regEnd SubPrivate Sub cmd_guardar_Click()GuardarEnd SubPrivate Sub cmd_nuevo_Click()NuevoEnd SubPrivate Sub cmd_primero_Click()LLenaDatosForm 1End SubPrivate Sub cmd_salir_Click()SALIREnd SubPrivate Sub cmd_siguiente_Click()LLenaDatosForm 4End SubPrivate Sub cmd_ultimo_Click()LLenaDatosForm 2End SubPrivate Sub Form_Activate()Set FRM = MeEnd SubPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = 13 Then SendKeys vbTab 90
  • 130. End SubPrivate Sub Form_Load()Dim ruta As Stringruta = App.Path & "iconoslisto.gif"img_listo.Picture = LoadPicture(ruta)filtro = ""LLENACOMBO CMB_ESTADO_CIVIL, "select codigo,nombre fromtestado_civil"LLENACOMBO cmb_sexo, "select codigo,nombre from tsexo"strtabla = "PROFESOR"camposKP = "|codigo|"nuevo_reg = "codigo"Set FRM = MeLLenaDatosFormEnd SubPrivate Sub txtcedula_Change()If Cedula(txtcedula) = False Then img_listo.Visible = False Mensage "El numero de cedula es " & vbCr & "Incorrecto"Else img_listo.Visible = TrueEnd IfEnd SubPrivate Sub txtcedula_KeyPress(KeyAscii As Integer)KeyAscii = SoloCedula(KeyAscii)End SubPrivate Sub txtdireccion_KeyPress(KeyAscii As Integer)KeyAscii = SoloTexto(KeyAscii)End SubPrivate Sub txtnombre_KeyPress(KeyAscii As Integer)KeyAscii = SoloNombre(KeyAscii)End SubPrivate Sub txttelefono_KeyPress(KeyAscii As Integer)KeyAscii = SoloNumero(KeyAscii)End SubPrivate Sub txttitulo_KeyPress(KeyAscii As Integer)KeyAscii = SoloTexto(KeyAscii)End Sub1.20 FORMULARIO INFORME ASISTENCIAS DE PROFESORESDim Imprimir As BooleanPrivate Sub cmd_imprimir_Click()On Error Resume NextIf Imprimir = False Then Exit SubIf opt_detallado.Value = True Then 91
  • 131. dtr_Asistencias_profesor_detallado.PrintReportElse dtr_Asistencias_profesor_concentrado.PrintReportEnd IfEnd SubPrivate Sub cmd_procesar_Click()Dim tabla_rep As New ADODB.RecordsetDim SQL1 As StringDim SQL2 As StringDim numero As Integernumero = 1If cmb_periodo.ListIndex = -1 Then Exit SubIf opt_detallado.Value = True Then SQL1 = "select A.fecha,P.nombre,Asistencias=(case A.estado when S thenAsistio else Falto end),Justificaciones=(case A.Justificada when S thenJustificado else end),Atrasos=(case A.atraso when S then Atraso else end),A.hora_e,A.hora_s from asistencias_p as A join Profesor as P onP.codigo=A.profesor where (A.estado=S or A.justificada=S or A.atraso=S) andA.periodo=" & ExtraeIDCombo(cmb_periodo) & " and A.fecha>=" &dtp_desde.Value & " and A.fecha<=" & DTP_hasta.Value & " order by A.fecha" coloca_rep tabla_rep.Open SQL1, base, adOpenDynamic, adLockOptimistic Set dtr_Asistencias_profesor_detallado.DataSource = tabla_repdtr_Asistencias_profesor_detallado.Sections("S4").Controls("eti_periodo").Caption = cmb_periodo.TEXTdtr_Asistencias_profesor_detallado.Sections("S4").Controls("eti_escuela").Caption = NOMBRE_ESCUELA Setdtr_Asistencias_profesor_detallado.Sections("S4").Controls("escudo").Picture =LoadPicture(ruta_escudo) Imprimir = True dtr_Asistencias_profesor_detallado.RefreshElse SQL1 = "select nombre,Asistencias=isnull((select sum(case estado when Sthen 1 else 0 end) from asistencias_p where periodo=" &ExtraeIDCombo(cmb_periodo) & " and profesor=P.codigo and fecha>=" &dtp_desde.Value & " and fecha <=" & DTP_hasta.Value & "),0),Justificaciones=isnull((select sum(case justificada when S then 1 else 0 end)from asistencias_p where periodo=" & ExtraeIDCombo(cmb_periodo) & " andprofesor=P.codigo and fecha>=" & dtp_desde.Value & " and fecha <=" &DTP_hasta.Value & "),0),Atrasos=isnull((select sum(case atraso when S then 1else 0 end) from asistencias_p where periodo=" & ExtraeIDCombo(cmb_periodo)& " and profesor=P.codigo and fecha>=" & dtp_desde.Value & " and fecha <="& DTP_hasta.Value & "),0) from profesor as P " coloca_rep2 92
  • 132. tabla_rep.Open SQL1, base, adOpenDynamic, adLockOptimistic Set dtr_Asistencias_profesor_concentrado.DataSource = tabla_repdtr_Asistencias_profesor_concentrado.Sections("S4").Controls("eti_periodo").Caption = cmb_periodo.TEXTdtr_Asistencias_profesor_concentrado.Sections("S4").Controls("eti_escuela").Caption = NOMBRE_ESCUELA Setdtr_Asistencias_profesor_concentrado.Sections("S4").Controls("escudo").Picture= LoadPicture(ruta_escudo) Imprimir = True dtr_Asistencias_profesor_concentrado.RefreshEnd IfEnd SubPrivate Sub cmd_salir_Click()Unload MeEnd SubPrivate Sub Form_Load()On Error Resume NextMe.Top = 0Me.Left = 10coloca_tolti MeImprimir = FalseLLENACOMBO cmb_periodo, "select codigo,nombre from periodo"cmb_periodo.ListIndex = IndexList(cmb_periodo, CLng(Gperiodo))End SubPrivate Sub coloca_rep()On Error Resume NextdockForm dtr_Asistencias_profesor_detallado.hWnd, Picture1, TrueEnd SubPrivate Sub coloca_rep2()On Error Resume NextdockForm dtr_Asistencias_profesor_concentrado.hWnd, Picture1, TrueEnd SubPrivate Sub Form_Unload(Cancel As Integer)On Error Resume NextUnload dtr_Asistencias_profesor_concentradoUnload dtr_Asistencias_profesor_detalladoEnd SubPrivate Sub opt_concentrado_Click()Imprimir = FalseEnd Sub 93
  • 133. Private Sub opt_detallado_Click()Imprimir = FalseEnd Sub1.21 FORMULARIO INFORME DE NOTAS X TRIMESTREDim Imprimir As BooleanPrivate Sub cmb_grado_Click()LLENACOMBO cmb_paralelo, "select codigo,nombre from paralelo wheregrado=" & ExtraeIDCombo(cmb_grado) & " and periodo=" &ExtraeIDCombo(cmb_periodo) & ""LLENACOMBO cmb_materias, "select codigo,nombre from materias whereCODIGO IN(SELECT MATERIA FROM MATERIA_GRADO WHEREperiodo=" & ExtraeIDCombo(cmb_periodo) & " and grado=" &ExtraeIDCombo(cmb_grado) & ")"End SubPrivate Sub cmb_profesor_Click()cmb_paralelo.Clearcmb_grado.Clearcmb_materias.ClearIf cmb_profesor.ListIndex = -1 Then Exit SubLLENACOMBO cmb_grado, "select codigo,nombre from grados WHERECODIGO IN(SELECT grado from MATERIA_PROFESOR WHEREPERIODO=" & ExtraeIDCombo(cmb_periodo) & " AND PROFESOR=" &ExtraeIDCombo(cmb_profesor) & " )"LLENACOMBO cmb_materias, "select codigo,nombre from materias WHERECODIGO IN(SELECT MATERIA from MATERIA_PROFESOR WHEREPERIODO=" & ExtraeIDCombo(cmb_periodo) & " AND PROFESOR=" &ExtraeIDCombo(cmb_profesor) & " )"End SubPrivate Sub cmd_imprimir_Click()On Error Resume NextIf Imprimir = False Then Exit Subdtr_notas_x_trimestre.PrintReportEnd SubPrivate Sub cmd_procesar_Click()Dim tabla_rep As New ADODB.RecordsetDim SQL1 As StringDim SQL2 As StringDim numero As Integernumero = 1 94
  • 134. If cmb_grado.ListIndex = -1 Or cmb_paralelo.ListIndex = -1 Orcmb_materias.ListIndex = -1 Or cmb_parcial.ListIndex = -1 Orcmb_periodo.ListIndex = -1 Then Exit SubSQL1 = "SELECT M.N_lista,estu=(select nombres from estudiante wherecodigo=M.estudiante),N.conducta,N.deber,N.leccion,N.trabajo,N.aporte,N.examen,N.actuacion,promedio=round(((N.deber+N.leccion+N.trabajo+N.aporte+N.examen+N.actuacion)/6),0),observacion=dbo.val_obs(round((N.deber+N.leccion+N.trabajo+N.aporte+N.examen+N.actuacion)/6,0),M.periodo) FROM MATRICULAM join notas N on M.codigo=N.matricula and M.periodo=N.periodo whereM.periodo=" & ExtraeIDCombo(cmb_periodo) & " and M.grado=" &ExtraeIDCombo(cmb_grado) & " and M.paralelo=" &ExtraeIDCombo(cmb_paralelo) & " and N.materia=" &ExtraeIDCombo(cmb_materias) & " and N.trimestre=" &ExtraeIDCombo(cmb_parcial) & " order by estu"Set tabla_rep = base.Execute(SQL1)Do Until tabla_rep.EOF = True SQL2 = "update matricula set N_lista=" & numero & " where periodo=" &Gperiodo & " and codigo=" & tabla_rep.Fields(1).Value & " " base.Execute (SQL2) numero = numero + 1 tabla_rep.MoveNextLooptabla_rep.CloseSet tabla_rep = Nothingcoloca_reptabla_rep.Open SQL1, base, adOpenDynamic, adLockOptimisticSet dtr_notas_x_trimestre.DataSource = tabla_repdtr_notas_x_trimestre.Sections("S2").Controls("eti_grado").Caption =cmb_grado.TEXTdtr_notas_x_trimestre.Sections("S2").Controls("eti_paralelo").Caption =cmb_paralelo.TEXTdtr_notas_x_trimestre.Sections("S2").Controls("eti_profesor").Caption =cmb_profesor.TEXTdtr_notas_x_trimestre.Sections("S2").Controls("eti_materia").Caption =cmb_materias.TEXTdtr_notas_x_trimestre.Sections("S2").Controls("eti_trimestre").Caption =cmb_parcial.TEXTdtr_notas_x_trimestre.Sections("S4").Controls("eti_periodo").Caption =cmb_periodo.TEXTdtr_notas_x_trimestre.Sections("S4").Controls("eti_escuela").Caption =NOMBRE_ESCUELASet dtr_notas_x_trimestre.Sections("S4").Controls("escudo").Picture =LoadPicture(ruta_escudo)Imprimir = Truedtr_notas_x_trimestre.RefreshEnd Sub 95
  • 135. Private Sub cmd_salir_Click()Unload MeEnd SubPrivate Sub Form_Load()On Error Resume NextMe.Top = 0Me.Left = 10coloca_tolti MeImprimir = FalseDim HOJA As WorksheetSet HOJA = Libro_exel.Worksheets(1)HOJA.UnprotectLLENACOMBO cmb_profesor, "select codigo,nombre from profesor"LLENACOMBO cmb_parcial, "select codigo,nombre from trimestres"LLENACOMBO cmb_periodo, "select codigo,nombre from periodo"cmb_periodo.ListIndex = IndexList(cmb_periodo, CLng(Gperiodo))End SubPrivate Sub coloca_rep()On Error Resume NextdockForm dtr_notas_x_trimestre.hWnd, Picture1, TrueEnd SubPrivate Sub Form_Unload(Cancel As Integer)Unload dtr_notas_x_trimestreUnload dtr_notas_x_trimestre2End Sub1.22 FORMULARIO INFORME AUMNOS MATRICULADOSDim Imprimir As BooleanPrivate Sub chk_casileros_Click()If chk_casileros.Value = 0 Then descargar2Else descargarEnd IfImprimir = FalseEnd SubPrivate Sub descargar()On Error Resume NextUnload dtr_estu_matriculadosEnd SubPrivate Sub descargar2()On Error Resume NextUnload dtr_estu_matriculados2End Sub 96
  • 136. Private Sub cmb_grado_Click()LLENACOMBO cmb_paralelo, "select codigo,nombre from paralelo wheregrado=" & ExtraeIDCombo(cmb_grado) & " and periodo=" & Gperiodo & ""LLENACOMBO cmb_materias, "select codigo,nombre from materias whereCODIGO IN(SELECT MATERIA FROM MATERIA_GRADO WHEREperiodo=" & Gperiodo & " and grado=" & ExtraeIDCombo(cmb_grado) & ")"End SubPrivate Sub cmd_imprimir_Click()On Error Resume NextIf Imprimir = False Then Exit SubIf chk_casileros.Value = 0 Then dtr_estu_matriculados.PrintReportElse dtr_estu_matriculados2.PrintReportEnd IfEnd SubPrivate Sub cmd_procesar_Click()Dim tabla_rep As New ADODB.RecordsetDim SQL1 As StringDim SQL2 As StringDim numero As Integernumero = 1If cmb_grado.ListIndex = -1 Or cmb_paralelo.ListIndex = -1 Then Exit SubSQL1 = "select M.N_lista,M.codigo,estu=(select nombres from estudiante wherecodigo=M.estudiante),grado=(select nombre from grados wherecodigo=M.grado),paralelo=(select nombre from paralelo wherecodigo=M.paralelo),M.folio from matricula M where periodo=" & Gperiodo &" and grado=" & ExtraeIDCombo(cmb_grado) & " and paralelo=" &ExtraeIDCombo(cmb_paralelo) & " order by estu"Set tabla_rep = base.Execute(SQL1)Do Until tabla_rep.EOF = True SQL2 = "update matricula set N_lista=" & numero & " where periodo=" &Gperiodo & " and codigo=" & tabla_rep.Fields(1).Value & " " base.Execute (SQL2) numero = numero + 1 tabla_rep.MoveNextLooptabla_rep.CloseSet tabla_rep = NothingIf chk_casileros.Value = 0 Then coloca_rep tabla_rep.Open SQL1, base, adOpenDynamic, adLockOptimistic Set dtr_estu_matriculados.DataSource = tabla_rep dtr_estu_matriculados.Sections("S2").Controls("eti_grado").Caption =cmb_grado.TEXT 97
  • 137. dtr_estu_matriculados.Sections("S2").Controls("eti_paralelo").Caption =cmb_paralelo.TEXT dtr_estu_matriculados.Sections("S4").Controls("eti_periodo").Caption =NOMBRE_PERIODO dtr_estu_matriculados.Sections("S4").Controls("eti_escuela").Caption =NOMBRE_ESCUELA Set dtr_estu_matriculados.Sections("S4").Controls("escudo").Picture =LoadPicture(ruta_escudo) Imprimir = True dtr_estu_matriculados.RefreshElse coloca_rep2 tabla_rep.Open SQL1, base, adOpenDynamic, adLockOptimistic Set dtr_estu_matriculados2.DataSource = tabla_rep dtr_estu_matriculados2.Sections("S2").Controls("eti_grado").Caption =cmb_grado.TEXT dtr_estu_matriculados2.Sections("S2").Controls("eti_paralelo").Caption =cmb_paralelo.TEXT dtr_estu_matriculados2.Sections("S2").Controls("eti_materia").Caption =cmb_materias.TEXT dtr_estu_matriculados2.Sections("S4").Controls("eti_periodo").Caption =NOMBRE_PERIODO dtr_estu_matriculados2.Sections("S4").Controls("eti_escuela").Caption =NOMBRE_ESCUELA Set dtr_estu_matriculados2.Sections("S4").Controls("escudo").Picture =LoadPicture(ruta_escudo) Imprimir = True dtr_estu_matriculados2.RefreshEnd IfEnd SubPrivate Sub cmd_salir_Click()Unload MeEnd SubPrivate Sub Form_Load()On Error Resume Nextcoloca_tolti MeMe.Top = 0Me.Left = 10Imprimir = FalseLLENACOMBO cmb_grado, "select codigo,nombre from grados"End SubPrivate Sub coloca_rep()On Error Resume NextdockForm dtr_estu_matriculados.hWnd, Picture1, TrueEnd Sub 98
  • 138. Private Sub coloca_rep2()On Error Resume NextdockForm dtr_estu_matriculados2.hWnd, Picture1, TrueEnd SubPrivate Sub Form_Unload(Cancel As Integer)Unload dtr_estu_matriculadosUnload dtr_estu_matriculados2End Sub1.23 FORMULARIO INFORME DE NOTAS X ALUMNO RESUMIDODim Imprimir As BooleanPrivate Sub cmb_grado_Click()LLENACOMBO cmb_paralelo, "select codigo,nombre from paralelo wheregrado=" & ExtraeIDCombo(cmb_grado) & " and periodo=" &ExtraeIDCombo(cmb_periodo) & ""End SubPrivate Sub cmb_paralelo_Click()If cmb_paralelo.ListIndex = -1 Then Exit SubLLENACOMBO cmb_alumno, "select codigo,nombres=(select nombres fromestudiante where codigo=matricula.estudiante) from matricula where estado=Sand grado=" & ExtraeIDCombo(cmb_grado) & " and paralelo=" &ExtraeIDCombo(cmb_paralelo) & " and periodo=" &ExtraeIDCombo(cmb_periodo) & " order by nombres"End SubPrivate Sub cmd_guardar_Click()Dim I As IntegerIf cmb_grado.ListIndex = -1 Or cmb_paralelo.ListIndex = -1 Then Exit SubFor I = 0 To cmb_alumno.ListCount - 1 cmb_alumno.ListIndex = I procesar DoEvents dtr_notas_alumno_concentrado.PrintReport DoEventsNextEnd SubPrivate Sub cmd_imprimir_Click()On Error Resume NextIf Imprimir = False Then Exit Subdtr_notas_alumno_concentrado.PrintReportEnd Sub 99
  • 139. Private Sub cmd_procesar_Click()procesarEnd SubPrivate Sub procesar()Dim tabla_rep As New ADODB.RecordsetDim SQL1 As StringDim SQL2 As StringDim numero As Integernumero = 1If cmb_grado.ListIndex = -1 Or cmb_paralelo.ListIndex = -1 Orcmb_periodo.ListIndex = -1 Or cmb_alumno.ListIndex = -1 Then Exit SubSQL1 = "selectM2.materia,M2.promedio1,M2.promedio2,M2.promedio3,M2.conducta1,M2.conducta2,M2.conducta3,promedio_con=round((M2.conducta1+M2.conducta2+M2.conducta3) /3,0),total=M2.promedio1+M2.promedio2+M2.promedio3,observacion=dbo.val_obs2(M2.promedio1+M2.promedio2+M2.promedio3," &ExtraeIDCombo(cmb_periodo) & ") from (SELECT materia=(select nombrefrom materias where codigo=M.materia), conducta1=isnull((select conducta fromnotas where periodo=" & ExtraeIDCombo(cmb_periodo) & " andmateria=M.materia and trimestre=1 and matricula=" &ExtraeIDCombo(cmb_alumno) & " ),0),conducta2=isnull((select conducta fromnotas where periodo=" & ExtraeIDCombo(cmb_periodo) & " andmateria=M.materia and trimestre=2and matricula=" &ExtraeIDCombo(cmb_alumno) & " ),0),conducta3=isnull((select conducta fromnotas where periodo=" & ExtraeIDCombo(cmb_periodo) & " andmateria=M.materia and trimestre=3 and matricula=" &ExtraeIDCombo(cmb_alumno) & " ),0) "SQL1 = SQL1 & " ,promedio1=isnull((select promedio2 from notas whereperiodo=" & ExtraeIDCombo(cmb_periodo) & " and materia=M.materia andtrimestre=1 and matricula=" & ExtraeIDCombo(cmb_alumno) &"),0),promedio2=isnull((select promedio2 from notas where periodo=" &ExtraeIDCombo(cmb_periodo) & " and materia=M.materia and trimestre=2 andmatricula=" & ExtraeIDCombo(cmb_alumno) & "),0),promedio3=isnull((selectpromedio2 from notas where periodo=" & ExtraeIDCombo(cmb_periodo) & "and materia=M.materia and trimestre=3 and matricula=" &ExtraeIDCombo(cmb_alumno) & "),0) FROM materia_grado M whereM.periodo=" & ExtraeIDCombo(cmb_periodo) & " and grado=" &ExtraeIDCombo(cmb_grado) & " ) M2 order by M2.materia"SQL1 = SQL1 & " where M2.periodo=" & ExtraeIDCombo(cmb_periodo) & "and M2.grado=" & ExtraeIDCombo(cmb_grado) & " and M2.paralelo=" &ExtraeIDCombo(cmb_paralelo) & " order by estu"coloca_reptabla_rep.Open SQL1, base, adOpenDynamic, adLockOptimisticSet dtr_notas_alumno_concentrado.DataSource = tabla_repdtr_notas_alumno_concentrado.Sections("S2").Controls("eti_grado").Caption =cmb_grado.TEXT 100
  • 140. dtr_notas_alumno_concentrado.Sections("S2").Controls("eti_paralelo").Caption =cmb_paralelo.TEXTdtr_notas_alumno_concentrado.Sections("S2").Controls("eti_alumno").Caption =cmb_alumno.TEXTdtr_notas_concentrado.Sections("S2").Controls("eti_materia").Caption =cmb_materias.TEXTdtr_notas_concentrado.Sections("S2").Controls("eti_trimestre").Caption =cmb_parcial.Textdtr_notas_alumno_concentrado.Sections("S4").Controls("eti_periodo").Caption =cmb_periodo.TEXTdtr_notas_alumno_concentrado.Sections("S4").Controls("eti_escuela").Caption =NOMBRE_ESCUELASet dtr_notas_alumno_concentrado.Sections("S4").Controls("escudo").Picture =LoadPicture(ruta_escudo)Imprimir = Truedtr_notas_alumno_concentrado.RefreshEnd SubPrivate Sub cmd_salir_Click()Unload MeEnd SubPrivate Sub Form_Load()On Error Resume NextMe.Top = 0Me.Left = 10coloca_tolti MeImprimir = FalseLLENACOMBO cmb_grado, "select codigo,nombre from grados "LLENACOMBO cmb_periodo, "select codigo,nombre from periodo"cmb_periodo.ListIndex = IndexList(cmb_periodo, CLng(Gperiodo))End SubPrivate Sub coloca_rep()On Error Resume NextdockForm dtr_notas_alumno_concentrado.hWnd, Picture1, TrueEnd SubPrivate Sub Form_Unload(Cancel As Integer)Unload dtr_notas_alumno_concentradoUnload dtr_notas_concentrado2End Sub1.24 FORMULARIO INFORME DE NOTAS DE ALUMNOS XTRIMESTREDim Imprimir As BooleanPrivate Sub cmb_grado_Click() 101
  • 141. If cmb_grado.ListIndex = -1 Then Exit SubLLENACOMBO cmb_paralelo, "select codigo,nombre from paralelo wheregrado=" & ExtraeIDCombo(cmb_grado) & " and periodo=" &ExtraeIDCombo(cmb_periodo) & ""End SubPrivate Sub cmb_paralelo_Click()If cmb_paralelo.ListIndex = -1 Then Exit SubLLENACOMBO cmb_alumno, "select codigo,nombres from estudiante wherecodigo IN(select estudiante from matricula where grado=" &ExtraeIDCombo(cmb_grado) & " and paralelo=" &ExtraeIDCombo(cmb_paralelo) & " and periodo=" &ExtraeIDCombo(cmb_periodo) & ") order by nombres"End SubPrivate Sub cmd_guardar_Click()Dim I As IntegerIf cmb_grado.ListIndex = -1 Or cmb_periodo.ListIndex = -1 Orcmb_paralelo.ListIndex = -1 Or cmb_parcial.ListIndex = -1 Then Exit SubFor I = 0 To cmb_alumno.ListCount - 1 cmb_alumno.ListIndex = I procesar DoEvents dtr_notas_alumno_x_trimestre.PrintReport DoEventsNextEnd SubPrivate Sub cmd_imprimir_Click()On Error Resume NextIf Imprimir = False Then Exit Subdtr_notas_alumno_x_trimestre.PrintReportEnd SubPrivate Sub procesar()Dim tabla_rep As New ADODB.RecordsetDim SQL1 As StringDim SQL2 As StringDim numero As Integernumero = 1If cmb_grado.ListIndex = -1 Or cmb_paralelo.ListIndex = -1 Orcmb_parcial.ListIndex = -1 Or cmb_periodo.ListIndex = -1 Orcmb_alumno.ListIndex = -1 Then Exit SubSQL1 = "SELECT materia=(select nombre from materias wherecodigo=N.materia),N.conducta,N.deber,N.leccion,N.trabajo,N.aporte,N.examen,N.actuacion,promedio=round(((N.deber+N.leccion+N.trabajo+N.aporte+N.examen+N.actuacion)/6),0),observacion=dbo.val_obs(round((N.deber+N.leccion+N.trabajo+N.aporte+N.examen+N.actuacion)/6,0),M.periodo) FROM MATRICULA Mjoin notas N on M.codigo=N.matricula and M.periodo=N.periodo where 102
  • 142. M.estado=S and M.estudiante=" & ExtraeIDCombo(cmb_alumno) & " andM.periodo=" & ExtraeIDCombo(cmb_periodo) & " and M.grado=" &ExtraeIDCombo(cmb_grado) & " and M.paralelo=" &ExtraeIDCombo(cmb_paralelo) & " and N.trimestre=" &ExtraeIDCombo(cmb_parcial) & " order by materia"coloca_reptabla_rep.Open SQL1, base, adOpenDynamic, adLockOptimisticSet dtr_notas_alumno_x_trimestre.DataSource = tabla_repdtr_notas_alumno_x_trimestre.Sections("S2").Controls("eti_grado").Caption =cmb_grado.TEXTdtr_notas_alumno_x_trimestre.Sections("S2").Controls("eti_paralelo").Caption =cmb_paralelo.TEXTdtr_notas_alumno_x_trimestre.Sections("S2").Controls("eti_alumno").Caption =cmb_alumno.TEXTdtr_notas_alumno_x_trimestre.Sections("S2").Controls("eti_trimestre").Caption =cmb_parcial.TEXTdtr_notas_alumno_x_trimestre.Sections("S4").Controls("eti_periodo").Caption =cmb_periodo.TEXTdtr_notas_alumno_x_trimestre.Sections("S4").Controls("eti_escuela").Caption =NOMBRE_ESCUELASet dtr_notas_alumno_x_trimestre.Sections("S4").Controls("escudo").Picture =LoadPicture(ruta_escudo)Imprimir = Truedtr_notas_alumno_x_trimestre.RefreshEnd SubPrivate Sub cmd_procesar_Click()procesarEnd SubPrivate Sub cmd_salir_Click()Unload MeEnd SubPrivate Sub Form_Load()On Error Resume NextMe.Top = 0Me.Left = 10coloca_tolti MeImprimir = FalseLLENACOMBO cmb_parcial, "select codigo,nombre from trimestres"LLENACOMBO cmb_grado, "select codigo,nombre from grados "LLENACOMBO cmb_periodo, "select codigo,nombre from periodo"cmb_periodo.ListIndex = IndexList(cmb_periodo, CLng(Gperiodo))End SubPrivate Sub coloca_rep()On Error Resume NextdockForm dtr_notas_alumno_x_trimestre.hWnd, Picture1, True 103
  • 143. End SubPrivate Sub Form_Unload(Cancel As Integer)Unload dtr_notas_alumno_x_trimestreEnd Sub1.25 FORMULARIO INFORME DE NOTAS X TRIMESTRE RESUMIDODim Imprimir As BooleanPrivate Sub cmb_grado_Click()cmb_paralelo.Clearcmb_materias.ClearIf cmb_grado.ListIndex = -1 Then Exit SubLLENACOMBO cmb_paralelo, "select codigo,nombre from paralelo wheregrado=" & ExtraeIDCombo(cmb_grado) & " and periodo=" &ExtraeIDCombo(cmb_periodo) & ""LLENACOMBO cmb_materias, "select codigo,nombre from materias whereCODIGO IN(SELECT MATERIA FROM MATERIA_GRADO WHEREperiodo=" & ExtraeIDCombo(cmb_periodo) & " and grado=" &ExtraeIDCombo(cmb_grado) & ")"End SubPrivate Sub cmb_paralelo_Click()cmb_materias.ClearIf cmb_grado.ListIndex = -1 Then Exit SubLLENACOMBO cmb_materias, "select codigo,nombre from materias WHERECODIGO IN(SELECT MATERIA from MATERIA_PROFESOR WHEREPERIODO=" & ExtraeIDCombo(cmb_periodo) & " AND PROFESOR=" &ExtraeIDCombo(cmb_profesor) & " and grado=" &ExtraeIDCombo(cmb_grado) & " and paralelo=" &ExtraeIDCombo(cmb_paralelo) & " )"End SubPrivate Sub cmb_periodo_Click()cmb_profesor.ListIndex = -1End SubPrivate Sub cmb_profesor_Click()cmb_paralelo.Clearcmb_grado.Clearcmb_materias.ClearIf cmb_profesor.ListIndex = -1 Then Exit SubLLENACOMBO cmb_grado, "select codigo,nombre from grados WHERECODIGO IN(SELECT grado from MATERIA_PROFESOR WHEREPERIODO=" & ExtraeIDCombo(cmb_periodo) & " AND PROFESOR=" &ExtraeIDCombo(cmb_profesor) & " )" 104
  • 144. End SubPrivate Sub cmd_imprimir_Click()On Error Resume NextIf Imprimir = False Then Exit Subdtr_notas_concentrado.PrintReportEnd SubPrivate Sub cmd_procesar_Click()Dim tabla_rep As New ADODB.RecordsetDim SQL1 As StringDim SQL2 As StringDim numero As Integernumero = 1If cmb_grado.ListIndex = -1 Or cmb_paralelo.ListIndex = -1 Orcmb_materias.ListIndex = -1 Or cmb_periodo.ListIndex = -1 Then Exit SubSQL1 = "selectM2.N_lista,M2.codigo,M2.estu,M2.promedio1,M2.promedio2,M2.promedio3,M2.conducta1,M2.conducta2,M2.conducta3,promedio_con=round((M2.conducta1+M2.conducta2+M2.conducta3) /3,0),total=M2.promedio1+M2.promedio2+M2.promedio3,observacion=dbo.val_obs2(M2.promedio1+M2.promedio2+M2.promedio3,M2.periodo) from (SELECTM.N_lista as N_lista,estu=(select nombres from estudiante wherecodigo=M.estudiante),conducta1=isnull((select conducta from notas whereperiodo=M.periodo and matricula=M.codigo and trimestre=1 and materia=" &ExtraeIDCombo(cmb_materias) & "),0),conducta2=isnull((select conducta fromnotas where periodo=M.periodo and matricula=M.codigo and trimestre=2 andmateria=" & ExtraeIDCombo(cmb_materias) & "),0),conducta3=isnull((selectconducta from notas where periodo=M.periodo and matricula=M.codigo andtrimestre=3 and materia=" & ExtraeIDCombo(cmb_materias) & "),0) "SQL1 = SQL1 & ",promedio1=isnull((select promedio2 from notas whereperiodo=M.periodo and matricula=M.codigo and trimestre=1 and materia=" &ExtraeIDCombo(cmb_materias) & "),0) ,promedio2=isnull((select promedio2from notas where periodo=M.periodo and matricula=M.codigo and trimestre=2and materia=" & ExtraeIDCombo(cmb_materias) &"),0),promedio3=isnull((select promedio2 from notas where periodo=M.periodoand matricula=M.codigo and trimestre=3 and materia=" &ExtraeIDCombo(cmb_materias) & "),0),M.codigo as Codigo,M.periodo asperiodo,M.grado as grado,M.paralelo as paralelo FROM MATRICULA M whereM.estado=S) M2"SQL1 = SQL1 & " where M2.periodo=" & ExtraeIDCombo(cmb_periodo) & "and M2.grado=" & ExtraeIDCombo(cmb_grado) & " and M2.paralelo=" &ExtraeIDCombo(cmb_paralelo) & " order by estu"Set tabla_rep = base.Execute(SQL1)Do Until tabla_rep.EOF = True SQL2 = "update matricula set N_lista=" & numero & " where periodo=" &ExtraeIDCombo(cmb_periodo) & " and codigo=" & tabla_rep.Fields(1).Value &" " 105
  • 145. base.Execute (SQL2) numero = numero + 1 tabla_rep.MoveNextLooptabla_rep.CloseSet tabla_rep = Nothingcoloca_reptabla_rep.Open SQL1, base, adOpenDynamic, adLockOptimisticSet dtr_notas_concentrado.DataSource = tabla_repdtr_notas_concentrado.Sections("S2").Controls("eti_grado").Caption =cmb_grado.TEXTdtr_notas_concentrado.Sections("S2").Controls("eti_paralelo").Caption =cmb_paralelo.TEXTdtr_notas_concentrado.Sections("S2").Controls("eti_profesor").Caption =cmb_profesor.TEXTdtr_notas_concentrado.Sections("S2").Controls("eti_materia").Caption =cmb_materias.TEXTdtr_notas_concentrado.Sections("S2").Controls("eti_trimestre").Caption =cmb_parcial.Textdtr_notas_concentrado.Sections("S4").Controls("eti_periodo").Caption =cmb_periodo.TEXTdtr_notas_concentrado.Sections("S4").Controls("eti_escuela").Caption =NOMBRE_ESCUELASet dtr_notas_concentrado.Sections("S4").Controls("escudo").Picture =LoadPicture(ruta_escudo)Imprimir = Truedtr_notas_concentrado.RefreshEnd SubPrivate Sub cmd_salir_Click()Unload MeEnd SubPrivate Sub Form_Load()On Error Resume NextMe.Top = 0Me.Left = 10coloca_tolti MeImprimir = FalseLLENACOMBO cmb_profesor, "select codigo,nombre from profesor"LLENACOMBO cmb_periodo, "select codigo,nombre from periodo"cmb_periodo.ListIndex = IndexList(cmb_periodo, CLng(Gperiodo))End SubPrivate Sub coloca_rep()On Error Resume NextdockForm dtr_notas_concentrado.hWnd, Picture1, TrueEnd Sub 106
  • 146. Private Sub Form_Unload(Cancel As Integer)Unload dtr_notas_concentradoUnload dtr_notas_concentrado2End Sub1.26 FORMULARIO INFORME DE NOTAS X TRIMESTREDim Imprimir As BooleanPrivate Sub cmb_grado_Click()If cmb_grado.ListIndex = -1 Then Exit SubLLENACOMBO cmb_paralelo, "select codigo,nombre from paralelo wheregrado=" & ExtraeIDCombo(cmb_grado) & " and periodo=" &ExtraeIDCombo(cmb_periodo) & ""LLENACOMBO cmb_materias, "select codigo,nombre from materias whereCODIGO IN(SELECT MATERIA FROM MATERIA_profesor WHEREperiodo=" & ExtraeIDCombo(cmb_periodo) & " and grado=" &ExtraeIDCombo(cmb_grado) & " and profesor=" &ExtraeIDCombo(cmb_profesor) & ")"End SubPrivate Sub cmb_profesor_Click()cmb_paralelo.Clearcmb_grado.Clearcmb_materias.ClearIf cmb_profesor.ListIndex = -1 Then Exit SubLLENACOMBO cmb_grado, "select codigo,nombre from grados WHERECODIGO IN(SELECT grado from MATERIA_PROFESOR WHEREPERIODO=" & ExtraeIDCombo(cmb_periodo) & " AND PROFESOR=" &ExtraeIDCombo(cmb_profesor) & " )"LLENACOMBO cmb_materias, "select codigo,nombre from materias WHERECODIGO IN(SELECT MATERIA from MATERIA_PROFESOR WHEREPERIODO=" & Gperiodo & " AND PROFESOR=" &ExtraeIDCombo(cmb_profesor) & " )"End SubPrivate Sub cmd_imprimir_Click()On Error Resume NextIf Imprimir = False Then Exit Subdtr_notas_x_trimestre.PrintReportEnd SubPrivate Sub cmd_procesar_Click()Dim tabla_rep As New ADODB.RecordsetDim SQL1 As String 107
  • 147. Dim SQL2 As StringDim numero As Integernumero = 1If cmb_grado.ListIndex = -1 Or cmb_paralelo.ListIndex = -1 Orcmb_materias.ListIndex = -1 Or cmb_parcial.ListIndex = -1 Orcmb_periodo.ListIndex = -1 Then Exit SubSQL1 = "SELECT M.N_lista,estu=(select nombres from estudiante wherecodigo=M.estudiante),N.conducta,N.deber,N.leccion,N.trabajo,N.aporte,N.examen,N.actuacion,promedio=round(((N.deber+N.leccion+N.trabajo+N.aporte+N.examen+N.actuacion)/6),0),observacion=dbo.val_obs(round((N.deber+N.leccion+N.trabajo+N.aporte+N.examen+N.actuacion)/6,0),M.periodo) FROM MATRICULAM join notas N on M.codigo=N.matricula and M.periodo=N.periodo whereM.estado=S and M.periodo=" & ExtraeIDCombo(cmb_periodo) & " andM.grado=" & ExtraeIDCombo(cmb_grado) & " and M.paralelo=" &ExtraeIDCombo(cmb_paralelo) & " and N.materia=" &ExtraeIDCombo(cmb_materias) & " and N.trimestre=" &ExtraeIDCombo(cmb_parcial) & " order by estu"Set tabla_rep = base.Execute(SQL1)Do Until tabla_rep.EOF = True SQL2 = "update matricula set N_lista=" & numero & " where periodo=" &Gperiodo & " and codigo=" & tabla_rep.Fields(1).Value & " " base.Execute (SQL2) numero = numero + 1 tabla_rep.MoveNextLooptabla_rep.CloseSet tabla_rep = Nothingcoloca_reptabla_rep.Open SQL1, base, adOpenDynamic, adLockOptimisticSet dtr_notas_x_trimestre.DataSource = tabla_repdtr_notas_x_trimestre.Sections("S2").Controls("eti_grado").Caption =cmb_grado.TEXTdtr_notas_x_trimestre.Sections("S2").Controls("eti_paralelo").Caption =cmb_paralelo.TEXTdtr_notas_x_trimestre.Sections("S2").Controls("eti_profesor").Caption =cmb_profesor.TEXTdtr_notas_x_trimestre.Sections("S2").Controls("eti_materia").Caption =cmb_materias.TEXTdtr_notas_x_trimestre.Sections("S2").Controls("eti_trimestre").Caption =cmb_parcial.TEXTdtr_notas_x_trimestre.Sections("S4").Controls("eti_periodo").Caption =cmb_periodo.TEXTdtr_notas_x_trimestre.Sections("S4").Controls("eti_escuela").Caption =NOMBRE_ESCUELASet dtr_notas_x_trimestre.Sections("S4").Controls("escudo").Picture =LoadPicture(ruta_escudo)Imprimir = Truedtr_notas_x_trimestre.Refresh 108
  • 148. End SubPrivate Sub cmd_salir_Click()Unload MeEnd SubPrivate Sub Form_Load()On Error Resume NextMe.Top = 0Me.Left = 10coloca_tolti MeImprimir = FalseLLENACOMBO cmb_profesor, "select codigo,nombre from profesor"LLENACOMBO cmb_parcial, "select codigo,nombre from trimestres"LLENACOMBO cmb_periodo, "select codigo,nombre from periodo"cmb_periodo.ListIndex = IndexList(cmb_periodo, CLng(Gperiodo))End SubPrivate Sub coloca_rep()On Error Resume NextdockForm dtr_notas_x_trimestre.hWnd, Picture1, TrueEnd SubPrivate Sub Form_Unload(Cancel As Integer)Unload dtr_notas_x_trimestreUnload dtr_notas_x_trimestre2End Sub1.27 FORMULARIO REGISTRO DE REPRESENTANTESDim strtabla As StringDim camposKP As StringDim nuevo_reg As StringDim reg_actual As StringDim filtro As StringDim accion As StringPublic Sub Set_Accion(valor As String) accion = valorEnd SubPublic Function Get_Accion() As String Get_Accion = accionEnd FunctionPublic Function Get_filtro() As String Get_filtro = filtroEnd FunctionPublic Function Get_nuevo() As String 109
  • 149. Get_nuevo = nuevo_regEnd FunctionPublic Sub Set_Reg_actual(valor As String) reg_actual = valorEnd SubPublic Function Get_tabla() As String Get_tabla = strtablaEnd FunctionPublic Function Get_camposPK() As String Get_camposPK = camposKPEnd FunctionPublic Sub SALIR()Unload MeEnd SubPrivate Sub cmd_anterior_Click()LLenaDatosForm 3End SubPrivate Sub cmd_buscar_Click()On Error GoTo SALIRBusqueda_sql "SELECT codigo,nombre,cedula,direccion FROM representante "Busqueda_where " where codigo+NOMBRE+cedula "Busqueda_orden "2"Busqueda_Ncampos 4Busqueda_campos 0, "Codigo", 5Busqueda_campos 1, "Nombre", 40Busqueda_campos 2, "Cedula", 20Busqueda_campos 3, "Direccion", 60Busqueda_indice 0Load frmbusquedafrmbusqueda.Show vbModalIf Busqueda.retorna <> "" Then LLenaDatosForm 0, Busqueda.retornaEnd IfExit SubSALIR:End SubPrivate Sub cmd_cancelar_Click()CancelarEnd SubPrivate Sub cmd_eliminar_Click()Elimna_regEnd SubPrivate Sub cmd_guardar_Click() 110
  • 150. GuardarEnd SubPrivate Sub cmd_nuevo_Click()NuevoEnd SubPrivate Sub cmd_primero_Click()LLenaDatosForm 1End SubPrivate Sub cmd_salir_Click()SALIREnd SubPrivate Sub cmd_siguiente_Click()LLenaDatosForm 4End SubPrivate Sub cmd_ultimo_Click()LLenaDatosForm 2End SubPrivate Sub Form_Activate()Set FRM = MeEnd SubPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = 13 Then SendKeys vbTabEnd SubPrivate Sub Form_Load()Dim ruta As Stringruta = App.Path & "iconoslisto.gif"img_listo.Picture = LoadPicture(ruta)filtro = ""strtabla = "representante"camposKP = "|codigo|"nuevo_reg = "codigo"LLENACOMBO cmb_sexo, "select codigo,nombre from tsexo"Set FRM = MeLLenaDatosFormEnd SubPrivate Sub txtcedula_Change()If Cedula(txtcedula) = False Then img_listo.Visible = False Mensage "El numero de cedula es " & vbCr & "Incorrecto"Else img_listo.Visible = TrueEnd IfEnd SubPrivate Sub txtcedula_KeyPress(KeyAscii As Integer) 111
  • 151. KeyAscii = SoloCedula(KeyAscii)End SubPrivate Sub txtdireccion_KeyPress(KeyAscii As Integer)KeyAscii = SoloTexto(KeyAscii)End SubPrivate Sub txtnombre_KeyPress(KeyAscii As Integer)KeyAscii = SoloNombre(KeyAscii)End SubPrivate Sub txttelefono_KeyPress(KeyAscii As Integer)KeyAscii = SoloNumero(KeyAscii)End SubPrivate Sub txttrabajo_KeyPress(KeyAscii As Integer)KeyAscii = SoloTexto(KeyAscii)End Sub1.28 FORMULARIO REGISTRO DE USUARIOSDim strtabla As StringDim camposKP As StringDim nuevo_reg As StringDim reg_actual As StringDim filtro As StringDim accion As StringPublic Sub Set_Accion(valor As String) accion = valorEnd SubPublic Function Get_Accion() As String Get_Accion = accionEnd FunctionPublic Function Get_filtro() As String Get_filtro = filtroEnd FunctionPublic Function Get_nuevo() As String Get_nuevo = nuevo_regEnd FunctionPublic Sub Set_Reg_actual(valor As String) reg_actual = valorEnd SubPublic Function Get_tabla() As String Get_tabla = strtablaEnd FunctionPublic Function Get_camposPK() As String Get_camposPK = camposKPEnd FunctionPublic Sub SALIR()Unload Me 112
  • 152. End SubPrivate Sub cmd_anterior_Click()LLenaDatosForm 3End SubPrivate Sub cmd_cancelar_Click()CancelarEnd SubPrivate Sub cmd_eliminar_Click()Elimna_regEnd SubPrivate Sub cmd_guardar_Click()GuardarEnd SubPrivate Sub cmd_nuevo_Click()NuevoEnd SubPrivate Sub cmd_primero_Click()LLenaDatosForm 1End SubPrivate Sub cmd_salir_Click()SALIREnd SubPrivate Sub cmd_siguiente_Click()LLenaDatosForm 4End SubPrivate Sub cmd_ultimo_Click()LLenaDatosForm 2End SubPrivate Sub Command1_Click()CallByName FRM, "Set_Reg_actual", VbMethod, "hola"End SubPrivate Sub Command2_Click()MsgBox reg_actualEnd SubPrivate Sub Form_Activate()Set FRM = MeEnd SubPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = 13 Then SendKeys vbTabEnd Sub 113
  • 153. Private Sub Form_Load()filtro = ""strtabla = "Usuarios"camposKP = "|codigo|"nuevo_reg = "codigo"Set FRM = MeLLenaDatosFormEnd SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)KeyAscii = SoloTexto(KeyAscii)End SubPrivate Sub txtnombre_KeyPress(KeyAscii As Integer)KeyAscii = SoloTexto(KeyAscii)End Sub1.29 FORMULARIO ESTABLECER CONFIGURACIONESPrivate Sub cmd_busca_fondo_Click()On Error Resume Nextcdl2.CancelError = Truecdl2.Filter = "imagenes de mapa de Bit *.bmp|*.bmp|imagenes *.jpg|*.jpg"cdl.FileName = "NOTAS " & cmb_materia.Text & " " &ExtraeIDCombo(cmb_grado) & cmb_paralelo.Text & " " &ExtraeIDCombo(cmb_parcial) & "º TRIMESTRE"cdl2.ShowOpenIf cdl2.FileName = "" Then Exit SubImg_fondo.tag = cdl2.FileNameImg_fondo.Picture = LoadPicture(cdl2.FileName)End SubPrivate Sub cmd_guarda_fondo_Click()Dim CADE1, cade2 As StringIf Img_fondo.tag = "" Then Exit SubCADE1 = Img_fondo.tagcade2 = App.Path & "fondo.bmp"Kill cade2FileCopy CADE1, cade2frm_fondo.cambia_imagenEnd SubPrivate Sub cmd_guarda_img_Click()Dim CADE1, cade2 As StringIf foto.tag = "" Then Exit SubCADE1 = foto.tagcade2 = App.Path & "iconosescudo.jpg"Kill cade2FileCopy CADE1, cade2 114
  • 154. End SubPrivate Sub cmd_guardar_Click()Guarda_config "1", txt_n_max.TEXT, "Valor de la nota maxima"Guarda_config "2", txt_n_min.TEXT, "Valor de la nota minima"Guarda_config "3", txt_sobresaliente.TEXT, "nota minima sobresaliente"Guarda_config "4", txt_muybueno.TEXT, "nota minima muy bueno"Guarda_config "5", txt_bueno.TEXT, "nota minima bueno"Guarda_config "6", txt_regular.TEXT, "nota minima regular"Guarda_config "7", txt_insuficiente.TEXT, "nota maxima insuficiente"NOTA_APRUEBA = txt_aprobado.TEXTGuarda_config "14", txt_aprobado.TEXT, "nota minima para aprobar"NOTA_SUPLE = txt_supletorio.TEXTGuarda_config "15", txt_supletorio.TEXT, "nota minima para supletori"NOTA_REPRUEBA = txt_reprobado.TEXTGuarda_config "16", txt_reprobado.TEXT, "nota maxima para reprobar"Guarda_config "17", CStr(cmb_guard_img_estu.ListIndex), "forma en que seguardan la img de losalumnos"datos de la escuelaNOMBRE_ESCUELA = txt_escuela.TEXTGuarda_config "8", txt_escuela.TEXT, "Nombre de la escuela"Guarda_config "9", txt_direccion.TEXT, "Direccion de la escuela"Guarda_config "10", txt_telefono.TEXT, "Telefono de la escuela"Guarda_config "11", txt_director.TEXT, "Director(a) de la escuela"Guarda_config "12", txt_secretario.TEXT, "Secretario(a) de la escuela"Guarda_config "13", txt_ruc, "ruc de la escuela"End SubPrivate Sub cmd_img_Click()On Error Resume Nextcdl.CancelError = Truecdl.Filter = "imagenes de mapa de Bit *.bmp|*.bmp|imagenes *.jpg|*.jpg"cdl.FileName = "NOTAS " & cmb_materia.Text & " " &ExtraeIDCombo(cmb_grado) & cmb_paralelo.Text & " " &ExtraeIDCombo(cmb_parcial) & "º TRIMESTRE"cdl.ShowOpenIf cdl.FileName = "" Then Exit Subfoto.tag = cdl.FileNamefoto.Picture = LoadPicture(cdl.FileName)End SubPrivate Sub Form_Load()coloca_tolti Metxt_n_max.TEXT = Extrae_config("1")txt_n_min.TEXT = Extrae_config("2")txt_sobresaliente.TEXT = Extrae_config("3")txt_muybueno.TEXT = Extrae_config("4") 115
  • 155. txt_bueno.TEXT = Extrae_config("5")txt_regular = Extrae_config("6")txt_insuficiente.TEXT = Extrae_config("7")txt_aprobado.TEXT = Extrae_config("14")txt_supletorio.TEXT = Extrae_config("15")txt_reprobado.TEXT = Extrae_config("16")datos de la escuelatxt_escuela.TEXT = Extrae_config("8")txt_direccion.TEXT = Extrae_config("9")txt_telefono.TEXT = Extrae_config("10")txt_director.TEXT = Extrae_config("11")txt_secretario.TEXT = Extrae_config("12")txt_ruc = Extrae_config("13")variosIf Extrae_config("17") <> "" Then cmb_guard_img_estu.ListIndex =CInt(Extrae_config("17"))carga imagenescarga_escudocarga_fondoEnd SubPrivate Sub carga_escudo()Dim cade As Stringcade = App.Path & "iconosescudo.jpg"Set foto.Picture = LoadPicture(cade)End SubPrivate Sub carga_fondo()Dim cade As Stringcade = App.Path & "fondo.bmp"Set Img_fondo.Picture = LoadPicture(cade)End SubPrivate Sub txt_aprobado_KeyPress(KeyAscii As Integer)KeyAscii = SoloNumero(KeyAscii)End SubPrivate Sub txt_bueno_KeyPress(KeyAscii As Integer)KeyAscii = SoloNumero(KeyAscii)End SubPrivate Sub txt_direccion_KeyPress(KeyAscii As Integer)KeyAscii = SoloTexto(KeyAscii)End SubPrivate Sub txt_director_KeyPress(KeyAscii As Integer) 116
  • 156. KeyAscii = SoloTexto(KeyAscii)End SubPrivate Sub txt_escuela_KeyPress(KeyAscii As Integer)KeyAscii = SoloTexto(KeyAscii)End SubPrivate Sub txt_insuficiente_KeyPress(KeyAscii As Integer)KeyAscii = SoloNumero(KeyAscii)End SubPrivate Sub txt_muybueno_KeyPress(KeyAscii As Integer)KeyAscii = SoloNumero(KeyAscii)End SubPrivate Sub txt_n_max_KeyPress(KeyAscii As Integer)KeyAscii = SoloNumero(KeyAscii)End SubPrivate Sub txt_n_min_KeyPress(KeyAscii As Integer)KeyAscii = SoloNumero(KeyAscii)End SubPrivate Sub txt_regular_KeyPress(KeyAscii As Integer)KeyAscii = SoloNumero(KeyAscii)End SubPrivate Sub txt_reprobado_KeyPress(KeyAscii As Integer)KeyAscii = SoloNumero(KeyAscii)End SubPrivate Sub txt_ruc_KeyPress(KeyAscii As Integer)KeyAscii = SoloNumero(KeyAscii)End SubPrivate Sub txt_secretario_KeyPress(KeyAscii As Integer)KeyAscii = SoloTexto(KeyAscii)End SubPrivate Sub txt_sobresaliente_KeyPress(KeyAscii As Integer)KeyAscii = SoloNumero(KeyAscii)End SubPrivate Sub txt_supletorio_KeyPress(KeyAscii As Integer)KeyAscii = SoloNumero(KeyAscii)End SubPrivate Sub txt_telefono_KeyPress(KeyAscii As Integer)KeyAscii = SoloNumero(KeyAscii)End Sub1.30 FORMULARIO DE BUSQUEDADim Tag2 As StringPrivate Sub CargaGrid()Dim I As IntegerDim aux As Booleanaux = TrueLimpiagridIf Trim(txtbusqueda.TEXT) <> "" Then 117
  • 157. Set tabla = base.Execute(Busqueda.sql & Busqueda.where & " like %" &Trim(txtbusqueda.TEXT) & "% order by " & Busqueda.orden)Else Set tabla = base.Execute(Busqueda.sql & " order by " & Busqueda.orden)End IfLabel2.Caption = CStr(TABLA.RecordCount)Do Until tabla.EOF = True If aux = False Then GRID.AddItem extraedatos(tabla) If aux = True Then For I = 0 To Busqueda.Ncampos - 1 GRID.TextMatrix(1, I) = CStr(tabla.Fields(I).Value) Next aux = False End If tabla.MoveNextLoopIf Grid.Rows > 2 Then Grid.RemoveItem (fila)tabla.CloseSet tabla = NothingEnd SubPrivate Function extraedatos(t As ADODB.Recordset) As String Dim I As Integer Dim cade As String For I = 0 To Busqueda.Ncampos - 1 cade = cade & t.Fields(I).Value If I < Busqueda.Ncampos - 1 Then cade = cade & Chr(9) Next extraedatos = cadeEnd FunctionPrivate Sub cmd_nuevo_Click()Unload MeBusqueda.retorna = "Abrir"End SubPrivate Sub Command1_Click()Mensage Tag2End SubPrivate Sub Form_Load()On Error GoTo SALIRconfiguramos la grillaConfiguragridCargaGridset TABLA.Open Busqueda.sql, BASESet data.DataSource = TABLAIf Busqueda.boton = True Then 118
  • 158. cmd_nuevo.Enabled = TrueElse cmd_nuevo.Enabled = FalseEnd IfBusqueda.boton = FalseTag2 = Busqueda.tagBusqueda.retorna = ""Exit SubSALIR:ERRORES Err.Number, Err.DescriptionEnd SubPrivate Sub Limpiagrid()On Error GoTo SALIRDim I As IntegerGRID.Rows = 2For I = 0 To Busqueda.Ncampos - 1 GRID.TextMatrix(1, I) = ""NextExit SubSALIR:ERRORES Err.Number, Err.DescriptionEnd SubPrivate Sub Configuragrid()On Error GoTo SALIRDim I, col As Integercol = 0GRID.Cols = 1For I = 0 To Busqueda.Ncampos - 1 GRID.TextMatrix(0, col) = Busqueda.campos(I).nombre GRID.ColWidth(col) = (GRID.Width - 400) * Busqueda.campos(I).tamaño /100 GRID.Cols = GRID.Cols + 1 col = col + 1NextIf GRID.Cols > 1 Then GRID.Cols = GRID.Cols - 1Exit SubSALIR:ERRORES Err.Number, Err.DescriptionEnd SubPrivate Sub Grid_DblClick()On Error GoTo SALIRIf Trim(GRID.TextMatrix(GRID.Row, Busqueda.indice)) = "" Then Exit SubBusqueda.retorna = GRID.TextMatrix(GRID.Row, Busqueda.indice)Unload Me 119
  • 159. Exit SubSALIR:ERRORESEnd SubPrivate Sub GRID_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then Grid_DblClickEnd SubPrivate Sub txtbusqueda_Change()CargaGridEnd SubPrivate Sub txtbusqueda_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then SendKeys vbTab: Exit SubKeyAscii = SoloTexto(KeyAscii)If txtbusqueda.TEXT = "" Then CargaGridEnd SubPublic Sub IsForm()On Error GoTo SALIRDim I As IntegerMe.ActiveControlDo Until I > Forms.Count - 1If Forms(I).tag = Busqueda.tag Then Forms(I).Show: Exit Sub .WindowState =vbNormal: Exit Sub I=I+1LoopExit SubSALIR:ERRORESEnd SubPublic Sub Opcion2(txt As String)Busqueda.Opcion = txtEnd SubPublic Sub Tag3(txt As String)Busqueda.tag = txtEnd SubPublic Function GetRetorna() As String GetRetorna = Busqueda.retornaEnd FunctionFRM.Busqueda.formulario = Me.Name 120
  • 160. 1.31 VARIABLE GLOBALESPublic base As New ADODB.ConnectionPublic tabla As New ADODB.RecordsetPublic tabla2 As New ADODB.RecordsetPublic tabla_cmb As New ADODB.RecordsetPublic tabla_aux As New ADODB.RecordsetPublic Apli As Excel.ApplicationPublic FRM As FormPublic ruta_ini As StringPublic DSN As StringPublic Busqueda As buscaPublic Gperiodo As StringPublic SECCION As StringPublic Cod_usuario As StringPublic NOTA_MAX, NOTA_MIN, NOTA_SOBRESALIENTE,NOTA_MUYBUENO As DoublePublic NOTA_BUENO, NOTA_REGULAR, NOTA_INSUFICIENTE AsDoublePublic NOMBRE_ESCUELA As StringPublic NOMBRE_PERIODO As StringPublic NOTA_APRUEBA As StringPublic NOTA_SUPLE As StringPublic NOTA_REPRUEBA As StringPublic ruta_escudo As Stringvalores de accion N=nuevo;C=cancelar;E=eliminar;O=otros;M=modificarOption ExplicitPublic nFile As LongPublic Chunk() As BytePublic Const mBuffer As Long = 16384&Public Type DatGene empresa As String USUARIO As StringEnd TypePublic Type DATOS_GRID cabecera_col As String ancho_col As Integer campo_col As String campo_col2 As String n_col As Integer editable As Boolean clave As Boolean insertable As Boolean 121
  • 161. revisar As Boolean Obligatorio As BooleanEnd TypePublic Type campo nombre As String tamaño As IntegerEnd TypePublic Type busca sql As String Ncampos As Integer indice As Integer campos(20) As campo retorna As String orden As String where As String formulario As String Opcion As String tag As String FRM As Form boton As BooleanEnd TypePublic Enum eShowWindow HIDE_eSW = 0& SHOWNORMAL_eSW = 1& NORMAL_eSW = 1& SHOWMINIMIZED_eSW = 2& SHOWMAXIMIZED_eSW = 3& MAXIMIZE_eSW = 3& SHOWNOACTIVATE_eSW = 4& SHOW_eSW = 5& MINIMIZE_eSW = 6& SHOWMINNOACTIVE_eSW = 7& SHOWNA_eSW = 8& RESTORE_eSW = 9& SHOWDEFAULT_eSW = 10& MAX_eSW = 10&End EnumPublic Type POINTAPI X As Long Y As LongEnd TypePublic Type RECTAPI Left As Long Top As Long Right As Long 122
  • 162. Bottom As LongEnd TypePublic Type WINDOWPLACEMENT Length As Long Flags As Long ShowCmd As Long ptMinPosition As POINTAPI ptMaxPosition As POINTAPI rcNormalPosition As RECTAPIEnd TypePublic Declare Function GetPrivateProfileString Lib "kernel32" Alias"GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVallpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString AsString, ByVal nSize As Long, ByVal lpFileName As String) As Long Función api que Escribe un valor - dato en un archivo IniPublic Declare Function WritePrivateProfileString Lib "kernel32" Alias"WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVallpKeyName As String, ByVal lpString As String, ByVal lpFileName As String)As Long Para hacer ventanas hijasPublic Declare Function SetParent Lib "user32" (ByVal hWndChild As Long,ByVal hWndNewParent As Long) As LongPublic Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long,ByVal nCmdShow As eShowWindow) As Long Para posicionar una ventana según su hWndPublic Declare Function MoveWindow Lib "user32" (ByVal hWnd As Long,ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeightAs Long, ByVal bRepaint As Long) As Long Para cambiar el tamaño de una ventana y asignar los valores máximos y mínimosdel tamañoPublic Declare Function GetWindowPlacement Lib "user32" (ByVal hWnd AsLong, ByRef lpwndpl As WINDOWPLACEMENT) As Long1.32 FUNCIONES GLOBALESPublic BASE As New ADODB.ConnectionPublic frm As FormSub main()On Error GoTo SALIRruta_ini = App.Path & "config.ini"SECCION = "SISTEMA"DSN = "DSN=" & Leer_Ini(ruta_ini, "DSN", "")Gperiodo = Leer_Ini(ruta_ini, "periodo", "")base.Open DSN "Dsn=ESCUELA"ruta_escudo = App.Path & "iconosescudo.jpg"Load form_Login 123
  • 163. form_Login.ShowExit SubSALIR: ERRORESLoad MDIForm1MDIForm1.ShowEnd SubPublic Sub Cancelar()CallByName FRM, "Set_Accion", VbMethod, "C"LLenaDatosFormEnd SubPublic Sub LLenaDatosForm(Optional Opcion As Integer = 0, Optional busca As String = "")Dim strfiltro, acc, strand, strtabla, campoPK, STRSQL, strbusca, orden, str_reg As StringDim aux As Booleanaux = Falsestrtabla = CallByName(FRM, "get_tabla", VbMethod)acc = CallByName(FRM, "get_accion", VbMethod)strfiltro = CallByName(FRM, "get_filtro", VbMethod)campoPK = CallByName(FRM, "get_nuevo", VbMethod)If strfiltro <> "" Then strfiltro = " where " & strfiltro strand = " and "Else strand = ""End IfIf Opcion = 0 Then opcion para buscar o cargar por primera ves orden = "" If busca = "" Then strbusca = strfiltro Else If strfiltro = "" Then strfiltro = " where " strbusca = strfiltro & strand & campoPK & "=" & busca & "" End IfEnd IfIf Opcion = 1 Then cargar el primer registro orden = " order by cast(" & campoPK & " as integer) asc" strbusca = strfiltroEnd IfIf Opcion = 2 Then cargar el ultimo registro orden = " order by cast(" & campoPK & " as integer) desc" strbusca = strfiltroEnd IfIf Opcion = 3 Then cargar el anterior str_reg = Codigo_Reg_Actual If strfiltro = "" Then 124
  • 164. strbusca = " WHERE " & strand & " cast(" & campoPK & " as integer) < cast(" & str_reg & " as integer)" Else strbusca = strfiltro & strand & " cast(" & campoPK & " as integer) < cast(" & str_reg & " as integer)" End If orden = " order by cast(" & campoPK & " as integer) desc"End IfIf Opcion = 4 Then cargar el siguiente str_reg = Codigo_Reg_Actual If strfiltro = "" Then strbusca = " WHERE " & strand & " cast(" & campoPK & " as integer) > cast(" & str_reg & " as integer)" Else strbusca = strfiltro & strand & " cast(" & campoPK & " as integer) > cast(" & str_reg & " as integer)" End If orden = " order by cast(" & campoPK & " as integer) asc"End IfSTRSQL = "select top 1 * from " & strtabla & strbusca & ordenIf VerificaCambiosContenedor = True And acc <> "C" Then If MsgBox("Se ha realizado cambios, Desea Grabarlos......?", vbYesNo + vbInformation, "SISTEMA") = vbYes Then Guardar End IfEnd IfSet tabla = base.Execute(STRSQL)If tabla.EOF = True Then tabla.Close: Set tabla = Nothing: STRSQL = "Select count(*) as cant from " & strtabla & strfiltro Set tabla = base.Execute(STRSQL) If tabla.Fields(0).Value = 0 Then Limpiar habilitaContenedor False Activa_sin_reg End If tabla.Close: Set tabla = Nothing: Exit SubEnd IfhabilitaContenedor TrueActiva_cancelarWith FRM Dim I As Object For Each I In .Controls If TypeOf I Is ComboBox Or TypeOf I Is ListBox Or TypeOf I Is DTPicker Or TypeOf I Is CheckBox Or TypeOf I Is TextBox Or TypeOf I Is Label Then If I.Container.Name = FRM.Name Then If I.DataMember = "L" Then I.Locked = False 125
  • 165. If TypeOf I Is TextBox Then If I.DataField <> "" Then I.TEXT = tabla.Fields(I.DataField).Value: I.tag = tabla.Fields(I.DataField).Value If TypeOf I Is Label Then If I.DataField <> "" Then I.Caption = tabla.Fields(I.DataField).Value: I.tag = tabla.Fields(I.DataField).Value If TypeOf I Is ComboBox Or TypeOf I Is ListBox Then If I.DataField <> "" Then If CStr(tabla.Fields(I.DataField).Value) <> "" Then I.ListIndex = IndexList(I, CLng(tabla.Fields(I.DataField).Value)): I.tag = ExtraeIDCombo(I) If TypeOf I Is DTPicker Then If I.DataField <> "" Then I.Value = tabla.Fields(I.DataField).Value: I.tag = I.Value If TypeOf I Is CheckBox Then If I.DataField <> "" Then I.Value = tabla.Fields(I.DataField).Value: I.tag = tabla.Fields(I.DataField).Value If I.DataMember = "L" Then I.Locked = True End If End If Next IEnd Withtabla.CloseSet tabla = NothingEnd SubPublic Function Verificar() As StringOn Error Resume NextVerificar = ""Dim cade As Stringcade = ""Dim ctlControl As ObjectFor Each ctlControl In FRM.Controls If TypeOf ctlControl Is TextBox Then If ctlControl.DataField <> "" And Trim(ctlControl.TEXT) = "" And ctlControl.Enabled = True And ctlControl.DataMember = "H" Then cade = cade & vbCr & EXTRAE_MSG(ctlControl.Name) If ctlControl.DataField <> "" And ctlControl.Enabled = True And ctlControl.DataMember = "C" And Cedula(ctlControl) = False Then cade = cade & vbCr & EXTRAE_MSG(ctlControl.Name) If ctlControl.DataField <> "" And ctlControl.Enabled = True And ctlControl.DataMember = "C2" And Cedula(ctlControl) = False And ctlControl.TEXT <> "" Then cade = cade & vbCr & EXTRAE_MSG(ctlControl.Name) ElseIf TypeOf ctlControl Is ComboBox Or TypeOf ctlControl Is ListBox Then If ctlControl.DataField <> "" And ctlControl.ListIndex = -1 And ctlControl.Enabled = True And ctlControl.DataMember = "H" Then cade = cade & vbCr & EXTRAE_MSG(ctlControl.Name) End IfNextIf cade <> "" Then Verificar = "Para continuar los siguientes datos deben ser llenados o corregidos" & cade 126
  • 166. End FunctionPublic Function EXTRAE_MSG(nombre As String) As StringOn Error Resume NextEXTRAE_MSG = ""Dim I As ObjectFor Each I In FRM.Controls If TypeOf I Is Label Then If I.tag = nombre Then EXTRAE_MSG = I.Caption Exit Function End If End IfNextEnd FunctionPublic Function IndexList(ByVal combo As Object, Optional indice As Long = - 1) As Long Dim I As Integer IndexList = -1 For I = 0 To combo.ListCount - 1 If indice = combo.ItemData(I) Then IndexList = I combo.ListIndex = -1 Exit Function End If NextEnd FunctionPublic Function EXISTE_ITEM(ByVal combo As Object, Optional indice As Long = -1) As Boolean Dim I As Integer EXISTE_ITEM = False For I = 0 To combo.ListCount - 1 If indice = combo.ItemData(I) Then EXISTE_ITEM = True combo.ListIndex = -1 Exit Function End If NextEnd FunctionPublic Sub SELECTCOMBO(ByVal combo As ComboBox, ByVal indice As String) Dim I As Integer For I = 0 To combo.ListCount - 1 If indice = combo.ItemData(I) Then combo.ListIndex = I Exit Sub End If 127
  • 167. NextEnd SubPublic Function ExtraeIDCombo(ByVal combo As Object) As String ExtraeIDCombo = "" If combo.ListIndex <> -1 Then ExtraeIDCombo = CStr(combo.ItemData(combo.ListIndex)) End IfEnd FunctionPublic Sub LLENACOMBO(cmb As Object, sql As String)Set tabla_cmb = base.Execute(sql)cmb.ClearDo Until tabla_cmb.EOF = True cmb.AddItem tabla_cmb.Fields(1).Value cmb.ItemData(cmb.NewIndex) = tabla_cmb.Fields(0).Value tabla_cmb.MoveNextLooptabla_cmb.CloseSet tabla_cmb = Nothingcmb.tag = ExtraeIDCombo(cmb)End SubPublic Sub LLENAListCheck(cmb As ListBox, sql As String)Set tabla_cmb = base.Execute(sql)cmb.ClearDo Until tabla_cmb.EOF = True cmb.AddItem tabla_cmb.Fields(1).Value cmb.ItemData(cmb.NewIndex) = tabla_cmb.Fields(0).Value cmb.Selected(cmb.NewIndex) = CBool(tabla_cmb.Fields(2).Value) tabla_cmb.MoveNextLooptabla_cmb.CloseSet tabla_cmb = Nothingcmb.tag = ExtraeIDCombo(cmb)End SubPublic Sub LLenaDatosContenedor(FRM As Object, Area As Object, record As ADODB.Recordset)On Error GoTo PASAWith FRM Dim I As Object For Each I In .Controls If TypeOf I Is TextBox Or TypeOf I Is ComboBox Or TypeOf I Is ListBox Or TypeOf I Is DTPicker Or TypeOf I Is CheckBox Or TypeOf I Is Label Then If I.Container.Name = Area.Name Then If TypeOf I Is TextBox Then If I.DataField <> "" Then I.TEXT = record.Fields(I.DataField).Value: I.tag = record.Fields(I.DataField).Value 128
  • 168. If TypeOf I Is Label Then If I.DataField <> "" Then I.Caption = record.Fields(I.DataField).Value: I.tag = record.Fields(I.DataField).Value If TypeOf I Is ComboBox Or TypeOf I Is ListBox Then If I.DataField <> "" Then I.ListIndex = IndexList(I, record.Fields(I.DataField).Value): I.tag = IndexList(I, record.Fields(I.DataField).Value) If TypeOf I Is DTPicker Then If I.DataField <> "" Then I.Value = record.Fields(I.DataField).Value: I.tag = record.Fields(I.DataField).Value If TypeOf I Is CheckBox Then If I.DataField <> "" Then I.Value = record.Fields(I.DataField).Value: I.tag = record.Fields(I.DataField).Value End If End If End If Next IEnd WithEnd SubPublic Sub ActualizaDatosTag()With FRM Dim I As Object For Each I In .Controls If TypeOf I Is TextBox Or TypeOf I Is ComboBox Or TypeOf I Is ListBox Or TypeOf I Is DTPicker Or TypeOf I Is CheckBox Or TypeOf I Is Label Then If I.Container.Name = FRM.Name Then If TypeOf I Is TextBox Then I.tag = I.TEXT If TypeOf I Is Label Then If I.DataField <> "" Then I.tag = I.Caption If TypeOf I Is ComboBox Or TypeOf I Is ListBox Then I.tag = ExtraeIDCombo(I) If TypeOf I Is DTPicker Then I.tag = Str(I.Value) If TypeOf I Is CheckBox Then I.tag = Str(I.Value) End If End If Next IEnd WithEnd SubPublic Function VerificaCambiosContenedor() As BooleanVerificaCambiosContenedor = FalseWith FRM Dim I As Object For Each I In .Controls If TypeOf I Is TextBox Or TypeOf I Is ComboBox Or TypeOf I Is ListBox Or TypeOf I Is DTPicker Or TypeOf I Is CheckBox Or TypeOf I Is Label Then If I.Container.Name = FRM.Name Then 129
  • 169. If TypeOf I Is TextBox Then If I.tag <> I.TEXT Then VerificaCambiosContenedor = True: Exit Function If TypeOf I Is Label Then If I.DataField <> "" Then If I.tag <> I.Caption Then VerificaCambiosContenedor = True: Exit Function If TypeOf I Is ComboBox Or TypeOf I Is ListBox Then If I.tag <> ExtraeIDCombo(I) Then VerificaCambiosContenedor = True: Exit Function If TypeOf i Is DTPicker Then If i.tag <> i.Value Then VerificaCambiosContenedor = True: Exit Function If TypeOf I Is CheckBox Then If Val(I.tag) <> I.Value Then VerificaCambiosContenedor = True: Exit Function End If End If Next IEnd WithEnd FunctionPublic Sub habilitaContenedor(valor As Boolean)With FRM Dim I As Object For Each I In .Controls If TypeOf I Is TextBox Or TypeOf I Is ComboBox Or TypeOf I Is ListBox Or TypeOf I Is DTPicker Or TypeOf I Is CheckBox Or TypeOf I Is Label Then If I.Container.Name = FRM.Name Then If TypeOf I Is TextBox Then If I.DataMember = "E" Then I.Enabled = valor If TypeOf I Is ComboBox Or TypeOf I Is ListBox Then If I.DataMember = "E" Then I.Enabled = valor If TypeOf I Is DTPicker Then If I.DataMember = "E" Then I.Enabled = valor If TypeOf I Is CheckBox Then If I.DataMember = "E" Then I.Enabled = valor End If End If Next IEnd WithEnd SubPublic Sub Limpiar()Dim c As IntegerOn Error Resume Next Dim I As Object For Each I In FRM.Controls If I.Container.Name = FRM.Name Then If TypeOf I Is TextBox Then If I.DataMember <> "O" Then I.TEXT = "": I.tag = "" 130
  • 170. If TypeOf I Is Label Then If I.DataMember <> "O" Then If I.DataField <> "" Then I.Caption = "": I.tag = "" If TypeOf I Is ComboBox Or TypeOf I Is ListBox Then If I.DataMember <> "O" Then I.TEXT = "": I.ListIndex = -1: I.tag = "" If TypeOf I Is CheckBox Then If I.DataMember <> "O" Then I.Value = 0: I.tag = "" If TypeOf I Is OptionButton Then If I.DataMember <> "O" Then I.Value = False: I.tag = "" If TypeOf I Is DTPicker Then If I.DataMember <> "O" Then I.Value = Date: I.tag = "" If TypeOf I Is MSHFlexGrid Then I.Rows = 2 For c = 0 To I.Cols - 1 I.TextMatrix(1, c) = "" Next End If End If NextEnd SubPublic Function GeneraInsertform() As StringDim strtabla, insert, values As Stringstrtabla = CallByName(FRM, "get_tabla", VbMethod)insert = "Insert Into " & strtabla & "("values = " Values ("With FRM Dim I As Object MaskEdBox For Each I In .Controls If TypeOf I Is TextBox Or TypeOf I Is ComboBox Or TypeOf I Is ListBox Or TypeOf I Is DTPicker Or TypeOf I Is CheckBox Or TypeOf I Is Label Then If I.Container.Name = FRM.Name And I.DataField <> "" Then If TypeOf I Is TextBox Then insert = insert & I.DataField & ",": values = values & "" & I.TEXT & "," If TypeOf I Is Label Then insert = insert & I.DataField & ",": values = values & "" & I.Caption & "," If TypeOf I Is CheckBox Then insert = insert & I.DataField & ",": values = values & "" & I.Value & "," If TypeOf I Is DTPicker Then insert = insert & I.DataField & ",": values = values & "" & I.Value & "," If TypeOf I Is ComboBox Or TypeOf I Is ListBox Then insert = insert & I.DataField & ",": values = values & "" & ExtraeIDCombo(I) & "," End If End If Next IEnd Withinsert = Mid(insert, 1, Len(insert) - 1) & ")"values = Mid(values, 1, Len(values) - 1) & ")" 131
  • 171. GeneraInsertform = insert & valuesEnd FunctionPublic Sub coloca_tolti(formu As Form)With formu Dim I As Object For Each I In .Controls If TypeOf I Is LaVolpeButton Then I.ToolTipText = Primer_mayuscula(I.tag) End If Next IEnd WithEnd SubPublic Function GeneraUpdateform() As StringDim strtabla, update, where, camposPK As Stringstrtabla = CallByName(FRM, "get_tabla", VbMethod)camposPK = CallByName(FRM, "get_camposPK", VbMethod)update = "Update " & strtabla & " set "where = " Where "With FRM Dim I As Object For Each I In .Controls If TypeOf I Is TextBox Or TypeOf I Is ComboBox Or TypeOf I Is ListBox Or TypeOf I Is DTPicker Or TypeOf I Is CheckBox Or TypeOf I Is Label Then If I.Container.Name = FRM.Name And I.DataField <> "" Then If InStr(camposPK, "|" & I.DataField & "|") = 0 Then If TypeOf I Is TextBox Then update = update & I.DataField & "=" & I.TEXT & "," If TypeOf I Is Label Then update = update & I.DataField & "=" & I.Caption & "," If TypeOf I Is CheckBox Then update = update & I.DataField & "=" & I.Value & "," If TypeOf I Is DTPicker Then update = update & I.DataField & "=" & I.Value & "," If TypeOf I Is ComboBox Or TypeOf I Is ListBox Then update = update & I.DataField & "=" & ExtraeIDCombo(I) & "," Else If TypeOf I Is TextBox Then where = where & I.DataField & "=" & I.TEXT & " and " If TypeOf I Is Label Then where = where & I.DataField & "=" & I.Caption & " and " If TypeOf I Is CheckBox Then where = where & I.DataField & "=" & I.Value & " and " If TypeOf I Is DTPicker Then where = where & I.DataField & "=" & I.Value & " and " If TypeOf I Is ComboBox Or TypeOf I Is ListBox Then where = where & I.DataField & "=" & ExtraeIDCombo(I) & " and " 132
  • 172. End If End If End If Next IEnd Withupdate = Mid(update, 1, Len(update) - 1)where = Mid(where, 1, Len(where) - 4)GeneraUpdateform = update & whereEnd FunctionPublic Sub Nuevo()Dim strtabla, campoPK, STRSQL As StringDim nuevo_reg As Integerstrtabla = CallByName(FRM, "get_tabla", VbMethod)campoPK = CallByName(FRM, "get_nuevo", VbMethod)STRSQL = "select isnull(max(cast(" & campoPK & " as integer)),0) + 1 as nuevo from " & strtablaIf VerificaCambiosContenedor = True Then If MsgBox("Se ha realizado cambios, Desea Grabarlos......?", vbYesNo + vbInformation, "SISTEMA") = vbYes Then Guardar End IfEnd IfLimpiarCallByName FRM, "Set_Accion", VbMethod, "N"Set tabla = base.Execute(STRSQL)nuevo_reg = tabla.Fields(0).Valuetabla.CloseSet tabla = NothingWith FRM Dim I As Object For Each I In .Controls If TypeOf I Is TextBox Or TypeOf I Is ComboBox Or TypeOf I Is ListBox Or TypeOf I Is DTPicker Or TypeOf I Is CheckBox Or TypeOf I Is Label Then If I.Container.Name = FRM.Name And I.DataField <> "" Then If campoPK = I.DataField Then If TypeOf I Is TextBox Then I.TEXT = nuevo_reg: I.tag = nuevo_reg If TypeOf I Is Label Then I.Caption = nuevo_reg: I.tag = nuevo_reg End If End If End If Next IEnd WithhabilitaContenedor TrueActiva_nuevo 133
  • 173. End SubPublic Function Busca_Reg() As BooleanDim strtabla, sql, camposPK As Stringstrtabla = CallByName(FRM, "get_tabla", VbMethod)camposPK = CallByName(FRM, "get_camposPK", VbMethod)Busca_Reg = Falsesql = "select count(* ) from " & strtabla & " Where "With FRM Dim I As Object For Each I In .Controls If TypeOf I Is TextBox Or TypeOf I Is ComboBox Or TypeOf I Is ListBox Or TypeOf I Is DTPicker Or TypeOf I Is CheckBox Or TypeOf I Is Label Then If I.Container.Name = FRM.Name And I.DataField <> "" Then If InStr(camposPK, "|" & I.DataField & "|") <> 0 Then If TypeOf I Is TextBox Then sql = sql & I.DataField & "=" & I.TEXT & " and " If TypeOf I Is Label Then If I.DataField <> "" Then sql = sql & I.DataField & "=" & I.Caption & " and " If TypeOf I Is CheckBox Then sql = sql & I.DataField & "=" & I.Value & " and " If TypeOf I Is DTPicker Then sql = sql & I.DataField & "=" & I.Value & " and " End If End If End If Next IEnd Withsql = Mid(sql, 1, Len(sql) - 4)Set tabla = base.Execute(sql)If tabla.Fields(0).Value > 0 Then Busca_Reg = Truetabla.CloseSet tabla = NothingEnd FunctionPublic Sub Guardar()Dim cade, acc As StringDim sql As StringOn Error GoTo SALIRacc = CallByName(FRM, "get_accion", VbMethod)If acc <> "N" Then CallByName FRM, "Set_Accion", VbMethod, "M" If Permiso("M", FRM.Name) = False Then Exit SubEnd Ifcade = VerificarIf cade <> "" Then MsgBox cade, vbInformation, "SISTEMA" Exit SubEnd If 134
  • 174. If Busca_Reg = True Then sql = GeneraUpdateform Else sql = GeneraInsertform End If base.Execute (sql) Mensage "Registro Guardado o Modificado" ActualizaDatosTag Activa_cancelar Exit SubSALIR: ERRORESEnd SubPublic Sub Mensage(texto As String) Load Form_msg Form_msg.eti_msg.Caption = texto Form_msg.Show vbModalEnd SubPublic Function Codigo_Reg_Actual() As StringDim strtabla, campoPK As StringcampoPK = CallByName(FRM, "get_nuevo", VbMethod)Codigo_Reg_Actual = ""With FRM Dim I As Object For Each I In .Controls If TypeOf I Is TextBox Or TypeOf I Is ComboBox Or TypeOf I Is ListBox Or TypeOf I Is DTPicker Or TypeOf I Is CheckBox Or TypeOf I Is Label Then If I.Container.Name = FRM.Name And I.DataField <> "" Then If TypeOf I Is Label Then If campoPK = I.DataField Then Codigo_Reg_Actual = I.Caption: Exit Function If TypeOf I Is TextBox Then If campoPK = I.DataField Then Codigo_Reg_Actual = I.TEXT: Exit Function End If End If Next IEnd WithEnd FunctionPublic Sub Elimna_reg()On Error GoTo SALIDADim strtabla, campoPK, DELSQL, strand As StringIf Permiso("E", FRM.Name) = False Then Exit SubIf MsgBox("Esta seguro de Eliminar el Registro ..........?", vbYesNo + vbInformation, "SISTEMA") <> vbYes Then Exit Sub 135
  • 175. strand = ""CallByName FRM, "Set_Accion", VbMethod, "E"strtabla = CallByName(FRM, "get_tabla", VbMethod)camposPK = CallByName(FRM, "Get_camposPK", VbMethod)DELSQL = "DELETE FROM " & strtabla & " where "With FRM Dim I As Object For Each I In .Controls If TypeOf I Is TextBox Or TypeOf I Is ComboBox Or TypeOf I Is ListBox Or TypeOf I Is DTPicker Or TypeOf I Is CheckBox Or TypeOf I Is Label Then If I.Container.Name = FRM.Name And I.DataField <> "" Then If InStr(camposPK, "|" & I.DataField & "|") <> 0 Then If TypeOf I Is TextBox Then DELSQL = DELSQL & strand & I.DataField & " =" & I.TEXT & "" If TypeOf I Is Label Then DELSQL = DELSQL & strand & I.DataField & " =" & I.Caption & "" If TypeOf I Is CheckBox Then DELSQL = DELSQL & strand & I.DataField & " =" & I.Value & "" If TypeOf I Is DTPicker Then DELSQL = DELSQL & strand & I.DataField & " =" & I.Value & "" If TypeOf I Is ComboBox Or TypeOf I Is ListBox Then DELSQL = DELSQL & strand & I.DataField & " =" & ExtraeIDCombo(I) & "" If strand = "" Then strand = " and " End If End If End If Next IEnd WithLLenaDatosForm 3base.Execute (DELSQL)Mensage "Registro Borrado"LLenaDatosForm 4ActualizaDatosTagExit SubSALIDA: ERRORESEnd SubPublic Sub abrir_form(formu As Form, Optional nombre As String = "")Dim t_per As New ADODB.RecordsetDim SQL_per As StringDim aux_per As Booleanaux_per = FalseSQL_per = "select * from permisos_usuario where estado=-1 and usuario=" & Cod_usuario & " and permiso in(select codigo from permisos where tipo=F and form=" & nombre & ")" 136
  • 176. SQL_per = "select * from permisos where codigo in(select permiso from permisos_usuario where usuario=" & Cod_usuario & " and estado=1) and tipo=F and form=" & formu.Name & ""Set t_per = base.Execute(SQL_per)If t_per.EOF = False Or nombre = "" Then aux_per = TrueEnd Ift_per.CloseSet t_per = NothingIf aux_per = True Then formu.Top = 10 formu.Left = 10 Load formu formu.Show coloca_tolti formuElse MsgBox "No tiene acceso a esta ventana", vbInformation, "SISTEMA"End IfEnd SubPublic Function Permiso(accion As String, Optional nombre As String = "") As BooleanDim t_per As New ADODB.RecordsetDim SQL_per As StringDim aux_per As Booleanaux_per = FalseSQL_per = "select * from permisos_usuario where estado=-1 and usuario=" & Cod_usuario & " and permiso in(select codigo from permisos where tipo=" & accion & " and form=" & nombre & ")"Set t_per = base.Execute(SQL_per)If t_per.EOF = False Or nombre = "" Then aux_per = TrueEnd Ift_per.CloseSet t_per = NothingIf aux_per = False Then MsgBox "No tiene permiso para realizar esta accion", vbInformation, "SISTEMA"End IfPermiso = aux_perEnd FunctionPublic Sub ERRORES()Dim Mensage, acc As StringMensage = ""acc = CallByName(FRM, "get_accion", VbMethod)Select Case Err.Number Case -2147217900: 137
  • 177. If acc = "N" Then Mensage = " NO SE PUEDE GRABAR EL NUEVO REGISTRO " ElseIf acc = "M" Then Mensage = " NO SE PUEDE MODIFICAR EL REGISTRO POR ESTA RELACIONADO CON OTRA INFORMACION " ElseIf acc = "E" Then Mensage = " NO SE PUEDE BORRAR EL REGISTRO POR ESTA RELACIONADO CON OTRA INFORMACION " Else Mensage = Err.Description End If Case Else: Mensage = Err.DescriptionEnd SelectMsgBox Mensage, vbInformation, "SISTEMA"End SubPublic Sub Activa_nuevo()With FRM Dim I As Object For Each I In .Controls Select Case I.Name Case "cmd_nuevo": I.Enabled = False Case "cmd_guardar": I.Enabled = True Case "cmd_cancelar": I.Enabled = True Case "cmd_eliminar": I.Enabled = False Case "cmd_buscar": I.Enabled = False Case "cmd_primero": I.Enabled = False Case "cmd_anterior": I.Enabled = False Case "cmd_siguiente": I.Enabled = False Case "cmd_ultimo": I.Enabled = False Case "cmd_imprimir": I.Enabled = False End Select Next IEnd WithEnd SubPublic Sub Activa_cancelar()With FRM Dim I As Object For Each I In .Controls Select Case I.Name Case "cmd_nuevo": I.Enabled = True Case "cmd_guardar": I.Enabled = True Case "cmd_cancelar": I.Enabled = False Case "cmd_eliminar": I.Enabled = True Case "cmd_buscar": I.Enabled = True Case "cmd_primero": I.Enabled = True Case "cmd_anterior": I.Enabled = True Case "cmd_siguiente": I.Enabled = True 138
  • 178. Case "cmd_ultimo": I.Enabled = True Case "cmd_imprimir": I.Enabled = True End Select Next IEnd WithEnd SubPublic Sub Activa_sin_reg()With FRM Dim I As Object For Each I In .Controls Select Case I.Name Case "cmd_nuevo": I.Enabled = True Case "cmd_guardar": I.Enabled = False Case "cmd_cancelar": I.Enabled = False Case "cmd_eliminar": I.Enabled = False Case "cmd_buscar": I.Enabled = False Case "cmd_primero": I.Enabled = False Case "cmd_anterior": I.Enabled = False Case "cmd_siguiente": I.Enabled = False Case "cmd_ultimo": I.Enabled = False Case "cmd_imprimir": I.Enabled = False End Select Next IEnd WithEnd SubPublic Sub Guarda_config(codigo As String, valor As String, OBS As String)Dim SQL1, SQL2, SQL3 As StringSQL1 = "SELECT COUNT(*) AS UNO FROM CONFIG WHERE PERIODO=" & Gperiodo & " AND CODIGO=" & codigo & ""SQL2 = "INSERT INTO CONFIG(CODIGO,PERIODO,VALOR,DESCRIPCION) VALUES(" & codigo & "," & Gperiodo & "," & valor & "," & OBS & ")"SQL3 = "UPDATE CONFIG SET VALOR=" & valor & ",DESCRIPCION=" & OBS & " WHERE PERIODO=" & Gperiodo & " AND CODIGO=" & codigo & ""Set tabla = base.Execute(SQL1)If tabla.Fields(0).Value = 0 Then base.Execute (SQL2)Else base.Execute (SQL3)End Iftabla.CloseSet tabla = NothingEnd SubPublic Function Extrae_config(codigo As String) As StringDim SQL1 As StringExtrae_config = "" 139
  • 179. SQL1 = "SELECT ISNULL(VALOR,) AS UNO FROM CONFIG WHERE PERIODO=" & Gperiodo & " AND CODIGO=" & codigo & ""Set tabla = base.Execute(SQL1)If tabla.EOF = False Then Extrae_config = tabla.Fields(0).ValueEnd Iftabla.CloseSet tabla = NothingEnd FunctionPublic Sub dockForm(ByRef formhWnd As Long, ByRef picDock As PictureBox, Optional ByVal ajustar As Boolean = True) Call SetParent(formhWnd, picDock.hWnd) posDockForm formhWnd, picDock, ajustar Call ShowWindow(formhWnd, NORMAL_eSW)End SubPublic Sub posDockForm(ByRef formhWnd As Long, ByRef picDock As PictureBox, Optional ByVal ajustar As Boolean = True) Dim nWidth As Long, nHeight As Long Dim wndPl As WINDOWPLACEMENT If ajustar Then nWidth = picDock.ScaleWidth Screen.TwipsPerPixelX nHeight = picDock.ScaleHeight Screen.TwipsPerPixelY Else Call GetWindowPlacement(formhWnd, wndPl) With wndPl.rcNormalPosition nWidth = .Right - .Left nHeight = .Bottom - .Top End With End If Call MoveWindow(formhWnd, 0, 0, nWidth, nHeight, True)End SubPublic Sub Busqueda_campos(NUM As Integer, txt As String, tama As Integer)Busqueda.campos(NUM).nombre = txtBusqueda.campos(NUM).tamaño = tamaEnd SubPublic Sub Busqueda_sql(txt As String)Busqueda.sql = txtEnd SubPublic Sub Busqueda_where(txt As String)Busqueda.where = txtEnd SubPublic Sub Busqueda_orden(txt As String)Busqueda.orden = txtEnd SubPublic Sub Busqueda_Ncampos(NUM As Integer)Busqueda.Ncampos = NUMEnd Sub 140
  • 180. Public Sub Busqueda_indice(NUM As Integer)Busqueda.indice = NUMEnd SubPublic Function Cedula(TEXT As TextBox) As Boolean Cedula = False Dim aux, I, suma As Integer suma = 0 If Trim(TEXT) <> "" Then If Len(TEXT) = 10 Then For I = 1 To 9 aux = Val(Mid(TEXT, I, 1)) If I Mod 2 = 1 Then aux = aux * 2 If aux > 9 Then aux = aux - 9 End If End If suma = suma + aux Next I Do Until suma <= 0 suma = suma - 10 Loop If Abs(suma) = Val(Mid(TEXT, 10, 1)) Then Cedula = True End If End If End IfEnd FunctionPublic Function SoloNumero(Letra As Integer) As Integer SoloNumero = Letra Select Case Letra Case Asc("0") To Asc("9") Case vbKeyBack, Asc(".") Case Else: SoloNumero = 0 End SelectEnd FunctionPublic Function SoloCedula(Letra As Integer) As Integer SoloCedula = Letra Select Case Letra Case Asc("0") To Asc("9") Case vbKeyBack Case Else: SoloCedula = 0 End SelectEnd FunctionPublic Function SoloTexto(Letra As Integer) As Integer SoloTexto = Letra Select Case Letra Case Asc("0") To Asc("9") 141
  • 181. Case Asc("a") To Asc("z") Case Asc("A") To Asc("Z") Case Asc("."), Asc(" "), Asc("-"), Asc("º"), Asc("@"), vbKeyBack Case Asc("Ñ"), Asc("ñ") Case Else: SoloTexto = 0 End SelectEnd FunctionPublic Function SoloNombre(Letra As Integer) As Integer SoloNombre = Letra Select Case Letra Case Asc("a") To Asc("z") Case Asc("A") To Asc("Z") Case Asc("_"), Asc("-"), vbKeyBack, Asc("Á"), Asc("á"), Asc("É"), Asc("é"), Asc("Í"), Asc("í"), Asc("ó"), Asc("Ó"), Asc("Ú"), Asc("ú") Case Asc("Ñ"), Asc("ñ") Case Else: SoloNombre = 0 End SelectEnd FunctionPublic Sub LeerBinary(tabla_a As ADODB.Recordset, unPicture As Object, ind As Integer) Dim nChunks As Long Dim nSize As Long Dim Fragment As Long Dim I As Long On Error Resume Next Se usa un fichero temporal para guardar la imagen nFile = FreeFile Open "pictemp" For Binary Access Write As #nFile Calcular los trozos completos y el resto nSize = tabla_a.Fields(ind).ActualSize nChunks = Int(nSize / mBuffer) Fragment = nSize Mod mBuffer Chunk() = tabla_a.Fields(ind).GetChunk(Fragment) Put #nFile, , Chunk() For I = 1 To nChunks Chunk() = tabla_a.Fields(ind).GetChunk(mBuffer) Put #nFile, , Chunk() Next Close #nFile Erase Chunk Ahora se carga esa imagen en el control unPicture.Picture = LoadPicture("pictemp") Ya no necesitamos el fichero, así que borrarlo 142
  • 182. On Error Resume Next If Len(Dir$("pictemp")) Then Kill "pictemp" End If Err = 0End SubPublic Sub GuardarBinary(tabla_a As ADODB.Recordset, unPicture As Object, ind As Integer) Guardar el contenido del Picture en el campo de la base Dim I As Long Dim Fragment As Long Dim nSize As Long Dim nChunks As Long On Error Resume Next Guardar el contenido del picture en un fichero temporal SavePicture unPicture.Picture, "pictemp" Leer el fichero y guardarlo en el campo nFile = FreeFile Open "pictemp" For Binary Access Read As #nFile nSize = LOF(nFile) Longitud de los datos en el archivo If nSize = 0 Then Close nFile Exit Sub End If Calcular el número de trozos y el resto nChunks = nSize mBuffer Fragment = nSize Mod mBuffer ReDim Chunk(Fragment) Get #nFile, , Chunk() tabla_a.Fields(ind).AppendChunk Chunk() ReDim Chunk(mBuffer) For I = 1 To nChunks Get #nFile, , Chunk() tabla_a.Fields(ind).AppendChunk Chunk() Next I Close #nFile Ya no necesitamos el fichero, así que borrarlo On Local Error Resume Next If Len(Dir$("pictemp")) Then Kill "pictemp" End If Err = 0 143
  • 183. End SubPublic Function Primer_mayuscula(nombre As String) As String Dim mayu As String Dim resto As String Dim resul As String Dim envi As String Dim xespac As Integer mayu = "" resto = "" If Len(nombre) > 0 Then mayu = UCase(Mid(nombre, 1, 1)) If Len(nombre) > 1 Then resto = RTrim(LCase(Mid(nombre, 2, Len(nombre) - 1))) End If End If If InStr(resto, " ") <> 0 Then xespac = InStr(resto, " ") envi = Mid(resto, xespac + 1, Len(resto) - (xespac)) resto = Mid(resto, 1, Len(resto) - (Len(resto) - xespac)) resul = mayu & resto & " " & Primer_mayuscula(envi) Else resul = mayu & resto End If Primer_mayuscula = resulEnd Function 144
  • 184. MANUAL DELUSUARIO 1
  • 185. ÍNDICE PÁG.1. MANUAL DEL USUARIO 32. DESCRIPCION DETALLADA DEL SISTEMA 33. FUNCIONAMIENTO DEL SISTEMA 53.1 FORMULARIO DEL ESTUDIANTE 63.2 REGISTRO DEL REPRESENTANTE 63.3 FORMULARIO DE REGISTRO DE MATRICULA 63.4 INFORME DEL ESTUDIANTE MATRICULADOS 73.5 REGISTRO DE NOTAS DE ESTUDIANTE 73.6 INFORMES DE REGISTROS DE ALUMNOS POR NOTAS 83.7 INFORME DE NOTAS POR ALUMNO 83.8 INFORME DE NOTAS POR TRIMESTRE RESUMIDO 93.9 INFORME DE NOTAS POR TRIMESTRE 93.10 INFORME DE NOTAS POR MATERIAS Y TRIMESTRE 103.11 REGISTRO DE ASISTENCIA DE PROFESORES 103.12 INFORME DE ASISTENCIA DE PROFESORES DETALLADO 114. CONFIGURACIONES RE REGISTRO 114.1 CONFIGURACION DE REGISTRO DE PERIODO 114.2 CONFIGURACION DE GRADO 124.3 CONFIGURACION DE REGISTRO DE MATERIA 124.4 CONFIGURACION DE REGISTRO DE PARALELO 124.5 CONFIGURACION DE REGISTRO DE PROFESORES 134.6 CONFIGURACION DE PARCIALES 134.7 CONFIGURACION DEL USUARIO 134.8 ESTABLECER PERIODO ACTIVO 144.9 BLOQUEO DEL SISTEMA 144.10 REGISTRO DE CONFIGURACIONES DE NOTAS 144.11 REGISTRO DE CONFIGURACIONES DE ESCUELA 154.12 REGISTRO DE CONFIGURACIONES DE ESCUDO 154.13 REGISTRO DE CONFIGURACIONES DE FONDO 154.14 REGISTRO DE CONFIGURACIONES VARIOS 164.15 ESTABLECER CONFIGURACION DE MATERIAS A GRADO 164.16 ESTABLECER MATERIAS A PROFESORES 164.17 ESTABLECER ADMINISTRADOR 16 2
  • 186. MANUAL DEL USUARIO DESCRIPCIÓN DETALLADA DEL SISTEMAEn este manual tenemos los pasos a seguir en el sistema para un mejor y adecuadomanejo y de esta manera evitar problemas en el funcionamiento del mismo que acontinuación detallamos.1. Instalación del Programa - Insertar el CD. - Hacer clic en el ícono Mi PC. - Abrir el CD-Rom. - Ejecutar el archivo Setup, una vez escogido este paso el sistema comenzará por sí solo a instalarse, debiendo seguir los pasos y aceptar todos los términos para realizar la instalación con éxito.2. EJECUCIÓN DEL PROGRAMA. - Seleccionar el botón inicio - Seleccionar Todos los Programas - Elegir el menú - Por último clic en Administrado 3
  • 187. 4
  • 188. 3. FUNCIONAMIENTO DEL SISTEMA INGRESO AL SISTEMA Al ejecutar el programa aparecerá la interfaz INGRESO AL SISTEMA en la cual el usuario deberá escribir su nombre y contraseña3.1 FORMULARIO PRINCIPAL PANTALLA INICIAL La pantalla principal se encuentra formada por:  Barra de Titulo  Barra de Menú3.1 FORMULARIO DE ESTUDIANTE 5
  • 189. 3.2 FORMULARIO DE REGISTRO DE REPRESENTANTES3.3 FORMULARIO DE REGISTRO DE MATRICULA3.4 INFORME DE ESTUDIANTES MATRICULADOS 6
  • 190. 3.5 REGISTRO DE NOTAS DE ESTUDIANTES 7
  • 191. 3.6 INFORME DE REGISTRO DE ALUMNOS POR NOTAS RESUMIDO3.7INFORME DE NOTAS POR ALUMNO 8
  • 192. 3.8INFORME DE NOTAS POR TRIMESTRE RESUMIDO3.9INFORME DE NOTAS POR TRIMESTRE 9
  • 193. 3.10 INFORME RESUMIDO DE NOTAS POR MATERIAS Y TRIMESTRES3.11REGISTRO DE ASISTENCIA DE PROFESORES 10
  • 194. 3.12 INFORME DE ASISTENCIAS DE PROFESORES DETALLADO4. CONFIGURACIONES DE REGISTROS4.1 CONFIGURACIÓN DE REGISTRO DE PERÍODOS 11
  • 195. 4.2 CONFIGURACIÓN DE REGISTROS DE GRADOS4.3 CONFIGURACIÓN DE REGISTROS DE MATERIAS4.4 CONFIGURACIÓN DE REGISTRO DE PARALELOS4.5 CONFIGURACIÓN DE REGISTROS DE PROFESORES 12
  • 196. 4.6 CONFIGURACIÓN DE PARCIALES4.7 CONFIGURACIÓN DEL USUSARIO4.8 ESTABLECER PERÍODO ACTIVO 13
  • 197. 4.9 BLOQUEO DE SISTEMA4.10 REGISTRO DE CONFIGURACIONES DE NOTAS:4.11 REGISTRO DE CONFIGURACIONES DE ESCUELA 14
  • 198. 4.12 REGISTRO DE CONFIGURACIONES DE ESUDO4.13 REGISTRO DE CONFIGURACIONES DE FONDO4.14 REGISTRO DE CONFIGURACIONES VARIOS 15
  • 199. 4.15 ESTABLECER CONFIGURACIÓN DE MATERIAS A GRADOS4.16 ESTABLECER MATERIAS A PROFESORES4.17 ESTABLECER ADMINISTRADOR 16