110
Instituto Tecnológico de Huejutla Dirección General de Educación Superior Tecnológica PROYECTO INTEGRADOR DE BASES DE DATOS DISTRIBUIDAS: “LLANTERA DE LA HUASTECA” BASES DE DATOS DISTRIBUIDAS M.T.I FAUSTINO PERAZA RODRIGUEZ PRESENTA: LILIBETZI YATZEL MENDOZA BAUTISTA ARTURO ENRIQUE CRUZ HERNÁNDEZ DENNIS HERNÁNDEZ HERNÁNDEZ ARACELI FELICIANO HERNÁNDEZ MARICELA GARCÍA SABINO EDGAR RANGEL TORRES CARRERA: Lic. En Informática SEMESTRE: VII GRUPO: “A” 07 de Diciembre del 2012

Proyecto Faustino

Embed Size (px)

Citation preview

Page 1: Proyecto Faustino

Instituto Tecnológico de Huejutla

Dirección General de Educación Superior Tecnológica

PROYECTO INTEGRADOR DE BASES DE DATOS DISTRIBUIDAS: “LLANTERA DE LA HUASTECA”

BASES DE DATOS DISTRIBUIDAS

M.T.I FAUSTINO PERAZA RODRIGUEZ

PRESENTA:LILIBETZI YATZEL MENDOZA BAUTISTAARTURO ENRIQUE CRUZ HERNÁNDEZ

DENNIS HERNÁNDEZ HERNÁNDEZARACELI FELICIANO HERNÁNDEZ

MARICELA GARCÍA SABINOEDGAR RANGEL TORRES

CARRERA: Lic. En Informática

SEMESTRE: VII

GRUPO: “A”

07 de Diciembre del 2012

Page 2: Proyecto Faustino

Secretaría de Educación Pública SEP

ÍNDICE

INTRODUCCIÓN....................................................................................................

i

Objetivo................................................................................................................

ii

Justificacion........................................................................................................ ii

MARCO TEORICO………………………………………………………….............. 3

1.1 Introducción a BDD………………………………………......................... 3

1.2 Características y Ventajas de las BDD..................................................

3

1.3 Clasificación del SGBDD. ...................................................................... 4

1.4 Alternativas de diseño............................................................................. 4

1.5 Fragmentación........................................................................................ 4

Page 3: Proyecto Faustino

1.6 Replicación………………………………………………………................... 5

BASE DE DATOS DISTRIBUIDOS............................................................... 24

2.1 Procesamiento de consultas............................................................... 24

2.2 Descomposición de Consultas Globales.............................................

27

2.3 Localización de Datos...........................................................................

28

2.4 Base de Datos Distribuidos Homogéneas................................................28

2.5 Base de Datos Distribuidos Heterogéneas……………….….…………… 29

2.6 Herramientas de SQL server a utilizar…………………….….……………30

2.7 Configuración remota……………………..……………...………………….30

2.7 Servidores vinculados………………………………………………………. 36

ANALISIS DE DISEÑO DEL SISTEMA……….................................................... 42

3.1 Requisitos del Software……………………………………...……………. 42

3.2 Diseño Centralizado…………….…………………………………………. 42

IMPLEMENTACIÓN DEL SISTEMA……….........................................................

45

Page 4: Proyecto Faustino

4.1 Instalación y configuración de servidores………….……...…..…………. 45

4.2 Configuración del servidor SQL Server 2008……………………………. 56

4.3 Configuración de Base de Datos y Tablas de SQL Server 2008………. 64

4.4 Codificación del sistema cliente en Virtual Basic 2008……………….…. 68

EXPERIMENTACIÓN Y RESULTADOS………...................................................80

BIBLIOGRAFIA………........................................................................................81

Page 5: Proyecto Faustino

INTRODUCCION

a. Objetivo

b. Justificación

Page 6: Proyecto Faustino

MARCO TEORICO.1.1 Introducción a BDD.

Una base de datos, es una entidad en la cual se pueden almacenar datos de

manera estructurada, con la menor redundancia posible.  Es una colección de

datos relacionados. Un dato representa hechos conocidos que pueden registrarse

y que tienen un resultado implícito. Cada base de datos se compone de una o

más tablas que guarda un conjunto de datos. Cada tabla tiene una o más

columnas y filas. Una BD representa algunos aspectos del mundo real, a veces

denominado Universo de Discurso.

BD Distribuidas: varios servidores de BD usados por la misma aplicación.

1.2 Características y Ventajas de las BDD.

Características

Independencia física y lógica de los datos

Redundancia mínima

Acceso concurrente de múltiples usuarios

Integridad de datos

Consultas optimizadas

Seguridad de acceso y auditoria

Respaldo de recuperación

Ventajas

Page 7: Proyecto Faustino

Control sobre la redundancia de datos.

Mejora de la integridad de datos.

Consistencia de datos.

Compartición de datos.

Mantenimiento de estándares.

Mejora en la seguridad.

Mejora en la accesibilidad de datos.

Mejora en la productividad.

Mejora en el mantenimiento.

Aumento de la concurrencia.

Mejora en los servicios de copias de seguridad.

Inconvenientes

Complejidad Costo del equipamiento adicional Vulnerable a los fallos

1.3 Clasificación del SGBDD

1.4 Alternativas de Diseño.1.5Fragmentación

Page 8: Proyecto Faustino

La fragmentación es la descomposición de un conjunto de datos.

Ventajas:

Utilización. Generalmente las aplicaciones trabajan con vistas en vez de

con relaciones completas

Eficiencia. Los datos se almacenan dónde más se utilizan.

Paralelismo. Las transacciones pueden dividirse en subconsultas que

operan con fragmentos.

Seguridad. Los datos no necesarios localmente no se almacenan y se evita

su uso por los usuarios no autorizados

Inconveniente:

Consultas más lentas al tener que buscar datos de diferentes fragmentos

en distintas sedes.

Aumenta la complejidad para garantizar la integridad, consistencia y

recuperabilidad.

Reglas para la fragmentación

Integridad: Si una relación R es descompuesta en fragmentos R1, R2… Rn

cada dato que pueda ser encontrado en R también debe ser encontrado en

una o más relaciones Ri’s.

Reconstrucción : Si una relación R es descompuesta en fragmentos R1,

…,Rn, debe ser posible definir el operador relacional ¶ tal que:

R = ¶ Ri, "Ri Î Fr

El operador ¶ diferirá según el tipo de fragmentación realizada.

Desacoplamiento

• Si R es descompuesta verticalmente, su PK debe estar en todos los

Fragmentos.

• Si R es descompuesta horizontalmente en fragmentos R1, R2,…, Rn y

el dato di está en Rj, no debe haber otro fragmento Rk (k¹j) que lo

contenga.

Page 9: Proyecto Faustino

1.6Replicación

Es el proceso de copiar y mantener objetos de las base de datos, como por

ejemplo relaciones, en múltiples bases de datos que forman un sistema de bases

