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
A todas las dems personas que no fueron citadas, pero que de alguna manera directa o indirecta contribuyeron a la realizacin de este trabajo.
iii
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. iv
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.
v
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 vi
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
vii
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
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 1.1.1. Definicin de SGBD........................................................................................ 9 1.1.2. Niveles de abstraccin de una base de datos .......................................... 10 1.1.3. Estructura Multicapa .................................................................................... 13 1.1.4. Modelos Conceptuales ................................................................................ 14 1.1.5. Modelos Lgicos .......................................................................................... 17 1.1.6. Principales Sistemas Gestores de Bases de Datos ................................. 21 1.2. TECNOLOGA .NET .............................................................................................. 24 1.2.1. Visual Studio .Net 2010 ............................................................................... 24 1.2.2. .NET FRAMEWORK .................................................................................. 25 CAPITULO II ........................................................................................................................ 27 2. METODOLOGA ........................................................................................................... 27 2.1. Visin .................................................................................................................... 27 2.2. Oportunidad de Negocio ..................................................................................... 27 2.3. Anlisis de beneficios ......................................................................................... 27 2.4. Modelo lgico de integracin de tecnologas en el Sistema informtico ..... 28 2.5. Descripcin de componentes ............................................................................ 28 2.6. Especificaciones Tcnicas ................................................................................. 29 2.7. Diseo e Implementacin de la Base de Datos del Sistema Informtico ..... 30 2.8. Diseo e implementacin del Sistema Informtico ......................................... 37 CAPITULO III ....................................................................................................................... 81 3. CONCLUSIONES Y RECOMENDACIONES ............................................................... 81 REFERENCIAS BIBLIOGRFICAS ................................................................................... 82 ANEXOS ............................................................................................................................... 83 9
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 10
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
1.1.2. Niveles de abstraccin de una base de datos En cualquier sistema de informacin se considera que se pueden observar los datos desde dos puntos de vista: Vista externa. Esta es la visin de los datos que poseen los usuarios del Sistema de Informacin. Vista fsica. Esta es la forma en la que realmente estn almacenados los datos. En un sistema orientado a procesos, los usuarios ven los datos desde las 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 11
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 12
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 administrativas como la creacin de copias de seguridad por ejemplo o el arreglo de problemas de red por ejemplo).
b. Usuarios 13
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. 1.1.3. Estructura Multicapa El proceso que realiza un SGBD est en realidad formado por varias capas que actan como interfaces entre el usuario y los datos. Fue el propio organismo ANSI (en su modelo X3/SPARC que luego se comenta) la que introdujo una mejora de su modelo de bases de datos en 1988 a travs de un grupo de trabajo llamado UFTG (User Facilities Task Group, grupo de trabajo para las facilidades de usuario). . Ilustracin 3: Estructura multicapa de las facilidades de usuario 14
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. 1.1.4. Modelos Conceptuales a. Modelo Entidad Relacin Ya hemos visto anteriormente que existen varios esquemas a realizar para poder representar en forma de base de datos informtica un problema 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. b. Componentes del Modelo Entidad Relacin Entidad. Se trata de cualquier objeto u elemento (real o abstracto) acerca del cual se pueda almacenar informacin en la base de datos. Es 15
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 hablaramos de la entidad PERSONAS. Mientras que cada persona en concreto sera una ocurrencia o un ejemplar de la entidad persona. Representacin Grfica 16
En el modelo entidad relacin los conjuntos de entidades se representan con un rectngulo dentro del cual se escribe el nombre de la entidad:
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:
Ilustracin 6: Entidad Dbil 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: 17
Ilustracin 7: Ejemplo de Relacin Representacin Grfica
Ilustracin 8: Representacin Grfica de Relacin 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:
Ilustracin 9: Atributos de Entidad y Relacin 1.1.5. Modelos Lgicos 18
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,...). 19
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.
Tabla 2: Tabla Clientes de una Base de Datos 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: 20
Ilustracin 10: Transformacin de Entidad a esquema Relacional 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:
Ilustracin 11: Grafo Relacional d. Esquemas Relacionales Se ha hecho muy popular la forma de presentar esquemas relacionales del programa Microsoft Access. 21
Ilustracin 12: Esquema Relacional de Ms Access 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. 22
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 a. MICROSOFT SQL SERVER 23
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. Un motor de base de datos compacto y un slido optimizador de consultas. Compatibilidad con la rplica de mezcla y el acceso a datos remotos (RDA). 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 24
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. Posibilidad de ampliacin Sencillez Mltiples usuarios Escalabilidad 1.2. TECNOLOGA .NET 1.2.1. Visual Studio .Net 2010 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. La naturaleza orientada a objetos y el sistema de tipos comn a los dos lenguajes. 25
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. 1.2.2. .NET FRAMEWORK .NET Framework es un entorno para construir, instalar y ejecutar servicios Web y otras aplicaciones. Se compone de tres partes principales: el Common Language Runtime, las clases Framework y ASP.NET El .NET Framework es el corazn de .NET, cualquier cosa que queramos hacer en cualquier lenguaje .NET debe pasar por el filtro cualquiera de las partes integrantes del .NET Framework.
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. 26
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.
Ilustracin 13: .Net Framework
27
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. 2.2. Oportunidad de Negocio En la actualidad las empresas dedicadas a las ventas necesitan automatizar sus procesos para ello necesitan contar con sistemas informticos que agilicen estos procesos, adems a cada momento se necesita informacin, los usuarios finales ya sean vendedores hacen uso de un sistema de ventas, para consultar precios y gestionar los pedidos, y finalmente entregar los informes. Pero existen an algunas empresas que todo este proceso no lo hacen de forma automtico sino ms bien, lo hacen de forma manual, y esto genera bastante incomodad en los clientes. La mayora de pequeas empresas tienen la nocin que este servicio cuesta bastante dinero, pero tienen que ver el lado positivo es decir la utilidad de contar con un sistema informtico dentro de su empresa. 2.3. Anlisis de beneficios Los beneficios que se obtienen al desarrollar un sistema informtico para la gestin de ventas de una empresa de dedicada a la venta de artculos de cmputo, son los siguientes: Reduccin de costos y tiempo de desarrollo, debido a que en la actualidad se cuenta con herramientas tecnolgicas en nuestro caso se hizo uso de la tecnologa .Net, la cuales se pueden utilizar e integrar para obtener un producto a bajo costo. Reduccin del costo de mantenimiento, debido a que detrs de estas herramientas tecnolgicas .Net, existe bastante informacin en la web. Reduccin de costo de integracin, debido a que es factible integrarlo con otras herramientas que permitan aumentar el nivel de seguridad, ya que todas estas 28
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
Ilustracin 14: Modelo Lgico de 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 29
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. 2.6.1. Caractersticas del Hardware El Hardware utilizado para la implementacin de los servidores, tiene las siguientes caractersticas: Fabricante del sistema: HP Pavillion Modelo del sistema: dv4 -1413la Tipo de sistema: PC basado en x32 Procesador: AMD Athlon x2 Dual-Core RAM: 3GB 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 30
2.6.2. Caractersticas del Software A continuacin se detallara, cada de los componentes software utilizados, para la implementacin: DESCRIPCIN NOMBRE VERSIN Sistema Operativo Microsoft Windows Windows 7 Lenguaje de Programacin Visual Basic .Net VB 10.0 IDE Visual Studio 2010 Sistema Gestor de Base de Datos Microsott Access 2010 Reportes Crystal Reports Crystal Reports 14.0 Tabla 3: Caractersticas del Software 2.7. Diseo e Implementacin de la Base de Datos del Sistema Informtico 2.7.1. Modelo Entidad Relacin
Ilustracin 15: Modelo Entidad Relacin 2.7.2. Entidades o Tablas
31
Ilustracin 16: Entidades o Tablas 2.7.3. Diccionario de Datos 2.7.3.1. Tabla Clientes Atributo Tipo de dato Tamao del campo Descripcin
codcliente
Autonumeracion
Entero Largo
Cdigo del Usuario , es un correlativo y es la PK (clave primaria) no permite valores nulos
nombre
Texto
38
Nombre y Apellido completo del cliente, no permite valores nulos
direccin
Texto
45
Direccin completa del cliente, no permite valores nulo
DNI
Texto
11
El nmero del DNI del cliente, no permite valores nulos
telfono
Texto
10
El nmero del telfono fijo o celular, no permite valores nulos Tabla 4: Descripcin Tabla Clientes 32
2.7.3.2. Tabla Producto Atributo Tipo de dato Tamao del campo Descripcin
codproducto
Numero
Entero Largo Cdigo del Producto, es un correlativo y es la PK (clave primaria) no permite valores nulos
Serieproducto
Texto
80 Nombre de la serie del producto, no permite valores nulos
Marca
Texto
20 Nombre de la marca del producto, no permite valores nulo
Tipo
Texto
50 Nombre del Tipo del producto, no permite valores nulos
Stockactual
Numero
Entero Largo Cantidad actual del producto en stock, no permite valores nulos
PreCosto
Moneda
-- Costo de cada Producto, no permite valores nulos
PreVenta
Moneda
-- Precio de venta de cada Producto, no permite valores nulos
FechActualizacion
Fecha/Hora
-- Se ingresa la fecha de la compra del Producto, no permite valores nulos
idProveedor
Numero
Entero Largo Cdigo del Proveedor y es FK (clave externa) no permite valores nulos
Tabla 5: Descripcin Tabla Producto
2.7.3.3. Tabla Usuario Atributo Tipo de dato Tamao del campo Descripcin
Id
Autonumeracion
Entero Largo Cdigo del Usuario , es un correlativo y es la PK (clave primaria) no permite valores nulos
usuario
Texto
255 Tipo de Usuario (administrador / secretaria ), no permite valores nulos
clave
Texto
255 La clave del usuario, no permite valores nulo
nombre
Texto
255 El nombre del usuario, no permite valores nulos
apellido
Texto
255 El apellido del usuario, no permite valores nulos Tabla 6: Descripcin Tabla Usuario
33
2.7.3.4. Tabla Proveedor Atributo Tipo de dato Tamao del campo Descripcin
codproveedor
Numero
Entero Largo Cdigo del Proveedor , es un correlativo y es la PK (clave primaria) no permite valores nulos
rucproveedor
Texto
12
El nmero del RUC del Proveedor, no permite valores nulos
nombre
Texto
30
Nombre de la empresa del proveedor, no permite valores nulo
telfono
Texto
10
Telfono de la empresa del proveedor, no permite valores nulos
direccin
Texto
50
Direccin de la empresa, no permite valores nulos Tabla 7: Descripcin Tabla Proveedor 2.7.3.5. Tabla Venta Atributo Tipo de dato Tamao del campo Descripcin
IdVenta
Numero
Entero Largo Cdigo de la tabla venta , es un correlativo y es la PK (clave primaria) no permite valores nulos
idCliente
Texto
255 Cdigo del Cliente y es FK (clave externa) no permite valores nulos
fechaVenta
Fecha/Hora
-- La fecha de la salida de la venta, no permite valores nulo
igv
Numero
Decimal El IGV del producto a la venta, no permite valores nulos
Total
Numero
Decimal
El precio total de la venta, no permite valores nulos Tabla 8: Descripcin Tabla Venta 2.7.3.6. Tabla DetalleVenta Atributo Tipo de dato Tamao del campo Descripcin
IdVenta
Numero
Entero Largo Cdigo del Usuario , es un correlativo y es la PK (clave primaria) no permite valores nulos
idProducto
Numero
Entero Largo Cdigo del Producto y es FK (clave externa) no permite valores nulos
Cantidad
Numero
Entero Largo La cantidad de productos vendidos, no permite valores nulo
precioVenta
Numero
Decimal El precio del producto vendido, no permite valores nulos Tabla 9: Descripcin Tabla DetalleVenta 34
2.7.4. Modelo Relacional en Microsoft Access
Ilustracin 17: Modelo Relacional en Access
2.7.4.1. Producto
Ilustracin 18: Tabla Producto
35
2.7.4.2. Cliente
Ilustracin 19: Tabla Cliente 2.7.4.3. Venta
Ilustracin 20: Tabla Venta 36
2.7.4.4. DetalleVenta
Ilustracin 21: Tabla DetalleVenta 2.7.4.5. Proveedor
Ilustracin 22: Tabla Proveedor 2.7.4.6. Usuario
Ilustracin 23: Tabla Usuario
37
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 Nombre Asignado ComboBox cboUsuario Label 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. Mdulo de Conexin a la Base de Datos Venta de Computadoras
Ilustracin 25: Cdigo Fuente Conexin Base Datos 38
c. Codificacin del Formulario de Acceso (FrmLogin)
Ilustracin 26: Cdigo Fuente Formulario de Acesso 2.8.2. Formulario Principal (MDIPrincipal) a. Diseo del formulario Principal
Ilustracin 27: Formulario Principal del Sistema 39
b. Elementos utilizados Tipo de Control Nombre Asignado MenuStrip mnuPrincipal Mantenimiento Clientes Producto Proveedor Venta Usuario Consultas Clientes Producto Proveedor Venta Usuario Movimientos Ventas Reportes Clientes Producto Proveedor Venta Usuario Tabla 11: Elementos Formulario Principal c. Codificacin en el Formulario Principal (MDIPrincipal)
Ilustracin 28: Cdigo Fuente Formulario Principal 40
2.8.3. Formulario de Mantenimiento de Clientes a. Diseo de Formulario (FrmMantClientes)
Ilustracin 29: Formulario Mantenimiento de Clientes b. Elemento utilizados Tipo de control Nombre TextBox txtCodigo txtNombres txtDireccion txtDNI txtTelefono Button btnNuevo btnGuardar btnBuscar btnModificar btnEliminar btnCancelar btnSalir DataGridView dgvClientes GroupBox gbDatosClientes gbOpciones Label lblTitulo lblListClientes Ilustracin 30: Elementos Formulario Mantenimiento Clientes 41
c. Cdigo Fuente en el Formulario Mantenimiento de Clientes
42
43
44
Ilustracin 31: Cdigo Fuente Formulario Mantenimiento de Clientes 2.8.4. Formulario de Mantenimiento de Productos a. Diseo de Formulario Mantenimiento de Productos
Ilustracin 32: Formulario Mantenimiento Productos
45
b. Elementos utilizados Tipo de control Nombre TextBox txtCodigo txtSerie txtStockActual txtPreCosto txtPreVenta ComboBox cboMarca cboCategoria cboProveedor DateTimePicker dtpFechAct Button btnNuevo btnGuardar btnBuscar btnModificar btnEliminar btnCancelar btnSalir DataGridView dgvProductos GroupBox gbDatosProductos gbOpciones Label lblTitulo lblListProductos Tabla 12: Componentes Formulario Mantenimiento de Productos c. Condigo fuente en el Formulario Mantenimiento Productos
46
47
48
49
Ilustracin 33: Cdigo Fuente Formulario Mantenimiento de Productos 50
2.8.5. Formulario Mantenimiento de Proveedores a. Diseo del formulario FrmMantProveedor
Ilustracin 34: Formulario Mantenimiento de Proveedor b. Elementos utilizados Tipo de control Nombre TextBox txtCodigo txtRUC txtSNombre txtTelefono txtDireccion Button btnNuevo btnGuardar btnBuscar btnModificar btnEliminar btnCancelar btnSalir DataGridView dgvProveedor GroupBox gbDatosProveedor gbOpciones Label lblTitulo lblListProveedor Ilustracin 35: Componentes de Formulario Mantenimiento de Proveedores
2.8.6. Formulario Mantenimiento de Usuarios a. Diseo del Formulario
b. Elementos utilizados Tipo de control Nombre TextBox txtCodigo txtUsuario txtClave txtNombres txtApellidos Button btnNuevo btnGuardar btnBuscar btnModificar btnEliminar btnCancelar btnSalir DataGridView dgvUsuarios GroupBox gbDatosUsuarios gbOpciones Label lblTitulo lblListUsuarios Ilustracin 37: Componentes Formulario Mantenimiento de Usuarios c. Cdigo fuente del formulario FrmMantUsuarios Imports System.Data Imports System.Data.OleDb Public Class FrmMantUsuarios Dim daCodUsu As OleDbDataAdapter Dim dr As DataRow ' Objeto DataRow 55
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 56
.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 57
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") 58
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 59
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 Ilustracin 38: Cdigo Fuente Formulario Mantenimiento de Usuarios 2.8.7. Formulario de Bsqueda de Clientes a. Diseo del Formulario FrmConClientes
Ilustracin 39: Formulario de Bsqueda de Clientes b. Elementos utilizados Tipo de control Nombre RadioButton rbtCodigo rbtNombre rbtDNI TextBox txtDato DataGridView dgvClientes Label lblTitulo Ilustracin 40: Componentes Formulario Bsqueda de Clientes 60
c. Cdigo Fuente en el Formulario FrmConClientes Imports System.Data Imports System.Data.OleDb
Public Class FrmConClientes Dim strcampo As String Dim objDataAdapter As OleDbDataAdapter Dim objDataSet As DataSet Dim sqlstr, oper As String
Private Sub FrmConClientes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load txtDato.Clear() txtDato.Enabled = False dgvCliente.ReadOnly = True End Sub
Private Sub rbtCodigo_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles rbtCodigo.Click, rbtNombre.Click, rbtDNI.Click
Select Case sender.name Case "rbtCodigo" strcampo = "codcliente" oper = "codigo" Case "rbtNombre" strcampo = "nombre" oper = "nombre" Case "rbtDNI" strcampo = "DNI" oper = "DNI" End Select Me.lblTitulo.Text = "Ingrese " & oper & " a buscar" Me.dgvCliente.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 dgvCliente.DefaultCellStyle.BackColor = Color.LightGreen dgvCliente.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGoldenrodYellow Dim strSQL As String 'Dim total As Integer strSQL = "SELECT * FROM cliente WHERE " & Trim(strcampo) & " LIKE '" & _ Trim(Me.txtDato.Text) & "%'" If txtDato.Text = "" Then txtDato.Clear() : txtDato.Focus() lblEncontrados.Text = "" dgvCliente.DataSource = Nothing dgvCliente.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, "Cliente") conexion.Close() Dim TblClientes As DataTable
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 Ilustracin 41: Cdigo Fuente Formulario Consulta de Clientes 2.8.8. Formulario de Bsqueda de Productos a. Diseo de Formulario FrmConProductos
Ilustracin 42: Formulario Bsqueda de Productos b. Elementos utilizados Tipo de control Nombre RadioButton rbtCodigo 62
rbtPreVenta rbtSerie TextBox txtDato DataGridView dgvProductos Label lblTitulo Tabla 13: Componentes del Formulario Bsqueda de Productos c. Cdigo fuente en el Formulario FrmConProductos Imports System.Data Imports System.Data.OleDb Public Class FrmConProductos Dim strcampo As String Dim objDataAdapter As OleDbDataAdapter Dim objDataSet As DataSet Dim sqlstr, oper As String Dim marca() As String Dim categoria() As String Private Sub FrmConProductos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load txtDato.Clear() txtDato.Enabled = False dgvProducto.ReadOnly = True cargarMarca() cargarCategoria() End Sub Sub cargarMarca() marca = {"<Seleccionar>", " GIGABYTE", " ASUS", "FOXCONN", "NVIDIA", "GAINWARD", "MICROSOFT", "LOGITECH", "LG", "SAMSUNG", "INTEL", "AMD"} cboMarca.Items.AddRange(marca) cboMarca.SelectedIndex = 0 'cboMarca.Enabled = False End Sub Sub cargarCategoria() categoria = {"<Seleccionar>", " Motherboards", " Graphics Cards", "Mouse", "Keyboard", "Monitor", "Microprocessors"} cboCategoria.Items.AddRange(categoria) cboCategoria.SelectedIndex = 0 'cboCategoria.Enabled = False End Sub Sub buscar() dgvProducto.DefaultCellStyle.BackColor = Color.LightGreen dgvProducto.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGoldenrodYellow Dim strSQL As String 'Dim total As Integer strSQL = "SELECT * FROM producto WHERE " & Trim(strcampo) & " LIKE '" & _ Trim(Me.txtDato.Text) & "%'" If txtDato.Text = "" Then txtDato.Clear() : txtDato.Focus() lblEncontrados.Text = "" dgvProducto.DataSource = Nothing dgvProducto.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() 63
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 Ilustracin 43: Cdigo Fuente Formulario Consulta de Clientes
64
2.8.9. Formulario de Bsqueda de Proveedores a. Diseo del Formulario FrmConProveedores
Ilustracin 44: Formulario Bsqueda de Proveedores b. Elementos utilizados Tipo de control Nombre RadioButton rbtCodigo rbtPreVenta rbtSerie TextBox txtDato DataGridView dgvProductos Label 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
65
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 Ilustracin 45: Cdigo Fuente Formulario Consulta de Proveedores 66
2.8.10. Formulario de Bsqueda de Ventas a. Diseo del Formulario FrmConVenta
Ilustracin 46: Formulario Consulta de Ventas b. Elementos utilizados Tipo de Control Nombre TextBox txtCliente txtDireccion DataGridView dgvConVentas Buttton btnBuscarVenta Label lblSubTotVenta lblIGV lblTotalVenta GroupBox gbDatosCliente Tabla 15: Componentes Formulario Bsqueda de Ventas 67
c. Cdigo Fuente del Formulario FrmConVenta Imports System.Data Imports System.Data.OleDb Imports vb = Microsoft.VisualBasic Public Class FrmConVenta Public codVenta As Integer Private Sub Btn_Buscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Buscar.Click 'Me.Enabled = False ' FrmBuscarVenta.MdiParent = MDIPrincipal1 FrmBuscarVenta.Show() DataGridView1.DataSource = Nothing DataGridView1.Rows.Clear() End Sub Public 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(0).Value.ToString()).ToString Precio = Val(DataGridView1.Rows(n).Cells(2).Value) Total = (Cantidad * Precio)
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 Sub FrmConVenta_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub End Class Ilustracin 47: Cdigo Fuente Formulario Consulta de Ventas 68
2.8.11. Formulario de Consulta de Clientes para Formulario de Ventas a. Diseo de Formulario Consulta de Clientes FrmCliClientes
Ilustracin 48: Formulario Bsqueda de Cliente para Ventas b. Elementos utilizados Tipo de Control Nombre TextBox txtNombre DataGridView dgvConClientes Tabla 16: Componentes del Formulario Consulta de Clientes para Ventas c. Cdigo Fuente en el Formulario FrmCliClientes Imports System.Data Imports System.Data.OleDb Public Class FrmCliClientes Public codigoCliente As String Public nombre As String Public direccion As String Dim DV As DataView 'Instancio una VISTA
Private Sub FrmCliClientes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim DA As New OleDbDataAdapter("Select codCliente,nombre,direccion from cliente", conexion) Dim DS As New DataSet DA.Fill(DS) DV = DS.Tables(0).DefaultView 'El DATASET lo pasamos al 'DataView() dgvClientes.DataSource = DV.Table() End Sub
Private Sub dgvClientes_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvClientes.CellContentClick
End Sub 69
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 Ilustracin 49: Cdigo de Fuente en el formulario Bsqueda de Cliente Ventas 2.8.12. Formulario de Consulta de Ventas para formulario de Ventas a. Diseo de Formulario de Bsqueda de Ventas FrmBusVentas
Ilustracin 50: Formulario Bsqueda de Ventas b. Elementos utilizados Tipo de control Nombre Label lblDescripcion DataGridView dgvVentas Tabla 17: Componentes Formulario Bsqueda de Ventas c. Cdigo fuente en el Formulario FrmBusVentas Imports System.Data Imports System.Data.OleDb
Public Class FrmBuscarVenta 70
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 Ilustracin 51: Cdigo Fuente Formulario Bsqueda de Ventas 71
2.8.13. Formulario de Gestin de Pedido a. Diseo del Formulario FrmVenta
b. Elementos utilizados Tipo de Control Nombre Button btnNuevo,btnEliminar,btnLimpiar btnGuardar,btnSalir, btnBusCliente btnBusProductos TextBox txtCliente,txtDireccio txtDescripcion,txtStock,txtPreUnit txtCantidad Label lblSubTotVenta,lblIGV,lblTotalVenta lblNumVenta, lblValorVentaLetras DataGridView dgvPedido Tabla 18: Componentes Formulario Gestin de Pedido 72
c. Cdigo fuente en el Formulario FrmVenta Imports vb = Microsoft.VisualBasic Imports System.Data Imports System.Data.OleDb Public Class FrmVenta Dim codproducto As Integer Dim codVenta As Integer Dim daCodVenta As OleDbDataAdapter Dim codCliente As String Private Sub txt_cliente_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txt_cliente.KeyDown 'Si se Presiono la Tecla F5 se llama a la ventana de Ayuda If e.KeyCode = Keys.F5 Then 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 If End Sub
Sub correlativo() Dim TblVenta As DataTable 'limpiarCliente() 'Limpiar los Controles dsClientes = New DataSet daCodVenta = New OleDbDataAdapter("Select max(idventa) as codigo from venta", conexion) daCodVenta.Fill(dsClientes, "CodigoVenta") TblVenta = dsClientes.Tables("CodigoVenta") lblVenta.Text = CInt(TblVenta.Rows(0).Item(0).ToString) + 1 codVenta = CInt(TblVenta.Rows(0).Item(0).ToString) + 1 'MsgBox("El codigo es" & codVenta) TblVenta.Dispose() End Sub Sub ActivarBotones(ByVal bnuevo As Boolean, ByVal beliminar As Boolean, ByVal blimpiar As Boolean, ByVal bguardar As Boolean) btnNuevo.Enabled = bnuevo Btn_Eliminar.Enabled = beliminar Btn_Limpiar.Enabled = blimpiar Btn_Guardar.Enabled = bguardar End Sub Private Sub FrmVenta_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ActivarBotones(True, False, False, False) End Sub Private Sub Verificar_Cajas()
If Trim(txtNombre.Text) = "" Then txtNombre.Focus() Exit Sub ElseIf Trim(txt_precio.Text) = "" Then txt_precio.Focus() Exit Sub ElseIf Trim(txtCantidad.Text) = "" Then txtCantidad.Focus() Exit Sub ElseIf vb.Right(Me.txt_precio.Text, 1) = "." Then MessageBox.Show("Esto no es un Precio Vlido!!!", "Atencin", MessageBoxButtons.OK, MessageBoxIcon.Information) txt_precio.Focus() Exit Sub ElseIf verificarstock() = True Then 73
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)
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 74
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 75
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 76
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 52: Cdigo Fuente Formulario de Venta 77
2.8.14. Formulario Reporte de Ventas a. Diseo de Formulario FrmRptVentas
Ilustracin 53: Formulario de Reporte de Ventas b. Diseo de Reporte en Crystal Report rptVentas
Ilustracin 54: Diseo de Reporte de Ventas c. Cdigo fuente en el Formulario FrmRptVentas Public Class FrmRptVentas
Private Sub FrmRptVentas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim reporteVentas As New RptVentas reporteVentas.Refresh() crvVentas.ReportSource = reporteVentas End Sub End Class Ilustracin 55: Cdigo Fuente Formulario Reporte de Ventas
78
2.8.15. Formulario Reporte de Clientes a. Diseo de Formulario FrmRptClientes
Ilustracin 56: Formulario Reporte de Clientes b. Diseo de Reporte en Crystal Report rptClientes
Ilustracin 57: Diseo de Reporte de Clientes c. Cdigo fuente en el formulario FrmRptClientes Imports System.Data Imports System.Data.OleDb Public Class FrmRptClientes
Private Sub FrmRptClientes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim reporteClientes As New RptCliente reporteClientes.Refresh() crvClientes.ReportSource = reporteClientes End Sub End Class Ilustracin 58: Cdigo Fuente Formulario Reporte de Clientes 79
2.8.16. Formulario Reporte de Productos a. Diseo del Formulario Reporte de Productos
Ilustracin 59: Formulario Reporte de Productos b. Diseo de Reporte en Crystal Report rptProductos
Ilustracin 60: Diseo de Reporte de Productos c. Cdigo Fuente en el Formulario FrmRptProductos Public Class FrmRptProductos
Private Sub FrmRptProductos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim reporteProductos As New RptProductos reporteProductos.Refresh() crvProductos.ReportSource = reporteProductos
End Sub End Class Ilustracin 61: Cdigo Fuente Formulario Reporte de Productos 80
2.8.17. Formulario Reporte de Proveedores a. Diseo del Formulario Reporte de Proveedores
Ilustracin 62: Formulario de Reporte de Proveedores b. Diseo de Reporte en Crystal Report rptProveedores
Ilustracin 63: Diseo de Reporte de Proveedores c. Cdigo de fuente en el Formulario FrmRptProveedores Public Class FrmRptProveedores
Private Sub FrmRptProveedores_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim reporteProveedor As New rptProveedor reporteProveedor.Refresh() crvProveedor.ReportSource = reporteProveedor End Sub End Class Ilustracin 64: Cdigo Fuente en el Formulario Reporte de Proveedores 81
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.
82
REFERENCIAS BIBLIOGRFICAS [1] Programacin Visual Basic .net CEVALLOS F, Javier Ed. AlgaOmega Grupo Editor, S.A. Mxico. [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 RITISA GRAF, Lima 2006. [5] Desarrollando Aplicaciones .NET Oficina de Publicaciones de FIIS UNI PARA 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
83
ANEXOS 1. FUNCIONAMIENTO DEL SISTEMA 1.1. INGRESO AL SISTEMA
Ilustracin 65: Manejo Formulario Acceso al Sistema 1.2. FORMULARIO PRINCIPAL
Ilustracin 66: Manejo Formulario Principal 84
1.3. Opciones del Men Mantenimiento 1.3.1. Formulario de Mantenimiento de Clientes
Ilustracin 67: Manejo de Formulario Mantenimiento de Clientes 1.3.2. Formulario de Mantenimiento de Productos
Ilustracin 68: Manejo de Formulario de Mantenimiento de Productos 85
1.3.3. Formulario de Mantenimiento de Proveedores
Ilustracin 69: Manejo de Formulario Mantenimiento de Proveedor 1.3.4. Formulario Mantenimiento de Usuarios
Ilustracin 70: Manejo Formulario Mantenimiento de Usuarios 86
1.4. Opciones del Men Consultas 1.4.1. Formulario Consulta de Clientes
Ilustracin 71: Manejo de Consulta de Clientes 1.4.2. Formulario Consulta de Proveedores
Ilustracin 72: Manejo de Consulta de Proveedores 1.4.3. Formulario Consulta de Productos
Ilustracin 73: Manejo de Consulta de Productos 87
1.4.4. Formulario Consulta de Ventas 1.4.4.1. Formulario Bsqueda de Venta por Cliente
Ilustracin 74: Manejo de Consulta de Ventas por Cliente 1.4.4.2. Formulario Consulta de Pedido por Cliente (Venta Realizada)
Ilustracin 75: Manejo de Pedido por Cliente 88
1.5. Opciones del Men Movimientos 1.5.1. Generacin de Pedido (Ventas)
Ilustracin 76: Manejo de Gestin Pedido (Venta) 1.5.1.1. Bsqueda de Clientes (Clic en el Botn Buscar Cliente)
Ilustracin 77: Manejo de Cliente que realiza Pedido 89
1.5.1.2. Bsqueda de Productos (Clic en el Botn Buscar Productos)
Ilustracin 78: Manejo de Seleccin de Productos 1.5.1.3. Generacin del Pedido para un cliente
Ilustracin 79: Gestin del Pedido por Cliente
90
1.6. Opciones del Men Reportes 1.6.1. Reporte de Clientes
Ilustracin 80: Reporte de Clientes 1.6.2. Reporte de Productos
Ilustracin 81: Reporte de Productos 91
1.6.3. Reporte de Proveedores
Ilustracin 82: Reporte de Proveedores 1.6.4. Reporte de Ventas