universidad central del ecuador facultad de

Anuncio
UNIVERSIDAD CENTRAL DEL ECUADOR
FACULTAD DE INGENIERÍA, CIENCIAS FÍSICAS Y MATEMÁTICA
CARRERA DE INGENIERÍA INFORMÁTICA
APLICACIÓN WEB PARA EL MONITOREO DE INDICADORES DE
DESARROLLO ECONÓMICO PARA LAS COMUNIDADES UBICADAS EN LOS
CANTONES RIOBAMBA, GUANO Y PELILEO DE LA PROVINCIA DE
CHIMBORAZO
TRABAJO DE GRADUACIÓN PREVIO A LA OBTENCIÓN DEL TÍTULO DE
INGENIERO INFORMÁTICO
AUTOR: GALO SANTIAGO QUISIGUINA CASTILLO
TUTOR: ING. RENÉ ALFONSO CARRILLO FLORES
QUITO – ECUADOR
2015
DEDICATORIA
A Dios porque antes de yo nacer ya pensó en mí y en este logro.
A mi mamá Carmen, que me dio la vida y que con su amor ha sido uno de los
soportes de estos largos años de estudio.
A mi padre Galo, que con su ayuda incondicional me ha demostrado que no hay
mejores amigos que los padres.
A mi hermano de quien aprendo cada día y siempre ha estado dispuesto a
escucharme y animarme.
A mi tía Mariana Sánchez y mis tíos Leonor y Carlos Quisigüiña, por su apoyo en
los momentos difíciles.
A mis tíos Yolanda y Gonzalo Quisigüiña, quienes siempre me motivaron a ser un
profesional cuando estuvieron con vida por lo cual les rindo este pequeño
homenaje.
Galo Santiago Quisiguina Castillo
ii
AGRADECIMIENTO
Agradezco a la gloriosa Universidad Central del Ecuador por haberme brindado
acogida durante estos largos años de estudio, la cual se convirtió en un segundo
hogar.
A los docentes de la Facultad de Ingeniería, Ciencias Físicas y Matemática, por
darme el conocimiento necesario para poder desenvolverme como ser humano y
como profesional.
Al Ing. René Carrillo por su paciencia y guía durante el desarrollo y culminación
del presente trabajo.
Al Ing. Ivan Naula por su tiempo y ayuda para sacar adelante este proyecto.
Al Ing. Aldrín Flores, quien siempre estuvo pendiente de que el trabajo de
graduación terminara exitosamente. Le quedo eternamente agradecido.
iii
AUTORIZACIÓN DE LA AUTORÍA INTELECTUAL
Yo, GALO SANTIAGO QUISIGUINA CASTILLO, en calidad de autor del trabajo
de investigación o tesis realizada sobre APLICACIÓN WEB PARA EL
MONITOREO DE INDICADORES DE DESARROLLO ECONÓMICO PARA LAS
COMUNIDADES UBICADAS EN LOS CANTONES RIOBAMBA, GUANO Y
PELILEO DE LA PROVINCIA DE CHIMBORAZO, por la presente autorizo a la
Universidad Central del Ecuador hacer uso de todos los contenidos que me
pertenecen o de parte de los que contiene esta obra, con fines estrictamente
académicos o de investigación.
Los derechos que como autor me corresponden, con la excepción de la presente
autorización, seguirán vigentes a mi favor, de conformidad con lo establecido en
los artículos 5, 6, 8, 19 y demás pertinentes de la Ley de Propiedad Intelectual y
su Reglamento.
Quito, 27 de Mayo de 2015
Galo Santiago Quisiguina Castillo
C.C. 1714914304
iv
CERTIFICADO DE CULMINACIÓN DEL TUTOR
v
CERTIFICADO DE CULMINACIÓN DE TESIS
vi
SOLICITUD CALIFICACIÓN DEL TRABAJO DE GRADUACIÓN
vii
RESULTADO DEL TRABAJO DE GRADUACIÓN
viii
CONTENIDO
DEDICATORIA .............................................................................................................................................................. II
AGRADECIMIENTO ................................................................................................................................................... III
AUTORIZACIÓN DE LA AUTORÍA INTELECTUAL ...................................................................................... IV
CERTIFICADO DE CULMINACIÓN DEL TUTOR .............................................................................................V
CERTIFICADO DE CULMINACIÓN DE TESIS ................................................................................................ VI
SOLICITUD CALIFICACIÓN DEL TRABAJO DE GRADUACIÓN .......................................................... VII
RESULTADO DEL TRABAJO DE GRADUACIÓN ...................................................................................... VIII
CONTENIDO ................................................................................................................................................................. IX
LISTA DE ILUSTRACIONES .................................................................................................................................. XI
LISTA DE TABLAS ................................................................................................................................................. XIII
RESUMEN .................................................................................................................................................................. XIV
ABSTRACT .................................................................................................................................................................. XV
CERTIFICADO DE TRADUCCIÓN .................................................................................................................... XVI
INTRODUCCIÓN ........................................................................................................................................................... 1
CAPITULO 1 ................................................................................................................................................................... 2
1.1
ANTECEDENTES ........................................................................................................................................... 2
1.2
PRESENTACIÓN DEL PROBLEMA ...................................................................................................... 2
1.3
OBJETIVOS ...................................................................................................................................................... 3
1.4
JUSTIFICACION E IMPORTANCIA ......................................................................................................... 4
1.5
MARCO TEÓRICO ......................................................................................................................................... 4
1.6
METODOLOGÍA.............................................................................................................................................. 5
1.7
ALCANCE ......................................................................................................................................................... 7
1.8
LIMITACIONES ............................................................................................................................................ 11
1.9
PLATAFORMA ............................................................................................................................................. 11
1.10
HERRAMIENTAS ........................................................................................................................................ 12
1.11
MARCO ADMINISTRATIVO .................................................................................................................... 17
CAPITULO 2 ................................................................................................................................................................ 20
2
METODOLOGÍA ............................................................................................................................................... 20
CAPITULO 3 ................................................................................................................................................................ 40
3
DESCRIPCION DEL SISTEMA ................................................................................................................... 40
CAPITULO 4 ................................................................................................................................................................ 50
ix
4
PRUEBAS ........................................................................................................................................................... 50
CAPITULO 5 ................................................................................................................................................................ 58
5.
CONCLUSIONES Y RECOMENDACIONES .......................................................................................... 58
GLOSARIO ................................................................................................................................................................... 59
BIBLIOGRAFÍA........................................................................................................................................................... 61
ANEXOS ........................................................................................................................................................................ 62
DICCIONARIO DE DATOS ..................................................................................................................................... 64
MANUAL TÉCNICO .................................................................................................................................................. 69
CODIGO FUENTE ...................................................................................................................................................... 70
MANUAL DE USUARIO ........................................................................................................................................149
x
LISTA DE ILUSTRACIONES
Ilustración 1 Arquitectura 3 Capas.................................................................................................................. 11
Ilustración 2 Actor.................................................................................................................................................... 24
Ilustración 3 Caso de uso .................................................................................................................................... 24
Ilustración 4 Generalización ............................................................................................................................... 24
Ilustración 5 Extiende ............................................................................................................................................ 24
Ilustración 6 Usa ...................................................................................................................................................... 25
Ilustración 7 Interacción entre los Usuarios del Sistema .................................................................... 25
Ilustración 8 Objeto................................................................................................................................................. 30
Ilustración 9 Línea de vida .................................................................................................................................. 30
Ilustración 10 Actor Diagrama de secuencia ............................................................................................. 30
Ilustración 11 Mensaje .......................................................................................................................................... 31
Ilustración 12 Síncrono ......................................................................................................................................... 31
Ilustración 13 Asíncrono ...................................................................................................................................... 31
Ilustración 14 Recursividad ................................................................................................................................ 32
Ilustración 15 Diagrama de Secuencia Administrador.......................................................................... 32
Ilustración 16 Diagrama Secuencia Coordinador ................................................................................... 33
Ilustración 17 Diagrama de secuencia Promotor .................................................................................... 34
Ilustración 18 Estado ............................................................................................................................................. 35
Ilustración 19 Transición simple....................................................................................................................... 35
Ilustración 20 Diagrama de Estados .............................................................................................................. 36
Ilustración 21 Modelo Vista Controlador ...................................................................................................... 38
Ilustración 22 Ingreso al Sistema .................................................................................................................... 40
Ilustración 23 Administración Perfiles ........................................................................................................... 41
Ilustración 24 Mantenimiento Perfiles ........................................................................................................... 42
Ilustración 25 Mantenimiento Usuarios ........................................................................................................ 42
Ilustración 26 Mantenimiento Frecuencias ................................................................................................. 42
Ilustración 27 Mantenimiento Estado ............................................................................................................ 43
Ilustración 28 Mantenimiento Unidades ....................................................................................................... 43
Ilustración 29 Mantenimiento Cargos............................................................................................................ 43
Ilustración 30 Mantenimiento Pantallas ....................................................................................................... 44
Ilustración 31 Ingreso Indicadores .................................................................................................................. 44
Ilustración 32 Monitoreo Indicadores ............................................................................................................ 45
Ilustración 33 Seguimiento Indicadores ....................................................................................................... 45
Ilustración 34 Seguimiento y Resultados .................................................................................................... 46
Ilustración 35 Cumplimiento Actividad .......................................................................................................... 47
Ilustración 36 Cumplimiento Proyecto .......................................................................................................... 48
Ilustración 37 Cumplimiento PDA ................................................................................................................... 49
Ilustración 38 Diagrama Entidad Relación ................................................................................................. 63
Ilustración 39 Arquitectura de la aplicación................................................................................................ 70
Ilustración 40 Módulo Account.......................................................................................................................... 71
Ilustración 41 Módulo App_Code .................................................................................................................... 74
Ilustración 42 Módulo Images ........................................................................................................................... 78
Ilustración 43 Módulo Reportes ....................................................................................................................... 78
Ilustración 44 Módulo Scripts ............................................................................................................................ 79
xi
Ilustración 45 Módulo Styles .............................................................................................................................. 79
Ilustración 46 Cadena de conexión ............................................................................................................. 136
Ilustración 47 Página de Ingreso al Sistema .......................................................................................... 150
Ilustración 48 Usuario y/o contraseña incorrecta ................................................................................. 150
Ilustración 49 Pantalla Principal .................................................................................................................... 151
Ilustración 50 Menú Sistema .......................................................................................................................... 151
Ilustración 51 Página de Administración de Perfiles .......................................................................... 152
Ilustración 52 Página de Mantenimiento de Perfiles .......................................................................... 152
Ilustración 53 Página de Mantenimiento de Usuarios ....................................................................... 153
Ilustración 54 Página de Mantenimiento de Frecuencias ................................................................ 153
Ilustración 55 Página de Mantenimiento de Estado ........................................................................... 153
Ilustración 56 Página de Mantenimiento de Unidades ...................................................................... 154
Ilustración 57 Página de Mantenimiento de Cargos ........................................................................... 154
Ilustración 58 Página de Mantenimiento de Pantallas....................................................................... 154
Ilustración 59 Página de Ingreso de Indicadores ................................................................................. 155
Ilustración 60 Página de Monitoreo de Indicadores ............................................................................ 155
Ilustración 61 Página de Seguimiento de Indicadores ...................................................................... 156
Ilustración 62 Seguimiento y Resultados ................................................................................................. 157
Ilustración 63 Cumplimiento Actividad ....................................................................................................... 158
Ilustración 64 Cumplimiento Proyecto ....................................................................................................... 159
Ilustración 65 Cumplimiento PDA ................................................................................................................ 160
Ilustración 66 Cerrar Sesión ........................................................................................................................... 160
xii
LISTA DE TABLAS
Tabla 1 Cuadro comparativo Lenguajes de programación ................................................................ 13
Tabla 2 Cuadro Comparativo Motor Base de Datos .............................................................................. 14
Tabla 3 Comparativo Modeladores base de Datos ................................................................................ 15
Tabla 4 Comparativo Servidores Web .......................................................................................................... 16
Tabla 5 Recurso Humano ................................................................................................................................... 17
Tabla 6 Presupuesto.............................................................................................................................................. 18
Tabla 7 Caso de uso Administración de Usuarios.................................................................................. 29
Tabla 8 Resultados de la prueba de resolución de pantalla ............................................................. 51
Tabla 9 Resultados de la prueba de resolución de pantalla ............................................................. 52
Tabla 10 Resultados de la prueba de Compatibilidad de navegadores ...................................... 53
Tabla 11 Resultados de la prueba de Compatibilidad de Sistemas Operativos ..................... 54
Tabla 12 Caso para la prueba de desempeño ......................................................................................... 55
Tabla 13 Resultados Prueba Desempeño en base a Hardware ..................................................... 57
xiii
RESUMEN
APLICACIÓN WEB PARA EL MONITOREO DE INDICADORES DE
DESARROLLO ECONÓMICO PARA LAS COMUNIDADES UBICADAS EN LOS
CANTONES RIOBAMBA, GUANO Y PELILEO DE LA PROVINCIA DE
CHIMBORAZO
La organización no gubernamental VISIÓN MUNDIAL ECUADOR brinda apoyo
económico a los sectores menos favorecidos del Ecuador, principalmente en
áreas rurales.
El almacenamiento de los datos necesarios para el trabajo de la ONG se lo viene
realizando de una forma manual, sin contar con una herramienta informática
adecuada que facilite el manejo de los mismos, lo cual dificulta mantener un
control y seguimiento.
Debido al procedimiento utilizado para mantener los archivos, se dificulta la
condensación y actualización de los datos (información) en la empresa,
entorpeciendo el desarrollo del trabajo de los funcionarios (trabajadores) de la
ONG, y se desperdicia de tiempo en la búsqueda de información.
El presente trabajo de graduación propone implementar en la ONG un sistema
informático que permita controlar los Programas de Desarrollo de Área de una
manera automatizada, garantizando la confiabilidad, consolidación y seguridad de
los datos.
DESCRIPTORES: APLICACIÓN WEB / INDICADORES DE DESARROLLO
ECONÓMICO / ASP.NET / SQL SERVER / INTERNET INFORMATION
SERVICES / CIENCIAS ECONÓMICAS Y SOCIALES
xiv
ABSTRACT
WEB APPLICATION FOR MONITORING OF ECONOMIC DEVELOPMENT
INDICATORS FOR COMMUNITIES LOCATED IN RIOBAMBA, GUANO AND
PELILEO CANTONES OF CHIMBORAZO PROVINCE
The Non-Governmental Organization World Vision ECUADOR provides financial
support to the underprivileged sectors of Ecuador mainly in rural areas.
The storage of data needed for work of NGO has been doing a manual way,
without proper software tool that facilitates the management of them, making it
difficult to maintain control and monitor.
Because the procedure used to keep files, condensation and updating the data
(information) in the company is difficult, hindering the development of the work of
officials (employees) of the NGO, and wasted time searching for information.
This graduate work at the NGO proposes to implement a computer system to
monitor the Area Development Programs in an automated manner, ensuring
reliability, consolidation and data security.
DESCRIPTORS: WEB APPLICATION / INDICATORS OF ECONOMIC
DEVELOPMENT / ASP.NET / SQL SERVER / INTERNET INFORMATION
SERVICES / ECONOMIC AND SOCIAL SCIENCES
xv
CERTIFICADO DE TRADUCCIÓN
xvi
xvii
INTRODUCCIÓN
Como respuesta a una necesidad tecnológica se desarrolló una aplicación web
que facilite el manejo de indicadores de desarrollo económico de la Organización
No Gubernamental Vision Mundial Ecuador.
La aplicación constará de dós modulos principales que abarcan el proceso
manual que se venía realizando en la ONG.
El módulo de Gestión Administrativa contiene el manejo de perfiles de acuerdo al
rol asignado por el Director de Visión Mundial Ecuador, cambios de claves,
ingreso y actualización de datos de los usuarios.
En el módulo de Gestión de Indicadores se tiene la creación de cargos, pantallas,
unidades, frecuencias, estados; ingreso, monitoreo y seguimiento de indicadores.
Además contiene reportes de acuerdo a la necesidad planteada por el usuario.
1
CAPITULO 1
1.1
ANTECEDENTES
Desde la creación de WORLD VISION ECUADOR, el almacenamiento de los
datos necesarios para el trabajo de la misma se lo viene realizando de una forma
manual, sin contar con una herramienta informática adecuada que facilite el
manejo de los mismos, lo cual dificulta mantener un control y seguimiento de los
mismos.
Por el procedimiento utilizado para mantener los archivos, se hace difícil la
condensación y actualización de los datos (información) en la empresa,
entorpeciendo el desarrollo del trabajo de los funcionarios (trabajadores) de la
ONG, y también un desperdicio de tiempo en la búsqueda de información.
El presente trabajo de graduación propone implementar en la ONG un sistema
informático que permita llevar un control de los PDAs de una manera
automatizada, garantizando la confiabilidad, consolidación y seguridad de los
datos manejados en la mencionada ONG.
1.2
PRESENTACIÓN DEL PROBLEMA
1.2.1 Planteamiento del problema
Mantener el registro y seguimiento manual de los Programas de Desarrollo de
Área que gestiona la ONG WORLD VISION ECUADOR, presenta varios
inconvenientes como los mencionados a continuación:

Al momento de registrar un PDA, es necesario el manejo y
mantenimiento de expedientes físicos o en un software no
especializado para este trabajo, lo cual dificulta en muchas ocasiones la
pronta búsqueda de datos específicos del sistema.

Si es necesario actualizar una descripción o cambio en el PDA, en
muchas ocasiones es necesario generar nuevos informes lo que deriva
en el aumento de archivos, dificultando el manejo del PDA.

Susceptibilidad a errores en el cálculo y manejo de los fondos
económicos recibidos o destinados para los PDAs.
2

No existe una adecuada organización en el proceso de registro de las
áreas de estudio a nivel nacional.

No contar con un sistema automatizado dificulta la asignación del
personal para los diferentes procesos a seguir para el avance del PDA.

Al no contar con un adecuado sistema informático, los reportes
necesarios deben realizarlos los miembros del equipo, con el
consiguiente problema del tiempo invertido al igual que la dificultad que
representan los mismos.
1.2.2 Propósito del sistema
De lo antes expuesto, se ha considerado la necesidad de crear e implementar
una herramienta informática para la automatización de los procesos a seguir
para la mejor administración, registro y seguimiento de los PDAs, logrando así
obtener un mejor rendimiento en cuanto al control de los mismos.
1.3
OBJETIVOS
1.3.1 Objetivo General
Implementar una Aplicación Web para el Monitoreo de Programas de
Desarrollo de Área para la ONG World Vision Ecuador, de manera que le
permita llevar un control preciso y en forma automatizada de los
indicadores, reduciendo así la probabilidad de generación de errores al
momento de manipular la información, y al mismo tiempo garantizar la
autenticidad de la misma.
1.3.2 Objetivos Específicos

Automatizar el registro y seguimiento de los PDAs manejados por la ONG.

Consolidar la información de los PDAs de una forma organizada, accesible
y actualizada, permitiendo de esta forma mantener un control estricto

Generación de reportes que incluyan gráficos y tablas para el mejor
entendimiento de los indicadores.
3
1.4
JUSTIFICACION E IMPORTANCIA
Al solicitar la creación de un sistema para el registro y control de los diferentes
Programas de Desarrollo de Área que tiene a su cargo la ONG World Vision
Ecuador, se contribuye a crear estándares para el registro de los indicadores
para los Programas de Desarrollo de Área.
Además, permitirá optimizar el capital entregado en cada una de las
comunidades ya que se podrá medir el beneficio en cuanto al mejoramiento de
la calidad de vida de niños, adolescentes, jóvenes, familias de la comunidad.
Será útil para el manejo óptimo y eficiente de la información de forma
automatizada, que al ser ingresada de manera progresiva y recurrente,
reflejará datos confiables y veraces respaldados por las seguridades
correspondientes.
1.5
MARCO TEÓRICO
El proceso del registro y control de los Programas de Desarrollo de Área
manejados por la ONG posee una gran importancia, ya que en este se toma
en cuenta las actividades (más delicadas) principales y esenciales de la ONG
en las comunidades.
En consecuencia, la creación (ejecución, desarrollo) del Sistema de Monitoreo
de Indicadores de Desarrollo Económico, representa una solución para agilitar
el proceso convirtiéndose en una herramienta útil e indispensable tanto para la
ONG como para la comunidad.
Al desarrollar e implementar la aplicación (sistema, programa), se desea
brindar a la comunidad un producto (software) de calidad, adaptable y con las
características adecuadas para solventar las necesidades de los usuarios.
Además el sistema aportará flexibilidad y automatización a los procesos
requeridos por la ONG y conjuntamente permitirá generar una serie de
4
reportes necesarios para el trabajo (procedimiento) del personal técnico de la
organización, y a la vez útil para la toma de decisiones.
1.6
METODOLOGÍA
La metodología es el conjunto de reglas y pasos estrictos que se siguen para
desarrollar una aplicación informática completa. Hay diversas metodologías,
algunas incluso registradas (hay que pagar por utilizarlas).
La serie de pasos a seguir son (relacionados con el ciclo de vida de la
aplicación):
[1] Análisis
[2] Diseño
[3] Codificación
[4] Ejecución
[5] Prueba
[6] Mantenimiento
[1] Análisis
El análisis consiste en el estudio de los requisitos que ha de cumplir la
aplicación, de acuerdo a la toma de los requerimiento brindad por los
clientes.
[2] Diseño
En esta fase se crean esquemas (diagramas de flujo, diagramas de la BD,
cronograma de actividades, etc.) que simbolizan a la aplicación. En estos
esquemas se pueden simbolizar: la organización de los datos de la
aplicación, el orden de los procesos que tiene que realizar la aplicación, la
estructura física (en cuanto a archivos y carpetas) que utilizará la
aplicación, etc.
5
[3] Codificación
Escritura de la aplicación utilizando un lenguaje de programación (C Sharp
o C#). Si se utiliza un lenguaje orientado a objetos, la herramienta de
diseño debe ser una herramienta que permita utilizar objetos.
[4] Ejecución
Tras la escritura del código, mediante un software especial se traduce a
código interpretable por el ordenador (código máquina). En este proceso
pueden detectarse errores en el código que impiden su transformación. En
ese caso el software encargado de la traducción (normalmente un
compilador o un intérprete) avisa de esos errores para que el programador
los pueda corregir.
[5] Prueba
Se trata de testear la aplicación para verificar que su funcionamiento es el
correcto. Para ello se comprueban todas las entradas posibles,
comprobando que las salidas son las correspondientes.
[6] Mantenimiento
En esta fase se crea la documentación del programa. Gracias a esa
documentación se pueden corregir futuros errores o renovar el programa
para incluir mejoras detectadas, operaciones que también se realizan en
esta fase.
El desarrollo del proyecto a realizarse será en base al modelo en ESPIRAL,
que conlleva las siguientes fases:

La atención se centra en la evaluación y reducción del riesgo del
proyecto, dividiendo el proyecto en segmentos más pequeños y
proporcionar más facilidad de cambio durante el proceso de desarrollo,
6
así como ofrecer la oportunidad de evaluar los riesgos y con un peso de
la consideración de la continuación del proyecto durante todo el ciclo de
vida.

Cada viaje alrededor de la espiral atraviesa cuatro cuadrantes básicos:
1) Determinar objetivos, alternativas, y desencadenantes de la
iteración.
2) Evaluar alternativas; Identificar y resolver los riesgos.
3) Desarrollar y verificar los resultados de la iteración.
4) Plan de la próxima iteración.

Cada ciclo comienza con la identificación de los interesados y sus
condiciones de ganancia y termina con la revisión.
1.7
ALCANCE
Para definir el alcance del proyecto, a continuación se describe los módulos que
tendrá la aplicación web:
Módulo de Registro de la Zona

Zona: El sistema debe permitir al usuario el ingreso del nombre de la zona
en la cual se está trabajando.

Provincia: El sistema debe permitir al usuario el ingreso de la provincia a la
cual pertenece la zona.

Cantón: El sistema debe permitir al usuario el ingreso de los cantones
pertenecientes a la zona.
7

Parroquia: El sistema debe permitir al usuario el ingreso de las parroquias
pertenecientes a la zona.