de datos distribuido.

La replicación de datos permite que ciertos datos de la base de datos sean

almacenados en más de un sitio, y su principal utilidad es que permite aumentar

la disponibilidad de los datos y mejora el funcionamiento de las consultas globales

a la base de datos.

La replicación en SQL Server consiste, en el transporte de datos entre dos o más

instancias de servidores. Para ello SQL Server brinda un conjunto de soluciones

que permite copiar, distribuir y posiblemente modificar datos de toda la

organización.

Componentes del modelo de replicación

El publicador es un servidor que pone los datos a disposición de otros servidores

mediante una publicación para poder replicarlos. Una publicación es un conjunto

de artículos de una base de datos.

Los suscriptores reciben los datos replicados. Una suscripción es una petición

de copia de datos o de objetos de base de datos para replicar, además define qué

publicación se recibirá, dónde y cuándo.

Beneficios de la replicación

Disponibilidad

Fiabilidad

Page 10: Proyecto Faustino

Rendimiento

Reducción de la carga

Procesamiento desconectado

Soporta muchos usuarios

Soporta aplicaciones avanzadas

Aplicaciones de replicación

Soporte para un equipo de ventas remoto.- Requiere la sincronización

periódica de un gran número de pequeños nodos móviles remotos con el

sistema de base de datos corporativo.

Aplicaciones Financieras.- requieren que los datos de múltiples servidores

se sincronicen de manera continua e instantánea.

PASOS PARA REALIZAR LA REPLICACION EN SQL SERVER 2008

1. Para comenzar con la replicacion , lo primero que debemos hacer es dar clic derecho en “publicaciones locales” seleccionamos la opcion “Nueva publicacion…”, esta pasos se realiza en el servidor pincipal. Que en este caso estaremos trabajando cen el servidor de EDGAR-PC.

Page 11: Proyecto Faustino

2. Posteriormente nos mostrara la ventana del Asistente para una nueva

publicación en la que daremos <siguiente.

3. Después tendremos que elegir la base de datos que se va a publicar

>BDLLANTERA1>siguiente.

Page 12: Proyecto Faustino

4. En el tipo de publicación elegiremos el tipo de “publicación de

mezcla”>siguiente.

5. Ya teniendo el Asistente para nueva publicación, seleccionaremos las tablas que se van a publicar< siguiente

Page 13: Proyecto Faustino

6. Agregamos un filtro.

7. Seleccionamos la tabla que se desea filtrar.

Page 14: Proyecto Faustino

8. Se agrega el filtro creado a las tablas de publicadas. Daremos siguiente.

9. Realizamos la configuración de seguridad para el agente de instantáneas.

Page 15: Proyecto Faustino

10.Especificamos el proceso de cómo se ejecutara el Agente de instantáneas, damos clic “en aceptar”.

Page 16: Proyecto Faustino

11.Hacemos clic en siguiente.

12.Ponemos el nombre a la publicación que se va a crear a la cual llamaremos “publicacion_llantera” y por ultimo seleccionaremos “finalizar”.

SUSCRIPCION

Page 17: Proyecto Faustino

1. Una vez concluido con la nueva publicacion en el servidor,se prosigue en realizar la suscripion a dicha publicacion.Para crear la suscripcion nos posicionamos en: replicacion > suscripciones locales > Hacemos clic derecho en y seleccionamos “Nueva publicacion”

2. Posteriormente, nos arrojara el “Asistente para nueva suscripción”, y pulsamos en > siguiente.

3.Aquí nos abre otra nueva ventana en la que buscaremos al publicador, para ello hacemos clic en <Buscar publicador en SQL Server…>

Page 18: Proyecto Faustino

4. Nuevamente tendremos otra ventana en la que nos mandara a conectarnos al servidor al cual pertenece la publicación.

5. Nos vamos a “servidores de redes”, donde en el <Motor de bases de datos> nos mostrara los servidores que se encuentran conectados. Hacemos clic en “Aceptar”.

Page 19: Proyecto Faustino

6. Una vez seleccionado el servidor EDGAR-PC, entramos como en el modo “Autenticación de SQL Server” donde colocamos <sa>como nombre de sesión y <bdd> como contraseña. Y damos clic en conectar.

7. Una vez entrado al publicador, seleccionamos la base de datos y la publicación que se ha generado. Hacemos clic en “siguiente”.

Page 20: Proyecto Faustino

8. Se agrega el suscriptor de SQL Server. Seleccionamos la ubicación del Agente de Mezcla la de < ejecutar todos los agentes en el distribuidor EDGAR-PC> y damos clic en “siguiente”.

9. Posteriormente se crea una base de datos nueva para el suscriptor MARY-PC.

Page 21: Proyecto Faustino

Aquí se observa la nueva ventana en la que en el nombre de la base de datos la llamaremos <BDLLANTERA1_copia> y por ultimo daremos <siguiente>.

10.Ya una vez suscrito a la publicación daremos <siguiente>.

Page 22: Proyecto Faustino

11.Aquí nos mostrara una ventana llamada Seguridad del Agente d mezcla en la que escogeremos el tipo de seguridad

12.Hacemos click en siguiente.

Page 23: Proyecto Faustino

13.Nos muestra otra ventana en la que elegiremos el tipo de programación del agente y seleccionaremos<Ejecutar continuamente<siguiente.

14.Después inicializamos las suscripción en el modo <Inmediatamente< siguiente.

Page 24: Proyecto Faustino

15.Agregamos el tipo de suscripción que en este caso será <cliente<siguiente.

16.Daremos siguiente.

Page 25: Proyecto Faustino

17.Y por último finalizamos.

18.Aquí se observa que la suscripción se ha correctamente.

Page 26: Proyecto Faustino

19.Y notamos que se ha creado en nuestro servidor la suscripción a la publicación de EDGAR-PC llamada <publicacion_llantera>.

20.Y posteriormente vemos que se ha agregado una copia de la base de datos BDLLANTERA1, que fue esta que se utilizó en la publicación.

Page 27: Proyecto Faustino

BASE DE DATOS DISTRIBUIDAS

2.1 Procesamiento de Consultas

El procesamiento de consultas tiene varias etapas a seguir para resolver una

consulta SQL, las características del modelo relacional permiten que cada motor

de base de datos elija su propia representación que, comúnmente, resulta ser el

álgebra relacional. La optimización de consultas es, entonces, una de estas

etapas (que por cierto otros modelos de bases de datos no poseen).

Existen distintos métodos para optimizar consultas relacionales, sin embargo el

enfoque de optimización basada en costos combinado con heurísticas que

permitan reducir el espacio de búsqueda de la solución es el método mayormente

utilizado por los motores de base de datos relaciones de la actualidad, en todo

caso, independiente del método elegido para optimizar la consulta, la salida de

este proceso debe ser un plan de ejecución, el cual comúnmente es representado

en su forma de árbol relacional.

Page 28: Proyecto Faustino

