UNIVERSIDAD DE GUAYAQUIL
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en SistemasComputacionales
“Desarrollo de una Herramienta CAAT LUPA 1.0”
Previo a la Obtención del Título de:
INGENIERO EN SISTEMAS COMPUTACIONALES
Autores:
DANNY HUANCAYO
ROMULO RODRIGUEZ
PEDRO VELEZ
GUAYAQUIL-ECUADOR
Año: 2008
AGRADECIMIENTO
EN PRIMER LUGAR
QUIEREMOS AGRADECER A
DIOS POR HABERNOS DADO
LA VIDA Y LA CAPACIDAD
PARA LOGRAR NUESTRAS
METAS.
A NUESTROS PADRES QUE
SON PILARES
FUNDAMENTALES, GRACIAS
POR SU APOYO, SU AMOR Y
LA PACIENCIA QUE NOS
BRINDARON PARA LOGRAR
ESTE OBJETIVO.
DEDICATORIA
ESTE TRABAJO QUE CON
TANTO ESFUERZO QUE LO
HEMOS REALIZADO SE LO
QUIEREMOS DEDICAR EN
PRIMIER LUGAR A DIOS,
DESPUES A NUESTROS
PADRES QUE SIEMPRE
ESTUVIERON A NUESTRO
LADO APOYANDONOS Y
ACONSEJANDONOS CADA
DIA, A NUESTROS
COMPAÑEROS YA QUE CON
ELLOS ME APOYÉ CADA DIA
CUANDO CREIA QUE NO
PODIA.
DECLARACIÓN EXPRESA
“La autoría de la tesis de grado corresponde exclusivamente al
suscrito(s), perteneciendo a la Universidad de Guayaquil los derechos
que generen la aplicación de la misma”
(Reglamento de Graduación de la Carrera de Ingeniería en sistemas
Computacionales, Art. 26)
Vélez Duque Pedro Iván
Huancayo López Danny
Rodríguez Quintana Rómulo Eduardo
RESUMEN
La herramienta CAAT’s fue desarrollada para proveer unimportante aporte a los auditores que desconocen que hay enel mercado herramientas que realizar operación propias de suactividad y por ende se diseño e implemento un software quepuedan realizar pruebas y recolección de evidencia de datosalmacenados en cualquier Base de Datos y realizaroperaciones especificas como operaciones en columnasvirtuales, filtros de consulta, además de estratificación dedatos, duplicidad de registros y salto de secuencia y ademacuenta con un una extensión de archivos especifica y puedeser utilizar solo por la aplicación. Esta aplicación fue diseñadausando la arquitectura cliente/servidor de plataforma .Netespecíficamente Visual Basic como herramienta de desarrolloy complementariamente Spread Windows Forms para podervisualizar los datos y API de Windows que me permitanrealizar la operación de importación de datos. Para poderrealizar interactuar con el software debemos crear un cliente,luego una base de datos, luego importamos un archivo o basede datos donde iremos mostrando las tablas, campos einformación contenida ya sea que este en el equipo local ytambién en un ambiente de red. Para el desarrollo de nuestraaplicación hemos considerado los siguientes requerimientosde tales opciones que deben brindar la aplicación que estetenga como Sistema Operativo Windows XP o posterior ybases de datos y archivos compatibles para las pruebas.
INDICE GENERAL
AGRADECIMIENTO IDEDICATORIA IITRIBUNAL DE GRADUACIÓN VIIDECLARACIÓN EXPRESA VIIIRESUMEN IXINDICE GENERAL X
INDICE DE CONTENIDO
PARTE ICAPÍTULO 1
INTRODUCCIÓN 11.1 ANTECEDENTES 21.2 PROBLEMÁTICA 31.3 SOLUCIÓN DE LA PROBLEMÁTICA 31.4 MISIÓN 41.5 VISIÓN 41.6 OBJETIVOS GENERALES 51.7 OBJETIVOS ESPECÍFICOS 51.8 ALCANCES 61.9 VENTAJAS 71.10 DESVENTAJAS 71.11 METODOLOGIA DE DESARROLLO DEL PROYECTO 8 1.11.1 MODELO DE DESARROLLO 8 1.11.2 METODOLOGIA 91.12 ARQUITECTURA 111.13 RECURSOS 12
1.13.1 HUMANO 121.13.2 HARDWARE 121.13.3 SOFTWARE 13
1.14 PROCESO DE PLANIFICAICON Y CRONOGRAMA 131.14.1 CRONOGRAMA DE ACTIVIDADES 15
1.14.2 METODOS DE ESTIMACION 16
CAPITULO II: ANALISIS 192.1. LEVANTAMIENTO DE INFORMACION 20 2.1.1 INVESTIGACION DE LA COMPETENCIA 202.2. ANALISIS DE REQUERIMIENTOS 28 2.2.1 ANALSIS DE RECURSOS HUMANOS 282.3. ESTUDIO DE FACTIBILIDAD 282.4. ANALISIS DE ORIENTADO A OBJETO 30
2.4.1. DEFINICIOON DE USUARIO DEL SISTEMA 30 2.4.2 ESPECIFICACIONES DE LOS REQUISITOS DEL SISTEMA 30 2.4.3. DIAGRAMA OBJETO RELACION 31 2.4.4 DIAGRAMA DE CASO DE USO 32 2.4.4.1 DIAGRAMA GENERAL DEL SISTEMA 33
2.4.4.2 DIAGRAMA DE MENU 34 2.4.4.3 DIAGRAMA DE BARRAS DE HERRAMIENTAS 352.4.4.4 DIAGRAMA DE EXPLORADOR DE DATOS 362.4.4.5 DIAGRAMA DE VENTANA DE TABLAS IMPORTADAS 37
2.4.5 DIAGRAMA DE FLUJO DE OBJETOS DEL SISTEMA 38 2.4.5.1 DIAGRAMA DE FLUJO DE OBJETOS. NIVEL 2 39 2.4.5.2 DIAGRAMA DE FLUJO DE OBJETOS. NIVEL 3 40 2.4.6 DIAGRAMA DE SECUENCIA 41 2.4.7 DIAGRAMAS DE TRANSICION DE ESTADO 42
CAPITULO IIIDISEÑO 443.1. DISEÑO ARQUITECTONICO DEL SISTEMA 453.1.1 DESCRIPCION DEL DISEÑO ARQUITECTONICO DEL SISTEMA 463.2 DISEÑO DE DATOS 47
3.2.1 IMPORTACION DE DATOS 473.2.2 OPERACIONES A REALIZAR CON DATOS IMPORTADOS 473.2.3 EMISION DE REPORTES 47
3.3 DISEÑO DE LA INTERFAZ 483.3.1 MENU PRINCIPAL 483.3.2 ARCHIVO CONEXIÓN 49
3.3.3 BREVE DESCRIPCION DE LOS MODULOS 55
CAPITULO IVDESARROLLO DEL SISTEMA 564.1. ARCHIVO 574.2. IDENTIFICACION DE ESCENARIOS 574.3 SELECCIÓN DE CLASES Y OBJETOS USANDO LOS REQUISITOS BÁSICOS COMO GUÍAS.
63
4.3.CONFIGURACION DEL SISTEMA LUPA 1.0 654.3.1. INSTALACION DEL SISTEMA OPERATIVO WINDOWS XP 65
4.4. CONFIGURACION DEL ODBC DE LAS BASES DE DATOS 654.5. INSTALACION DE LUPA 1.0 65
CAPITULO VRECOMENDACIONES Y CONCLUSIONES 665.1 RECOMENDACIONES 67
5.1.1. HARDWARE 675.1.2. SOFTWARE 67
5.2. CONCLUSIONES 68
INDICE DE FIGURAS
FIGURA 1 8FIGURA 2 11FIGURA 3 15FIGURA 4 16FIGURA 5 22FIGURA 6 22FIGURA 7 23FIGURA 8 23FIGURA 9 24FIGURA 10 24FIGURA 11 25FIGURA 12 26FIGURA 13 31FIGURA 14 33FIGURA 15 34FIGURA 16 35FIGURA 17 36FIGURA 18 37FIGURA 19 38FIGURA 20 39FIGURA 21 40FIGURA 22 41FIGURA 23 42FIGURA 24 42FIGURA 25 43FIGURA 26 45FIGURA 27 48
FIGURA 28 48FIGURA 29 49FIGURA 30 49FIGURA 31 50FIGURA 32 50FIGURA 33 51FIGURA 34 51FIGURA 35 52FIGURA 36 52FIGURA 37 53FIGURA 38 53FIGURA 39 54FIGURA 40 54FIGURA 41 55
INDICE DE TABLAS
TABLA 1 17TABLA 2 17TABLA 3 18
TABLA 4 29TABLA 5 58TABLA 6 59TABLA 7 60TABLA 8 61TABLA 9 62TABLA 10 63TABLA 11 63TABLA 12 64TABLA 13 64TABLA 14 64
CAPITULO 1
INTRODUCCION
Esta herramienta de Investigación de
Archivos para auditores, contables e
investigadores fácil llevar a cabo
análisis complejos de datos,
extracciones de elementos poco
usuales, muestras de auditoria,
transacciones duplicadas y muchas
más funciones usando la interfaz de
Windows intuitivo diseñado de forma
especial.
Se ha diseñado desde un principio
como un software de Windows con
atención considerable hacia la
sencillez y la intuitividad de la
interface del usuario.
1
1.1 ANTECEDENTES
Analizar los datos de muchas maneras y permite la extracción, muestreo y
manipulación de datos para identificar errores, problemas, asuntos
específicos y tendencias.
A más de eso por medio de la tecnología, en el Ecuador no existe una
herramienta que realice las tareas de análisis y de importación de datos y
operaciones que ayuden a resolver problemas de obtención de evidencias
de auditoria.
SAS No. 94 dice que en una organización que usa Tecnologías de
Información IT, se puede ver afectada en uno de los siguientes cinco
componentes del control interno: El ambiente de control, evaluación de
riesgos, actividades de control, información, comunicación y monitoreo
además de la forma en que se inicializan, registran, procesan y reporta las
transacciones.
La norma SAP 1009 denominada CAATs plantea la importancia de su uso
en auditorias en un entorno de sistemas de información por computadora.
¿QUE SON CAAT’S? (Computer Assisted Audit Techniques)
SAP 1009 los define como programas de computador y datos que el
auditor usa como parte de los procedimientos de auditoria para procesar
datos de significancia en un sistema de información.
SAP 1009 describe los procedimientos de auditoria en que pueden ser
usados las CAATs:
LA CLASIFICACION DE CAAT’S
Básicos: Procesadores de Texto, Planilla de calculo, Presentaciones,
Productos Adobe, Software de Prod. Personal,
Intermedio: ACL, IDEA, Producto Method ware: Ranking Advisor, Proaudi
Advisor, COBIT, Advisor, Audit Builder, Otros Extractores y analizadores
de archivo
Complejos: SQL, Quero, Dataentry, Dump, Trace, Debugger, Mapping,
Otros Utilitario del S.O.
CISC UNIVERSIDAD DE GUAYAQUIL
Altamente Complejos: SCAN (RNA), Otro SW. (IA).
1.2 PROBLEMÁTICA
En la actualidad se experimenta ineficiencia a la hora de obtener
información fiable en cuanto a informes que entrega la gerencia para el
elaboración de recolección de evidencia en marco de una auditoria.
Otros de los problemas es el desconocimiento de herramientas CAATS en
el mercado local, ya que es muy importante en cuanto a analizar,
manipular y procesar información para quienes realizan estas
operaciones.
1.3 SOLUCIÓN A LA PROBLEMÁTICA
La respuesta en gran parte de la solución de esta problemática, es un
dispositivo independiente, es esta CAAT, con la implementación de este
sistema se podrá llevar un mejor control a los problemas mencionados.
Esta dirigido para usuarios que como mínimo, tengan conocimiento básico
de una hoja de calculo como MS Excel.
Descrita la problemática existente nosotros decidimos implementar una
aplicación con una interfaz amigable, en el cual se puede extraer
información de cualquier base de datos tendrá un mejor control de las
acciones de los usuarios conectados a esta, de los recursos físicos y
CISC UNIVERSIDAD DE GUAYAQUIL
también los servicios que requiera el usuario en el momento de un
proceso de análisis.
1.4 MISIÓN
Contribuir con una herramienta de software que permita tener
conocimientos técnicos administrativos y flexibilidad ampliada en los
recursos de almacenamiento con una extensión de archivos propias, así
como el estudio donde se realizara la implantación del mismo, de esta
manera poder tener una estimación de costo que conllevaría hacerlo,
establecer controles por medio del usuario para poder administrar,
manipular, exportar cada uno de los recursos que requiera la organización
en este tipo de implementación”.
Dar a los auditores y/o clientes la mejor información en cuanto a los datos
y operaciones propias de una hoja de cálculo proporciona y tener su
propia extensión de archivo.
1.5 VISIÓN
Construir una herramienta que brindara una mejor calidad de información
y que sea fiable para los auditores para que presten buen servicio de
análisis de evidencia y como consecuencia obtener favorables ganancias.
Será un sistema dinámico, innovador y confiable en cuanto a la
información que este contenga .para la optimización y administración de
tareas de prueba, procurando de esta manera la accesibilidad de
impresiones en beneficio para todos los usuarios que lo requieran.
CISC UNIVERSIDAD DE GUAYAQUIL
1.6 OBJETIVO GENERAL.
"El propósito del uso programas de computadora usados por el auditor,
como parte de sus procedimientos de auditoria, para procesar datos de
importancia de auditoria del sistema de contabilidad y otros.
Independientemente de la fuente de los programas, el auditor deberá
verificar su validez para fines de auditoria antes de su uso".
1.7 OBJETIVOS ESPECÍFICOS.
1. Software diseñado para poder realizar un estudio de los datos para
elaborar tareas con cualquier tipo de archivo.
2. Realizar actividades de los datos como operaciones de auditoria sobre
los extraídos.
3. Almacenar los resultados con un tipo de archivo especifico no
convencional
4. Cumplir con la aplicación los estándares de programación y
planeacion.
5. Elaborar una herramienta capaz de suplir con características similares
al de una convencional junto a operaciones de auditoria propias como
complementarias.
6. Ubicar este sistema posteriormente en el mercado.
CISC UNIVERSIDAD DE GUAYAQUIL
1.8 ALCANCE
Utilización de una Interfaz amigable: Como menús, sub-menús, barras de
herramientas para un manejo optimo-operacional de accesos directos.
Capacidad de importar archivos (incluyendo files de la base de datos):
Acceder al asistente de importación, crear definiciones para un archivo
ASCII de longitud fija, guardar la definición, importar bases de datos al
sistema, seleccionar un campo de cantidad de control numérico para la
base de datos.
Capacidad de manejar su propio formato de archivos:
Capacidad de realizar con los datos las siguientes operaciones:
A. Detección de salto de secuencia: Comprobar que exista continuidad entre
los registros especificados.
B. Detección de registros duplicados: Probar la valides de registros y los
números de registros duplicados.
C. Capacidad de adicionar columnas para hacer operaciones matemáticas
básicas tales como: Suma, Resta, Multiplicación y División.
D. Capacidad de mostrar aleatoriamente (n) registros sobre una tabla
determinada, seleccionar una muestra de elementos para pruebas.
E. Muestreo aleatorio estratificado de (n) registros sobre una tabla
cualquiera.
CISC UNIVERSIDAD DE GUAYAQUIL
F. Unir tablas mediante la operación JOIN: Obteniendo información más
específica.
G. Agrega bases de datos (Unir dos o mas archivos como si fueran partes).
1.9 VENTAJAS
1. Reducir costo de papelería, tornee y recursos que se requiera para
el uso de la impresión por parte del usuario.
2. Administrar eficientemente los datos en cuanto a su importación y
análisis.
3. Tener un control total sobre la aplicación e independiente de
aquellas que estén en el equipo.
4. Facilidad de uso, ya que es un sistema que incluye mecanismo
para hacerlo, además de que trabaja en plataforma Microsoft es
portable.
5. Cuotas de administración, de trabajos y páginas.
6. Es de fácil integración y administración.
7. Instalación y configuración de orígenes de datos ODBC.
1.10 DESVENTAJAS
1. Según las políticas establecidas en la organización, en el límite de
la asignación de una CAAT.
2. Presupuesto bajo para la adquisición de recursos físicos,
requeridos para la implementación del Sistema.
CISC UNIVERSIDAD DE GUAYAQUIL
3. No se ha pronosticado el impacto de un Software CAAT según la
auditoria elaborada ya que en algunas no lo implementan.
1.11 METODOLOGÍA DE DESARROLLO DEL PROYECTO
1.11.1 MODELO DE DESARROLLO
La Herramienta para ejecutar pruebas asistidas por computadora utilizara
el modelo de desarrollo espiral, debido que es un modelo de proceso de
software evolutivo y que se adquiere a la reingeniería, características que
permite regresar algunas de sus fases análisis, diseño, implementación o
integración.
Para todo proyecto de software se deben estimar errores en las fases
previas razón por lo cual se utiliza este modelo que es muy eficiente.
CISC UNIVERSIDAD DE GUAYAQUIL
Figura 1
Este modelo está compuesto de Análisis, Diseño, Implementación,
Implantación y Evolución.
1.11.2 METODOLOGÍA
Para el proyecto “Herramienta CAATS LUPA 1.0” se ha escogido la
metodología basada en Orientados a Objetos de tres capas por lo que
significa que el sistema se organiza como una colección de objetos que
interactúan entre si y que contienen tanto estructuras de datos como un
comportamiento.
Usaremos diagramas de caso de uso, pues para ello se definirán los
actores quienes intervienen o interactúan con el sistema.
Permite interactuar este modelo con las clases, entidades relevantes, al
problema que se va resolver (objeto de negocio), interfaz grafica
CISC UNIVERSIDAD DE GUAYAQUIL
Modelo de Análisis
(composición visual) y operaciones, atributos, relaciones y
comportamientos asociados con ellas (reglas de negocio).
En cuanto a la forma de trabajar en nuestro grupo es el siguiente.
1.11.2.1 FUENTES POSIBLES DE CONSULTA INVESTIGACIÓN
PRELIMINAR.
Consultas Bibliográficas.
Consultas por Internet.
Consultas a Profesionales.
Ámbito de estudio.
Uso del software IDEA para Windows versión 3, que fue proporcionado
por el Profesor Ing. Omar Palomeque para obtener información sobre
este tipo de software.
1.11.2.2 ANÁLISIS
Levantamiento de la información
Análisis de los Requerimientos
Análisis de recursos humanos
Análisis de los Recursos Hardware y Software
Estudio de factibilidad
Análisis costo beneficio
CISC UNIVERSIDAD DE GUAYAQUIL
Factibilidad técnica
Factibilidad económica
Factibilidad operacional..
Análisis del Proceso Actual
1.11.2.3 DISEÑO
Diagramas de Secuencia
Diseño de la Interfaz de Usuario (Prototipo)
1.11.2.4 IMPLEMENTACIÓN Y DESARROLLO
Conexión a la Base de Datos
Lógica del Negocio
Interfaz Gráfica del Usuario
Pruebas / Depuración.
1.11.2.5 IMPLANTACIÓN
Elementos físicos
Control / Evolución
1.11.2.6 CONCLUSIÓN Y RECOMENDACIÓN.
1.12 Arquitectura
El software será desarrollado con una arquitectura de tres capas Cliente-
Servidor, es un modelo para el desarrollo de sistemas de información en el
que las operaciones se dividen en procesos independientes que cooperan
entre sí para intercambiar información, servicios o recursos, por lo que en
CISC UNIVERSIDAD DE GUAYAQUIL
esta arquitectura la capacidad de proceso está dividida entre el servidor y
un cliente.
A continuación se va a distinguir las tres capas en la que se enfocara
nuestro proyecto.
Interfaz de usuario.
Manejador de Base de Datos.
Reglas del Negocio o Procesador de Aplicaciones.
Este tipo de arquitectura tres capas se la detallan a continuación, para
dejar en claro de que manera se la utilizara en el Sistema. Y como nos
ayuda a la compresión del sistema.
Figura 2AUDITOR APLICACION
La aplicación debe acceder a la base de datos que se va a realizar el
análisis mediante una función de la API (Interface de Aplicación del
CISC UNIVERSIDAD DE GUAYAQUIL
AUDITOR
APLICACIONIMPORTACION DE ARCHIVOS/BASE DE DATOS
Programa), la cual es el conjunto de rutinas para la gestión de
importación de datos.
Las funciones de API son:
Importa los datos a través del asistente de importación para
archivos o bases de datos.
Guardar la definición de registro que se ha creado.
Seleccionar una muestra de elementos para pruebas.
1.13 DETALLES DE RECURSOS REQUERIDOS A UTILIZAR EN ELPROYECTO.
1.13.1 HUMANO
3 programadores con reuniones periódicas y tutorías con el profesor en
cuanto el desarrollo por etapas del proyecto y que interviene son:
PEDRO VELEZ
DANNY HUANCAYO
ROMULO RODRIGUEZ.
1.13.2 HARDWARE
COMPUTADORA
PROCESADOR PENTIUM IV 2.8 GHZ,
MEMORIA 5!2 MB,
DISCO DURO 80 GB,
BUS DE DATOS DE 800
2 GIGA DE MEMORIA CACHE
MEMORIA RAM DE 1 GB
MONITOR DE 17’’
4 PUERTOS USB
UNIDAD DE DVD/CD-ROM
CISC UNIVERSIDAD DE GUAYAQUIL
1.13.3 SOFTWARE
En cuanto al desarrollo este sistema se requiere el siguiente el software:
VISUAL BASIC.NET: Ofrece un interfaz de desarrollo agradable y brinda
mayores posibilidades de manipular las bases de datos de SQL
WINDOWS XP PROFESIONAL SERVICE PACK 2, Para los usuarios que
utilice esta aplicación.
Para realizar las pruebas de auditorias se utilizan varias bases de datos y
archivos con gran cantidad de información.
En cuanto al licenciamiento se indica que se utiliza es en convenio que
tiene la carrera (CISC) mantiene con Microsoft
1.14 PROCESO DE PLANEACIÓN Y CRONOGRAMA
Permite desarrollar y mantener un esquema de trabajo para completar la
necesidad para la cual el proyecto será creado, teniendo así una
planificación especifica y detallada de cada una de las actividades que se
van a realizar durante el proceso de realización del sistema.
-Determinar la estructura (esquema), el contenido y la forma de acceso a
los datos, archivos o bases de datos.
- Definir los tipos de situaciones a ser analizadas
- Definir los procedimientos que se van a seguir.
- Definir los requerimientos de salida o reportes.
- Identificar el personal de auditoria y de sistemas que participaran en el
diseño y aplicación de la CAAT.
- Calcular los estimados de costos y beneficios.
- Participar en todas las fases relacionadas con el CAAT, para garantizar
su control y documentación.
- Definir actividades y recursos y determinar su disponibilidad.
CISC UNIVERSIDAD DE GUAYAQUIL
- Aplicación de la CAAT.
- Evaluar los resultados.
Es importante resaltar que las CAATs se apoyan en programas de
computador, los cuales deben ser desarrollados usando las metodologías
de ingeniería de software. Es responsabilidad del auditor garantizar el
control sobre estos programas, mal haría en confiar la recolección de
evidencia a una herramienta o técnica que funciona errónea o
deficientemente. Por lo anterior es su deber participar en todas las fases
del desarrollo (determinación de requerimientos, diseño, construcción,
prueba e implantación). Debe el auditor mantener bajo su vigilancia estas
aplicaciones para evitar que sufran modificaciones no autorizadas.
CISC UNIVERSIDAD DE GUAYAQUIL
16
1.14.1 CRONOGRAMA DE ACTIVIDADES
TAREA DURACION COMIENZO FIN SUCESORA PREDECESORAINICIO 0 días 06/12/2007 06/12/2007 2 Análisis de Requisitos 8 días 07/12/2007 20/12/2007 3,4 1Identificar y definir el trabajo a realizar 2 días 21/12/2007 25/12/2007 4 2Desarrollo del plan de proyecto 1 día 25/12/2007 26/12/2007 7 2,3Determinar los recursos necesarios 1 día 31/12/2007 01/01/2008 6 7Elaboración del presupuesto 1 día 01/01/2008 02/01/2008 8 5Instalación de equipos de computación, programas y SO 2 días 26/12/2007 31/12/2007 5 4Dividir el trabajo en deberes a los programadores 2 días 02/01/2008 07/01/2008 9 6Levantamiento y Análisis de la Información Recogida 2 días 07/01/2008 09/01/2008 10,11 8Definición de Tablas. 2 días 09/01/2008 14/01/2008 11 9Diseño del Software de los módulos 15 días 14/01/2008 07/02/2008 12 9,10Codificación de los programas de los módulos. 30 días 08/02/2008 01/04/2008 13 11Pruebas de los programas de los módulos. 5 días 01/04/2008 09/04/2008 15,16,14 12Integración de todos los módulos 5 días 09/04/2008 17/04/2008 15,16 13Implementación, Pruebas, Correcciones 5 días 18/04/2008 28/04/2008 16 13,14FINAL 10 días 28/04/2008 14/05/2008 13,14,15Figura 3
CISC UNIVERSIDAD DE GUAYAQUIL
1.14.2 Métodos de estimación basados en la funcionalidad del sistema
1.14.2.1 El Método Puntos por Función1. Entradas externas.
Usuarios
2. Salidas externas. Archivos de datos Ecuaciones Definiciones de vista/informes. Definiciones importadas
3. Consultas externas.
Reportes de:
Historial de operaciones de datos Estadísticas Resultado
4. Archivos lógicos internos. Archivos de datos Ecuaciones Definiciones de vista/informes. Definiciones importadas
5. Archivos de interfaces externas.
Vista de Base de datos activa. Vista de Historial Activa Vista de estadística de Campo Activa Vista de Resultado de Prueba Activa Barra de Herramientas de Base de Datos
1.14.2.2 Punto de Función
Figura 4
CISC UNIVERSIDAD DE GUAYAQUIL
Auditor Herramienta CAAT
Archivos Internos
Archivos Externos
Entradas
Salidas
1.14.2.3 TECNICAS PARA ESTIMAR EL TIEMPO Y RECURSO
HUMANO
FACTOR DE PONDERACION PARAMETRO DE MEDICION CUENTA SIMPLE MEDIA COMPLEJA SUMFC1 Numero de entrada de usuarios 1 1*3 3 *4 0 *6 0 32 Numero de Salida de usuarios 4 4*4 8 *5 0 *7 0 163 Numero de Consulta 3 3*3 9 *4 0 *6 0 94 Numero de archivo 4 4*7 28 *10 0 *15 0 285 Numero de Interpretes Internos 5 5*5 25 *7 0 *10 0 25
SUMFC 81Tabla 1
MODELO COCOMOParámetros ValoresSUMFC 81Punto de Función FA=(0,01XSUMFC)+0,65 FA=(0,01*81)+0,65 FA 1.46Punto de Función Ajustado PFA=SUMFC*FA PFA=81*1,46 PFA 118.26Líneas de Código ESTIMACION DE ESFUERZO REQUERIDO LENGUAJE: VISUAL BASIC.NET /HTML 32ESFUERZO=LDC=PFA*PROMEDIO DE LENGUAJELDC=118,26*40 LDC= 4730,4 LDC=4730,4/1000 KLDC=LDC (MILES DE LINEAS DE CODIGO) 4,7304MODELO BASICOKM/PERSONAS PARA PROYECTO
CAPACIDAD DEL PROGRAMADOR=ALTA 0.90
CAPACIDAD DE LA BASE DE DATOS=BAJO 0.94
EXPERIENCIA DE LA APLICACIÓN = ALTO 0.91PRACTICAS DE PROGRAMACION MODERNA=ALTO 0.91
KM=3.2*(KLDC)1.05
KM 16,4
KM*ATRIBUTOS KLM=3.2*(KLDC)1.05 *(CAP DEL PROGRAMADOR)*(TAMAÑO BASE DATOS)*(EXPERIENCIA EN LA APLICACIÓN)*(PRACTICAS DE PROGRAMACION MODERNA)
KM 11,46161682
KM/10 1,146161682
1 PERSONA TRABAJANDO EN EL PROYECTO
TD/TIEMPO DE PROYECTO
TD=2.5*(KM)0.38
TD 5,46
APROXIMADAMENTE 5 MESES DE PROYECTOTabla 2
CISC UNIVERSIDAD DE GUAYAQUIL
1.14.2.4 RECURSOS ADQUIRIDOS PARA EL PROYECTO
ESTIMACIÓN DE COSTOS
RECURSOSCOSTO PAGO DURACIÓN
SUBTOTALES
RECURSOS HUMANO
1 Programador $ 250,00MENSUAL 5 MESES $ 1.250
RECURSO FISICO
MOBILIARIO
1 ESCRITORIO $ 60,00 1 VEZ $ 60
1 SILLA $ 20,00 1 VEZ $ 20
1 CONEXIÓN ELÉCTRICA $ 10,00 1 VEZ $ 10
HARDWARE
1 COMPUTADORA $ 470,00 1 VEZDEPRECIABLE 3 AÑOS $ 470
RECURSO DE SOFTWARE
SOFTWARE
LICENCIAS DE SO WINDOWS XP $ 10,00 1 VEZ SIEMPRE $ 10LICENCIA DE VISUAL STUDIO.NET 2005 $ 80,00 1 VEZ SIEMPRE $ 80LICENCIA DE BASE DE DATOS SQL SERVER 2000 $ 50,00 1 VEZ SIEMPRE $ 50
VALOR TOTAL $ 1.950
Tabla 3
CISC UNIVERSIDAD DE GUAYAQUIL
CAPITULO 2
ANALISIS
En este capítulo llevaremos a cabo la fase
de análisis de todo este sistema
HERRAMIENTA CAAT LUPA 1.0,
comenzando por las partes más generales
del mismo, como puede ser la
especificación de requerimientos, para poco
a poco ir desarrollando en forma gradual
los componentes de nuestro sistema.
CISC UNIVERSIDAD DE GUAYAQUIL
2.1 LEVANTAMIENTO DE INFORMACIÓN
La recopilación de información debe estar enfocada en los hechos que
permitan conocer y analizar información específica y sobre todo útil para
el proyecto y su desarrollo, caso contrario obtendremos interpretaciones
erróneas, con lo que nos produciría retraso y desperdicio de recursos.
Para este proceso se utilizó dos formas de levantamiento de información:
las entrevistas y la revisión de documentos y fuentes obtenidas del
Internet. En relación a las entrevistas, se las realizó a las personas que
han utilizado el sistema similar, tales como empresas en cuantos a sus
opiniones; y, en cuanto a revisión de documentos y su origen, se hizo la
selección y análisis de aquellos escritos que contienen datos de interés
relacionados con el proyecto, por medio de Internet y de consultas a
diversos proyectos en la biblioteca de la Carrera, también se analizó al
software de competencia IDEA para Windows versión 3.
2.1.1 INVESTIGACIÓN DE LA COMPETENCIA
Actualmente se toma cuenta el software de Auditoria Interactive Data
Extraction and Analysis para Windows (conocido como IDEA para
Windows), una herramienta de Investigación de Archivos para auditores,
contables e investigadores. Con IDEA para Windows es fácil llevar a cabo
análisis complejos de datos, extracciones de elementos poco usuales,
muestras de auditoria, transacciones duplicadas y muchas más funciones
usando el interface de Windows intuitivo diseñado de forma especial.
IDEA para Windows se ha diseñado desde un principio como un software
de Windows con atención considerable hacia la sencillez y la intuitividad
del interface del usuario. Tiene un rango de funciones para:
• Importar datos de un rango amplio de tipos de archivos
• Realizar análisis de datos incluyendo estadísticas, perfiles, totalizaciones
y antigüedad
• Realizar pruebas de excepción de elementos poco usuales o extraños
usando criterios simples o complejos.
CISC UNIVERSIDAD DE GUAYAQUIL
IDEA tiene funciones incorporadas 70 explicadas en el sistema de Ayuda
en línea así como aritmética normal, texto y criterio de fechas
• Realizar cálculos
• Pruebas para omisiones en secuencias o elementos duplicados
• Seleccionar muestras usando técnicas sistemáticas, aleatorias o de
unidades monetarias
• Coincidencias o comparaciones de archivos diferentes.
QUÉ ESTÁ INCLUIDO EN IDEA PARA WINDOWS
IDEA para Windows consiste en:
• Una serie de programas y módulos incluyendo IDEA para Windows,
RDE, IDEAScript y DataImport para IDEA proporcionados en un solo CD-
ROM.
• El Manual de IDEA para Windows v 3 incluyendo el Tutorial Empezando
con archivos de datos de muestra
• Ayuda en Línea Extensa
• Notas Técnicas
• Base de Conocimientos en la Red
• Salvapantallas de IDEA para Windows.
La Auditoria usando la sección de IDEA para Windows de este manual
describe los principales usos que IDEA puede realizar en pruebas de
auditoria para investigaciones de fraude, auditorías de seguridad y
producción de informes de gestión. También cubre cómo planificar
auditorias y otros ejercicios con IDEA, cómo gestionar ejercicios con IDEA
y tares de control de calidad.
Para Utilizar IDEA para Windows, es necesario identificar los datos
relevantes y transferirlos al PC o a la red a la que se pueda acceder.
Una vez los datos están en el PC o en la Red entonces se pueden enlazar
o importar a una base de datos de IDEA. Para muchos tipos de archivos
se puede hacer directamente usando el módulo de IDEA para Windows
llamado Asistente de Importación. Sin embargo, para importar archivos de
datos más complejos, puede definirse una definición de registro usando
RDE, el Editor de Definiciones de Registro. RDE contiene una colección
de herramientas útiles para analizar archivos de datos y para construir una
definición de registro de IDEA para Windows. Se amplia la información en
CISC UNIVERSIDAD DE GUAYAQUIL
la ayuda en línea para asistir en la importación de todo tipo de archivos de
datos.
Un método muy simple y común de importar datos es mediante archivos
de informes impresos. El módulo DataImport para IDEA del paquete, al
que puede accederse a través del Asistente de Importación de IDEA para
Windows, se usa para definir sólo los datos requeridos para importarlos
desde el archivo impreso.
OPERACIONES INICIALES DEL IDEA PARA WINDOWS VERSIÓN 3Seleccionar una carpeta de trabajo e introducir la información decliente.
1. Para definir la carpeta de trabajo activa, seleccionar las siguientesopciones:ARCHIVO – Establecer Carpeta de TrabajoEl diálogo Buscar Carpeta aparece como sigue.
Figura 5
2. Buscar y seleccionar la carpeta siguiente:C:\Archivos de Programa\IDEA para Windows 3.0\Tutorial
Nota: Se supone que los archivos correspondientes del curso IDEA paraWindows, se han instalado en esta Carpeta de la Unidad C. En caso contrario,seleccionar la Carpeta adecuada3. Hacer click el botón Aceptar4. Aparece el diálogo Propiedades de Cliente. Introducir / Aceptar lo siguiente:Nombre de Cliente: TutorialPeriodo: 1 Ene 1999 – 31 Dic 1999
CISC UNIVERSIDAD DE GUAYAQUIL
Figura 6
Las Las propiedades del cliente se grabarán en un archivo llamado Client.inf enla Carpeta de trabajo.5. Hacer click en el botón Aceptar.
Tutorial sera la carpeta de trabajo.
El Explorador de Archivos estará vacío ahora.
Nota: Una vez se establece el directorio de trabajo, será el predeterminado hastaque se cambie.
Importar el archivo de cliente maestro.1. Apuntar al primer botón en la Barra de Operaciones y observar la sugerencia
amarilla Asistente de Importación.
Figura 7
Hacer click en este botón.
2. Aparecerá el diálogo Asistente de Importación.
Seleccionar un archivo de datos para importar pulsando el botón Seleccionar Archivo y navegar para escoger la hoja de trabajo siguiente:
C:\Archivos de Programa\IDEA para Windows 3.0\Tutorial\Master.xls
CISC UNIVERSIDAD DE GUAYAQUIL
Figura 8
Pulsar abrir.
3. Notar los 5 métodos diferentes de importación. Aceptar el método por defecto,es decir Archivos nuevos y formatos estándar de PC.
Figura 9
Pulsar el botón Siguiente.4. IDEA determinará ahora el formato de archivo, que debe ser Microsoft Excel.
CISC UNIVERSIDAD DE GUAYAQUIL
Figura 10
Nota: No es posible ver preliminarmente una hoja de MS Excel mediante elAsistente de importación.
Pulsar el botón Siguiente.
5. El Asistente de Importación mostrará una lista de las hojas y tablas definidasen el archivo seleccionado. Seleccionar Sheet1$.
CISC UNIVERSIDAD DE GUAYAQUIL
Figura 11
Pulsar el botón Siguiente.
6. El paso del Asistente de Importación Cambiar la longitud de loscampos de carácter aparecerá advirtiendo que todos los camposcarácter se importarán con una longitud de 255 caracteres a no ser que secambie. No es probable que esta sea la longitud de campo carácterdeseada. Por consiguiente, seleccionar el cuadro Determinar la longitudmáxima del campo y aceptar el valor por defecto para examinar los 100registros paradeterminar esta longitud.
CISC UNIVERSIDAD DE GUAYAQUIL
Figura 12
Pulsar el botón Siguiente.7. El paso final del Asistente de Importación le pedirá introducir o confirmar losdetalles de la Base de Datos importada. Seleccionar las opciones siguientes:
Seleccionar el cuadro Generar estadísticas de campo al importar(esto se analizará en la Sesión 6)
Nombre de Base de Datos como: Base de Datos Maestra de Clientes.Notas: La opción Importar (en lugar de Enlazar) los datos se selecciona pordefecto. No es posible enlazar una hoja de Excel. La opción Guardar DefiniciónComo está grisácea pues no se crean/requieren para importar de MS Excel.Pulsar el botón FinalizarSe importará la Base de Datos Maestra de Clientes, abierta y seleccionadacomo la base de datos activa.
CISC UNIVERSIDAD DE GUAYAQUIL
VENTAJAS DE IDEA
Hay muchas ventajas en usar IDEA frente a los métodos de auditoria
manuales. Los beneficios mayores incluyen:
Largo alcance de las investigaciones (es decir dirigir pruebas que no
pueden hacerse manualmente);
Incremento de la cobertura (verificar un gran número de elementos y
cubrir potencialmente el 100% de las transacciones por un año o más);
Mejor información (por ejemplo análisis extra o perfil de los datos);
Ahorro de tiempo.
DESVENTAJA DE IDEA
En el mercado local actual no existe la facilidad de conseguir este
software ya que es muy específico en cuanto a su uso y precio alto.
CISC UNIVERSIDAD DE GUAYAQUIL
2.2 ANÁLISIS DE LOS REQUERIMIENTOS
2.2.1 ANÁLISIS DE RECURSOS HUMANOS
Los usuarios que van a tener acceso a este sistema, serán las personas
que realizan el trabajo de recolección y mitigacion de evidencia y que
están interesadas en obtener información; y, también las empresas de
consultoria que deseen fortalecer de esa forma su trabajo a través de
nuestro sistema.
Para estos usuarios será necesario que tengan conocimientos de Excel
como referencia en cuanto a análisis de datos.
2.3 ESTUDIO DE LA FACTIBILIDAD
El estudio de factibilidad utilizado para efectos de nuestro proyecto se
basa en: Factibilidad Técnica, Económica y Operacional. A continuación
evaluaremos cada uno de estos aspectos en el análisis de Beneficio
Costo, estimando el impacto financiero acumulado de lo que queremos
lograr en este proyecto.
2.3.1 ANÁLISIS COSTO BENEFICIO
El análisis de costo-beneficio de este proyecto es muy sencillo, ya que
para el desarrollo de este proyecto se va a utilizar en su mayoría
herramientas de Tecnología de Microsoft, aunque para la implantación si
incurriremos en gastos.
CISC UNIVERSIDAD DE GUAYAQUIL
2.3.1.2 FACTIBILIDAD TÉCNICAEste Proyecto es factible técnicamente, ya que contamos con latecnología que nos facilita la carrera CISC, con los equipos queobtenemos para el desarrollo de este sistema y sobre todo con lo que hoyen día nos proporciona el mercado.
2.3.1.3 FACTIBILIDAD ECONÓMICATiene como objetivo central determinar las características económicas delproyecto, para ello es necesario identificar las necesidades de inversión,ingresos, los costos, gastos u otros; así determinar si al vender elproductos nos genere un margen de utilidad.
2.3.1.4 FACTIBILIDAD OPERACIONALEsta dada por los recursos humanos disponibles para el proyecto,operación del sistema y el uso que se le dé una vez que sea instalado. ElSistema que desarrollaremos está calculado para proporcionar unaInterfaz eficiente y accesible para que pueda ser utilizado por cualquierusuario sin limitación alguna.
.2.4 ANÁLISIS ORIENTADOS A OBJETOS
2.4.1 DEFINICIÓN DE USUARIOS DEL SISTEMA
Cliente Auditor (usuario interesado o persona natural que desean
realizar tareas de análisis y mitigacion de los datos en este
sistema.
2.4.2 ESPECIFICACIONES DE LOS REQUISITOS DEL SISTEMA
Los usuarios podrán acceder al sistema. Mediante el clásico método
de acceder a los programas en Windows.
CISC UNIVERSIDAD DE GUAYAQUIL
INFORMACION
ARCHIVOS BASE DE DATOS
APLICACION
CARPETA DE TRABAJO
AUDITOR
ARCHIVO DE DATOS DEFINICIONES
INPORTADAS, VISTAS/INFORMES
Se debe seleccionar una carpeta de trabajo e introducir los datos del
cliente para cada auditoria.
Para importar una base de datos debe seleccionar el archivo y luego el
método de importación, así sucesivamente en cuanto al tipo de
archivo,
longitud de registro, posicionar cada campo, detalles de campo,
nombre de archivo propio del sistema.
Para la extracción de registros primeramente debe estar activa la
base de datos importada y luego se realiza la operación Extraer a
Archivo (s) para luego colocar expresión. de selección
2.4.3 DIAGRAMA DE OBJETO-RELACIÓN
Los diagramas de objeto-relación representan la estructura de objetos del
sistema y las relaciones entre ellos, su objetivo es representar aspectos
estáticos del sistema.
Aquí definiremos las características de cada una de las clases, interfaces,
colaboraciones y relaciones de dependencia y generalización. Es decir, es
donde daremos rienda suelta a nuestros conocimientos de diseño
orientado a objetos, definiendo las clases e implementando las ya típicas
relaciones de herencia y agregación.
CISC UNIVERSIDAD DE GUAYAQUIL
Figura 13
2.4.4 DIAGRAMA DE CASO DE USOS
Un Diagrama de Casos de Uso muestra la relación entre los actores y los
casos de uso del sistema, representaremos la funcionalidad que ofrece el
sistema en lo que se refiere a su interacción externa. Aquí definiremos
como los usuarios interactúan con el sistema es decir que uso pueden
darle a este sistema.
CISC UNIVERSIDAD DE GUAYAQUIL
2.4.4.1 DIAGRAMA GENERAL DEL SISTEMA
Figura 14
2.4.4.1.1 DESCRIPCIÓN
Nombre de Casos de Uso
Diagrama General del Sistema
Definición:
Ese diagrama identifica las opciones que se presentan al ejecutar
el sistema para que el auditor pueda realizar sus operaciones
según crea convenientes a través de menús, cuadros de
herramientas. .
Escenario
Interfaz que permita utilizar opciones como:
1. MENU
2. BARRA DE HERRAMIENTAS
3. EXPLORADOR DE DATOS
4. VENTANA DE TABLAS IMPORTADAS
Dependiendo de las operaciones de prueba se utiliza una carpeta
de trabajo que las almacena con su propio formato de archivo.
CISC UNIVERSIDAD DE GUAYAQUIL
AUDITOR
INTERFAZ DEL AUDITOR
MENU
HERRAMIENTAS
EXPLORADOR DE DATOS
VENTANA DE TABLAS
IMPORTADAS
2.4.4.2 DIAGRAMA DE MENU
Figura 15
2.4.4.2.1 DESCRIPCIÓN
Nombre de Casos de Uso
MENU
Definición:
Contiene las opciones de las operaciones típicas de menú
similares al de una hoja de cálculo y opciones particulares de
auditoria.
Escenario
Crear nuevas sesiones de trabajo, abrir una sesión almacenada
existente, guardar una sesión nueva y modificaciones, imprimir
informes, vista preliminar, configuración de impresión. .
Opciones de edición: copiar. cortar, pegar.
Visualizar la barra de herramientas y de estado.
Cálculo específico de auditoria en cuantos a los registros de una
tabla se refiere.
Formas de visualización de ventanas: mosaico, cascada, cerrartodo, etc. .
Ayuda brindar información general del sistema
CISC UNIVERSIDAD DE GUAYAQUIL
INTERFAZ DEL AUDITOR MENU
VENTANA
ARCHIVO
EDITAR
VER
CALCULO
AYUDA
AUDITOR
2.4.4.3 DIAGRAMA DE BARRAS DE HERRAMIENTAS
Figura 16
2.4.4.3.1 DESCRIPCIÓN
Nombre de Casos de Uso
Barra de Herramientas
Definición:
Muestra las opciones de configuración y operaciones de registros en
cuanto a clientes, importación de la base de datos, tablas o archivos de
datos.
Escenario
Permitirá establecer el nombre de un cliente, base de datos, tablas, a
mas de realizar operaciones de columnas virtuales, filtros de registros
entre otros .
CISC UNIVERSIDAD DE GUAYAQUIL
AUDITOR
INTERFAZ DEL AUDITORBARRA DE HERRAMIENTAS
BASE DE DATOS Y TABLAS
BARRA DE ESTADO
2.4.4.4 DIAGRAMA DE EXPLORADOR DE DATOS
Figura 17
2.4.4.4.1 DESCRIPCIÓN
Nombre de Casos de Uso
Explorador de datos
Definición:
Proporciona información sobre los Clientes que almacena en una
carpeta llamada Auditores, Nombre de base de datos, archivos de
datos para la importación de base de datos y archivos
convencionales de datos y su contenido.
Escenario
CISC UNIVERSIDAD DE GUAYAQUIL
AUDITOR
INTERFAZ DEL AUDITOREXPLORADOR DE DATOS
CLIENTE Y BASE DE DATOS
AUDITORES
ARCHIVOS DE DATOS
AUDITOR
Realiza operaciones creación de clientes, importación de base de
datos, archivos de datos y tablas con sus campos y todos lo
mencionado anteriormente en una carpeta llamada auditores.
2.4.4.5 DIAGRAMA DE VENTANA DE TABLAS IMPORTADAS
Figura 18
2.4.4.5.1 DESCRIPCIÓN
Nombre de Casos de Uso
Ventanas de tablas importadas
Definición:
Visualiza las estructuras de tablas, operaciones con los campos
como columnas virtuales y filtros:
Escenario
Muestra los registros y campos de la tabla especifica
CISC UNIVERSIDAD DE GUAYAQUIL
INTERFAZ DEL AUDITORVENTANA DE TABLAS
CAMPOS
FILTROS
REGISTROS
VIRTUALES
AUDITOR
La operación de columna virtual a través del editor de formulas que
se realiza entre los registros de la tablas y su resultado se agrega al
final de estructura de la tabla.
Muestras los registros que cumplen con una consulta en el filtro y
ademas es posible visualizar registros aleatorios
CISC UNIVERSIDAD DE GUAYAQUIL
41
2.4.5 DIAGRAMA DE FLUJO DE OBJETOS DEL SISTEMA HERRAMIENTA CAAT LUPA 1.0- NIVEL 1
Figura 19
CISC UNIVERSIDAD DE GUAYAQUIL
Interfaz de usuario
Interfaz del sistema
Crear carpeta de trabajo
Importar Archivo o Base de Datos
Ejecutar proceso
Diseñar informe
Consultar
ALMACENAR
1 2
Imprimir
42
2.4.5.1 DIAGRAMA DE FLUJO DE OBJETOS. NIVEL 2
Ejecutar Proceso
Figura 20
CISC UNIVERSIDAD DE GUAYAQUIL
1Seleccionar tipo de operación
Ejecutar la operación
Verificación operación
2
43
2.4.5.2 DIAGRAMA DE FLUJO DE OBJETOS. NIVEL 3
Diseñar informe
Figura 21
CISC UNIVERSIDAD DE GUAYAQUIL
2
Seleccionar los resulta-dos en campos
Modificar la configura-ción de los campos
Guardar la configu-ración
Crear informe
Vista Preliminar del informe
Imprimir informe
2.4.6 Diagrama de Secuencia
Figura 22
CISC UNIVERSIDAD DE GUAYAQUIL
AUDITOR
EXTRAER INFORMACION GENERAR
INFORMES
APLICACION INFORMACION
COMPROBAR INFORMACION
2.4.7 Diagrama de Transición de Estado
AUDITOR
NULA
DISPONIBLE
NO DISPONIBLE
Figura 23
APLICACION
NULA
DISPONIBLE
NO DISPONIBLE
EN ESPERA
Figura 24
CISC UNIVERSIDAD DE GUAYAQUIL
INFORMACION
NULA
SOLICITADA
EN ESPERA
DENEGADA
CANCELADA
ARCHIVADA
Figura 25
CISC UNIVERSIDAD DE GUAYAQUIL
CAPITULO 3
DISEÑO
En esta etapa se definirá el proceso de
aplicar técnicas y principios, para detallar
cada uno de los dispositivos, procesos que
conformaran el sistema para permitir su
interpretación y su realización física,
transformando así el modelado del análisis
en las estructuras de datos necesarias para
implementar el software, definiendo cada
uno de los procesos estructurales del
programa.
CISC UNIVERSIDAD DE GUAYAQUIL
3.1 DISEÑO ARQUITECTÓNICO DEL SISTEMA
Figura 26
CISC UNIVERSIDAD DE GUAYAQUIL
ARCHIVO
NUEVO
ABRIR
LUPA 1.0
EDITAR
DESHACER
REHACER
VER
BARRA DE HERRAMIENTAS
BARRA DE ESTADO
CALCULO
REGISTRO ALEATORIO
ESTRATIFICACION
DUPLICIDAD
LUPA 1.0LUPA 1.0
Diseño ArquitectónicoDiseño Arquitectónico
DDiseño Arquitectónico. iseño Arquitectónico.
COPIAR
CORTAR SALTO DE SECUENCIA
VENTANA
CASCAZDA
MOSAICO
GUARDAR
IMPRIMIR
PEGAR
CERRAR
SUMARIZACION
3.1.1 DESCRIPICION DEL DISEÑO ARQUITECTONICO
En el diseño arquitectónico se representa la forma como vamos a establecer
la estructura como usaremos en el desarrollo de software.
En la interfaz usaremos las barras de menús, barra de herramientas, Grid
para mostrar los datos, editor de formulas para realizar los cálculos, cuadros
de dialogo que permiten realizar los procesos principales descritos en los
alcances.
En cuanto a las operaciones de los procesos principales se pueden describir
de una forma muy ordenada y secuencial para seguir un orden lógico para
obtener los resultados deseados.
El sistema Lupa 1.0 ademas se centra en que ademas contara con una
interfaz grafica que facilite al usuario el uso del sistema, y también con su
propio sistema de archivo.
En el sistema contaremos con operaciones de auditoria debidamente
estandarizadas que cumplan con su cometido y reportes necesarios para
que se muestre cada una de las pruebas elaboradas.
CISC UNIVERSIDAD DE GUAYAQUIL
3.2 DISEÑO DE DATOS Lupa 1.0 contara con tres módulos que son la Importación de
datos. Operaciones con los datos importados y la emisión de
informes de las operaciones realizadas, los cuales se
mencionan a continuación:
3.2.1. Importación de datosEn este modulo se creara un directorio (clientes), base
de datos a importar ya sea de forma local y si esta en un
ambiente de Red, y a continuación aparecerá un
asistente de importación donde se escoge el método de
importación ya sea de archivo o de tipo ODBC según el
método escogido se establecerá el archivo o base de
datos, si es un archivo importa desde una ubicación del
equipo o una base de datos luego se establece el tipo
de información ya sea de base de datos o un archivo
3.2.2. Operaciones a realizar con los datos importadosEn este modulo se realizan las operaciones de creación
de columnas virtuales que se creaban en una sección
llamada virtuales filtros y además se puede genera un
registro aleatorio.
Se realiza operaciones como estratificación, salto de
secuencia y duplicidad.
3.2.3. Emisión de reportes En este modulo se realizan las operaciones de
impresión de los datos y además es posible colocar el
nombre y las observaciones del auditor.
CISC UNIVERSIDAD DE GUAYAQUIL
3.3 Diseño de la interfaz
3.3.1 Menú Principal
Pantalla de ingreso al sistema Lupa 1.0
Figura 27
Menú Principal
Figura 28En el menú principal del sistema Lupa 1.0 constara de las siguientes opciones: Archivo (conexión):Aquí se muestran las opciones para iniciar la importación de datos para los procesos de auditoria Cálculos:Aquí encontraremos las opciones para realizar los cálculos de auditoria mas importantes Exportación:
CISC UNIVERSIDAD DE GUAYAQUIL
Aquí encontraremos la opción para realizar exportaciones de los datos a Excel Reportes:Aquí encontraremos las opciones de repostería del sistema.
3.3.2 Archivo conexión Aquí encontraremos las opciones para realizar la conexión a la base de datos o un archivo. La opción cliente. Si no existe el cliente procede a crearlo.
Figura 29
3.3.2.1Archivo conexión agregar base datosAquí encontraremos la opción para darle un nombre al archivo o base de datos que vamos a importar.
CISC UNIVERSIDAD DE GUAYAQUIL
Figura 30
3.3.2.2 Archivo conexión TablaAquí encontraremos la opción tabla que activara un asistente de importación de datos.
Figura 31
CISC UNIVERSIDAD DE GUAYAQUIL
Luego escogeremos que tipo de importación deseamos si es un archivo o una base de datos Importación Archivo paso 1: escogemos el tipo de archivo que deseamos
importar Excel, Access, etc.
Figura 32
Importación Archivo paso 2: Ubicamos la ruta del archivo que deseamos importar y damos clic en siguiente.
CISC UNIVERSIDAD DE GUAYAQUIL
Figura 33
Importación Archivo paso 3: especificamos los datos a importar y damos clic en siguiente.
Figura 34
Importación Archivo paso 4: le asignamos un nombre a los datos importados y damos clic a finalizar.
CISC UNIVERSIDAD DE GUAYAQUIL
Figura 35
Importación Archivo paso 5: se realiza la importación y se guarda automáticamente el archivo en el árbol
Figura 36
Importación Base Datos paso 1: escogemos la opción usar ODBC y damos clic siguiente.
CISC UNIVERSIDAD DE GUAYAQUIL
Figura 37
Importación Base Datos paso 2: Seleccionamos el tipo de dsn al cual deseamos conectarnos que puede ser sistema(red) o usuario (en la misma maquina) y damos click en siguiente.
Figura 38
CISC UNIVERSIDAD DE GUAYAQUIL
Importación Base Datos paso 3: especificamos la tabla a importar y damos clic en siguiente.
Figura 39
Importación Base Datos paso 4: le asignamos un nombre a los datos importados y damos clic a finalizar.
Figura 40
CISC UNIVERSIDAD DE GUAYAQUIL
Importación Base Datos paso 5: se realiza la importación y se guarda
automáticamente la tabla en el árbol
Figura 41
3.3.3 BREVE DESCRIPCIÓN DE LOS MODULOS Para diseñar los siguientes módulos se deberá optar por revisar cada componente elaborado en la etapa de análisis y de requerimiento y se determinara los siguientes procesos:
COLUMNAS VIRTUALES: Una vez realizada la importación de los datos, tenemos el grid con los datos, aquí podemos comenzar a trabajar los datos importados con columnas virtuales, en el grid tenemos en la parte inferior una pestaña con la leyenda virtuales
DETECCIÓN SALTO SECUENCIA: Aquí tendremos esta opción para verificar un salto en una secuencia numérica
DETECCIÓN DATOS DUPLICADOS: Aquí vamos a tener la opción para verificar los datos duplicados, aquí verificaremos los datos que se repiten.
MUESTREO ALEATORIO: Este presentara la muestra de los datos quetenemos en nuestro grid, especificamos cuantos datos deseamos presentary nos mostrará en el editor de consultas la cantidad de datosaleatoriamente especificados.
MUESTREO ALEATORIO ESTRATIFICADO: Este presentara una muestra de los datos que tenemos en nuestro grid, especificamos que tipo de dato deseamos listar puede ser datos tipo numérico o fecha.
CISC UNIVERSIDAD DE GUAYAQUIL
INFORMES: Este permitirá configurar e imprimir aquellas pruebas elaboradas por los auditores y sus respectivas opciones.
C A P I T U L O I V
DESARROLLO DEL SISTEMA
Este capitulo comprende todas las
aplicaciones que se realizaron para la
implementación la Herramienta CAAT
LUPA 1.0, esta desarrollado bajo la
plataforma .NET de Microsoft y de otro
recurso como el Spread Forms de
Windows al cual se accede mediante la
ejecución de la aplicación. Visual Basic
que ha sido utilizado para la interfaz
grafica de usuario. Además se configura
ODBC que permite la comunicación con
las bases de datos implementadas en una
PC o en ambiente de red
CISC UNIVERSIDAD DE GUAYAQUIL
4.1 Archivo
El sistema almacena las tareas de auditoria en un formato de archivo
creado y no convencional y contenido en una carpeta, lo realizado por el
auditor; su extensión es *.sac y los resultados en subtablas como *.suc.
4.2 Identificación de escenarios o casos de uso
En la fase del análisis se identifico los posibles escenarios y actores que
interactúan con el sistema mediante el diagrama de casos de uso
representaremos la forma en como el Usuario - Administrador (Auditor)
opera con el sistema en desarrollo.
CISC UNIVERSIDAD DE GUAYAQUIL
CISC UNIVERSIDAD DE GUAYAQUIL
Nombre: Ingresar al sistemaAutor: Grupo 12Fecha: 19/07/08Descripción:
Visualización del menú Principal Actores:
Auditor va iniciar una sesión de trabajo Precondiciones:
Inicio de la aplicaciónFlujo Normal:
1. El actor pulsa sobre el icono para el ingreso al sistema
2. El actor visualiza la ventana de la aplicación
Flujo Alternativo:
El sistema permite mostrar la consola para poder mostrar varios
tipos de actores que realizaron las pruebasPoscondiciones:
Inicio de las pruebas de auditoria creando clientes y archivos de
datos.
Tabla 5
Nombre: MenúAutor: Grupo 12Fecha: 19/07/08Descripción:
Menú de opciones del Sistemas Actores:
Auditor iniciar una operación de trabajoPrecondiciones:
Inicio de la aplicaciónFlujo Normal:
1. El actor pulsa sobre las opciones de menús
2. El sistema visualiza las opciones que contienen los menús y
operaciones que se pueden realizar
3. El sistema permite dar el clicado en cada uno de las opciones
4. El actor accede a los cuadros de dialogo después de dar clic en
alguna opción de menú Flujo Alternativo:
El sistema comprueba la validez de las opciones, si los datos no
son correctos, se avisa al actor de ello permitiéndole informar de
el error cometidoPoscondiciones:
Normal funcionamiento de las opciones de menú. Tabla 6
Nombre: Barra de Herramienta
CISC UNIVERSIDAD DE GUAYAQUIL
Autor: Grupo 12Fecha: 19/07/08Descripción:
opciones de herramientas mas utilizados del Sistemas Actores:
Auditor realiza operaciones de auditoria Precondiciones:
Inicio de la aplicaciónFlujo Normal:
1. El actor pulsa sobre las opciones de la barra de herramientas
2. El sistema permite dar el clicado en cada uno de las opciones y
realizar operaciones que se realizan a través de los cuadro de
diálogos. Flujo Alternativo:
El sistema comprueba la validez de las opciones, si los datos son
correctos, se accede a las operaciones específicas al actor, sino
aparecerán notificaciones de error. Poscondiciones:
Normal funcionamiento de las opciones. Tabla 7
Nombre: Explorador de datosAutor: Grupo 12Fecha: 19/07/08Descripción:
Consola de trabajo Actores:
CISC UNIVERSIDAD DE GUAYAQUIL
Auditores que realizan las operación sobre un área de trabajo
especificasPrecondiciones:
Inicio de la aplicaciónFlujo Normal:
1. El actor crea cliente y archivos de base de datos
2. El sistema permite eliminar clientes, tablas y subtablas.
Flujo Alternativo:
El sistema comprueba la validez de las opciones, si los datos son
correctos continua realizando sus operaciones, sino aparecerán
notificaciones de error. Poscondiciones:
Normal funcionamiento de las opciones.
CISC UNIVERSIDAD DE GUAYAQUIL
Tabla 8
CISC UNIVERSIDAD DE GUAYAQUIL
Nombre: Ventana de tablas importadasAutor: Grupo 12Fecha: 19/07/08Descripción:
Visualización del contenido de alguna tabla especifica importada de
alguna base de datos Actores:
Auditores que realizan las operación sobre un área de trabajo
especificasPrecondiciones:
Inicio de la aplicaciónFlujo Normal:
1. El actor visualiza los registros de las tablas, sus tipos de datos,
columnas virtuales y filtros
2. El sistema permite realizar cálculos con los registros
importados de tablas. Flujo Alternativo:
El sistema comprueba la validez de las opciones en el editor de
formulas, si los datos son correctos continua realizando sus
operaciones, sino aparecerán notificaciones de error. Poscondiciones:
Normal funcionamiento de las opciones.
4.3 Selección de clases y objetos usando los requisitos básicos
como guías.
El modelado de clases-responsabilidades-colaboraciones (CRC)
aporta un medio sencillo de identificar y organizar las clases que
resulten relevantes al sistema.
Tablas de clases del sistema
CISC UNIVERSIDAD DE GUAYAQUIL
Tabla 9
Nombre de la clase: Ingreso al sistemaTipo de la clase: EventoCaracterísticas de la clase: concurrenteResponsabilidades: Colaboradores:Auditor Sistema Operativo
Tabla 10
CISC UNIVERSIDAD DE GUAYAQUIL
Nombre de la clase: Importación de Bases de Datos
Tipo de la clase: Evento
Características de la clase: concurrente
Responsabilidades: Colaboradores:
Auditor Base de datos configurada vía ODBC
Tabla 11
Nombre de la clase: Operaciones con los datos
Tipo de la clase: Evento
Características de la clase: concurrente
Responsabilidades: Colaboradores:
Auditor Tablas importadas
Tabla 12
4.4 Configuración del Software CAAT LUPA 1.0
Este sistema Operativo (Windows Xp) me permite realizar operaciones
como ODBC por ende se debe configurar a mas de el, Se debe
realizar la respectiva instalación Visual Studio 2005.net software de
Microsoft con los respectivos paquetes principales que son necesarios
como Spread Windows Forms
CISC UNIVERSIDAD DE GUAYAQUIL
Nombre de la clase: Emisión de Reportes
Tipo de la clase: Evento
Características de la clase: concurrente
Responsabilidades: Colaboradores:
Auditor Resultados de las operaciones
Tabla 13
Nombre de la clase: Almacenamiento de los resultados
Tipo de la clase: Evento
Características de la clase: concurrente
Responsabilidades: Colaboradores:
Auditor Resultados de las operaciones
Tabla 14
4.4.1 Instalación deL sistema Operativo Windows XP
Características de la maquina:
Procesador Pentium IV 2.8 Ghz,
Memoria 5!2 mb,
Disco duro 80 Gb,
Bus de datos de 800
Giga de memoria Cache
Memoria Ram de 1 Gb
Monitor de 17’’
Puertos usb
Unidad de dvd/cd-rom
Podemos realizar la instalación de Sistema operativo, Visual Studio,
Spread anteriormente cometido el formato y partición del disco duro.
4.5 Configuración del ODBC de las bases de datos
Una vez que tenemos la base de datos, información esta son o serán
configuradas a que tengamos una conexión a la aplicación para la
importación de datos. Mediante la opción de Herramientas
Administrativas del panel de control
4.6 Instalación de CAAT Lupa 1. 0
El software ya terminado se procede a crear discos de distribución y
luego se procede al instalar en una maquina de manera local.
CAPÍTULO V
CISC UNIVERSIDAD DE GUAYAQUIL
RECOMENDACIONES Y
CONCLUSIONES
Este capitulo trata sobre las necesidades
del sistema LUPA 1.0.
Aquí se trata de tomar todas las
prevenciones para que de esta manera el
sistema implementado funcione de manera
correcta y así no existan fallas.
5.1. Recomendaciones
Quienes deseen instalar el sistema LUPA 1.0 le recomendamos que
tomen en cuenta en referencia al hardware y al software.
CISC UNIVERSIDAD DE GUAYAQUIL
5.1.1 Hardware
El equipo utilizado debe cumplir con los requisitos mínimos
especificados en el manual técnico, ya que de otra manera el
funcionamiento del sistema presentaría problemas.
Es necesario una correcta instalación equipo local o de red de
los equipos que estarán conectadas cumpliendo con los
respectivos estándares o normas de red de equipos. .
5.1.2. Software
Nuestra aplicación se ha desarrollado bajo el sistema
operativo Windows XP y desarrollado en Visual Studio. Net
2005 y de Spread Forms
Es necesario hacer una configuración de Orígenes de Datos
ODBC de las bases de datos, para el correcto funcionamiento
del sistema en cuestión..
5.2 Conclusiones
CISC UNIVERSIDAD DE GUAYAQUIL
La implementación de esta aplicación por parte de uno o de varios
usuarios que la utilizarán les permitirá una fácil configuración de una
red TCP/IP para acceso bajo la plataforma Microsoft vía ODBC, el
diseño esta basado con herramientas fácil de utilizar y con una
interfaz amigable, esperamos proporcionarles a los usuarios una
herramienta que se constituya en una ayuda fundamental para la
configuración de los mencionados recursos de Microsoft y Visual
Studio.Net 2005.
El manejo de las seguridades que tiene esta aplicación es su propio
sistema de archivo es decir que no puede vulnerarse como cualquier
archivo convencional, su contenido. .
También esperamos que con la utilización de este sistema poder
incentivar a los auditores a utilizar un sistema genérico que no existe
en el mercado local actualmente.
Con LUPA 1.0 las pequeñas y medianas empresas de auditoria o
persona naturales podrán hacer un ahorro sustancial en sus
economías al no tener que adquirir un software en otro lugar fuera del
país.
La aplicación realizada en este seminario fue obtenido con ayuda del
ingenio personal de cada estudiante de este grupo, es recomendable
tomar como guía software similares, libros de auditoria como
referencia CAAT., caso contrario las metas no serian cumplidas.
CISC UNIVERSIDAD DE GUAYAQUIL
INDICE GENERAL
AGRADECIMIENTO IDEDICATORIA IITRIBUNAL DE GRADUACIÓN VIIDECLARACIÓN EXPRESA VIIIRESUMEN IXINDICE GENERAL X
INDICE DE CONTENIDO
PARTE ICAPÍTULO 1
INTRODUCCIÓN 11.1 ANTECEDENTES 21.2 PROBLEMÁTICA 31.3 SOLUCIÓN DE LA PROBLEMÁTICA 31.4 MISIÓN 41.5 VISIÓN 41.6 OBJETIVOS GENERALES 51.7 OBJETIVOS ESPECÍFICOS 51.8 ALCANCES 61.9 VENTAJAS 71.10 DESVENTAJAS 71.11 METODOLOGIA DE DESARROLLO DEL PROYECTO 8 1.11.1 MODELO DE DESARROLLO 8 1.11.2 METODOLOGIA 91.12 ARQUITECTURA 111.13 RECURSOS 12
1.13.1 HUMANO 121.13.2 HARDWARE 121.13.3 SOFTWARE 13
1.14 PROCESO DE PLANIFICAICON Y CRONOGRAMA 131.14.1 CRONOGRAMA DE ACTIVIDADES 15
1.14.2 METODOS DE ESTIMACION 16
CAPITULO II: ANALISIS 192.1. LEVANTAMIENTO DE INFORMACION 20 2.1.1 INVESTIGACION DE LA COMPETENCIA 202.2. ANALISIS DE REQUERIMIENTOS 28 2.2.1 ANALSIS DE RECURSOS HUMANOS 282.3. ESTUDIO DE FACTIBILIDAD 282.4. ANALISIS DE ORIENTADO A OBJETO 30
2.4.1. DEFINICIOON DE USUARIO DEL SISTEMA 30 2.4.2 ESPECIFICACIONES DE LOS REQUISITOS DEL SISTEMA 30 2.4.3. DIAGRAMA OBJETO RELACION 31 2.4.4 DIAGRAMA DE CASO DE USO 32 2.4.4.1 DIAGRAMA GENERAL DEL SISTEMA 33
2.4.4.2 DIAGRAMA DE MENU 34 2.4.4.3 DIAGRAMA DE BARRAS DE HERRAMIENTAS 352.4.4.4 DIAGRAMA DE EXPLORADOR DE DATOS 362.4.4.5 DIAGRAMA DE VENTANA DE TABLAS IMPORTADAS 37
2.4.5 DIAGRAMA DE FLUJO DE OBJETOS DEL SISTEMA 38 2.4.5.1 DIAGRAMA DE FLUJO DE OBJETOS. NIVEL 2 39 2.4.5.2 DIAGRAMA DE FLUJO DE OBJETOS. NIVEL 3 40 2.4.6 DIAGRAMA DE SECUENCIA 41 2.4.7 DIAGRAMAS DE TRANSICION DE ESTADO 42
CAPITULO IIIDISEÑO 443.1. DISEÑO ARQUITECTONICO DEL SISTEMA 453.1.1 DESCRIPCION DEL DISEÑO ARQUITECTONICO DEL SISTEMA 463.2 DISEÑO DE DATOS 47
3.2.1 IMPORTACION DE DATOS 473.2.2 OPERACIONES A REALIZAR CON DATOS IMPORTADOS 473.2.3 EMISION DE REPORTES 47
3.3 DISEÑO DE LA INTERFAZ 483.3.1 MENU PRINCIPAL 483.3.2 ARCHIVO CONEXIÓN 49
3.3.3 BREVE DESCRIPCION DE LOS MODULOS 55
CAPITULO IVDESARROLLO DEL SISTEMA 564.1. ARCHIVO 574.2. IDENTIFICACION DE ESCENARIOS 574.3 SELECCIÓN DE CLASES Y OBJETOS USANDO LOS REQUISITOS BÁSICOS COMO GUÍAS.
63
4.3.CONFIGURACION DEL SISTEMA LUPA 1.0 654.3.1. INSTALACION DEL SISTEMA OPERATIVO WINDOWS XP 65
4.4. CONFIGURACION DEL ODBC DE LAS BASES DE DATOS 654.5. INSTALACION DE LUPA 1.0 65
CAPITULO VRECOMENDACIONES Y CONCLUSIONES 665.1 RECOMENDACIONES 67
5.1.1. HARDWARE 675.1.2. SOFTWARE 67
5.2. CONCLUSIONES 68
INDICE DE FIGURAS
FIGURA 1 8FIGURA 2 11FIGURA 3 15FIGURA 4 16FIGURA 5 22FIGURA 6 22FIGURA 7 23FIGURA 8 23FIGURA 9 24FIGURA 10 24FIGURA 11 25FIGURA 12 26FIGURA 13 31FIGURA 14 33FIGURA 15 34FIGURA 16 35FIGURA 17 36FIGURA 18 37FIGURA 19 38FIGURA 20 39FIGURA 21 40FIGURA 22 41FIGURA 23 42FIGURA 24 42FIGURA 25 43FIGURA 26 45FIGURA 27 48
FIGURA 28 48FIGURA 29 49FIGURA 30 49FIGURA 31 50FIGURA 32 50FIGURA 33 51FIGURA 34 51FIGURA 35 52FIGURA 36 52FIGURA 37 53FIGURA 38 53FIGURA 39 54FIGURA 40 54FIGURA 41 55
INDICE DE TABLAS
TABLA 1 17TABLA 2 17TABLA 3 18
TABLA 4 29TABLA 5 58TABLA 6 59TABLA 7 60TABLA 8 61TABLA 9 62TABLA 10 63TABLA 11 63TABLA 12 64TABLA 13 64TABLA 14 64
Manual Tecnico
Herramienta CAATS
LUPA 1.0
INTRODUCCIÓN
Para orientar al administrador que vaya a utilizar el
sistema se presenta a continuación el manual técnico,
en la cual se detallará las configuraciones necesarias y
el funcionamiento del mismo para poner en marcha el
sistema de una forma bien estructurada y así hacerle
una tarea más fácil.
La Herramienta Caats requiere de la instalación y
configuración de algunos programas, necesarios para
iniciar la aplicación y para su correcta funcionalidad, el
usuario deberá referirse al manual técnico que se
encuentra más adelante en este tomo.
CISC UNIVESRIDAD DE GUAYAQUIL
37
El sistema CAAT Lupa 1.0 esta desarrollado bajo la
plataforma Microsoft al cual se accede mediante la
ejecución del mismo una vez instalado en una PC, que
a su vez es interactúa con el Lenguaje de
Programación Visual Basic.Net 2005 que es utilizado
para la interfaz grafica del sistema, además con el
componente Spread Forms de Windows y
configuración de ODBC para la configuración de la
importación de las bases de Datos de cualquier tipo
para realizar con sus datos las pruebas.
CISC UNIVESRIDAD DE GUAYAQUIL
38
Arquitectura del sistema
Diagrama de Flujo de Objetos del Sistema Herramienta CAAT- Nivel 1
DIAGRAMA 1
CISC UNIVESRIDAD DE GUAYAQUIL
Interfaz de usuario
Interfaz del sistema
Crear carpeta de trabajo
Importar Archivo o Base de Datos
Ejecutar proceso
Diseñar informe
Consultar
ALMACENAR
1 2
Imprimir
40
Diagrama de Flujo de Objetos. Nivel 2
Ejecutar Proceso
DIAGRAMA 2
CISC UNIVESRIDAD DE GUAYAQUIL
1Seleccionar tipo de operación
Ejecutar la operación
Verificación operación 2
41
Diagrama de Flujo de Objetos. Nivel 3
Diseñar informe
DIAGRAMA 3
CISC UNIVESRIDAD DE GUAYAQUIL
2
Seleccionar los resulta-dos en campos
Modificar la configura-ción de los campos
Guardar la configu-ración
Crear informe
Vista Preliminar del informe
Imprimir informe
42
Diagrama de Secuencia
DIAGRAMA 4
CISC UNIVESRIDAD DE GUAYAQUIL
APLICACION
AUDITOR
INFORMACION
EXTRAER INFORMACION
GENERAR INFORMES
COMPROBAR INFORMACION
43
Diagrama de Transición de Estado
AUDITOR
NULA
DISPONIBLE
NO DISPONIBLE
DIAGRAMA 5
APLICACIÓN
NULA
DISPONIBLE
NO DISPONIBLE
EN ESPERA
CISC UNIVESRIDAD DE GUAYAQUIL
44
DIAGRAMA 6
INFORMACION
NULA
SOLICITADA
EN ESPERA
DENEGADA
CANCELADA
ARCHIVADA
DIAGRAMA 7
CISC UNIVESRIDAD DE GUAYAQUIL
45
Configuración ODBCEsta configuración permite comunicarse con las bases de datos instaladas en el equipo mediante un DSN, los pasos que se realiza son los siguientes:
1.- Clic en Inicio, Panel de Control, doble clic en Herramientas Administrativas.
FIGURA 502.-Dentro de Herramientas administrativas y luego damos clic en Orígenes de datos
FIGURA 513.- A continuación aparecerá la Administración de Orígenes de datos
CISC UNIVESRIDAD DE GUAYAQUIL
46
FIGURA 524.- Luego damos clic en Agregar….y a continuación la ventana Crear un nuevo origen de datos
5.- A continuación seleccionamos un controlador para establecer el origende datos
FIGURA 53
6.- Seleccionamos hacemos clic en Finalizar y luego aparecerá el siguiente cuadro de Configuración de ODBC, donde se establece el nombre del origen de datos
CISC UNIVESRIDAD DE GUAYAQUIL
47
FIGURA 54
7.-Hacemos clic en Seleccionar para que aparezca el siguiente cuadro de dialogo
FIGURA 55
8.-Escogemos la unidad donde se encuentra la base de datos ya sea enel C: o en otra ubicación, y luego seleccionamos la base de datos encuestión y luego regresamos al cuadro anterior y damos clic en aceptar enlos cuadro subsiguientes y aparecerá el origen de datos que hemoscreado.
CISC UNIVESRIDAD DE GUAYAQUIL
48
Código Fuentes para elegir una tabla para realiza la PruebaAgregar tablaImports System.Windows.FormsImports System.Data.OdbcImports System.IOPublic Class AgregarTabla
Enum Tipo_Archivo Access = 1 Excel = 2 VFP_1 = 3 Texto = 4
End Enum
Dim paso_asistente As Integer Dim tipo_importacion As Boolean Dim pos_top As Integer Dim pos_left As Integer Dim ancho As Integer Dim alto As Integer
Dim DSN_ODBC As String Dim Tabla_BD As String Dim archivo_datos As String Dim t_archivo As Tipo_Archivo Public directorio As String Public tvNodo As TreeNode
Private Sub AgregarTabla_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load pos_top = Importacion_tipo.Top pos_left = Importacion_tipo.Left ancho = Importacion_tipo.Width alto = Importacion_tipo.Height
CISC UNIVESRIDAD DE GUAYAQUIL
49
ODBC_1.Top = pos_top ODBC_1.Left = pos_left ODBC_1.Width = ancho ODBC_1.Height = alto
ODBC_2.Top = pos_top ODBC_2.Left = pos_left ODBC_2.Width = ancho ODBC_2.Height = alto
ODBC_3.Top = pos_top ODBC_3.Left = pos_left ODBC_3.Width = ancho ODBC_3.Height = alto
tipo_importacion = True paso_asistente = 1 End Sub
Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged 'archivo tipo_importacion = True TxtNombreArchivo.Enabled = True CmbTipoArchivo.Enabled = True Button1.Enabled = True End Sub
Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged 'ODBC tipo_importacion = False TxtNombreArchivo.Enabled = False CmbTipoArchivo.Enabled = False Button1.Enabled = False End Sub
Private Sub BtnSgte_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSgte.Click If tipo_importacion Then 'archivo
Select Case paso_asistente Case 1 If TxtNombreArchivo.Text.Trim = "" Then MsgBox("Debe seleccionar un archivo ...", MsgBoxStyle.Critical) Exit Sub
CISC UNIVESRIDAD DE GUAYAQUIL
50
End If Importacion_tipo.Visible = False BtnAtras.Visible = True ODBC_2.Visible = True
TablasBaseDatos(getDriver() & " DBQ= " & TxtNombreArchivo.Text.Trim) Case 2 If Tabla_BD = "" Then MsgBox("Debe seleccionar un tabla de la lista ...", MsgBoxStyle.Critical) Exit Sub End If TxtNombreArchivoODBC.Text = Tabla_BD ODBC_2.Visible = False ODBC_3.Visible = True BtnSgte.Text = "Finalizar" Case 3 If TxtNombreArchivoODBC.Text = "" Then MsgBox("Debe escribir un nombre al archivo ...", MsgBoxStyle.Critical) Exit Sub End If
Dim frm As New FrmTabla Dim sql As String sql = "select * from " & "[" & Tabla_BD & "]"
frm.directorio = Me.directorio frm.nombre_archivo = TxtNombreArchivoODBC.Text.Trim
frm.CargarDatos(Tabla_BD, archivo_datos, sql, False) frm.Text = Tabla_BD
'agregando nodo frm.tvNodo = tvNodo.Nodes.Add(frm.nombre_archivo, frm.nombre_archivo, 3, 3) frm.tvNodo.ForeColor = Color.DarkBlue frm.tvNodo.NodeFont = New Font("Arial", 10, FontStyle.Bold) MDIPrincipal.CargarFormaTabla(frm)
Me.DialogResult = System.Windows.Forms.DialogResult.OK Me.Close()
'FRMarchivo.tvNodo = Me.TreeView.SelectedNode 'FRMarchivo.MdiParent = My.Forms.MDIPrincipal 'FRMarchivo.OpenArchivo(directorio & namefile) 'FRMarchivo.Show()
CISC UNIVESRIDAD DE GUAYAQUIL
51
'TreeView.SelectedNode.ForeColor = Color.DarkBlue 'TreeView.SelectedNode.NodeFont = New Font("Arial", 10, FontStyle.Bold) End Select If paso_asistente < 3 Then paso_asistente = paso_asistente + 1 Else 'dsn Select Case paso_asistente Case 1 ODBC_1.Visible = True Importacion_tipo.Visible = False BtnAtras.Visible = True Case 2 If DSN_ODBC = "" Then MsgBox("Debe seleccionar un DSN de la lista ...", MsgBoxStyle.Critical) Exit Sub End If ODBC_1.Visible = False ODBC_2.Visible = True TablasBaseDatos("DSN=" & DSN_ODBC & ";UID=;PWD=") Case 3 If Tabla_BD = "" Then MsgBox("Debe seleccionar un tabla de la lista ...", MsgBoxStyle.Critical) Exit Sub End If TxtNombreArchivoODBC.Text = Tabla_BD ODBC_2.Visible = False ODBC_3.Visible = True BtnSgte.Text = "Finalizar" Case 4 'finalizar If TxtNombreArchivoODBC.Text = "" Then MsgBox("Debe escribir un nombre al archivo ...", MsgBoxStyle.Critical) Exit Sub End If
Dim frm As New FrmTabla Dim sql As String sql = "select * from " & "[" & Tabla_BD & "]"
frm.directorio = Me.directorio frm.nombre_archivo = TxtNombreArchivoODBC.Text.Trim
frm.CargarDatos(Tabla_BD, "DSN=" & DSN_ODBC & ";UID=;PWD=", sql, True) frm.Text = Tabla_BD
'agregando nodo
CISC UNIVESRIDAD DE GUAYAQUIL
52
frm.tvNodo = tvNodo.Nodes.Add(frm.nombre_archivo, frm.nombre_archivo, 3, 3) frm.tvNodo.ForeColor = Color.DarkBlue frm.tvNodo.NodeFont = New Font("Arial", 10, FontStyle.Bold)
MDIPrincipal.CargarFormaTabla(frm)
Me.DialogResult = System.Windows.Forms.DialogResult.OK Me.Close() End Select If paso_asistente < 4 Then paso_asistente = paso_asistente + 1 End If
End Sub
Private Sub BtnAtras_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAtras.Click
If paso_asistente > 1 Then BtnSgte.Text = "Siguiente"
If paso_asistente = 2 Then Importacion_tipo.Visible = True BtnAtras.Visible = False End If
If tipo_importacion Then 'archivo Select Case paso_asistente Case 2 ODBC_2.Visible = False Case 3 ODBC_2.Visible = True ODBC_3.Visible = False End Select Else 'dsn Select Case paso_asistente Case 2 ODBC_1.Visible = False Case 3 ODBC_1.Visible = True ODBC_2.Visible = False Case 4 ODBC_2.Visible = True ODBC_3.Visible = False End Select End If paso_asistente = paso_asistente - 1 End If
CISC UNIVESRIDAD DE GUAYAQUIL
53
End Sub
Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click Me.DialogResult = System.Windows.Forms.DialogResult.Cancel Me.Close() End Sub
Private Sub CmbBoxTipoDSN_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmbBoxTipoDSN.SelectedIndexChanged Dim c_DSN As New Collection, Name_DSN As Object
ListaDSN.Items.Clear() DSN_ODBC = "" Tabla_BD = ""
If CmbBoxTipoDSN.SelectedIndex = 0 Then Call listar_Dsn(c_DSN, E_DSN.Sistema) Else Call listar_Dsn(c_DSN, E_DSN.Usuario) End If
For Each Name_DSN In c_DSN ListaDSN.Items.Add(CStr(Name_DSN)) Next End Sub
Private Sub ListaDSN_SelectedIndexChanged(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles ListaDSN.SelectedIndexChanged DSN_ODBC = ListaDSN.SelectedItem End Sub
Friend Sub TablasBaseDatos(ByVal cadenaConexion As String)
Try Dim dbConnection As New OdbcConnection dbConnection.ConnectionString = cadenaConexion dbConnection.Open()
Dim nomTablas() As String Dim dataTable As Data.DataTable
Dim i As Integer
dataTable = dbConnection.GetSchema("Tables") i = dataTable.Rows.Count - 1 ListaEntidades.Items.Clear() If i > -1 Then
CISC UNIVESRIDAD DE GUAYAQUIL
54
ReDim nomTablas(i) For i = 0 To dataTable.Rows.Count - 1 ListaEntidades.Items.Add(dataTable.Rows(i).Item("Table_Name").ToString()) Next End If
Catch ex As Exception MsgBox(ex.ToString) Finally Beep() End Try
End Sub
Private Sub ListaEntidades_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListaEntidades.SelectedIndexChanged Dim cadena_conexion As String cadena_conexion = "" If tipo_importacion Then 'archivo Select Case t_archivo Case Tipo_Archivo.Access 'access cadena_conexion = getDriver() & " DBQ=" & TxtNombreArchivo.Text.Trim Case Tipo_Archivo.Excel 'excel cadena_conexion = getDriver() & " DBQ=" & TxtNombreArchivo.Text.Trim Case Tipo_Archivo.VFP_1 'VFP_1 cadena_conexion = getDriver() & "SOURCETYPE=dbf;SOURCEDB=" & TxtNombreArchivo.Text.Trim Case Tipo_Archivo.Texto 'texto cadena_conexion = getDriver() & " DBQ=" & TxtNombreArchivo.Text.Trim End Select archivo_datos = cadena_conexion Else 'dsn cadena_conexion = "DSN=" & DSN_ODBC & ";UID=;PWD=" End If Tabla_BD = ListaEntidades.SelectedItem CamposTabla(Tabla_BD, cadena_conexion) End Sub
Friend Sub CamposTabla(ByVal tabla As String, ByVal CadenaConexion As String) Try Dim dbConnection As New OdbcConnection
dbConnection.ConnectionString = CadenaConexion
CISC UNIVESRIDAD DE GUAYAQUIL
55
dbConnection.Open()
Dim nomTablas() As String Dim dataTable As DataTable
Dim i As Integer
dataTable = dbConnection.GetSchema("Columns", New String() {Nothing, Nothing, tabla}) i = dataTable.Rows.Count - 1 ListaCampos.Items.Clear() If i > -1 Then ReDim nomTablas(i) For i = 0 To dataTable.Rows.Count - 1 ListaCampos.Items.Add(dataTable.Rows(i).Item("Column_name").ToString()) Next End If
Catch ex As Exception MsgBox(ex.ToString) Finally Beep() End Try
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If CmbTipoArchivo.SelectedIndex = -1 Then MsgBox("Debe seleccionar un tipo de archivo")
Else Dim myStream As Stream Dim openFileDialog1 As New OpenFileDialog() Dim extension As String = ""
openFileDialog1.InitialDirectory = "c:\" Select Case t_archivo Case Tipo_Archivo.Access 'access extension = "access files (*.mdb)|*.mdb" Case Tipo_Archivo.Excel 'excel extension = "excel files (*.xls)|*.xls" Case Tipo_Archivo.VFP_1 'VFP_1 extension = "dBase files (*.dbc)|*.dbc" Case Tipo_Archivo.Texto 'texto extension = "txt files (*.txt)|*.txt" End Select
CISC UNIVESRIDAD DE GUAYAQUIL
56
openFileDialog1.Filter = extension openFileDialog1.FilterIndex = 2 openFileDialog1.RestoreDirectory = True
If openFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then myStream = openFileDialog1.OpenFile() If Not (myStream Is Nothing) Then TxtNombreArchivo.Text = openFileDialog1.FileName myStream.Close() End If End If End If End Sub
Private Sub CmbTipoArchivo_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmbTipoArchivo.SelectedIndexChanged If CmbTipoArchivo.SelectedIndex = -1 Then MsgBox("Debe seleccionar un tipo de archivo") Else Select Case CmbTipoArchivo.SelectedIndex Case 0 'access t_archivo = Tipo_Archivo.Access Case 1 'excel t_archivo = Tipo_Archivo.Excel Case 2 'VFP_1 t_archivo = Tipo_Archivo.VFP_1 Case 3 'texto t_archivo = Tipo_Archivo.Texto End Select End If End Sub
Private Function getDriver() As String Dim driver As String driver = "" Select Case t_archivo Case Tipo_Archivo.Access 'access driver = "Driver={Microsoft Access Driver (*.mdb)};" Case Tipo_Archivo.Excel 'excel driver = "Driver={Microsoft Excel Driver (*.xls)};" Case Tipo_Archivo.VFP_1 'VFP driver = "Driver={MICROSOFT VISUAL FOXPRO DRIVER (*.dbc)}; SOURCETYPE=DBC; SOURCEDB= " Case Tipo_Archivo.Texto 'texto driver = "Driver={Microsoft Text Driver (*.txt; *.csv)}; DBQ=" End Select Return driver
CISC UNIVESRIDAD DE GUAYAQUIL
57
End Function
Private Sub Importacion_tipo_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Importacion_tipo.Enter
End SubEnd Class
Frmeliminar columna
Public Class FrmEliminarColumna Public campo As String Public Sub LoadCamposCombo(ByVal h As FarPoint.Win.Spread.SheetView) 'lista de campos campo = "" With h Dim c As Integer For c = 0 To .ColumnCount - 1 CmbListaCampo.Items.Add(.Columns(c).Label) Next End With
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If CmbListaCampo.Text.Trim.Length = 0 Then MsgBox("Debe seleccionar un campo de la lista ...", MsgBoxStyle.Critical) Else campo = CmbListaCampo.Text.Trim Me.Close() End If End Sub
Private Sub FrmEliminarColumna_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End SubEnd Class
CISC UNIVESRIDAD DE GUAYAQUIL
58
Frmaexplorer
Public Class FrmExplorer
Private Sub FrmExplorer_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing e.Cancel = True End Sub
Private Sub Explorer1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 'SetUpListViewColumns() LoadTree() 'Me.TreeView.CheckBoxes = True End Sub
Public Sub CargarAuditores()
Dim tvAuditores As TreeNode Dim tvCliente As TreeNode
Me.TreeView.Nodes.Clear() MDIPrincipal.LblNombreCliente.ComboBox.Items.Clear()
Dim directorio_auditores As String
directorio_auditores = Trim(My.Application.Info.DirectoryPath & "\AUDITORES")
tvAuditores = Me.TreeView.Nodes.Add("Auditores", "Auditores", 0, 1)
If My.Computer.FileSystem.DirectoryExists(directorio_auditores) Then Dim fileList As System.Collections.ObjectModel.ReadOnlyCollection(Of String)
fileList = My.Computer.FileSystem.GetDirectories(directorio_auditores, FileIO.SearchOption.SearchTopLevelOnly)
For Each foundDirectory As String In My.Computer.FileSystem.GetDirectories(directorio_auditores, FileIO.SearchOption.SearchTopLevelOnly) tvCliente = tvAuditores.Nodes.Add(foundDirectory.Substring(directorio_auditores.Length + 1), _ foundDirectory.Substring(directorio_auditores.Length + 1), 2, 2) cargarBD(foundDirectory, tvCliente)
CISC UNIVESRIDAD DE GUAYAQUIL
59
MDIPrincipal.LblNombreCliente.ComboBox.Items.Add(foundDirectory.Substring(directorio_auditores.Length + 1)) MDIPrincipal.LblNombreCliente.ComboBox.SelectedIndex = 0 Next Else MsgBox("creado directorio ..\auditores") My.Computer.FileSystem.CreateDirectory(directorio_auditores) End If Me.TreeView.ExpandAll()
End Sub
Private Sub cargarBD(ByVal auditor As String, ByVal tvCliente As TreeNode) Dim tvBD As TreeNode For Each foundDirectory As String In My.Computer.FileSystem.GetDirectories(auditor, FileIO.SearchOption.SearchTopLevelOnly) tvBD = tvCliente.Nodes.Add(foundDirectory.Substring(auditor.Length + 1), _ foundDirectory.Substring(auditor.Length + 1), 4, 4) cargarFilesSAC(foundDirectory, tvBD) tvBD.ForeColor = Color.CadetBlue Next End Sub
Private Sub cargarFilesSAC(ByVal auditor As String, ByVal tvCliente As TreeNode) Dim tvF As TreeNode
For Each foundDirectory As String In My.Computer.FileSystem.GetDirectories(auditor, FileIO.SearchOption.SearchTopLevelOnly)
tvF = tvCliente.Nodes.Add(foundDirectory.Substring(auditor.Length + 1), _ foundDirectory.Substring(auditor.Length + 1), 3, 3)
cargarSubTablas(foundDirectory, tvF) tvF.ForeColor = Color.DarkGray tvF.NodeFont = New Font("Arial", 10, FontStyle.Regular) Next End Sub
Private Sub cargarSubTablas(ByVal auditor As String, ByVal tvCliente As TreeNode) Dim tvS As TreeNode
CISC UNIVESRIDAD DE GUAYAQUIL
60
Dim nombre_file As String
For Each foundDirectory As String In My.Computer.FileSystem.GetFiles(auditor, FileIO.SearchOption.SearchTopLevelOnly, "*.SUB") nombre_file = foundDirectory.Substring(auditor.Length + 1) nombre_file = nombre_file.Substring(0, nombre_file.Length - 4)
tvS = tvCliente.Nodes.Add(nombre_file, nombre_file, 5, 5) tvS.ForeColor = Color.DarkGray tvS.NodeFont = New Font("Arial", 10, FontStyle.Regular) Next End Sub
Private Sub LoadTree() CargarAuditores() End Sub
Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Global.System.Windows.Forms.Application.Exit() End Sub
Private Sub TreeView_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeView.DoubleClick AbrirArchivoTree() End Sub
Public Sub AbrirArchivoTree() If Not IsNothing(TreeView.SelectedNode.NodeFont) Then If TreeView.SelectedNode.SelectedImageIndex = 3 And TreeView.SelectedNode.NodeFont.Bold = False Then 'nodo archivos
Dim FRMarchivo As New FrmTabla Dim directorio As String Dim namefile As String
directorio = Trim(My.Application.Info.DirectoryPath & "\AUDITORES\") & _ Me.TreeView.SelectedNode.Parent.Parent.Text.Trim & "\" &_ Me.TreeView.SelectedNode.Parent.Text.Trim()
namefile = "\" & Me.TreeView.SelectedNode.Text.Trim & ".sac"
FRMarchivo.directorio = directorio FRMarchivo.tvNodo = Me.TreeView.SelectedNode FRMarchivo.MdiParent = My.Forms.MDIPrincipal
CISC UNIVESRIDAD DE GUAYAQUIL
61
FRMarchivo.OpenArchivo(directorio & "\" & Me.TreeView.SelectedNode.Text.Trim & namefile) FRMarchivo.Top = 0 FRMarchivo.Left = TreeView.Width + 10 FRMarchivo.Show()
TreeView.SelectedNode.ForeColor = Color.DarkBlue TreeView.SelectedNode.NodeFont = New Font("Arial", 10, FontStyle.Bold)
ElseIf TreeView.SelectedNode.SelectedImageIndex = 5 And TreeView.SelectedNode.NodeFont.Bold = False Then 'nodo archivos
Dim FRMarchivo As New FrmSubTabla Dim directorio As String Dim namefile As String
directorio = Trim(My.Application.Info.DirectoryPath & "\AUDITORES\") & _ Me.TreeView.SelectedNode.Parent.Parent.Parent.Text.Trim & "\" & _ Me.TreeView.SelectedNode.Parent.Parent.Text.Trim & "\" &_ Me.TreeView.SelectedNode.Parent.Text.Trim()
namefile = "\" & Me.TreeView.SelectedNode.Text.Trim & ".sub"
FRMarchivo.tvNodo = Me.TreeView.SelectedNode FRMarchivo.MdiParent = My.Forms.MDIPrincipal FRMarchivo.OpenArchivo(directorio & "\" & namefile) FRMarchivo.Top = 0 FRMarchivo.Left = TreeView.Width + 10 FRMarchivo.Show()
TreeView.SelectedNode.ForeColor = Color.DarkBlue TreeView.SelectedNode.NodeFont = New Font("Arial", 10, FontStyle.Bold) End If End If End Sub
Private Sub EliminarArchivoTree() Dim directorio As String Dim namefile As String
If Not IsNothing(TreeView.SelectedNode.NodeFont) Then Select Case TreeView.SelectedNode.SelectedImageIndex Case 0 MsgBox("Directorio raiz")
CISC UNIVESRIDAD DE GUAYAQUIL
62
Case 1
Case 2
Case 3 If TreeView.SelectedNode.NodeFont.Bold Then 'nodo archivos MsgBox("El archivo esta abierto, debe estar cerrado para poder eliminarlo ...", MsgBoxStyle.Critical) Else
directorio = Trim(My.Application.Info.DirectoryPath & "\AUDITORES\") & _ Me.TreeView.SelectedNode.Parent.Parent.Text.Trim & "\" & _ Me.TreeView.SelectedNode.Parent.Text.Trim()
DeleteDirectory(directorio & "\" & Me.TreeView.SelectedNode.Text.Trim) Me.TreeView.SelectedNode.Remove() End If Case 5 If TreeView.SelectedNode.NodeFont.Bold Then 'nodo archivos MsgBox("El archivo esta abierto, debe estar cerrado para poder eliminarlo ...", MsgBoxStyle.Critical) Else
directorio = Trim(My.Application.Info.DirectoryPath & "\AUDITORES\") & _ Me.TreeView.SelectedNode.Parent.Parent.Parent.Text.Trim & "\" & _ Me.TreeView.SelectedNode.Parent.Parent.Text.Trim & "\" & _ Me.TreeView.SelectedNode.Parent.Text.Trim()
namefile = "\" & Me.TreeView.SelectedNode.Text.Trim & ".sub" DeleteFile(directorio & "\" & namefile) Me.TreeView.SelectedNode.Remove() End If End Select End If End Sub
Private Sub AbrirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AbrirToolStripMenuItem.Click AbrirArchivoTree() End Sub
CISC UNIVESRIDAD DE GUAYAQUIL
63
Private Sub EliminarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EliminarToolStripMenuItem.Click EliminarArchivoTree() End Sub
Private Sub TreeView_AfterSelect(ByVal sender As System.Object, ByVal e AsSystem.Windows.Forms.TreeViewEventArgs) Handles TreeView.AfterSelect
End SubEnd Class
Frmformula
Imports System.Windows.Forms
Public Class FrmFormula Dim cad As String 'Public Formula As String Property Formula() As String Get Return cad End Get
Set(ByVal Value As String) cad = Value End Set End Property
Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click
If textFormula.Text.Trim.Length = 0 Then MsgBox("Debe ingresar formula ...", MsgBoxStyle.Critical) Else Formula = textFormula.Text Me.Close() End If
End Sub
Public Sub LoadCampos(ByVal h As FarPoint.Win.Spread.SheetView) 'lista de campos With FpCampos.Sheets(0) .ColumnCount = 1 .RowCount = 0
CISC UNIVESRIDAD DE GUAYAQUIL
64
.ColumnHeader.Columns(0).Label = "Nombre" .OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect End With FpCampos.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded
With h Dim c As Integer For c = 0 To .ColumnCount - 1 FpCampos.Sheets(0).AddRows(FpCampos.Sheets(0).RowCount, 1) FpCampos.Sheets(0).SetText(c, 0, .Columns(c).Label) Next FpCampos.Sheets(0).SetColumnWidth(0, FpCampos.Sheets(0).GetPreferredColumnWidth(0) + 10) End With
textFormula.Text = Formula
End Sub
Private Sub FpCampos_CellDoubleClick(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.CellClickEventArgs) Handles FpCampos.CellDoubleClick textFormula.Text = textFormula.Text & " " & FpCampos.Sheets(0).GetText(e.Row, 0) End Sub
Private Sub BtnSuma_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSuma.Click textFormula.Text = textFormula.Text & " " & "+" End Sub
Private Sub BtnResta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnResta.Click textFormula.Text = textFormula.Text & " " & "-" End Sub
Private Sub BtnMult_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnMult.Click textFormula.Text = textFormula.Text & " " & "*" End Sub
Private Sub BtnDiv_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnDiv.Click textFormula.Text = textFormula.Text & " " & "/" End Sub
Private Sub BtnPot_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPot.Click textFormula.Text = textFormula.Text & " " & "^"
CISC UNIVESRIDAD DE GUAYAQUIL
65
End Sub
Private Sub BtnPorcent_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPorcent.Click textFormula.Text = textFormula.Text & " " & "%" End Sub
Private Sub BtnSqrt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSqrt.Click textFormula.Text = textFormula.Text & " " & "Sqrt()" End Sub
Private Sub BtnPI_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPI.Click textFormula.Text = textFormula.Text & " " & "(" End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPD.Click textFormula.Text = textFormula.Text & " " & ")" End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click textFormula.Text = textFormula.Text & " " & "," End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click textFormula.Text = textFormula.Text & " "" "" " End Sub
Private Sub BtnConcat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnConcat.Click textFormula.Text = textFormula.Text & " & " End Sub
Private Sub ToolStripButton2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStripButton2.Click textFormula.Text = "" End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click textFormula.Text = textFormula.Text & " > " End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
CISC UNIVESRIDAD DE GUAYAQUIL
66
textFormula.Text = textFormula.Text & " < " End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click textFormula.Text = textFormula.Text & " = " End Sub
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click textFormula.Text = textFormula.Text & " ' " End Sub
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click textFormula.Text = textFormula.Text & " [ " End Sub
Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click textFormula.Text = textFormula.Text & " ] " End Sub
Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click textFormula.Text = textFormula.Text & " # " End Sub
Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click textFormula.Text = textFormula.Text & " AND " End Sub
Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click textFormula.Text = textFormula.Text & " OR " End Sub
Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click textFormula.Text = textFormula.Text & " NOT " End Sub
Private Sub Button14_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button14.Click textFormula.Text = textFormula.Text & " IIf(expr, truepart, falsepart) " End Sub
CISC UNIVESRIDAD DE GUAYAQUIL
67
Private Sub Button15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button15.Click textFormula.Text = textFormula.Text & " IN " End Sub
Private Sub Button16_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button16.Click textFormula.Text = textFormula.Text & " LIKE " End Sub
Private Sub FrmFormula_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub textFormula_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles textFormula.TextChanged
End SubEnd Class
Frmimprimir reporte
Public Class FrmImprimirReporte Private pagesetup As New pagesetup() Public cliente As String Private HojaDatos As FarPoint.Win.Spread.FpSpread
Public cabecera As String Public pie As String
Public Sub StartPage(ByVal HD As FarPoint.Win.Spread.FpSpread, ByVal cab As String, ByVal p As String) cabecera = cab pie = p HojaDatos = HD Me.ShowDialog() Me.BringToFront() End Sub
Private Sub TextBox1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating RadioButton4.Checked = True If TextBox2.Text <> "" Then If Not IsNumeric(TextBox1.Text) Or (CInt(TextBox1.Text) < CInt(TextBox2.Text)) Then MsgBox("You must enter a number not less then the page start.") e.Cancel = True
CISC UNIVESRIDAD DE GUAYAQUIL
68
End If End If End Sub
Private Sub TextBox2_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox2.Validating RadioButton4.Checked = True If TextBox1.Text <> "" Then If Not IsNumeric(TextBox2.Text) Or (CInt(TextBox1.Text) < CInt(TextBox2.Text)) Then MsgBox("You must enter a number not greater then the page end.") e.Cancel = True End If End If End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.Close() End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click printsheet(False) End Sub
Private Sub printsheet(ByVal print As Boolean) With pi If RadioButton1.Checked = True Then .PrintType = FarPoint.Win.Spread.PrintType.All End If
If RadioButton3.Checked = True Then .PrintType = FarPoint.Win.Spread.PrintType.CurrentPage End If If RadioButton4.Checked = True Then .PrintType = FarPoint.Win.Spread.PrintType.PageRange .PageStart = CInt(TextBox2.Text) .PageEnd = CInt(TextBox1.Text) End If
.ShowColumnHeaders = True .ShowRowHeaders = True .ShowGrid = True .ShowBorder = True .ShowShadows = False .ShowColor = True .UseMax = True .BestFitCols = False
CISC UNIVESRIDAD DE GUAYAQUIL
69
'cabecera ------------------------------------ .Header = cabecera 'pie--------------------------------------------- .Footer = pie .Footer = .Footer + "/c Pag. /p" .Preview = print .ShowPrintDialog = True End With
HojaDatos.ActiveSheet.PrintInfo = pi HojaDatos.PrintSheet(HojaDatos.ActiveSheetIndex)
End Sub
Private Sub Button4_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button4.Click printsheet(True) End Sub
Private Sub FrmImprimirReporte_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load With pi Select Case .PrintType Case FarPoint.Win.Spread.PrintType.All RadioButton1.Checked = True Case FarPoint.Win.Spread.PrintType.CurrentPage RadioButton3.Checked = True Case FarPoint.Win.Spread.PrintType.PageRange RadioButton4.Checked = True End Select If pi.PageStart <> -1 Then TextBox2.Text = pi.PageStart TextBox1.Text = pi.PageEnd Else TextBox2.Text = "" TextBox1.Text = "" End If End With End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If pagesetup.IsDisposed Then pagesetup = New pagesetup() End If pagesetup.ShowDialog() pagesetup.BringToFront()
CISC UNIVESRIDAD DE GUAYAQUIL
70
End SubEnd Class
Frmsubtabla
Imports System.Data.OdbcImports System.IOImports System.Runtime.Serialization.Formatters.BinaryImports FarPoint.Win.Spread.CellTypePublic Class FrmSubTabla
Public directorio As String Public nombre_archivo As String Dim test As ClsArchivoAuditor Dim ruta_archivo As String Public tvNodo As TreeNode 'Public tvNodoPadre As TreeNode
Public RegDatos As DataSet Public RegDatosAll As DataSet
Public Sub Guardar() 'MsgBox(directorio & " " & nombre_archivo)
'Campos Virtuales test.CamposVirtuales = Me.FpSpread1.Sheets(2).DataSource GuardarCambios(ruta_archivo, test) OpenArchivo(ruta_archivo) 'MsgBox("guardado con exito " & ruta_archivo) End Sub
Public Sub OpenArchivo(ByVal archivo As String) Try If File.Exists(archivo) Then Dim TestFileStream As Stream = File.OpenRead(archivo) Dim deserializer As New BinaryFormatter
test = CType(deserializer.Deserialize(TestFileStream), ClsArchivoAuditor) ruta_archivo = archivo nombre_archivo = test.nombre
Me.Text = "Archivo: " & test.nombre & " Creado: " & test.fecha.ToString
CISC UNIVESRIDAD DE GUAYAQUIL
71
'registros With Me.FpSpread1.Sheets(0) RegDatosAll = test.registros.Copy 'esquema de registros para filtro RegDatos = RegDatosAll.Clone
.DataSource = RegDatosAll .Columns(0, .ColumnCount - 1).BackColor = Color.Azure
End With
'Campos Virtuales With Me.FpSpread1.Sheets(2) .DataSource = test.CamposVirtuales .Columns(1, 1).BackColor = Color.Azure .Columns(1, 1).Locked = True End With
'lista de campos With Me.FpSpread1.Sheets(1) .RowCount = 0 .ColumnCount = 2
.ColumnHeader.Columns(0).Label = "Nombre" .ColumnHeader.Columns(1).Label = "Tipo"
.Columns(1, 1).BackColor = Color.Yellow .RowCount = test.registros.Tables(0).Columns.Count
Dim f As Integer 'campos For f = 0 To test.registros.Tables(0).Columns.Count - 1 .SetText(f, 0, test.registros.Tables(0).Columns(f).ColumnName()) 'nombre .SetText(f, 1, test.registros.Tables(0).Columns(f).DataType.ToString.Substring(Len("system.")))'tipo Next .SetColumnWidth(0, .GetPreferredColumnWidth(0) + 5) .SetColumnWidth(1, .GetPreferredColumnWidth(1) + 5) End With
With Me.FpSpread1.Sheets(0) 'Campos Virtuales a lista de registros Dim i As Integer Dim campo As DataColumn For i = 0 To test.CamposVirtuales.Tables(0).Rows.Count - 1
campo = New DataColumn
CISC UNIVESRIDAD DE GUAYAQUIL
72
With campo 'nombre del campo virtual .ColumnName = test.CamposVirtuales.Tables(0).Rows(i).Item(0).ToString .DefaultValue = "" 'formula .Expression = test.CamposVirtuales.Tables(0).Rows(i).Item(2).ToString End With
RegDatosAll.Tables(0).Columns.Add(campo) test.CamposVirtuales.Tables(0).Rows(i).Item(1) = RegDatosAll.Tables(0).Columns(campo.ColumnName.Trim).DataType .SetColumnWidth(.ColumnCount - 1, .GetPreferredColumnWidth(.ColumnCount - 1) + 5) Next End With
TestFileStream.Close() End If
Catch ex As Exception MsgBox("Error al cargar el archivo ... ") Finally Beep() End Try End Sub
Private Sub FrmSubTabla_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing tvNodo.NodeFont = New Font("Arial", 10, FontStyle.Regular) End Sub
Private Sub FrmSubTabla_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Control.CheckForIllegalCrossThreadCalls = False With Me.FpSpread1 .HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded .Sheets(0).OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect .Sheets(1).OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect
'ordenar .Sheets(0).SetColumnAllowAutoSort(-1, True) End With End Sub
CISC UNIVESRIDAD DE GUAYAQUIL
73
Private Sub FpSpread1_SheetTabClick(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.SheetTabClickEventArgs) Handles FpSpread1.SheetTabClick If e.SheetTabIndex = 2 Then ToolStrip1.Visible = True Else ToolStrip1.Visible = False End If 'MsgBox(e.SheetTabIndex) End Sub
Private Sub FpSpread1_LeaveCell(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.LeaveCellEventArgs) Handles FpSpread1.LeaveCell If FpSpread1.ActiveSheetIndex = 2 Then If e.Column = 0 And e.Row = 0 Then If FpSpread1.Sheets(2).GetText(e.Row, e.Column).Trim.Length = 0 Then MsgBox("Debe ingresar un nombre ...", MsgBoxStyle.Critical) Me.FpSpread1.Sheets(2).SetActiveCell(0, 0, False) End If End If End If End Sub
Public Sub InsertarColumnConsulta() If Me.FpSpread1.Sheets(3).RowCount > 0 Then 'formulacion Dim frm As New FrmFormula frm.Formula = "" frm.LoadCampos(Me.FpSpread1.Sheets(3)) frm.ShowDialog()
If frm.Formula.Trim.Length > 0 Then Dim name As String name = InputBox("Nombre de campo", "Nombre") If name.Trim.Length > 0 Then Dim campo As DataColumn campo = New DataColumn With campo 'nombre del campo virtual .ColumnName = name .DefaultValue = "" 'formula .Expression = frm.Formula.Trim '.Expression = "CustomerId" End With RegDatos.Tables(0).Columns.Add(campo) End If
CISC UNIVESRIDAD DE GUAYAQUIL
74
End If End If End Sub
Public Sub QuitarColumnConsulta() Try If Me.FpSpread1.Sheets(3).RowCount > 0 Then Dim frm As New FrmEliminarColumna frm.LoadCamposCombo(Me.FpSpread1.Sheets(3)) frm.ShowDialog()
If frm.campo.Trim.Length > 0 Then RegDatos.Tables(0).Columns.Remove(frm.campo.Trim) End If End If Catch ex As Exception MsgBox("Error al eliminar columna: ... " & ex.Message) Finally Beep() End Try End Sub
Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click Me.FpSpread1.Sheets(2).AddRows(0, 1) Me.FpSpread1.Sheets(2).SetActiveCell(0, 0, False)
End Sub
Private Sub ToolStripButton2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStripButton2.Click If Me.FpSpread1.Sheets(2).RowCount > 0 Then Me.FpSpread1.Sheets(2).RemoveRows(FpSpread1.Sheets(2).ActiveRow.Index, 1) End If End Sub
Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton3.Click If Me.FpSpread1.Sheets(2).RowCount > 0 Then 'formulacion Dim frm As New FrmFormula frm.Formula = Me.FpSpread1.Sheets(2).GetText(Me.FpSpread1.Sheets(2).ActiveRowIndex, 2) frm.LoadCampos(Me.FpSpread1.Sheets(0)) frm.ShowDialog()
CISC UNIVESRIDAD DE GUAYAQUIL
75
Me.FpSpread1.Sheets(2).SetText(Me.FpSpread1.Sheets(2).ActiveRowIndex, 2, frm.Formula) End If End Sub
End Class
Frmtabla
Imports System.Data.OdbcImports System.IOImports System.Runtime.Serialization.Formatters.BinaryImports FarPoint.Win.Spread.CellType
Public Class FrmTabla Public directorio As String Public nombre_archivo As String Dim test As ClsArchivoAuditor Public ruta_archivo As String Public tvNodo As TreeNode Public tvNodoPadre As TreeNode
Public RegDatos As DataSet Public RegDatosAll As DataSet
'calculos Public Sub LimpiarFiltro() RegDatos = RegDatosAll.Clone Me.FpSpread1.Sheets(3).DataSource = RegDatos End Sub
Public Sub Duplicidad() Try
Dim frm As New FrmEliminarColumna frm.LoadCamposCombo(Me.FpSpread1.Sheets(3)) frm.ShowDialog()
If frm.campo.Trim.Length > 0 Then Dim campo As String = frm.campo.Trim Dim drarray() As DataRow 'se copia el esquema de los registros RegDatos = RegDatosAll.Clone 'consulta drarray = RegDatosAll.Tables(0).Select("", campo & " ASC")
CISC UNIVESRIDAD DE GUAYAQUIL
76
Dim i As Integer Dim pivot As Integer Dim n As Integer Dim row As DataRow Dim c As Integer
i = 0 pivot = 0 n = 0 While (i < drarray.Length)
If (i <> drarray.Length - 1) Then
If (drarray(pivot).Item(campo) = drarray(i + 1).Item(campo)) Then
row = RegDatos.Tables(0).NewRow() For c = 0 To drarray(0).Table.Columns.Count - 1 row(c) = drarray(i + 1).Item(c) Next RegDatos.Tables(0).Rows.Add(row)
n = n + 1
If n = 1 Then row = RegDatos.Tables(0).NewRow() For c = 0 To drarray(0).Table.Columns.Count - 1 row(c) = drarray(pivot).Item(c) Next RegDatos.Tables(0).Rows.Add(row) End If
Else If n > 0 Then RegDatos.Tables(0).Rows.Add() End If n = 0 pivot = i + 1 End If End If i = i + 1 End While
Me.FpSpread1.Sheets(3).DataSource = RegDatos Me.FpSpread1.ActiveSheetIndex = 3 End If Catch ex As Exception MsgBox("Error de calculo de duplicidad ... ") Finally
CISC UNIVESRIDAD DE GUAYAQUIL
77
Beep() End Try End Sub
Public Sub RegistroAleatorio(ByVal n As Integer) Try
' Initialize the random-number generator. Randomize()
Dim drarray() As DataRow 'se copia el esquema de los registros RegDatos = RegDatosAll.Clone 'consulta drarray = RegDatosAll.Tables(0).Select("") Dim A(n) As Integer Dim i As Integer Dim ii As Integer Dim v As Integer Dim band As Boolean i = 0 While (i < n) v = CInt(Int(((drarray.Length - 1) * Rnd()) + 1))
band = False For ii = 0 To i If v = A(ii) Then band = True Exit For End If Next If Not band Then A(i) = v i = i + 1 End If End While
Dim c As Integer Dim f As Integer
'copiando registros '------------------------------------------------------------------- Dim row As DataRow
For f = 0 To n - 1 row = RegDatos.Tables(0).NewRow() For c = 0 To drarray(0).Table.Columns.Count - 1 row(c) = drarray(A(f)).Item(c)
CISC UNIVESRIDAD DE GUAYAQUIL
78
Next RegDatos.Tables(0).Rows.Add(row) Next Me.FpSpread1.Sheets(3).DataSource = RegDatos Me.FpSpread1.ActiveSheetIndex = 3 Catch ex As Exception MsgBox("Error al cargar calculo registros aleatorios ... ") Finally Beep() End Try
End Sub
Public Sub Estratificacion()
End Sub
Public Sub SaltoSecuencia() Try
Dim frm As New FrmEliminarColumna frm.LoadCamposCombo(Me.FpSpread1.Sheets(3)) frm.ShowDialog()
If frm.campo.Trim.Length > 0 Then Dim campo As String = frm.campo.Trim Dim drarray() As DataRow 'se copia el esquema de los registros RegDatos = RegDatosAll.Clone 'consulta drarray = RegDatosAll.Tables(0).Select("", campo & " ASC")
Dim i As Integer Dim n As Integer Dim row As DataRow Dim c As Integer
Me.FpSpread1.Sheets(3).DataSource = RegDatos
Me.FpSpread1.Sheets(3).SheetCornerStyleName = "No" 'el tipo de dato debe ser solo numerico If drarray(0).Item(campo).GetType.ToString.Trim = "System.Int32" Or drarray(0).Item(campo).GetType.ToString.Trim = "System.Int16" Then Dim v_min As Integer = drarray(0).Item(campo) Dim v_max As Integer = drarray(drarray.Length - 1).Item(campo) n = 0 For i = 0 To drarray.Length - 2 If ((drarray(i).Item(campo)) <> drarray(i + 1).Item(campo)) Then
CISC UNIVESRIDAD DE GUAYAQUIL
79
If ((drarray(i).Item(campo) + 1) <> drarray(i + 1).Item(campo)) Then
Me.FpSpread1.Sheets(3).AddRows(n, 1) Me.FpSpread1.Sheets(3).Models.Span.Add(n, 0, 1, drarray(0).Table.Columns.Count) Me.FpSpread1.Sheets(3).SetRowLabel(n, 0, "Salto")
Me.FpSpread1.Sheets(3).Rows(n).BackColor = Color.DarkGray row = RegDatos.Tables(0).NewRow() For c = 0 To drarray(0).Table.Columns.Count - 1 row(c) = drarray(i).Item(c) Next RegDatos.Tables(0).Rows.Add(row)
row = RegDatos.Tables(0).NewRow() For c = 0 To drarray(0).Table.Columns.Count - 1 row(c) = drarray(i + 1).Item(c) Next RegDatos.Tables(0).Rows.Add(row)
Me.FpSpread1.Sheets(3).SetRowLabel(n + 2, 0, "Min") Me.FpSpread1.Sheets(3).SetRowLabel(n + 1, 0, "Max")
n = n + 3 End If End If Next
Me.FpSpread1.ActiveSheetIndex = 3 'MsgBox(v_min & " -- " & v_max & " tipo " & drarray(0).Item(campo).GetType.ToString) Else MsgBox("El campo debe ser de tipo numerico") End If 'i = 0 'pivot = 0 'n = 0 'While (i < drarray.Length)
' If (i <> drarray.Length - 1) Then
' If (drarray(pivot).Item(campo) = drarray(i + 1).Item(campo)) Then
' row = RegDatos.Tables(0).NewRow() ' For c = 0 To drarray(0).Table.Columns.Count - 1
CISC UNIVESRIDAD DE GUAYAQUIL
80
' row(c) = drarray(i + 1).Item(c) ' Next ' RegDatos.Tables(0).Rows.Add(row)
' n = n + 1
' If n = 1 Then ' row = RegDatos.Tables(0).NewRow() ' For c = 0 To drarray(0).Table.Columns.Count - 1 ' row(c) = drarray(pivot).Item(c) ' Next ' RegDatos.Tables(0).Rows.Add(row) ' End If
' Else ' n = 0 ' pivot = i + 1 ' End If ' End If ' i = i + 1 'End While
'Me.FpSpread1.Sheets(3).DataSource = RegDatos 'Me.FpSpread1.ActiveSheetIndex = 3 End If Catch ex As Exception MsgBox("Error de calculo de salto de secuencia... ") Finally Beep() End Try End Sub
Public Sub filtrar(ByVal filterexp As String) Try Dim drarray() As DataRow 'se copia el esquema de los registros RegDatos = RegDatosAll.Clone 'consulta drarray = RegDatosAll.Tables(0).Select(filterexp)
Dim c As Integer Dim f As Integer
'copiando registros '------------------------------------------------------------------- Dim row As DataRow
For f = 0 To drarray.Length - 1 row = RegDatos.Tables(0).NewRow()
CISC UNIVESRIDAD DE GUAYAQUIL
81
For c = 0 To drarray(0).Table.Columns.Count - 1 row(c) = drarray(f).Item(c) Next RegDatos.Tables(0).Rows.Add(row) Next
Me.FpSpread1.Sheets(3).DataSource = RegDatos Me.FpSpread1.ActiveSheetIndex = 3 Catch ex As Exception MsgBox("Error al cargar consulta ... ") Finally Beep() End Try End Sub
Public Sub Imprimir() Dim cabecera As String Dim pie As String
With pi .ColStart = FpSpread1.ActiveSheet.Models.Selection.AnchorColumn .ColEnd = FpSpread1.ActiveSheet.Models.Selection.LeadColumn .RowStart = FpSpread1.ActiveSheet.Models.Selection.AnchorRow .RowEnd = FpSpread1.ActiveSheet.Models.Selection.LeadRow End With If FrmImprimirReporte.IsDisposed Then FrmImprimirReporte = New FrmImprimirReporte()
End If cabecera = "/c/fz""16""/fb Reporte de Auditoria /n" Select Case FpSpread1.ActiveSheetIndex Case 0 cabecera = cabecera + "/c/fz""16""/fb General (Registros y Campos)/n" Case 1 cabecera = cabecera + "/c/fz""16""/fb Campos originales /n" Case 2 cabecera = cabecera + "/c/fz""16""/fb Campos Virtuales /n" Case 3 cabecera = cabecera + "/c/fz""16""/fb Registros de Filtro /n" End Select
cabecera = cabecera & "/r/fz""10""/fb0 Fecha-Hora: " & Date.Now & " /n" cabecera = cabecera & " /n" pie = "Auditor (Firma): ____________________________ /n /n" FrmImprimirReporte.StartPage(FpSpread1, cabecera, pie) End Sub
Public Sub Guardar() 'MsgBox(directorio & " " & nombre_archivo)
CISC UNIVESRIDAD DE GUAYAQUIL
82
'Campos Virtuales test.CamposVirtuales = Me.FpSpread1.Sheets(2).DataSource GuardarCambios(ruta_archivo, test) OpenArchivo(ruta_archivo) 'MsgBox("guardado con exito " & ruta_archivo) End Sub
Public Sub OpenArchivo(ByVal archivo As String) Try If File.Exists(archivo) Then Dim TestFileStream As Stream = File.OpenRead(archivo) Dim deserializer As New BinaryFormatter
test = CType(deserializer.Deserialize(TestFileStream), ClsArchivoAuditor) ruta_archivo = archivo nombre_archivo = test.nombre
Me.Text = "Archivo: " & test.nombre & " Creado: " & test.fecha.ToString
'registros With Me.FpSpread1.Sheets(0) RegDatosAll = test.registros.Copy 'esquema de registros para filtro RegDatos = RegDatosAll.Clone
.DataSource = RegDatosAll .Columns(0, .ColumnCount - 1).BackColor = Color.Azure
Me.FpSpread1.Sheets(3).DataSource = RegDatos End With
'Campos Virtuales With Me.FpSpread1.Sheets(2) .DataSource = test.CamposVirtuales .Columns(1, 1).BackColor = Color.Azure .Columns(1, 1).Locked = True End With
'lista de campos With Me.FpSpread1.Sheets(1) .RowCount = 0 .ColumnCount = 2
.ColumnHeader.Columns(0).Label = "Nombre" .ColumnHeader.Columns(1).Label = "Tipo"
CISC UNIVESRIDAD DE GUAYAQUIL
83
.Columns(1, 1).BackColor = Color.Yellow .RowCount = test.registros.Tables(0).Columns.Count
Dim f As Integer 'campos For f = 0 To test.registros.Tables(0).Columns.Count - 1 .SetText(f, 0, test.registros.Tables(0).Columns(f).ColumnName()) 'nombre .SetText(f, 1, test.registros.Tables(0).Columns(f).DataType.ToString.Substring(Len("system.")))'tipo Next .SetColumnWidth(0, .GetPreferredColumnWidth(0) + 5) .SetColumnWidth(1, .GetPreferredColumnWidth(1) + 5) End With
With Me.FpSpread1.Sheets(0) 'Campos Virtuales a lista de registros Dim i As Integer Dim campo As DataColumn For i = 0 To test.CamposVirtuales.Tables(0).Rows.Count - 1
campo = New DataColumn With campo '.DataType = System.Type.GetType("System.String") 'nombre del campo virtual .ColumnName = test.CamposVirtuales.Tables(0).Rows(i).Item(0).ToString .DefaultValue = "" 'formula .Expression = test.CamposVirtuales.Tables(0).Rows(i).Item(2).ToString '.Expression = "CustomerId" End With
RegDatosAll.Tables(0).Columns.Add(campo) test.CamposVirtuales.Tables(0).Rows(i).Item(1) = RegDatosAll.Tables(0).Columns(campo.ColumnName.Trim).DataType .SetColumnWidth(.ColumnCount - 1, .GetPreferredColumnWidth(.ColumnCount - 1) + 5) Next End With
TestFileStream.Close() End If
Catch ex As Exception MsgBox("Error al cargar el archivo ... ") Finally
CISC UNIVESRIDAD DE GUAYAQUIL
84
Beep() End Try End Sub
Public Sub CargarDatos(ByVal nameTBL As String, ByVal str_conex As String, ByVal sql As String, ByVal tipo As Boolean) Dim odbccon As New OdbcConnection Dim duser As New DataSet Dim odbcadap As New OdbcDataAdapter Dim odbccmd As New OdbcCommand
odbccon.ConnectionString = str_conex
If tipo Then
odbccmd.CommandText = sql odbccmd.CommandType = CommandType.Text odbccmd.Connection = odbccon odbcadap.SelectCommand = odbccmd
odbcadap.Fill(duser) Else odbccmd.CommandText = sql odbccmd.CommandType = CommandType.Text odbccmd.Connection = odbccon odbcadap.SelectCommand = odbccmd
odbcadap.Fill(duser) End If
GuardarArchivo(nombre_archivo, directorio, duser, ".sac") odbccon.Close() 'cambio OpenArchivo(directorio & "\" & nombre_archivo & "\" & nombre_archivo & ".sac") End Sub
Private Sub FrmTabla_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing tvNodo.NodeFont = New Font("Arial", 10, FontStyle.Regular) End Sub
Private Sub FrmTabla_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 'btnGuardar = MDIPrincipal.SaveToolStripButton
Control.CheckForIllegalCrossThreadCalls = False With Me.FpSpread1
CISC UNIVESRIDAD DE GUAYAQUIL
85
.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded .Sheets(0).OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect .Sheets(1).OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect .Sheets(3).OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect
'ordenar .Sheets(0).SetColumnAllowAutoSort(-1, True) .Sheets(3).SetColumnAllowAutoSort(-1, True) End With
End Sub
Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click Me.FpSpread1.Sheets(2).AddRows(0, 1) Me.FpSpread1.Sheets(2).SetActiveCell(0, 0, False)
End Sub
Private Sub ToolStripButton2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStripButton2.Click If Me.FpSpread1.Sheets(2).RowCount > 0 Then Me.FpSpread1.Sheets(2).RemoveRows(FpSpread1.Sheets(2).ActiveRow.Index, 1) End If End Sub
Private Sub FpSpread1_LeaveCell(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.LeaveCellEventArgs) Handles FpSpread1.LeaveCell If FpSpread1.ActiveSheetIndex = 2 Then If e.Column = 0 And e.Row = 0 Then If FpSpread1.Sheets(2).GetText(e.Row, e.Column).Trim.Length = 0 Then MsgBox("Debe ingresar un nombre ...", MsgBoxStyle.Critical) Me.FpSpread1.Sheets(2).SetActiveCell(0, 0, False) End If End If End If End Sub
Private Sub FpSpread1_SheetTabClick(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.SheetTabClickEventArgs) Handles FpSpread1.SheetTabClick If e.SheetTabIndex = 2 Then
CISC UNIVESRIDAD DE GUAYAQUIL
86
ToolStrip1.Visible = True Else ToolStrip1.Visible = False End If 'MsgBox(e.SheetTabIndex) End Sub
Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton3.Click If Me.FpSpread1.Sheets(2).RowCount > 0 Then 'formulacion Dim frm As New FrmFormula frm.Formula = Me.FpSpread1.Sheets(2).GetText(Me.FpSpread1.Sheets(2).ActiveRowIndex, 2) frm.LoadCampos(Me.FpSpread1.Sheets(0)) frm.ShowDialog() Me.FpSpread1.Sheets(2).SetText(Me.FpSpread1.Sheets(2).ActiveRowIndex, 2, frm.Formula) End If End Sub
Public Sub formulaFiltro(ByVal expr As String) 'formulacion Dim frm As New FrmFormula frm.Formula = expr frm.LoadCampos(Me.FpSpread1.Sheets(0)) frm.ShowDialog() MDIPrincipal.ToolStripComboBox1.Text = frm.Formula End Sub
Public Sub InsertarColumnConsulta() If Me.FpSpread1.Sheets(3).RowCount > 0 Then 'formulacion Dim frm As New FrmFormula frm.Formula = "" frm.LoadCampos(Me.FpSpread1.Sheets(3)) frm.ShowDialog()
If frm.Formula.Trim.Length > 0 Then Dim name As String name = InputBox("Nombre de campo", "Nombre") If name.Trim.Length > 0 Then Dim campo As DataColumn campo = New DataColumn With campo 'nombre del campo virtual .ColumnName = name .DefaultValue = ""
CISC UNIVESRIDAD DE GUAYAQUIL
87
'formula .Expression = frm.Formula.Trim '.Expression = "CustomerId" End With RegDatos.Tables(0).Columns.Add(campo) End If End If End If End Sub
Public Sub QuitarColumnConsulta() try If Me.FpSpread1.Sheets(3).RowCount > 0 Then Dim frm As New FrmEliminarColumna frm.LoadCamposCombo(Me.FpSpread1.Sheets(3)) frm.ShowDialog()
If frm.campo.Trim.Length > 0 Then RegDatos.Tables(0).Columns.Remove(frm.campo.Trim) End If End If Catch ex As Exception MsgBox("Error al eliminar columna: ... " & ex.Message) Finally Beep() End Try End SubEnd Class
Mdiprincipal
Imports System.IOImports System.Runtime.Serialization.Formatters.Binary
Public Class MDIPrincipal Private ADM As FrmExplorer
Private Sub SaveAsToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Dim SaveFileDialog As New SaveFileDialog SaveFileDialog.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments SaveFileDialog.Filter = "Archivos de texto (*.txt)|*.txt|Todos los archivos (*.*)|*.*"
CISC UNIVESRIDAD DE GUAYAQUIL
88
If (SaveFileDialog.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK) Then Dim FileName As String = SaveFileDialog.FileName End If End Sub
Private Sub ExitToolsStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ExitToolStripMenuItem.Click Me.Close() 'Global.System.Windows.Forms.Application.Exit() End Sub
Private Sub ToolBarToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ToolBarToolStripMenuItem.Click Me.ToolStrip.Visible = Me.ToolBarToolStripMenuItem.Checked End Sub
Private Sub StatusBarToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles StatusBarToolStripMenuItem.Click Me.StatusStrip.Visible = Me.StatusBarToolStripMenuItem.Checked End Sub
Private Sub CascadeToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles CascadeToolStripMenuItem.Click Me.LayoutMdi(MdiLayout.Cascade) End Sub
Private Sub TileVerticleToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles TileVerticalToolStripMenuItem.Click Me.LayoutMdi(MdiLayout.TileVertical) End Sub
Private Sub TileHorizontalToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles TileHorizontalToolStripMenuItem.Click Me.LayoutMdi(MdiLayout.TileHorizontal) End Sub
Private Sub ArrangeIconsToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ArrangeIconsToolStripMenuItem.Click Me.LayoutMdi(MdiLayout.ArrangeIcons) End Sub
Private Sub CloseAllToolStripMenuItem_Click(ByVal sender As Object, ByVale As EventArgs) Handles CloseAllToolStripMenuItem.Click ' Cierre todos los formularios secundarios del primario. For Each ChildForm As Form In Me.MdiChildren ChildForm.Close() Next End Sub
CISC UNIVESRIDAD DE GUAYAQUIL
89
Private Sub MDIPrincipal_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing e.Cancel = False End Sub
Private Sub MDIPrincipal_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load CargarExplorador() End Sub
Private Sub CargarExplorador() If IsNothing(ADM) Then ADM = New FrmExplorer ADM.MdiParent = Me ADM.Show() ADM.Top = 0 ADM.Left = 0 ADM.MinimizeBox = False ADM.MaximizeBox = False End If End Sub
Private Sub ExplorerToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExplorerToolStripButton.Click ADM.Top = 0 ADM.Left = 0 ADM.Show() End Sub
Public Sub CargarFormaTabla(ByVal frm As Form) frm.MdiParent = Me frm.Show() ''''ADM.CargarAuditores() End Sub
Private Sub NuevoCliente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NuevoCliente.Click Nuevo_Cliente() End Sub
Private Sub Nuevo_Cliente() Dim directorio_auditores As String
directorio_auditores = Trim(My.Application.Info.DirectoryPath & "\AUDITORES")
If My.Computer.FileSystem.DirectoryExists(directorio_auditores) Then Dim directorio As String = ""
CISC UNIVESRIDAD DE GUAYAQUIL
90
directorio = InputBox("Nombre directorio", "Cliente")
If Not directorio.Trim = "" Then If My.Computer.FileSystem.DirectoryExists(directorio_auditores & "\" & directorio.Trim) Then MsgBox("Nombre de cliente ya existe ...", MsgBoxStyle.Critical) Else My.Computer.FileSystem.CreateDirectory(directorio_auditores & "\" & directorio.Trim) ADM.CargarAuditores() End If End If Else MsgBox("creado directorio ..\auditores", MsgBoxStyle.Information) My.Computer.FileSystem.CreateDirectory(directorio_auditores) End If End Sub
Private Sub NuevoBaseDatos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NuevoBaseDatos.Click Nuevo_BaseDatos() End Sub
Private Sub Nuevo_BaseDatos() If ADM.TreeView.SelectedNode.SelectedImageIndex = 2 Then
Dim directorio_cliente As String
directorio_cliente = Trim(My.Application.Info.DirectoryPath & "\AUDITORES\" & ADM.TreeView.SelectedNode.Text.Trim)
If My.Computer.FileSystem.DirectoryExists(directorio_cliente) Then Dim directorio_bd As String
directorio_bd = InputBox("Nombre Base de Datos", "Base de datos")
If Not directorio_bd.Trim = "" Then If My.Computer.FileSystem.DirectoryExists(directorio_cliente & "\" & directorio_bd.Trim) Then MsgBox("Nombre de Base de Datos ya existe ...", MsgBoxStyle.Critical) Else My.Computer.FileSystem.CreateDirectory(directorio_cliente & "\" & directorio_bd.Trim) ADM.CargarAuditores() End If End If
CISC UNIVESRIDAD DE GUAYAQUIL
91
End If
Else
MsgBox("Debe seleccionar un cliente ...", MsgBoxStyle.Critical)
End If End Sub
Private Sub NuevoSAC()
'For Each ChildForm As Form In Me.MdiChildren ' ChildForm.Close() 'Next
If ADM.TreeView.SelectedNode.SelectedImageIndex = 4 Then
If ADM.TreeView.SelectedNode.Index <> -1 Then If ADM.TreeView.SelectedNode.SelectedImageIndex = 4 Then Dim directorio_BD As String Dim cliente As String
cliente = ADM.TreeView.SelectedNode.Parent.Text.Trim directorio_BD = Trim(My.Application.Info.DirectoryPath & "\AUDITORES\" & cliente & "\" & ADM.TreeView.SelectedNode.Text.Trim)
If My.Computer.FileSystem.DirectoryExists(directorio_BD) Then Dim frmDatos As New AgregarTabla frmDatos.tvNodo = ADM.TreeView.SelectedNode frmDatos.directorio = directorio_BD frmDatos.ShowDialog() End If End If End If
Else MsgBox("Debe seleccionar una base de datos ...", MsgBoxStyle.Critical) End If End Sub
Private Sub NuevoArchivoSAC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NuevoArchivoSAC.Click NuevoSAC() End Sub
Private Sub SaveToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveToolStripButton.Click Guardar() End Sub
CISC UNIVESRIDAD DE GUAYAQUIL
92
Private Sub OpenToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenToolStripButton.Click If ADM.TreeView.SelectedNode.SelectedImageIndex = 3 Then If ADM.TreeView.SelectedNode.Index <> -1 Then If ADM.TreeView.SelectedNode.SelectedImageIndex = 3 Then ADM.AbrirArchivoTree() End If End If Else MsgBox("Debe seleccionar una archivo de datos ...", MsgBoxStyle.Critical) End If End Sub
Private Sub PrintToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PrintToolStripButton.Click Imprimir() End Sub
Private Sub Imprimir() If Not Form.ActiveForm.ActiveMdiChild Is Nothing Then Dim frm As Form = Form.ActiveForm.ActiveMdiChild If frm.GetType.ToString = "WindowsApplication1.FrmTabla" Then Dim currentForm As FrmTabla = frm currentForm.Imprimir() End If End If
End Sub Private Sub Guardar() If Not Form.ActiveForm.ActiveMdiChild Is Nothing Then Dim frm As Form = Form.ActiveForm.ActiveMdiChild If frm.GetType.ToString = "WindowsApplication1.FrmTabla" Then Dim currentForm As FrmTabla = frm currentForm.Guardar() ElseIf frm.GetType.ToString = "WindowsApplication1.FrmSubTabla" Then Dim currentForm As FrmSubTabla = frm currentForm.Guardar() End If End If End Sub
Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton3.Click If Not Form.ActiveForm.ActiveMdiChild Is Nothing Then Dim frm As Form = Form.ActiveForm.ActiveMdiChild If frm.GetType.ToString = "WindowsApplication1.FrmTabla" Then
CISC UNIVESRIDAD DE GUAYAQUIL
93
Dim currentForm As FrmTabla = frm Dim filterExp As String = ToolStripComboBox1.Text.Trim currentForm.filtrar(filterExp) End If End If End Sub
Private Sub ToolStripButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton2.Click If Not Form.ActiveForm.ActiveMdiChild Is Nothing Then Dim frm As Form = Form.ActiveForm.ActiveMdiChild If frm.GetType.ToString = "WindowsApplication1.FrmTabla" Then Dim currentForm As FrmTabla = frm Dim Exp As String = ToolStripComboBox1.Text.Trim
If Exp.Length > 0 Then ToolStripComboBox1.Items.Add(Exp) End If ToolStripComboBox1.Text = "" 'Dim sortExp As String = "Country" currentForm.LimpiarFiltro() End If End If End Sub
Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click If Not Form.ActiveForm.ActiveMdiChild Is Nothing Then Dim frm As Form = Form.ActiveForm.ActiveMdiChild If frm.GetType.ToString = "WindowsApplication1.FrmTabla" Then Dim currentForm As FrmTabla = frm Dim filterExp As String = ToolStripComboBox1.Text.Trim currentForm.formulaFiltro(filterExp) End If End If End Sub
Private Sub ToolStripBtnInsertarCampo_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles ToolStripBtnInsertarCampo.Click If Not Form.ActiveForm.ActiveMdiChild Is Nothing Then Dim frm As Form = Form.ActiveForm.ActiveMdiChild If frm.GetType.ToString = "WindowsApplication1.FrmTabla" Then Dim currentForm As FrmTabla = frm
If currentForm.FpSpread1.ActiveSheetIndex = 3 Then If currentForm.FpSpread1.ActiveSheet.RowCount > 0 Then currentForm.InsertarColumnConsulta() Else
CISC UNIVESRIDAD DE GUAYAQUIL
94
MsgBox("debe haber almenos un registro en la consulta", MsgBoxStyle.Critical) End If Else MsgBox("debe seleccionar el diseñador de consulta", MsgBoxStyle.Critical) End If End If End If End Sub
Private Sub ToolStripBtnEliminarCampo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripBtnEliminarCampo.Click If Not Form.ActiveForm.ActiveMdiChild Is Nothing Then Dim frm As Form = Form.ActiveForm.ActiveMdiChild If frm.GetType.ToString = "WindowsApplication1.FrmTabla" Then Dim currentForm As FrmTabla = frm
If currentForm.FpSpread1.ActiveSheetIndex = 3 Then If currentForm.FpSpread1.ActiveSheet.RowCount > 0 Then currentForm.QuitarColumnConsulta() Else MsgBox("debe haber almenos un registro en la consulta", MsgBoxStyle.Critical) End If Else MsgBox("debe seleccionar el diseñador de consulta", MsgBoxStyle.Critical) End If End If End If End Sub
Private Sub BtnAleatorio_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAleatorio.Click Calculo_Aleatorio() End Sub Private Sub BtnDuplicados_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnDuplicados.Click Calculo_Duplicidad() End Sub Private Sub BtnSaltos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSaltos.Click Calculo_Saltos() End Sub 'calculos Public Sub Calculo_Duplicidad() If Not Form.ActiveForm.ActiveMdiChild Is Nothing Then
CISC UNIVESRIDAD DE GUAYAQUIL
95
Dim frm As Form = Form.ActiveForm.ActiveMdiChild If frm.GetType.ToString = "WindowsApplication1.FrmTabla" Then Dim currentForm As FrmTabla = frm
If currentForm.FpSpread1.ActiveSheetIndex = 3 Then If currentForm.FpSpread1.ActiveSheet.RowCount > 0 Then
currentForm.Duplicidad()
Else MsgBox("debe haber almenos un registro en la consulta", MsgBoxStyle.Critical) End If Else MsgBox("debe seleccionar el diseñador de consulta", MsgBoxStyle.Critical) End If End If End If End Sub Public Sub Calculo_Aleatorio() If Not Form.ActiveForm.ActiveMdiChild Is Nothing Then Dim frm As Form = Form.ActiveForm.ActiveMdiChild If frm.GetType.ToString = "WindowsApplication1.FrmTabla" Then Dim currentForm As FrmTabla = frm
Dim n As String Dim nr As Integer = currentForm.RegDatosAll.Tables(0).Rows.Count
n = InputBox("Cantidad de registros, " & Chr(13) & "Rango minimo(1)" & Chr(13) & "Rango maximo(" & nr & ") :", "Ingrese la cantidad de registros a presentar ")
If Not n.Trim = "" Then If IsNumeric(n) Then
If n >= 1 And n < nr Then currentForm.RegistroAleatorio(CInt(n)) Else MsgBox("Fuera de rango ...", MsgBoxStyle.Critical) End If Else MsgBox("Debe ingresar solo valores numericos", MsgBoxStyle.Critical) End If End If
End If End If
CISC UNIVESRIDAD DE GUAYAQUIL
96
End Sub Public Sub Calculo_Saltos() If Not Form.ActiveForm.ActiveMdiChild Is Nothing Then Dim frm As Form = Form.ActiveForm.ActiveMdiChild If frm.GetType.ToString = "WindowsApplication1.FrmTabla" Then Dim currentForm As FrmTabla = frm
If currentForm.FpSpread1.ActiveSheetIndex = 3 Then If currentForm.FpSpread1.ActiveSheet.RowCount > 0 Then
currentForm.SaltoSecuencia()
Else MsgBox("debe haber almenos un registro en la consulta", MsgBoxStyle.Critical) End If Else MsgBox("debe seleccionar el diseñador de consulta", MsgBoxStyle.Critical) End If End If End If End Sub Public Sub Calculo_Estratificacion()
End Sub
Private Sub ToolSubTabla_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolSubTabla.Click Nuevo_SubTabla() End Sub
Private Sub DuplicidadToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DuplicidadToolStripMenuItem.Click Calculo_Duplicidad() End Sub Private Sub RegistroAleatorioToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RegistroAleatorioToolStripMenuItem.Click Calculo_Aleatorio() End Sub Private Sub SaltoDeSecuenciaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaltoDeSecuenciaToolStripMenuItem.Click Calculo_Saltos() End Sub
CISC UNIVESRIDAD DE GUAYAQUIL
97
Private Sub SaveToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveToolStripMenuItem.Click Guardar() End Sub
Private Sub ClienteToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ClienteToolStripMenuItem.Click Nuevo_Cliente() End Sub
Private Sub BaseDeDatosToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BaseDeDatosToolStripMenuItem.Click Nuevo_BaseDatos() End Sub
Private Sub TablaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TablaToolStripMenuItem.Click NuevoSAC() End Sub
Private Sub SubTablaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SubTablaToolStripMenuItem.Click Nuevo_SubTabla() End Sub
Private Sub Nuevo_SubTabla() If Not Form.ActiveForm.ActiveMdiChild Is Nothing Then Dim frm As Form = Form.ActiveForm.ActiveMdiChild If frm.GetType.ToString = "WindowsApplication1.FrmTabla" Then Dim currentForm As FrmTabla = frm
If currentForm.FpSpread1.ActiveSheetIndex = 3 Then If currentForm.FpSpread1.ActiveSheet.RowCount > 0 Then
'currentForm. Dim directorio As String = currentForm.directorio.Trim & "\" & currentForm.nombre_archivo.Trim Dim nombre_archivo As String
nombre_archivo = InputBox("Nombre de Subtabla", "Subtabla") MsgBox(currentForm.directorio & "\" & currentForm.nombre_archivo)
If Not directorio.Trim = "" Then If My.Computer.FileSystem.DirectoryExists(directorio) Then Dim frmSub As New FrmSubTabla
CISC UNIVESRIDAD DE GUAYAQUIL
98
GuardarArchivo(nombre_archivo, directorio, currentForm.RegDatos, ".sub") frmSub.directorio = directorio frmSub.nombre_archivo = nombre_archivo.Trim frmSub.MdiParent = Me
Dim tvnodo As TreeNode tvnodo = currentForm.tvNodo.Nodes.Add(frmSub.nombre_archivo, frmSub.nombre_archivo, 5, 5) tvnodo.ForeColor = Color.DarkGray tvnodo.NodeFont = New Font("Arial", 10, FontStyle.Regular) End If End If Else MsgBox("debe haber almenos un registro en la consulta", MsgBoxStyle.Critical) End If Else MsgBox("debe seleccionar el diseñador de consulta", MsgBoxStyle.Critical) End If End If End If End Sub
Private Sub PrintToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PrintToolStripMenuItem.Click Imprimir() End SubEnd Class
Pagesetup
Public Class pagesetup Private Sub TextBox1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating If Not (IsNumeric(TextBox1.Text)) Then MsgBox("Debe ser un numero") e.Cancel = True End If End Sub
Private Sub TextBox2_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox2.Validating
CISC UNIVESRIDAD DE GUAYAQUIL
99
If Not (IsNumeric(TextBox2.Text)) Then MsgBox("Debe ser un numero") e.Cancel = True End If End Sub
Private Sub TextBox3_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox3.Validating If Not (IsNumeric(TextBox3.Text)) Then MsgBox("Debe ser un numero") e.Cancel = True End If End Sub
Private Sub TextBox4_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox4.Validating If Not (IsNumeric(TextBox4.Text)) Then MsgBox("Debe ser un numero") e.Cancel = True End If End Sub
Private Sub pagesetup_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim pm As New FarPoint.Win.Spread.PrintMargin() With pi If .Orientation = FarPoint.Win.Spread.PrintOrientation.Landscape Then RadioButton2.Checked = True Else RadioButton1.Checked = True End If pm = .Margin TextBox1.Text = pm.Left TextBox2.Text = pm.Right TextBox3.Text = pm.Top TextBox4.Text = pm.Bottom pm.Header = 0 pm.Footer = 0 End With End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Close() End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim pm As New FarPoint.Win.Spread.PrintMargin()
CISC UNIVESRIDAD DE GUAYAQUIL
100
If RadioButton2.Checked = True Then pi.Orientation = FarPoint.Win.Spread.PrintOrientation.Landscape Else pi.Orientation = FarPoint.Win.Spread.PrintOrientation.Portrait End If
pm.Left = Integer.Parse(TextBox1.Text) pm.Right = Integer.Parse(TextBox2.Text) pm.Top = Integer.Parse(TextBox3.Text) pm.Bottom = Integer.Parse(TextBox4.Text) pi.Margin = pm Me.Close() End Sub
End Class
SplashscreenPublic NotInheritable Class SplashScreen1
'TODO: Este formulario se puede establecer fácilmente como pantalla de bienvenida para la aplicación desde la ficha "Aplicación" ' del Diseñador de proyectos ("Propiedades" bajo el menú "Proyecto").
Private Sub SplashScreen1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 'Configure el texto del cuadro de diálogo en tiempo de ejecución según la información del ensamblado de la aplicación.
'TODO: Personalice la información del ensamblado de la aplicación en el panel "Aplicación" del cuadro de diálogo ' propiedades del proyecto (bajo el menú "Proyecto").
'Título de la aplicación If My.Application.Info.Title <> "" Then ApplicationTitle.Text = My.Application.Info.Title Else 'Si falta el título de la aplicación, utilice el nombre de la aplicación sin la extensión ApplicationTitle.Text = System.IO.Path.GetFileNameWithoutExtension(My.Application.Info.AssemblyName) End If
'Dé formato a la información de versión usando el texto establecido en el control de versión en tiempo de diseño como ' cadena de formato. Esto le permite una localización efectiva si lo desea.
CISC UNIVESRIDAD DE GUAYAQUIL
101
' Se pudo incluir la información de generación y revisión usando el siguientecódigo y cambiando el ' texto en tiempo de diseño del control de versión a "Versión {0}.{1:00}.{2}.{3}" o algo parecido. Consulte ' String.Format() en la Ayuda para obtener más información. ' ' Version.Text = System.String.Format(Version.Text, My.Application.Info.Version.Major, My.Application.Info.Version.Minor, My.Application.Info.Version.Build, My.Application.Info.Version.Revision)
Version.Text = System.String.Format(Version.Text, My.Application.Info.Version.Major, My.Application.Info.Version.Minor)
'Información de Copyright Copyright.Text = My.Application.Info.Copyright End Sub
Private Sub ApplicationTitle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ApplicationTitle.Click
End SubEnd Class
Classarchivo auditor
<Serializable()> Public Class ClsArchivoAuditor 'Try
'Catch ex As Exception ' MsgBox(ex.ToString) 'Finally ' Beep() 'End Try
Public nombre As String Public fecha As Date Public registros As DataSet Public CamposVirtuales As DataSet
Public Sub New() nombre = "archivo_audi" fecha = Now CamposVirtuales = My.Forms.MDIPrincipal.DSCamposVirtuales End Sub 'New
Public Sub Print() Debug.Print("nombre = '{0}'", nombre) Debug.Print("fecha = '{0}'", fecha.ToString)
CISC UNIVESRIDAD DE GUAYAQUIL
102
End Sub 'Print
End Class
Modarchivo
Imports System.IOImports System.Runtime.Serialization.Formatters.BinaryModule ModArchivo Public pi As New FarPoint.Win.Spread.PrintInfo()
Public Sub SaveFile(ByVal directorio As String, ByVal namefile As String, ByVal obj As ClsArchivoAuditor, ByVal tipo As String) Try If Not directorio.Trim = "" Then If My.Computer.FileSystem.DirectoryExists(directorio.Trim & "\" & namefile.Trim) Then MsgBox("Nombre de archivo ya existe ...", MsgBoxStyle.Critical) Else Dim ruta As String = ""
If tipo = ".sac" Then ruta = directorio.Trim & "\" & namefile.Trim My.Computer.FileSystem.CreateDirectory(ruta) ElseIf tipo = ".sub" Then ruta = directorio.Trim End If
Dim TestFileStream As Stream = File.Create(ruta & "\" & namefile &tipo) Dim serializer As New BinaryFormatter serializer.Serialize(TestFileStream, obj) TestFileStream.Close()
End If End If
Catch ex As Exception MsgBox("Error guardando archivo...") Finally Beep() End Try End Sub
Public Sub DeleteFile(ByVal ruta_archivo As String)
CISC UNIVESRIDAD DE GUAYAQUIL
103
Try File.Delete(ruta_archivo) MsgBox("Archivo eliminado...") Catch ex As Exception MsgBox("Error eliminando archivo...") Finally Beep() End Try End Sub
Public Sub DeleteDirectory(ByVal ruta_directorio As String) Try Directory.Delete(ruta_directorio, True) MsgBox("Directorio eliminado...") Catch ex As Exception MsgBox("Error eliminando archivo...") Finally Beep() End Try End Sub
Public Sub GuardarArchivo(ByVal fn As String, ByVal directorio As String, ByVal ds As DataSet, ByVal tipo As String) Dim obj As New ClsArchivoAuditor obj.registros = ds obj.nombre = fn SaveFile(directorio, fn, obj, tipo) End Sub
Public Sub GuardarCambios(ByVal ruta_archivo As String, ByVal obj As ClsArchivoAuditor) Try Dim TestFileStream As Stream = File.Create(ruta_archivo) Dim serializer As New BinaryFormatter serializer.Serialize(TestFileStream, obj) TestFileStream.Close()
Catch ex As Exception MsgBox("Error guardando cambios...") Finally Beep() End Try End Sub
End Module
Modconexion
CISC UNIVESRIDAD DE GUAYAQUIL
104
Imports System.Data.OdbcModule ModConexion Public Enum E_DSN Usuario = 31 Sistema = 32 End Enum
'APIS Private Declare Function SQLFreeEnvJC Lib "ODBC32.DLL" Alias "SQLFreeEnv" (ByVal han As Integer) As Integer
Private Declare Function SQLAllocEnvJC Lib "ODBC32.DLL" Alias "SQLAllocEnv" (ByRef han As Integer) As Integer
Private Declare Function SQLDataSourcesJC Lib "ODBC32.DLL" Alias "SQLDataSources" _ (ByVal han As Integer, _ ByVal iDir As Integer, _ ByVal sServerName As String, _ ByVal iBuf1 As Integer, _ ByRef iRealBuf1 As Integer, _ ByVal sDesc As String, _ ByVal iBuf2 As Integer, _ ByRef iRealBuf2 As Integer) As Integer
Public Sub listar_Dsn(ByVal DSNList As Collection, ByVal dsnType As E_DSN)
Dim s_Dsn As String Dim s_D As String Dim Len_Dsn As Integer Dim Len_D As Integer Dim ret As Integer Dim rets As Integer Dim flag As Boolean
flag = False SQLAllocEnvJC(rets) Do s_Dsn = Space(1024) s_D = Space(1024)
If flag Then ret = SQLDataSourcesJC(rets, 1, _ s_Dsn, 1024, Len_Dsn, _ s_D, 1024, Len_D)
Else
CISC UNIVESRIDAD DE GUAYAQUIL
105
ret = SQLDataSourcesJC(rets, dsnType, _ s_Dsn, 1024, Len_Dsn, _ s_D, 1024, Len_D)
flag = True End If
If ret = 0 Then DSNList.Add(Mid(s_Dsn, 1, Len_Dsn)) End If Loop While Len_Dsn <> 0 And ret = 0
Call SQLFreeEnvJC(rets)
End Sub
End Module
Muestreo Aleatorio Estratificado
Public Class FormEstratificar Public RegDatos As DataSet Public RegDatosAll As DataSet Public grilla As FarPoint.Win.Spread.FpSpread Public campo As String
Private Sub FormatNumerico() InitGrilla() Dim tn As New FarPoint.Win.Spread.CellType.NumberCellType tn.DecimalSeparator = "." Rangos.Sheets(0).Columns(0).CellType = tn Rangos.Sheets(0).Columns(1).CellType = tn End Sub
Private Sub FormatFecha() InitGrilla() Dim td As New FarPoint.Win.Spread.CellType.DateTimeCellType td.DateSeparator = "/"
CISC UNIVESRIDAD DE GUAYAQUIL
106
Rangos.Sheets(0).Columns(0).HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center Rangos.Sheets(0).Columns(0).CellType = td Rangos.Sheets(0).Columns(1).HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center Rangos.Sheets(0).Columns(1).CellType = td End Sub
Private Sub InitGrilla() With Rangos.Sheets(0) .Reset() .RowCount = 0 .ColumnCount = 4 .ColumnHeader.Columns(0).Label = "Desde" .ColumnHeader.Columns(1).Label = "Hasta" .ColumnHeader.Columns(2).Label = "# Reg" .ColumnHeader.Columns(3).Label = "# Reg presentar"
.ColumnHeader.Columns(0).Width = .ColumnHeader.Columns(0).GetPreferredWidth() + 10 .ColumnHeader.Columns(1).Width = .ColumnHeader.Columns(1).GetPreferredWidth() + 10 .ColumnHeader.Columns(2).Width = .ColumnHeader.Columns(2).GetPreferredWidth() + 10 .ColumnHeader.Columns(3).Width = .ColumnHeader.Columns(3).GetPreferredWidth() + 10
Dim tn As New FarPoint.Win.Spread.CellType.NumberCellType tn.DecimalPlaces = 0 tn.MinimumValue = 0
.Columns(2).CellType = tn .Columns(3).CellType = tn
.Columns(2, 2).BackColor = Color.Azure .Columns(2, 2).Locked = True End With End Sub
Private Sub FormEstratificar_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load InitGrilla() End Sub
Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged FormatNumerico() End Sub
CISC UNIVESRIDAD DE GUAYAQUIL
107
Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged FormatFecha() End Sub
Private Sub BtnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAdd.Click With Rangos.Sheets(0) If .RowCount < 6 Then .AddRows(.RowCount, 1) .SetColumnWidth(0, .GetPreferredColumnWidth(0) + 5) .SetColumnWidth(1, .GetPreferredColumnWidth(1) + 5) .SetColumnWidth(2, .GetPreferredColumnWidth(2) + 5) .SetColumnWidth(3, .GetPreferredColumnWidth(3) + 5) Else MsgBox("Maximo de filas a ingresar 6", MsgBoxStyle.Information) End If
End With End Sub
Private Sub BtnDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnDel.Click If Rangos.Sheets(0).RowCount > 0 Then Rangos.Sheets(0).RemoveRows(Rangos.Sheets(0).ActiveRow.Index, 1) End If End Sub
Public Sub LoadCamposCombo(ByVal h As FarPoint.Win.Spread.SheetView) 'lista de campos campo = "" With h Dim c As Integer For c = 0 To .ColumnCount - 1 CmbListaCampo.Items.Add(.Columns(c).Label) Next End With End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If Rangos.Sheets(0).RowCount > 0 Then If CmbListaCampo.Text.Trim.Length = 0 Then MsgBox("Debe seleccionar un campo de la lista ...", MsgBoxStyle.Critical) Else campo = CmbListaCampo.Text.Trim With Rangos.Sheets(0) Dim i As Integer
CISC UNIVESRIDAD DE GUAYAQUIL
108
Dim desde As String Dim hasta As String Dim n As Integer Dim t As Integer Dim es As Integer
SBRegs.Text = 0 SBEst.Text = 0 t = 0 es = 0 For i = 0 To .RowCount - 1 desde = .GetText(i, 0) hasta = .GetText(i, 1) If RadioButton1.Checked Then n = CountRegRango(campo & ">=" & desde & " AND " & campo & "<=" & hasta) .SetValue(i, 2, n) es = es + .GetValue(i, 3) t = t + n ElseIf RadioButton2.Checked Then n = CountRegRango(campo & " >= '" & desde & "' AND " & campo & " <= '" & hasta & "'") .SetValue(i, 2, n) es = es + .GetValue(i, 3) t = t + n End If Next
SBRegs.Text = t SBEst.Text = es End With End If End If End Sub
Private Function CountRegRango(ByVal expre As String) As Integer Dim n As Integer = 0
Try n = RegDatosAll.Tables(0).Select(expre).Length Catch ex As Exception MsgBox("Error al cargar consulta ... ") Finally Beep() End Try Return n End Function
CISC UNIVESRIDAD DE GUAYAQUIL
109
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If Rangos.Sheets(0).RowCount > 0 Then If CmbListaCampo.Text.Trim.Length = 0 Then MsgBox("Debe seleccionar un campo de la lista ...", MsgBoxStyle.Critical) Else campo = CmbListaCampo.Text.Trim With Rangos.Sheets(0) Dim i As Integer Dim n As Integer Dim nr As Integer Dim desde As String Dim hasta As String Dim semaforo As Boolean
RegDatos = RegDatosAll.Clone grilla.Sheets(3).DataSource = RegDatos For i = 0 To .RowCount - 1 desde = .GetText(i, 0) hasta = .GetText(i, 1) n = .GetValue(i, 2) nr = .GetValue(i, 3)
If nr > n Then MsgBox("Rango:[" & desde & "," & hasta & "] ;El numero de registros a extraer debe ser menor a los registros encontrados", MsgBoxStyle.Information) Else If RadioButton1.Checked Then Calculo(campo & ">=" & desde & " AND " & campo & "<=" & hasta, n, nr) ElseIf RadioButton2.Checked Then Calculo(campo & " >= '" & desde & "' AND " & campo & " <= '" & hasta & "'", n, nr) End If End If
If grilla.Sheets(3).RowCount > 0 Then If semaforo Then grilla.Sheets(3).Rows(grilla.Sheets(3).RowCount - nr, grilla.Sheets(3).RowCount - 1).BackColor = Color.LightGray semaforo = False Else grilla.Sheets(3).Rows(grilla.Sheets(3).RowCount - nr, grilla.Sheets(3).RowCount - 1).BackColor = Color.White semaforo = True End If End If
CISC UNIVESRIDAD DE GUAYAQUIL
110
Next grilla.ActiveSheetIndex = 3 End With End If End If End Sub
Private Sub Calculo(ByVal expre As String, ByVal n As Integer, ByVal nr As Integer) Dim c As Integer Dim f As Integer Dim A(nr) As Integer Dim i As Integer Dim ii As Integer Dim v As Integer Dim band As Boolean Dim row As DataRow
Try Dim drarray() As DataRow
drarray = RegDatosAll.Tables(0).Select(expre) '-------------------------------------------------------------- If nr = n Then For f = 0 To nr - 1 row = RegDatos.Tables(0).NewRow() For c = 0 To drarray(0).Table.Columns.Count - 1 row(c) = drarray(f).Item(c) Next RegDatos.Tables(0).Rows.Add(row) Next Else 'aleatorio i = 0 While (i < nr) v = CInt(Int(((drarray.Length - 1) * Rnd()) + 1)) band = False For ii = 0 To i If v = A(ii) Then band = True Exit For End If Next If Not band Then A(i) = v i = i + 1 End If End While
CISC UNIVESRIDAD DE GUAYAQUIL
111
'copiando registros '------------------------------------------------------------------- For f = 0 To nr - 1 row = RegDatos.Tables(0).NewRow() For c = 0 To drarray(0).Table.Columns.Count - 1 row(c) = drarray(A(f)).Item(c) Next RegDatos.Tables(0).Rows.Add(row) Next End If Catch ex As Exception MsgBox("Error al cargar consulta ... ") Finally Beep() End Try
End Sub
End Class
Join entre tablas
Imports System.IOImports System.Runtime.Serialization.Formatters.BinaryPublic Class FrmUnion Public directorio As String Public tvNodo As TreeNode Dim RegDatosAllIzq As DataSet Dim RegDatosAllDer As DataSet Dim ds As New DataSet()
Public Sub CargarTablasBD() Try
CISC UNIVESRIDAD DE GUAYAQUIL
112
For Each foundDirectory As String In My.Computer.FileSystem.GetDirectories(directorio, FileIO.SearchOption.SearchTopLevelOnly) CmbTablasIzq.Items.Add(foundDirectory.Substring(directorio.Length +1)) CmbTablasDer.Items.Add(foundDirectory.Substring(directorio.Length +1)) Next CmbTablasIzq.SelectedIndex = 0 CmbTablasDer.SelectedIndex = 0
Catch ex As Exception MsgBox("Error al cargar las tablas", MsgBoxStyle.Critical) End Try
End Sub
Private Sub CargarCamposTabla(ByVal dir As String, ByVal tbl As String, ByVal cmb As ComboBox, ByVal list As CheckedListBox, ByRef RegDatos As DataSet) Try Dim archivo As String = dir & "\" & tbl & ".SAC" Dim test As ClsArchivoAuditor
cmb.Items.Clear() list.Items.Clear() RegDatos = New DataSet
If File.Exists(archivo) Then Dim TestFileStream As Stream = File.OpenRead(archivo) Dim deserializer As New BinaryFormatter
test = CType(deserializer.Deserialize(TestFileStream), ClsArchivoAuditor)
RegDatos = test.registros.Copy
Dim i As Integer Dim campo As DataColumn
For i = 0 To test.CamposVirtuales.Tables(0).Rows.Count - 1 campo = New DataColumn With campo 'nombre del campo virtual .ColumnName = test.CamposVirtuales.Tables(0).Rows(i).Item(0).ToString .DefaultValue = "" 'formula
CISC UNIVESRIDAD DE GUAYAQUIL
113
.Expression = test.CamposVirtuales.Tables(0).Rows(i).Item(2).ToString End With
RegDatos.Tables(0).Columns.Add(campo) Next
For i = 0 To RegDatos.Tables(0).Columns.Count - 1 cmb.Items.Add(RegDatos.Tables(0).Columns(i).ColumnName) list.Items.Add(RegDatos.Tables(0).Columns(i).ColumnName) Next
End If
Catch ex As Exception MsgBox("Error al cargar los campos", MsgBoxStyle.Critical) End Try
End Sub
Private Sub CmbTablasIzq_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmbTablasIzq.SelectedIndexChanged If CmbTablasIzq.SelectedIndex = -1 Then MsgBox("Debe seleccionar una tabla") Else CargarCamposTabla(directorio & "\" & CmbTablasIzq.Text.Trim, CmbTablasIzq.Text.Trim, CmbCampoIzq, ListCampIzq, RegDatosAllIzq) End If End Sub
Private Sub CmbTablasDer_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmbTablasDer.SelectedIndexChanged If CmbTablasDer.SelectedIndex = -1 Then MsgBox("Debe seleccionar una tabla") Else CargarCamposTabla(directorio & "\" & CmbTablasDer.Text.Trim, CmbTablasDer.Text.Trim, CmbCampoDer, ListCampDer, RegDatosAllDer) End If End Sub
Private Sub FrmUnion_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load InitGrilla() End Sub
Private Sub InitGrilla() With FpSDatos.Sheets(0)
CISC UNIVESRIDAD DE GUAYAQUIL
114
.Reset() .DataSource = Nothing .RowCount = 0 .ColumnCount = 0 .OperationMode = FarPoint.Win.Spread.OperationMode.ReadOnly End With End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Union() End Sub
Private Sub Union() 'ds.Clear() ds.Reset() InitGrilla() Try If CmbCampoIzq.Text.Trim = CmbCampoDer.Text.Trim Then
Dim tbl1 As New DataTable Dim tbl2 As New DataTable Dim tblU As New DataTable Dim row As DataRow Dim column As DataColumn Dim rowx As DataRow Dim itemChecked As Object
tbl1.Namespace = CmbTablasIzq.Text.Trim tbl2.Namespace = CmbTablasDer.Text.Trim
'cargando datos seleccionadas en la tabla izquierda '----------------------------------------------------------------------
'copiando columnas For Each itemChecked In ListCampIzq.CheckedItems If ListCampIzq.GetItemCheckState(ListCampIzq.Items.IndexOf(itemChecked)) = CheckState.Checked Then tbl1.Columns.Add(New DataColumn(RegDatosAllIzq.Tables(0).Columns(itemChecked.ToString()).ColumnName, _ RegDatosAllIzq.Tables(0).Columns(itemChecked.ToString()).DataType)) End If Next
'copiando registros en la tabla izquierda
CISC UNIVESRIDAD DE GUAYAQUIL
115
For Each row In RegDatosAllIzq.Tables(0).Rows rowx = tbl1.NewRow For Each column In tbl1.Columns rowx(column.ColumnName) = row(column.ColumnName) Next tbl1.Rows.Add(rowx) Next '------------------------------------------------------------------------------------ '------------------------------------------------------------------------------------ '------------------------------------------------------------------------------------
'cargando datos seleccionadas en la tabla derecha '----------------------------------------------------------------------
'copiando columnas For Each itemChecked In ListCampDer.CheckedItems If ListCampDer.GetItemCheckState(ListCampDer.Items.IndexOf(itemChecked)) = CheckState.Checked Then tbl2.Columns.Add(New DataColumn(RegDatosAllDer.Tables(0).Columns(itemChecked.ToString()).ColumnName, _ RegDatosAllDer.Tables(0).Columns(itemChecked.ToString()).DataType)) End If Next
'copiando registros en la tabla derecha For Each row In RegDatosAllDer.Tables(0).Rows rowx = tbl2.NewRow For Each column In tbl2.Columns rowx(column.ColumnName) = row(column.ColumnName) Next tbl2.Rows.Add(rowx) Next '------------------------------------------------------------------------------------ '------------------------------------------------------------------------------------ '---------------------------------- algoritmo VerJCJoin ----------------------------- '------------------------------------------------------------------------------------ '------------------------------------------------------------------------------------ For Each column In tbl1.Columns tblU.Columns.Add(New DataColumn(column.ColumnName, column.DataType)) Next
'copiando columnas seleccionada en la tabla dos For Each column In tbl2.Columns If column.ColumnName.Trim <> CmbCampoIzq.Text.Trim Then
CISC UNIVESRIDAD DE GUAYAQUIL
116
Try If tblU.Columns.IndexOf(column.ColumnName) = -1 Then tblU.Columns.Add(New DataColumn(column.ColumnName, column.DataType)) End If
Catch ex As Exception MsgBox(ex.Message) End Try End If Next
Dim dc As DataColumn Dim drIzq As DataRow Dim drUnion As DataRow
'copiando filas For Each row In tbl1.Rows Dim drarray() As DataRow Dim r As Integer
drIzq = tbl1.NewRow For Each dc In tbl1.Columns drIzq(dc.ColumnName) = row(dc.ColumnName) Next
drarray = tbl2.Select(CmbCampoIzq.Text.Trim & "=" & row(CmbCampoIzq.Text.Trim)) If drarray.Length > 0 Then Dim f As Integer
For f = 0 To drarray.Length - 1 drUnion = tblU.NewRow For Each dc In tbl1.Columns drUnion(dc.ColumnName) = drIzq(dc.ColumnName) Next
For r = tbl1.Columns.Count To tblU.Columns.Count - 1 drUnion(tblU.Columns(r).ColumnName) = drarray(f).Item(tblU.Columns(r).ColumnName) Next
tblU.Rows.Add(drUnion) Next
ElseIf drarray.Length = 0 Then
drUnion = tblU.NewRow For Each dc In tbl1.Columns
CISC UNIVESRIDAD DE GUAYAQUIL
117
drUnion(dc.ColumnName) = drIzq(dc.ColumnName) Next
tblU.Rows.Add(drUnion) End If Next
ds.Tables.Add(tblU) FpSDatos.Sheets(0).DataSource = ds Else MsgBox("Los campos relacion deben ser iguales ...", MsgBoxStyle.Critical) End If Catch ex As Exception MsgBox("Error creando relacion", MsgBoxStyle.Critical) End Try End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim nombre_archivo As String
nombre_archivo = InputBox("Nombre de Tabla", "Tabla") If nombre_archivo.Trim.Length > 0 Then If Not directorio.Trim = "" Then If My.Computer.FileSystem.DirectoryExists(directorio) Then If FpSDatos.Sheets(0).RowCount > 0 Then GuardarArchivo(nombre_archivo, directorio, ds, ".sac") Dim nodo As TreeNode
nodo = tvNodo.Nodes.Add(nombre_archivo, nombre_archivo, 3, 3) nodo.ForeColor = Color.DarkGray nodo.NodeFont = New Font("Arial", 10, FontStyle.Regular) Else MsgBox("No hay registros en consulta", MsgBoxStyle.Critical) End If End If End If End If End Sub
End Class
Reporte de Resultado
Public Class FrmReporte
CISC UNIVESRIDAD DE GUAYAQUIL
118
Public grilla As FarPoint.Win.Spread.FpSpread
Private Sub FrmReporte_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load LBFecha.Text = Date.Now End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If TxtAuditor.Text.Trim.Length > 0 Then Dim cabecera As String = "" Dim pie As String = "" Dim obs() As String
With pi .ColStart = grilla.ActiveSheet.Models.Selection.AnchorColumn .ColEnd = grilla.ActiveSheet.Models.Selection.LeadColumn .RowStart = grilla.ActiveSheet.Models.Selection.AnchorRow .RowEnd = grilla.ActiveSheet.Models.Selection.LeadRow End With If FrmImprimirReporte.IsDisposed Then FrmImprimirReporte = New FrmImprimirReporte()
End If cabecera = "/c/fz""16""/fb Reporte de Auditoria /n" cabecera = cabecera + "/c/fz""16""/fb Resultado de calculos/n"
cabecera = cabecera & "/r/fz""10""/fb Fecha-Hora: " & LBFecha.Text.Trim & " /n" cabecera = cabecera & " /n" cabecera = cabecera & "/fb Auditor: /fb0" & TxtAuditor.Text.Trim & "/n /n"
obs = TxtObservacion.Lines
pie = pie & " /n"
pie = pie & "/fb Observación: /fb0/n "
Dim l As Integer For l = 0 To obs.Length - 1 pie = pie & obs(l) & "/n " Next
pie = pie & "/n Auditor (Firma): ____________________________ /n /n"
FrmImprimirReporte.StartPage(grilla, grilla.ActiveSheetIndex, cabecera, pie)
CISC UNIVESRIDAD DE GUAYAQUIL
119
Else MsgBox("Es necesario el campo auditor ...") End If End Sub
End Class
CISC UNIVESRIDAD DE GUAYAQUIL
120
Manual de Usuario
Herramienta CAATS
LUPA 1.0
Introducción
La Herramienta Caats requiere de la instalación y configuración de
algunos programas, necesarios para iniciar la aplicación y para su
correcta funcionalidad, el usuario deberá referirse al manual técnico
que se encuentra más adelante en este tomo.
Módulo Principal
Pantalla de ingreso al sistema Lupa 1.0
FIGURA 1
Menú Principal
FIGURA 2
En el menú principal del LUPA 1.0 consta de las siguientes opciones
En estas opciones contamos con:
Archivo (conexión):
Aquí se muestran las opciones para iniciar la importación de
datos para los procesos de auditoria
Cálculos:
Aquí encontraremos las opciones para realizar los cálculos de
auditoria mas importantes
Exportación:
Aquí encontraremos la opción para realizar exportaciones de
los datos a Excel
Reportes:
Aquí encontraremos las opciones de reportes del sistema.
CISC UNIVERSIDAD DE GUAYAQUIL
2
Archivo conexión
Aquí encontraremos las opciones para realizar la conexión a la base de
datos o un archivo. La opción cliente
Si no existe el cliente procede a crearlo
FIGURA 3
Archivo conexión agregar base datos
Aquí encontraremos la opción para darle un nombre al archivo o base
de datos que vamos a importar
CISC UNIVERSIDAD DE GUAYAQUIL
3
FIGURA 4Archivo conexión Tabla
Aquí encontraremos la opción tabla que activara un asistente de
importación de datos.
CISC UNIVERSIDAD DE GUAYAQUIL
4
FIGURA 5
Luego escogeremos que tipo de importación deseamos si es un
archivo o una base de datos
Importación Archivo paso 1: escogemos el tipo de archivo que
deseamos importar Excel, Access, etc.
CISC UNIVERSIDAD DE GUAYAQUIL
5
FIGURA 6
Importación Archivo paso 2: Ubicamos la ruta del archivo que
deseamos importar y damos click en siguiente.
CISC UNIVERSIDAD DE GUAYAQUIL
6
FIGURA 7
Importación Archivo paso 3: especificamos los datos a
importar y damos clic en siguiente.
CISC UNIVERSIDAD DE GUAYAQUIL
7
FIGURA 8
Importación Archivo paso 4: le asignamos un nombre a los
datos importados y damos click a finalizar.
FIGURA 9
CISC UNIVERSIDAD DE GUAYAQUIL
8
Importación Archivo paso 5: se realiza la importación y se guarda
automáticamente el archivo en el arbol
FIGURA 10
Importación Base Datos paso 1: escogemos la opcion usar
ODBC y damos click siguiente.
CISC UNIVERSIDAD DE GUAYAQUIL
9
FIGURA 11
Importación Base Datos paso 2: Seleccionamos el tipo de dsn
al cual deseamos conectarnos que puede ser sistema(red) o
usuario (en la misma maquina) y damos click en siguiente.
CISC UNIVERSIDAD DE GUAYAQUIL
10
FIGURA 12
Importación Base Datos paso 3: especificamos la tabla a
importar y damos clic en siguiente.
FIGURA 13
CISC UNIVERSIDAD DE GUAYAQUIL
11
Importación Base Datos paso 4: le asignamos un nombre a los
datos importados y damos click a finalizar.
FIGURA 14 Importación Base Datos paso 5: se realiza la importación y se
guarda automáticamente la tabla en el arbol
CISC UNIVERSIDAD DE GUAYAQUIL
12
FIGURA 15
COLUMNAS VIRTUALES: Una vez realizada la importación de los
datos, tenemos el gris con los datos, aquí podemos comenzar a
trabajar los datos importados con columnas virtuales, en el grid
tenemos en la parte inferior una pestaña con la leyenda virtuales
FIGURA 16
CISC UNIVERSIDAD DE GUAYAQUIL
13
Damos click en esta pestaña y se abrira otra ventana en el cual se nos
presentara 3 iconos que utilizaremos para trabajar con las virtuales.
FIGURA 17
Cada opción que se muestra a continuación realiza una tarea
FIGURA 18
El símbolo mas (+) sirve para crear una fila en el cual detallaremos el
nombre que le daremos a esa columna virtual.
El símbolo menos (-) sirve para eliminar una fila
CISC UNIVERSIDAD DE GUAYAQUIL
14
FIGURA 19
El símbolo calculadora abre un editor de formulas en el cual
especificaremos alguna formula (operación) que se requiere y que
sera mostrada en la columna virtual.
FIGURA 20
CISC UNIVERSIDAD DE GUAYAQUIL
15
Especificamos la formula para obtener los resultados deseados, damos
click en el icono que tiene forma de visto para validar la formula o si
deseamos borrar la formula damos click en el icono con forma de
borrador
FIGURA 21
Al final damos click en el icono de guardar para confirmar la
formula y proceder a ver los resultados.
CISC UNIVERSIDAD DE GUAYAQUIL
16
FIGURA 22La columna virtual se muestra con un color diferente al de los datos
originales (blanco)
FIGURA 23
CISC UNIVERSIDAD DE GUAYAQUIL
17
Cálculos-detección salto secuencia
Aquí tenemos esta opción para verificar un salto en una secuencia
numérica esta opción nos muestra, la columna a verificar debe ser de
tipo numérico, y esta opción nos mostrara el valor mínimo y final en el
que esta incluido el salto de secuencia.
Escogemos los datos a verificar el salto, damos clic en la pestaña de
editor de consulta
CISC UNIVERSIDAD DE GUAYAQUIL
18
FIGURA 24
Aquí nos muestra una pantalla en blanco, en este editor damos clic en
el icono de filtro en la barra superior y esto llamara los datos que
queremos procesar
CISC UNIVERSIDAD DE GUAYAQUIL
19
FIGURA 25Una vez listados los datos procedemos a dar click en le icono de salto
de secuencia o en la opción de salto de secuencia en el menú
FIGURA 26
al dar el clic se abre una ventana donde especificaremos el código a
verificar y presionamos OK.
CISC UNIVERSIDAD DE GUAYAQUIL
20
FIGURA 27
Como resultado obtenemos una pantalla con los datos delimitados en
donde se encuentra el salto de secuencia.
FIGURA 28
Cálculos- detección datos duplicados
CISC UNIVERSIDAD DE GUAYAQUIL
21
Aquí tenemos esta opción para verificar los datos duplicados, aquí
verificaremos los datos que se repiten, al igual que la opción anterior
nos vamos al editor de consultas presionamos el icono de filtro
Nos muestra los datos y presionamos la opción de detección datos
duplicados.
FIGURA 29
CISC UNIVERSIDAD DE GUAYAQUIL
22
Esto nos muestra una nueva ventana y escogemos bajo que campo
deseamos realizar la detección de duplicidad
FIGURA 30
Luego nos muestra los datos segmentados de acuerdo a la duplicidad
que se genere.
FIGURA 31
CISC UNIVERSIDAD DE GUAYAQUIL
23
Cálculos-muestreo aleatorio
Este presenta una muestra de los datos que tenemos en nuestro grid,
especificamos cuantos datos deseamos presentar y nos muestra en
el editor de consultas la cantidad de datos aleatoriamente
especificados, seguimos los primeros pasos de los cálculos anteriores,
una vez aplicamos el filtro en el editor de consulta y lista los datos de
la tabla, damos clic en el icono de muestreo aleatorio de la barra
FIGURA 32
CISC UNIVERSIDAD DE GUAYAQUIL
24
En este caso escogimos 3 datos como valor en el rango. La ventana
arriba nos muestra el rango máximo y mínimo que podemos escoger.
Y al final nos muestra los datos de la muestra.
FIGURA 33
Cálculos-muestreo aleatorio estratificado
Este presenta una muestra de los datos que tenemos en nuestro grid,
especificamos que tipo de dato deseamos listar puede ser datos tipo
numérico o fecha. Se repiten los primeros pasos al igual que los
cálculos anteriores, una vez listados todos los datos en el editor de
consulta, damos clic en el icono de muestreo aleatorio
estratificado.
CISC UNIVERSIDAD DE GUAYAQUIL
25
FIGURA 34
Se nos presenta la pantalla para realizar las especificaciones,
escogemos el tipo de dato (numérico o fecha) con el símbolo mas
agregamos una fila para llenar los campos de los respectivos rangos
Desde – hasta: especificamos desde q registro iniciamos la
estratificación hasta su tope respectivo.
Campo: indicamos bajo que campo iniciamos el criterio de busqueda
y damos clic en estratificar y nos muestra las diferentes
estratificaciones posibles.
CISC UNIVERSIDAD DE GUAYAQUIL
26
FIGURA 35
Opciones de insertar o eliminar columna
Estas opciones nos ayuda a insertar una columna para realizar un
calculo o eliminar una columna que no deseamos que se muestre.
CISC UNIVERSIDAD DE GUAYAQUIL
27
En el caso de eliminar columna basta con dar clic en eliminar columna
y nos aparece una ventana q nos pide seleccionar la columna a
eliminar
FIGURA 36
Para insertar un a columna se selecciona el icono de insertar columna
y nos aparece un editor de formulas que funciona igual que el de las
columnas virtuales, el metodo es el mismo se procede a indicar por
medio de formula q resultado deseamos presentar en la nueva
columna insertada. Confirmamos dando click en el icono en forma de
visto.
CISC UNIVERSIDAD DE GUAYAQUIL
28
FIGURA 37
Nos sale una ventana que nos pedirá darle un nombre a la nueva
columna insertada.
CISC UNIVERSIDAD DE GUAYAQUIL
29
FIGURA 39
Podemos grabar estas tablas procesadas como hijas en el árbol con
el icono .
CISC UNIVERSIDAD DE GUAYAQUIL
31
Unión y cálculos de tablas
Para realizar esta operación se escoge una base de datos y luego la
opción de la barra de herramientas
FIGURA 41
Luego aparece a continuación el cuadro de dialogo Unión de tablas,
donde se escoge las tablas donde tienen relaciones y campos clave
que se establecen y a continuación se selecciona los campos que se
visualizaran en la sección de Registros.
CISC UNIVERSIDAD DE GUAYAQUIL
33
FIGURA 42
Para que se muestren los campos de registro se hace clic con el botón
Consultar y para que aparezcan luego de realizar la operación, se
hace clic en el botón de Guardar; donde primeramente se coloca el
nombre de una subtabla donde esta almacena el JOIN
FIGURA 43
Y por ultimo en la pantalla del sistema aparece el resultado y en el
nombre de la tabla en el árbol de tablas y Bases de datos.
CISC UNIVERSIDAD DE GUAYAQUIL
34
Reportes Los reportes permiten imprimir los resultados de las operaciones con el botón Reporte. La pantalla que se muestra a continuación es para colocar el nombre del auditor y sus observaciones y fecha y hora en cuanto a las pruebas realizadas
FIGURA 45
Y damos clic en el botón para ver el cuadro de
configuración de impresión para establecer la impresión.
CISC UNIVERSIDAD DE GUAYAQUIL
36
FIGURA 46
En vista preliminar se observa la(s) páginas que muestran los resultados
FIGURA 47
En las opciones como Configurar permite colocar la orientación de laspáginas a imprimir, y los márgenes; la opción imprimir para enviar la orden de impresión.
CISC UNIVERSIDAD DE GUAYAQUIL
37
Exportación a Excel El sistema Lupa 1.0 puede exportar a Excel las tablas de los registroso las tablas creadas ya sea para poder realizar alguna operación uotra actividad con los datos.Para poder realiza la exportación efectúa el filtro de los datos y luego
se hace clic en el botón Exportar Excel y a continuación se
muestra el siguiente cuadro de dialogo
FIGURA 48 Donde se establece el lugar del archivo que será importado con la
extensión .xls, se escribe el nombre del archivo que exportara los
CISC UNIVERSIDAD DE GUAYAQUIL
38