Etnia: El sistema debe permitir al usuario el ingreso de las etnias que van a
ser beneficiadas.
Módulo de Registro de Indicadores
El sistema debe permitir al usuario ingresar información general que comparten
los indicadores. Dicha información se detalla a continuación:

Categoría

Nombre

Objetivo

Valor Mínimo

Valor Deseable (óptimo): El sistema debe permitir al usuario el ingreso de
un valor aceptable del indicador. Esto no significa que el indicador no
pueda tener valores mayores.

Valor Actual

Frecuencia
Los indicadores que se generarán a través del sistema son los siguientes:
Categoría: Indicadores para Proyectos Agrícolas.
Nombre: Número de productores con aumento de ingresos.
Objetivo: Medir el número de productores que incrementan sus ingresos
en base a la producción agrícola del proyecto.
Frecuencia: Semestral.
Fórmula: ∑
8
Nombre: Incremento de ingresos finales.
Objetivo: Medir el incremento de los ingresos en dólares (USD) de los
beneficiarios al final del proyecto agrícola.
Frecuencia: Semestral.
Fórmula:
(
)
Nombre: Productividad agrícola.
Objetivo: Medir los kilogramos por hectárea (Kg/Ha) que se ha obtenido de
la cosecha de un determinado producto.
Frecuencia: Semestral.
Fórmula:
(
)
Categoría: Indicadores para Proyectos Pecuarios.
Nombre: Número de productores con aumento de ingresos.
Objetivo: Medir el número de productores que incrementan sus ingresos
en base a la producción pecuaria del proyecto.
Frecuencia: Semestral.
Fórmula: ∑
Nombre: Incremento de ingresos finales.
Objetivo: Medir el incremento de los ingresos en dólares (USD) de los
beneficiarios al final del proyecto pecuario.
9
Frecuencia: Semestral
Fórmula:
(
)
Nombre: Productividad pecuaria.
Objetivo: Medir los kilogramos o litros por hectárea (Kg o Lt/Ha) que se
han obtenido del proyecto pecuario.
Frecuencia: Semestral
Fórmula:
(
)
Categoría: Indicadores para Proyectos Industriales (con productos agrícolas, no
agrícolas) o de servicios.
Nombre: Número de beneficiarios con aumento de ingresos.
Objetivo: Medir el número de beneficiarios directos que incrementan sus
ingresos en base a la producción industrial del proyecto.
Frecuencia: Semestral.
Fórmula: ∑
Nombre: Incremento de ingresos finales.
Objetivo: Medir el incremento de los ingresos en dólares (USD) de los
beneficiarios al final del proyecto industrial.
Frecuencia: Semestral
Fórmula:
(
)
10
Módulo de Generación de Reportes

El sistema facilitará la generación de reportes tales como: Porcentaje de
ejecución o avance del Programa de Desarrollo de Área, Reporte gráfico
de Avance financiero vs. Avance físico.
Todos los datos necesarios para lograr lo antes mencionado serán almacenados
en forma permanente en una base de datos de modo que en cualquier momento
se pueda acceder a ellos mediante consultas, para facilitar el trabajo del personal
de la ONG.
1.8
LIMITACIONES
La aplicación solo generará los indicadores especificados dentro del alcance y no
será posible crear nuevos indicadores.
La aplicación será alimentada con la información que los miembros de la
comunidad autorizados ingresen, por lo que los indicadores reflejarán los posibles
errores humanos en la digitación.
1.9
PLATAFORMA
1.9.1 ARQUITECTURA DE LA APLICACIÓN
Ilustración 1 Arquitectura 3 Capas
11
1.9.2 DESCRIPCIÓN DE LA ARQUITECTURA
Capa 1: Cliente de aplicación
•
Navegador Web
Capa 2: Servidor de Aplicaciones
•
Internet Information Services
Capa 3: Servidor de Datos
•
Base de datos SqlServer 2008
1.10 HERRAMIENTAS
1.10.1 Cuadro comparativo de lenguajes de programación
Titulo: Cuadro comparativo de lenguajes de programación
Autor: Galo Santiago Quisigüiña Castillo
Fuente: Internet
12
Asp.Net Java
Existe un
rango amplio y
definido de
tipos de datos
Php
9
8
7
5
9
8
6
10
9
6
9
9
5
6
9
5
9
9
6
6
9
6
48
8
65
9
69
Mínima cantidad de prerrequisitos que
requiere para su instalación
Adaptabilidad con los sistemas operativos
mas usados
Portabilidad del código
Soporta múltiples servidores web
Conectividad con varias bases de datos
Curva de aprendizaje
Velocidad de compilación
Puntaje Total
Tabla 1 Cuadro comparativo Lenguajes de programación
1.10.2 Lenguaje de programación
Del cuadro comparativo anterior se deduce que la mejor opción es PHP.
Debido a políticas y licencias que posee la ONG, el lenguaje de
programación escogido es ASP.NET.
13
1.10.3 Cuadro comparativo de Bases de Datos
Titulo: Cuadro comparativo de bases de datos
Autor: Galo Santiago Quisigüiña Castillo
Fuente: Internet
SQL
Server
Oracle
MySql
ACID(Atomicidad, Consistencia,
Aislamiento, Durabilidad)
9
5
8
Almacenamiento e indexación
9
8
7
Procesamiento y optimización de
consultas
9
8
7
Control
de
recuperación
9
8
8
8
9
8
8
9
9
9
5
7
Transacciones ODBC
9
9
9
Integridad Referencial
9
9
9
9
88
9
79
9
81
recurrencia
y
Herramientas de Gestión y Base
de Datos
Herramientas para el diseño de
Base de Datos
Numero de usuarios ilimitados
Control de recurrencia
múltiples versiones
para
Puntaje Total
Tabla 2 Cuadro Comparativo Motor Base de Datos
1.10.4 Base de Datos
Del cuadro comparativo anterior se deduce que la mejor opción es
ORACLE. Debido a políticas y licencias que posee la ONG, la base de
datos escogida es Microsoft SQL Server 2008.
14
1.10.5 Cuadro comparativo de Modeladores de Base de Datos.
Titulo: Cuadro comparativo de modeladores de bases de datos
Autor: Galo Santiago Quisigüiña Castillo
Fuente: Internet
Erwin
Soporta las bases de datos
más usadas
Power Designer
9
9
8
9
Procesos de reingeniería
de negocios
9
9
Generación de Diccionario
de Datos
Puntaje Total
9
35
9
36
Rápida
curva
aprendizaje
de
Tabla 3 Comparativo Modeladores base de Datos
1.10.6 Modelador de Base de Datos
Del cuadro comparativo anterior se deduce que la mejor opción es POWER
DESIGNER y es el modelador de base de datos escogido.
15
1.10.7 Cuadro comparativo de Servidores Web.
Titulo: Cuadro comparativo de servidores web
Autor: Galo Santiago Quisigüiña Castillo
Fuente: Internet
Internet Information Cheroke
Services
e
Apache
Soporta múltiples lenguajes de
programación
9
5
8
9
9
5
9
Invulnerabilidad
8
6
8
Alta disponibilidad
9
8
9
Módulos permanentes
9
9
9
Conexiones seguras
9
9
9
9
9
9
88
8
7
9
75
8
9
5
75
Facilidad de configuración
Adaptabilidad a los sistemas
operativos más usados
Balance de carga
Velocidad
Soporta SSL
Puntaje Total
9
Tabla 4 Comparativo Servidores Web
1.10.8 Servidor Web
Del cuadro comparativo anterior se deduce que la mejor opción es
APACHE. Debido a políticas y licencias que posee la ONG, el servidor web
escogido es Internet Information Services.
16
1.11 MARCO ADMINISTRATIVO
1.11.1 RECURSO HUMANO
Para el desarrollo del este tema de tesis, se requiere del siguiente grupo de
recursos humanos, con funciones presentadas a continuación:
RECURSO
HUMANO
COMPETENCIAS
Ingeniero
Planificación y gestión de
Informático, (Tutor). proyectos de software.
Desarrollo de aplicaciones
con metodologías de
ágiles.
OBSERVACIÓN
Conocimientos en:
Galo Quisigüiña
Desarrollo de Software con
Herramientas de Open
Egresado de la carrera de
Source.
Ingeniería Informática.
Redes LAN, WAN, MAN.
Protocolos de Internet.
Administración de Base de
Datos
Seguridad Informática.
Tabla 5 Recurso Humano
17
1.11.2 RECURSOS MATERIALES
Los recursos materiales que se van a ser utilizados se detallan a
continuación:
ITEM No.
RUBRO
RECURSOS
1 MATERIALES
Empastados
Papel
VALOR
UNITARIO
CANTIDAD ($)
Tinta
Suministros (Clips,
grapas, etc.)
Impresora
8
6 (resma)
6
(cartucho)
1
SUBTOTAL
20,00
5,00
160,00
30,00
30,00
180,00
90,00
20,00
90,00
SUBTOTAL
RECURSOS
MATERIALES
480,00
RECURSOS
2 ACADEMICOS
Internet
6 (meses)
Copias
100
SUBTOTAL RECURSOS ACADEMICOS
3 OTROS
Hora/Programador 960 (horas)
Alimentación
1 (persona)
Transporte
1 (persona)
Agua
6 (meses)
Luz
6 (meses)
Teléfono fijo
6 (meses)
Teléfono celular
6 (meses)
SUBTOTAL OTROS
TOTAL IMPREVISTOS
(5,50%)
TOTAL DEL
PRESUPUESTO
30,00
0,03
180,00
3,00
183,00
5,00
150,00
50,00
5,00
10,00
12,00
10,00
4800,00
150,00
50,00
30,00
60,00
72,00
60,00
5222,00
323,68
6208,68
Tabla 6 Presupuesto
18
1.11.3 CRONOGRAMA
El análisis, desarrollo e implementación de la APLICACIÓN WEB PARA EL
MONITOREO DE INDICADORES DE DESARROLLO ECONÓMICO PARA
COMUNIDADES DEL ECUADOR, deberá llevarse a cabo en el plazo
máximo de 6 meses el cual se detalla en el siguiente cronograma de
actividades (ver Anexo en formato A3):
19
CAPITULO 2
2
METODOLOGÍA
2.1
METODOLOGÍA RUP
El Proceso Unificado Racional1, Rational Unified Process en inglés, y sus siglas
RUP, es un proceso de desarrollo de software y junto con el Lenguaje Unificado
de Modelado UML, constituye la metodología estándar más utilizada para el
análisis, implementación y documentación de sistemas orientados a objetos.
El RUP no es un sistema con pasos firmemente establecidos, sino que se trata de
un conjunto de metodologías adaptables al contexto y necesidades de cada
organización, donde el software es organizado como una colección de unidades
atómicas llamados objetos, constituidos por datos y funciones, que interactúan
entre sí.

Análisis
El proceso deberá adaptarse a la organización. Para el caso del proyecto se
manejan los estándares establecidos por el departamento de Desarrollo
Económico de la ONG Visión Mundial Ecuador y tomando en cuenta el alcance
del proyecto presentado.
Los requerimientos levantados resultaron del análisis de las necesidades de los
usuarios.

Implementación
El proyecto se desarrollará por etapas, donde interactúan continuamente los
usuarios para mantener la eficiencia y calidad del producto.
La organización proveerá los recursos en sistemas para instalar la plataforma
(servidores y otros) necesarios para el proyecto.

Documentación
Se generará la documentación que permita capacitar a los usuarios y
administradores del sistema. En esta se debe incluir manuales (de usuario,
técnico, instalación), estructura de la base de datos, diccionario de datos, etc.
2.2
Ciclo de vida RUP
El ciclo de vida RUP se divide en 4 fases: Iniciación, Elaboración, Construcción y
Transición.
1
http://es.scribd.com/doc/31440864/Metodologia-RUP
20
En cada fase se realizan una o más iteraciones (con el objeto de ir
perfeccionando los objetivos, mediante la retroalimentación del usuario) y hasta
que no finaliza una fase no se comienza con la siguiente. Por regla general, la
fase en la que se realizan más iteraciones es la Construcción.
2.2.1 Iniciación
Durante la fase de inicio las iteraciones ponen mayor énfasis en actividades de
modelado del negocio y de requisitos.
2.2.1.1
Modelado del negocio
En esta fase el equipo se familiarizara más al funcionamiento de la empresa,
sobre conocer sus procesos.



Entender la estructura y la dinámica de la organización para la cual el
sistema va ser desarrollado.
Entender el problema actual en la organización objetivo e identificar
potenciales mejoras.
Asegurar que clientes, usuarios finales y desarrolladores tengan un
entendimiento común de la organización objetivo.
2.2.1.2
Requisitos
Los requisitos son el contrato que se debe cumplir, de modo que los usuarios
finales tienen que comprender y aceptar los requisitos que especifiquemos.





Establecer y mantener un acuerdo entre clientes y otros actores que
podrían ser afectados sobre lo que el sistema podría hacer.
Proveer a los desarrolladores un mejor entendimiento de los requisitos del
sistema.
Definir el ámbito del sistema.
Proveer una base para estimar costos y tiempo de desarrollo del sistema.
Definir una interfaz de usuarios para el sistema enfocada a las necesidades
y metas del usuario.
2.2.2 Elaboración
En la fase de elaboración, las iteraciones se orientan al desarrollo de la línea base
de la arquitectura, abarcando los flujos de trabajo de requerimientos, modelo de
negocios (refinamiento), análisis, diseño y una parte de la implementación.
2.2.2.1
Análisis y diseño
En esta actividad se especifican los requerimientos y se describe cómo se va a
implementar en el sistema.

Transformar los requisitos al diseño del sistema.
21


Desarrollar una arquitectura para el sistema.
Adaptar el diseño para que sea consistente con el entorno de
implementación.
2.2.3 Construcción
2.2.3.1
Implementación
Se implementan las clases y objetos en ficheros fuente, binarios, ejecutables y
demás. El resultado final es un sistema ejecutable.




Planificar qué subsistemas deben ser implementados y en qué orden
deben ser integrados.
Cada implementador decide el orden de los elementos del subsistema.
Si encuentra errores de diseño los notifica.
Se integra el sistema siguiendo el plan.
2.2.3.2
Pruebas
Este flujo de trabajo es el encargado de evaluar la calidad del producto que
estamos desarrollando, pero no para aceptar o rechazar el producto al final del
proceso de desarrollo, sino que debe ir integrado en todo el ciclo de vida.





Encontrar y documentar defectos en la calidad del software.
Generalmente asesora sobre la calidad del software percibida.
Provee la validación de los supuestos realizados en el diseño y
especificación de requisitos por medio de demostraciones concretas.
Verificar las funciones del producto de software según lo diseñado.
Verificar que los requisitos tengan su apropiada implementación.
2.2.4 Transición
Esta actividad tiene como objetivo producir con éxito distribuciones del producto y
distribuirlo a los usuarios. Las actividades implicadas incluyen:







Probar el producto en su entorno de ejecución final.
Empaquetar el software para su distribución.
Distribuir el software.
Instalar el software.
Proveer asistencia y ayuda a los usuarios.
Formar a los usuarios y al cuerpo de ventas.
Migrar el software existente o convertir bases de datos.
22
2.3
USUARIOS DEL SISTEMA
2.3.1 Administrador del sistema
Este usuario tiene privilegios para ingresar a todas las opciones de los módulos.
Puede modificar, buscar, generar reportes, crear perfiles y asignar roles
dependiendo de la necesidad de la organización.
2.3.2 Coordinador de desarrollo económico
Es el responsable de administrar, dirigir y coordinar todas las actividades técnicas
del área de desarrollo económico de la organización. Este usuario tiene acceso al
módulo de administración de indicadores y generación de reportes.
2.3.3 Promotor de desarrollo económico
Es el responsable de ingresar los indicadores financieros para cada una de las
áreas de desarrollo económico que se le hayan asignado. Este usuario tiene
acceso al módulo de ingreso de indicadores, monitoreo y generación de reportes.
2.4
Requerimientos funcionales
Definimos dos módulos que componen el sistema. El módulo de Administración y
el módulo de Indicadores Económicos.
El módulo de Administración cumplirá con las siguientes especificaciones:


Modificación de los indicadores financieros ingresados.
Manejo de perfiles de usuarios.
El módulo de
especificaciones:




2.5
Indicadores
Económicos
cumplirá
con
las
siguientes
Ingreso de indicadores.
Monitoreo de indicadores.
Seguimiento de Indicadores.
Generación de reportes.
Casos de Uso
Un caso de uso es una descripción de los pasos o las actividades que deberán
realizarse para llevar a cabo algún proceso.
Los diagramas de casos de uso sirven para especificar la comunicación y el
comportamiento de un sistema mediante su interacción con los usuarios y/u otros
sistemas.
23
2.5.1 Simbología
Actor: Es un rol que un usuario juega con respecto al sistema. Un Actor no
necesariamente representa a una persona en particular, sino más bien la labor
que realiza frente al sistema.
Ilustración 2 Actor
Caso de uso: Es una operación/tarea específica que se realiza tras una orden de
algún agente externo, sea desde una petición de un actor o bien desde la
invocación desde otro caso de uso.
Ilustración 3 Caso de uso
Asociación de comunicación: Es el tipo de relación más básica que indica la
invocación desde un actor o caso de uso a otra operación (caso de uso). Dicha
relación se denota con una línea simple.
Generalización: Este tipo de relación está orientado exclusivamente para casos
de uso (y no para actores).
Ilustración 4 Generalización
Extends: Relación de dependencia entre dos casos de uso que denota que un
caso de uso es una especialización de otro.
«extends»
Ilustración 5 Extiende
Uses: Relación de dependencia entre dos casos de uso que denota la inclusión
del comportamiento de un escenario en otro.
24
«uses»
Ilustración 6 Usa
2.5.2 Descripción de casos de uso
Crear Perfiles
Crear Usuarios
Administrador del Sistema
Crear Indicador
Monitorizar
Indicador
Promotor Desarrollo Económico
Coordinador Desarrollo Económico
Dar Seguimiento
Indicador
Consultar
Indicadores
Visualizar Reportes
Administrar
Indicadores
Ilustración 7 Interacción entre los Usuarios del Sistema
Fuente: Departamento de Desarrollo Económico de Visión Mundial
Elaborado por: El Tesista
25
DATOS IDENTIFICATIVOS
SISTEMA:
MONITOREO INDICADORES DE
DESARROLLO ECONÓMICO
NOMBRE CASO DE USO:
Administración de Usuarios
USUARIO RESPONSABLE:
Administrador del Sistema
DESCRIPCION BREVE:
Permite administrar los usuarios que
accederán al sistema
SUBCASO DE USO: Crear Perfiles
USUARIO:
SISTEMA:
1.- Registrar nombre del Perfil
2.- Selección de módulos (pantallas)
que se asocian al Perfil
3.- Guardar los datos del Perfil
SUBCASO DE USO: Crear Usuarios
USUARIO:
SISTEMA:
1.- Registrar nombre de Usuario
2.- Registrar contraseña de Usuario
3.- Registrar perfil asociado al
Usuario
4.- Guardar los datos del Usuario
NOMBRE CASO DE USO:
Administración de Indicadores
USUARIO RESPONSABLE:
Coordinador de Desarrollo Económico
DESCRIPCION BREVE:
Permite administrar los indicadores que se
ingresan en el sistema
SUBCASO DE USO: Dar Seguimiento al Indicador
USUARIO:
SISTEMA:
1.- Selección del PDA, Área
Programática, Proyecto y Actividad
2.- Selección del Indicador a dar
26
seguimiento
3.- Mostrar datos del indicador
SUBCASO DE USO: Consultar Indicadores
USUARIO:
SISTEMA:
1.- Selección del PDA, Área
Programática, Proyecto y Actividad
2.- Selección de parámetros de
búsqueda
4.- Mostrar datos del indicador
SUBCASO DE USO: Visualizar Reportes
USUARIO:
SISTEMA:
1.- Selección del PDA, Área
Programática, Proyecto y Actividad
2.- Selección de parámetros de
reporte
4.- Mostrar datos del indicador
SUBCASO DE USO: Administrar Indicadores
USUARIO:
SISTEMA:
1.- Selección del Indicador a
administrar
2.- Registrar los datos del Indicador
4.- Guardar datos modificados del indicador
NOMBRE CASO DE USO:
Creación de Indicadores
USUARIO RESPONSABLE:
Promotor de Desarrollo Económico
DESCRIPCION BREVE:
Permite crear los indicadores en el sistema
SUBCASO DE USO: Crear Indicador
USUARIO:
SISTEMA:
27
1.- Selección del PDA, Área
Programática, Proyecto y Actividad
2.- Registrar los datos del Indicador
3.- Guardar datos del indicador
SUBCASO DE USO: Monitorizar Indicador
USUARIO:
SISTEMA:
1.- Selección del PDA, Área
Programática, Proyecto y Actividad
2.- Selección del Indicador
3.- Registrar datos del indicador
4.- Guardar datos del indicador
SUBCASO DE USO: Dar Seguimiento al Indicador
USUARIO:
SISTEMA:
1.- Selección del PDA, Área
Programática, Proyecto y Actividad
2.- Selección del Indicador a dar
seguimiento
3.- Mostrar datos del indicador
SUBCASO DE USO: Consultar Indicadores
USUARIO:
SISTEMA:
1.- Selección del PDA, Área
Programática, Proyecto y Actividad
2.- Selección de parámetros de
búsqueda
4.- Mostrar datos del indicador
SUBCASO DE USO: Visualizar Reportes
USUARIO:
SISTEMA:
1.- Selección del PDA, Área
Programática, Proyecto y Actividad
2.- Selección de parámetros de
reporte
28
4.- Mostrar datos del indicador
Tabla 7 Caso de uso Administración de Usuarios
2.6
REQUISITOS NO FUNCIONALES
2.6.1 Desempeño
La aplicación ofrece un buen desempeño ante la concurrencia de usuarios,
garantizando tiempos cortos de respuesta ante una petición.
2.6.2 Disponibilidad
La aplicación web estará alojada en el servidor de la ONG de acuerdo a su
infraestructura de red. El número de usuarios concurrentes que la aplicación
permita dependerá del hardware en donde se encuentre instalado.
2.6.3 Escalabilidad
La aplicación será construida de tal manera que podrá incorporar en el futuro
nuevos requerimientos sin afectar el diseño original.
2.6.4 Facilidades de uso
La aplicación será amigable para el usuario. Por ejemplo se mostrarán mensajes
informativos, de advertencia y de error de acuerdo a las acciones ejecutadas.
2.6.5 Instalación
La aplicación contará con un instalador que se podrá ejecutar bajo sistema
operativo Windows.
2.6.6 Mantenimiento y actualización
La aplicación será documentada de tal manera que se pueda dar un fácil
mantenimiento.
2.6.7 Seguridad
Para el acceso al sistema se contará con usuarios y contraseñas las cuales
estarán encriptados en la base de datos.
2.6.8 Validación de la información
La aplicación contará con validaciones de
caracteres.
29
acuerdo al campo y longitud de
2.6.9 Operatividad
La operatividad de la aplicación estará garantizada debido a que se maneja
mediante navegadores de internet.
2.7
DIAGRAMAS DE SECUENCIA
Un diagrama de secuencia es un tipo de diagrama de interacción que muestra
cómo funcionan los procesos de uno con el otro y en qué orden. Se trata de una
construcción de un gráfico secuencial de avisos . Un diagrama de secuencia que
muestra las interacciones de objetos dispuestos en secuencia de
tiempo. Representa los objetos y clases que participan en el escenario y la
secuencia de mensajes intercambiados entre los objetos necesarios para llevar a
cabo la funcionalidad del escenario.
2.7.1 Simbología
Objeto: En forma de rectángulo representa una instancia de un objeto en
particular, y la línea punteada representa las llamadas a métodos del objeto.
Ilustración 8 Objeto
Línea de vida: Representa la llamada a métodos del objeto.
Ilustración 9 Línea de vida
Actor: Representa que o quien inicia una acción dentro del sistema. Es
simplemente es un rol que es llevado a cabo por una persona o cosa.
Ilustración 10 Actor Diagrama de secuencia
Mensaje: El envío de mensajes entre objetos se denota mediante una línea sólida
dirigida, desde el objeto que emite el mensaje hacia el objeto que lo ejecuta.
30
El mensaje puede ser simple, síncrono y asíncrono.