La optimización de consultas en base a costos supone la utilización de una

medida de costo que sea común a lo largo del proceso, esta medida debe

representar el criterio de minimización en la utilización de recursos del sistema, la

medida estándar para bases de datos relacionales es usualmente la cantidad de

E/S (tanto de disco como de la’‘’ memoria intermedia). Este enfoque estima un

costo que estará determinado por formulas predefinidas y por la información del

catálogo inherente a la consulta. Sin embargo el optimizador no siempre escoge

el plan más óptimo, ya que una búsqueda exhaustiva de la estrategia óptima

puede consumir demasiado tiempo de proceso. Se dice entonces que el

optimizador escoge una estrategia “razonablemente eficiente”.

El catálogo de la base de datos guarda información estadística de cada una de las

relaciones como también de los índices de cada una de la relaciones, estas

estadísticas permiten estimar los tamaños de los resultados de varias

operaciones. Esta información es particularmente útil cuando se dispone de

índices para auxiliar el procesamiento de la consulta, sin embargo, la existencia

de estas estructuras influencia de manera significativa en la elección del plan de

ejecución de la consulta.

Una mala administración de la información que contiene el catálogo conducirá

inevitablemente a una desafortunada elección del plan de ejecución. Para ayudar

a solucionar este problema existen varios enfoques que conjunta o

separadamente pueden asistir al optimizador en su elección. Uno de estos

consiste en la actualización automática de las estadísticas que algunos motores

de base de datos incluyen como opción. Otro enfoque es la opción de guardar en

el catálogo planes de ejecución precalculados que además le ahorran al motor el

tiempo de cálculo del plan. Obviamente estos planes son vulnerables a ser

invalidados si se producen cambios lógicos en el esquema de la base de datos o

si hay un cambio en la distribución de los datos a ser recuperados.

Uno de los primeros optimizadores de consultas y el que se conoce como base

para la mayoría de los optimizadores tradicionales es el optimizador de System R.

Page 29: Proyecto Faustino

System R es un optimizador basado en costos pero que utiliza heurísticas para

desplazar selecciones y proyecciones hacia abajo en el árbol de la consulta, la

resolución de joins se realiza mediante el uso de árboles de profundidad por la

izquierda O (n!) lo que permite el uso de evaluaciones encauzadas cuando sea

posible. La estimación de los caminos de acceso para índices secundarios

supone que se necesita un acceso a disco por cada tupla de la relación lo que

supone el peor caso. Es probable que la estimación sea precisa con tamaños de

buffer pequeños, sin embargo con un buffer de mayor tamaño la página que

contiene la tupla podría estar todavía en memoria.

Las contribuciones del optimizador de system R con respecto a otras

investigaciones hechas hasta ese entonces se basan en un mejor

aprovechamiento de las estadísticas del catálogo, la inclusión de la utilización de

CPU en las fórmulas del cálculo de costos y los métodos para determinar ordenes

de join. El concepto de “factor de selección” le permite al optimizador estimar

cuantas tuplas satisfacen los predicados de antemano, el concepto de “interesting

orders” agrega una importancia relativa al orden en que se solicitó la salida, por lo

tanto agrega un nivel de importancia a todos aquellos ordenamientos que

respondan al orden solicitado permitiendo evitar (cuando sea posible) un

reordenamiento del resultado final.

OBJETIVOS DEL PROCESAMIENTO DE CONSULTAS

Los objetivos del procesamiento de consultas son transformar una consulta

escrita en un lenguaje de alto nivel, normalmente SQL, en una estrategia de

ejecución correcta y eficiente expresada en un lenguaje de bajo nivel, por

ejemplo, el álgebra relacional, y ejecutar dicha estrategia para extraer los datos

solicitados.

Page 30: Proyecto Faustino

En los sistemas de bases de datos en red y jerárquicos de primera generación, el

sistema de consulta procedimental de bajo nivel está generalmente incrustado en

un lenguaje de programación de alto nivel tal como COBOL, y es responsabilidad

del programador seleccionar la estrategia de ejecución más apropiada.

FASES DEL PROCESAMIENTO DE CONSULTAS

El procesamiento de consultas puede dividirse en cuatro fases principales:

1. Descomposición.

2. Optimización.

3. Generación de código.

4. Ejecución.

ETAPAS DE LA DESCOMPOSICIÓN DE CONSULTAS

• La descomposición de consultas transforma una consulta d alto nivel en

una consulta de álgebra relacional y comprueba que dicha consulta sea

sintáctica y semánticamente correcta.

• Las etapas típicas de la descomposición de consultas son:

• Análisis

• Normalización.

• Análisis semántico.

• Simplificación.

• Reestructuración de la consulta.

2.2 Descomposición de Consultas Globales

La primera capa descompone una consulta en el cálculo relacional en una

consulta en el álgebra relacional que opera sobre relaciones globales. Consiste de

cuatro partes:

Page 31: Proyecto Faustino

1.-Normalización. Involucra la manipulación de los cuantificadores de la consulta y

de los calificadores de la misma mediante la aplicación de la prioridad de los

operadores lógicos.

2.-Análisis. Se detecta y rechazan consultas semánticamente incorrectas.

3.-Simplificación. Elimina predicados redundantes.

4.-Reestructuración. Mediante reglas de transformación una consulta en el cálculo

relacional se transforma a una en el álgebra relacional. Se sabe que puede existir

más de una transformación. Por tanto, el enfoque seguido usualmente es

empezar con una consulta algebraica y aplicar transformaciones para mejorarla.

Localización de Datos. La entrada a esta capa es una consulta algebraica definida

sobre relaciones distribuidas. El objetivo de esta capa es localizar los datos de la

consulta usando la información sobre la distribución de datos. Esta capa

determina cuales fragmentos están involucrados en la consulta y transforma la

consulta distribuida en una consulta sobre fragmentos.

Optimización Global de Consultas. Dada una consulta algebraica sobre

fragmentos, el objetivo de esta capa es hallar una estrategia de ejecución para la

consulta cercana a la óptima. La estrategia de ejecución para una consulta

distribuida puede ser descrita con los operadores del álgebra relacional y con

primitivas de comunicación para transferir datos entre nodos. Para encontrar una

buena transformación se consideran las características de los fragmentos, tales

como, sus cardinalidades. Un aspecto importante de la optimización de consultas

es el ordenamiento de juntas, dado que algunas permutaciones de juntas dentro

de la consulta pueden conducir a un mejoramiento de varios órdenes de

magnitud. La salida de la capa de optimización global es una consulta algebraica

optimizada con operación de comunicaciones incluidas sobre los fragmentos.

2.3 Localización de Datos.

2.4 Base de Datos Distribuidas Homogéneas

Page 32: Proyecto Faustino

En los sistemas de bases de datos distribuidas homogéneas todos los sitios

emplean idéntico software de gestión de bases de datos, son conscientes de la

existencia de los demás sitios y acuerdan cooperar en el procesamiento de las

