View
111
Download
2
Category
Preview:
Citation preview
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
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
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
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
INTRODUCCION
a. Objetivo
b. Justificación
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
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
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.
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
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.
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.
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
6. Agregamos un filtro.
7. Seleccionamos la tabla que se desea filtrar.
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.
10.Especificamos el proceso de cómo se ejecutara el Agente de instantáneas, damos clic “en aceptar”.
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
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…>
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”.
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”.
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.
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>.
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.
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.
15.Agregamos el tipo de suscripción que en este caso será <cliente<siguiente.
16.Daremos siguiente.
17.Y por último finalizamos.
18.Aquí se observa que la suscripción se ha correctamente.
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.
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.
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.
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.
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:
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
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.
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
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:
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
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
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.
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:
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:\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”).
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.
Continuando, seleccionamos la página de “seguridad” del menú izquierdo.
Continuando, seleccionamos la página de “seguridad” del menú izquierdo.
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”.
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.
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.
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.
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
3.2.1 Transformación de un esquema Relacional.
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).
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
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.
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.
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.
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:.
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:
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
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.
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.
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.
Esperamos que cargue la Configuración de Instalación de Roles.
Nos muestra todo el Contenido que está Listo para poder Instalar.
Solo esperamos que se Instale el SQL Server 2008
No hay ningún error y con esto ya hemos completado la Instalación.
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
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.
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.
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.
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.
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:
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
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.
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.
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.
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”.
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.
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
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
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
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
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
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
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
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
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
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
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
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
Form1.BD.Abonar(Val(Me.cmbCliente.SelectedValue), Val(Me.txtabono.Text.ToString), fechapago, Val(multa))
End SubEnd Class
EXPERIMENTACION Y RESULTADOS
BIBLIOGRAFIA
http://www.blogdemegastar.com/2010/09/pasos-para-configurar-sql-server-2008.html
Sqlserver2008-110221144507-phpapp01.pptx
http://www.slideshare.net/brobelo/sql-server-2008-7002668
Cuestrep21rplj-1216999332785487-9.ppt
http://social.msdn.microsoft.com/Forums/es/sqlserveres/thread/7746df11-e418-4177-a29d-b048931bb59d
Recommended