universidad de magallanes · formulario mdi. 12 componentes del formulario principal. 1. toolbar1....
TRANSCRIPT
UNIVERSIDAD DE MAGALLANES
FACULTAD DE INGENIERIA DEPARTAMENTO DE INGENIERÍA
EN COMPUTACIÓN
SISTEMA EN GESTION DE ORDENES DE COMPRA
LUIS ALBERTO CIFUENTES MUÑOZ AGOSTO 2004
CAPÍTULO I INTRODUCCIÓN
CAPÍTULO II PERCEPCIÓN DE LA NECESIDAD DEL SIA.
CAPÍTULO III CONCEPCIÓN Y FORMALIZACIÓN DEL PROYECTO
CAPÍTULO IV DESARROLLO E IMPLEMENTACIÓN
CAPÍTULO V CONCLUSIÓN
ANEXO APÉNDICE A
DOS PROPIEDADES DE LA TOOLMANN
ANEXO APÉNDICE B
CÓDIGO DE SQL DE PROCEDIMIENTOS ALMACENADOS
El presente Informe ha sido aprobado con la siguiente calificación: Luis Alberto Cifuentes Muñoz.- Informe: Defensa: Nota Final:
Sr. Carlos Arias Director Departamento
De Ingeniería En Computación.
26 de septiembre de 2004
UNIVERSIDAD DE MAGALLANES
FACULTAD DE INGENIERIA DEPARTAMENTO DE INGENIERÍA
EN COMPUTACIÓN
SISTEMA EN GESTION DE ORDENES DE COMPRA
“Proyecto de Aplicación presentado en conformidad a los requisitos para obtener
el Título de Técnico en Computación e Informática”.
“Profesor Guía: Sr. Marcelo Obando Mayorga.”
LUIS ALBERTO CIFUENTES MUÑOZ AGOSTO 2004
1INTRODUCCIÓN
1.1. CONCEPTO.
Se han implementado nuevos métodos para la creación de tareas, según su
complejidad; y otras por su parte, sólo por el tiempo que llevaba realizarlas, ahora
pueden ser desarrolladas con la mínima intervención humana, dejando para éste la
planificación de nuevas estrategias de desarrollo y control de estos procesos llamados
tareas.
Es por todo esto, que se han creado nuevos conceptos en cuanto al enfoque de
desarrollar tareas más complejas, utilizando la administración de información, como
además de ampliar la gama de campos en la cual interviene la computación; en el área
denominada “Informática”.
Como es de suponerse, la informática es una herramienta fundamental para el
desarrollo de un proyecto exitoso, pues es fundamental tener control absoluto sobre la
información actualizada de los sucesos registrados en el sistema. Es por esto, que
actualmente se han desarrollado aplicaciones(software) que gestionan la creación y el
desarrollo de proyectos y tareas, así como también controlar los recursos a cargo de
desarrollar éstas tareas, realizando un monitoreo de actividades y generando informes
de desarrollo o rendimiento de recursos. Es en esta parte donde este proyecto entra en
función, ya que hace bastantes años atrás, no se había automatizado el proceso de
ordenes de compra y trabajo, ya que habían otros sistemas mucho más importantes,
más complejos que administrar y actualizar, es por ende que entra en desarrollo un
nuevo sistema que se denominará “Sistema en Gestión de Ordenes de Compra”.
2Este sistema cumplirá en forma automática todo lo que se hacía manualmente,
para evitar las fallas o errores que cometían los usuarios encargados de hacer dicha
solicitud.
Para el desarrollo de este proyecto se utilizaron las herramientas de
programación como Visual Basic 6.0, SQL 2000 Server, generación de informe e
impresión de datos en Seagate Cristal Report 6.0.
A nivel software Windows, SQL 2000 Server y a nivel hardware, un sistema de
red LAN con más de 100 estaciones de trabajo.
Más adelante habrá una reseña de toda la plataforma y en una forma descriptiva
el desarrollo de la aplicación.
31.2 OBJETIVOS DEL PROYECTO.
Este proyecto tiene como objetivo implementar una aplicación desarrollada con
Visual Basic que pueda automatizar el proceso de generación, aprobación e impresión
de ordenes de compra, trabajo y una contabilización automática de facturas.-
1.2.1 OBJETIVOS ESPECÍFICOS.
La aplicación a desarrollar deberá almacenar en una base de datos las solicitudes
ingresadas a través de una interfaz gráfica, con el propósito de que el encargado de
aprobar las solicitudes tenga acceso a éstas para su gestión. A su vez permita
gestionar la solicitud de trabajo, solicitud de ordenes de compra y la contabilización
automática de facturas según ordenes de compra.
4PERCEPCIÓN DE LA NECESIDAD DEL SIA.
2.1. PLANTEAMIENTO DEL PROBLEMA. Cada departamento (5), tiene una persona encargada de confeccionar
manualmente una solicitud de compra o trabajo a través de un documento, en el cual se
específica detalladamente la compra o el tipo de trabajo que se desee realizar.
El encargado no lleva un control de las solicitudes que se van ingresando
mensualmente ni de quien las recibe. También pueden cometerse errores en la
digitación de los documentos.
La persona que recepciona las solicitudes, tiene que tener un orden de las
solicitudes que ingresan, guardándolas en carpetas. A su vez cuando se le pide una
solicitud de años anteriores puede que este documento este en mal estado o que no se
le entienda lo que dice la solicitud.
Se puede determinar que se produce un problema concreto de ordenamiento y
almacenamiento de Ordenes de Compra ingresadas y recepcionadas.
52.2 FACTIBILIDAD DE DESARROLLO E IMPLEMENTACION
Con respecto al estudio de factibilidad, este no está considerado para este
desarrollo. Las razones que llevan a esta omisión, son que el departamento de
informática tiene destinado recursos para investigación y desarrollo de otros proyectos
informáticos enfocados plenamente a la producción.
El período para llevar a cabo este proyecto considera un plazo de 30 días.
La etapa de Factibilidad será divida en 3 actividades:
a.- Económico : Hardware y Software son proporcionados por la
empresa que apoya el proyecto.-
b.- Técnico : Un equipo (PC) de desarrollo, tipo multimedia genérico
Celeron de 600Mhz, 64Mb RAM. Un entorno de desarrollo: acceso a Red LAN Con
servidores NT 4.0, Visual Basic 6.0, SQL 2000 Server, Crystal Report, además de
aplicaciones de oficina Microsoft®, que formará parte del SIA a desarrollar.
Manuales de programador, ayuda para Visual Basic 6.0 y manual de
Cristal Report.-
c.- Operacional : Los usuarios tienen un conocimiento nivel usuario
Windows. Los que operen este sistema se les hará una previa capacitación antes de
usar el sistema, para tratar de disminuir los errores de digitación y navegación en el
sistema.-
6CONCEPCIÓN Y FORMALIZACIÓN DEL PROYECTO
3.1. DISEÑO LÓGICO DE LA BASE DE DATOS.
Para generar la base de datos, se implementa un nombre, en este caso se llamará
PRUEBA.
Comenzando con el diseño, se identifican los elementos necesarios para la
estructura de la información.
• Las Solicitudes.
• La persona que hace la Solicitud.
• La persona que satisface la Solicitud.
• El sistema sobre el cual existe una Solicitud.
• El lugar que opera la Solicitud.
De esta manera los elementos compuestos a crear son las siguientes:
• Un código de identificación para cada Solicitud que se ingrese.
• Los estados de las Solicitudes, o sea, si la solicitud se encuentra aprobada,
anulada o pendiente.
• Una fecha de la creación de la Solicitud.
• Una fecha de aprobación de la Solicitud.
7
3.2. DIAGRAMAS DE FLUJO DE DATOS.
1. Informe de las solicitudes ingresadas.
informe Solicitudes Ingresadas
2. Informe de solicitudes Aprobadas.-
informe Solicitudes Aprobadas
INFORME
SOLICITUDES
SOLICITUDES APROBADAS
COMPRA
TRABAJO
COMPRA
TRABAJO
ENCARGADO
ENCARGADO
8
3. Encargado Ingresa Solicitud.
Solicitud Detalles de las Solicitudes
4. Aprobar Solicitudes.
Aprobar Solicitudes Pendientes
ENCARGADO
INGRESO DE SOLICITUD
ENCARGADO
SOLICITUDES
COMPRA
TRABAJO
FACTURA
COMPRA
TRABAJO
9
5. Encargado Imprime Solicitud y Factura.
imprimir
IMPRIMIR SOLICITUD
TRABAJO
FACTURA
COMPRA
ENCARGADO
103.3 El modelo relacional del Sistema en Gestión de Compra.
El modelo relacional queda compuesto por trece tablas, tres tablas maestras y
diez tablas secundarias. Las tablas maestras almacenan los datos de las tareas o
requerimientos, las tablas secundarias resguardan los datos de proveedores, oficinas,
sistemas y detalle en general. De esta manera el modelo relacional se presenta en la
siguiente figura.
Figura. N° 1 . Modelo Relacional de la Base de Datos.
tab_centrocod_centro: bigint
nom_centro: char(100)tab_detalle_trabajonum_trabajo: bigintdescripcion_trabajo: char(255)
cantidad: bigintprecio: biginttotal: bigintitem: bigint
tab_factura_clienterut_cliente: bigintdrut_cliente: char(1)
nombre: char(50)direccion: char(100)telefono: bigintcomuna: char(30)ciudad: char(30)
tab_monedacod_moneda: char(10)
nom_moneda: char(20)
tab_oficinacod_oficina: char(3)
nom_oficina: char(30)
tab_proveedorrut_proveedor: bigintdrut_proveedor: char(1)
nom_proveedor: char(50)
tab_facturanum_factura: bigint
tipo: char(3)rut_cliente: bigintdrut_cliente: char(1)sucursal: char(10)fecha_documento: char(10)fecha_vencimiento: char(10)monto_descuento: bigintmonto_afecto: bigintmonto_exento: bigintmonto_iva: bigintmonto_documento: bigintmonto_total: bigintcod_tipo: char(3)
tab_tipocod_tipo: char(3)
nom_tipo: char(20)
tab_contabilizacion_documentonum_factura: bigint
tipo: char(10)sucursal: char(10)fecha_documento: char(10)fecha_vencimiento: char(10)monto_total: bigintmonto_iva: bigintrut_cliente: bigintdrut_cliente: char(1)nombre: char(50)
tab_detalle_compranum_compra: bigintitem: bigint
articulo: varchar(50)cantidad: bigintprecio: biginttotal: bigint
tab_trabajonum_trabajo: bigint
tipo: varchar(50)fecha_ingreso: varchar(24)estado_trabajo: varchar(50)prioridad: varchar(50)nom_solicitante: varchar(50)fecha_ingresa: datetimenom_proveedor: varchar(50)cod_centro: bigintrut_proveedor: bigintdrut_proveedor: char(1)nom_centro: varchar(50)cod_moneda: char(10)nom_moneda: varchar(50)nom_aprueba: varchar(50)fecha_aprueba: char(26)observacion: varchar(255)empresa: varchar(50)supermercado: varchar(50)cod_tipo: char(3)cod_oficina: char(3)
tab_comprasnum_compra: bigint
tipo: varchar(50)fecha_ingreso: varchar(10)hora: varchar(50)estado: varchar(50)rut_proveedor: bigintdrut_proveedor: char(1)nom_proveedor: varchar(50)cod_centro: bigintnom_centro: varchar(50)cod_moneda: char(10)nom_moneda: varchar(50)nom_solicitante: varchar(50)nom_autorizador: varchar(50)vtotal: floatobservaciones: varchar(255)nom_empresa: varchar(50)nom_oficina: varchar(50)cod_tipo: char(3)cod_oficina: char(3)
tab_detalle_facturanum_factura: bigintdescripcion: varchar(255)
item: bigintprecio: biginttotal: bigintoficina: varchar(50)cantidad: bigint
11Este modelo deberá ser implementado en SQL 2000 Server, para que la
información de los requerimientos quede almacenada y pueda consultarse en cualquier
momento para generar algunas solicitudes.-
3.4. DISEÑO DE LA INTERFAZ GRÁFICA.
Comenzando con la construcción del PROYECTO en Visual Basic se crean los
Prototipos de pantallas.
He aquí el formulario MDI o principal.
Figura Nº02. Formulario MDI.
12Componentes del Formulario principal.
1. Toolbar1.
2. Cmd_Salir.
3. Barra_Estado.
Figura Nº 03. menú
Figura Nº 04. Mantención de Solicitudes.
13
Figura Nº05. Solicitud de Compra.
Figura Nº 06. Solicitud de trabajo.
14
Figura Nº07. Agregar Proveedores
Figura Nº08. Agregar Clientes Factura.
15
FiguraNº09. venta factura (tab 0)
Figura Nº 10. detalle de factura (tab 1)
16
Figura Nº11. Contabilización de Factura.
Figura Nº12. Contabilización de Documento.
17
Figura Nº12. Contabilización de Documento de Factura
18
3.5. DISEÑO FISICO DEL SISTEMA
3.5.1 BASE DE DATOS “PRUEBA.MDF”. Para el caso de base de datos tenemos SQL 2000 Server de Microsoft®, pero
para simplificar la codificación en lenguaje SQL, se utilizará una herramienta llamada
PLATINUM ERwin ERX 3.5.2, el cual posee una interfaz de diseño de tablas en forma
gráfica, además de los tipos de relaciones entre ellas. Una vez realizada esta operación
bastará con conectarse con SQL Server, teniendo creada sólo la base de datos con el
nombre correspondiente; con la opción actualización de base de datos, el ERwin es
capaz de generar todo el código en lenguaje SQL que corresponda a la estructura de la
base de datos en forma automática.
Es importante considerar que en la creación de la base de datos en forma gráfica
es importante establecer el tipo de datos que tiene cada campo, para reproducirla en
SQL, de lo contrario por defecto el ERwin toma las variables como varchar (“Datos de
caracteres no Unicode de longitud variable con una longitud de n bytes. n tiene que ser
un valor comprendido entre 1 y 8.000. El tamaño de almacenamiento es la longitud real
en bytes de los datos, no n bytes. Los datos especificados pueden tener una longitud de
0 caracteres”).
No fue posible utilizar una versión en español del software, por lo que puede
tomarse como una de las dificultades para poder encontrar los menús adecuados para
la transformación del modelo, pues en el desarrollo gráfico es tan simple como dibujar
en el “Paint” de Windows®.
En caso de una corrección a la base de datos, el software puede realizar la
operación inversa, o sea, tomar la base de datos de SQL y convertirla en forma gráfica,
para actualizar el modelo y luego modificar la base de datos en forma automática.
Para desarrollar las consultas a la base de datos, enviar y extraer información a
través del concepto de “Procedimientos Almacenados” en SQL 2000 Server, esto será
19descrito más adelante, pues es necesario tener desarrollado el código fuente del
Proyecto.
3.5.2 CODIGO FUENTE “SISTEMADECOMPRA.VBP”.
El desarrollo del código fuente será en lenguaje orientado a objetos de Visual
Basic 6.0 edición Empresarial, en un sistema operativo Windows® 98.
Con respecto a este desarrollo, se utilizarán otras herramientas de programación
para Visual Basic, esta lista de componentes disminuye considerablemente el tiempo de
desarrollo, aunque en este caso el sistema es pequeño y no es muy notable.
El Componente Toolbar Toolmann. Esta herramienta consiste en una barra de
botones que se conecta a la base de datos en cuanto se le ordena una acción. Utiliza el
objeto RDO para utilizar el driver correspondiente al motor de base de datos, en este
caso SQL 2000 Server.
Con esta herramienta se ejecutan las instrucciones Agregar, Modificar, Eliminar,
Buscar, con solo utilizar una cadena que contenga una instrucción SQL de ejecución de
Procedimiento Almacenado. Todo será detallado más adelante en la etapa de
desarrollo del Proyecto.
Esta herramienta también posee botones para imprimir, salir y ayuda en cuyos
eventos click se pueden codificar para ejecutar las acciones deseadas.
20 Otros componentes instalables son los controles FARPOINT, denominados
Input Pro, que consiste en un grupo de cuadros de texto, que tienen características
especiales, como filtrado de teclas, por ejemplo un cuadro de texto exclusivo para
números y otros para textos cortos, además para cifras monetarias y uno de tipo
Booleano, como Option Button o CheckBox. A estos se le dan valores a sus
propiedades para quedar adecuados al funcionamiento del sistema. También serán
descritos más adelante su utilización durante el desarrollo.
En este diseño físico de la interfaz gráfica constará de un formulario principal que
contendrá los demás formularios del sistema, este formulario principal es el que tiene
los menús para llamar a los formularios secundarios.
Solamente los formularios secundario de búsqueda poseerán una Toolmann,
Será necesario una función de impresión para cada formulario, a través de Crystal
Report.
21DESARROLLO E IMPLEMENTACIÓN
4.1. DESARROLLO DEL SISTEMA.
La primera etapa fue generar la base de datos con el modelo diseñado a través
del ERwin. Una vez efectuada esta operación, se construirán los Procedimientos
Almacenados en SQL.
SQL 2000 Server posee una interfaz gráfica de administrador de las bases de
datos y una herramienta llamada Analizador de Consultas. En ellas se desarrollan las
instrucciones para crear y modificar las consultas a la base de datos.
Para cada acción a realizar en el sistema se creará un procedimiento
almacenado independiente. Se envían valores desde el código en tiempo de ejecución
y se recibe en las variables que comienzan con el carácter “@”, en el orden respectivo,
a continuación del nombre del Procedimiento Almacenado, en adelante llamado “sp” por
“Store Procedure”. Es conveniente separar las “sp” por el tipo de acción que ejecutan
en la base de datos, por que así se mantiene un orden en la acción que se va a
ejecutar.-
La sintaxis y distribución de la instrucción está descrita en el Apéndice B.
Estas sp’s quedan almacenadas en una lista de procedimientos en la base de
datos, para ser ejecutadas cuando se ordene.
Los procedimientos creados hasta aquí son:
sp_c_documento_compra
sp_c_documento_trabajo
22sp_a_compra
sp_a_trabajo
sp_a_factura
sp_a_factura_cliente
sp_a_proveedores
sp_u_compra
sp_u_trabajo
sp_u_factura
sp_u_factura_cliente
sp_u_proveedores
sp_d_compra
sp_d_trabajo
sp_d_factura
sp_d_factura_cliente
sp_d_proveedores
En la depuración del código se emplea la ejecución con compilación
completa(ctrl. + F5), para evitar que queden variables sin declarar.
Ahora es necesario escribir los procedimientos almacenados necesarios para las
consultas a través de los botones o cuadros de texto.
El código fuente para la utilización de la Toolmann para conectarse con la base
de datos esta en algunos de los procedimientos de la Toolmann. Se indican
propiedades con valores como, el tipo de motor de base de datos, el nombre de la base
de datos, el usuario que la consulta y la clave de acceso, además de la ejecución del
Procedimiento Almacenado que obtiene los resultados y las deja en variable del Objeto
Toolmann
23Este es el control Toolmann.
Figura N°13. Barra Toolmann. Se pueden ocultar y/o deshabilitar botones, por medio de la propiedad “Estado_
de_Barra”, de esta manera se puede establecer un comportamiento adecuado para
agregar, modificar, guardar, eliminar, buscar, imprimir, deshacer, salir y ver una ayuda.
En uno de sus procedimientos se establece conexión con la base de datos. El
procedimiento de llama “Toolmann1_inicializar”.
Private Sub Toolmann1_inicializar()
Toolmann1.Base_Datos = “PRUEBA”
Toolmann1.Base_Driver = “SQL_SERVER”
Toolmann1.Base_Servidor = “SERVI_DATOS”
Toolmann1.Base_Usuario = “sa”
Toolmann1.Base_Clave = “”
End Sub
Este procedimiento es llamado cada vez que se envíe una instrucción SQL a
través de un valor de la propiedad “Accion” de la Toolmann.
Toolmann1.Sentencia_SQL = "exec sp_a_proveedor” + (parámetros)
Toolmann1.Accion_SQL = 2
24Existe un listado de valores de acción que se muestra en el Apéndice A.
Esta es solo uno de los potenciales de la barra, otra es la de mantener la
consistencia de la base de datos a través de inicio y término de transacción.
Finalmente, terminados los Procedimientos Almacenados en SQL y el código
fuente del PROYECTO se puede generar el archivo ejecutable.
4.2. IMPLEMENTACIÓN DEL PROYECTO. El Sistema se instalará en una red LAN, en un servidor instalado especialmente
para distribuir aplicaciones.
Una vez generado el ejecutable, se utiliza el asistente para la instalación de la
aplicación, en este se excluye el archivo ejecutable, pues éste será ejecutado en forma
remota copiándolo al servidor y creando un acceso directo en el escritorio de cada Pc
donde se instala el PROYECTO, a través del código fuente se lee un archivo de
configuración para en rutar el archivo ejecutable y los reportes.
25 CONCLUSIÓN.
Como conclusión puedo comentar que este sistema, de acuerdo a lo planificado
y ejecutado, es adecuado a los requerimientos de sistemas de escritorio, de fácil
acceso a la información y de fácil operación. De esta manera, se requiere invertir poco
tiempo de capacitación al usuario. Por otro lado, de acuerdo a los resultados obtenidos
durante la implementación es posible instalarlo a través de una red LAN, sin sufrir
cambios en su código fuente, aún participando en la operación interdepartamental. Por
lo tanto, puede considerarse como un sistema standar de control de actividades.
Con esto se mejorara el ingreso de solicitudes, los encargados tendrán una
información oportuna de las solicitudes que han ingresado y sabrán si sus solicitudes
están aprobadas o no, sin preguntar a la persona que aprueba las solicitudes.-
Los programas utilizados son:
Visual Basic 6.0, es una herramienta de fácil manejo para desarrollar
aplicaciones, y además nos permite crear una interfaz gráfica de fácil acceso.-
SQL Server, es un administrador de base de datos el cual nos permite
administrar en forma fácil y sencilla una base de datos.-
Cristal Report, además de actuar como una aplicación de generación de informes
independiente y eficaz, proporciona un módulo de generación de informe que puede
vincular y al que se puede tener acceso desde las aplicaciones de Visual Basic, como
programador que utiliza Visual Basic 5.0 ó Visual 6.0, puede agregar capacidades
26sofisticadas para generar e imprimir informes a las aplicaciones sin estar escribiendo
código.-
También es importante mencionar que, para la utilización completa del Sistema
en Gestión de Ordenes de Compra, es ideal contar con Cristal Report instalado en el
terminal de operación del sistema, aunque no es indispensable.
27DOS PROPIEDADES FUNDAMENTALES DE TOOLMANN.
VALORES PARA LA PROPIEDAD “ACTION”.
ACCION DESCRIPCIÓN
1 Para consultar varios registros y el resultado copiarlo en una grilla
2 Para grabar y eliminar datos fuera de una transacción
3 Para consultar un solo registro.
4 Graba dentro de una transacción
5 Consulta varios registro y recorrerlos individualmente
44 Graba y consultar dentro de una transacción
46 Consulta varios registros y pegarlos en una grilla como bloque.
VALORES DE LA PROPIEDAD “ESTADO DE BARRA”.
PROPIEDAD \ ESTADO 0 1 2 3 4 5 6
Ver_Agregar V F F V V F F
Ver_Modificar V F F V V F F
Ver_Grabar F V V F F F F
Ver_Eliminar V F F V V F F
Ver_Buscar V F F V V F F
Ver_Imprimir V F F V V F F
Ver_Deshacer F V V F F F V
Ver_Salir V F F V V F F
28CODIGO SQL DE PROCEDIMIENTOS ALMACENADOS.
AGREGAR create procedure sp_a_proveedor ( @rut_proveedor int, @drut_proveedor char(1), @nom_proveedor char(50) ) As Insert into tab_proveedor ( rut_proveedor, drut_proveedor, nom_proveedor ) values ( @rut_proveedor, @drut_proveedor, @nom_proveedor ) GO BUSCAR CREATE procedure sp_c_documento_compra (@Num_Compra as int) as select a.num_compra ,a.tipo ,a.fecha_ingreso ,a.hora
29,a.estado ,a.rut_proveedor ,a.drut_proveedor ,a.nom_proveedor ,a.cod_centro ,a.nom_centro ,a.cod_moneda ,a.nom_moneda ,a.nom_solicitante ,a.nom_autorizador ,a.vtotal ,a.observaciones ,a.nom_empresa ,a.nom_oficina ,a.num_compra ,b.articulo ,convert(int, b.Cantidad) Cantidad ,convert(int, b.precio)precio ,convert(int,b.total)total from tab_compras a ,tab_detalle_compra b where a.num_compra = b.num_compra and a.num_compra = @Num_Compra GO ELIMINAR
CREATE PROCEDURE sp_d_detalle_compra( @Num_compra int, @Item int)
As
delete tab_detalle_compra
where num_compra = @Num_Compra and item = @Item
GO
30BIBLIOGRAFÍA.
[1] Microsoft® Corporation, Manual del programador Visual Basic 6.0, Crystal
Report 6.0, SQL 2000, Componentes OCX.-
[2] Apuntes de S.I.A.