solicitudes de los usuarios.

En estos sistemas, los sitios locales renuncian a una parte de su autonomía en

cuanto a su derecho a modificar los esquemas o el software de gestión de bases

de datos. Ese software también debe cooperar con los demás sitios en el

intercambio de la información sobre las transacciones para hacer posible su

procesamiento entre varios sitios.

Las BDs Heterogéneas o Multibase de Datos son aquellas donde Sitios diferentes

utilizan diferentes DBMS, siendo cada uno esencialmente autónomo.

Es posible que algunos sitios no sean conscientes de la existencia de los demás y

quizás proporcionen facilidades limitadas para la cooperación en el procesamiento

de transacciones.

2.5 Base de Datos Distribuidas Heterogéneas

En las bases de datos distribuidas heterogéneas puede que los diferentes sitios

utilicen esquemas y software de gestión de sistemas de bases de datos

diferentes. Puede que algunos sitios no tengan información de la existencia del

resto y que sólo proporcionen facilidades limitadas para la cooperación en el

procesamiento de las transacciones.

Page 33: Proyecto Faustino

La heterogeneidad se debe a que los datos de cada BD son de diferentes tipos o

formatos. El enfoque heterogéneo es más complejo que el enfoque homogéneo y

favorece el enfoque ascendente. Es una tecnología reciente y aún existen pocas

en el mercado.

El tratamiento de la información ubicada en bases de datos distribuidas

heterogéneas exige una capa de software adicional por encima de los sistemas

de bases de datos ya existentes.

Esta capa de software se denomina sistema de bases de datos múltiples.

Puede que los sistemas locales de bases de datos empleen modelos lógicos y

lenguajes de definición y de tratamiento de datos diferentes, y que difieran

en sus mecanismos de control de concurrencia y de administración de las

transacciones.

2.6 Herramientas de SQL server a utilizar.

Transact-SQL

SQL Server 2008 Soporta el Lenguaje Estructurado de Consulta (siglas en inglés,

SQL, Structured Query Language), como toda base de datos, pero agrega sus

propias extensiones. Transact-SQL (T-SQL) es el lenguaje que permite agregar,

modificar, manipular y administrar la data y la base de datos.

SQL Server Management Studio

Page 34: Proyecto Faustino

Es el equivalente al Administrador Corporativo de SQL Server 2000. Es un

administrador gráfico de fácil uso e intuitivo para la administración de la base de

datos SQL Server 2008. En el panel de consulta se programa en T-SQL, pero

también se lo realiza con la utilidad SQLCMD.

Business Intelligence Development Studio (BIDS)

Está basado en componentes de Visual Studio, para crear aplicaciones de

inteligencia de negocios. Usado para crear proyectos de SQL Server Integration

Services, Analysis Services y Reporting Services.

2.7 Configuración Remota.

Las nuevas políticas de Seguridad de Microsoft incorporan restricciones a la hora

de comenzar a usar SQL Server 2008. Los Servicios que antes estaban

habilitados por defecto, ahora no lo están, y es función del Administrador ir

habilitándolos según las necesidades de uso del mismo. 

Una de las cuestiones más importantes es la de Admitir Conexiones Remotas en

nuestro Servidor. A fin de habilitarlas y asegurarnos que se pueden conectar

desde otros ordenadores debemos seguir unos sencillos pasos:

1. Abriremos SQL Server Management Studio, nos situamos encima de la

instancia de nuestro Servidor y pulsamos botón derecho, Propiedades,

seleccionamos Conexiones, nos mostrara la siguiente pantalla:

Page 35: Proyecto Faustino

Ahora marcamos el checkbox: “Permitir conexiones remotas con este servidor” y

pulsamos aceptar.

2. Vamos al Menú de Inicio > Programas > Microsoft SQL Server 2008 >

Herramientas de Configuración > Administrador de Configuración de SQL Server,

aparece la siguiente ventana:

Seleccionamos la Configuración de red de SQL Server y luego Protocolos de

MSSQLSERVER. Como podemos observar, por defecto solo tiene habilitado el

Page 36: Proyecto Faustino

protocolo. Básicamente es el tipo de protocolo que se usa, cuando nos

conectamos a SQL Server desde el mismo Servidor.

Lo que debemos hacer es habilitar los protocolos: “Canalizaciones con nombre” y

“TCP/IP”. Para lo cual, pulsamos con el botón derecho del ratón encima de los

mismos y pulsamos Habilitar. En las dos ocasiones nos mostrara un mensaje

informándonos, que para que la nueva configuración surta efecto abra que

reiniciar el Servicio de SQL Server. Solo de Memoria compartida, el resto está

deshabilitados.

Ahora nos quedará así:

3. Vamos al Menú de Inicio > Ejecutar y escribimos services.msc y le damos

aceptar. De esta forma nos abrirá la Consola de Administración de Servicios. Nos

desplazamos hasta el

Servicio con nombre “SQL

Server (MSSQLSERVER)”,

nos situamos encima y

pulsamos el botón derecho del

Page 37: Proyecto Faustino

ratón, seleccionando; reiniciar. Con esto aplicaremos los cambios efectuados en

el paso anterior.

4. SI estamos utilizando SQL Server con nombre de instancia y sin emplear un

número concreto de puerto TCP/IP, debemos habilitar el servicio SQL Server

Browser, que se encuentra en la misma ventana de Servicios con el nombre de

“SQL Server Browser”. Nos situamos encima y con el botón derecho del ratón

pulsamos en Propiedades, o bien podemos hacer doble click, es lo mismo.

En el Tipo de Inicio, seleccionamos Automático y pulsamos Iniciar para que el

Servicio arranque. Aceptar para cerrar la pantalla.

Page 38: Proyecto Faustino

Este Servicio comporta ciertos riesgos de seguridad que deben ser considerados,

pues existen otras alternativas a utilizar como configurar el Cliente de SQL

Servidor con el Alias del Servidor, o utilizar la conexión incorporando el puerto de

TCP/IP a usar, por defecto en SQL Server es el 1433.

5. Y por último, en caso de tener habilitado el Firewall de Windows, cosa que

deberíamos tener por Seguridad, deberemos configurarlo para que los Servicios

de SQL Server y SQL Browser puedan comunicarse con el exterior. Vamos a

Menú de Inicio, hacemos clic en Ejecutar, escribimos firewall.cpl y pulsamos

Aceptar. Nos muestra esta ventana:

Pulsamos en “Permitir un programa a través del Firewall de Windows” nos

muestra:

Page 39: Proyecto Faustino

Pulsamos en Agregar programa nos muestra la ventana:

Pulsamos en Examinar e introducimos la carpeta donde se encuentra el Servicio

de SQL Server: “C:\Program Files\Microsoft SQL Server\

Page 40: Proyecto Faustino

MSSQL10.MSSQLSERVER\MSSQL\Binn” en la misma seleccionamos el