Simple: Transferencia del control de un objeto a otro.
Mensaje1
Ilustración 11 Mensaje

Síncrono: El remitente espera una respuesta a un mensaje sincrónico
antes de continuar. El diagrama muestra la llamada y el retorno. Los
mensajes sincrónicos se utilizan para representar llamadas de función
ordinarias dentro de un programa, así como otros tipos de mensaje que se
comportan de la misma manera.
Mensaje1
Ilustración 12 Síncrono

Asíncrono: Un mensaje que no requiere una respuesta antes de que el
remitente continúe. Un mensaje asincrónico muestra sólo una llamada del
remitente. Se utiliza para representar la comunicación entre subprocesos
diferentes o la creación de un nuevo subproceso.
Mensaje2
Ilustración 13 Asíncrono
Tiempo: Se representa en dirección vertical. El tiempo se inicia en la parte
superior y avanza hacia la parte inferior. Un mensaje que esté más cerca de la
parte superior ocurrirá antes que uno que esté cerca de la parte inferior.
Recursividad: En ocasiones un objeto posee una operación que se invoca a sí
misma. A esto se le conoce como recursividad y es una característica
fundamental de varios lenguajes de programación.
La siguiente figura muestra este tipo de representación:
31
Ilustración 14 Recursividad
2.7.2 Descripción de Diagramas de Secuencia
Administrador
Perfil
Crear Perfil()
Base de Datos
Usuario
Guardar()
Guardar Datos()
Datos Almacenados()
Crear Usuario()
Guardar()
Guardar Datos
Datos Almacenados
Ilustración 15 Diagrama de Secuencia Administrador
32
Coordinador
Indicador
Modificar Indicador()
Base de Datos
Reporte
Guardar()
Guardar Datos()
Datos Almacenados()
Consultar Indicador()
Buscar Datos()
Guardar Datos()
Datos Consultados()
Buscar Datos()
Crear Reporte()
Guardar Datos
Datos Consultados()
Ilustración 16 Diagrama Secuencia Coordinador
33
Ilustración 17 Diagrama de secuencia Promotor
Fuente: Departamento de Desarrollo Económico de Visión Mundial
Elaborado por: El Tesista
34
2.8
DIAGRAMAS DE ESTADO
Un diagrama de estado muestra la secuencia de estados que un objeto o una
interacción pueden atravesar durante su existencia en respuesta a los estímulos
que vayan recibiendo, junto con las correspondientes respuestas y acciones.
La idea básica es definir una máquina que tiene un número determinado de
estados. La máquina recibe eventos del mundo exterior y cada evento provoca
que la máquina cambie de un estado a otro.
2.8.1 Simbología
Estado: Identifica un periodo de tiempo del objeto (no instantáneo) en el cual el
objeto está esperando alguna operación, tiene cierto estado característico o
puede recibir cierto tipo de estímulos.
Ilustración 18 Estado
Eventos: Es una ocurrencia que puede causar la transición de un estado a otro
de un objeto. Esta ocurrencia puede ser una de varias cosas:




Condición que toma el valor de verdadero o falso
Recepción de una señal de otro objeto en el modelo
Recepción de un mensaje
Paso de cierto periodo de tiempo, después de entrar
Transición simple: Es una relación entre dos estados que indica que un objeto
en el primer estado puede entrar al segundo estado y ejecutar ciertas
operaciones, cuando un evento ocurre y si ciertas condiciones son satisfechas.
Ilustración 19 Transición simple
Transición compleja: Relaciona tres o más estados en una transición de
múltiples fuentes y/o múltiples destinos.
Envío de mensajes: Además de mostrar la transición de estados por medio de
eventos, puede representarse el momento en el cual se envían mensajes a otros
objetos.
Acciones: Podemos especificar la solicitud de un servicio a otro objeto como
consecuencia de la transición. Se puede especificar el ejecutar una acción como
35
consecuencia de entrar, salir, estar en un estado, o por la ocurrencia de un
evento.
2.8.2 Descripción de Diagramas de Estado
Inicio
Iniciar creación de Indicador
Iniciado Ingresar datos Indicador
Datos correctos
Datos incorrectos
Cancelado Ingreso de Indicador
Aceptado
Registrado
Aprobado
Rechazado
Monitorizado
En proceso de Seguimiento
Creado Reporte
Aceptado
Final
Ilustración 20 Diagrama de Estados
36
2.9
CONTENIDO DEL PROYECTO
2.9.1 Módulo de Gestión Administrativa
Este módulo estará integrado por los siguientes submódulos: perfiles y usuarios
2.9.1.1


Crear los perfiles necesarios para poder ingresar al sistema y hacer uso del
mismo de una forma apropiada y segura.
Modificar de ser necesario los datos del perfil como: PDAs, pantallas, etc. y
se hará una actualización de los mismos.
2.9.1.2


Perfiles
Usuarios
Crear los usuarios que dependiendo del perfil que se les asigne podrán
hacer uso de todas o parte de las funcionalidades del sistema.
Modificar de ser necesario los datos del usuario como: nombre, usuario,
contraseña, cargo, etc., y se hará una actualización de los mismos.
2.9.2 Módulo de Gestión de Indicadores
Este módulo estará integrado por los siguientes submódulos: ingreso de
indicadores, monitoreo de indicadores, seguimiento y resultados de indicadores.
2.9.2.1


Crear los indicadores necesarios para poder medir la efectividad del PDA
en la zona donde trabaja.
Modificar de ser necesario los datos del indicador como: línea base, meta,
nivel crítico, etc.
2.9.2.2



Monitoreo de Indicadores
Ingresar los valores del indicador según la frecuencia indicada en la
anterior pantalla.
Modificar de ser necesario los valores como: logro actual, archivos de
evidencia.
2.9.2.3

Ingreso de Indicadores
Seguimiento y Resultados
Ingresar el indicador del cual queremos desplegar la tabla de valores
resultado del monitoreo con el respectivo gráfico y comentarios.
Agregar de ser necesario comentarios de los resultados obtenidos.
37
2.9.3 PLATAFORMA
2.9.3.1
Plataforma .Net
El .NET Framework (que se pronuncia punto net) es una plataforma desarrollada
por Microsoft que se ejecuta principalmente en Microsoft Windows. Incluye una
gran biblioteca y proporciona interoperabilidad entre lenguajes (cada lenguaje
puede utilizar código escrito en otros lenguajes) a través de diversos lenguajes de
programación. Los programas escritos para .NET Framework se ejecutan en
un ambiente de software conocido como el Common Language Runtime (CLR),
una máquina virtual de aplicaciones que proporciona servicios tales como
seguridad, gestión de memoria, y el manejo de excepciones. La biblioteca de
clases y el CLR en conjunto constituyen el. NET Framework.
La Base Class Library de .NET Framework proporciona la interfaz de
usuario , acceso a datos , conectividad de base de datos , criptografía , desarrollo
de aplicaciones web, algoritmos numéricos y las comunicaciones de
red . Programadores producen software mediante la combinación de su
propio código fuente con el .NET Framework y otras bibliotecas. El .NET
Framework está destinado a ser utilizado por la mayoría de nuevas aplicaciones
creadas para la plataforma Windows. Microsoft también produce un entorno de
desarrollo integrado en gran parte para software .NET llamado Visual Studio.
2.9.4 MODELO VISTA CONTROLADOR (MVC)
Ilustración 21 Modelo Vista Controlador
38
2.9.4.1
MODELO
Es la representación de la información con la cual el sistema opera, por lo
tanto gestiona todos los accesos a dicha información, tanto consultas como
actualizaciones, implementando también los privilegios de acceso que se
hayan descrito en las especificaciones de la aplicación (lógica de negocio).
Envía a la Vista aquella parte de la información que en cada momento se le
solicita para que sea mostrada (típicamente a un usuario). Las peticiones de
acceso o manipulación de información llegan al Modelo a través del
Controlador.
2.9.4.2
CONTROLADOR
Responde a eventos (usualmente acciones del usuario) e invoca peticiones al
Modelo cuando se hace alguna solicitud sobre la información (por ejemplo,
editar un documento o un registro en una base de datos). También puede
enviar comandos a su Vista asociada si se solicita un cambio en la forma en
que se presenta de Modelo (por ejemplo, desplazamiento o scroll por un
documento o por los diferentes registros de una base de datos), por tanto se
podría decir que el Controlador hace de intermediario entre la Vista y el
Modelo.
2.9.4.3
VISTA
Presenta el Modelo (información y lógica de negocio) en un formato adecuado
para interactuar (usualmente la interfaz de usuario) por tanto requiere de dicho
Modelo la información que debe representar como salida.
39
CAPITULO 3
Éste capítulo es una descripción de la funcionalidad del sistema como se
mencionó en la sección de Introducción la aplicación consta de tres módulos
principales: Módulo de Registro de la Zona, Módulo de Registro de Indicadores y
Módulo de Generación de Reportes.
Dentro del módulo de Registro de la Zona se describe el ingreso de la
información concerniente a el lugar Físico donde se van a tomar las muestras
(Encuestas, Informes, etc.) para luego crear los respectivos indicadores.
En el módulo de Registro de Indicadores se escoge la zona que se ingresó en el
módulo descrito anteriormente para llenar los datos necesarios para el indicador.
De la información ingresada en el módulo anterior se podrá desplegar reportes
mediante el módulo de Generación de Reportes.
3
DESCRIPCION DEL SISTEMA
3.1
Ingreso a la Aplicación
Ilustración 22 Ingreso al Sistema
A cada usuario se le asignará una clave para acceder al sistema, se ingresa un
usuario y una contraseña para en caso de una autenticación exitosa hacer uso de
las opciones del sistema de acuerdo al perfil asignado y rol asignado.
Para encriptar la contraseña se utiliza una criptografía simétrica donde se usa la
misma clave para cifrar y descifrar mensajes. La ventaja de usar un algoritmo
simétrico es la imposibilidad de reconstruir la cadena original a partir del
resultado, y también la imposibilidad de encontrar dos cadenas de texto que
generen el mismo resultado.
40
3.2
Administración
Este módulo permite gestionar todos los privilegios de los usuarios que
intervienen en la ONG.
Existe una opción para cambiar clave, la cual pide ingresar la contraseña anterior.
En la opción de usuarios que está disponible solo para el administrador del
sistema se puede ingresar los datos de un nuevo empleado y modificar los
mismos.
3.2.1 Perfiles de usuario
Ilustración 23 Administración Perfiles
En perfiles de Usuario, se permite administrar los privilegios de los usuarios,
permitiéndole agregar o quitar las opciones y acciones que tiene ya definido el
perfil que se seleccione. Si es necesario se puede añadir un nuevo perfil de
usuario y asignar privilegios. Ésta opción solo debe estar disponible
para el
Administrador.
3.3
Mantenimiento
Permitir dar mantenimiento a las principales entidades del sistema, es decir
actualizar datos o ingresar datos de una nueva entidad como por ejemplo
unidades.
41
3.3.1 Mantenimiento de Perfiles
Ilustración 24 Mantenimiento Perfiles
Se maneja los perfiles del sistema permitiendo ingresar y actualizar los mismos.
Se incluye la opción Eliminar.
3.3.2 Mantenimiento de Usuarios
Ilustración 25 Mantenimiento Usuarios
Se maneja los usuarios del sistema permitiendo ingresar y actualizar los mismos.
Se incluye la opción Eliminar y se debe llenar el perfil y cargo al que pertenecen.
3.3.3 Mantenimiento de Frecuencias
Ilustración 26 Mantenimiento Frecuencias
Se maneja las frecuencias de los indicadores de desarrollo económico
permitiendo ingresar y actualizar las mismas. Se incluye la opción Eliminar.
42
3.3.4 Mantenimiento de Estado
Ilustración 27 Mantenimiento Estado
Se maneja los estados de los Indicadores del sistema permitiendo ingresar y
actualizar los mismos. Se incluye la opción Eliminar.
3.3.5 Mantenimiento de Unidades
Ilustración 28 Mantenimiento Unidades
Se maneja las unidades de medida de los Indicadores del sistema permitiendo
ingresar y actualizar las mismas. Se incluye la opción Eliminar.
3.3.6 Mantenimiento de Cargos
Ilustración 29 Mantenimiento Cargos
Se maneja los cargos que tienen los usuarios del sistema permitiendo ingresar y
actualizar los mismos. Se incluye la opción Eliminar.
43
3.3.7 Mantenimiento de Pantallas
Ilustración 30 Mantenimiento Pantallas
Se maneja las pantallas que tendrán asignadas los perfiles de usuario del sistema
permitiendo ingresar y actualizar los mismos. Se incluye la opción Eliminar.
3.4
REGISTRO
Se lleva el seguimiento desde la creación del indicador pasando por su registro
hasta su fecha de finalización.
Con esto ayudamos a los usuarios de acuerdo a su correspondiente perfil a
mantener un control sobre los indicadores.
3.4.1 Ingreso de Indicadores
Ilustración 31 Ingreso Indicadores
Se crea el indicador indicando el PDA al cual va a pertenecer, el Nombre del
Proyecto, la Actividad.
Al ingresar los datos anteriores se despliegan el Área Programática y el Código de
la Actividad.
A continuación se puede ingresar la descripción, unidades, línea base, meta final,
nivel crítico, fecha para meta final, frecuencia y evidencias.
44
3.4.2 Monitoreo de Indicadores
Ilustración 32 Monitoreo Indicadores
En esta pantalla se registra la meta que se ha obtenido con respecto al indicador.
El número de veces que se realice este registro se delimitó al momento de
ingresar la frecuencia del indicador (Ingreso de Indicadores).
3.5
REPORTES
Dentro de cada reporte se visualiza la información de acuerdo al PDA, Proyecto,
Actividad e Indicador seleccionado.
Adicionalmente a cada reporte se le adjuntará un gráfico para mejor comprensión
del usuario.
Ilustración 33 Seguimiento Indicadores
45
3.5.1 Seguimiento y Resultados
Este reporte permite visualizar los datos generales del indicador así como gráficos
que describen su comportamiento.
Ilustración 34 Seguimiento y Resultados
46
3.5.2 Cumplimiento Actividad
Indica el porcentaje de cumplimiento de la actividad que se alimenta de los
porcentajes de cumplimiento de cada indicador.
Ilustración 35 Cumplimiento Actividad
47
3.5.3 Cumplimiento del Proyecto
Indica el porcentaje de cumplimiento del proyecto en base a los porcentajes de
cumplimiento de cada actividad.
Ilustración 36 Cumplimiento Proyecto
48
3.5.4 Cumplimiento del PDA
Indica el porcentaje de cumplimiento del PDA en base a los porcentajes de
cumplimiento de cada proyecto.
Ilustración 37 Cumplimiento PDA
49
CAPITULO 4
En este capítulo se describen las pruebas de desempeño y compatibilidad
efectuadas al sistema.
4
PRUEBAS
4.1
Pruebas
La prueba de software es un conjunto de herramientas, técnicas y métodos para
poner a prueba la calidad del producto o servicio y así descubrir los defectos
antes de que llegue al usuario final.
Durante el desarrollo e implementación del sistema se llevó a cabo un proceso
iterativo e incremental y las pruebas realizadas al término del desarrollo del
sistema son:


Pruebas de compatibilidad
Pruebas de desempeño
4.1.1 Pruebas de Compatibilidad
El objetivo principal de las pruebas de compatibilidad es de identificar errores de
funcionalidad o de diseño de un sistema web.
En esta prueba analizaremos compatibilidad de resolución, navegadores y
sistema operativo.
50
Caso de Uso de Prueba
Generar Reporte de Seguimiento y Resultados
Propósito
Comprobar la correcta visualización
Datos de entrada
1.
2.
3.
4.
Procedimiento
PDA
Proyecto
Actividad
Indicador
El usuario ingresa los datos correspondientes al
indicador que desea dar seguimiento
El sistema despliega la información y gráficos
correspondientes.
Resultados esperados
Visualización de la información correspondiente al
indicador
Tabla 8 Resultados de la prueba de resolución de pantalla
Fuente: Firefox
Elaborado por: El Tesista
4.1.1.1
Pruebas de Compatibilidad de resolución de pantalla
Definición de prueba
De acuerdo al caso de uso se visualizará la información e imágenes de las
páginas en diferentes tipos de resoluciones de pantalla.
Para esto usamos como tipo de navegador web Firefox bajo el sistema
operativo Windows 7.
Escenario de prueba
Se determinarán diferentes tamaños de resolución de pantalla:
Escenario 1: Resolución de pantalla 800*600
Escenario 2: Resolución de pantalla 1024*768
Escenario 3: Resolución de pantalla 1280*600
Escenario 4: Resolución de pantalla 1280*720
Escenario 5: Resolución de pantalla 1600*1900
Métricas
51
Para esta prueba tomamos en cuenta la métrica de verificación de imágenes
en las páginas para su análisis.
Calificación
De acuerdo al análisis de esta prueba se ha dotado de ciertos parámetros de
calificación.



Visualización total
Visualización parcial
No hay visualización
Resultados
Medida
Visualización
imágenes
pantalla
Escenario
de Escenario 1
en
Calificación
Observaciones
Visualización
Parcial
La imagen no se
distingue bien en la
orden
Escenario 2
Escenario 3
Escenario 4
Escenario 5
Tabla 9 Resultados de la prueba de resolución de pantalla
Fuente: Firefox
Elaborado por: El Tesista
Análisis de Resultados
Como se puede ver en la Tabla 9 se presenta resultados similares a excepción
del Escenario 1, debido a que la imagen no se visualiza correctamente.
Por tanto, se recomienda que para la utilización del sistema se use monitores
con resolución de pantalla 1024*728 o superiores.
4.1.1.2
Pruebas de Compatibilidad de navegador web
Definición de prueba
Se
hace
desplieguen
revisiones al caso de uso de prueba de forma que se
estas páginas en diferentes navegadores.
Escenarios de prueba
Para la prueba se toma diferentes escenarios que a continuación se detallan:
52



Escenario 1: Navegador Web: Internet Explorer
Escenario 2: Navegador Web: Firefox
Escenario 3: Navegador Web: Chrome
Métricas




Para esta prueba se toma las siguientes métricas:
Tamaño y posición de las imágenes en las páginas
Muestra de mensajes
Funcionamiento de componentes visuales
Calificación



Forma correcta
Forma parcial
Forma incorrecta
Resultados
Escenario
y Escenario 1
de Escenario 2
Escenario 3
de Escenario 1
Escenario 2
Escenario 3
Funcionamiento
Escenario 1
de componentes Escenario 2
visuales
Escenario 3
Calificaciones
Forma correcta
Forma correcta
Forma correcta
Forma correcta
Forma correcta
Forma correcta
Forma correcta
Forma correcta
Forma correcta
Medida
Tamaño
posición
imágenes
Muestra
mensajes
Observaciones
Tabla 10 Resultados de la prueba de Compatibilidad de navegadores
Fuente: Navegadores web
Elaborado por: El Tesista
Análisis de Resultados
Durante la ejecución de los tres escenarios de prueba se encontró una
similitud entre el comportamiento en los distintos navegadores.
Se recomienda el uso de cualquiera de ellos.
4.1.1.3
Pruebas de Compatibilidad de sistemas operativos
Definición de prueba
De acuerdo al caso de uso de prueba se analizará las páginas del sistema y el
funcionamiento en diferentes sistemas operativos.
Escenarios de prueba
53
Se han determinado dos escenarios:
Escenario 1: Sistema Operativo: Linux
Navegador Web: Firefox
Escenario 1: Sistema Operativo: Windows 7
Navegador Web: Firefox
Métricas
Para esta prueba se toman en cuenta las siguientes métricas:



Tamaño y posición de las imágenes en las páginas
Muestra de mensajes
Funcionamiento de componentes visuales
Calificación



Forma correcta
Forma parcial
Forma incorrecta
Resultados
Escenario
Medida
Tamaño
y Escenario 1
posición
de Escenario 2
imágenes en las
páginas
Muestra
de Escenario 1
mensajes
Escenario 2
Calificaciones
Forma correcta
Forma correcta
Funcionamiento
Escenario 1
de componentes Escenario 2
visuales
Forma correcta
Forma correcta
Observaciones
Forma correcta
Forma correcta
Tabla 11 Resultados de la prueba de Compatibilidad de Sistemas Operativos
Fuente: Navegadores web
Elaborado por: El Tesista
Análisis de Resultados
Durante la ejecución de los dos escenarios de prueba se encontró problemas
de funcionamiento con el Escenario 1
Por tanto el sistema puede ser usado solo bajo sistemas operativos Windows.
54
4.1.2 Pruebas de desempeño
El objetivo de este tipo de prueba es analizar y evaluar las características del
software, por ejemplo consumo de memoria o procesador.
La prueba consta de:


Tiempos de respuesta
Hardware
4.1.2.1
Prueba de desempeño en base a número de peticiones
Casos de Uso de Prueba
Generar Reporte de Seguimiento y Resultados
Propósito
Datos de entrada
Procedimiento
Comprobar el correcto funcionamiento
1.
2.
3.
4.
PDA
Proyecto
Actividad
Indicador
El usuario ingresa los datos correspondientes al
indicador que desea dar seguimiento
El sistema despliega la información y gráficos
correspondientes.
Resultados esperados
Visualización de la información correspondiente al
indicador
Tabla 12 Caso para la prueba de desempeño
Fuente: Documentos de casos de uso
Elaborado por: El Tesista
Definición de prueba
Analizar el tiempo de respuesta para la transición durante el paso 1 y 2 del
caso de prueba.
Escenarios de prueba
Se han determinado el siguiente:
Escenario:
Procesador: Intel Core i3 3.40 Ghz
55
Memoria RAM: 4 GB
Conexión LAN: 100 Mbps
Sistema Operativo: Windows 7 Professional
Velocidad de conexión a internet: 1 Mbps
Métricas

Tiempo de respuesta
Calificación



Ideal
Aceptable
Inaceptable
Resultados
El tiempo promedio para acceder a una página es de 65 milisegundos
realizando un total de 30 peticiones al servidor.
Análisis de Resultados
El sistema tiene un tiempo de respuesta en promedio Aceptable.
4.1.2.2
Prueba de desempeño en base a hardware
Definición de prueba
Validar el consumo de recursos para lo cual usaremos dos equipos con
características diferentes.
Escenarios de prueba
Se han determinado dos:
Escenario 1:
Procesador: Intel Core i3 3.40 Ghz
Memoria RAM: 4 GB
Conexión LAN: 100 Mbps
56
Sistema Operativo: Windows 7 Professional
Velocidad de conexión a internet: 1 Mbps
Escenario 2:
Procesador: Intel Core i7 3.6 Ghz
Memoria RAM: 8 GB
Conexión LAN: 100 Mbps
Sistema Operativo: Windows 8.1 Pro Edition
Velocidad de conexión a internet: 1 Mbps
Métricas


Consumo de recursos del sistema, incluye uso de CPU y memoria RAM
Tiempos de respuesta frente a la prueba
Calificación


Uso de CPU
Uso de RAM en MB
Resultados
Medida
Escenario
Uso del CPU
Escenario 1
Escenario 2
Escenario 1
Escenario 2
Uso de RAM
Respuesta
de Observaciones
funcionamiento
21 %
10 %
513 MB
576 MB
Tabla 13 Resultados Prueba Desempeño en base a Hardware
Fuente: Administrador de tareas de Windows
Elaborado por: El Tesista
Análisis de Resultados
A partir de las características del Escenario 1 o superiores el sistema se
desempeña con normalidad.
57
CAPITULO 5
5.
CONCLUSIONES Y RECOMENDACIONES
A la culminación de este proyecto es posible concluir y recomendar lo siguiente:
5.1
5.2
Conclusiones

La Aplicación Web para el Monitoreo de Indicadores de Desarrollo
Económico permite dar un seguimiento a los proyectos que maneja la ONG
Visión Mundial Ecuador haciendo más eficiente la distribución de los
recursos económicos y proporcionando información relevante a las
autoridades para la toma de decisiones.

Se descubrió falencias en los procesos que lleva a cabo Visión Mundial lo
que genera nuevos requerimientos que en el futuro pueden ser corregidos
a la par del desarrollo de nuevos sistemas.

