Académique Documents
Professionnel Documents
Culture Documents
AGRADECIMIENTOS:
En primer lugar a Dios todo poderoso que me ha permitido llegar hasta aqu, que me dio la bendicin de culminar mis estudios superiores.
A mis padres, a quienes le debo este logro, quien siempre me apoyo desde el inicio de mi carrera, tanto en lo econmico, como en lo moral.
A mis compaeros de estudios y a mis compaeros de trabajo, asesor, amigos y todas las personas que han credo en m, y que de una u otra forma han ayudado a la finalizacin de este trabajo
alguna
ii
RESUMEN
El desarrollo de un programa computarizado optimiza el tiempo, sistematizar la labor del usuario, especialmente desarrollado para un anlisis rpido y eficaz. Pretende primordialmente esta monografa disear e implementar un sistema informtico de Escritorio, destinado a la venta de Productos de cmputo, con la finalidad de mantener la informacin centralizada y almacenada en una base de datos y a partir de ellos poder realizar consultas y reportes, para brindar informacin a los clientes sobre los precios y productos que cuenta una empresa que se dedica a la venta de productos de cmputo. Para el desarrollo del sistema informtico se ha empleado como soporte de base de datos a Microsoft Access 2010 y lenguaje de programacin Visual Basic. Net. Como fuentes de datos se han consultado tanto fuentes de internet como bibliografa de las universidades locales. Finalmente se dise e implemento satisfactoriamente dicho sistema, que permite el mantenimiento de clientes, productos, proveedores; as como tambin permite generar el pedido y realizar la respectiva venta. Adems dicho sistema genera los reportes, los cuales pueden ser exportados en formato pdf, xls o Word, para su posterior uso. En este trabajo se muestra paso a paso el diseo e implementacin, tanto de la base de datos como el cdigo fuente de dicho sistema. Se concluye que el sistema informtico es un instrumento til puesto que permite automatizar las bsquedas, por determinado campos, de cada entidad que conforman el sistema. Palabras claves: Sistema informtico, Base de Datos, Lenguaje de Programacin, Generacin de Reportes.
iii
INTRODUCCIN
El presenta trabajo pretende mostrar, la integracin de la tecnolgica .NET, en el desarrollo de un Sistema Informtico para la Venta de Productos de Cmputo, los cuales actualmente estn logrando un auge importante, debido a que hoy en da se maneja mayor cantidad de informacin y se requiere obtenerlo en el menor tiempo y generar a partir de ello ventajas competitivas, en las empresas dedicadas a este rubro. Para la elaboracin de este sistema informtico, se hizo uso del lenguaje de
programacin Visual Basic. Net, el cual nos va a permitir el diseo e implementacin de dicho software, en el aspecto sobre el almacenamiento de los datos, se hizo uso de Microsoft Access 2010, el cual permitir almacenar toda la informacin, y para los reportes se hizo uso de Cristal Reports, el cual permitir generar los informes.
La estructura de est monografa est conformada por tres captulos; Captulo I Marco Referencial, Captulo II Metodologa y Capitulo III Conclusiones, Recomendaciones y Trabajos futuros.
La parte medular de la monografa se ubica en el Captulo II, debido a que en ellos se presenta el diseo e implementacin tanto de la base de datos como de la aplicacin.
iv
INDICE DE IMGENES
Ilustracin 1: Funcionamiento Sistema Gestor de Base de Datos ........................................................... 9 Ilustracin 2: Niveles de Abstraccin de una Base de Datos ............................................................................ 11 Ilustracin 3: Estructura multicapa de las facilidades de usuario ........................................................... 13 Ilustracin 4: Entidad y Conjunto de Entidades ........................................................................................ 15 Ilustracin 5: Representacin de la Entidad Persona .............................................................................. 16 Ilustracin 6: Entidad Dbil ........................................................................................................................... 16 Ilustracin 7: Ejemplo de Relacin .............................................................................................................. 17 Ilustracin 8: Representacin Grfica de Relacin .................................................................................. 17 Ilustracin 9: Atributos de Entidad y Relacin ........................................................................................... 17 Ilustracin 10: Transformacin de Entidad a esquema Relacional ........................................................ 20 Ilustracin 11: Grafo Relacional .................................................................................................................. 20 Ilustracin 12: Esquema Relacional de Ms Access .................................................................................. 21 Ilustracin 13: .Net Framework .................................................................................................................... 26 Ilustracin 14: Modelo Lgico de Sistema Informtico ............................................................................ 28 Ilustracin 15: Modelo Entidad Relacin .................................................................................................... 30 Ilustracin 16: Entidades o Tablas .............................................................................................................. 31 Ilustracin 17: Modelo Relacional en Access ............................................................................................ 34 Ilustracin 18: Tabla Producto ..................................................................................................................... 34 Ilustracin 19: Tabla Cliente......................................................................................................................... 35 Ilustracin 20: Tabla Venta ........................................................................................................................... 35 Ilustracin 21: Tabla DetalleVenta .............................................................................................................. 36 Ilustracin 22: Tabla Proveedor ................................................................................................................... 36 Ilustracin 23: Tabla Usuario ....................................................................................................................... 36 Ilustracin 24: Formulario de Acceso al Sistema ...................................................................................... 37 Ilustracin 25: Cdigo Fuente Conexin Base Datos .............................................................................. 37 Ilustracin 26: Cdigo Fuente Formulario de Acesso .............................................................................. 38 Ilustracin 27: Formulario Principal del Sistema ....................................................................................... 38 Ilustracin 28: Cdigo Fuente Formulario Principal.................................................................................. 39 Ilustracin 29: Formulario Mantenimiento de Clientes ............................................................................. 40 Ilustracin 30: Elementos Formulario Mantenimiento Clientes ............................................................... 40 Ilustracin 31: Cdigo Fuente Formulario Mantenimiento de Clientes .................................................. 44 Ilustracin 32: Formulario Mantenimiento Productos ............................................................................... 44 Ilustracin 33: Cdigo Fuente Formulario Mantenimiento de Productos .............................................. 49 Ilustracin 34: Formulario Mantenimiento de Proveedor ......................................................................... 50 Ilustracin 35: Componentes de Formulario Mantenimiento de Proveedores ..................................... 50 Ilustracin 36: Cdigo Fuente Mantenimiento Proveedor ....................................................................... 53 Ilustracin 37: Componentes Formulario Mantenimiento de Usuarios .................................................. 54 Ilustracin 38: Cdigo Fuente Formulario Mantenimiento de Usuarios ................................................ 59 Ilustracin 39: Formulario de Bsqueda de Clientes ................................................................................ 59 Ilustracin 40: Componentes Formulario Bsqueda de Clientes ........................................................... 59 Ilustracin 41: Cdigo Fuente Formulario Consulta de Clientes ............................................................ 61 Ilustracin 42: Formulario Bsqueda de Productos .................................................................................. 61 Ilustracin 43: Cdigo Fuente Formulario Consulta de Clientes ............................................................ 63 Ilustracin 44: Formulario Bsqueda de Proveedores ............................................................................. 64
Ilustracin 45: Cdigo Fuente Formulario Consulta de Proveedores .................................................... 65 Ilustracin 46: Formulario Consulta de Ventas ......................................................................................... 66 Ilustracin 47: Cdigo Fuente Formulario Consulta de Ventas .............................................................. 67 Ilustracin 48: Formulario Bsqueda de Cliente para Ventas ................................................................. 68 Ilustracin 49: Cdigo de Fuente en el formulario Bsqueda de Cliente Ventas ................................. 69 Ilustracin 50: Formulario Bsqueda de Ventas ....................................................................................... 69 Ilustracin 51: Cdigo Fuente Formulario Bsqueda de Ventas ............................................................ 70 Ilustracin 52: Cdigo Fuente Formulario de Venta ................................................................................. 76 Ilustracin 53: Formulario de Reporte de Ventas ..................................................................................... 77 Ilustracin 54: Diseo de Reporte de Ventas ............................................................................................ 77 Ilustracin 55: Cdigo Fuente Formulario Reporte de Ventas ................................................................ 77 Ilustracin 56: Formulario Reporte de Clientes ......................................................................................... 78 Ilustracin 57: Diseo de Reporte de Clientes .......................................................................................... 78 Ilustracin 58: Cdigo Fuente Formulario Reporte de Clientes .............................................................. 78 Ilustracin 59: Formulario Reporte de Productos ..................................................................................... 79 Ilustracin 60: Diseo de Reporte de Productos ...................................................................................... 79 Ilustracin 61: Cdigo Fuente Formulario Reporte de Productos .......................................................... 79 Ilustracin 62: Formulario de Reporte de Proveedores ........................................................................... 80 Ilustracin 63: Diseo de Reporte de Proveedores .................................................................................. 80 Ilustracin 64: Cdigo Fuente en el Formulario Reporte de Proveedores ............................................ 80 Ilustracin 65: Manejo Formulario Acceso al Sistema ..................................................................................... 83 Ilustracin 66: Manejo Formulario Principal ............................................................................................... 83 Ilustracin 67: Manejo de Formulario Mantenimiento de Clientes ......................................................... 84 Ilustracin 68: Manejo de Formulario de Mantenimiento de Productos ................................................ 84 Ilustracin 69: Manejo de Formulario Mantenimiento de Proveedor ..................................................... 85 Ilustracin 70: Manejo Formulario Mantenimiento de Usuarios ............................................................. 85 Ilustracin 71: Manejo de Consulta de Clientes ........................................................................................ 86 Ilustracin 72: Manejo de Consulta de Proveedores................................................................................ 86 Ilustracin 73: Manejo de Consulta de Productos .................................................................................... 86 Ilustracin 74: Manejo de Consulta de Ventas por Cliente ..................................................................... 87 Ilustracin 75: Manejo de Pedido por Cliente ............................................................................................ 87 Ilustracin 76: Manejo de Gestin Pedido (Venta) ................................................................................... 88 Ilustracin 77: Manejo de Cliente que realiza Pedido .............................................................................. 88 Ilustracin 78: Manejo de Seleccin de Productos ................................................................................... 89 Ilustracin 79: Gestin del Pedido por Cliente .......................................................................................... 89 Ilustracin 80: Reporte de Clientes ............................................................................................................. 90 Ilustracin 81: Reporte de Productos ......................................................................................................... 90 Ilustracin 82: Reporte de Proveedores ..................................................................................................... 91 Ilustracin 83: Reporte de Ventas ............................................................................................................... 91 Ilustracin 84: Reporte de Facturas ............................................................................................................ 92
vi
INDICE DE TABLAS Tabla 1: Tabla de una Base Datos .............................................................................................. 19 Tabla 2: Tabla Clientes de una Base de Datos ......................................................................... 19 Tabla 3: Caractersticas del Software ......................................................................................... 30 Tabla 4: Descripcin Tabla Clientes ............................................................................................ 31 Tabla 5: Descripcin Tabla Producto .......................................................................................... 32 Tabla 6: Descripcin Tabla Usuario ............................................................................................ 32 Tabla 7: Descripcin Tabla Proveedor ........................................................................................ 33 Tabla 8: Descripcin Tabla Venta ................................................................................................ 33 Tabla 9: Descripcin Tabla DetalleVenta ................................................................................... 33 Tabla 10: Elementos del Formulario de Acceso ........................................................................ 37 Tabla 11: Elementos Formulario Principal.................................................................................. 39 Tabla 12: Componentes Formulario Mantenimiento de Productos ........................................ 45 Tabla 13: Componentes del Formulario Bsqueda de Productos .......................................... 62 Tabla 14: Componentes Formulario Bsqueda de Proveedores ............................................ 64 Tabla 15: Componentes Formulario Bsqueda de Ventas ...................................................... 66 Tabla 16: Componentes del Formulario Consulta de Clientes para Ventas ...................................... 68 Tabla 17: Componentes Formulario Bsqueda de Ventas ...................................................... 69 Tabla 18: Componentes Formulario Gestin de Pedido .......................................................... 71
vii
INDICE GENERAL
AGRADECIMIENTOS .........................................................................................................................ii RESUMEN..........................................................................................................................................iii INTRODUCCIN................................................................................................................................iv INDICE DE IMGENES ......................................................................................................................v INDICE DE TABLAS .........................................................................................................................vii
CAPITULO I ........................................................................................................................... 9 1. MARCO REFERENCIAL ................................................................................................ 9 1.1. SISTEMAS GESTORES DE BASES DE DATOS (SGBD).................................... 9 Definicin de SGBD........................................................................................ 9 Niveles de abstraccin de una base de datos .......................................... 10 Estructura Multicapa .................................................................................... 13 Modelos Conceptuales ................................................................................ 14 Modelos Lgicos .......................................................................................... 17 Principales Sistemas Gestores de Bases de Datos ................................. 21
TECNOLOGA .NET .............................................................................................. 24 Visual Studio .Net 2010 ............................................................................... 24 .NET FRAMEWORK .................................................................................. 25
1.2.1. 1.2.2.
CAPITULO II ........................................................................................................................ 27 2. METODOLOGA ........................................................................................................... 27 2.1. 2.2. 2.3. 2.4. 2.5. 2.6. 2.7. 2.8. Visin .................................................................................................................... 27 Oportunidad de Negocio ..................................................................................... 27 Anlisis de beneficios ......................................................................................... 27 Modelo lgico de integracin de tecnologas en el Sistema informtico ..... 28 Descripcin de componentes ............................................................................ 28 Especificaciones Tcnicas ................................................................................. 29 Diseo e Implementacin de la Base de Datos del Sistema Informtico ..... 30 Diseo e implementacin del Sistema Informtico ......................................... 37
CAPITULO I
1. MARCO REFERENCIAL 1.1. SISTEMAS GESTORES DE BASES DE DATOS (SGBD) 1.1.1. Definicin de SGBD Un sistema gestor de bases de datos o SGBD (aunque se suele utilizar ms a menudo las siglas DBMS procedentes del ingls, Data Base Management
System) es el software que permite a los usuarios procesar, describir, administrar y recuperar los datos almacenados en una base de datos. En estos Sistemas se proporciona un conjunto coordinado de programas,
procedimientos y lenguajes que permiten a los distintos usuarios realizar sus tareas habituales con los datos, garantizando adems la seguridad de los mismos.
Ilustracin 1: Funcionamiento Sistema Gestor de Base de Datos El xito del SGBD reside en mantener la seguridad e integridad de los datos. Lgicamente tiene que proporcionar herramientas a los distintos usuarios. Entre las herramientas que proporciona estn: Herramientas para la creacin y especificacin de los datos. As como la estructura de la base de datos. Herramientas para administrar y crear la estructura fsica requerida en las unidades de almacenamiento. Herramientas para la manipulacin de los datos de las bases de datos, para aadir, modificar, suprimir o consultar datos. Herramientas de recuperacin en caso de desastre Herramientas para la creacin de copias de seguridad 9
Herramientas para la gestin de la comunicacin de la base de datos Herramientas para la creacin de aplicaciones que utilicen esquemas externos de los datos Herramientas de instalacin de la base de datos Herramientas para la exportacin e importacin de datos
aplicaciones creadas por los programadores. Esa vista pueden ser formularios, informes visuales o en papel. Pero la realidad fsica de esos datos, tal cual se almacenan en los discos queda oculta. Esa visin est reservada a los administradores. En el caso de los Sistemas de Base de datos, se aade una tercera vista, que es la vista conceptual. Esa vista se sita entre la fsica y la externa. Se habla pues en Bases de datos de la utilizacin de tres esquemas para representar los datos. 1.1.2.1. Esquema fsico
Representa la forma en la que estn almacenados los datos. Esta visin slo la requiere el administrador/a. El administrador la necesita para poder gestionar ms eficientemente la base de datos. 1.1.2.2. Esquema Conceptual
Se trata de un esquema terico de los datos en el que figuran organizados en estructuras reconocibles del mundo real y en el que tambin aparece la forma
10
de relacionarse los datos. Este esquema es el paso que permite modelar un problema real a su forma correspondiente en el ordenador. Este esquema es la base de datos de todos los dems. Como se ver ms adelante es el primer paso a realizar al crear una base de datos. El esquema conceptual lo realiza diseadores/as o analistas. 1.1.2.3. Esquema externo
Se trata de la visin de los datos que poseen los usuarios y usuarias finales. Esa visin es la que obtienen a travs de las aplicaciones. Las aplicaciones creadas por los desarrolladores abstraen la realidad conceptual de modo que el usuario no conoce las relaciones entre los datos, como tampoco conoce todos los datos que realmente se almacenan. Realmente cada aplicacin produce un esquema externo diferente (aunque algunos pueden coincidir) o vista de usuario. El conjunto de todas las vistas de usuario es lo que se denomina esquema externo global.
Ilustracin 2: Niveles de Abstraccin de una Base de Datos 1.1.2.4. Recursos Humanos de las Bases de Datos
11
Intervienen muchas personas en el desarrollo y manipulacin de una base de datos. Habamos seleccionado cuatro tipos de usuarios (administradores/as, desarrolladores, diseadores/as y usuarios/as). La clasificacin de estos usuarios es la siguiente: a. Informticos Lgicamente son los profesionales que definen y preparan la base de datos. Pueden ser:
Directivos/as. Organizadores y coordinadores del proyecto a desarrollar y mximos responsables del mismo. Esto significa que son los encargados de decidir los recursos que se pueden utilizar, planificar el tiempo y las tareas, la atencin al usuario y de dirigir las entrevistas y reuniones pertinentes.
Analistas. Son los encargados de controlar el desarrollo de la base de datos aprobada por la direccin. Normalmente son adems los diseadores de la base de datos (especialmente de los esquemas interno y conceptual) y los directores de la programacin de la misma.
Administradores/as de las bases de datos. Encargados de crear el esquema interno de la base de datos, que incluye la planificacin de copia de seguridad, gestin de usuarios y permisos y creacin de los objetos de la base de datos.
Desarrolladores/as o programadores/as. Encargados de la realizacin de las aplicaciones de usuario de la base de datos. Equipo de mantenimiento. Encargados de dar soporte a los usuarios en el trabajo diario (suelen incorporar adems tareas creacin de copias de seguridad por
administrativas como la
12
Expertos/as. Utilizan el lenguaje de manipulacin de datos (DML) para acceder a la base de datos. Son usuarios que utilizan la base de datos para gestin avanzada de decisiones.
Habituales.
Utilizan
las
aplicaciones
creadas
por
los
desarrolladores para consultar y actualizar los datos. Son los que trabajan en la empresa a diario con estas herramientas y el objetivo fundamental de todo el desarrollo de la base de datos. Ocasionales. Son usuarios que utilizan un acceso mnimo a la base de datos a travs de una aplicacin que permite consultar ciertos datos. Seran por ejemplo los usuarios que consultan el horario de trenes a travs de Internet.
13
Este modelo toma como objeto principal al usuario habitual de la base de datos y modela el funcionamiento de la base de datos en una sucesin de capas cuya finalidad es ocultar y proteger la parte interna de las bases de datos Desde esta ptica para llegar a los datos hay que pasar una serie de capas que desde la parte ms externa poco a poco van entrando ms en la realidad fsica de la base de datos.
procedente del ordenador. En 1976 y 1977 dos artculos de Peter P. Chen presentan un modelo para realizar esquemas que posean una visin unificada de los datos. Este modelo es el modelo entidad/interrelacin (entity/relationship en ingls) que
actualmente se conoce ms con el nombre de entidad/relacin (Modelo E/R o ME/R, en ingls E/RM). Posteriormente otros autores han aadido mejoras a este modelo lo que ha producido una familia de modelos. La ms aceptada actualmente es el modelo entidad/relacin extendido (ERE) que complementa algunas
carencias del modelo original. No obstante las diversas variantes del modelo hacen que la representacin de este modelo no sea muy estndar, aunque hay ideas muy comunes a todas las variantes.
14
decir cualquier elemento informativo que tenga importancia para una base de datos. Ejemplos de entidades son Pedro, la factura nmero 32456, el coche matrcula 3452BCW, etc. Una entidad no es un propiedad concreta sino un objeto que puede poseer mltiples propiedades (atributos). Es decir Snchez es el contenido del atributo Primer Apellido de la entidad que representa a la persona Pedro
Snchez Crespo con DNI 12766374. Una entidad es un objeto concreto, no un simple dato: el coche que tenemos en el garaje es una entidad, Mercedes sin embargo es la marca de ese coche, es decir es un atributo de esa entidad.
Ilustracin 4: Entidad y Conjunto de Entidades En la actualidad se suele llamar entidad a lo que anteriormente se ha definido como conjunto de entidades. De este modo PERSONAS. Mientras que cada
hablaramos de la entidad
persona en concreto sera una ocurrencia o un ejemplar de la entidad persona. Representacin Grfica
15
En el modelo entidad relacin los conjuntos de entidades se representan con un rectngulo dentro del cual se
Ilustracin 5: Representacin de la Entidad Persona Tipos de Entidades Regulares. Son las entidades normales que tienen existencia por s mismas sin depender de otras. Su representacin grfica es la indicada arriba Dbiles. Su existencia depende de otras. Es decir e. Por ejemplo la entidad tarea laboral slo podr tener existencia si existe la entidad trabajo. Las entidades dbiles se presentan de esta forma:
Relacin Representan asociaciones entre entidades. Es el elemento del modelo que permite relacionar en s los datos del mismo. Por ejemplo, en el caso de que tengamos una entidad personas y otra entidad trabajos. Ambas se realizan ya que las personas trabajan y los trabajos son realizados por personas:
16
Representacin Grfica
Atributos Describen propiedades de las entidades y las relaciones. En este modelo se representan con elipses, dentro de las cuales se coloca el nombre del atributo. Esa elipse se une con una lnea a las entidades. Ejemplo:
a. Modelo Relacional
Edgar Frank Codd defini las bases del modelo relacional a finales de los 60. En 1970 publica el documento A Relational Model of data for Large Shared Data Banks (Un modelo relacional de datos para grandes bancos de datos compartidos). Actualmente se considera que ese es uno de los documentos ms influyentes de toda la historia de la informtica. Lo es porque en l se definieron las bases del llamado Modelo Relacional de Bases de Datos. Anteriormente el nico modelo terico estandarizado era el Codasyl que se utiliz masivamente en los aos 70 como paradigma del modelo en red de bases de datos. Codd se apoya en los trabajos de los matemticos Cantor y Childs (cuya teora de conjuntos es la verdadera base del modelo relacional). Segn Codd los datos se agrupan en relaciones (actualmente llamadas tablas) que es un concepto que se refiere a la estructura que aglutina datos referidos a una misma entidad de forma independiente respecto a su almacenamiento fsico. Lo que Codd intentaba fundamentalmente es evitar que las usuarias y usuarios de la base de datos tuvieran que verse obligadas a aprender los entresijos internos del sistema. Pretenda que los usuarios/as trabajaran de forma sencilla e independiente del funcionamiento fsico de la base de datos en s. Fue un enfoque revolucionario.
b. Relacin o Tabla
Segn el modelo relacional (desde que Codd lo enunci) el elemento fundamental es lo que se conoce como relacin, aunque ms habitualmente se le llama tabla (o tambin array o matriz). Codd defini las relaciones
utilizando un lenguaje matemtico, pero se pueden asociar a la idea de tabla (de filas y columnas) ya que es ms fcil de entender. No hay que confundir la idea de relacin segn el modelo de Codd, con lo que significa una relacin en el modelo Entidad/Relacin de Chen. No tienen nada que ver Las relaciones constan de: Atributos. Referido a cada propiedad de los datos que se almacenan en la relacin (nombre, dni,...).
18
Tuplas. Referido a cada elemento de la relacin. Por ejemplo si una relacin almacena personas, una tupla representara a una persona en concreto.
Puesto que una relacin se representa como una tabla; podemos entender que las columnas de la tabla son los atributos; y las filas, las tuplas.
Tabla 1: Tabla de una Base Datos Ejemplo real de relacin o tabla clientes.
c. Paso de Entidad Relacin a Modelo Relacional Transformacin de las Entidades En principio las entidades fuertes del modelo Entidad Relacin son transformadas al modelo relacional siguiendo estas instrucciones: Entidades. Las entidades pasan a ser tablas Atributos. Los atributos pasan a ser columnas o atributos de la tabla. Identificadores principales. Pasan a ser claves primarias Identificadores candidatos. Pasan a ser claves candidatas. Esto hace que la transformacin se produzca segn este ejemplo:
19
Grafos Relacionales Es un esquema relacional en el que hay lneas que enlazan las claves principales con las claves secundarias para representar
mejor las relaciones. A veces se representa en forma de nodos de grafos y otras se complementa el clsico. Ejemplo:
d. Esquemas Relacionales Se ha hecho muy popular la forma de presentar esquemas relacionales del programa Microsoft Access.
20
1.1.6. Principales Sistemas Gestores de Bases de Datos 1.1.6.1. SGBD de cdigo Abierto (Libres)
a. MySQL
MySQL es un sistema gestor de bases de datos que se puede encuadrar dentro de la categora de los programas open-source. Aparte de las caractersticas que definen MySQL como programa open-source, existen aspectos que lo diferencian de otros productos como, por citar uno conocido, Access. Los atributos a los que hacemos referencia son: Posibilidad de crear y configurar usuarios, asignando a cada uno de ellos permisos diferentes. Facilidad de exportacin e importacin de datos, incluso de la base de datos completa. Posibilidad de ejecutar conjuntos de instrucciones guardadas en ficheros externos a la base de datos.
21
MySQL es muy utilizado en aplicaciones web, como Drupal o phpBB, en plataformas (Linux/Windows-Apache-MySQL-
PHP/Perl/Python), y por herramientas de seguimiento de errores como Bugzilla. Su popularidad como aplicacin web est muy ligada a PHP, que a menudo aparece en combinacin con MySQL. MySQL es una base de datos muy rpida en la lectura cuando utiliza el motor no transaccional MyISAM, pero puede provocar problemas de integridad en entornos de alta concurrencia en la modificacin. En aplicaciones web hay baja concurrencia en la modificacin de datos y en cambio el entorno es intensivo en lectura de datos, lo que hace a MySQL ideal para este tipo de aplicaciones. Sea cual sea el entorno en el que va a utilizar MySQL, es importante adelantar monitoreos sobre el desempeo para detectar y corregir errores tanto de SQL como de programacin.
b. POSTGRESQL
PostgreSQL es un sistema de gestin de base de datos relacional orientada a objetos y libre, publicado bajo la licencia BSD. Como muchos otros proyectos de cdigo abierto, el desarrollo de PostgreSQL no es manejado por una sola empresa sino que es dirigido por una comunidad de desarrolladores y organizaciones comerciales las cuales trabajan en su desarrollo. Dicha comunidad es denominada el PGDG (PostgreSQL Global Development Group). Alta concurrencia Mediante un sistema denominado MVCC (Acceso concurrente multiversin, por sus siglas en ingls) PostgreSQL permite que mientras un proceso escribe en una tabla, otros accedan a la misma tabla sin necesidad de bloqueos. Cada usuario obtiene una visin consistente de lo ltimo a lo que se le hizo commit.
1.1.6.2.
SGBD Propietarios
22
Es un motor de base de datos relacional, de libre descarga y distribucin, tanto para dispositivos mviles como para aplicaciones escritorio. Especialmente orientada a sistemas ocasionalmente conectados, ofrece unas caractersticas especialmente tiles para clientes ligeros. La versin ms reciente es SQL Server Compact 3.5 SP2. Anteriormente era conocida como SQL Server CE o SQL Server Mobile. Desde la versin 2.0, el lanzamiento de SQL Server Compact ha ido ligado al de Microsoft Visual Studio .NET.
Integracin con Microsoft SQL Server 2005. Las herramientas de administracin son Microsoft SQL Server Management Studio y SQL Server Management Studio Express.
Integracin con Microsoft Visual Studio 2005. Acceso a datos remotos y rplica de mezcla para sincronizar datos.
Microsoft Proveedor de datos .NET Framework y .NET Compact Framework para SQL Server Compact Edition
(System.Data.SqlServerCe).
Compatibilidad con Microsoft ADO.NET y el proveedor de OLE DB para SQL Server Compact Edition.
Un subconjunto de sintaxis SQL. Se implementa como una base de datos incrustada en equipos de escritorio, dispositivos mviles y Tablet PC.
b. MICROSOFT ACCESS
Microsoft Access 2010 se basa en la simplicidad, con plantillas listas para que empiece a trabajar y herramientas eficaces para 23
mantenerse al da a medida que los datos crecen. Access 2010 le otorga capacidades para aprovechar la informacin, incluso si no es experto en bases de datos. Adems, a travs de bases de datos web recin agregadas, Access ampla la eficacia de los datos, facilitando el seguimiento, la creacin de informes y el uso compartido con otras personas. Los datos nunca estarn ms all del explorador web ms cercano.
Desde la primera versin de .NET Framework, los equipos de desarrollo de estos dos lenguajes han procurado marcar algunas diferencias entre ambos, siendo su intencin la de hacer de Visual Basic un lenguaje ms atractivo al desarrollador de aplicaciones de gestin, mientras que C# se pretenda dirigir a los programadores ms orientados hacia el desarrollo a ms bajo nivel: componentes, servicios, etc. Scott Wiltamuth, uno de los directores de la divisin de lenguajes de Visual Studio, menciona que llevar estos objetivos a la prctica result ms complicado de lo esperado, debido a la presencia de lo que l denomina poderosas fuerzas de unificacin que han propiciado un cambio de orientacin hacia el desarrollo en paralelo de funcionalidades para los dos lenguajes, como:
La existencia de un entorno de desarrollo integrado y bloques de construccin de aplicaciones comunes a ambos lenguajes.
24
El hecho de que las principales reas de innovacin presente y futura en el desarrollo de los lenguajes se reflejan en partes exteriores de los mismos, como ocurre en el caso de LINQ.
A los elementos anteriores hay que aadir las demandas de las comunidades de desarrolladores, ya que los programadores de VB queran aquellas funcionalidades disponibles en C# de las que VB careca, y viceversa. Todo ello ha propiciado el cambio de estrategia que acabamos de mencionar, que tiene el claro objetivo de que, independientemente del lenguaje que utilicemos, podamos aprovechar toda la potencia que .NET Framework pone a nuestra disposicin.
El Common Lenguage Runtime (CLR) es una serie de libreras dinmicas (DLLs), tambin llamadas assemblies, que hacen las veces de las DLLs del API de Windows as como las libreras runtime de Visual Basic o C++. Como sabrs, y si no lo sabes ahora te lo cuento yo, cualquier ejecutable depende de una forma u otra de una serie de libreras, ya sea en tiempo de ejecucin como a la hora de la compilacin. Pues el CLR es eso, una serie de libreras usadas en tiempo de ejecucin para que nuestros ejecutables o cualquiera basado en .NET puedan funcionar. Se acab eso de que existan dos tipos de ejecutables: los que son autosuficientes y no dependen de libreras externas o los que necesitan de libreras en tiempo de ejecucin para poder funcionar, tal es el caso de las versiones anteriores de Visual Basic.
25
Por otro lado, la librera de clases de .NET Framework proporcionan una jerarqua de clases orientadas a objeto disponibles para cualquiera de los lenguajes basados en .NET, incluido el Visual Basic. Esto quiere decir que a partir de ahora Visual Basic ya no ser la "oveja negra" de los lenguajes de programacin, sino que tendr a su disposicin todas las clases disponibles para el resto de los lenguajes basados en .NET, (o casi), con lo cual slo nos diferenciar del resto de programadores en la forma de hacer las cosas: ms fciles!
VB.NET ahora es totalmente un lenguaje orientado a objetos con herencia y todo. Tambin permite crear Threads o hilos o tramas de ejecucin y otras cosas que antes nos estaban vetadas.
26
CAPITULO II
2. METODOLOGA FASE I: VISIN Y ALCANCE DEL PROYECTO 2.1. Visin
La visin de este trabajo es desarrollar un sistema informtico, que permita automatizar el proceso de venta de productos de cmputo, haciendo uso de la tecnologa .Net, descrita en el captulo anterior, as mismo del gestor de base de datos Microsoft Access.
27
herramientas se basan en los estndares que les permute poder trabajar en conjunto.
FASE II: PLANEAMIENTO 2.4. Modelo lgico de integracin de tecnologas en el Sistema informtico
2.5. Descripcin de componentes 2.5.1. Clientes Son los usuarios que interactan con el sistema informtico, a travs de las GUI (Interfaz Grfica de Usuario), o mejor dicho ventanas, ya sea para enviar o recibir informacin. En nuestro caso los usuarios vienen a ser los administradores de la base de datos y los vendedores encargados de gestionar los pedidos. 2.5.2. Servidor de Aplicaciones En nuestro caso se trata del IDE, visual Studio 2010, que permite gestionar el cdigo fuente, ms aun el .net Framework, que es necesario para la ejecucin de la aplicacin en cualquier ordenador que cuente con dicho requerimiento. El lenguaje utilizado es visual Basic.Net. y el framework usado fue el 4.0. es decir en esta parte se gestiona toda la lgica del negocio, para permitir mostrar informacin al usuario final y
28
como tambin poder realizar consultas, insertar, actualizar, eliminar y reportar, todos los datos que se necesiten en algn momento determinado. 2.5.3. Servidor de Base de Datos En nuestro caso se encarga de gestionar toda la data, es decir almacenar el dispositivos secundarios, toda la informacin referente al proceso de venta de productos de computo, en este trabajo se hizo uso del Gestor Microsoft Access 2010, por su facilidad de integracin con Visual Studio .Net. En este gestor se implement nuestra base de datos. La cual ser podr ser accedida desde el servidor de aplicaciones que en este caso es el lenguaje de programacin visual Basic .Net, para ello hace uso del ADO.NET, que provee dicha tecnologa. FASE III: DESARROLLO E IMPLEMENTACIN 2.6. Especificaciones Tcnicas
Todos los componentes de nuestro sistema informtico fueron implementados usando la tecnologa .Net y ADO.Net, para poder gestionar toda la data.
El Hardware utilizado, por el cliente es el siguiente: Fabricante del sistema: TOSHIBA Modelo del sistema: Satellite SP 69836R Tipo de sistema: PC basado en x64 Procesador: Intel ( R) Centrino RAM: 4GB 29
DESCRIPCIN
Sistema Operativo Lenguaje de Programacin IDE Sistema Gestor de Base de Datos Reportes
NOMBRE
Microsoft Windows Visual Basic .Net Visual Studio Microsott Access Crystal Reports
VERSIN
Windows 7 VB 10.0 2010 2010 Crystal Reports 14.0
2.7. Diseo e Implementacin de la Base de Datos del Sistema Informtico 2.7.1. Modelo Entidad Relacin
30
codcliente
Autonumeracion
Entero Largo
Cdigo del Usuario , es un correlativo y es la PK (clave primaria) no permite valores nulos Nombre y Apellido completo del cliente, no permite valores nulos Direccin completa del cliente, no permite valores nulo El nmero del DNI del cliente, no permite valores nulos El nmero del telfono fijo o celular, no permite valores nulos
nombre
Texto
38
direccin
Texto
45
DNI
Texto
11
telfono
Texto
10
31
codproducto
Numero
Serieproducto
Texto
80
Marca
Texto
20
Tipo
Texto
50
Stockactual
Numero
Entero Largo
PreCosto
Moneda
--
PreVenta
Moneda
--
FechActualizacion
Fecha/Hora
--
idProveedor
Numero
Entero Largo
Id
Autonumeracion
32
codproveedor
Numero
rucproveedor
Texto
12
nombre
Texto
30
telfono
Texto
10
direccin
Texto
50
IdVenta
Numero
idCliente
Texto
255
-Decimal Decimal
IdVenta idProducto
Numero Numero
Cantidad precioVenta
Numero Numero
2.7.4.1.
Producto
34
2.7.4.2.
Cliente
2.7.4.3.
Venta
35
2.7.4.4.
DetalleVenta
2.7.4.5.
Proveedor
2.7.4.6.
Usuario
36
2.8. Diseo e implementacin del Sistema Informtico 2.8.1. Diseo del formulario de Acceso al Sistema (FrmLogin)
Ilustracin 24: Formulario de Acceso al Sistema a. Elementos utilizados Tipo de Control ComboBox Label Nombre Asignado cboUsuario lblUusuario lblPasssword TextBox txtPasword Button btnEntrar btnCancelar PictureBox pbUsuario Tabla 10: Elementos del Formulario de Acceso
Usamos un cuadro combinado para elegir el Usuario con cual vamos a ingresar al sistema. Usamos una caja de texto donde se ingresar el Password respectivo de cada usuario Usaremos un botn llamado ENTRAR en donde accederemos a nuestro proyecto Usaremos un botn SALIR sirve para cancelar el proceso de acceso
b. Elementos utilizados
Nombre Asignado mnuPrincipal Clientes Producto Proveedor Venta Usuario Consultas Clientes Producto Proveedor Venta Usuario Movimientos Ventas Reportes Clientes Producto Proveedor Venta Usuario Tabla 11: Elementos Formulario Principal Tipo de Control MenuStrip Mantenimiento
b. Elemento utilizados
Tipo de control TextBox Nombre txtCodigo txtNombres txtDireccion txtDNI txtTelefono btnNuevo btnGuardar btnBuscar btnModificar btnEliminar btnCancelar btnSalir dgvClientes gbDatosClientes gbOpciones lblTitulo lblListClientes
Button
40
41
42
43
44
b. Elementos utilizados
Tipo de control TextBox Nombre txtCodigo txtSerie txtStockActual txtPreCosto txtPreVenta cboMarca cboCategoria cboProveedor dtpFechAct btnNuevo btnGuardar btnBuscar btnModificar btnEliminar btnCancelar btnSalir dgvProductos gbDatosProductos gbOpciones lblTitulo lblListProductos
ComboBox
DateTimePicker Button
45
46
47
48
b. Elementos utilizados
Tipo de control TextBox Nombre txtCodigo txtRUC txtSNombre txtTelefono txtDireccion btnNuevo btnGuardar btnBuscar btnModificar btnEliminar btnCancelar btnSalir dgvProveedor gbDatosProveedor gbOpciones lblTitulo lblListProveedor
Button
50
51
52
b. Elementos utilizados
Tipo de control TextBox Nombre txtCodigo txtUsuario txtClave txtNombres txtApellidos btnNuevo btnGuardar btnBuscar btnModificar btnEliminar btnCancelar btnSalir dgvUsuarios gbDatosUsuarios gbOpciones lblTitulo lblListUsuarios
Button
54
Dim registro As Integer Dim sw As Integer = 0 Dim ultimo As Integer Private Sub FrmMantUsuarios_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'cargar datagridview CargarDatos() 'cargar datos en las cajas de texto CargarDatosActualizados(0) habilitarControles(False) ActivarBotones(True, False, False, False, False) End Sub Sub ActivarBotones(ByVal bnuevo As Boolean, ByVal bagregar As Boolean, ByVal bactualizar As Boolean, ByVal beliminar As Boolean, ByVal bcancelar As Boolean) btnNuevo.Enabled = bnuevo btnAgregar.Enabled = bagregar btnActualizar.Enabled = bactualizar btnEliminar.Enabled = beliminar btnCancelar.Enabled = bcancelar End Sub Sub CargarDatos() daClientes = New OleDbDataAdapter("Select * from Usuario", conexion) dsClientes = New DataSet daClientes.Fill(dsClientes, "Cliente") ultimo = dsClientes.Tables("cliente").Rows.Count - 1 dgvUsuarios.DataSource = dsClientes.Tables(0).DefaultView ConfigurarDataGridView() End Sub Sub ConfigurarDataGridView() dgvUsuarios.DefaultCellStyle.BackColor = Color.LightGreen dgvUsuarios.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGoldenrodYellow End Sub Sub correlativo() Dim TblUsuarios As DataTable 'limpiarCliente() 'Limpiar los Controles daCodUsu = New OleDbDataAdapter("Select max(id) as codigo from usuario", conexion) daCodUsu.Fill(dsClientes, "codigousuario") TblUsuarios = dsClientes.Tables("codigousuario") Me.txtCodigo.Text = CInt(TblUsuarios.Rows(0).Item(0).ToString) + 1 TblUsuarios.Dispose() End Sub Sub limpiarUsuario() Me.txtUsuario.Clear() txtClave.Clear() txtNombres.Clear() txtApellidos.Clear() txtUsuario.Focus() End Sub Sub habilitarControles(ByVal estado As Boolean) Me.txtCodigo.Enabled = False Me.txtUsuario.Enabled = estado Me.txtClave.Enabled = estado Me.txtNombres.Enabled = estado Me.txtApellidos.Enabled = estado End Sub Sub Nuevo() Dim cad As String cad = "Insert into usuario values(@id,@usuario,@clave,@nombre,@apellidos)" If conexion.State = ConnectionState.Open Then conexion.Close() End If conexion.Open() cmd.CommandType = CommandType.Text cmd.CommandText = cad cmd.Connection = conexion With cmd.Parameters
55
.Add("@id", OleDbType.VarChar).Value = Me.txtCodigo.Text .Add("@usuario", OleDbType.VarChar).Value = Me.txtUsuario.Text .Add("@clave", OleDbType.VarChar).Value = Me.txtClave.Text .Add("@nombre", OleDbType.VarChar).Value = Me.txtNombres.Text .Add("@apellidos", OleDbType.VarChar).Value = Me.txtApellidos.Text End With Dim N As Integer N = cmd.ExecuteNonQuery If N = 1 Then MessageBox.Show("Registro Guardado Correctamente") CargarDatos() CargarDatosActualizados(ultimo) habilitarControles(False) Else MessageBox.Show("Error en la Transaccin") End If cmd.Parameters.Clear() : conexion.Close() End Sub Sub Actualizar() Dim cad As String cad = "update usuario set id=@id,usuario= @usuario,clave= @clave,nombre=@nombre,apellidos=@apellidos where id=@id" If conexion.State = ConnectionState.Open Then conexion.Close() End If conexion.Open() cmd.CommandType = CommandType.Text cmd.CommandText = cad cmd.Connection = conexion With cmd.Parameters .Add("@id", OleDbType.VarChar).Value = Me.txtCodigo.Text .Add("@usuario", OleDbType.VarChar).Value = Me.txtUsuario.Text .Add("@clave", OleDbType.VarChar).Value = Me.txtClave.Text .Add("@nombre", OleDbType.VarChar).Value = Me.txtNombres.Text .Add("@apellidos", OleDbType.VarChar).Value = Me.txtApellidos.Text End With Dim N As Integer N = cmd.ExecuteNonQuery If N = 1 Then MessageBox.Show("Registro Actualizado Correctamente") CargarDatos() CargarDatosActualizados(ultimo) habilitarControles(False) Else MessageBox.Show("Error en la Transaccin") End If cmd.Parameters.Clear() : conexion.Close() End Sub Sub Eliminar() If MessageBox.Show("Seguro de Borrar?", "Aviso", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = _ Windows.Forms.DialogResult.Yes Then Dim cad As String cad = "update usuario set id=@id,usuario= @usuario,clave= @clave,nombre=@nombre,apellidos=@apellidos where id=@id" If conexion.State = ConnectionState.Open Then conexion.Close() End If conexion.Open() cmd.CommandType = CommandType.Text cmd.CommandText = cad cmd.Connection = conexion With cmd.Parameters .Add("@id", OleDbType.VarChar).Value = Me.txtCodigo.Text .Add("@usuario", OleDbType.VarChar).Value = Me.txtUsuario.Text .Add("@clave", OleDbType.VarChar).Value = Me.txtClave.Text .Add("@nombre", OleDbType.VarChar).Value = Me.txtNombres.Text
56
.Add("@apellidos", OleDbType.VarChar).Value = Me.txtApellidos.Text End With Dim N As Integer N = cmd.ExecuteNonQuery If N = 1 Then MessageBox.Show("Registro Eliminado Correctamente") registro = Me.txtCodigo.Text - 1 CargarDatosActualizados(ultimo) habilitarControles(False) Else MessageBox.Show("Error en la Transaccin") End If cmd.Parameters.Clear() : conexion.Close() End If End Sub Public Sub CargarDatosActualizados(ByVal fila As Integer) Dim total As Integer Try Dim TblClientes As DataTable Dim dr As DataRow ' daClientes = New OleDbDataAdapter("Select * from usuario ", conexion) dsClientes = New DataSet daClientes.Fill(dsClientes, "usuario") TblClientes = dsClientes.Tables("usuario") ' Para mostarar la posicion, contamos los registros de la tabla Idiomas_Ofertado total = TblClientes.Rows.Count '' Asignando una fila de datos "Registro" al DataRow dr = TblClientes.Rows(fila) ' Mostrando los datos desde el datarow txtCodigo.Text = dr("id") txtUsuario.Text = dr("usuario") txtClave.Text = dr("clave") txtNombres.Text = dr("nombre") txtApellidos.Text = dr("apellidos") Catch exc As Exception MessageBox.Show(exc.Message) End Try End Sub Sub buscar() Dim total As Integer Dim codigo As String codigo = InputBox("Ingrese cdigo a Buscar") If Len(codigo) = 1 Then codigo = "0" + codigo End If Try Dim TblClientes As DataTable Dim dr As DataRow ' daClientes = New OleDbDataAdapter("Select * from usuario where id='" & codigo & "'", conexion) dsClientes = New DataSet daClientes.Fill(dsClientes, "Usuario") TblClientes = dsClientes.Tables("Usuario") ' Para mostarar la posicion, contamos los registros de la tabla Idiomas_Ofertado total = TblClientes.Rows.Count '' Asignando una fila de datos "Registro" al DataRow dr = TblClientes.Rows(0) ' Mostrando los datos desde el datarow txtCodigo.Text = dr("id") txtUsuario.Text = dr("usuario")
57
txtClave.Text = dr("clave") txtNombres.Text = dr("nombre") txtApellidos.Text = dr("apellidos") Catch exc As Exception MessageBox.Show(exc.Message) End Try End Sub Private Sub verdetalle(ByVal fila As Integer) Try If dgvUsuarios.Rows.Count > 0 Then Me.txtCodigo.Text = dgvUsuarios.Item(0, fila).Value.ToString txtUsuario.Text = dgvUsuarios.Item(1, fila).Value.ToString txtClave.Text = dgvUsuarios.Item(2, fila).Value.ToString txtNombres.Text = dgvUsuarios.Item(3, fila).Value.ToString txtApellidos.Text = dgvUsuarios.Item(4, fila).Value.ToString Else dgvUsuarios.Visible = False End If Catch ex As Exception End Try dgvUsuarios.DefaultCellStyle.BackColor = Color.LightGoldenrodYellow dgvUsuarios.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGreen End Sub Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuevo.Click habilitarControles(True) limpiarUsuario() correlativo() sw = 1 ActivarBotones(True, True, False, False, True) End Sub Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscar.Click buscar() ActivarBotones(True, False, True, True, True) End Sub Private Sub btnAgregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAgregar.Click If sw = 1 Then Nuevo() ElseIf sw = 2 Then Actualizar() End If sw = 0 ActivarBotones(True, False, False, False, False) End Sub Private Sub btnActualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnActualizar.Click sw = 2 habilitarControles(True) ActivarBotones(False, True, True, False, True) End Sub Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminar.Click Eliminar() End Sub Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click CargarDatosActualizados(0) habilitarControles(False) sw = 0 ActivarBotones(True, False, False, False, False) End Sub
58
Private Sub btnSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalir.Click If MsgBox("Desea salir?", vbInformation + vbYesNo, "Salir") = vbYes Then Close() End If End Sub Private Sub dgvUsuarios_CellMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles dgvUsuarios.CellMouseClick Try Dim f As Integer = dgvUsuarios.CurrentRow.Index verdetalle(f) Catch ex As Exception End Try End Sub End Class
b. Elementos utilizados
Tipo de control RadioButton Nombre rbtCodigo rbtNombre rbtDNI TextBox DataGridView Label txtDato dgvClientes lblTitulo
60
Me.dgvCliente.Visible = True Me.dgvCliente.DataSource = objDataSet Me.dgvCliente.DataMember = "Cliente" lblEncontrados.Text = TblClientes.Rows.Count TblClientes.Dispose() Else Me.dgvCliente.DataSource = Nothing dgvCliente.Visible = False lblEncontrados.Text = 0 End If End Sub Private Sub rbtCodigo_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbtCodigo.CheckedChanged Me.lblEncontrados.Text = "" End Sub Private Sub rbtNombre_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbtNombre.CheckedChanged Me.lblEncontrados.Text = "" End Sub Private Sub rbtDNI_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbtDNI.CheckedChanged Me.lblEncontrados.Text = "" End Sub End Class
b. Elementos utilizados
Tipo de control RadioButton Nombre rbtCodigo
61
62
objDataAdapter.Fill(objDataSet, "producto") conexion.Close() Dim TblClientes As DataTable TblClientes = objDataSet.Tables("producto") If TblClientes.Rows.Count > 0 Then Me.dgvProducto.Visible = True Me.dgvProducto.DataSource = objDataSet Me.dgvProducto.DataMember = "producto" lblEncontrados.Text = TblClientes.Rows.Count TblClientes.Dispose() Else Me.dgvProducto.DataSource = Nothing dgvProducto.Visible = False lblEncontrados.Text = 0 End If End Sub Private Sub rbtCodigo_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles rbtCodigo.Click, rbtSerie.Click, rbtPrecioVenta.Click Select Case sender.name Case "rbtCodigo" strcampo = "codProducto" oper = "codigo" Case "rbtSerie" strcampo = "serieproducto" oper = "serie producto" Case "rbtPrecioVenta" strcampo = "PreVenta" oper = "Precio Venta" End Select Me.lblTitulo.Text = "Ingrese " & oper & " a buscar" Me.dgvProducto.DataSource = Nothing txtDato.Enabled = True txtDato.Clear() txtDato.Focus() lblEncontrados.Text = "" End Sub Private Sub txtDato_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtDato.TextChanged buscar() End Sub Private Sub cboCategoria_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboCategoria.SelectedIndexChanged Me.strcampo = "tipo" Me.txtDato.Text = cboCategoria.SelectedItem.ToString End Sub Private Sub cboMarca_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboMarca.SelectedIndexChanged Me.strcampo = "Marca" Me.txtDato.Text = cboMarca.SelectedItem.ToString End Sub End Class
63
b. Elementos utilizados
Tipo de control RadioButton Nombre rbtCodigo rbtPreVenta rbtSerie TextBox DataGridView Label txtDato dgvProductos lblTitulo
Tabla 14: Componentes Formulario Bsqueda de Proveedores c. Cdigo fuente en el formulario FrmConProveedores
Imports System.Data Imports System.Data.OleDb Public Class FrmConProveedores Dim strcampo As String Dim objDataAdapter As OleDbDataAdapter Dim objDataSet As DataSet Dim sqlstr, oper As String Private Sub rbtCodigo_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbtCodigo.CheckedChanged End Sub
64
Private Sub rbtCodigo_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles rbtCodigo.Click, rbtRUC.Click, rbtNombre.Click Select Case sender.name Case "rbtCodigo" strcampo = "codProveedor" oper = "codigo" Case "rbtNombre" strcampo = "nombre" oper = "nombre" Case "rbtRUC" strcampo = "rucproveedor" oper = "rucproveedor" End Select Me.lblTitulo.Text = "Ingrese " & oper & " a buscar" Me.dgvProveedor.DataSource = Nothing txtDato.Enabled = True txtDato.Clear() txtDato.Focus() lblEncontrados.Text = "" End Sub Private Sub FrmConProveedores_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load txtDato.Clear() txtDato.Enabled = False dgvProveedor.ReadOnly = True End Sub Private Sub txtDato_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtDato.TextChanged buscar() End Sub Sub buscar() dgvProveedor.DefaultCellStyle.BackColor = Color.LightGreen dgvProveedor.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGoldenrodYellow Dim strSQL As String 'Dim total As Integer strSQL = "SELECT * FROM proveedor WHERE " & Trim(strcampo) & " LIKE '" & _ Trim(Me.txtDato.Text) & "%'" If txtDato.Text = "" Then txtDato.Clear() : txtDato.Focus() lblEncontrados.Text = "" dgvProveedor.DataSource = Nothing dgvProveedor.Visible = False Exit Sub End If objDataAdapter = New OleDbDataAdapter(strSQL, conexion) If conexion.State = ConnectionState.Open Then conexion.Close() End If conexion.Open() objDataSet = New DataSet() objDataAdapter.Fill(objDataSet, "proveedor") conexion.Close() Dim TblClientes As DataTable TblClientes = objDataSet.Tables("proveedor") If TblClientes.Rows.Count > 0 Then Me.dgvProveedor.Visible = True Me.dgvProveedor.DataSource = objDataSet Me.dgvProveedor.DataMember = "proveedor" lblEncontrados.Text = TblClientes.Rows.Count TblClientes.Dispose() Else Me.dgvProveedor.DataSource = Nothing dgvProveedor.Visible = False lblEncontrados.Text = 0 End If End Sub End Class
b. Elementos utilizados
Tipo de Control TextBox Nombre txtCliente txtDireccion DataGridView Buttton Label dgvConVentas btnBuscarVenta lblSubTotVenta lblIGV lblTotalVenta GroupBox gbDatosCliente
66
67
2.8.11. Formulario de Consulta de Clientes para Formulario de Ventas a. Diseo de Formulario Consulta de Clientes FrmCliClientes
b. Elementos utilizados
Tipo de Control TextBox DataGridView Nombre txtNombre dgvConClientes
68
Private Sub dgvClientes_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvClientes.CellDoubleClick codigoCliente = Me.dgvClientes.Item(0, dgvClientes.CurrentRow.Index()).Value.ToString() nombre = Me.dgvClientes.Item(1, dgvClientes.CurrentRow.Index()).Value.ToString() direccion = Me.dgvClientes.Item(2, dgvClientes.CurrentRow.Index()).Value.ToString() Me.Close() End Sub Private Sub txtNombre_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtNombre.TextChanged DV.RowFilter = "nombre like '%" & txtNombre.Text & "%'" End Sub End Class
2.8.12. Formulario de Consulta de Ventas para formulario de Ventas a. Diseo de Formulario de Bsqueda de Ventas FrmBusVentas
b. Elementos utilizados
Tipo de control Label DataGridView Nombre lblDescripcion dgvVentas
69
Public daVenta As OleDbDataAdapter Public tblVentas As New DataTable Public daDVenta As OleDbDataAdapter Public tblDVenta As New DataTable Public codVenta As Integer Private Sub FrmBuscarVenta_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Cargar_Ventas() End Sub Private Sub Cargar_Ventas() 'LstVenta = objVentaBL.Listar_Venta Dim sql As String ' sql = "Select v.idVenta,c.nombre,c.direccion from venta V inner join Cliente C on (v.idCliente=c.codcliente)" sql = "SELECT Venta.IdVenta, Cliente.nombre, Cliente.direccion, Venta.fechaVenta, Venta.igv, Venta.Total FROM Cliente INNER JOIN Venta ON Cliente.codcliente = Venta.idCliente" daVenta = New OleDbDataAdapter(sql, conexion) daVenta.Fill(tblVentas) 'Me.DataGridView1.AutoGenerateColumns = False Me.DataGridView1.DataSource = tblVentas End Sub Private Sub DataGridView1_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick Try Dim f As Integer = DataGridView1.CurrentRow.Index FrmConVenta.DataGridView1.DataSource = Nothing FrmConVenta.DataGridView1.Rows.Clear() verdetalle(f) Close() 'verdetalle1(f) 'TrackBar2.Value = f 'CargarDatos(f) Catch ex As Exception End Try End Sub Private Sub verdetalle(ByVal fila As Integer) Dim sql1 As String FrmConVenta.DataGridView1.DataSource = Nothing FrmConVenta.DataGridView1.Rows.Clear() Try If DataGridView1.Rows.Count > 0 Then codVenta = DataGridView1.Item(0, fila).Value.ToString FrmConVenta.codVenta =DataGridView1.Item(0, fila).Value.ToString FrmConVenta.txt_cliente.Text = DataGridView1.Item(1, fila).Value.ToString FrmConVenta.txt_direccion.Text = DataGridView1.Item(2, fila).Value.ToString sql1 = "SELECT DetalleVenta.Cantidad, PRODUCTO.Serieproducto+' '+' '+PRODUCTO.Marca+' '+' '+PRODUCTO.Tipo as Producto, DetalleVenta.precioVenta FROM PRODUCTO INNER JOIN DetalleVenta ON PRODUCTO.codproducto = DetalleVenta.idProducto where DetalleVenta.IdVenta= " & codVenta daDVenta = New OleDbDataAdapter(sql1, conexion) daDVenta.Fill(tblDVenta) FrmConVenta.DataGridView1.AutoGenerateColumns = False FrmConVenta.DataGridView1.DataSource = tblDVenta tblDVenta.Dispose() ' DataGridView1.Visible = False FrmConVenta.Realizar_Calculo() End If Catch ex As Exception End Try DataGridView1.DefaultCellStyle.BackColor = Color.LightGoldenrodYellow DataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGreen End Sub End Class
b. Elementos utilizados Tipo de Control Button Nombre btnNuevo,btnEliminar,btnLimpiar btnGuardar,btnSalir, btnBusCliente btnBusProductos TextBox txtCliente,txtDireccio txtDescripcion,txtStock,txtPreUnit txtCantidad Label lblSubTotVenta,lblIGV,lblTotalVenta lblNumVenta, lblValorVentaLetras DataGridView dgvPedido
71
72
txtCantidad.Focus() Exit Sub ElseIf Buscar_Producto_Gridview() = False Then MessageBox.Show("El Producto que intenta Agregar ya existe en la Lista" & Chr(13) & "Item Seleccionado en la Lista", "Atencin", MessageBoxButtons.OK, MessageBoxIcon.Information) Me.txtNombre.Focus() Else Me.DataGridView1.Rows.Add(codproducto.ToString, Me.txtCantidad.Text, Trim(Me.txtNombre.Text), Me.txt_precio.Text) Realizar_Calculo() Limpiar() Me.txtCantidad.Focus() End If End Sub Private Sub Realizar_Calculo() '-------------->>>><<<<<------------------------' Dim Cantidad As Double Dim IGV, Total, MTotal, MVenta, MIGV As Double Dim Precio As Double MTotal = 0 MVenta = 0 MIGV = 0 lbl_vVenta.Text = 0 lbl_Igv.Text = 0 lbl_pVenta.Text = 0 For n As Integer = 0 To DataGridView1.RowCount - 1 Cantidad = Val(DataGridView1.Rows(n).Cells(1).Value.ToString()).ToString Precio = Val(DataGridView1.Rows(n).Cells(3).Value) Total = (Cantidad * Precio) Me.DataGridView1.Rows(n).Cells(4).Value = Total.ToString("##,##0.00") MTotal += Total Next lbl_vVenta.Text = MTotal.ToString("##,##0.00") IGV = (MTotal * Val(txt_igvM.Text)) / 100 lbl_Igv.Text = IGV.ToString("##,##0.00") Total = MTotal + IGV lbl_pVenta.Text = Total.ToString("##,##0.00") Convertir_Letras() End Sub Private Sub Convertir_Letras() If Me.DataGridView1.RowCount = 0 Then lbl_numletras.Text = "" Else Dim numero As String Dim cantidad As Integer = vb.Len(Me.lbl_pVenta.Text) numero = vb.Mid(lbl_pVenta.Text, 1, cantidad - 3) lbl_numletras.Text = "SON: " & Num2Text(numero) & " CON " & vb.Right(lbl_pVenta.Text, 2) & "/100 NUEVO SOLES" End If End Sub Private Function Buscar_Producto_Gridview() For n As Integer = 0 To Me.DataGridView1.RowCount - 1 If Me.DataGridView1.Rows(n).Cells(2).Value = Trim(Me.txtNombre.Text) Then DataGridView1.CurrentCell = DataGridView1.Rows(n).Cells(2) DataGridView1.Refresh() Return False Exit Function End If Next Return True
73
End Function Private Sub txt_Descripcion_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtNombre.KeyDown 'Si se Presiono la Tecla F5 se llama a la ventana de Ayuda If e.KeyCode = Keys.F5 Then Dim Xayuda As New FrmProProducto 'Instanciar al Formulario de Xayuda.ShowDialog() Me.txtStock.Text = Xayuda.stock Me.txtNombre.Text = Xayuda.nombre txt_precio.Text = Xayuda.precio codproducto = Xayuda.codproducto End If End Sub Private Sub Limpiar() txtCantidad.Clear() txtNombre.Clear() txt_precio.Clear() txtStock.Clear() btnBProducto.Focus() End Sub Private Function verificarstock() As Boolean Dim valor As Boolean Dim a, b As Integer a = CInt(Me.txtStock.Text) b = CInt(Me.txtCantidad.Text.Trim) If a < b Then MsgBox("Ingrese una cantidad menor al stock") Me.txtCantidad.Clear() Me.txtCantidad.Focus() valor = True Else valor = False End If Return valor End Function Private Sub txtStock_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtCantidad.KeyDown If e.KeyData = Keys.Enter Then Verificar_Cajas() End If End Sub Private Sub Btn_Eliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Eliminar.Click If Me.DataGridView1.RowCount <> 0 Then If MessageBox.Show("Realmente Desea Eliminar el Item Seleccionado?", "Atencin", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes Then Me.DataGridView1.Rows.RemoveAt(Me.DataGridView1.CurrentRow.Index) End If End If Realizar_Calculo() End Sub Private Sub Btn_Limpiar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Limpiar.Click If Me.DataGridView1.RowCount <> 0 Then If MessageBox.Show("Realmente Desea Eliminar la Lista?", "Atencin", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes Then Me.DataGridView1.Rows.Clear() End If End If Realizar_Calculo() End Sub
74
Sub GUARDAR() Dim cmV As New OleDbCommand() Dim cmDV As New OleDbCommand() Dim cmA As New OleDbCommand() Dim cad As String Dim cad1 As String Dim N As Integer Dim n1 As Integer cad = "Insert into Venta values(@IdVenta,@idCliente,@fechaVenta,@igv,@Total)" cad1 = "Insert into DetalleVenta values(@IdVenta,@idProducto,@Cantidad,@precioVenta)" If conexion.State = ConnectionState.Open Then conexion.Close() End If conexion.Open() cmV.CommandType = CommandType.Text cmV.CommandText = cad cmV.Connection = conexion cmDV.CommandType = CommandType.Text cmDV.CommandText = cad1 cmDV.Connection = conexion With cmV.Parameters .Add("@IdVenta", OleDbType.Integer).Value = codVenta .Add("@idCliente", OleDbType.VarChar).Value = codCliente .Add("@fechaVenta", OleDbType.Date).Value = Now .Add("@igv", OleDbType.Decimal).Value = CDbl(lbl_Igv.Text) .Add("@Total", OleDbType.Decimal).Value = CDbl(lbl_pVenta.Text) End With n1 = cmV.ExecuteNonQuery Dim i As Integer Dim cant As Integer cant = DataGridView1.Rows.Count MsgBox("Cantidad de Productos" & cant) For i = 0 To cant - 1 With cmDV.Parameters cmDV.Parameters.Clear() .Add("@IdVenta", OleDbType.Integer).Value = codVenta .Add("@idProducto", OleDbType.Integer).Value = CInt(Me.DataGridView1.Item(0, i).Value) .Add("@Cantidad", OleDbType.Integer).Value = CInt(Me.DataGridView1.Item(1, i).Value) .Add("@precioVenta", OleDbType.Decimal).Value = CDbl(Me.DataGridView1.Item(3, i).Value) End With N = cmDV.ExecuteNonQuery Next actualizarStock() If n1 = 1 Then MessageBox.Show("Registro Guardado Correctamente") Else MessageBox.Show("Error en la Transaccin") End If cmV.Parameters.Clear() : conexion.Close() End Sub Sub limpiarVenta() txt_cliente.Clear() txt_direccion.Clear() txtNombre.Clear() txtStock.Clear() txt_precio.Clear() txtCantidad.Clear() lbl_vVenta.Text = "" lbl_Igv.Text = "" lbl_pVenta.Text = "" btnNuevo.Focus() End Sub
75
Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuevo.Click correlativo() ActivarBotones(False, True, True, True) End Sub Private Sub Btn_Guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Guardar.Click GUARDAR() ActivarBotones(True, False, False, False) DataGridView1.Rows.Clear() limpiarVenta() End Sub Private Sub btnBCliente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBCliente.Click Dim Xayuda As New FrmCliClientes 'Instanciar al Formulario de 'esta(manera) ' puedo acceder a las variables que estan declarados 'en el Form3 Xayuda.ShowDialog() ' Me.txtCodigo.Text = Xayuda.codigoCliente codCliente = Xayuda.codigoCliente Me.txt_cliente.Text = Xayuda.nombre txt_direccion.Text = Xayuda.direccion End Sub Private Sub btnBProducto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBProducto.Click Dim Xayuda As New FrmProProducto 'Instanciar al Formulario de 'esta(manera) ' puedo acceder a las variables que estan declarados 'en el Form3 Xayuda.ShowDialog() Me.txtStock.Text = Xayuda.stock Me.txtNombre.Text = Xayuda.nombre txt_precio.Text = Xayuda.precio codproducto = Xayuda.codproducto End Sub Sub actualizarStock() If conexion.State = ConnectionState.Open Then conexion.Close() End If conexion.Open() Dim sql As String = "UPDATE producto SET Stockactual = Stockactual - @cantidad WHERE codproducto = @codproducto" Dim cmd As OleDbCommand = New OleDbCommand(sql, conexion) For Each row As DataGridViewRow In Me.DataGridView1.Rows Dim codproducto As Integer = CInt(row.Cells("codigo").Value) Dim cantidad As Integer = CInt(row.Cells("cantidad").Value) cmd.Parameters.Clear() cmd.Parameters.AddWithValue("@cantidad", cantidad) cmd.Parameters.AddWithValue("@codproducto", codproducto) cmd.ExecuteNonQuery() Next cmd.Parameters.Clear() : conexion.Close() End Sub Private Sub btnSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalir.Click If MsgBox("Desea salir?", vbInformation + vbYesNo, "Salir") = vbYes Then Close() End If End Sub End Class
Ilustracin 53: Formulario de Reporte de Ventas b. Diseo de Reporte en Crystal Report rptVentas
77
Ilustracin 56: Formulario Reporte de Clientes b. Diseo de Reporte en Crystal Report rptClientes
Ilustracin 59: Formulario Reporte de Productos b. Diseo de Reporte en Crystal Report rptProductos
Ilustracin 62: Formulario de Reporte de Proveedores b. Diseo de Reporte en Crystal Report rptProveedores
CAPITULO III
3. CONCLUSIONES Y RECOMENDACIONES 3.1. CONCLUSIONES Se cre un documento en el que se abordan de una forma general los conceptos de base de datos, lenguaje de programacin Visual Basic. Net, y el desarrollo del Sistema Informtico para Venta de Productos de cmputo. El contar con un sistema informtico dentro de una empresa; nos permite automatizar los procesos de venta y consulta de productos, el cual genera ventajas competitivas y nos entrega informacin en el menor tiempo posible. Se determin que es un tanto sencillo la integracin de la Tecnologa. Net, para el desarrollo de aplicaciones, de escritorio, que son de mucha utilidad hoy en da dentro las empresas dedicadas al rubro de ventas. El sistema cuenta con varias funcionabilidades que facilitan al usuario la comprensin y manejo del mismo. 3.2. RECOMENDACIONES Que los usuarios que van a manejar el sistema tenga conocimientos bsicos en Informtica y una previa capacitacin a la utilizacin del mismo. Para cualquier ayuda utilizar el manual de usuario. Los vendedores o usuarios deben ser los nicos responsables de la
informacin que se ingresa al sistema para que no hayan confusiones. Para que la implementacin del sistema sea efectiva es recomendable que la informacin se maneje con gran seguridad.
81
REFERENCIAS BIBLIOGRFICAS [1] Programacin Visual Basic .net CEVALLOS F, Javier Ed. AlgaOmega Editor, S.A. Mxico. Grupo
[2] Programacin Visual Basic .net Carrasco Muoz, Joel Ed. AG Editores SRL, Lima 2005 [3] Visual Basic .net 2005 Librera Editorial MACRO, Lima 2005 [4] Visual Basic .net 2005 Express Castaeda Len, Juan Jos. Editorial GRAF, Lima 2006. [5] Desarrollando Aplicaciones .NET Oficina de Publicaciones de FIIS UNI WINDOWS CON ADO.NET 2005 Sistemas UNI, Lima. 2008. [6] Microsoft Access 2010 en Profundidad, Prez, Mara. Editorial AlfaOmega, RC Libros, Mxico 2011. [7] Sistemas de Bases de Datos, Administracin y Uso. Y.H. TSAJ, A Editorial: Prentice Hall 1 Edicin Mxico 1990 PARA RITISA
82
ANEXOS
1. FUNCIONAMIENTO DEL SISTEMA 1.1. INGRESO AL SISTEMA
1.2.
FORMULARIO PRINCIPAL
83
1.3.
84
1.4.
1.4.4. Formulario Consulta de Ventas 1.4.4.1. Formulario Bsqueda de Venta por Cliente
1.4.4.2.
1.5.
1.5.1.1.
1.5.1.2.
1.5.1.3.
89
1.6.
92