programa: “sqlservr.exe” y pulsamos Aceptar. Repetimos la operación para añadir

el SQL Server Browser que se encuentra en la carpeta: “C:\Program Files\

Microsoft SQL Server\90\Shared”. Seleccionamos el programa: “sqlbrowser.exe” y

pulsamos Aceptar. Veremos que ambas excepciones nos aparecen en la pantalla

de Configuración del Firewall.

Y con esto ya tenemos configurado nuestro Servidor SQL 2008 para permitir

Conexiones desde cualquier ordenador de nuestra red.

2.8 Servidor Vinculados

Para vincular un servidor SQL con otro servidor SQL desde Sql Server

Management Studio expande el nodo “Objetos de Servidor” en el “Explorador de

Objetos”. Posteriormente, sobre la carpeta “servidores vinculados” haz clic

derecho y selecciona “Nuevo servidor vinculado”.

Posteriormente, se mostrara una pantalla de configuración de opciones. Donde en

el nombre de “Servidor vinculado”, escribiremos el nombre con el que se desea

referir al servidor (un “alias”).

Page 41: Proyecto Faustino

En la opción “Tipo de servidor” elige “otro tipo de servidor”. Como proveedor

elegiremos “SQL Server Native Client 10.0”.

En nombre de producto escribe “sql_server”. En el origen de datos escribe el

nombre de host, en este caso utilizamos la dirección ip del servidor al cual

queremos conectarnos.

Page 42: Proyecto Faustino

Continuando, seleccionamos la página de “seguridad” del menú izquierdo.

Continuando, seleccionamos la página de “seguridad” del menú izquierdo.

Page 43: Proyecto Faustino

En la opción “Asignaciones entre inicios de sesión de servidor local y de servidor

remoto”, haz clic en “Agregar”.

Elije un inicio de sesión local. Aquí puedes elegir “suplantar”, para suplantar al

inicio de sesión remoto o declararlos directamente en las opciones “Usuario

remoto” y “Contraseña remota”.

En la opción Para un inicio de sesión no definido en la lista anterior” elige “se

establecerán usando este contexto de seguridad” y repite el usuario y contraseña

remotos en las cajas de texto “Inicio de sesión remoto” y “Con la contraseña”,

respectivamente.

Elije ahora del menú de la izquierda “opciones de servidor”.

Configura a “TRUE” las opciones “Accesos a Datos”, “RPC”, “Salida RCP” y a

“FALSE” la opción “Usar intercalación remota”.

Hacemos clic en “Aceptar”.

Page 44: Proyecto Faustino

El servidor

vinculado deberá agregarse al listado de “Servidores vinculados”. Selecciónalo, haz clic derecho sobre él y elige del menú contextual “Probar conexión”.

Si todo ha sido configurado correctamente, la conexión será exitosa y ahora podrás acceder a datos del servidor vinculado desde el servidor local.

Page 45: Proyecto Faustino

Nos posicionamos en el servidor vinculado, damos clic derecho y seleccionamos

“Incluir servidor vinculado como > CREATE To > Nueva ventana del editor de

conexión", esto es para realizar una nueva consulta.

Especificando la sintaxis Select *From [servidor]. [Catalogo]. [Esquema]. [Tabla]

Ejemplo: Select *From [MARY-PC]. [ESCUELA]. [dbo]. [ALUMNOS], con esta sintaxis vamos a realizar un consulta donde nos seleccione todos los datos la tabla <ALUMNOS> de la base de datos <ESCUELA>, que corresponde al servidor MARY-PC.

Page 46: Proyecto Faustino

Una vez realizando la consulta al servidor local, hacemos lo mismo con el servidor vinculado para esto hacemos la siguiente consulta:

Select *From [EDGAR-PC]. [ESCUELA]. [dbo]. [ALUMNOS]

UNION

Select *From [MARY-PC]. [ESCUELA]. [dbo]. [ALUMNOS]

Esta consulta una vez ejecutada nos arrojara los datos de ambas tablas de acuerdo a la base de datos con la que se esté trabajando.

Page 47: Proyecto Faustino

ANALSIS DE DISEÑO DEL SISTEMA

3.1 Requisitos del Software

En la creación del sistema de base de datos se utilizó SQL server 2008 para la

creación de del sistema de base de datos, así como el VISUAL Studio 2008 para

el desarrollo de aplicación de nuestro sistema.

3.2Diseño Centralizado3.2.1 Diagramas E-R

Page 48: Proyecto Faustino

3.2.1 Transformación de un esquema Relacional.

Page 49: Proyecto Faustino

3.2.2 Identificación de los nodos de Distribución

El problema de fragmentación se refiere al particionamiento de la información

para distribuir cada parte a los diferentes sitios de la red. El objetivo de la

fragmentación consiste en dividir la relación en un conjunto de relaciones más

pequeñas tal que algunas de las aplicaciones de usuario sólo hagan uso de un

fragmento.

Las BDD pueden ser:

Homogéneas: Todos los sitios tienen el mismo SGBD, son conscientes de

la existencia de los demás sitios y cooperan en el procesamiento de las

solicitudes. Los sitios locales mantienen un mismo esquema y SGBD.

Heterogéneas: Cada sitio puede tener un SGBD distinto así como

esquemas diferentes. Puede que algunos sitios no conozcan a otros.

Puede que solo ofrezcan facilidades limitadas para la cooperación en el

procesamiento de transacciones.

3.2.3 Asignación inicial de Tablas y Nodos3.2.4 Asignación de Fragmentación a los nodos3.2.5 Esquema de replicación

Existen dos modelos de replicación básicos: activo y pasivo. En el modelo activo

el cliente difunde su petición a todas las réplicas o a través de una de las réplicas,

que difundirá su petición antes de intentar servirla; siendo esta segunda opción la

más sencilla de implantar al utilizar grupos cerrados).

Page 50: Proyecto Faustino

Estas réplicas servidoras procesan cada una de ellas la petición de manera local,

sin necesidad de ninguna coordinación, y retornan su resultado al cliente.

En el modelo pasivo el cliente sólo interactúa con una réplica primaria, que es la

única con capacidad para procesar activamente cada petición. Posteriormente,

esta réplica primaria difunde las actualizaciones al resto de réplicas y responde al

cliente. A pesar de que estos dos modelos son los más importantes y más

ampliamente implantados, para obtener un buen rendimiento se llegan a necesitar

soluciones intermedias que precisan un protocolo de replicación más elaborado.

Existen dos modelos básicos: caída no recuperable (fallo de parada) y caída

recuperable. En el primero se asume que cuando un proceso falle, jamás se

recuperará. Esto es equivalente a asumir que cuando una réplica falle, perderá

por completo su estado y, cuando llegue a recuperarse, se presentará ante el

resto como una réplica nueva, necesitando una transferencia completa del estado

de la aplicación. En el segundo modelo, la caída de un proceso no implica la

pérdida completa del estado. Se supone que parte de tal estado se mantiene de