Se considera como algo fundamental el que las comunidades puedan tener
acceso a internet para lograr un mejor aprovechamiento de la Aplicación
desarrollada.
Recomendaciones
Para un mejor entendimiento del proceso de creación de un Indicador de
Desarrollo Económico se recomienda investigar temas relacionados a
Economía. De esta manera se logrará una comprensión más rápida de la
Aplicación.
La Aplicación Web se ha adaptado a lo requerido por Visión Mundial Ecuador,
permitiendo así un mejor manejo de la información por lo que se recomienda
tener un mantenimiento continuo del sistema. Se recomienda tener un
respaldo de la base con una frecuencia mensual
Se recomienda que a futuro La Aplicación Web para el Monitoreo de
Indicadores de Desarrollo Económico se integre con la actual denominada
PMA (Planificación y Monitoreo Anual) para lograr una completa integración de
la información.
58
GLOSARIO
A
ADMINISTRADOR DEL SISTEMA, tiene la responsabilidad de ejecutar,
mantener, operar y asegurar el correcto funcionamiento de un sistema informático
y/o una red de cómputo.
ANALISIS, distinción y separación de las partes de un todo hasta llegar a conocer
sus principios o elementos.
API, interfaz de programación de aplicaciones.
AUTOMATIZACIÓN, sustitución de tareas tradicionalmente manuales por las
mismas realizadas de manera automática por máquinas.
C
CASOS DE USO, descripción de los pasos o actividades que deberán realizarse
para llevar a cabo algún proceso.
D
DIAGRAMA DE ESTADO, muestran el conjunto de estados por los cuales pasa
un objeto durante su vida en una aplicación en respuesta a eventos.
DIAGRAMA DE SECUENCIA, es un tipo de diagrama usado para modelar
interacción entre objetos en un sistema según UML.
E
ESTANDARES,
acuerdos
(normas)
documentados
que
contienen
especificaciones técnicas u otros criterios precisos para ser usados
consistentemente como reglas, guías o definiciones de características.
F
FÓRMULA, conjunto de términos que representa una cantidad o que se utilizan
para obtener un valor o resolver un problema.
H
HTML, Lenguaje de Marcas de HiperTexto que se utiliza para el desarrollo de
páginas web.
I
INFRAESTRUCTURA TECNOLÓGICA, conjunto de todos los elementos
tecnológicos que integran un proyecto o sustentan una operación.
59
M
MÓDULO, agrupa un conjunto de subprogramas y estructuras de datos.
MVC, Patrón de diseño para aplicaciones web (Modelo, Vista, Controlador).
P
PERFIL DE USUARIO, acceso a la información restringida o no dependiendo de
pertenencia a determinado grupo.
PLATAFORMA, determinado software y/o hardware con el cual una aplicación es
compatible y permite su ejecución.
PLUG-IN, aplicación que se relaciona con otra para aportarle una función nueva y
generalmente muy específica.
R
RUP, Proceso de desarrollo de Software (Rational Unified Process).
U
UML, Lenguaje de Modelado de Sistemas de Software (Unified Modeling
Language)
60
BIBLIOGRAFÍA
1. DOUGL, L, Programación Concurrente y Patrones de Diseño, Segunda
Edición, Madrid, 2001
2. MÉNDEZ, C, Metodología, Diseño y Desarrollo
Investigación, Tercera edición, Bogotá, 2001.
del Proceso
de
3. WIKIPEDIA, “Proceso Unificado de Rational”,
http://es.wikipedia.org/wiki/Rational_Unified_Process
4. WIKIPEDIA, “Modelo–vista–controlador”,
http://es.wikipedia.org/wiki/Modelo%E2%80%93vista%E2%80%93controlad
or
5. SCRIBD, “Diferencia Entre Los Lenguajes de Programación”,
http://es.scribd.com/doc/11522383/Diferencia-Entre-Los-Lenguajes-deProgramacion
6. VARGAS, Yuli, DÍAZ, Mabel, “Diagrama de Secuencia”,
http://exposicinds.blogspot.com
7. GOOGLE DOCS, “Cuadro Comparativo”,
https://docs.google.com/document/preview?hgd=1&id=1ACvEZgyTjKj_6tqP
wbi-gfG_BZr8H7A_fatsUWYpBeA
61
ANEXOS
62
IND_Estados
IND_Frecuencias
63
SeguimientoIndicadorID
IndicadorID
UsuarioID
SeguimientoIndicador
FechaSeguimientoIndicador
SeguidorIndicador
int
<pk>
int
<fk1>
int
<fk2>
varchar(100)
datetime
varchar(100)
IND_SeguimientosIndicadores
Ilustración 38 Diagrama Entidad Relación
IND_Cargos
CargoID
int
<pk>
NombreCargo varchar(200)
IND_Perfiles
IND_PerfilPantalla
PantallaID
NombrePantalla
ModuloPantalla
OrdenPantalla
int
<pk>
varchar(100)
varchar(100)
int
IND_Pantallas
FK_IND_PERF_REFERENCE_IND_PANT
PerfilID
int
<pk>
PerfilPantallaID int <pk>
NombrePerfil varchar(200) FK_IND_PERF_REFERENCE_IND_PERF
PantallaID
int <fk1>
PerfilID
int <fk2>
FK_USUARIOS_CARGOS
IND_PerfilPDAS
PerfilPDAID int <pk>
PerfilID
int <fk>
FK_USUARIOS_PERFILES
PdaID
int
FK_PERFILPDAS_PERFILES
int
<pk>
int
<fk2>
int
<fk1>
varchar(200)
varchar(200)
varchar(200)
datetime
IND_Usuarios
UsuarioID
PerfilID
CargoID
NombreUsuario
Usuario
Clave
FechaUltimaActividad
FK_INDICADORES_USUARIOS
int
<pk>
int
<fk>
int
datetime
IND_MonitoreoIndicador
MonitoreoIndicadorID
IndicadorID
FK_IND_MONI_REFERENCE_IND_INDI
MetaMonitoreo
<fk2>
FechaMonitoreo
<fk3>
<pk>
<fk1>
FK_SEGUIMIENTOSINDICADORES_USUARIOS
FrecuenciaID
int
<pk>
FK_SEGUIMIENTOSINDICADORES_INDICADORES
DescripcionFrecuencia varchar(100)
int
int
varchar(100)
int
int
varchar(100)
int
int
int
int
datetime
datetime
int
IND_Indicadores
IndicadorID
FK_INDICADORES_ESTADOS
FrecuenciaID
IND_Evidencias
DescripcionIndicador
EvidenciaID
int
<pk>
MetaFinalIndicador
IndicadorID
int
<fk> FK_EVIDENCIAS_INDICADORES NivelCriticoIndicador
RutaEvidencia
varchar(100)
EvidenciasIndicador
NombreEvidencia varchar(100)
ActividadID
FechaEvidencia
datetime
LineaBase
EstadoID
UsuarioID
FechaMetaFinal
FK_INDICADORES_FRECUENCIASFechaRegistroFinal
MetaRegistroFinal
EstadoID
int
<pk>
NemonicoEstado char(1)
DescripcionEstado varchar(50)
ANEXO A.
DICCIONARIO DE DATOS
LISTA DE TABLAS
NOMBRE
IND_Estados
IND_Evidencias
IND_Indicadores
IND_MonitoreoIndicador
IND_Frecuencias
IND_Usuarios
IND_SeguimientosIndicadores
IND_Cargos
IND_Perfiles
IND_PerfilPDAS
IND_PerfilPantalla
IND_Pantallas
DESCRIPCIÓN
Se almacena los estados de los
indicadores
Se almacena la descripción[on de los
documentos físicos que respaldan el
indicador
Se almacena toda la información
referente al indicador
Relaciona al indicador con su
respectivo monitoreo
Se almacena la frecuencia con la que
serán monitoreados los indicadores
Se almacena toda la información
referente al usuario del sistema
Relaciona al indicador con su
respectivo seguimiento
Se almacena el cargo del usuario
Se almacena los perfiles del sistema
Se almacena el perfil del sistema PMA
Relaciona al perfil con sus respectivas
pantallas
Se almacena la información de las
pantallas del sistema
DESCRIPCIÓN DE TABLAS
Tabla IND_Cargos
CAMPOS
CargoID
NombreCargo
TIPO
int
varchar
LONGITUD NULL
4
200
X
TIPO
int
char
varchar
LONGITUD NULL
4
1
X
50
X
NOT
NULL
X
PRIMARY
KEY
X
FOREIGN
KEY
NOT
NULL
X
PRIMARY
KEY
X
FOREIGN
KEY
Tabla IND_Estados
CAMPOS
EstadoID
NemonicoEstado
DescripcionEstado
64
Tabla IND_Evidencias
CAMPOS
EvidenciaID
IndicadorID
RutaEvidencia
NombreEvidencia
FechaEvidencia
TIPO
LONGITUD NULL
int
4
int
4
X
varchar
100
X
varchar
100
X
datetime
8
X
NOT
NULL
X
PRIMARY
KEY
X
FOREIGN
KEY
X
Tabla IND_Frecuencias
CAMPOS
FrecuenciaID
DescripcionFrecuencia
TIPO
int
varchar
LONGITUD NULL
4
100
X
NOT
NULL
X
PRIMARY
KEY
X
FOREIGN
KEY
NOT
NULL
X
PRIMARY
KEY
X
FOREIGN
KEY
Tabla IND_Indicadores
CAMPOS
IndicadorID
FrecuenciaID
DescripcionIndicador
MetaFinalIndicador
NivelCriticoIndicador
EvidenciasIndicador
ActividadID
LineaBase
EstadoID
UsuarioID
FechaMetaFinal
FechaRegistroFinal
MetaRegistroFinal
UnidadID
TIPO
LONGITUD NULL
int
4
int
4
X
varchar
100
X
int
4
X
int
4
X
varchar
100
X
int
4
X
int
4
X
int
4
X
int
4
X
datetime
8
X
datetime
8
X
int
4
X
int
4
X
X
X
X
Tabla IND_MonitoreoIndicador
CAMPOS
MonitoreoIndicadorID
IndicadorID
MetaMonitoreo
FechaMonitoreo
TIPO
LONGITUD NULL
int
4
int
4
X
int
4
X
datetime
8
X
65
NOT
NULL
X
PRIMARY
KEY
X
FOREIGN
KEY
X
Tabla IND_Pantallas
CAMPOS
PantallaID
NombrePantalla
ModuloPantalla
OrdenPantalla
TIPO
int
varchar
varchar
int
LONGITUD NULL
4
100
X
100
X
4
X
NOT
NULL
X
PRIMARY
KEY
X
FOREIGN
KEY
NOT
NULL
X
PRIMARY
KEY
X
FOREIGN
KEY
NOT
NULL
X
PRIMARY
KEY
X
FOREIGN
KEY
Tabla IND_Perfiles
CAMPOS
PerfilID
NombrePerfil
TIPO
int
varchar
LONGITUD NULL
4
200
X
Tabla IND_PerfilPantalla
CAMPOS
PerfilPantallaID
PantallaID
PerfilID
TIPO
int
int
int
LONGITUD NULL
4
4
X
4
X
X
X
Tabla IND_PerfilPDAS
CAMPOS
PerfilPDAID
PerfilID
PdaID
TIPO
int
int
int
LONGITUD NULL
4
4
X
4
X
NOT
NULL
X
PRIMARY
KEY
X
FOREIGN
KEY
X
X
Tabla IND_SeguimientosIndicadores
CAMPOS
SeguimientoIndicadorID
IndicadorID
UsuarioID
SeguimientoIndicador
FechaSeguimientoIndicador
SeguidorIndicador
TIPO
LONGITUD NULL
int
4
int
4
X
int
4
X
varchar
100
X
datetime
8
X
varchar
100
X
66
NOT
NULL
X
PRIMARY
KEY
X
FOREIGN
KEY
X
X
Tabla IND_Unidades
CAMPOS
UnidadID
NemonicoUnidad
DescripcionUnidad
TIPO
int
char
varchar
LONGITUD NULL
4
3
X
50
X
NOT
NULL
X
PRIMARY
KEY
X
FOREIGN
KEY
NOT
NULL
X
PRIMARY
KEY
X
VERDADERO
VERDADERO
FOREIGN
KEY
Tabla IND_Usuarios
CAMPOS
UsuarioID
PerfilID
CargoID
NombreUsuario
Usuario
Clave
FechaUltimaActividad
TIPO
LONGITUD NULL
int
4
int
4
X
int
4
X
varchar
200
X
varchar
200
X
varchar
200
X
datetime
8
X
67
X
X
MANUAL TÉCNICO
APLICACIÓN WEB PARA EL MONITOREO DE INDICADORES DE
DESARROLLO ECONÓMICO PARA LAS COMUNIDADES UBICADAS EN
LOS CANTONES RIOBAMBA, GUANO Y PELILEO DE LA PROVINCIA DE
CHIMBORAZO
68
MANUAL TÉCNICO
1.1 INTRODUCCIÓN
La aplicación utiliza una lógica de programación desarrollada en niveles o capas.
Para este trabajo se implementó el modelo de 3 capas denominado MVC
(Modelo-Vista-Controlador) que proporciona una clara separación entre las
distintas responsabilidades de la aplicación.



Modelo: Son los datos puros que puestos en el contexto del sistema
proveen de información al usuario o a la aplicación
Vista: Es la representación del modelo en forma gráfica disponible para la
interacción con el usuario.
Controlador: Esta capa se encarga de manejar y responder las solicitudes
del usuario, procesando la información necesaria y modificando el Modelo
en caso de ser necesario.
1.2 Objetivo
Explicar cada uno de los componentes de aplicación que fueron creados para
cumplir con las especificaciones iniciales, además de detallar las clases que
contienen enfocando a la creación de nuevos indicadores.
1.3 Herramientas utilizadas
Sistema Operativo
Windows 7
Lenguaje de programación
Asp.net / C Sharp
Entorno de desarrollo integrado (IDE)
Visual Studio 2010
Servidor de Aplicaciones
Internet Information Services (IIS)
69
Motor de Base de Datos
SQL Server 2008
Diseñador de Reportes
Crystal Reports
1.4 Requerimientos de Hardware
Procesador: Core 2 Duo o superior
Memoria: 2 GB RAM mínimo recomendado
Disco duro: 40 GB Disponibles en disco
Monitor: SVGA 1024 * 968
Tarjeta de red: 10 Mbps o superior
CODIGO FUENTE
2.1 VISUALIZACIÓN DE LA ARQUITECTURA DE LA APLICACIÓN
Ilustración 39 Arquitectura de la aplicación
Como se puede observar en la Ilustración 39 el proyecto esta dividido en 7
módulos:
70







Account
App_Code
Images
Reportes
Scripts
Styles
Views
Cada uno de estos módulos sera detallado a continuación:
2.2 Account
En esta carpeta se almacena las páginas que controlar el ingreso a la aplicación y
cambio de contraseña.
Ilustración 40 Módulo Account
Login2.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login2.aspx.cs"
Inherits="Account_Login2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<center>
<tr
<td align="center" valign="middle">
<table width="10%" cellspacing="4" cellpadding="4" border="4" >
<tr>
<td>
<img alt="" src="Images/logo.jpg" />
</td>
</tr>
<tr>
71
<td valign="middle" align="center">
<table cellspacing="0" cellpadding="3" border="0" >
<td>
<asp:Label ID="lblUsuario" Text="Usuario" runat="server" />
</td>
<td class="textologin" width="20" valign="middle" align="center">:</td>
<td>
<asp:TextBox ID="txtUsuario" runat="server"></asp:TextBox>
</td>
<td>
<asp:Label ID="lblExiste" runat="server" ForeColor="Red"></asp:Label>
</td>
</tr>
<tr>
<td>
<asp:Label ID="lblContraseña" Text="Contraseña" runat="server" />
<td class="textologin" width="20" valign="middle" align="center">:</td>
</td>
<td>
<asp:TextBox ID="txtContraseña" runat="server"
TextMode="Password"></asp:TextBox>
</td>
</tr>
</table>
</td>
</table>
<%--Botones--%>
<table bgcolor="#ff6600">
<tr>
<td>
<asp:Button ID="btnIngresar" runat="server" Text="Ingresar"
onclick="btnIngresar_Click" />
</td>
<td>
<asp:Button ID="btnLimpiar" runat="server" Text="Cancelar"
onclick="btnLimpiar_Click" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</center>
72
</form>
</body>
</html>
Login2.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Account_Login2 : System.Web.UI.Page
{
private Conexion c = new Conexion();
protected void Page_Load(object sender, EventArgs e)
{
lblExiste.Visible = false;
}
protected void btnIngresar_Click(object sender, EventArgs e)
{
if (txtUsuario.Text != "")
{
string perfil = String.Empty;
string usuario = String.Empty;
string contraseña = String.Empty;
if (c.Consulta("select PerfilID from IND_Usuarios where Usuario = '" +
txtUsuario.Text + "'").Tables[0].Rows.Count > 0)
perfil = c.Consulta("select PerfilID from IND_Usuarios where Usuario = '"
+ txtUsuario.Text + "'").Tables[0].Rows[0].ItemArray[0].ToString();
if (c.Consulta("select Usuario from IND_Usuarios where Usuario = '" +
txtUsuario.Text + "'").Tables[0].Rows.Count > 0)
usuario = c.Consulta("select Usuario from IND_Usuarios where Usuario
= '" + txtUsuario.Text + "'").Tables[0].Rows[0].ItemArray[0].ToString();
if (c.Consulta("select Clave from IND_Usuarios where Usuario = '" +
txtUsuario.Text + "'").Tables[0].Rows.Count > 0)
contraseña = c.Consulta("select Clave from IND_Usuarios where
Usuario = '" + txtUsuario.Text + "'").Tables[0].Rows[0].ItemArray[0].ToString();
if (usuario == txtUsuario.Text && contraseña == txtContraseña.Text)
{
Session["Perfil"] = perfil;
Response.Redirect("Default.aspx");
}
73
else
{
//Response.Redirect("Login2.aspx");
lblExiste.Text = "Usuario/contraseña invalidos. Ingrese nuevamente.";
lblExiste.Visible = true;
}
}
else
{
lblExiste.Text = "Usuario/contraseña invalidos. Ingrese nuevamente.";
lblExiste.Visible = true;
}
}
protected void btnLimpiar_Click(object sender, EventArgs e)
{
txtUsuario.Text = "";
txtContraseña.Text = "";
}
}
2.3 App_Code
En este módulo se encuentran las clases que manejan la conexión a la base de
Datos.
Ilustración 41 Módulo App_Code
Conexion.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.ComponentModel;
using System.Drawing;
using System.Collections;
using System.IO;
using System.Web;
using System.Data.OleDb;
using System.Web.UI.WebControls;
public class Conexion
{
74
#region Variables
public SqlConnection conexion = new
SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["I
NDDBConnectionString"].ToString());
public SqlCommand comando = new SqlCommand();
public SqlDataReader drSQL;
private SqlDataAdapter adaptador = new SqlDataAdapter();
#endregion
#region Constructor
public Conexion()
{
}
#endregion
#region Métodos
public DataSet Consulta(string query)
{
try
{
conexion.Open();
SqlDataAdapter da = new SqlDataAdapter(query, conexion);
DataSet ds = new DataSet();
da.Fill(ds, "tablas");
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
conexion.Close();
}
}
public void EjecutaSQL(string sentenciaSql)
{
try
{
conexion.Open();
comando.CommandText = sentenciaSql;
comando.Connection = conexion;
comando.ExecuteNonQuery();
}
catch (Exception e)
{
throw e;
}
finally
75
{
conexion.Close();
comando.Dispose();
}
}
public void CargaDropDownList(string sentenciaSql, DropDownList ddl)
{
try
{
ddl.Items.Clear();
ddl.Items.Add("Seleccionar...");
int i = 1;
foreach (DataRow item in Consulta(sentenciaSql).Tables[0].Rows)
{
ddl.Items.Add(item[0].ToString());
ddl.Items[i].Value = item[1].ToString();
i++;
}
}
catch (Exception e)
{
throw e;
}
}
# endregion
}
ConexionPMA.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.ComponentModel;
using System.Drawing;
using System.Collections;
using System.IO;
using System.Web;
using System.Data.OleDb;
using System.Web.UI.WebControls;
public class ConexionPMA
{
#region Variables
public SqlConnection conexion = new
SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["P
MADBConnectionString"].ToString());
76
public SqlCommand comando = new SqlCommand();
public SqlDataReader drSQL;
private SqlDataAdapter adaptador = new SqlDataAdapter();
#endregion
#region Constructor
public ConexionPMA()
{
}
#endregion
#region Métodos
public DataSet Consulta(string query)
{
try
{
conexion.Open();
SqlDataAdapter da = new SqlDataAdapter(query, conexion);
DataSet ds = new DataSet();
da.Fill(ds, "tablas");
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
conexion.Close();
}
}
public void EjecutaSQL(string sentenciaSql)
{
try
{
conexion.Open();
comando.CommandText = sentenciaSql;
comando.Connection = conexion;
comando.ExecuteNonQuery();
}
catch (Exception e)
{
throw e;
}
finally
{
conexion.Close();
comando.Dispose();
}
77
}
public void CargaDropDownList(string sentenciaSql, DropDownList ddl)
{
try
{
ddl.Items.Clear();
ddl.Items.Add("Seleccionar...");
int i = 1;
foreach (DataRow item in Consulta(sentenciaSql).Tables[0].Rows)
{
ddl.Items.Add(item[0].ToString());
ddl.Items[i].Value = item[1].ToString();
i++;
}
}
catch (Exception e)
{
throw e;
}
}
# endregion
}
2.4 Images
En este modulo se encuentran las imágenes parte del sistema.
Ilustración 42 Módulo Images
2.5 Reportes
Como su nombre lo índica contiene los Crystal Reports del sistema.
Ilustración 43 Módulo Reportes
2.6 Scripts
78
Este modulo contiene los archivos javascripts (.js) y de hojas de estilos (.css)
necesarios para realizar validaciones e incluir efectos visuales al menú.
Ilustración 44 Módulo Scripts
2.7 Styles
Este modulo contiene los archivos de hojas de estilos (.css) que controlan la
apariencia visual del sitio.
Ilustración 45 Módulo Styles
79
2.8 Views
Este modulo contiene los archivos de las paginas del sitio las cuales contienen lo
siguente:
AdministracionPerfiles.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master"
AutoEventWireup="true"
CodeFile="AdministracionPerfiles.aspx.cs" Inherits="AdministracionPerfiles" %>
<%@ Register Assembly="DevExpress.Web.ASPxGridView.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %>
<%@ Register Assembly="DevExpress.Web.ASPxEditors.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dx" %>
<asp:Content ID="HeaderContent" ContentPlaceHolderID="HeadContent"
runat="Server">
</asp:Content>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent"
runat="Server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:Panel ID="pnlPageHeader" CssClass="page-header" runat="server">
<%--Título--%>
<asp:Panel ID="pnlTitle" CssClass="page-header" runat="server">
<h1>
<asp:Label ID="lblTitle" runat="server"></asp:Label></h1>
</asp:Panel>
</asp:Panel>
<br />
<asp:Panel ID="pnlFormSection" CssClass="form-section" runat="server">
<asp:Panel ID="pnlContainer" CssClass="container" runat="server"
ClientIDMode="Static">
<table>
<tr>
<td class="label required">
<asp:Label ID="lblPerfil" runat="server"></asp:Label>
</td>
<td>
<asp:DropDownList ID="ddlPerfil" runat="server"
AutoPostBack="true" Width="300px"
OnSelectedIndexChanged="ddlPerfil_SelectedIndexChanged">
</asp:DropDownList>
</td>
</tr>
</table>
<dx:ASPxGridView ID="ASPxGridViewAdminPerfiles"
ClientInstanceName="grid" KeyFieldName="PantallaID"
80
OnRowInserting="grid_RowInserting" Width="100%"
AutoGenerateColumns="False" OnRowUpdating="grid_RowUpdating"
OnRowDeleting="grid_RowDeleting" Visible="false" runat="server">
<SettingsEditing Mode="Inline" />
<Columns>
<dx:GridViewCommandColumn VisibleIndex="0">
<EditButton Visible="True" Text="Actualizar">
</EditButton>
<NewButton Visible="True" Text="Crear">
</NewButton>
<DeleteButton Visible="True" Text="Eliminar">
</DeleteButton>
</dx:GridViewCommandColumn>
<dx:GridViewDataComboBoxColumn Caption="Pantalla"
FieldName="PantallaID" ShowInCustomizationForm="True"
VisibleIndex="2">
<PropertiesComboBox DataSourceID="SqlDataSourcePantallas"
ValueType="System.Int32"
ValueField="PantallaID" TextField="NombrePantalla"
Spacing="0">
</PropertiesComboBox>
</dx:GridViewDataComboBoxColumn>
</Columns>
<ClientSideEvents SelectionChanged="grid_SelectionChanged" />
</dx:ASPxGridView>
<asp:SqlDataSource ID="SqlDataSourcePantallas"
ConnectionString="<%$ ConnectionStrings:INDDBConnectionString %>"
runat="server" SelectCommand="select PantallaID, NombrePantalla
from IND_Pantallas">
</asp:SqlDataSource>
</asp:Panel>
</asp:Panel>
</asp:Content>
AdministracionPerfiles.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Text;
using System.Data.SqlClient;
public partial class AdministracionPerfiles : System.Web.UI.Page
{
81
#region Variables
private Conexion c = new Conexion();
private ConexionPMA cPMA = new ConexionPMA();
private DataSet codigo = new DataSet();
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
c.CargaDropDownList("select NombrePerfil, PerfilID from IND_Perfiles
order by NombrePerfil", ddlPerfil);
lblTitle.Text = "Administración de Perfiles";
}
}
protected void ddlPerfil_SelectedIndexChanged(object sender, EventArgs e)
{
ASPxGridViewAdminPerfiles.Visible = true;
BindGrid();
}
protected void grid_RowInserting(object sender,
DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("INSERT INTO [IND_PerfilPantalla] ([PantallaID], [PerfilID])
VALUES (");
sqlQuery.Append(e.NewValues["PantallaID"].ToString() + ", ");
sqlQuery.Append(ddlPerfil.SelectedValue + ")");
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewAdminPerfiles.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
82
protected void grid_RowUpdating(object sender,
DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("UPDATE IND_PerfilPantalla SET ");
sqlQuery.Append("PantallaID = " + e.NewValues["PantallaID"].ToString() +
",");
sqlQuery.Append("PerfilID = " + ddlPerfil.SelectedValue);
sqlQuery.Append(" WHERE PantallaID = " + e.Keys["PantallaID"].ToString());
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewAdminPerfiles.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
protected void grid_RowDeleting(object sender,
DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("DELETE FROM IND_PerfilPantalla");
sqlQuery.Append(" WHERE PantallaID = " + e.Keys["PantallaID"].ToString());
sqlQuery.Append(" AND PerfilID = " + ddlPerfil.SelectedValue);
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewAdminPerfiles.CancelEdit();
}
83
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
private void BindGrid()
{
try
{
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand("select * from IND_Pantallas pa,
IND_PerfilPantalla pp, IND_Perfiles pe where pp.PerfilID = pe.PerfilID and
pp.PantallaID = pa.PantallaID and pe.PerfilID = " + ddlPerfil.SelectedValue);
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
dapt.Fill(dsClaimCat);
ASPxGridViewAdminPerfiles.DataSource = dsClaimCat;
ASPxGridViewAdminPerfiles.DataBind();
c.conexion.Close();
}
catch
{
Response.Write("Error");
}
}
}
Cargos.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master"
AutoEventWireup="true"
CodeFile="Cargos.aspx.cs" Inherits="Cargos" %>
<%@ Register Assembly="DevExpress.Web.ASPxGridView.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %>
<%@ Register Assembly="DevExpress.Web.ASPxEditors.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dx" %>
<asp:Content ID="HeaderContent" ContentPlaceHolderID="HeadContent"
runat="Server">
</asp:Content>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent"
runat="Server">
<asp:Panel ID="pnlPageHeader" CssClass="page-header" runat="server">
84
<%--Título--%>
<asp:Panel ID="pnlTitle" CssClass="page-header" runat="server">
<h1>
<asp:Label ID="lblTitle" runat="server"></asp:Label></h1>
</asp:Panel>
</asp:Panel>
<br />
<asp:Panel ID="pnlFormSection" CssClass="form-section" runat="server">
<asp:Panel ID="pnlContainer" CssClass="container" runat="server"
ClientIDMode="Static">
<dx:ASPxGridView ID="ASPxGridViewCargos" ClientInstanceName="grid"
KeyFieldName="CargoID"
OnRowInserting="grid_RowInserting" Width="100%"
AutoGenerateColumns="False" OnRowUpdating="grid_RowUpdating"
OnRowDeleting="grid_RowDeleting" runat="server">
<SettingsEditing Mode="Inline" />
<Columns>
<dx:GridViewCommandColumn VisibleIndex="0">
<EditButton Visible="True" Text="Actualizar">
</EditButton>
<NewButton Visible="True" Text="Crear">
</NewButton>
<DeleteButton Visible="True" Text="Eliminar">
</DeleteButton>
</dx:GridViewCommandColumn>
<dx:GridViewDataTextColumn Caption="Cargo"
FieldName="NombreCargo" VisibleIndex="1">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
</Columns>
</dx:ASPxGridView>
</asp:Panel>
</asp:Panel>
</asp:Content>
Cargos.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Text;
using System.Data.SqlClient;
public partial class Cargos : System.Web.UI.Page
{
85
#region Variables
private Conexion c = new Conexion();
private ConexionPMA cPMA = new ConexionPMA();
private DataSet codigo = new DataSet();
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindGrid();
lblTitle.Text = "Cargos";
}
}
protected void grid_RowInserting(object sender,
DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("INSERT INTO [IND_Cargos] ([NombreCargo]) VALUES
(");
sqlQuery.Append("'" + e.NewValues["NombreCargo"].ToString() + "')");
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewCargos.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
protected void grid_RowUpdating(object sender,
DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("UPDATE IND_Cargos SET ");
sqlQuery.Append("NombreCargo = '" +
e.NewValues["NombreCargo"].ToString() + "'");
sqlQuery.Append(" WHERE CargoID = " + e.Keys["CargoID"].ToString());
86
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewCargos.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
protected void grid_RowDeleting(object sender,
DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("DELETE FROM IND_Cargos");
sqlQuery.Append(" WHERE CargoID = " + e.Keys["CargoID"].ToString());
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewCargos.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
private void BindGrid()
{
try
{
87
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand("select * from IND_Cargos");
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
dapt.Fill(dsClaimCat);
ASPxGridViewCargos.DataSource = dsClaimCat;
ASPxGridViewCargos.DataBind();
c.conexion.Close();
}
catch
{
Response.Write("Error");
}
}
}
EstadosIndicadores.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master"
AutoEventWireup="true"
CodeFile="EstadosIndicadores.aspx.cs" Inherits="EstadosIndicadores" %>
<%@ Register Assembly="DevExpress.Web.ASPxGridView.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %>
<%@ Register Assembly="DevExpress.Web.ASPxEditors.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dx" %>
<asp:Content ID="HeaderContent" ContentPlaceHolderID="HeadContent"
runat="Server">
</asp:Content>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent"
runat="Server">
<asp:Panel ID="pnlPageHeader" CssClass="page-header" runat="server">
<%--Título--%>
<asp:Panel ID="pnlTitle" CssClass="page-header" runat="server">
<h1>
<asp:Label ID="lblTitle" runat="server"></asp:Label></h1>
</asp:Panel>
</asp:Panel>
<br />
<asp:Panel ID="pnlFormSection" CssClass="form-section" runat="server">
<asp:Panel ID="pnlContainer" CssClass="container" runat="server"
ClientIDMode="Static">
88
<dx:ASPxGridView ID="ASPxGridViewEstadosIndicadores"
ClientInstanceName="grid" KeyFieldName="EstadoID"
OnRowInserting="grid_RowInserting" Width="100%"
AutoGenerateColumns="False"
OnRowUpdating="grid_RowUpdating"
OnRowDeleting="grid_RowDeleting" runat="server">
<SettingsEditing Mode="Inline" />
<Columns>
<dx:GridViewCommandColumn VisibleIndex="0">
<EditButton Visible="True" Text="Actualizar">
</EditButton>
<NewButton Visible="True" Text="Crear">
</NewButton>
<DeleteButton Visible="True" Text="Eliminar">
</DeleteButton>
</dx:GridViewCommandColumn>
<dx:GridViewDataTextColumn Caption="Nemónico"
FieldName="NemonicoEstado" VisibleIndex="1">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn Caption="Estado"
FieldName="DescripcionEstado" VisibleIndex="2">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
</Columns>
</dx:ASPxGridView>
<asp:SqlDataSource ID="SqlDataSourceEstadosIndicadores"
ConnectionString="<%$ ConnectionStrings:INDDBConnectionString %>"
runat="server" SelectCommand="select * from IND_Estados">
</asp:SqlDataSource>
</asp:Panel>
</asp:Panel>
</asp:Content>
EstadosIndicadores.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Text;
public partial class EstadosIndicadores : System.Web.UI.Page
{
#region Variables
private Conexion c = new Conexion();
private ConexionPMA cPMA = new ConexionPMA();
89
private DataSet codigo = new DataSet();
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindGrid();
lblTitle.Text = "Estado de Indicadores";
}
}
protected void grid_RowInserting(object sender,
DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("INSERT INTO [IND_Estados] (NemonicoEstado,
DescripcionEstado) VALUES (");
sqlQuery.Append("'" + e.NewValues["NemonicoEstado"].ToString() + "',");
sqlQuery.Append("'" + e.NewValues["DescripcionEstado"].ToString() + "')");
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewEstadosIndicadores.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
protected void grid_RowUpdating(object sender,
DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("UPDATE IND_Estados SET ");
sqlQuery.Append("NemonicoEstado = '" +
e.NewValues["NemonicoEstado"].ToString() + "'");
sqlQuery.Append("DescripcionEstado = '" +
e.NewValues["DescripcionEstado"].ToString() + "'");
90
sqlQuery.Append(" WHERE EstadoID = " + e.Keys["EstadoID"].ToString());
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewEstadosIndicadores.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
protected void grid_RowDeleting(object sender,
DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("DELETE FROM IND_Estados");
sqlQuery.Append(" WHERE EstadoID = " + e.Keys["EstadoID"].ToString());
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewEstadosIndicadores.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
private void BindGrid()
{
try
91
{
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand("select * from IND_Estados");
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
dapt.Fill(dsClaimCat);
ASPxGridViewEstadosIndicadores.DataSource = dsClaimCat;
ASPxGridViewEstadosIndicadores.DataBind();
c.conexion.Close();
}
catch
{
Response.Write("Error");
}
}
}
Frecuencias.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master"
AutoEventWireup="true"
CodeFile="Frecuencias.aspx.cs" Inherits="Frecuencias" %>
<%@ Register Assembly="DevExpress.Web.ASPxGridView.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %>
<%@ Register Assembly="DevExpress.Web.ASPxEditors.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dx" %>
<asp:Content ID="HeaderContent" ContentPlaceHolderID="HeadContent"
runat="Server">
</asp:Content>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent"
runat="Server">
<asp:Panel ID="pnlPageHeader" CssClass="page-header" runat="server">
<%--Título--%>
<asp:Panel ID="pnlTitle" CssClass="page-header" runat="server">
<h1>
<asp:Label ID="lblTitle" runat="server"></asp:Label></h1>
</asp:Panel>
</asp:Panel>
<br />
<asp:Panel ID="pnlFormSection" CssClass="form-section" runat="server">
<asp:Panel ID="pnlContainer" CssClass="container" runat="server"
ClientIDMode="Static">
92
<dx:ASPxGridView ID="ASPxGridViewFrecuencias"
ClientInstanceName="grid" KeyFieldName="FrecuenciaID"
OnRowInserting="grid_RowInserting" Width="100%"
AutoGenerateColumns="False"
OnRowUpdating="grid_RowUpdating"
OnRowDeleting="grid_RowDeleting" runat="server">
<SettingsEditing Mode="Inline" />
<Columns>
<dx:GridViewCommandColumn VisibleIndex="0">
<EditButton Visible="True" Text="Actualizar">
</EditButton>
<NewButton Visible="True" Text="Crear">
</NewButton>
<DeleteButton Visible="True" Text="Eliminar">
</DeleteButton>
</dx:GridViewCommandColumn>
<dx:GridViewDataTextColumn Caption="Frecuencia"
FieldName="DescripcionFrecuencia" VisibleIndex="1">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
</Columns>
</dx:ASPxGridView>
<asp:SqlDataSource ID="SqlDataSourceFrecuencias"
ConnectionString="<%$ ConnectionStrings:INDDBConnectionString %>"
runat="server" SelectCommand="select * from IND_Frecuencias">
</asp:SqlDataSource>
</asp:Panel>
</asp:Panel>
</asp:Content>
Frecuencias.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Text;
public partial class Frecuencias : System.Web.UI.Page
{
#region Variables
private Conexion c = new Conexion();
private ConexionPMA cPMA = new ConexionPMA();
private DataSet codigo = new DataSet();
93
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindGrid();
lblTitle.Text = "Frecuencias";
}
}
protected void grid_RowInserting(object sender,
DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("INSERT INTO [IND_Frecuencias]
([DescripcionFrecuencia]) VALUES (");
sqlQuery.Append("'" + e.NewValues["DescripcionFrecuencia"].ToString() +
"')");
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewFrecuencias.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
protected void grid_RowUpdating(object sender,
DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("UPDATE IND_Frecuencias SET ");
sqlQuery.Append("DescripcionFrecuencia = '" +
e.NewValues["DescripcionFrecuencia"].ToString() + "'");
sqlQuery.Append(" WHERE FrecuenciaID = " +
e.Keys["FrecuenciaID"].ToString());
94
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewFrecuencias.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
protected void grid_RowDeleting(object sender,
DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("DELETE FROM IND_Frecuencias");
sqlQuery.Append(" WHERE FrecuenciaID = " +
e.Keys["FrecuenciaID"].ToString());
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewFrecuencias.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
private void BindGrid()
{
try
95
{
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand("select * from IND_Frecuencias");
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
dapt.Fill(dsClaimCat);
ASPxGridViewFrecuencias.DataSource = dsClaimCat;
ASPxGridViewFrecuencias.DataBind();
c.conexion.Close();
}
catch
{
Response.Write("Error");
}
}
}
IngresoDatos.aspx
<%@ Page Title="Ingreso de Datos" Language="C#"
MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeFile="IngresoDatos.aspx.cs" Inherits="IngresoDatos" %>
<%@ Register Assembly="DevExpress.Web.ASPxGridView.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %>
<%@ Register Assembly="DevExpress.Web.ASPxEditors.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dx" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent"
runat="Server">
<script type="text/javascript">
// <![CDATA[
function OnPDAChanged(cmbPDA) {
grid.GetEditor("NombreProyecto").PerformCallback(cmbPDA.GetValue().toString()
);
}
// ]]>
</script>
<asp:Panel ID="pnlFormSection" CssClass="form-section" runat="server">
<asp:Panel ID="pnlPageHeader" CssClass="page-header" runat="server">
<%--Título--%>
<asp:Panel ID="pnlTitle" CssClass="page-header" runat="server">
<h1>
96
<asp:Label ID="lblTitle" runat="server"></asp:Label></h1>
</asp:Panel>
</asp:Panel>
<br />
<asp:Panel ID="pnlContainer" CssClass="container" runat="server"
ClientIDMode="Static">
<table>
<tr>
<td class="label required">
<asp:Label ID="lblPDA" runat="server"></asp:Label>
</td>
<td>
<asp:DropDownList ID="ddlPDA" runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="ddlPDA_SelectedIndexChanged">
</asp:DropDownList>
</td>
</tr>
<tr>
<td class="label required">
<asp:Label ID="lblProyecto" runat="server"></asp:Label>
</td>
<td>
<asp:DropDownList ID="ddlProyecto" runat="server"
AutoPostBack="true" Width="300px"
OnSelectedIndexChanged="ddlProyecto_SelectedIndexChanged">
</asp:DropDownList>
</td>
</tr>
<tr>
<td class="label required">
<asp:Label ID="lblActividad" runat="server"></asp:Label>
</td>
<td>
<asp:DropDownList ID="ddlActividad" runat="server"
AutoPostBack="true" Width="300px"
OnSelectedIndexChanged="ddlActividad_SelectedIndexChanged">
</asp:DropDownList>
</td>
<td class="label required">
<asp:Label ID="lblCodActividad" runat="server"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtCodActividad" runat="server"
Enabled="false"></asp:TextBox>
</td>
</tr>
<tr>
97
<td class="label required">
<asp:Label ID="lblAreaProgramatica" runat="server"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtAreaProgramatica" runat="server"
Enabled="false" Width="300px"></asp:TextBox>
</td>
</tr>
</table>
<br />
<dx:ASPxGridView ID="ASPxGridViewIndicadores"
ClientInstanceName="grid" Visible="false"
OnRowInserting="grid_RowInserting" KeyFieldName="IndicadorID"
Width="100%" AutoGenerateColumns="False"
OnRowUpdating="grid_RowUpdating"
OnRowDeleting="grid_RowDeleting" runat="server">
<SettingsEditing Mode="Inline" />
<Columns>
<dx:GridViewCommandColumn Caption="Acciones"
VisibleIndex="0">
<EditButton Visible="True" Text="Actualizar">
</EditButton>
<NewButton Visible="True" Text="Crear">
</NewButton>
<DeleteButton Visible="True" Text="Eliminar">
</DeleteButton>
</dx:GridViewCommandColumn>
<dx:GridViewDataTextColumn Caption="Descripción del Indicador"
FieldName="DescripcionIndicador" VisibleIndex="1">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataComboBoxColumn Caption="Unidades"
FieldName="UnidadID" ShowInCustomizationForm="True"
VisibleIndex="2">
<PropertiesComboBox DataSourceID="SqlDataSourceUnidades"
ValueType="System.Int32"
ValueField="UnidadID" TextField="DescripcionUnidad"
Spacing="0">
</PropertiesComboBox>
</dx:GridViewDataComboBoxColumn>
<dx:GridViewDataTextColumn Caption="Línea Base"
FieldName="LineaBase" VisibleIndex="3">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn Caption="Meta Final"
FieldName="MetaFinalIndicador" VisibleIndex="4">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn Caption="Nivel Crítico"
FieldName="NivelCriticoIndicador" VisibleIndex="5">
98
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataColumn Caption="Fecha Para Meta Final"
FieldName="FechaMetaFinal" VisibleIndex="6">
<EditFormSettings Visible="False" />
</dx:GridViewDataColumn>
<dx:GridViewDataComboBoxColumn Caption="Frecuencia"
FieldName="FrecuenciaID" ShowInCustomizationForm="True"
VisibleIndex="7">
<PropertiesComboBox
DataSourceID="SqlDataSourceFrecuencias" ValueType="System.Int32"
ValueField="FrecuenciaID" TextField="DescripcionFrecuencia"
Spacing="0">
</PropertiesComboBox>
</dx:GridViewDataComboBoxColumn>
<dx:GridViewDataTextColumn Caption="Evidencias"
FieldName="EvidenciasIndicador" VisibleIndex="8">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
</Columns>
</dx:ASPxGridView>
<asp:SqlDataSource ID="SqlDataSourceIndicadores"
ConnectionString="<%$ ConnectionStrings:INDDBConnectionString %>"
runat="server" SelectCommand="select * from IND_Indicadores">
</asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSourceFrecuencias"
ConnectionString="<%$ ConnectionStrings:INDDBConnectionString %>"
runat="server" SelectCommand="select FrecuenciaID,
DescripcionFrecuencia from IND_Frecuencias">
</asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSourceUnidades"
ConnectionString="<%$ ConnectionStrings:INDDBConnectionString %>"
runat="server" SelectCommand="select UnidadID, DescripcionUnidad
from IND_Unidades">
</asp:SqlDataSource>
</asp:Panel>
</asp:Panel>
</asp:Content>
IngresoDatos.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
99
using DevExpress.Web.ASPxEditors;
using DevExpress.Web.ASPxClasses;
using DevExpress.Web.ASPxGridView;
using System.Text;
using System.Data.SqlClient;
using System.Globalization;
public partial class IngresoDatos : System.Web.UI.Page
{
#region Variables
private Conexion c = new Conexion();
private ConexionPMA cPMA = new ConexionPMA();
private DataSet codigo = new DataSet();
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
LoadResources();
cPMA.CargaDropDownList("select NombrePda, PdaID from PMA_Pda
order by NombrePda", ddlPDA);
}
}
#region LoadResources
protected void LoadResources()
{
lblPDA.Text = "Programa de Desarrollo de Área (PDA):";
lblProyecto.Text = "Nombre del Proyecto:";
lblCodActividad.Text = "Código de la Actividad:";
lblActividad.Text = "Actividad:";
lblAreaProgramatica.Text = "Área Programática:";
lblTitle.Text = "Ingreso de Indicadores";
}
#endregion
protected void ddlAreaProgramatica_SelectedIndexChanged(object sender,
EventArgs e)
{
cPMA.CargaDropDownList("select a.DescripcionActividad, a.ActividadId from
PMA_Resultados r, PMA_Productos p, PMA_Actividades a, PMA_Proyectos py,
PMA_CategoriaSector c where r.ResultadoID=p.ResultadoID and
p.ProductoID=a.ProductoID and a.CategoriaSectorID=c.CategoriaSectorID and
r.ProyectoID= py.ProyectoID and py.PdaID = " + ddlPDA.SelectedValue + " and
py.ProyectoID = " + ddlProyecto.SelectedValue, ddlActividad);
}
100
protected void ddlProyecto_SelectedIndexChanged(object sender, EventArgs
e)
{
ASPxGridViewIndicadores.Visible = false;
ddlActividad.Items.Clear();
txtCodActividad.Text = "";
txtAreaProgramatica.Text = "";
cPMA.CargaDropDownList("select a.DescripcionActividad, a.ActividadId from
PMA_Resultados r, PMA_Productos p, PMA_Actividades a, PMA_Proyectos py,
PMA_CategoriaSector c where r.ResultadoID=p.ResultadoID and
p.ProductoID=a.ProductoID and a.CategoriaSectorID=c.CategoriaSectorID and
r.ProyectoID= py.ProyectoID and py.PdaID = " + ddlPDA.SelectedValue + " and
py.ProyectoID = " + ddlProyecto.SelectedValue, ddlActividad);
}
protected void ddlActividad_SelectedIndexChanged(object sender, EventArgs
e)
{
codigo = cPMA.Consulta("select p.MarcoLogicoProducto,
a.MarcoLogicoActividad, c.CategoriaSector from PMA_Resultados r,
PMA_Productos p, PMA_Actividades a, PMA_Proyectos py,
PMA_CategoriaSector c where r.ResultadoID=p.ResultadoID and
p.ProductoID=a.ProductoID and a.CategoriaSectorID=c.CategoriaSectorID and
r.ProyectoID= py.ProyectoID and py.PdaID = " + ddlPDA.SelectedValue + " and
py.ProyectoID = " + ddlProyecto.SelectedValue + " and a.ActividadID = " +
ddlActividad.SelectedValue);
txtAreaProgramatica.Text =
codigo.Tables[0].Rows[0].ItemArray[2].ToString();
txtCodActividad.Text = "01." + "0" +
codigo.Tables[0].Rows[0].ItemArray[0].ToString() + ".0" +
codigo.Tables[0].Rows[0].ItemArray[1].ToString();
ASPxGridViewIndicadores.Visible = true;
BindGrid();
}
protected void ddlPDA_SelectedIndexChanged(object sender, EventArgs e)
{
ddlActividad.Items.Clear();
txtCodActividad.Text = "";
txtAreaProgramatica.Text = "";
cPMA.CargaDropDownList("select distinct(NombreProyecto), ProyectoID
from PMA_Proyectos where PdaID = " + ddlPDA.SelectedValue, ddlProyecto);
}
protected void grid_RowInserting(object sender,
DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("INSERT INTO [IND_Indicadores] ([FrecuenciaID],
[DescripcionIndicador], [MetaFinalIndicador], [NivelCriticoIndicador],
[EvidenciasIndicador], [ActividadID], [LineaBase], [EstadoID], [UsuarioID],
[FechaMetaFinal], [UnidadID]) VALUES (");
101
sqlQuery.Append(e.NewValues["FrecuenciaID"].ToString() + ",");
sqlQuery.Append("'" + e.NewValues["DescripcionIndicador"].ToString() + "',");
sqlQuery.Append(e.NewValues["MetaFinalIndicador"].ToString() + ",");
sqlQuery.Append(e.NewValues["NivelCriticoIndicador"].ToString() + ",");
sqlQuery.Append("'" + e.NewValues["EvidenciasIndicador"].ToString() + "',");
sqlQuery.Append(ddlActividad.SelectedValue + ",");
sqlQuery.Append(e.NewValues["LineaBase"].ToString() + ",");
sqlQuery.Append("1,");
sqlQuery.Append("1,");
sqlQuery.Append("'" + String.Format("{0:u}",
e.NewValues["FechaMetaFinal"]).Replace("Z", "") + "', ");
sqlQuery.Append(e.NewValues["UnidadID"].ToString() + ")");
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewIndicadores.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
protected void grid_RowUpdating(object sender,
DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("UPDATE IND_Indicadores SET ");
sqlQuery.Append("FrecuenciaID = " +
e.NewValues["FrecuenciaID"].ToString() + ",");
sqlQuery.Append("DescripcionIndicador = '" +
e.NewValues["DescripcionIndicador"].ToString() + "',");
sqlQuery.Append("MetaFinalIndicador = " +
e.NewValues["MetaFinalIndicador"].ToString() + ",");
sqlQuery.Append("NivelCriticoIndicador = " +
e.NewValues["NivelCriticoIndicador"].ToString() + ",");
sqlQuery.Append("EvidenciasIndicador = '" +
e.NewValues["EvidenciasIndicador"].ToString() + "',");
sqlQuery.Append("ActividadID = " +ddlActividad.SelectedValue + ",");
102
sqlQuery.Append("LineaBase = " + e.NewValues["LineaBase"].ToString() +
",");
sqlQuery.Append("EstadoID = 1,");
sqlQuery.Append("UsuarioID = 1,");
sqlQuery.Append("FechaMetaFinal = '" + String.Format("{0:u}",
e.NewValues["FechaMetaFinal"]).Replace("Z", "") + "'");
sqlQuery.Append(" WHERE IndicadorID= "+
e.Keys["IndicadorID"].ToString());
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewIndicadores.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
protected void grid_RowDeleting(object sender,
DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("DELETE FROM IND_Indicadores");
sqlQuery.Append(" WHERE IndicadorID = "+
e.Keys["IndicadorID"].ToString());
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewIndicadores.CancelEdit();
}
103
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
private void BindGrid()
{
try
{
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand("select * from IND_Indicadores where
ActividadID = " + ddlActividad.SelectedValue);
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
dapt.Fill(dsClaimCat);
ASPxGridViewIndicadores.DataSource = dsClaimCat;
ASPxGridViewIndicadores.DataBind();
c.conexion.Close();
}
catch
{
Response.Write("Error");
}
}
}
IngresoMonitoreo.aspx
<%@ Page Title="Ingreso de Monitoreo" Language="C#"
MasterPageFile="~/Site.master"
AutoEventWireup="true" CodeFile="IngresoMonitoreo.aspx.cs"
Inherits="IngresoMonitoreo" %>
<%@ Register Assembly="DevExpress.Web.ASPxGridView.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %>
<%@ Register Assembly="DevExpress.Web.ASPxEditors.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dx" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent"
runat="Server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
104
</asp:ScriptManager>
<asp:Panel ID="pnlFormSection" CssClass="form-section" runat="server">
<asp:Panel ID="pnlPageHeader" CssClass="page-header" runat="server">
<%--Título--%>
<asp:Panel ID="pnlTitle" CssClass="page-header" runat="server">
<h1>
<asp:Label ID="lblTitle" runat="server"></asp:Label></h1>
</asp:Panel>
</asp:Panel>
<br />
<asp:Panel ID="pnlContainer" CssClass="container" runat="server"
ClientIDMode="Static">
<%--<asp:UpdatePanel ID="upPDA" UpdateMode="Conditional"
runat="server">
<ContentTemplate>--%>
<table>
<tr>
<td class="label required">
<asp:Label ID="lblPDA" runat="server"></asp:Label>
</td>
<td>
<asp:DropDownList ID="ddlPDA" runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="ddlPDA_SelectedIndexChanged">
</asp:DropDownList>
</td>
</tr>
<tr>
<td class="label required">
<asp:Label ID="lblProyecto" runat="server"></asp:Label>
</td>
<td>
<asp:DropDownList ID="ddlProyecto" runat="server"
AutoPostBack="true" Width="300px"
OnSelectedIndexChanged="ddlProyecto_SelectedIndexChanged">
</asp:DropDownList>
</td>
</tr>
<tr>
<td class="label required">
<asp:Label ID="lblActividad" runat="server"></asp:Label>
</td>
<td>
<asp:DropDownList ID="ddlActividad" runat="server"
AutoPostBack="true" Width="300px"
OnSelectedIndexChanged="ddlActividad_SelectedIndexChanged">
</asp:DropDownList>
</td>
105
<td class="label required">
<asp:Label ID="lblCodActividad" runat="server"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtCodActividad" runat="server"
Enabled="false"></asp:TextBox>
</td>
</tr>
<tr>
<td class="label required">
<asp:Label ID="lblAreaProgramatica"
runat="server"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtAreaProgramatica" runat="server"
Enabled="false" Width="300px"></asp:TextBox>
</td>
</tr>
<tr>
<td class="label required">
<asp:Label ID="lblIndicador" runat="server"></asp:Label>
</td>
<td>
<asp:DropDownList ID="ddlIndicador" runat="server"
AutoPostBack="true" Width="300px"
OnSelectedIndexChanged="ddlIndicador_SelectedIndexChanged">
</asp:DropDownList>
</td>
</tr>
</table>
<br />
<dx:ASPxGridView ID="ASPxGridViewIndicador"
ClientInstanceName="grid" Visible="false"
KeyFieldName="IndicadorID" Width="100%"
AutoGenerateColumns="False" runat="server">
<SettingsEditing Mode="Inline" />
<Columns>
<dx:GridViewDataTextColumn Caption="Descripción del
Indicador" FieldName="DescripcionIndicador" VisibleIndex="1">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn Caption="Meta Final"
FieldName="MetaFinalIndicador" VisibleIndex="3">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn Caption="Nivel Crítico"
FieldName="NivelCriticoIndicador" VisibleIndex="4">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
106
<dx:GridViewDataColumn Caption="Fecha Para Meta Final"
FieldName="FechaMetaFinal" VisibleIndex="5">
<EditFormSettings Visible="False" />
</dx:GridViewDataColumn>
</Columns>
</dx:ASPxGridView>
<br />
<dx:ASPxGridView ID="ASPxGridViewMonitoreo"
ClientInstanceName="grid" KeyFieldName="MonitoreoIndicadorID"
Width="100%" AutoGenerateColumns="False" runat="server"
Visible="false" OnRowInserting="grid_RowInserting">
<SettingsEditing Mode="Inline" />
<Columns>
<dx:GridViewCommandColumn Caption="Acciones"
VisibleIndex="0">
<NewButton Visible="True" Text="Ingresar Meta">
</NewButton>
</dx:GridViewCommandColumn>
<dx:GridViewDataColumn Caption="Meta"
FieldName="MetaMonitoreo" VisibleIndex="1">
<EditFormSettings Visible="False" />
</dx:GridViewDataColumn>
</Columns>
</dx:ASPxGridView>
</asp:Panel>
</asp:Panel>
</asp:Content>
IngresoMonitoreo.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using DevExpress.Web.ASPxEditors;
using DevExpress.Web.ASPxClasses;
using DevExpress.Web.ASPxGridView;
using System.IO;
using DevExpress.Web.ASPxUploadControl;
using System.Data.SqlClient;
using System.Text;
public partial class IngresoMonitoreo : System.Web.UI.Page
{
#region Variables
private Conexion c = new Conexion();
107
private ConexionPMA cPMA = new ConexionPMA();
private DataSet codigo = new DataSet();
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
LoadResources();
cPMA.CargaDropDownList("select NombrePda, PdaID from PMA_Pda
order by NombrePda", ddlPDA);
}
}
#region LoadResources
protected void LoadResources()
{
lblPDA.Text = "Programa de Desarrollo de Área (PDA):";
lblProyecto.Text = "Nombre del Proyecto:";
lblCodActividad.Text = "Código de la Actividad:";
lblActividad.Text = "Actividad:";
lblAreaProgramatica.Text = "Área Programática:";
lblIndicador.Text = "Indicador:";
lblTitle.Text = "Monitoreo de Indicadores";
}
#endregion
protected void ddlAreaProgramatica_SelectedIndexChanged(object sender,
EventArgs e)
{
cPMA.CargaDropDownList("select a.DescripcionActividad, a.ActividadId from
PMA_Resultados r, PMA_Productos p, PMA_Actividades a, PMA_Proyectos py,
PMA_CategoriaSector c where r.ResultadoID=p.ResultadoID and
p.ProductoID=a.ProductoID and a.CategoriaSectorID=c.CategoriaSectorID and
r.ProyectoID= py.ProyectoID and py.PdaID = " + ddlPDA.SelectedValue + " and
py.ProyectoID = " + ddlProyecto.SelectedValue, ddlActividad);
}
protected void ddlProyecto_SelectedIndexChanged(object sender, EventArgs
e)
{
ASPxGridViewIndicador.Visible = false;
ASPxGridViewMonitoreo.Visible = false;
ddlActividad.Items.Clear();
ddlIndicador.Items.Clear();
txtCodActividad.Text = "";
txtAreaProgramatica.Text = "";
cPMA.CargaDropDownList("select a.DescripcionActividad, a.ActividadId from
PMA_Resultados r, PMA_Productos p, PMA_Actividades a, PMA_Proyectos py,
PMA_CategoriaSector c where r.ResultadoID=p.ResultadoID and
p.ProductoID=a.ProductoID and a.CategoriaSectorID=c.CategoriaSectorID and
108
r.ProyectoID= py.ProyectoID and py.PdaID = " + ddlPDA.SelectedValue + " and
py.ProyectoID = " + ddlProyecto.SelectedValue, ddlActividad);
}
protected void ddlActividad_SelectedIndexChanged(object sender, EventArgs
e)
{
codigo = cPMA.Consulta("select p.MarcoLogicoProducto,
a.MarcoLogicoActividad, c.CategoriaSector from PMA_Resultados r,
PMA_Productos p, PMA_Actividades a, PMA_Proyectos py,
PMA_CategoriaSector c where r.ResultadoID=p.ResultadoID and
p.ProductoID=a.ProductoID and a.CategoriaSectorID=c.CategoriaSectorID and
r.ProyectoID= py.ProyectoID and py.PdaID = " + ddlPDA.SelectedValue + " and
py.ProyectoID = " + ddlProyecto.SelectedValue + " and a.ActividadID = " +
ddlActividad.SelectedValue);
txtAreaProgramatica.Text =
codigo.Tables[0].Rows[0].ItemArray[2].ToString();
txtCodActividad.Text = "01." + "0" +
codigo.Tables[0].Rows[0].ItemArray[0].ToString() + ".0" +
codigo.Tables[0].Rows[0].ItemArray[1].ToString();
c.CargaDropDownList("select DescripcionIndicador, IndicadorID from
IND_Indicadores where ActividadID = " + ddlActividad.SelectedValue,
ddlIndicador);
}
protected void ddlPDA_SelectedIndexChanged(object sender, EventArgs e)
{
ddlActividad.Items.Clear();
txtCodActividad.Text = "";
txtAreaProgramatica.Text = "";
cPMA.CargaDropDownList("select distinct(NombreProyecto), ProyectoID
from PMA_Proyectos where PdaID = " + ddlPDA.SelectedValue, ddlProyecto);
}
protected void ddlIndicador_SelectedIndexChanged(object sender, EventArgs
e)
{
BindGridIndicador();
ASPxGridViewIndicador.Visible = true;
BindGrid();
ASPxGridViewMonitoreo.Visible = true;
//UpSeguimiento.Update();
}
protected void grid_RowInserting(object sender,
DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("INSERT INTO [IND_MonitoreoIndicador] (IndicadorID,
MetaMonitoreo, FechaMonitoreo) VALUES (");
sqlQuery.Append(ddlIndicador.SelectedValue + ",");
sqlQuery.Append(e.NewValues["MetaMonitoreo"].ToString() + ",");
109
sqlQuery.Append("'" + String.Format("{0:u}", DateTime.Now).Replace("Z", "")
+ "')");
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewMonitoreo.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
private void BindGrid()
{
try
{
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand("select * from IND_MonitoreoIndicador where
IndicadorID = " + ddlIndicador.SelectedValue);
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
dapt.Fill(dsClaimCat);
ASPxGridViewMonitoreo.DataSource = dsClaimCat;
ASPxGridViewMonitoreo.DataBind();
c.conexion.Close();
}
catch
{
Response.Write("Error");
}
}
private void BindGridIndicador()
{
110
try
{
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand("select * from IND_Indicadores where
ActividadID = " + ddlActividad.SelectedValue + " and IndicadorID = " +
ddlIndicador.SelectedValue);
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
dapt.Fill(dsClaimCat);
ASPxGridViewIndicador.DataSource = dsClaimCat;
ASPxGridViewIndicador.DataBind();
c.conexion.Close();
}
catch
{
Response.Write("Error");
}
}
}
Pantallas.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master"
AutoEventWireup="true" CodeFile="Pantallas.aspx.cs" Inherits="Pantallas" %>
<%@ Register Assembly="DevExpress.Web.ASPxGridView.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %>
<%@ Register Assembly="DevExpress.Web.ASPxEditors.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dx" %>
<asp:Content ID="HeaderContent" ContentPlaceHolderID="HeadContent"
runat="Server">
</asp:Content>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent"
runat="Server">
<asp:Panel ID="pnlFormSection" CssClass="form-section" runat="server">
<asp:Panel ID="pnlPageHeader" CssClass="page-header" runat="server">
<%--Título--%>
<asp:Panel ID="pnlTitle" CssClass="page-header" runat="server">
<h1>
111
<asp:Label ID="lblTitle" runat="server"></asp:Label></h1>
</asp:Panel>
</asp:Panel>
<br />
<dx:ASPxGridView ID="ASPxGridViewPantallas" ClientInstanceName="grid"
KeyFieldName="PantallaID"
OnRowInserting="grid_RowInserting" Width="100%"
AutoGenerateColumns="False"
OnRowUpdating="grid_RowUpdating"
OnRowDeleting="grid_RowDeleting" runat="server">
<SettingsEditing Mode="Inline" />
<Columns>
<dx:GridViewCommandColumn VisibleIndex="0">
<EditButton Visible="True" Text="Actualizar">
</EditButton>
<NewButton Visible="True" Text="Crear">
</NewButton>
<DeleteButton Visible="True" Text="Eliminar">
</DeleteButton>
</dx:GridViewCommandColumn>
<dx:GridViewDataTextColumn Caption = "Pantalla"
FieldName="NombrePantalla" VisibleIndex="1">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn Caption = "Módulo"
FieldName="ModuloPantalla" VisibleIndex="2">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn Caption = "Orden"
FieldName="OrdenPantalla" VisibleIndex="3">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
</Columns>
</dx:ASPxGridView>
</asp:Panel>
</asp:Content>
Pantallas.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Text;
112
using System.Data.SqlClient;
public partial class Pantallas : System.Web.UI.Page
{
#region Variables
private Conexion c = new Conexion();
private ConexionPMA cPMA = new ConexionPMA();
private DataSet codigo = new DataSet();
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindGrid();
lblTitle.Text = "Pantallas";
}
}
protected void grid_RowInserting(object sender,
DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("INSERT INTO [IND_Pantallas] ([NombrePantalla],
[ModuloPantalla], [OrdenPantalla]) VALUES (");
sqlQuery.Append("'" + e.NewValues["NombrePantalla"].ToString() + "', ");
sqlQuery.Append("'" + e.NewValues["ModuloPantalla"].ToString() + "', ");
sqlQuery.Append(e.NewValues["OrdenPantalla"].ToString() + ")");
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewPantallas.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
protected void grid_RowUpdating(object sender,
DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
113
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("UPDATE IND_Pantallas SET ");
sqlQuery.Append("NombrePantalla = '" +
e.NewValues["NombrePantalla"].ToString() + "', ");
sqlQuery.Append("ModuloPantalla = '" +
e.NewValues["ModuloPantalla"].ToString() + "', ");
sqlQuery.Append("OrdenPantalla = " +
e.NewValues["OrdenPantalla"].ToString());
sqlQuery.Append(" WHERE PantallaID= " + e.Keys["PantallaID"].ToString());
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewPantallas.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
protected void grid_RowDeleting(object sender,
DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("DELETE FROM IND_Pantallas");
sqlQuery.Append(" WHERE PantallaID = " + e.Keys["PantallaID"].ToString());
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewPantallas.CancelEdit();
}
114
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
private void BindGrid()
{
try
{
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand("select * from IND_Pantallas");
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
dapt.Fill(dsClaimCat);
ASPxGridViewPantallas.DataSource = dsClaimCat;
ASPxGridViewPantallas.DataBind();
c.conexion.Close();
}
catch
{
Response.Write("Error");
}
}
}
Perfiles.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master"
AutoEventWireup="true"
CodeFile="Perfiles.aspx.cs" Inherits="Perfiles" %>
<%@ Register Assembly="DevExpress.Web.ASPxGridView.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %>
<%@ Register Assembly="DevExpress.Web.ASPxEditors.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dx" %>
<asp:Content ID="HeaderContent" ContentPlaceHolderID="HeadContent"
runat="Server">
</asp:Content>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent"
runat="Server">
<asp:Panel ID="pnlPageHeader" CssClass="page-header" runat="server">
<%--Título--%>
115
<asp:Panel ID="pnlTitle" CssClass="page-header" runat="server">
<h1>
<asp:Label ID="lblTitle" runat="server"></asp:Label></h1>
</asp:Panel>
</asp:Panel>
<br />
<asp:Panel ID="pnlFormSection" CssClass="form-section" runat="server">
<asp:Panel ID="pnlContainer" CssClass="container" runat="server"
ClientIDMode="Static">
<dx:ASPxGridView ID="ASPxGridViewPerfiles" ClientInstanceName="grid"
KeyFieldName="PerfilID"
OnRowInserting="grid_RowInserting" Width="100%"
AutoGenerateColumns="False" OnRowUpdating="grid_RowUpdating"
OnRowDeleting="grid_RowDeleting" runat="server">
<SettingsEditing Mode="Inline" />
<Columns>
<dx:GridViewCommandColumn VisibleIndex="0">
<EditButton Visible="True" Text="Actualizar">
</EditButton>
<NewButton Visible="True" Text="Crear">
</NewButton>
<DeleteButton Visible="True" Text="Eliminar">
</DeleteButton>
</dx:GridViewCommandColumn>
<dx:GridViewDataTextColumn FieldName="NombrePerfil"
VisibleIndex="1">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
</Columns>
</dx:ASPxGridView>
</asp:Panel>
</asp:Panel>
</asp:Content>
Perfiles.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Text;
using System.Data.SqlClient;
public partial class Perfiles : System.Web.UI.Page
{
#region Variables
116
private Conexion c = new Conexion();
private ConexionPMA cPMA = new ConexionPMA();
private DataSet codigo = new DataSet();
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindGrid();
lblTitle.Text = "Perfiles";
}
}
protected void grid_RowInserting(object sender,
DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("INSERT INTO [IND_Perfiles] ([NombrePerfil]) VALUES (");
sqlQuery.Append("'" + e.NewValues["NombrePerfil"].ToString() + "')");
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewPerfiles.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
protected void grid_RowUpdating(object sender,
DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("UPDATE IND_Perfiles SET ");
sqlQuery.Append("NombrePerfil = '" +
e.NewValues["NombrePerfil"].ToString() + "'");
sqlQuery.Append(" WHERE PerfilID = " + e.Keys["PerfilID"].ToString());
c.conexion.Open();
SqlCommand cmd;
117
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewPerfiles.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
protected void grid_RowDeleting(object sender,
DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("DELETE FROM IND_Perfiles");
sqlQuery.Append(" WHERE PerfilID = " + e.Keys["PerfilID"].ToString());
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewPerfiles.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
private void BindGrid()
{
try
{
c.conexion.Open();
SqlCommand cmd;
118
cmd = new SqlCommand("select * from IND_Perfiles");
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
dapt.Fill(dsClaimCat);
ASPxGridViewPerfiles.DataSource = dsClaimCat;
ASPxGridViewPerfiles.DataBind();
c.conexion.Close();
}
catch
{
Response.Write("Error");
}
}
}
Seguimiento.aspx
<%@ Page Title="Seguimiento y Resultados" Language="C#"
MasterPageFile="~/Site.master"
AutoEventWireup="true" CodeFile="Seguimiento.aspx.cs"
Inherits="Seguimiento" %>
<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
<%@ Register Assembly="DevExpress.Web.ASPxGridView.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %>
<%@ Register Assembly="DevExpress.Web.ASPxEditors.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dx" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent"
runat="Server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:Panel ID="pnlFormSection" CssClass="form-section" runat="server">
<asp:Panel ID="pnlPageHeader" CssClass="page-header" runat="server">
<%--Título--%>
<asp:Panel ID="pnlTitle" CssClass="page-header" runat="server">
<h1>
<asp:Label ID="lblTitle" runat="server"></asp:Label></h1>
</asp:Panel>
</asp:Panel>
<br />
<asp:Panel ID="pnlContainer" CssClass="container" runat="server"
ClientIDMode="Static">
119
<asp:UpdatePanel ID="upPDA" UpdateMode="Conditional"
runat="server">
<ContentTemplate>
<table>
<tr>
<td class="label required">
<asp:Label ID="lblPDA" runat="server"></asp:Label>
</td>
<td>
<asp:DropDownList ID="ddlPDA" runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="ddlPDA_SelectedIndexChanged">
</asp:DropDownList>
</td>
</tr>
<tr>
<td class="label required">
<asp:Label ID="lblProyecto" runat="server"></asp:Label>
</td>
<td>
<asp:DropDownList ID="ddlProyecto" runat="server"
AutoPostBack="true" Width="300px"
OnSelectedIndexChanged="ddlProyecto_SelectedIndexChanged">
</asp:DropDownList>
</td>
</tr>
<tr>
<td class="label required">
<asp:Label ID="lblActividad" runat="server"></asp:Label>
</td>
<td>
<asp:DropDownList ID="ddlActividad" runat="server"
AutoPostBack="true" Width="300px"
OnSelectedIndexChanged="ddlActividad_SelectedIndexChanged">
</asp:DropDownList>
</td>
<td class="label required">
<asp:Label ID="lblCodActividad" runat="server"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtCodActividad" runat="server"
Enabled="false"></asp:TextBox>
</td>
</tr>
<tr>
<td class="label required">
<asp:Label ID="lblAreaProgramatica"
runat="server"></asp:Label>
120
</td>
<td>
<asp:TextBox ID="txtAreaProgramatica" runat="server"
Enabled="false" Width="300px"></asp:TextBox>
</td>
</tr>
<tr>
<td class="label required">
<asp:Label ID="lblIndicador" runat="server"></asp:Label>
</td>
<td>
<asp:DropDownList ID="ddlIndicador" runat="server"
AutoPostBack="true" Width="300px"
OnSelectedIndexChanged="ddlIndicador_SelectedIndexChanged">
</asp:DropDownList>
</td>
</tr>
</table>
<br />
</ContentTemplate>
</asp:UpdatePanel>
<br />
<asp:UpdatePanel ID="UpSeguimiento" UpdateMode="Conditional"
runat="server">
<ContentTemplate>
<div class="contenedor-tabla">
<div class="contenedor-fila">
<div class="contenedor-columna">
<CR:CrystalReportViewer ID="VisorCR1" runat="server"
AutoDataBind="true" />
</div>
</div>
<br />
<div class="contenedor-fila">
<div class="contenedor-columna">
<CR:CrystalReportViewer ID="VisorCR2" runat="server"
AutoDataBind="true" />
</div>
</div>
<br />
<div class="contenedor-fila">
<div class="contenedor-columna">
<CR:CrystalReportViewer ID="VisorCR3" runat="server"
AutoDataBind="true" />
</div>
</div>
<br />
<div class="contenedor-fila">
<div class="contenedor-columna">
121
<CR:CrystalReportViewer ID="VisorCR4" runat="server"
AutoDataBind="true" />
</div>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Panel>
</asp:Panel>
</asp:Content>
Seguimiento.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using DevExpress.Web.ASPxEditors;
using DevExpress.Web.ASPxClasses;
using DevExpress.Web.ASPxGridView;
using System.Data.SqlClient;
using System.Text;
using DevExpress.Web.ASPxUploadControl;
using System.IO;
using Microsoft.Reporting.WebForms;
using CrystalDecisions.CrystalReports.Engine;
public partial class Seguimiento : System.Web.UI.Page
{
#region Variables
private Conexion c = new Conexion();
private ConexionPMA cPMA = new ConexionPMA();
private DataSet codigo = new DataSet();
private DataSet sentencia = new DataSet();
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
LoadResources();
cPMA.CargaDropDownList("select NombrePda, PdaID from PMA_Pda
order by NombrePda", ddlPDA);
}
}
122
#region LoadResources
protected void LoadResources()
{
lblPDA.Text = "Programa de Desarrollo de Área (PDA):";
lblProyecto.Text = "Nombre del Proyecto:";
lblCodActividad.Text = "Código de la Actividad:";
lblActividad.Text = "Actividad:";
lblAreaProgramatica.Text = "Área Programática:";
lblIndicador.Text = "Indicador:";
lblTitle.Text = "Seguimiento de Indicadores";
}
#endregion
protected void ddlAreaProgramatica_SelectedIndexChanged(object sender,
EventArgs e)
{
cPMA.CargaDropDownList("select a.DescripcionActividad, a.ActividadId from
PMA_Resultados r, PMA_Productos p, PMA_Actividades a, PMA_Proyectos py,
PMA_CategoriaSector c where r.ResultadoID=p.ResultadoID and
p.ProductoID=a.ProductoID and a.CategoriaSectorID=c.CategoriaSectorID and
r.ProyectoID= py.ProyectoID and py.PdaID = " + ddlPDA.SelectedValue + " and
py.ProyectoID = " + ddlProyecto.SelectedValue, ddlActividad);
}
protected void ddlProyecto_SelectedIndexChanged(object sender, EventArgs
e)
{
ddlActividad.Items.Clear();
ddlIndicador.Items.Clear();
txtCodActividad.Text = "";
txtAreaProgramatica.Text = "";
cPMA.CargaDropDownList("select a.DescripcionActividad, a.ActividadId from
PMA_Resultados r, PMA_Productos p, PMA_Actividades a, PMA_Proyectos py,
PMA_CategoriaSector c where r.ResultadoID=p.ResultadoID and
p.ProductoID=a.ProductoID and a.CategoriaSectorID=c.CategoriaSectorID and
r.ProyectoID= py.ProyectoID and py.PdaID = " + ddlPDA.SelectedValue + " and
py.ProyectoID = " + ddlProyecto.SelectedValue, ddlActividad);
VisorCR1.Visible = false;
VisorCR2.Visible = false;
VisorCR3.Visible = false;
VisorCR4.Visible = false;
UpSeguimiento.Update();
}
protected void ddlActividad_SelectedIndexChanged(object sender, EventArgs
e)
{
codigo = cPMA.Consulta("select p.MarcoLogicoProducto,
a.MarcoLogicoActividad, c.CategoriaSector from PMA_Resultados r,
PMA_Productos p, PMA_Actividades a, PMA_Proyectos py,
123
PMA_CategoriaSector c where r.ResultadoID=p.ResultadoID and
p.ProductoID=a.ProductoID and a.CategoriaSectorID=c.CategoriaSectorID and
r.ProyectoID= py.ProyectoID and py.PdaID = " + ddlPDA.SelectedValue + " and
py.ProyectoID = " + ddlProyecto.SelectedValue + " and a.ActividadID = " +
ddlActividad.SelectedValue);
txtAreaProgramatica.Text =
codigo.Tables[0].Rows[0].ItemArray[2].ToString();
txtCodActividad.Text = "01." + "0" +
codigo.Tables[0].Rows[0].ItemArray[0].ToString() + ".0" +
codigo.Tables[0].Rows[0].ItemArray[1].ToString();
c.CargaDropDownList("select DescripcionIndicador, IndicadorID from
IND_Indicadores where ActividadID = " + ddlActividad.SelectedValue,
ddlIndicador);
}
protected void ddlPDA_SelectedIndexChanged(object sender, EventArgs e)
{
ddlActividad.Items.Clear();
ddlIndicador.Items.Clear();
txtCodActividad.Text = "";
txtAreaProgramatica.Text = "";
cPMA.CargaDropDownList("select distinct(NombreProyecto), ProyectoID
from PMA_Proyectos where PdaID = " + ddlPDA.SelectedValue, ddlProyecto);
VisorCR1.Visible = false;
VisorCR2.Visible = false;
VisorCR3.Visible = false;
VisorCR4.Visible = false;
UpSeguimiento.Update();
}
protected void ddlIndicador_SelectedIndexChanged(object sender, EventArgs
e)
{
BindGridIndicador();
BindGridMonitoreo();
try
{
#region Indicadores
var reporteIndicadores = new ReportDocument();
var rutaReporteI = Server.MapPath("Reportes\\GeneralIndicador.rpt");
reporteIndicadores.Load(rutaReporteI);
reporteIndicadores.SetDataSource(c.Consulta("select
p.MarcoLogicoProducto, c.MarcoLogicoActividad," +
"d.NombrePda," +
"py.NombreProyecto," +
"c.DescripcionActividad, " +
"cs.CategoriaSector, " +
"a.DescripcionIndicador, " +
"a.NivelCriticoIndicador, " +
"a.MetaFinalIndicador, " +
124
"a.FechaMetaFinal, " +
"SUBSTRING(convert(varchar,
b.FechaMonitoreo, 103), 1, 11) FechaMonitoreo, " +
"b.MetaMonitoreo , " +
"((MetaMonitoreo * 100)/ MetaFinalIndicador)
PorcentajeCumplimiento " +
"from INDDB..IND_Indicadores a," +
"INDDB..IND_MonitoreoIndicador b, " +
"PMADB2..PMA_Actividades c, " +
"PMADB2..PMA_Resultados r, " +
"PMADB2..PMA_Productos p," +
"PMADB2..PMA_Proyectos py," +
"PMADB2..PMA_CategoriaSector cs," +
"PMADB2..PMA_Pda d " +
"where a.IndicadorID = b.IndicadorID " +
"and a.ActividadID = c.ActividadID " +
"and r.ResultadoID = p.ResultadoID " +
"and p.ProductoID = c.ProductoID " +
"and c.CategoriaSectorID =
cs.CategoriaSectorID " +
"and r.ProyectoID = py.ProyectoID " +
"and py.PdaID = d.PdaID " +
"and py.PdaID = " + ddlPDA.SelectedValue +
"and py.ProyectoID = " +
ddlProyecto.SelectedValue +
"and a.ActividadID = " +
ddlActividad.SelectedValue +
"and a.IndicadorID = " +
ddlIndicador.SelectedValue).Tables[0]);
VisorCR1.ReportSource = reporteIndicadores;
VisorCR1.DisplayGroupTree = false;
#endregion
#region Metas
var reporte = new ReportDocument();
var rutaReporteP =
Server.MapPath("Reportes\\CumplimientoActividad.rpt");
reporte.Load(rutaReporteP);
reporte.SetDataSource(c.Consulta("select a.ActividadID, a.IndicadorID,
a.DescripcionIndicador, b.FechaMonitoreo, b.MetaMonitoreo , ((MetaMonitoreo *
100)/ MetaFinalIndicador) PorcentajeCumplimiento from IND_MonitoreoIndicador
b, IND_Indicadores a where a.IndicadorID = b.IndicadorID and a.ActividadID = " +
ddlActividad.SelectedValue).Tables[0]);
VisorCR2.ReportSource = reporte;
VisorCR2.DisplayGroupTree = false;
#endregion
#region Proyecto
var reporteProyecto = new ReportDocument();
var rutaReporteProyecto = Server.MapPath("Reportes\\Proyecto.rpt");
125
reporteProyecto.Load(rutaReporteProyecto);
reporteProyecto.SetDataSource(c.Consulta("select py.NombreProyecto
Proyecto," +
"((MetaMonitoreo * 100)/ MetaFinalIndicador)
PorcentajeCumplimiento " +
"from INDDB..IND_Indicadores a," +
"INDDB..IND_MonitoreoIndicador b, " +
"PMADB2..PMA_Actividades c, " +
"PMADB2..PMA_Resultados r, " +
"PMADB2..PMA_Productos p," +
"PMADB2..PMA_Proyectos py," +
"PMADB2..PMA_CategoriaSector cs," +
"PMADB2..PMA_Pda d " +
"where a.IndicadorID = b.IndicadorID " +
"and a.ActividadID = c.ActividadID " +
"and r.ResultadoID = p.ResultadoID " +
"and p.ProductoID = c.ProductoID " +
"and c.CategoriaSectorID = cs.CategoriaSectorID
"+
"and r.ProyectoID = py.ProyectoID " +
"and py.PdaID = d.PdaID " +
"and py.PdaID = " + ddlPDA.SelectedValue +
" and py.ProyectoID = " +
ddlProyecto.SelectedValue).Tables[0]);
VisorCR3.ReportSource = reporteProyecto;
VisorCR3.DisplayGroupTree = false;
#endregion
#region Proyectos
var reporteActividades = new ReportDocument();
var rutaReporteA =
Server.MapPath("Reportes\\CumplimientoProyectos.rpt");
reporteActividades.Load(rutaReporteA);
VisorCR4.ReportSource = reporteActividades;
VisorCR4.DisplayGroupTree = false;
#endregion
UpSeguimiento.Update();
c.conexion.Close();
}
catch (Exception ex)
{
throw ex;
}
finally
{
c.conexion.Close();
}
}
126
private void BindGridIndicador()
{
try
{
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand("select * from IND_Indicadores where
ActividadID = " + ddlActividad.SelectedValue + " and IndicadorID = " +
ddlIndicador.SelectedValue);
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
dapt.Fill(dsClaimCat);
c.conexion.Close();
}
catch (Exception ex)
{
throw ex;
}
finally
{
c.conexion.Close();
}
}
private void BindGridMonitoreo()
{
try
{
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand("select b.FechaMonitoreo, b.MetaMonitoreo ,
((MetaMonitoreo * 100)/ MetaFinalIndicador) Porcentaje from
IND_MonitoreoIndicador b, IND_Indicadores a where a.IndicadorID =
b.IndicadorID and a.IndicadorID =" + ddlIndicador.SelectedValue);
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
dapt.Fill(dsClaimCat);
c.conexion.Close();
}
catch (Exception ex)
{
throw ex;
127
}
finally
{
c.conexion.Close();
}
}
}
UnidadesIndicadores.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master"
AutoEventWireup="true"
CodeFile="UnidadesIndicadores.aspx.cs" Inherits="UnidadesIndicadores" %>
<%@ Register Assembly="DevExpress.Web.ASPxGridView.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %>
<%@ Register Assembly="DevExpress.Web.ASPxEditors.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dx" %>
<asp:Content ID="HeaderContent" ContentPlaceHolderID="HeadContent"
runat="Server">
</asp:Content>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent"
runat="Server">
<asp:Panel ID="pnlPageHeader" CssClass="page-header" runat="server">
<%--Título--%>
<asp:Panel ID="pnlTitle" CssClass="page-header" runat="server">
<h1>
<asp:Label ID="lblTitle" runat="server"></asp:Label></h1>
</asp:Panel>
</asp:Panel>
<br />
<asp:Panel ID="pnlFormSection" CssClass="form-section" runat="server">
<asp:Panel ID="pnlContainer" CssClass="container" runat="server"
ClientIDMode="Static">
<dx:ASPxGridView ID="ASPxGridViewUnidadesIndicadores"
ClientInstanceName="grid" KeyFieldName="EstadoID"
OnRowInserting="grid_RowInserting" Width="100%"
AutoGenerateColumns="False"
OnRowUpdating="grid_RowUpdating"
OnRowDeleting="grid_RowDeleting" runat="server">
<SettingsEditing Mode="Inline" />
<Columns>
<dx:GridViewCommandColumn VisibleIndex="0">
<EditButton Visible="True" Text="Actualizar">
</EditButton>
<NewButton Visible="True" Text="Crear">
128
</NewButton>
<DeleteButton Visible="True" Text="Eliminar">
</DeleteButton>
</dx:GridViewCommandColumn>
<dx:GridViewDataTextColumn Caption="Nemónico"
FieldName="NemonicoUnidad" VisibleIndex="1">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn Caption="Estado"
FieldName="DescripcionUnidad" VisibleIndex="2">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
</Columns>
</dx:ASPxGridView>
<asp:SqlDataSource ID="SqlDataSourceUnidadesIndicadores"
ConnectionString="<%$ ConnectionStrings:INDDBConnectionString %>"
runat="server" SelectCommand="select * from IND_Unidades">
</asp:SqlDataSource>
</asp:Panel>
</asp:Panel>
</asp:Content>
UnidadesIndicadores.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Text;
public partial class UnidadesIndicadores : System.Web.UI.Page
{
#region Variables
private Conexion c = new Conexion();
private ConexionPMA cPMA = new ConexionPMA();
private DataSet codigo = new DataSet();
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindGrid();
lblTitle.Text = "Unidades de Indicadores";
}
129
}
protected void grid_RowInserting(object sender,
DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("INSERT INTO [IND_Unidades] (NemonicoUnidad,
DescripcionUnidad) VALUES (");
sqlQuery.Append("'" + e.NewValues["NemonicoUnidad"].ToString() + "',");
sqlQuery.Append("'" + e.NewValues["DescripcionUnidad"].ToString() + "')");
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewUnidadesIndicadores.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
protected void grid_RowUpdating(object sender,
DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("UPDATE IND_Unidades SET ");
sqlQuery.Append("NemonicoUnidad = '" +
e.NewValues["NemonicoUnidad"].ToString() + "'");
sqlQuery.Append("DescripcionUnidad = '" +
e.NewValues["DescripcionUnidad"].ToString() + "'");
sqlQuery.Append(" WHERE UnidadID = " + e.Keys["UnidadID"].ToString());
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
130
if (i > 0)
{
e.Cancel = true;
ASPxGridViewUnidadesIndicadores.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
protected void grid_RowDeleting(object sender,
DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("DELETE FROM IND_Unidades");
sqlQuery.Append(" WHERE UnidadID = " + e.Keys["UnidadID"].ToString());
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewUnidadesIndicadores.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
private void BindGrid()
{
try
{
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand("select * from IND_Unidades");
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
dapt.Fill(dsClaimCat);
131
ASPxGridViewUnidadesIndicadores.DataSource = dsClaimCat;
ASPxGridViewUnidadesIndicadores.DataBind();
c.conexion.Close();
}
catch
{
Response.Write("Error");
}
}
}
Usuarios.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master"
AutoEventWireup="true" CodeFile="Usuarios.aspx.cs" Inherits="Usuarios" %>
<%@ Register Assembly="DevExpress.Web.ASPxGridView.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %>
<%@ Register Assembly="DevExpress.Web.ASPxEditors.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dx" %>
<asp:Content ID="HeaderContent" ContentPlaceHolderID="HeadContent"
runat="Server">
</asp:Content>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent"
runat="Server">
<asp:Panel ID="pnlFormSection" CssClass="form-section" runat="server">
<asp:Panel ID="pnlPageHeader" CssClass="page-header" runat="server">
<%--Título--%>
<asp:Panel ID="pnlTitle" CssClass="page-header" runat="server">
<h1>
<asp:Label ID="lblTitle" runat="server"></asp:Label></h1>
</asp:Panel>
</asp:Panel>
<br />
<dx:ASPxGridView ID="ASPxGridViewUsuarios" ClientInstanceName="grid"
KeyFieldName="UsuarioID"
OnRowInserting="grid_RowInserting" Width="100%"
AutoGenerateColumns="False"
OnRowUpdating="grid_RowUpdating"
OnRowDeleting="grid_RowDeleting" runat="server">
<SettingsEditing Mode="Inline" />
<Columns>
<dx:GridViewCommandColumn VisibleIndex="0">
<EditButton Visible="True" Text="Actualizar">
</EditButton>
<NewButton Visible="True" Text="Crear">
132
</NewButton>
<DeleteButton Visible="True" Text="Eliminar">
</DeleteButton>
</dx:GridViewCommandColumn>
<dx:GridViewDataComboBoxColumn Caption="Perfil"
FieldName="PerfilID" ShowInCustomizationForm="True"
VisibleIndex="1">
<PropertiesComboBox DataSourceID="SqlDataSourcePerfiles"
ValueType="System.Int32"
ValueField="PerfilID" TextField="NombrePerfil" Spacing="0">
</PropertiesComboBox>
</dx:GridViewDataComboBoxColumn>
<dx:GridViewDataComboBoxColumn Caption="Cargo"
FieldName="CargoID" ShowInCustomizationForm="True"
VisibleIndex="2">
<PropertiesComboBox DataSourceID="SqlDataSourceCargos"
ValueType="System.Int32"
ValueField="CargoID" TextField="NombreCargo" Spacing="0">
</PropertiesComboBox>
</dx:GridViewDataComboBoxColumn>
<dx:GridViewDataTextColumn FieldName="NombreUsuario"
VisibleIndex="3">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="Usuario" VisibleIndex="4">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="Clave" VisibleIndex="5">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
</Columns>
</dx:ASPxGridView>
<asp:SqlDataSource ID="SqlDataSourceUsuarios" ConnectionString="<%$
ConnectionStrings:INDDBConnectionString %>"
runat="server" SelectCommand="select * from IND_Usuarios">
</asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSourceCargos" ConnectionString="<%$
ConnectionStrings:INDDBConnectionString %>"
runat="server" SelectCommand="select * from IND_Cargos">
</asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSourcePerfiles" ConnectionString="<%$
ConnectionStrings:INDDBConnectionString %>"
runat="server" SelectCommand="select * from IND_Perfiles">
</asp:SqlDataSource>
</asp:Panel>
</asp:Content>
Usuarios.aspx.cs
using System;
133
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Text;
using System.Data.SqlClient;
public partial class Usuarios : System.Web.UI.Page
{
#region Variables
private Conexion c = new Conexion();
private ConexionPMA cPMA = new ConexionPMA();
private DataSet codigo = new DataSet();
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindGrid();
lblTitle.Text = "Usuarios";
}
}
protected void grid_RowInserting(object sender,
DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("INSERT INTO [IND_Usuarios] ([PerfilID], [CargoID],
[NombreUsuario], [Usuario], [Clave]) VALUES (");
sqlQuery.Append(e.NewValues["PerfilID"].ToString() + ",");
sqlQuery.Append(e.NewValues["CargoID"].ToString() + ",");
sqlQuery.Append("'" + e.NewValues["NombreUsuario"].ToString() + "', ");
sqlQuery.Append("'" + e.NewValues["Usuario"].ToString() + "', ");
sqlQuery.Append("'" + e.NewValues["Clave"].ToString() + "')");
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewUsuarios.CancelEdit();
134
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
protected void grid_RowUpdating(object sender,
DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("UPDATE IND_Usuarios SET ");
sqlQuery.Append("PerfilID = " + e.NewValues["PerfilID"].ToString() + ",");
sqlQuery.Append("CargoID = " + e.NewValues["CargoID"].ToString() + ",");
sqlQuery.Append("NombreUsuario = '" +
e.NewValues["NombreUsuario"].ToString() + "', ");
sqlQuery.Append("Usuario = '" + e.NewValues["Usuario"].ToString() + "', ");
sqlQuery.Append("Clave = '" + e.NewValues["Clave"].ToString() + "'");
sqlQuery.Append(" WHERE UsuarioID= " + e.Keys["UsuarioID"].ToString());
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewUsuarios.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
protected void grid_RowDeleting(object sender,
DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
{
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.Append("DELETE FROM IND_Usuarios");
sqlQuery.Append(" WHERE UsuarioID = " + e.Keys["UsuarioID"].ToString());
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand(sqlQuery.ToString());
cmd.Connection = c.conexion;
135
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
e.Cancel = true;
ASPxGridViewUsuarios.CancelEdit();
}
c.conexion.Close();
e.Cancel = true;
BindGrid();
}
private void BindGrid()
{
try
{
c.conexion.Open();
SqlCommand cmd;
cmd = new SqlCommand("select * from IND_Usuarios");
cmd.Connection = c.conexion;
DataSet dsClaimCat = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(cmd);
dapt.Fill(dsClaimCat);
ASPxGridViewUsuarios.DataSource = dsClaimCat;
ASPxGridViewUsuarios.DataBind();
c.conexion.Close();
}
catch
{
Response.Write("Error");
}
}
}
2.9 Web.config
Ilustración 46 Cadena de conexión
En este archivo se incluye la cadena de conexión a la base de datos. Su
contenido es el siguiente:
136
<?xml version="1.0"?>
<!-For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<configSections>
<sectionGroup name="devExpress">
<section name="settings"
type="DevExpress.Web.ASPxClasses.SettingsConfigurationSection,
DevExpress.Web.v11.1, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=b88d1754d700e49a" requirePermission="false"/>
<section name="compression"
type="DevExpress.Web.ASPxClasses.CompressionConfigurationSection,
DevExpress.Web.v11.1, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=b88d1754d700e49a" requirePermission="false"/>
<section name="themes"
type="DevExpress.Web.ASPxClasses.ThemesConfigurationSection,
DevExpress.Web.v11.1, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=b88d1754d700e49a" requirePermission="false"/>
<section name="errors"
type="DevExpress.Web.ASPxClasses.ErrorsConfigurationSection,
DevExpress.Web.v11.1, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=b88d1754d700e49a" requirePermission="false"/>
</sectionGroup>
<sectionGroup name="businessObjects">
<sectionGroup name="crystalReports">
<section name="rptBuildProvider"
type="CrystalDecisions.Shared.RptBuildProviderHandler,
CrystalDecisions.Shared, Version=13.0.2000.0, Culture=neutral,
PublicKeyToken=692fbea5521e1304, Custom=null"/>
</sectionGroup>
</sectionGroup>
</configSections>
<appSettings>
<add key="CrystalImageCleaner-AutoStart" value="true"/>
<add key="CrystalImageCleaner-Sleep" value="60000"/>
<add key="CrystalImageCleaner-Age" value="120000"/>
</appSettings>
<connectionStrings>
<add name="INDDBConnectionString"
connectionString="Server=localhost;Database=INDDB;Integrated Security=SSPI;"
providerName="System.Data.SqlClient"/>
<add name="PMADBConnectionString"
connectionString="Server=localhost;Database=PMADB2;Integrated
Security=SSPI;" providerName="System.Data.SqlClient"/>
<add name="ApplicationServices" connectionString="data
source=.\SQLEXPRESS;Integrated
137
Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User
Instance=true" providerName="System.Data.SqlClient"/>
<add name="INDDBConnectionStringManual" connectionString="Data
Source=HP-PC;Initial Catalog=INDDB;Integrated Security=True"
providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
<pages validateRequest="false" clientIDMode="AutoID">
<namespaces>
<add namespace="System.Collections.Generic"/>
</namespaces>
<controls>
<add tagPrefix="dx" namespace="DevExpress.Web.ASPxClasses"
assembly="DevExpress.Web.v11.1, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=b88d1754d700e49a"/>
<add tagPrefix="dx" namespace="DevExpress.Web.ASPxCallback"
assembly="DevExpress.Web.v11.1, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=b88d1754d700e49a"/>
<add tagPrefix="dx" namespace="DevExpress.Web.ASPxCallbackPanel"
assembly="DevExpress.Web.v11.1, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=b88d1754d700e49a"/>
<add tagPrefix="dx" namespace="DevExpress.Web.ASPxDataView"
assembly="DevExpress.Web.v11.1, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=b88d1754d700e49a"/>
<add tagPrefix="dx" namespace="DevExpress.Web.ASPxMenu"
assembly="DevExpress.Web.v11.1, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=b88d1754d700e49a"/>
<add tagPrefix="dx" namespace="DevExpress.Web.ASPxNavBar"
assembly="DevExpress.Web.v11.1, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=b88d1754d700e49a"/>
<add tagPrefix="dx" namespace="DevExpress.Web.ASPxPanel"
assembly="DevExpress.Web.v11.1, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=b88d1754d700e49a"/>
<add tagPrefix="dx" namespace="DevExpress.Web.ASPxPopupControl"
assembly="DevExpress.Web.v11.1, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=b88d1754d700e49a"/>
<add tagPrefix="dx" namespace="DevExpress.Web.ASPxRoundPanel"
assembly="DevExpress.Web.v11.1, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=b88d1754d700e49a"/>
<add tagPrefix="dx" namespace="DevExpress.Web.ASPxTabControl"
assembly="DevExpress.Web.v11.1, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=b88d1754d700e49a"/>
<add tagPrefix="dx" namespace="DevExpress.Web.ASPxEditors"
assembly="DevExpress.Web.ASPxEditors.v11.1, Version=11.1.4.0,
Culture=neutral, PublicKeyToken=b88d1754d700e49a"/>
<add tagPrefix="dx" namespace="DevExpress.Web.ASPxGridView"
assembly="DevExpress.Web.ASPxGridView.v11.1, Version=11.1.4.0,
Culture=neutral, PublicKeyToken=b88d1754d700e49a"/>
138
<add tagPrefix="dx" namespace="DevExpress.Web.ASPxGridView.Export"
assembly="DevExpress.Web.ASPxGridView.v11.1.Export, Version=11.1.4.0,
Culture=neutral, PublicKeyToken=b88d1754d700e49a"/>
<add tagPrefix="dx" namespace="DevExpress.Web.ASPxGridLookup"
assembly="DevExpress.Web.ASPxGridView.v11.1, Version=11.1.4.0,
Culture=neutral, PublicKeyToken=b88d1754d700e49a"/>
<add tagPrefix="dx" namespace="DevExpress.Xpo"
assembly="DevExpress.Xpo.v11.1.Web, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=b88d1754d700e49a"/>
<add tagPrefix="CR" namespace="CrystalDecisions.Web"
assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral,
PublicKeyToken=692fbea5521e1304"/>
</controls>
</pages>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="DevExpress.Web.ASPxGridView.v11.1, Version=11.1.4.0,
Culture=neutral, PublicKeyToken=B88D1754D700E49A"/>
<add assembly="DevExpress.Web.ASPxEditors.v11.1, Version=11.1.4.0,
Culture=neutral, PublicKeyToken=B88D1754D700E49A"/>
<add assembly="DevExpress.Web.v11.1, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=B88D1754D700E49A"/>
<add assembly="DevExpress.Data.v11.1, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=B88D1754D700E49A"/>
<add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Design, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="DevExpress.CodeParser.v11.1, Version=11.1.4.0,
Culture=neutral, PublicKeyToken=b88d1754d700e49a"/>
<add assembly="DevExpress.Xpo.v11.1, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=b88d1754d700e49a"/>
<add assembly="DevExpress.Xpo.v11.1.Web, Version=11.1.4.0,
Culture=neutral, PublicKeyToken=b88d1754d700e49a"/>
<add assembly="DevExpress.Web.ASPxGridView.v11.1.Export,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"/>
<add assembly="DevExpress.Web.ASPxThemes.v11.1, Version=11.1.4.0,
Culture=neutral, PublicKeyToken=b88d1754d700e49a"/>
<add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35"/>
<add assembly="DevExpress.XtraCharts.v11.1.Web, Version=11.1.4.0,
Culture=neutral, PublicKeyToken=B88D1754D700E49A"/>
<add assembly="DevExpress.XtraCharts.v11.1, Version=11.1.4.0,
Culture=neutral, PublicKeyToken=B88D1754D700E49A"/>
<add assembly="DevExpress.Charts.v11.1.Core, Version=11.1.4.0,
Culture=neutral, PublicKeyToken=B88D1754D700E49A"/>
<add assembly="DevExpress.Utils.v11.1, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=B88D1754D700E49A"/>
<add assembly="DevExpress.XtraEditors.v11.1, Version=11.1.4.0,
Culture=neutral, PublicKeyToken=B88D1754D700E49A"/>
139
<add assembly="DevExpress.Printing.v11.1.Core, Version=11.1.4.0,
Culture=neutral, PublicKeyToken=B88D1754D700E49A"/>
<add assembly="DevExpress.XtraReports.v11.1.Web, Version=11.1.4.0,
Culture=neutral, PublicKeyToken=B88D1754D700E49A"/>
<add assembly="DevExpress.XtraReports.v11.1, Version=11.1.4.0,
Culture=neutral, PublicKeyToken=B88D1754D700E49A"/>
<add assembly="CrystalDecisions.Web, Version=13.0.2000.0,
Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.Shared, Version=13.0.2000.0,
Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="log4net, Version=1.2.10.0, Culture=neutral,
PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.ReportSource, Version=13.0.2000.0,
Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.ReportAppServer.Controllers,
Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.ReportAppServer.DataDefModel,
Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.CrystalReports.Engine,
Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.Web, Version=13.0.2000.0,
Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
<add assembly="CrystalDecisions.ReportAppServer.ClientDoc,
Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
<add assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0,
Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="Microsoft.ReportViewer.Common, Version=10.0.0.0,
Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="Microsoft.Build.Framework, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Management, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="DevExpress.Web.ASPxGauges.v11.1, Version=11.1.4.0,
Culture=neutral, PublicKeyToken=B88D1754D700E49A"/>
<add assembly="DevExpress.XtraGauges.v11.1.Core, Version=11.1.4.0,
Culture=neutral, PublicKeyToken=B88D1754D700E49A"/>
<add assembly="DevExpress.XtraGauges.v11.1.Presets, Version=11.1.4.0,
Culture=neutral, PublicKeyToken=B88D1754D700E49A"/>
</assemblies>
<buildProviders>
<add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider,
Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"/>
<add extension=".rpt"
type="CrystalDecisions.Web.Compilation.RptBuildProvider, CrystalDecisions.Web,
Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
</buildProviders>
</compilation>
<authentication mode="Forms">
<forms loginUrl="~/Account/Login2.aspx" timeout="20"/>
140
</authentication>
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="ApplicationServices" enablePasswordRetrieval="false"
enablePasswordReset="true" requiresQuestionAndAnswer="false"
requiresUniqueEmail="false" maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10" applicationName="/"/>
</providers>
</membership>
<profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider"
type="System.Web.Profile.SqlProfileProvider"
connectionStringName="ApplicationServices" applicationName="/"/>
</providers>
</profile>
<roleManager enabled="false">
<providers>
<clear/>
<add name="AspNetSqlRoleProvider"
type="System.Web.Security.SqlRoleProvider"
connectionStringName="ApplicationServices" applicationName="/"/>
<add name="AspNetWindowsTokenRoleProvider"
type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/"/>
</providers>
</roleManager>
<httpModules>
<add type="DevExpress.Web.ASPxClasses.ASPxHttpHandlerModule,
DevExpress.Web.v11.1, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule"/>
</httpModules>
<httpHandlers>
<add path="ASPxUploadProgressHandlerPage.ashx" verb="GET,POST"
type="DevExpress.Web.ASPxUploadControl.ASPxUploadProgressHttpHandler,
DevExpress.Web.v11.1, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=b88d1754d700e49a" validate="false"/>
<add path="CrystalImageHandler.aspx" verb="GET"
type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web,
Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
<add path="Reserved.ReportViewerWebControl.axd" verb="*"
type="Microsoft.Reporting.WebForms.HttpHandler,
Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a" validate="false"/>
</httpHandlers>
</system.web>
141
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add type="DevExpress.Web.ASPxClasses.ASPxHttpHandlerModule,
DevExpress.Web.v11.1, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule"/>
</modules>
<validation validateIntegratedModeConfiguration="false"/>
<handlers>
<add
type="DevExpress.Web.ASPxUploadControl.ASPxUploadProgressHttpHandler,
DevExpress.Web.v11.1, Version=11.1.4.0, Culture=neutral,
PublicKeyToken=b88d1754d700e49a" verb="GET,POST"
path="ASPxUploadProgressHandlerPage.ashx"
name="ASPxUploadProgressHandler" preCondition="integratedMode"/>
<add name="CrystalImageHandler.aspx_GET" verb="GET"
path="CrystalImageHandler.aspx"
type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web,
Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"
preCondition="integratedMode"/>
<add name="ReportViewerWebControlHandler"
preCondition="integratedMode" verb="*"
path="Reserved.ReportViewerWebControl.axd"
type="Microsoft.Reporting.WebForms.HttpHandler,
Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"/>
</handlers>
</system.webServer>
<devExpress>
<settings rightToLeft="false"/>
<compression enableHtmlCompression="false"
enableCallbackCompression="true" enableResourceCompression="true"
enableResourceMerging="false"/>
<themes enableThemesAssembly="true"/>
<errors callbackErrorRedirectUrl=""/>
</devExpress>
<businessObjects>
<crystalReports>
<rptBuildProvider>
<add embedRptInResource="true"/>
</rptBuildProvider>
</crystalReports>
</businessObjects>
</configuration>
2.10 Site.master
El sitio web utiliza Master Page, cuyo contenido es el siguiente:
142
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Site.master.cs"
Inherits="SiteMaster" %>
<%@ Register Assembly="DevExpress.Web.ASPxGauges.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxGauges" TagPrefix="dx" %>
<%@ Register Assembly="DevExpress.Web.ASPxGauges.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxGauges.Gauges" TagPrefix="dx" %>
<%@ Register Assembly="DevExpress.Web.ASPxGauges.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxGauges.Gauges.Linear" TagPrefix="dx"
%>
<%@ Register Assembly="DevExpress.Web.ASPxGauges.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxGauges.Gauges.Circular" TagPrefix="dx"
%>
<%@ Register Assembly="DevExpress.Web.ASPxGauges.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxGauges.Gauges.State" TagPrefix="dx"
%>
<%@ Register Assembly="DevExpress.Web.ASPxGauges.v11.1,
Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxGauges.Gauges.Digital" TagPrefix="dx"
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head id="Head1" runat="server">
<%--Estilos --%>
<link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
<link href="~/Styles/menu.css" rel="stylesheet" type="text/css" />
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<%--Toggles the icon ?--%>
<script type="text/javascript">
$(document).ready(function () {
$('.toggle-login').click(function () {
$(this).next('#login-content').slideToggle();
$(this).toggleClass('active');
if ($(this).hasClass('active')) $(this).find('span').html('▲')
else $(this).find('span').html('▼')
})
});
</script>
<%--Handling Menu and items--%>
<script type="text/javascript">
$(document).ready(function () {
143
$(".mainmenu").click(function () {
var X = $(this).attr('id');
if (X == 1) {
$(".submenu").hide();
$(this).attr('id', '0');
}
else {
$(".submenu").show();
$(this).attr('id', '1');
}
});
//Mouse click on sub menus
$(".submenu").mouseup(function () {
return false
});
//Mouse click on my account link
$(".mainmenu").mouseup(function () {
return false
});
//On Document Click
$(document).mouseup(function () {
$(".submenu").hide();
$(".mainmenu").attr('id', '');
});
});
</script>
<title></title>
<asp:ContentPlaceHolder ID="HeadContent" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="Form1" runat="server">
<div class="page">
<div class="header">
<div class="title">
<img alt="" src="Images/logo.jpg" />
</div>
<div class="loginDisplay">
<asp:LoginView ID="HeadLoginView" runat="server"
EnableViewState="false">
<AnonymousTemplate>
<asp:LinkButton ID="lnkLogOut" runat="server" Text="Cerrar
Sesión" OnClick="lnkLogOut_Click"></asp:LinkButton>
</AnonymousTemplate>
<LoggedInTemplate>
[
144
<asp:LoginStatus ID="HeadLoginStatus" runat="server"
LogoutAction="Redirect" LogoutText="Log Out"
LogoutPageUrl="~/" />
]
</LoggedInTemplate>
</asp:LoginView>
</div>
<div class="clear hideSkiplink">
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu"
EnableViewState="false"
IncludeStyleBlock="false" Orientation="Horizontal">
</asp:Menu>
</div>
<div class="main">
<asp:ContentPlaceHolder ID="MainContent" runat="server" />
</div>
<div class="clear">
</div>
</div>
<div class="footer">
</div>
</form>
</body>
</html>
Site.master.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class SiteMaster : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
}
Menu();
}
protected void lnkLogOut_Click(object sender, EventArgs e)
{
Session["Perfil"] = null;
145
Response.Redirect("Login2.aspx");
}
protected void Menu()
{
MenuItem perfiles = new MenuItem("Perfiles", "", "", "~/Perfiles.aspx");
MenuItem usuarios = new MenuItem("Usuarios", "", "", "~/Usuarios.aspx");
MenuItem frecuencias = new MenuItem("Frecuencias", "", "",
"~/Frecuencias.aspx");
MenuItem estados = new MenuItem("Estado de Indicadores", "", "",
"~/EstadosIndicadores.aspx");
MenuItem unidades = new MenuItem("Unidades de Indicadores", "", "",
"~/UnidadesIndicadores.aspx");
MenuItem ingresod = new MenuItem("Ingreso de Indicadores", "", "",
"~/IngresoDatos.aspx");
MenuItem ingresom = new MenuItem("Monitoreo de Indicadores", "", "",
"~/IngresoMonitoreo.aspx");
MenuItem seguimiento = new MenuItem("Seguimiento de Indicadores", "", "",
"~/Seguimiento.aspx");
MenuItem cargos = new MenuItem("Cargos", "", "", "~/Cargos.aspx");
MenuItem pantallas = new MenuItem("Pantallas", "", "", "~/Pantallas.aspx");
string tipo = "";
if (Session["Perfil"] != null)
tipo = (string)Session["Perfil"];
else
Response.Redirect("Login2.aspx");
switch (tipo)
{
case "1":
NavigationMenu.Items.Add(perfiles);
NavigationMenu.Items.Add(usuarios);
NavigationMenu.Items.Add(frecuencias);
NavigationMenu.Items.Add(estados);
NavigationMenu.Items.Add(unidades);
NavigationMenu.Items.Add(ingresod);
NavigationMenu.Items.Add(ingresom);
NavigationMenu.Items.Add(seguimiento);
NavigationMenu.Items.Add(cargos);
NavigationMenu.Items.Add(pantallas);
break;
case "2":
NavigationMenu.Items.Add(usuarios);
NavigationMenu.Items.Add(frecuencias);
NavigationMenu.Items.Add(estados);
NavigationMenu.Items.Add(unidades);
NavigationMenu.Items.Add(ingresod);
NavigationMenu.Items.Add(ingresom);
146
NavigationMenu.Items.Add(seguimiento);
NavigationMenu.Items.Add(cargos);
break;
case "3":
NavigationMenu.Items.Add(frecuencias);
NavigationMenu.Items.Add(estados);
NavigationMenu.Items.Add(unidades);
NavigationMenu.Items.Add(ingresod);
NavigationMenu.Items.Add(ingresom);
NavigationMenu.Items.Add(seguimiento);
break;
default:
NavigationMenu.Items.Add(perfiles);
//NavigationMenu.Items.Add(aperfiles);
NavigationMenu.Items.Add(usuarios);
NavigationMenu.Items.Add(frecuencias);
NavigationMenu.Items.Add(estados);
NavigationMenu.Items.Add(unidades);
NavigationMenu.Items.Add(ingresod);
NavigationMenu.Items.Add(ingresom);
NavigationMenu.Items.Add(seguimiento);
NavigationMenu.Items.Add(cargos);
break;
}
}
}
147
MANUAL DE USUARIO
APLICACIÓN WEB PARA EL MONITOREO DE INDICADORES DE
DESARROLLO ECONÓMICO PARA LAS COMUNIDADES UBICADAS EN
LOS CANTONES RIOBAMBA, GUANO Y PELILEO DE LA PROVINCIA DE
CHIMBORAZO
148
MANUAL DE USUARIO
1. INTRODUCCIÓN
El objetivo principal de este manual es explicar de manera detallada el
funcionamiento de la Aplicación Web a los usuarios para que sirva de guía.
Este documento brinda el soporte necesario para aportar un alto conocimiento
para el manejo de los módulos y todas sus opciones, con lo que se logra
optimizar el tiempo de trabajo.
2. MÓDULOS DEL SISTEMA
La Aplicación Web está conformada por dos modulos principales que abarcan
la administración y la automatización de los indicadores de desarrollo
económico.
Dentro del módulo de Administración se da mantenimiento a las principales
entidades que intervienen en la aplicación.
Dentro del módulo de Registro y Seguimiento se detalla el ingreso de los
indicadores de desarrollo económico.
En la sección final se presenta los reportes los cuales constan de tablas y
gráficos estadísticos para una mejor comprensión de la información.
3. Requerimientos de Hardware
Procesador: Core 2 Duo o superior
Memoria: 2 GB RAM mínimo recomendado
Disco duro: 40 GB Disponibles en disco
Monitor: SVGA 1024 * 968
Tarjeta de red: 10 Mbps o superior
149
4. DESCRIPCIÓN DE FUNCIONALIDAD DEL SISTEMA
La pantalla de ingreso al sistema es la siguiente:
Ilustración 47 Página de Ingreso al Sistema
Elaborado por: El Tesista
A cada usuario se le asignará una clave para acceder al sistema, se ingresa un
usuario y una contraseña para en caso de una autenticación exitosa hacer uso de
las opciones del sistema de acuerdo al perfil asignado y rol asignado.
En caso de no ingresar correctamente el usuario y/o contraseña se despliega el
siguiente mensaje:
Ilustración 48 Usuario y/o contraseña incorrecta
Para encriptar la contraseña se utiliza una criptografía simétrica donde se usa la
misma clave para cifrar y descifrar mensajes. La ventaja de usar un algoritmo
simétrico es la imposibilidad de reconstruir la cadena original a partir del
resultado, y también la imposibilidad de encontrar dos cadenas de texto que
generen el mismo resultado.
150
4.1 Página principal
Una vez ingresados los datos correctos se debe hacer clic en el botón Ingresar
con lo cual podemos visualizar la siguiente pantalla:
Ilustración 49 Pantalla Principal
4.2 Menú
Ilustración 50 Menú Sistema
4.3 Administración
Este módulo permite gestionar todos los privilegios de los usuarios que
intervienen en la ONG.
Existe una opción para cambiar clave, la cual pide ingresar la contraseña anterior.
En la opción de usuarios que está disponible solo para el administrador del
sistema se puede ingresar los datos de un nuevo empleado y modificar los
mismos.
151
4.3.1 Administración Perfiles de Usuario
Ilustración 51 Página de Administración de Perfiles
Elaborado por: El Tesista
Se despliega al hacer clic en Perfiles en el menú principal. Permite administrar los
privilegios de los usuarios, permitiéndole agregar o quitar las opciones y acciones
que tiene ya definido el perfil que se seleccione, al hacer clic sobre los vínculos
Actualizar, Crear o Eliminar respectivamente. Si es necesario se puede añadir un
nuevo perfil de usuario y asignar privilegios. Ésta opción solo debe estar
disponible para el Administrador.
4.4 Mantenimiento
Permitir dar mantenimiento a las principales entidades del sistema, es decir
actualizar datos o ingresar datos de una nueva entidad como por ejemplo
unidades.
4.4.1 Mantenimiento Perfiles
Ilustración 52 Página de Mantenimiento de Perfiles
Elaborado por: El Tesista
Se maneja los perfiles del sistema mediante los vínculos Actualizar, Crear o
Eliminar.
152
4.4.2 Mantenimiento de Usuarios
Ilustración 53 Página de Mantenimiento de Usuarios
Elaborado por: El Tesista
Se maneja los usuarios del sistema mediante los vínculos Actualizar, Crear o
Eliminar. En el caso de hacer clic en Crear se debe llenar el perfil y cargo al que
pertenece el usuario.
4.4.3 Mantenimiento de Frecuencias
Ilustración 54 Página de Mantenimiento de Frecuencias
Elaborado por: El Tesista
Se maneja las frecuencias de los indicadores de desarrollo económico mediante
los vínculos Actualizar, Crear o Eliminar.
4.4.4 Mantenimiento de Estado
Ilustración 55 Página de Mantenimiento de Estado
Elaborado por: El Tesista
Se maneja los estados de los Indicadores del sistema mediante los vínculos
Actualizar, Crear o Eliminar.
153
4.4.5 Mantenimiento de Unidades
Ilustración 56 Página de Mantenimiento de Unidades
Elaborado por: El Tesista
Se maneja las unidades de medida de los indicadores de desarrollo económico
mediante los vínculos Actualizar, Crear o Eliminar.
4.4.6 Mantenimiento de Cargos
Ilustración 57 Página de Mantenimiento de Cargos
Elaborado por: El Tesista
Se maneja los cargos que tienen los usuarios del sistema mediante los vínculos
Actualizar, Crear o Eliminar.
4.4.7 Mantenimiento de Pantallas
Ilustración 58 Página de Mantenimiento de Pantallas
Elaborado por: El Tesista
154
Se maneja las pantallas que tendrán asignadas los perfiles de usuario del sistema
mediante los vínculos Actualizar, Crear o Eliminar.
4.5 Registro
Se lleva el seguimiento desde la creación del indicador pasando por su registro
hasta su fecha de finalización.
Con esto ayudamos a los usuarios de acuerdo a su correspondiente perfil a
mantener un control sobre los indicadores.
4.5.1 Ingreso de Indicadores
Ilustración 59 Página de Ingreso de Indicadores
Elaborado por: El Tesista
Se crea el indicador indicando el PDA al cual va a pertenecer, el Nombre del
Proyecto, la Actividad.
Al ingresar los datos anteriores se despliegan el Área Programática y el Código de
la Actividad.
A continuación se puede ingresar la descripción, unidades, línea base, meta final,
nivel crítico, fecha para meta final, frecuencia y evidencias.
Una vez ingresados los datos hacer clic en el vínculo Update para guardar en la
base.
4.5.2 Monitoreo de Indicadores
Ilustración 60 Página de Monitoreo de Indicadores
155
Elaborado por: El Tesista
En esta pantalla se registra la meta que se ha obtenido con respecto al indicador.
El número de veces que se realice este registro se delimitó al momento de
ingresar la frecuencia del indicador (Ingreso de Indicadores).
4.6 Reportes
Dentro de cada reporte se visualiza la información de acuerdo al PDA, Proyecto,
Actividad e Indicador seleccionado.
Adicionalmente a cada reporte se le adjuntará un gráfico para mejor comprensión
del usuario.
Ilustración 61 Página de Seguimiento de Indicadores
Elaborado por: El Tesista
156
4.6.1 Seguimiento y Resultados
Este reporte permite visualizar los datos generales del indicador así como gráficos
que describen su comportamiento.
Ilustración 62 Seguimiento y Resultados
Elaborado por: El Tesista
157
4.6.2 Cumplimiento Actividad
Indica el porcentaje de cumplimiento de la actividad que se alimenta de los
porcentajes de cumplimiento de cada indicador.
Ilustración 63 Cumplimiento Actividad
Elaborado por: El Tesista
158
4.6.3 Cumplimiento del Proyecto
Indica el porcentaje de cumplimiento del proyecto en base a los porcentajes de
cumplimiento de cada actividad.
Ilustración 64 Cumplimiento Proyecto
Elaborado por: El Tesista
159
4.6.4 Cumplimiento del PDA
Indica el porcentaje de cumplimiento del PDA en base a los porcentajes de
cumplimiento de cada proyecto.
Ilustración 65 Cumplimiento PDA
Elaborado por: El Tesista
4.6.5 Cerrar Sesión
Para salir del sistema hacer clic en el botón Cerrar Sesión. Luego se mostrará la
página de Ingreso al sistema.
Ilustración 66 Cerrar Sesión
Elaborado por: El Tesista
160
Descargar