manera persistente. Así, cuando vaya a reincorporarse al grupo, una réplica bajo

este modelo sólo necesita recuperar aquella parte de su estado (y las

actualizaciones) que haya perdido.

IMPLEMENTACION DEL SISTEMA.

4.1 Instalación y configuración de servidores.

Instalación de SQL Server 2008

Microsoft SQL Server es un servidor de base de datos relacional, desarrollada por

Microsoft: Es un producto de software cuya principal función es la de almacenar y

recuperar datos según lo solicitado por otras aplicaciones de software, ya sea

aquellos en el mismo equipo o que funcionan con otro ordenador a través de una

Page 51: Proyecto Faustino

red (incluyendo el Internet). Hay por lo menos una docena de diferentes ediciones

de Microsoft SQL Server destinadas a diferentes públicos y diferentes cargas de

trabajo (que van desde pequeñas aplicaciones que almacenan y recuperan los

datos en el mismo equipo, a millones de usuarios y equipos que el acceso a

enormes cantidades de datos a través de Internet al mismo tiempo).

1. Iniciamos la Instalación.

2. Seleccionamos "Installation" luego hacemos clic en "New installation or add

features to an existing installation" para poder iniciar la instalación. 

Esperamos que cargue las Reglas de instalación.

Page 52: Proyecto Faustino

 

Ingresas un serial de activación o específicas que solo usaras como prueba.

3. Aceptamos los términos de Licencia y activamos él envió de Email para poder enviar los datos de uso y características a Microsoft.

Page 53: Proyecto Faustino

 Esperamos que se instale la configuración de archivos de instalación.

 Instalando todo las reglas de configuración que usara para la instalación.

Page 54: Proyecto Faustino

4.  En Reglas de Configuración.

5. Seleccionamos "SQL Server Features Installation" para que pueda

instalar características de SQL Server.

Características de Selección: < Seleccionamos todo los casilleros< Dejamos la ruta de los directorios por defecto en el Disco C:.

Page 55: Proyecto Faustino

Instalando las Reglas de Configuración.

Instancia de Configuración:< Seleccionamos "Default Instance" para poder usar

por defecto.

Id de Instancia dejamos por defecto "MSSQLSERVER".

La ruta de Directorio dejamos por defecto en el disco C:

Page 56: Proyecto Faustino

Verificara si hay espacio suficiente y requerimientos suficientes para la Instalación.

Configuración de Servidor:<Servicios / Nombre de Cuentao SQL Server Agent / AUTHOTITY\SYSTREMo SQL Server Database Engine / AUTHOTITY\SYSTREM

o SQL Server Analysis Services / AUTHOTITY\SYSTREM

Page 57: Proyecto Faustino

o SQL Server Reporting Services / AUTHOTITY\SYSTREM

En la configuración del Motor de Base de Datos:

Seleccionamos "Mixed Mode (SQL Server authentication and Windows

authentication)" para poder autentificar con una contraseña.

Designamos una Contraseña para nuestra Base de Datos.

Hacemos clic en "Add Corrent User" para poder extraer el Nombre de

Nuestra PC  que por defecto usara como Nombre de Servidor.

Page 58: Proyecto Faustino

Servicio de Configuración de Análisis:

Hacemos clic en "Add Corrent User" para poder extraer el Nombre de Nuestra

PC  que por defecto usara como Nombre de Servidor.

Page 59: Proyecto Faustino

Reportando Servicios de Configuración:

Seleccionamos "Install the native mode default configuration" para poder instalar

a configuración de forma nativa por defecto.

Reportando Errores:

Seleccionamos el casillero para poder enviar a Microsoft algún error que

se produzca en la Base de Datos.

Page 60: Proyecto Faustino

 Esperamos que cargue la Configuración de Instalación de Roles.

 Nos muestra todo el Contenido que está Listo para poder Instalar.

Page 61: Proyecto Faustino

Solo esperamos que se Instale el SQL Server 2008

No hay ningún error y con esto ya hemos completado la Instalación.

Page 62: Proyecto Faustino

Una vez terminado la Instalación abrimos el SQL Server 2008. Ahora nos muestra un cuadro de "Conectar con el Servidor".

Como podemos ya tenemos listo para Usar el SQL Server 2008

Page 63: Proyecto Faustino

4.2 Configuración del servidor SQL Server 2008

Las nuevas políticas de Seguridad de Microsoft incorporan restricciones a la hora

de comenzar a usar SQL Server 2008. Los Servicios que antes estaban

habilitados por defecto, ahora no lo están, y es función del Administrador ir

habilitándolos según las necesidades de uso del mismo. 

Una de las cuestiones más importantes es la de Admitir Conexiones Remotas en

nuestro Servidor. A fin de habilitarlas y asegurarnos que se pueden conectar

desde otros ordenadores debemos seguir unos sencillos pasos:

1. Abriremos SQL Server Management Studio, nos situamos encima de la

instancia de nuestro Servidor y pulsamos botón derecho, Propiedades,

seleccionamos Conexiones, nos mostrara la siguiente pantalla:

Ahora marcamos el checkbox: “Permitir conexiones remotas con este servidor” u

pulsamos aceptar.

Page 64: Proyecto Faustino

2. Vamos al Menú de Inicio > Programas > Microsoft SQL Server 2008 >

Herramientas de Configuración > Administrador de Configuración de SQL Server,

aparece la siguiente ventana:

Seleccionamos la Configuración de red de SQL Server y luego Protocolos de

MSSQLSERVER. Como podemos observar, por defecto solo tiene habilitado el

protocolo de Memoria compartida, el resto están deshabilitados. Básicamente es

el tipo de protocolo que se usa, cuando nos conectamos a SQL Server desde el

mismo Servidor.

Lo que debemos hacer es habilitar los protocolos: “Canalizaciones con nombre” y

“TCP/IP”. Para lo cual, pulsamos con el botón derecho del ratón encima de los

mismos y pulsamos Habilitar. En las dos ocasiones nos mostrara un mensaje

informándonos, que para que la nueva configuración surta efecto abra que

reiniciar el Servicio de SQL Server.

Page 65: Proyecto Faustino

Ahora nos quedará así:

3. Vamos al Menú de Inicio > Ejecutar y escribimos services.msc y le damos

aceptar. De esta forma nos abrirá la Consola de Administración de Servicios. Nos

desplazamos hasta el Servicio con nombre “SQL Server (MSSQLSERVER)”, nos

situamos encima y pulsamos el botón derecho del ratón, seleccionando; reiniciar.

Con esto aplicaremos los cambios efectuados en el paso anterior.

Page 66: Proyecto Faustino

4. SI estamos utilizando SQL Server con nombre de instancia y sin emplear un

número concreto de puerto TCP/IP, debemos habilitar el servicio SQL Server

Browser, que se encuentra en la misma ventana de Servicios con el nombre de

“SQL Server Browser”. Nos situamos encima y con el botón derecho del ratón

pulsamos en Propiedades, o bien podemos hacer doble click, es lo mismo. 

Page 67: Proyecto Faustino

En el Tipo de Inicio, seleccionamos Automático y pulsamos Iniciar para que el

Servicio arranque. Aceptar para cerrar la pantalla.

Este Servicio comporta ciertos riesgos de seguridad que deben ser considerados,

pues existen otras alternativas a utilizar como configurar el Cliente de SQL

Servidor con el Alias del Servidor, o utilizar la conexión incorporando el puerto de

TCP/IP a usar, por defecto en SQL Server es el 1433.

5. Y por último, en caso de tener habilitado el Firewall de Windows, cosa que

deberíamos tener por Seguridad, deberemos configurarlo para que los Servicios

de SQL Server y SQL Browser puedan comunicarse con el exterior. Vamos a

Menú de Inicio, hacemos clic en Ejecutar, escribimos firewall.cpl y pulsamos

Aceptar. Nos muestra esta ventana:

Page 68: Proyecto Faustino

Pulsamos en “Permitir un programa a través del Firewall de Windows” nos

muestra:

Page 69: Proyecto Faustino

Pulsamos en Agregar programa nos muestra la ventana:

Pulsamos en Examinar e introducimos la carpeta donde se encuentra el Servicio

de SQL Server: “C:\Program Files\Microsoft SQL Server\

MSSQL10.MSSQLSERVER\MSSQL\Binn” en la misma seleccionamos el

programa: “sqlservr.exe” y pulsamos Aceptar.

Repetimos la operación para añadir el SQL Server Browser que se encuentra en

la carpeta: “C:\ProgramFiles\Microsoft SQL Server\90\Shared”. Seleccionamos el

Page 70: Proyecto Faustino

programa: “sqlbrowser.exe” y pulsamos Aceptar. Veremos que ambas

excepciones nos aparecen en la pantalla de Configuración del Firewall.

Y con esto ya tenemos configurado nuestro Servidor SQL 2008 para permitir

Conexiones desde cualquier ordenador de nuestra red.

4.3 Configuración de Base de datos y Tablas de SQL Server 2008

Configuración de SQL Server 2008

Una vez terminada la instalación procedemos a configurar SQL Server 2008.

Page 71: Proyecto Faustino

Primero creamos un usuario administrador con inicio de sesión SQL Server. Para

esto en el panel de la izquierda hacemos clic sobre nuestro motor de base SQL

Server y escogemos la opción “Propiedades”

Vamos a la opción Seguridad y elegimos un modo de inicio de sesión Windows y SQL Server.

Page 72: Proyecto Faustino

Luego regresamos al panel de la izquierda y en la carpeta “Inicios de Sesión”

escogemos “Nuevo Inicio de Sesión”.

Colocamos el nombre de usuario y su correspondiente contraseña con la cual iniciaremos sesión.

Page 73: Proyecto Faustino

Debido a que será un usuario Administrador con autenticación SQL Server,

vamos a escoger todas las funciones de servidor para el usuario que estamos

creando. Esto lo hacemos en la pestaña “Funciones de servidor”.

Page 74: Proyecto Faustino

Finalmente en las herramientas de configuración de SQL Server reiniciamos los

servicios para que pueda generar las configuraciones recientemente realizadas.

Inicio ->Todos los programas ->Microsoft SQL Server 2008 R2->Herramientas de

Configuración -> Administrador de Configuración de SQL Server 2008.

Page 75: Proyecto Faustino

4.4 Codificación de sistema cliente en Visual Basic 2008

Public Class Form1

Public BD As New ClassBD

Private Sub Bienvenida_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress Me.Hide() frm_Login.Show() End Sub

Page 76: Proyecto Faustino

End Class

INICIAR SESION

Public Class frm_Login

Private Sub cmdcancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdcancelar.Click End End Sub

Private Sub cmdaceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdaceptar.Click Dim PsE As String

PsE = EncriptarPS(Me.txtpassword.Text)

If Form1.BD.ValidarUs(Me.txtusuario.Text, PsE) = True Then frm_Principal.lblBEUsuario.Text = Me.txtusuario.Text Me.Close() frm_Principal.Show() Else MsgBox("Usuario No Autorizado", MsgBoxStyle.Critical) End If End Sub Private Function EncriptarPS(ByVal Ps As String) As String Dim charPs(9) As Char charPs = Ps.ToCharArray()

Dim i As Integer

Page 77: Proyecto Faustino

For i = 0 To Len(Ps) - 1 charPs(i) = Chr(Asc(charPs(i)) * 2 / 4 + 5) Next

EncriptarPS = charPs

End FunctionEnd Class

Principal

Public Class frm_Principal Private Sub frm_Principal_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing If MsgBox("¿Estas Seguro de Salir del Sistema?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Cerrar Sesión") = MsgBoxResult.Yes Then End Else e.Cancel = True End If End Sub

Private Sub mnuusuarios_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuusuarios.Click

frmUsuarios.MdiParent = Me frmUsuarios.Show()

End Sub

Page 78: Proyecto Faustino

Private Sub mnucerrarsesion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnucerrarsesion.Click If MsgBox("¿Estas Seguro de Cerrar Sesión?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Cerrar Sesión") = MsgBoxResult.Yes Then Me.Hide() frm_Login.Show() End If End Sub

Private Sub mnunormal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnunormal.Click frm_Ventas.MdiParent = Me frm_Ventas.Show() End Sub

Private Sub mnunuevopedido_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) frm_pedprov.MdiParent = Me frm_pedprov.Show() End Sub

Private Sub mnucredito_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) frm_ventacred.MdiParent = Me frm_ventacred.Show() End Sub

Private Sub mnuagregprov_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuagregprov.Click frm_proveedor.MdiParent = Me frm_proveedor.Show() End Sub

Private Sub mnusalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnusalir.Click If MsgBox("¿Estas Seguro de Salir del Sistema?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Cerrar Sesión") = MsgBoxResult.Yes Then End Else

End If End Sub

Private Sub AbonoCuentaCreditoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AbonoCuentaCreditoToolStripMenuItem.Click frm_pagos.MdiParent = Me

Page 79: Proyecto Faustino

frm_pagos.Show() End SubEnd Class

VENTAS

Public Class frm_Ventas Dim pagos As Integer = 1 Dim abono As Integer Private Sub frm_Ventas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Form1.BD.CargarCombo(Me.cmbCliente, "nombre_cliente", "cvcliente", "tblCliente") Form1.BD.CargarCombo(Me.cmbproducto, "nombre", "cvprod", "tblproducto")

End Sub

Private Sub mnuquitar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuquitar.Click If Me.lsvproductos.SelectedIndices.Count > 0 Then Me.lsvproductos.Items.RemoveAt(Me.lsvproductos.SelectedIndices(0)) CalcularTotal() End If End Sub

Page 80: Proyecto Faustino

Sub CalcularTotal() Dim c As Integer Dim Suma As Double

For c = 0 To Me.lsvproductos.Items.Count - 1 Suma = Suma + Val(Me.lsvproductos.Items(c).SubItems(4).Text) Next

Me.txttotal.Text = Suma End Sub

Private Sub btnagregar_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnagregar.Click With Me.lsvproductos Dim PrecioV As Double PrecioV = Form1.BD.RegresaPrecioProducto(Val(Me.cmbproducto.SelectedValue)) .Items.Add(Me.cmbproducto.SelectedValue) .Items(.Items.Count - 1).SubItems.Add(Me.cmbproducto.Text) .Items(.Items.Count - 1).SubItems.Add(PrecioV) .Items(.Items.Count - 1).SubItems.Add(Me.txtcantidad.Text) .Items(.Items.Count - 1).SubItems.Add(PrecioV * Val(Me.txtcantidad.Text)) CalcularTotal() End With End Sub

Private Sub btnlimpiarform_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnlimpiarform.Click lsvproductos.Items.Clear() txttotal.Text = "" txtcantidad.Text = "" End Sub

Private Sub btnvender_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnvender.Click If CheckBox1.Checked = True Then abono = Val(Me.txttotal.Text) / pagos Else abono = Val(Me.txttotal.Text) End If

If CheckBox1.Checked = True And Me.cmbtipopago.Text = "" Then MsgBox("Seleccione un modo de pago", MsgBoxStyle.Exclamation, "Mensaje") Else

Page 81: Proyecto Faustino

Form1.BD.Vender(Val(Me.txttotal.Text), Val(Me.cmbCliente.SelectedValue), Me.lsvproductos, Me.cmbCliente.Text, pagos, abono, Me.cmbtipopago.Text.ToString) lsvproductos.Items.Clear() txtcantidad.Text = "" txttotal.Text = "" End If End Sub

Private Sub cmdsalir_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdsalir.Click Me.Close() End Sub

Private Sub MENSAJE(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged pagos = InputBox("Numero de Pagos", "Pagos")

End SubEnd Class

Public Class frm_ventacred Dim pagos As Integer = 1 Dim abono As Integer Private Sub btnagregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnagregar.Click Form1.BD.CargarCombo(Me.cmbCliente, "nombre_cliente", "cvpago", "tblCliente") Form1.BD.CargarCombo(Me.cmbproducto, "nombre", "cvprod", "tblproducto") End Sub

Page 82: Proyecto Faustino

Private Sub btnvender_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnvender.Click 'Form1.BD.Vender(Val(Me.txttotal.Text), Val(Me.cmbCliente.SelectedValue), Me.lsvproductos, Me.cmbCliente.Text, pagos, abono) End Sub

Private Sub frm_ventacred_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End SubEnd Class

Public Class frm_proveedor

Private Sub cmdnuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdnuevo.Click 'With Me txtcvproveedor.Text = " " txtnombre.Text = " " txtdireccion.Text = " " txttelefono.Text = " " txtemail.Text = " " txtcelular.Text = " "

txtcvproveedor.Focus() 'End With

Page 83: Proyecto Faustino

End Sub Private Function EncriptarPS(ByVal Ps As String) As String Dim charPs(9) As Char charPs = Ps.ToCharArray()

Dim i As Integer

For i = 0 To Len(Ps) - 1 charPs(i) = Chr(Asc(charPs(i)) * 2 / 4 + 5) Next

EncriptarPS = charPs

End Function Private Sub cmdbuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdbuscar.Click Form1.BD.BuscarUsuario(Me.txtcvproveedor.Text) End Sub

Private Sub cmdsalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdsalirprov.Click Me.Close() End SubEnd Class

Page 84: Proyecto Faustino

Public Class frm_pedprov

Private Sub cmdlimpiarform_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdlimpiarform.Click txtcvventa.Text = " " End Sub

Private Sub cmdaceptarventa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdaceptarventa.Click

End SubEnd Class

Public Class frm_pagos Dim valores(4) As String Dim carga As Integer = 0 Dim multa As Integer = 20 Dim fechapago As String

Page 85: Proyecto Faustino

Private Sub frm_pagos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load, cmbCliente.SelectionChangeCommitted Dim fecha As Date Dim aux, sumadias, dias, meses, años, diav, mesv, añov, diaa, mesa, añoa, totaldias As Integer Dim tipodepago, month, day, fechaactual As String Dim a As Date Dim pagoactual As Integer

fecha = Format(Now, "dd/MM/yyyy") If carga = 0 Then carga = 1 Form1.BD.CargarCombo(Me.cmbCliente, "nombre_cliente", "cvcliente", "tblCliente") End If valores = Form1.BD.consultaabono(Val(Me.cmbCliente.SelectedValue)) tipodepago = valores(2) pagoactual = valores(1) a = valores(3)

If tipodepago = "Quincenal" Then sumadias = 15 ElseIf tipodepago = "Semanal" Then sumadias = 7 ElseIf tipodepago = "Mensual" Then sumadias = 30 End If

diaa = Format(fecha, "dd") mesa = Format(fecha, "MM") añoa = Format(fecha, "yyyy") diav = Format(a, "dd") mesv = Format(a, "MM") añov = Format(a, "yyyy") totaldias = 1 dias = diav + (pagoactual * sumadias) If dias > 30 Then aux = dias / 30 dias = dias Mod 30 meses = mesv + aux If meses > 12 Then aux = meses / 12 meses = meses Mod 12 años = añov + aux Else

Page 86: Proyecto Faustino

años = añov End If Else meses = mesv años = añov End If

If diaa < 10 Then day = "0" + Trim(diaa) Else day = diaa End If If mesa < 10 Then month = "0" + Trim(mesa) Else month = mesa End If

fechaactual = Trim(añoa) + Trim(month) + Trim(day)

If dias < 10 Then day = "0" + Trim(dias) Else day = dias End If If meses < 10 Then month = "0" + Trim(meses) Else month = meses End If fechapago = Trim(años) + Trim(month) + Trim(day)

MsgBox(fechaactual, MsgBoxStyle.Exclamation, "Fecha Actual") MsgBox(fechapago, MsgBoxStyle.Exclamation, "Fecha Pago") Me.txtabono.Text = Val(valores(0)) If (Val(fechaactual) > Val(fechapago)) Then MsgBox("Se Ha Agregado una cantidad extra al pago", MsgBoxStyle.Information, "Multa") Me.txtabono.Text = Val(valores(0)) + multa End If fechapago = Trim(day) + "/" + Trim(month) + "/" + Trim(años) End Sub

Private Sub cmdabonar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdabonar.Click

Page 87: Proyecto Faustino

Form1.BD.Abonar(Val(Me.cmbCliente.SelectedValue), Val(Me.txtabono.Text.ToString), fechapago, Val(multa))

End SubEnd Class

Page 88: Proyecto Faustino

EXPERIMENTACION Y RESULTADOS