diseño e implementación de un sistema de control de rutas de transporte

296
PONTIFICIA UNIVERSIDAD CATÓLICA DEL ECUADOR SEDE SANTO DOMINGO ESCUELA DE SISTEMAS Disertación de Grado previa la obtención del título de Ingenieros de Sistemas y Computación DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA DE CONTROL DE RUTAS DE TRANSPORTE DE MERCADERÍA PARA LA CASA DEL TOLDO® UTILIZANDO SISTEMAS DE POSICIONAMIENTO GEOGRÁFICO Aguilar Rodríguez Benjamín Rolando Jumbo López María Belén DIRECTOR: Milton Temístocles Andrade Salazar, Ms. SANTO DOMINGO ECUADOR 2014

Category:

Documents


12 download

DESCRIPTION

Disertación de Grado – ESIS – Nº 2 – 2013 – PUCE SD

TRANSCRIPT

Page 1: Diseño e implementación de un sistema de control de rutas de transporte

i

PONTIFICIA UNIVERSIDAD CATÓLICA DEL ECUADOR

SEDE SANTO DOMINGO

ESCUELA DE SISTEMAS

Disertación de Grado previa la obtención del título de

Ingenieros de Sistemas y Computación

DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA DE CONTROL DE RUTAS

DE TRANSPORTE DE MERCADERÍA PARA LA CASA DEL TOLDO®

UTILIZANDO SISTEMAS DE POSICIONAMIENTO GEOGRÁFICO

Aguilar Rodríguez Benjamín Rolando

Jumbo López María Belén

DIRECTOR: Milton Temístocles Andrade Salazar, Ms.

SANTO DOMINGO – ECUADOR

2014

Page 2: Diseño e implementación de un sistema de control de rutas de transporte

ii

PONTIFICIA UNIVERSIDAD CATÓLICA DEL ECUADOR

SEDE SANTO DOMINGO

APROBACIÓN DE LA DISERTACIÓN DE GRADO

DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA DE CONTROL DE RUTAS DE

TRANSPORTE DE MERCADERÍA PARA LA CASA DEL TOLDO® UTILIZANDO

SISTEMAS DE POSICIONAMIENTO GEOGRÁFICO

AUTORES:

BENJAMÍN ROLANDO AGUILAR RODRÍGUEZ

MARÍA BELÉN JUMBO LÓPEZ

TRIBUNAL

MS. MILTON TEMÍSTOCLES ANDRADE SALAZAR _________________________

ING. FAUSTO ERNESTO OROZCO IGUASNIA _________________________

ING. MARGATETH VIVIANA HURTADO QUIROZ _________________________

Santo Domingo, julio de 2014

Page 3: Diseño e implementación de un sistema de control de rutas de transporte

iii

DEDICATORIA

Dedicamos el logro de este proyecto a todos aquellos quienes nos brindaron su amistad,

apoyo y confianza incondicional, en los momentos buenos y difíciles que conllevó

realizarlo

Page 4: Diseño e implementación de un sistema de control de rutas de transporte

iv

AGRADECIMIENTOS

Agradecemos infinitamente a nuestros profesores, por sus enseñanzas, principalmente al

Ms. Andrade Milton por todo el conocimiento, tiempo y apoyo que nos ha dedicado, a

nuestros padres por los esfuerzos y paciencia que nos han tenido en el transcurso de

este tiempo, a La Casa del Toldo® por brindar todas las facilidades necesarias para el

buen desarrollo e implementación del trabajo desarrollado.

Page 5: Diseño e implementación de un sistema de control de rutas de transporte

v

RESUMEN

El presente proyecto tiene como finalidad la elaboración de un sistema informático para

controlar las rutas de transporte de mercadería de La Casa del Toldo®, con la utilización

de sistemas de posicionamiento global (GPS), que permitan realizar un seguimiento de

las unidades móviles en carreteras, determinar posiciones para asegurar una mejor

orientación; tareas importantes y necesarias en este tipo de establecimientos que prestan

servicios de transporte, pues contribuye a un monitoreo más eficiente de sus recursos.

Por medio de este mecanismo, podremos controlar y localizar las unidades de transporte

de mercadería, los horarios de salida y llegada a cada destino, la entrega satisfactoria de

la mercadería, así como también aumentar los niveles de seguridad, optimizar los

tiempos y costos del transporte, brindando ventajas competitivas.

Esto permitirá una mejor administración de la información y rutas de los clientes que

solicitan el servicio, optimizando este proceso desde su origen hasta su destino.

Page 6: Diseño e implementación de un sistema de control de rutas de transporte

vi

ABSTRACT

The purpose of this project is to create a computer system that controls merchandize

transportation routes from La Casa del Toldo with the use of global positioning systems

(GPS). The GPS allows monitoring of mobile units in roads and determines various

positions to ensure a better orientation. These are important and necessary tasks to

commercial establishments that provide transport services. Systems such as the GPS

provide more efficient monitoring of corporate resources.

Through this mechanism, we can control and track the location of the merchandise

transportation units, the departure and arrival schedules at each destination, the

successful delivery of the merchandize, as well as increasing levels of security, while also

optimizing time and costs. This kind of efficiency offers providing competitive advantages.

Ultimately, these tools will for better management of information and routes for our

customers and improves the quality of our transportation.

Page 7: Diseño e implementación de un sistema de control de rutas de transporte

vii

ÍNDICE DE CONTENIDOS

PORTADA i

APROBACIÓN DE LA DISERTACIÓN DE GRADO ii

DEDICATORIA iii

AGRADECIMIENTOS iv

RESUMEN v

ABSTRACT vi

INTRODUCCIÓN 12

CAPÍTULO I 14

1. MARCO TEÓRICO 14

1.1. SISTEMA DE POSICIONAMIENTO GLOBAL (GPS) 14

1.1.1. Segmentos y componentes del sistema GPS 15

1.1.1.1 Segmento Espacial 15

1.1.1.2 Segmento de control 17

1.1.1.3 Segmento del usuario 18

1.1.2. Trilateración 18

1.1.3. GPS Diferencial 19

1.1.4. Tipos de receptores GPS 20

1.2. SISTEMAS DE INFORMACIÓN GEOGRÁFICA 20

1.2.1. Funcionamiento 22

1.2.2. SIG y GPS 22

1.2.3. Obtención de datos de atributo SIG con equipos GPS 24

1.2.4. Comparación de equipos GPS 25

1.3. GEOMARKETING 27

1.4. PARADIGMAS DE PROGRAMACIÓN 29

1.4.1. Programación Orientada a Objetos (POO) 29

1.5. MICROSOFT .NET 31

1.5.1. Versiones de Microsoft .NET 32

1.5.2. Arquitectura de .NET Framework 33

1.5.3. Visual Studio Express Edition 35

1.5.4. Comparación de lenguajes de programación 35

Page 8: Diseño e implementación de un sistema de control de rutas de transporte

viii

1.6. MySQL 37

1.6.1. Portabilidad 37

1.6.2. Sentencias y funciones 38

1.6.3. Seguridad 38

1.6.4. Escalabilidad y límites 39

1.6.5. Conectividad 39

1.6.6. Localización 39

1.6.7. Clientes y herramientas 39

1.6.8. Estructura cliente – servidor 40

1.6.9. Comparación de sistemas de gestión de bases de datos 40

1.7. COMANDOS AT 42

1.7.1. Formato de mensajes 42

CAPÍTULO II 44

2. METODOLOGÍA 44

2.1. INVESTIGACIÓN BÁSICA 44

2.2. INVESTIGACIÓN DE CAMPO 44

2.2.1. Observación 44

2.2.2. Encuestas 44

2.2.3. Entrevistas 45

2.3. INVESTIGACIÓN APLICADA 45

2.4. ENTREVISTA REALIZADA AL PATROCINADOR 46

2.5. ENCUESTA, TABULACIÓN Y ANÁLISIS 53

2.6. MODELO DE DESARROLLO DE SOFTWARE 58

2.6.1. Análisis 58

2.6.2. Especificación 59

2.6.3. Arquitectura 59

2.6.4. Programación 59

2.6.5. Pruebas 59

2.6.6. Documentación 59

2.6.7. Mantenimiento 60

CAPÍTULO III 61

3. PROPUESTA 61

CONCLUSIONES 66

Page 9: Diseño e implementación de un sistema de control de rutas de transporte

ix

RECOMENDACIONES 67

BIBLIOGRAFÍA 68

GLOSARIO 70

ANEXOS 77

Page 10: Diseño e implementación de un sistema de control de rutas de transporte

x

ÍNDICE DE ILUSTRACIONES

Figura 1. Satélites que conforman la constelación NAVSTAR 16

Figura 2. Distribución de la infraestructura del segmento de control 17

Figura 3. GPS Diferencial 19

Figura 4. SIG. Puente, Resistencia y Corrientes. 21

Figura 5. Aplicaciones que dan uso de GPS enlazadas con GIS 23

Figura 6. Información estadística sobre mapas cartográficos 27

Figura 7. Clase automóvil, según POO 29

Figura 8. Ejemplo de Herencia 30

Figura 9. Plataforma de ejecución intermedia 32

Figura 10. Arquitectura de .NET Framework 34

Figura 11. Estructura Cliente - Servidor 40

Figura 12. Fórmula de Muestreo Probabilístico Aleatorio 45

Figura 13. Gráfico estadístico Pregunta 1. Encuesta Clientes 53

Figura 14. Gráfico estadístico Pregunta 2. Encuesta Clientes 54

Figura 15. Gráfico estadístico Pregunta 3. Encuesta Clientes 55

Figura 16. Gráfico estadístico Pregunta 4. Encuesta Clientes 56

Figura 17. Gráfico estadístico Pregunta 5. Encuesta Clientes 57

Figura 18. Modelo de Desarrollo de Software en Cascada 58

Figura 19. Formulario “Registro de Transportistas” 62

Figura 20. Formulario “Registro de Vehículos” 63

Figura 21. Formulario “Registro de Clientes” 63

Figura 22. Formulario “Registro de Rutas” 64

Figura 23. Formulario “Rastreo de Rutas” 64

Figura 24. Formulario “Registro de Recibos de Mercadería” 65

Page 11: Diseño e implementación de un sistema de control de rutas de transporte

xi

ÍNDICE DE TABLAS

Tabla 1. Tabla comparativa de equipos GPS 26

Tabla 2. Versiones Microsoft Framework 33

Tabla 3. Tabla comparativa de Lenguajes de Programación 36

Tabla 4. Tabla comparativa de Sistemas de Gestión de Bases de Datos 41

Tabla 5. Tabulación Pregunta 1. Encuesta a Clientes 53

Tabla 6. Tabulación Pregunta 2. Encuesta a Clientes 54

Tabla 7. Tabulación Pregunta 3. Encuesta a Clientes 55

Tabla 8. Tabulación Pregunta 4. Encuesta a Clientes 56

Tabla 9. Tabulación Pregunta 5. Encuesta a Clientes 57

Page 12: Diseño e implementación de un sistema de control de rutas de transporte

12

INTRODUCCIÓN

Actualmente, las grandes empresas buscan mejorar sus canales de distribución. Además,

monitorean y priorizan los puntos estratégicos con el fin de mejorar las ganancias. Saber

cómo llegar a un cliente o identificar con exactitud si la distribución de un producto llegó a

tiempo, es más fácil con la aplicación del Sistema de Posicionamiento Global (GPS, por

sus siglas en inglés), un mecanismo tecnológico que cobra cada vez más fuerza en el

país, que permite analizar la situación de un negocio mediante la localización exacta de

los clientes, puntos de venta, sucursales y competencia.

Existen más de mil millones de dispositivos que utilizan el sistema GPS, incluyendo no

sólo los dispositivos de conducción asistida para automóviles, sino también aplicaciones

agrícolas, navieras, aéreas, sistemas de control de flotas, explotaciones mineras, robots

antibombas, cajeros automáticos, incluso la bolsa de Wall Street con su extrema

exactitud, toma los valores de los relojes atómicos del sistema GPS para fechar las

transacciones.

A causa de la inseguridad, suelen suscitarse pérdidas de mercadería por diversos

agentes exógenos al establecimiento como robos, tráfico vehicular, negligencia, errores

en el diseño de rutas, para lo cual se necesita disponer de información actualizada y

accesible para el personal administrativo, pudiendo de esta manera, verificar cada

movimiento realizado para un manejo más eficiente de los datos y equipo de transporte.

De hecho, la utilización de sistemas de posicionamiento geográfico, para la localización

de vehículos pasó de ser un servicio de lujo a una necesidad que busca combatir el robo

de automotores. Por tal motivo es necesario diseñar e implementar un sistema

administrativo utilizando sistemas de posicionamiento geográfico, que permita controlar

las rutas de transporte de mercadería y ayude a solucionar estos problemas, para así

fortalecer la imagen corporativa de la empresa, ganar credibilidad, tiempo y dinero.

Diseñando un control de rutas y con la utilización de sistemas de posicionamiento global,

se pueden ubicar y controlar más eficientemente las unidades de transporte, mediante un

registro de cada una de las actividades con sus debidos tiempos, se elimina el uso

indebido de los vehículos que ocasiona pérdidas de mercadería, lo cual beneficia

indirectamente al personal de supervisión, proporcionando mayor tiempo disponible en su

Page 13: Diseño e implementación de un sistema de control de rutas de transporte

13

jornada laboral para poder destinarlo a nuevas tareas, y mejorar significativamente su

desempeño.

Actualmente, en locales comerciales como La Casa del Toldo®, se necesita la

implementación de tecnologías de la información prevalecientes en el mercado, que

promuevan un control íntegro y eficiente en sus activos, con el fin de estar al nivel de

otras empresas internacionales que utilizan el geomarketing para la optimización de la

inversión.

De esta manera, se dará un valor agregado a todos los clientes de las casas comerciales,

que buscan ampliar su cobertura, ventas; y por consiguiente, aumentar sus ingresos.

Page 14: Diseño e implementación de un sistema de control de rutas de transporte

14

CAPÍTULO I

MARCO TEÓRICO

DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA DE CONTROL DE RUTAS

DE TRANSPORTE DE MERCADERÍA PARA LA CASA DEL TOLDO®

UTILIZANDO SISTEMAS DE POSICIONAMIENTO GEOGRÁFICO

Desde tiempos remotos las personas se han preocupado por orientarse correctamente

durante sus incursiones por tierra o mar para llegar a su destino sin extraviarse y regresar

al punto de partida. Probablemente el método más antiguo y primitivo que utilizaron fue el

de colocar piedras en el camino o hacer marcas en los árboles, de forma tal que les

permitieran regresar después sobre sus pasos.

GPS son las siglas para referirse a Global Positioning System o Sistema de

Posicionamiento Global, originalmente llamado NAVSTAR GPS. Es un Sistema Global de

Navegación por Satélite (GNSS) que permite conocer las coordenadas del lugar donde

nos encontramos en todo momento y con gran precisión, gracias a las medidas

realizadas por una red de satélites destinadas a tal fin y, por lo tanto, determinar en todo

el mundo la posición de un objeto, un vehículo, una nave, una persona o un ser vivo, con

una precisión en centímetros.

Todos estos sistemas de posicionamiento global y su información proporcionada, se

encuentran fielmente administrados por aplicaciones realizadas en diferentes lenguajes

de programación, siendo uno de ellos Visual .NET Express Edition y almacenados en

gestores de bases de datos como MySQL, que brindan gran consistencia para los datos

almacenados.

1.1. SISTEMA DE POSICIONAMIENTO GLOBAL (GPS)

Constituye una de las formas más utilizadas para capturar información geográfica e

incorporarla a un Sistema de Información Geográfica (GIS). Este sistema permite calcular

las coordenadas de cualquier punto de la superficie terrestre a partir de la recepción de

señales emitidas desde una constelación de satélites en órbita.

Page 15: Diseño e implementación de un sistema de control de rutas de transporte

15

“Básicamente, su principal funcionalidad es que permite al usuario conocer, mediante un

receptor, su posición en cualquier parte del planeta. Los diferentes métodos e

instrumentos existentes condicionan la precisión de las mediciones realizadas, existiendo

un amplio abanico de posibilidades en cuanto a resolución”.1

1.1.1. Segmentos y componentes del sistema GPS

El fundamento del GPS consiste en la recepción de entre cuatro y ocho señales de radio

de otros tantos satélites de los cuales se conoce de forma muy exacta su posición orbital

con respecto a la tierra y el tiempo que han tardado las señales en recorrer el camino

entre el satélite y el receptor.

La distancia individual a un satélite es determinada en función del tiempo que tarda en

viajar la señal desde el satélite al receptor y su velocidad de propagación. La posición del

satélite es conocida por el usuario gracias al hardware empleado.

Conociendo la localización de los satélites, la velocidad de propagación de sus señales y

el tiempo empleado en recorrer el camino hasta el usuario, por trilateración o

triangulación se puede establecer la posición y las coordenadas del punto requerido, en

términos absolutos del receptor.

El sistema GPS consta de tres conjuntos de componentes denominados segmentos:

1.1.1.1 Segmento Espacial

El Segmento Espacial está constituido por los satélites que soportan el sistema y emiten

las señales de radio. Estos satélites conforman la llamada constelación NAVSTAR

(Navigation Satellite Timing and Ranging), constituida por veinticuatro satélites más

cuatro de reserva, distribuidos en seis órbitas y mantenidos por la fuerza aérea

estadounidense. El origen de este sistema es militar y su financiamiento corre a cargo del

gobierno de los Estados Unidos.

El único sistema de posicionamiento global totalmente operativo actualmente es el

norteamericano, con varias generaciones de satélites ya en órbita y en funcionamiento, y

1Huerta, E.; Mangiaterra, A. y Noguera G. GPS Posicionamiento Satelital, páginas 1-2

Page 16: Diseño e implementación de un sistema de control de rutas de transporte

16

con una nueva generación de aparatos en fase de desarrollo que prometen mejorar

notablemente las prestaciones y servicios.

“Los 24 satélites y sus 4 de reserva de la constelación NAVSTAR, circundan la tierra en

órbitas a una altura alrededor de los 20.200 km de la superficie (puede ser algo más o

algo menos, dependiendo del satélite) y distribuidos de tal manera que en cada punto de

la superficie terrestre se tiene posibilidad de leer la señal de al menos cuatro satélites.

Esto es muy importante, porque se necesitan al menos cuatro satélites para conocer la

posición del observador, y que éstos se dispongan con un ángulo de elevación sobre el

horizonte superior a 15°; no obstante, casi siempre son más de cuatro los satélites

visibles”. 2

Los satélites envían señales muy complejas en la región de radio del espectro

electromagnético, formadas por varios componentes que se estructuran sobre una señal

principal con frecuencia de 10'23 MHz. A partir de esta señal principal, se producen los

dos elementos principales de la señal: las portadoras (carriers). Estas portadoras se

emiten en la banda L del espectro (definida por un rango que va de los 390 MHz a los

1.550 MHz). La banda L del espectro es la que presenta mejor transparencia atmosférica,

lo cual es muy importante para la precisión del sistema.

Las dos frecuencias portadoras (carriers) son denominadas L1 (1.575‟42 MHz) y L2

(1.227‟60 MHz). El empleo de dos frecuencias distintas se debe a que la atmósfera

2Huerta, E.; Mangiaterra, A. y Noguera G. GPS Posicionamiento Satelital, páginas 1-4

Figura 1. Satélites que conforman la constelación NAVSTAR

Page 17: Diseño e implementación de un sistema de control de rutas de transporte

17

proporciona un cierto retardo en la propagación de las ondas, siendo este retardo en

función de la frecuencia. Al utilizar dos frecuencias distintas se puede conocer ese

retardo y corregir los errores generados por el mismo.

1.1.1.2 Segmento de control

El segmento de control son todas las infraestructuras en tierra necesarias para el control

y monitoreo homogéneo de toda la constelación de satélites. Dichas infraestructuras

tienen coordenadas terrestres de muy alta precisión y consisten en cinco grupos de

instalaciones repartidas por todo el planeta que son: Hawai, Colorado Springs, Isla de

Ascensión en el Atlántico Sur, Diego García en el Índico y Kwajalein en el Pacífico Norte.

Estas infraestructuras terrestres realizan un seguimiento continuo de los satélites,

acumulando y actualizando los datos necesarios para el cálculo preciso de sus órbitas,

las cuales son muy predecibles, dado que no existe fricción atmosférica en el entorno

donde se mueven los satélites; a las predicciones de las órbitas de los satélites se les

conoce con el nombre de Almanaques.

Las órbitas anteriormente mencionadas, también tienen una degradación debido a un

conjunto de factores, que afectan la precisión del sistema GPS: desigual densidad de la

gravedad terrestre, mareas gravitatorias provocadas por el alineamiento de la luna y los

planetas, viento solar. Por ello, aquellas estaciones del segmento de control que están

Figura 2. Distribución de la infraestructura del segmento de control

Page 18: Diseño e implementación de un sistema de control de rutas de transporte

18

dotadas de antenas de referencia tienen también la función de subir a los satélites las

correcciones de órbita para sus sistemas de navegación.

“Dichas correcciones son transmitidas en la banda S, y una vez recibidas por cada

satélite son incorporadas a los mensajes de navegación que el satélite emite para ser

captados por el receptor del usuario. A estas órbitas recalculadas con los datos de

corrección (suministrados por las estaciones de tierra) y su información de tiempo se les

denomina efemérides. El usuario no experimentado no ve por ninguna parte rastro de las

efemérides, pero hasta el navegador más sencillo las está utilizando en el momento en

que estamos midiendo”.3

1.1.1.3 Segmento del usuario

El segmento del usuario está integrado por el hardware (equipos de recepción,

procesadores, antenas), y el software que se utiliza para registrar, captar, procesar las

señales emitidas por los satélites, y el cálculo de su posición, velocidad y tiempo. Es

quizá la parte que más nos interesa, puesto que del tipo de instrumental y métodos

utilizados depende la precisión alcanzada.

"El tipo de receptores va unido íntimamente al tipo de método elegido para la medición, y

a su vez a la naturaleza de la aplicación que queramos realizar. Así, carece de sentido

utilizar un receptor avanzado de doble frecuencia si no es en combinación con un método

relativo, pues de no ser así estaríamos utilizando un equipo que puede valer en torno a

24.000 Euros para conseguir la misma precisión que un lector de 300 Euros. Por ello,

equipos, métodos y aplicaciones son indisolubles para el especialista”.4

1.1.2. Trilateración

Método matemático para determinar las posiciones relativas de objetos usando la

geometría de triángulos de forma similar a la triangulación. La diferencia es que en lugar

de usar medidas de ángulo, con al menos una distancia conocida para calcular la

ubicación del sujeto, utiliza las localizaciones conocidas de dos o más puntos de

referencia, y la distancia medida entre el sujeto y cada punto de referencia.

3Huerta, E.; Mangiaterra, A. y Noguera G. GPS Posicionamiento Satelital, páginas 1-8

4Huerta, E.; Mangiaterra, A. y Noguera G. GPS Posicionamiento Satelital, páginas 1-9

Page 19: Diseño e implementación de un sistema de control de rutas de transporte

19

Figura 3. GPS Diferencial

Para establecer de forma única y precisa la localización relativa de un punto en un plano

bidimensional, se necesitan, al menos tres puntos de referencia. Todo este proceso

permite al dispositivo GPS determinar la localización, velocidad y dirección del objeto a

ubicar.

1.1.3. GPS Diferencial

El GPS Diferencial introduce una mayor exactitud en el sistema. Ese tipo de receptor,

además de recibir y procesar la información de los satélites, recibe y procesa,

simultáneamente, otra información adicional procedente de una estación terrestre situada

en un lugar cercano y reconocido por el receptor.

Esta información complementaria permite corregir las inexactitudes que se puedan

introducir en las señales que el receptor recibe de los satélites. En este caso, la estación

terrestre transmite al receptor GPS los ajustes que son necesarios realizar en todo

momento, éste los contrasta con su propia información y realiza las correcciones

mostrando en su pantalla los datos correctos con una gran exactitud.

El margen de error de un receptor GPS normal puede estar entre los 60 y los 100 metros

de diferencia con la posición que muestra en su pantalla. Para un desplazamiento normal

por tierra 100 metros de diferencia no debe ocasionar ningún problema, pero para realizar

la maniobra de aterrizaje de un avión, sobre todo si las condiciones de visibilidad son

bajas, puede llegar a convertirse en un desastre. Sin embargo, el GPS Diferencial reduce

el margen de error a menos de un metro de diferencia con la posición indicada.

Page 20: Diseño e implementación de un sistema de control de rutas de transporte

20

Existen también receptores GPS mucho más sofisticados que funcionan recibiendo

múltiples señales de radiofrecuencia. En esos dispositivos el margen de error no

sobrepasa los 25 centímetros.

1.1.4. Tipos de receptores GPS

Los receptores GPS detectan, decodifican y procesan las señales que reciben de los

satélites para determinar el punto donde se encuentran situados y son de dos tipos:

portátiles y fijos.

- Los portátiles pueden ser tan pequeños como algunos teléfonos celulares o móviles.

- Los fijos son los que se instalan en automóviles o coches, embarcaciones, aviones,

trenes, submarinos o cualquier otro tipo de vehículo.

1.2. SISTEMAS DE INFORMACIÓN GEOGRÁFICA

Un Sistema de Información Geográfica (SIG o GIS, por su acrónimo inglés Geographic

Information System) es una integración organizada de hardware, software y datos

geográficos diseñada para capturar, almacenar, manipular, analizar y desplegar en todas

sus formas la información geográficamente referenciada con el fin de resolver problemas

complejos de planificación y gestión.

Los SIG constituyen un campo sumamente amplio y complejo. Forman parte del ámbito

más extenso de los Sistemas de Información. Surgen en el contexto general de la

"sociedad de la información", en la que resulta esencial la disponibilidad rápida de

información, para resolver problemas y contestar preguntas de modo inmediato.

Los Sistemas de Información computarizados son programas diseñados para

representar, almacenar y tratar grandes volúmenes de datos sobre ciertos aspectos del

mundo real. Estos sistemas se orientan frecuentemente a facilitar información para la

toma de decisiones; se trata de un conjunto de procesos informáticos que permiten

producir, a partir de datos no tratados, información útil en las decisiones futuras.

Page 21: Diseño e implementación de un sistema de control de rutas de transporte

21

Figura 4. SIG. Puente, Resistencia y Corrientes.

Un SIG es un "Sistema de Información diseñado para trabajar con datos

georreferenciados mediante coordenadas especiales o geográficas", es decir, con

información geográfica.

Los SIG se configuran como una de las mayores aplicaciones informáticas jamás

desarrolladas y que abarcan desde la cartografía de alta calidad hasta la ordenación

territorial, pasando por la gestión de los recursos naturales, cartografía temática,

investigación ecológica o demográfica, obtención del camino más corto para rutas de

emergencia, etc.

En general se tiende a identificar a los SIG con el software diseñado para trabajar con los

datos georreferenciados. Pero un SIG no es sólo un conjunto de programas informáticos

instalados en los equipos adecuados, para que funcionen como un sistema de

geoprocesamiento, además del software y hardware, es necesario contar con el personal

especializado, las aplicaciones y los datos. Aquí, en relación con los datos, es donde se

hace necesaria la presencia de los GPS.

Page 22: Diseño e implementación de un sistema de control de rutas de transporte

22

1.2.1. Funcionamiento

El SIG funciona como una base de datos con información geográfica (datos

alfanuméricos) que se encuentra asociada por un identificador común a los objetos

gráficos de un mapa digital. De esta forma, señalando un objeto se conocen sus atributos

e, inversamente, preguntando por un registro de la base de datos se puede saber su

localización en la cartografía.

La razón fundamental para utilizar un SIG es la gestión de información espacial. El

sistema permite separar la información en diferentes capas temáticas y las almacena

independientemente, permitiendo trabajar con ellas de manera rápida y sencilla, y

facilitando al profesional la posibilidad de relacionar la información existente a través de la

topología de los objetos, con el fin de generar otra nueva que no podríamos obtener de

otra forma.

1.2.2. SIG y GPS

Hasta ahora los SIG conseguían sus datos de mapas y fotos aéreas. Estos eran o bien

escaneados por algunos medios automáticos o bien, más frecuentemente, digitalizados.

La digitalización consiste en una tabla digitalizadora, que no es más que un tablero de

dibujo electrónico, donde un operador traza líneas o puntos por medio del digitalizador

sobre las características de un mapa.

Se podría considerar que un sistema GPS basado en una porción de terreno y una

digitalización son análogos: la superficie de la Tierra sería la tabla digitalizadora, y la

antena y el receptor del GPS que recorren una carretera, por ejemplo, sería el

digitalizador que recorre una línea sobre el mapa.

Pero la generación de datos con GPS tiene lugar grabando la posición sobre la entidad

más fundamental disponible: la misma Tierra, mucho mejor que un mapa o una fotografía

de una parte de la Tierra que se crea a partir de procesos que quizás incluyen una serie

de transformaciones. Por tanto se pueden definir los GPS como una digitalización directa

sobre la superficie terrestre.

Page 23: Diseño e implementación de un sistema de control de rutas de transporte

23

Los GPS aseguran, por tanto, una alta precisión al trabajar con fuentes de datos directas.

A ello se suma la precisión que poseen en sí mismos: pueden alcanzar en medidas

horizontales errores incluso menores a un centímetro. En este aspecto los GPS superan

a todos los demás métodos.

Pero existen otros motivos para preferir el uso de GPS. La disponibilidad es uno de ellos.

En 1995, el Departamento de Defensa de Estados Unidos (DoD) se comprometió al

mantenimiento de NAVSTAR para uso civil a un nivel especificado por la ley, al menos en

tiempos de paz. Esto permite que los receptores GPS puedan localizarse en cualquier

lugar de la Tierra, pero aun así las señales GPS para aplicaciones civiles están en parte

protegidas por el DoD, que las degrada de forma intencionada por medio de una técnica

llamada "Selective Availability" (SA).

Para muchas aplicaciones la precisión alcanzada de esta forma no es suficiente. En este

caso se recurre al GPS Diferencial (DGPS), que permite anular el efecto SA.

Los GPS poseen una gran facilidad de uso. Cualquier persona que pueda leer

coordenadas y encontrar la correspondiente posición en el mapa puede usar un receptor

GPS. Para recoger datos con una precisión suficientemente buena como para introducir

en un SIG son necesarios unos procedimientos un poco más complejos, pero no mucho

más que muchas operaciones de un SIG.

Figura 5. Aplicaciones que dan uso de GPS enlazadas con GIS

Page 24: Diseño e implementación de un sistema de control de rutas de transporte

24

Además los datos GPS son tridimensionales de forma intrínseca. Aparte de proporcionar

latitud y longitud (u otra información "horizontal"), un receptor GPS también proporciona

información sobre la altitud. La precisión de la tercera dimensión de los datos GPS,

normalmente, no es tan grande como la precisión horizontal.

Y como no, la principal razón del uso de GPS es el incremento de la productividad y el

ahorro de dinero, que surge como consecuencia de todas las consideraciones anteriores.

1.2.3. Obtención de datos de atributo SIG con equipos GPS

Un SIG es una base de datos con atributos sobre características geográficas, por lo que

es razonable recoger los datos de atributo al mismo tiempo que son recogidos los datos

espaciales. Algunos receptores GPS permiten este tipo de recogida de datos.

Probablemente es la forma más eficiente y precisa de usar un GPS para desarrollar una

base de datos: recoger los datos espaciales y los datos de atributo a la vez.

Las bases de datos relacionales -RDB- (que son las que mantienen atributos sobre

características de las bases de datos geográficas -GDB-), suelen ser de naturaleza

textual, pero pueden consistir en imágenes y sonidos. Por ejemplo, puede introducirse

una dirección y mostrarse una fotografía del edificio o casa que hay allí.

La combinación de GDB y RDB permite al usuario realizar consultas textuales y

conseguir respuestas gráficas, por ejemplo, señalar con una marca o con otro color las

gasolineras instaladas en una ciudad a partir de una fecha; o de forma inversa, hacer una

consulta gráfica y conseguir una respuesta textual, por ejemplo, indicar el número de un

tipo de establecimiento, así como sus nombres, superficies, ventas.

La entrada de información de atributos a un SIG a través de un receptor GPS debe

hacerse por medio de un "diccionario de datos", que no es más que una colección

jerárquica de términos textuales grabados en la memoria de un receptor GPS. Estos

términos se clasifican en tres categorías:

- Tema: se refiere a la materia de una clase. Si consideramos un ejemplo sobre red de

carreteras, el tema podría ser el volumen de tráfico.

Page 25: Diseño e implementación de un sistema de control de rutas de transporte

25

- Atributo: hace referencia a las columnas de la tabla de la base de datos. Continuando

con el ejemplo de la red de carreteras, un atributo podría ser accidentes en el mes de

mayo, cada mes podría constituir un atributo distinto.

- Valor: constituye las entradas actuales en la tabla. En nuestro ejemplo, el número de

accidentes.

1.2.4. Comparación de equipos GPS

Para la realización del presente proyecto se realizó una exhaustiva búsqueda y

comparación de equipos GPS que cuenten con las principales características requeridas.

Entre las diferentes marcas tenemos Garmin, Zacktronics, Nüvi y Trimble que poseen los

modelos mayormente vendidos en el mercado.

Los requerimientos a tomarse en cuenta para una correcta elección fueron,

principalmente la duración de la batería, no se requiere tener pantallas para seguir rutas

establecidas puesto que solamente se requiere controlar la ubicación del vehículo en

tiempos determinados y no es necesaria la carga de mapas de diferentes ciudades

puesto que la cobertura de entrega no sobrepasa el perímetro de la ciudad. Además

también se necesita un equipo que sea portable, resistente y de fácil manejo para los

usuarios.

Realizando una comparación minuciosa, entre diferentes modelos, se destacó los

detallados en la Tabla 1 y se procedió a la elección de un rastreador personal de la marca

Zacktronics, ya que nos brinda una larga durabilidad de la batería, cumple con los

requerimientos antes mencionados y además nos permite una conexión GSM y GPS.

Page 26: Diseño e implementación de un sistema de control de rutas de transporte

26

Equipo GPS

Características

Garmin

Forerunner

405CX

Zacktronics

Rastreador

Personal

Nüvi

3790T

Trimble

Geo XT

Dimensiones

(Ancho/Alto/Profun.)

4,8 x 7,1 x

1,6 cm

7,2 x 4,1 x 3,2

cm

12,2 x 7,5 x

0,89 cm

9,9 x21,5x

7,7 cm

Resolución de

pantalla

124 x 95

píxeles n/a 9,7 x 5,7 cm 6,3 x 8,5 cm

Peso en Gramos 60 g 78 g 113,4 g 172 g

Batería Ión-litio

recargable

3,7 V 800

mAh Li-ion

Ión-litio

recargable Litio-ion

Duración de la

batería

2 semanas

en ahorro de

energía;

8 horas en

entrenamient

o

40 horas en

máximo uso

Hasta 4 horas

en máximo

uso

21 horas en

máximo uso

Permite establecer

mapas base No No Sí Sí

Permite agregar/

cargar varios mapas No No Sí Sí

Agrega puntos

referenciales, en

transcursos de

tiempo

Permite el control de

rutas en tiempo real Sí Sí Sí Sí

Pantalla táctil n/a n/a Sí No

Cambio de ruta

automático n/a n/a Sí No

Tabla 1. Tabla comparativa de equipos GPS

Page 27: Diseño e implementación de un sistema de control de rutas de transporte

27

1.3. GEOMARKETING

Es una herramienta que combina variables de marketing con variables geográficas en

áreas concretas, a fin de apoyar la toma de decisiones de negocio, engloba también otros

elementos y ciencias como la estadística, cartografía e informática. Los modelos de

análisis utilizados en Geomarketing se basan en la correlación que existe entre el lugar

de residencia del consumidor, sus costumbres de consumo y comportamiento comercial.

Proporciona una asignación de recursos más precisa y eficaz, con mayores retornos de

inversión, aumentando la capacidad de estudio. Es indispensable para aquellas

empresas que dispongan sus recursos humanos (redes comerciales), puntos de venta e

infraestructura en un área geográfica determinada.

El Geomarketing utiliza herramientas estadísticas y cartográficas para poder expresar

mejor las características geográficas y demográficas de determinadas ciudades o zonas,

la principal información que podemos obtener de estas herramientas son: medio

ambiente, nivel socio económico, balanza comercial, consumo energético,

telecomunicaciones, idiomas, religiones y transporte, solo por mencionar algunos.

Este tipo de información muchas veces es proporcionado gratuitamente por los gobiernos

y es recabada con la ayuda de censos de población, tecnología de punta como GPS e

imágenes satelitales.

Figura 6. Información estadística sobre mapas cartográficos

Page 28: Diseño e implementación de un sistema de control de rutas de transporte

28

Las herramientas del Geomarketing últimamente se han utilizado en áreas muy

importantes como la publicidad y un claro ejemplo es el caso de Google Earth, un

buscador de negocios y lugares de interés que permite viajar por todo el mundo

combinando fotografías satelitales, mapas, imágenes en 3D y gran cantidad de

información sobre cada lugar.

La publicidad necesita del Geomarketing para poder ser eficaz, y no cometer errores que

más adelante se lamentarán, las diferentes sociedades muy probablemente buscan los

mismos valores o beneficios de la función primaria de un determinado artículo, pero

existen otras características psicológicas del producto que pueden ser muy diferentes.

Levi‟s tomó este consejo y creó anuncios adecuados a las características culturales de

los países que representaron el mayor reto para la compañía, uno de ellos fue Brasil, el

cual está influenciado por la moda europea y por lo tanto incluyeron imágenes de París,

en el caso de Inglaterra se resaltó que la marca es un producto legendario y en Estados

Unidos se incluyeron a celebridades estadounidenses.

Otro ejemplo de la aplicación en la publicidad es la renta de espacios en los anuncios

espectaculares o vallas publicitarias, utilizados ampliamente por la industria automotriz, el

cine o para promover cualquier tipo de evento sin olvidar las campañas políticas, con el

diseño, creatividad y mensajes adecuados para proporcionar un impacto visual fuerte. La

mayoría de las empresas con este servicio ofrecen al cliente información estadística,

geográfica y conductual sobre las zonas en donde se encuentran los espectaculares.

La distribución comercial ha sido una de las bases para que una empresa local pueda

crecer hasta convertirse en una empresa nacional. La inversión necesaria en la cadena

de suministros y en el sistema de producción debe estar regida por el mejoramiento

continuo y la innovación, para que los costos de expansión no sean muy altos y los

beneficios se mantengan a largo plazo.

La correcta colocación de un producto en áreas de interés es crucial para poder crear una

asociación positiva entre la marca y el lugar. El estudio y la utilización del Geomarketing

como una disciplina es muy reciente y poco demandada, lo cual representa una

oportunidad para que las empresas puedan identificar opciones de crecimiento donde

antes no las veían con estrategias de distribución normal, además evitarían errores que

conllevan a pérdidas de dinero y tiempo.

Page 29: Diseño e implementación de un sistema de control de rutas de transporte

29

1.4. PARADIGMAS DE PROGRAMACIÓN

Representan un enfoque particular o filosofía para la construcción de un software. Un

paradigma de programación provee y determina la visión y métodos de un programador

en la construcción de un programa o subprograma. Su uso se popularizó a principios de

la década de 1990.

Un paradigma de programación es una colección de patrones conceptuales que moldean

la forma de razonar ante los problemas, de formular soluciones y estructurar programas.

1.4.1. Programación Orientada a Objetos (POO)

Define los programas en términos de "clases de objetos". Programar bajo este paradigma

consiste en simular o modelar los objetos del mundo real. Un objeto está compuesto por:

- Estados: Propiedades o datos del objeto. Están representados por variables con

valores únicos para cada objeto, que son llamadas variables de instancia.

- Métodos: Representaciones de los procedimientos o comportamientos que el objeto

es capaz de hacer.

- Identidad: Propiedad del objeto que lo diferencia del resto.

La programación orientada a objetos expresa un programa como un conjunto de objetos,

que colaboran entre ellos para realizar tareas. Permite el desarrollo modular de un

software, porque cada componente es independiente de los demás, lo que hace posible

que estos componentes sean reutilizados, logrando que los programas y módulos sean

más fáciles de escribir, mantener y reutilizar.

Figura 7. Clase automóvil, según POO

Page 30: Diseño e implementación de un sistema de control de rutas de transporte

30

Propiedades de la programación orientada a objetos:

- Encapsulamiento: Significa reunir a todos los elementos que puedan considerarse

pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite

aumentar la cohesión de los componentes del sistema.

- Principio de ocultación: Significa que el código o los datos de un objeto pueden

estar ocultos para cualquier unidad externa a él. Protege las propiedades de un

objeto, asegurando que no pueden cambiar su estado de manera inesperada,

eliminando efectos no deseados.

- Herencia: Propiedad de crear nuevos objetos a partir de la definición de otros.

- Polimorfismo: Permite a un método aceptar o retornar valores de más de un tipo.

- Abstracción: Denota las características esenciales de un objeto, donde se capturan

sus comportamientos. Cada objeto sirve como modelo de un "agente" abstracto que

puede realizar trabajo, informar, cambiar su estado y comunicarse con otros objetos

sin revelar cómo se implementan estas características. Los procesos, funciones o

métodos también pueden ser abstraídos,

- Recolección de basura (Garbage Collection): Mediante esta técnica se destruyen

automáticamente, y por lo tanto se liberan de memoria, los objetos que hayan

quedado sin ninguna referencia a ellos, sin necesidad de realizarlo manualmente.

Figura 8. Ejemplo de Herencia

Page 31: Diseño e implementación de un sistema de control de rutas de transporte

31

Entre sus principales ventajas:

- Fomenta la reutilización y extensión del código.

- Permite crear sistemas más complejos.

- Posibilita relacionar el sistema con el mundo real.

- Facilita la creación de programas visuales.

- Agiliza el desarrollo de software.

- Simplifica el mantenimiento del software.

- Los programas orientados a objetos son más sencillos de leer y comprender.

- La facilidad de añadir, suprimir o modificar nuevos objetos nos permite hacer

modificaciones de una forma muy sencilla.

- Al dividir el problema en partes más pequeñas podemos probar el código de manera

independiente y aislar más fácilmente los posibles errores que puedan surgir.

Desventajas:

- En un principio, mayor cantidad de código (aunque a la larga no, por la reutilización).

- El proceso de diseño en la programación avanzada requiere un mayor esfuerzo, ya

que el hecho de buscar tanta generalidad (clases completas), exige indudablemente

un trabajo adicional.

1.5. MICROSOFT .NET

Microsoft .NET es una plataforma de desarrollo y ejecución de aplicaciones. Esto quiere

decir que no sólo nos brinda todas las herramientas y servicios que se necesitan para

desarrollar modernas aplicaciones empresariales y de misión crítica, sino que también

nos provee de mecanismos robustos, seguros y eficientes para asegurar que la ejecución

de las mismas sea óptima. Los componentes principales de la plataforma .NET son:

- Un entorno de ejecución de aplicaciones, también llamado “Runtime”, que es un

componente de software cuya función es la de ejecutar las aplicaciones .NET e

interactuar con el sistema operativo ofreciendo sus servicios y recursos.

- Un conjunto de bibliotecas de funcionalidades y controles reutilizables, con una

enorme cantidad de componentes ya programados listos para ser consumidos por

otras aplicaciones.

Page 32: Diseño e implementación de un sistema de control de rutas de transporte

32

- Un conjunto de lenguajes de programación de alto nivel, junto con sus

compiladores y linkers, que permitirán el desarrollo de aplicaciones sobre la plataforma

.NET.

- Un conjunto de utilitarios y herramientas de desarrollo para simplificar las tareas

más comunes del proceso de desarrollo de aplicaciones

.NET no es un Lenguaje de Programación, si bien la plataforma Microsoft .NET incluye

lenguajes de programación de aplicaciones, entornos de desarrollo integrados (IDEs); es

una plataforma que engloba distintas aplicaciones, servicios y conceptos y que en

conjunto, permiten el desarrollo y la ejecución de aplicaciones.

.NET es una plataforma de ejecución intermedia, ya que las aplicaciones .NET no son

ejecutadas directamente por el sistema operativo, como ocurre en el modelo tradicional

de desarrollo. En su lugar, las aplicaciones .NET están diseñadas para ser ejecutadas

contra un componente de software llamado Entorno de Ejecución (Runtime o Máquina

Virtual). Este componente es el encargado de manejar el ciclo de vida de cualquier

aplicación .NET, iniciándola, deteniéndola, interactuando con el sistema operativo y

provee de servicios y recursos en tiempo de ejecución.

1.5.1. Versiones de Microsoft .NET

Actualmente hay varias versiones de la plataforma Microsoft .NET:

Figura 9. Plataforma de ejecución intermedia

Page 33: Diseño e implementación de un sistema de control de rutas de transporte

33

Versión Número de

Versión

Fecha de

Lanzamiento Visual Studio

Sistema

Operativo

1.0 1.0.3705.0 2002-02-13 Visual Studio .NET

Windows XP Tablet

and Media Center

Editions

1.1. 1.1.4322.573 2003-04-24 Visual Studio .NET

2003

Windows XP,

Windows Server

2003 o anteriores

2.0 2.0.50727.42 2005-11-07 Visual Studio 2005 Windows Server

2003 R2

3.0 3.0.4506.30 2006-11-06 Visual Studio 2005

Windows Vista,

Windows Server

2008

3.5 3.5.21022.8 2007-11-19 Visual Studio 2008

Windows 7,

Windows Server

2008 R2

4.0 4.0.30319.1 2010-04-12 Visual Studio 2010

Windows 7,

Windows 8,

Windows Server

2008, Windows

Server 2012

4.5 4.5.50709.17 2012-08-15 Visual Studio 2012

Windows 8,

Windows Server

2008

4..5.1 4.5.50938.18 2013-10-17 Visual Studio 2013

Windows 7,

Windows 8,

Windows Mobile

Tabla 2. Versiones Microsoft Framework

1.5.2. Arquitectura de .NET Framework

En la Figura 9, se pueden apreciar las distintas partes que componen al .NET

Framework, incluidas el entorno de ejecución de aplicaciones (CLR, de color verde), el

conjunto de bibliotecas de funcionalidad reutilizable (.NET Framework Class Library, color

azul) y los compiladores y Herramientas de Desarrollo para los Lenguajes .NET (color

Page 34: Diseño e implementación de un sistema de control de rutas de transporte

34

rojo). Todos estos componentes se montan por encima de la familia de sistemas

operativos Windows.

Dentro del conjunto de la .NET Framework Class Library se distinguen 4 sub-

componentes principales:

- La Base Class Library (BCL - Biblioteca de Clases Base), que contiene la

funcionalidad más comúnmente utilizada para el desarrollo de todo tipo de

aplicaciones. Algunos ejemplos de la funcionalidad provista por la BCL son el manejo

de colecciones, cadenas de texto, entrada/salida, threading, operaciones matemáticas

y dibujos 2D.

- ADO.NET, que contiene un conjunto de clases que permiten interactuar con bases de

datos relacionales y documentos XML como repositorios de información persistente.

- ASP.NET, que constituye la tecnología dentro del .NET Framework para construir

aplicaciones con interfaz de usuario Web, es decir, aplicaciones cuya lógica se

encuentra centralizada en uno o varios servidores y que los clientes pueden acceder

usando un browser o navegador mediante una serie de protocolos y estándares como

HTTP y HTML.

- Windows Forms o WinForms, que constituye la tecnología dentro del .NET

Framewok que permite crear aplicaciones con interfaz de usuario basada en

Figura 10. Arquitectura de .NET Framework

Page 35: Diseño e implementación de un sistema de control de rutas de transporte

35

formularios y ventanas Windows de rica funcionalidad y que se ejecutan directamente

en los clientes.

1.5.3. Visual Studio Express Edition

Visual Basic Express proporciona una superficie de diseño visual muy eficaz para crear

rápida y fácilmente aplicaciones interactivas para Windows.

Visual Studio 2008 nació para ayudar a los desarrolladores en equipos de cualquier

tamaño a aumentar la colaboración y reducir la complejidad del desarrollo. Con cada

versión posterior, Microsoft ha reafirmado su compromiso con la mejora de la eficacia del

desarrollador creando un diálogo con la comunidad para ayudar a incorporar los

comentarios y mejorar el producto. Visual Studio 2008 no es una excepción, retoma ese

compromiso de lograr que cada proyecto de software sea satisfactorio en la plataforma

de Microsoft.

Visual Basic (Visual Studio) contiene un entorno de desarrollo integrado o IDE que

incluye un editor de textos para edición del código, un depurador, un compilador (y

enlazador) y un constructor de interfaz gráfica o GUI.

Proporciona un lenguaje de alto nivel, cuya programación se asemeja a nuestro lenguaje

cotidiano, haciéndolo mucho más sencillo y comprensible, además permite usar con

suma facilidad la plataforma de los sistemas Windows, dado que tiene acceso

prácticamente total a la API de Windows, incluidas librerías actuales. Su código es

migrable a otros lenguajes, proporcionando herramientas eficaces para administrar un

proyecto, mantener el código fuente y encontrar errores.

1.5.4. Comparación de lenguajes de programación

Para la correcta realización de la presente aplicación, se debió seleccionar un lenguaje

de programación bajo ciertos requerimientos, entre ellos, ser de código abierto y

funcionar sobre plataformas Windows ya que los equipos del patrocinador poseen

licencias de este sistema operativo.

Se consideraron varios lenguajes, detallados en la Tabla 2 como Java, PHP y Visual

Basic .NET, eligiendo este último como el más apropiado ya que su codificación es de

Page 36: Diseño e implementación de un sistema de control de rutas de transporte

36

alto nivel, muy parecido al lenguaje cotidiano, de código libre y sobre todo, trabaja sobre

la plataforma Windows pero es muy independiente en su funcionalidad, creando mayor

confianza al momento de utilizarlo, además de brindar facilidades para la migración de

código fuente a otros lenguajes de programación, por poseer un Lenguaje Común de

Ejecución o CLR.

Plataforma

Característica

Java Visual Basic .NET php

Año de aparición 1995 1998 1995

Extensiones

comunes .java, .class, .jar .exe .php

Paradigma Orientado a objetos,

imperativo

Orientado a

objetos

Multiparadigma:

imperativo,

orientado a objetos,

procedural, reflexivo

Diseñado por Sun Microsystems

(Oracle Corporation)

Microsoft

Corporation Rasmus Lerdorf

Influido por Objective-C, C++,

Smalltalk, Eiffel C, C++

C, C++, Perl, Java,

Python

Sistema

Operativo Multiplataforma Windows Multiplataforma

Licencia GNU GPL / Java

Community Process Licencia libre Licencia php

Última versión

estable

Java Standard

Edition 7 (1.7.2)

10.0.40219.10 SP1

(Visual Studio

2010)

5.3.9

Lenguaje

Intermedio Bytecode MSIL C++

Tabla 3. Tabla comparativa de Lenguajes de Programación

Page 37: Diseño e implementación de un sistema de control de rutas de transporte

37

1.6. MySQL

Es un sistema de gestión de bases de datos relacionales. El software MySQL®

proporciona un servidor de base de datos SQL (StructuredQueryLanguage) muy rápido,

multi-threaded, multiusuario y robusto. El servidor MySQL está diseñado para entornos

de producción críticos, con alta carga de trabajo así como para integrarse en software

para ser distribuido.

“Poco a poco los elementos de MySQL están siendo incorporados tanto por

desarrolladores internos, como de software libre. Entre sus características se destacan su

disponibilidad en gran cantidad de plataformas y sistemas, facilidad de uso, velocidad al

realizar las operaciones, flexibilidad, seguridad. Adicionalmente brinda administración

relacional de bases de datos, es decir, archiva datos en tablas separadas en vez de

colocar todos los datos en un gran archivo”.5

1.6.1. Portabilidad

El núcleo de MySQL está construido en su totalidad con código C y C++, para de esta

manera ser compatible con la mayoría de los sistemas operativos.

Se ha utilizado GNU Autoconfig, de modo que es posible portar MySQL a todos los

sistemas modernos que tengan un compilador de C++ y una implementación funcional de

subprocesos (threads) POSIX. El soporte de subprocesos es necesario para el servidor.

Para compilar únicamente el código del cliente, no se requiere más que el compilador de

C++. Proporciona sistemas de almacenamiento, transaccionales y no transaccionales.

Relativamente sencillo de añadir otro sistema de almacenamiento. Esto es útil si se

desea añadir una interfaz SQL para una base de datos propia. Un sistema de reserva de

memoria muy rápido basado en threads.

Posee Joins muy rápidos usando un multi-join de paso optimizado, además de tablas

hash en memoria, que son usadas como tablas temporales.

5Luis Miguel Blanco. Programación en Visual Basic.Net, página 32

Page 38: Diseño e implementación de un sistema de control de rutas de transporte

38

Las funciones SQL están implementadas usando una librería altamente optimizada y

deben ser tan rápidas como sea posible. Normalmente no hay reserva de memoria tras

toda la inicialización para consultas.

El servidor está disponible como un programa separado para usarse en un entorno de red

cliente/servidor. También está disponible como biblioteca y puede ser incrustado

(linkeado) en aplicaciones autónomas. Dichas aplicaciones pueden emplearse por sí

mismas o en entornos donde no hay red disponible.

1.6.2. Sentencias y funciones

Se brinda soporte para alias en tablas y columnas como lo requiere el estándar SQL, así

como también un soporte completo para operadores y funciones en las cláusulas de

consulta SELECT y WHERE.

DELETE, INSERT, REPLACE, y UPDATE devuelven el número de filas que han

cambiado o han sido afectadas. Es posible devolver un resultado similar usando un flag al

conectarse con el servidor.

El comando específico de MySQL SHOW puede usarse para obtener información acerca

de la base de datos, el motor de base de datos, tablas e índices. El comando EXPLAIN

puede usarse para determinar cómo el optimizador resuelve una consulta.

Los nombres de funciones no colisionan con los nombres de tabla o columna. Por

ejemplo, ABS es un nombre válido de columna. La única restricción es que para una

llamada a una función, no se permiten espacios entre el nombre de función y el '(' a

continuación.

Puede mezclar tablas de distintas bases de datos en la misma consulta, utilizando el

principio de la programación orientada a objetos.

1.6.3. Seguridad

Un sistema de privilegios y contraseñas que es muy flexible y seguro, y que permite

verificación basada en el host. Las contraseñas son seguras porque todo el tráfico de

contraseñas está cifrado cuando se conecta con un servidor.

Page 39: Diseño e implementación de un sistema de control de rutas de transporte

39

1.6.4. Escalabilidad y límites

Soporte a grandes cantidades de información. Se conocen y utilizan bases de datos que

contienen 50 millones de registros y también a usuarios que usan MySQL con 60.000

tablas y cerca de 5.000.000.000 de registros.

Se permiten hasta 64 índices por tabla. Cada índice puede consistir desde 1 hasta 16

columnas o partes de columnas. El máximo ancho de límite son 1000 bytes. Un índice

puede usar prefijos de una columna para los tipos de columna CHAR, VARCHAR, BLOB,

o TEXT.

1.6.5. Conectividad

Los clientes pueden conectar con el servidor MySQL usando sockets TCP/IP en cualquier

plataforma. En sistemas Unix, los clientes pueden conectarse mediante ficheros socket

Unix.

La interfaz para el conector ODBC (MyODBC) proporciona a MySQL soporte para

programas clientes que usen conexiones ODBC (Open DatabaseConnectivity). Por

ejemplo, puede usar MS Access para conectar al servidor MySQL. Los clientes pueden

ejecutarse en Windows o Unix.

1.6.6. Localización

El servidor puede proporcionar mensajes de error a los clientes en muchos idiomas.

Soporte completo para distintos conjuntos de caracteres, incluyendo latin1 (ISO-8859-1),

german, big5, ujis, y más. Por ejemplo, los caracteres escandinavos 'â', 'ä' y 'ö' están

permitidos en nombres de tablas y columnas. El soporte para Unicode está disponible

1.6.7. Clientes y herramientas

MySQL Server tiene soporte para comandos SQL para chequear, optimizar y reparar

tablas. Estos comandos están disponibles a través de la línea de comandos y el cliente

mysqlcheck.

Page 40: Diseño e implementación de un sistema de control de rutas de transporte

40

MySQL también incluye myisamchk, una utilidad de línea de comandos muy rápida para

efectuar estas operaciones en tablas MyISAM.

1.6.8. Estructura cliente – servidor

La arquitectura Cliente - Servidor describe la distribución de un sistema en el que una

máquina (cliente) solicita a una segunda máquina (servidor) que ejecute una tarea

específica.

El cliente suele ser una computadora personal conectada a una red de datos (LAN), y el

servidor, por lo general, es una máquina anfitriona o una macrocomputadora o

computadora de rango medio.

Las funciones que cumple el programa cliente son de gestionar la comunicación con el

servidor y recibir los datos enviados por el mismo. Por otro lado, maneja la interfaz con el

usuario y presenta los datos en el formato adecuado con comandos necesarios para que

el usuario pueda utilizar las prestaciones de una manera debida. El programa servidor

solo tiene que recibir la solicitud, procesarla y transmitir la información eficientemente.

1.6.9. Comparación de sistemas de gestión de bases de datos

Los Sistemas de Gestión de Bases de Datos Relacionales (RDBMS) brindan grandes

soportes para la manipulación de la información, tanto en secuencias de consulta

estructurada, seguridad y sobre todo, estabilidad en su funcionalidad.

Se han tomado diferentes factores para la elección de un correcto Gestor de Base de

Datos como MySQL, puesto que entre sus principales características, resalta su

Figura 11. Estructura Cliente - Servidor

Page 41: Diseño e implementación de un sistema de control de rutas de transporte

41

seguridad empleando sistemas de contraseñas y privilegios seguros, mediante

verificación basada en el host, recalcando que el tráfico de contraseñas se encuentra

cifrado. Nos permite conexiones entre diferentes equipos que posean distintos sistemas

operativos, puesto que existe gran tendencia a sistemas operativos basados en Linux.

MySQL SQL Server PostgreSQL Oracle

Desarrollador Sun

Microsystems

Microsoft

Corporation

PostgreSQL Global

DevelopmentGroup

Oracle

Corporation

Última versión

estable 5.5.20 2008 9.1.2 11g Release

Género

RDBMS

Sistema de

gestión de

bases de datos

relacionales

RDBMS

Sistema de

gestión de

bases de

datos

relacionales

RDBMS Sistema

de gestión de

bases de datos

relacionales

RDBMS

Sistema de

gestión de

bases de datos

relacionales

Licencia GPL o Uso

comercial

Microsoft

EULA BSD Privativa

Sistema

Operativo Multiplataforma

Microsoft

Windows Multiplataforma Multiplataforma

Otras

características

Múltiples

motores de

almacenamiento

(MyISAM,

Merge,

InnoDB, BDB,

MySQLCluster,

Federated,

Archive, CSV,

Blackhole),

permitiendo al

usuario

escoger la más

adecuada para

cada tabla.

No maneja

compresión

de datos

(excepto

2008

Enterprise

Edition), por

lo que

pueden

llegar a

ocupar

mucho

espacio en

disco.

Mediante un

sistema

denominado

MVCC (Acceso

concurrente

multiversión),

PostgreSQL

permite que

mientras un

proceso escribe en

una tabla, otros

accedan a la

misma tabla sin

necesidad de

bloqueos

Oracle es el

proveedor

mundial líder

de software

para

administración

de

información, y

la segunda

empresa de

software.

Tabla 4. Tabla comparativa de Sistemas de Gestión de Bases de Datos

Page 42: Diseño e implementación de un sistema de control de rutas de transporte

42

1.7. COMANDOS AT

Los comandos AT (Attention Command o Comandos de Atención) son instrucciones

codificadas que conforman un lenguaje de comunicación entre el hombre y un terminal

módem. Fueron desarrollados en 1977 por Dennis Hayes como una interfaz de

comunicación con un módem para así poder configurarlo y proporcionarle instrucciones,

tales como marcar un número de teléfono. Más adelante, con el avance del baudio,

fueron las compañías Microcomm y US Robotics las que siguieron desarrollando y

expandiendo el juego de comandos hasta universalizarlo.

La finalidad principal de los comandos AT es la comunicación con módems, la telefonía

móvil GSM también ha adoptado como estándar este lenguaje para poder comunicarse

con sus terminales. De esta forma, todos los teléfonos móviles GSM poseen un juego de

comandos AT específico que sirve de interfaz para configurar y proporcionar

instrucciones a los terminales. Este juego de instrucciones puede encontrarse en la

documentación técnica de los terminales GSM y permite acciones tales como realizar

llamadas de datos o de voz, leer y escribir en la agenda de contactos y enviar y recibir

mensajes SMS, además de muchas otras opciones de configuración del terminal.

Para acceder a un ordenador se puede utilizar el puerto serial USB mediante comandos

AT, con un módem GSM, configurando sus características y de esta manera permitiendo

la utilización de un software para un sistema de comunicación.

1.7.1. Formato de mensajes

Existen dos maneras de enviar y recibir mensajes SMS, en modo texto y en modo PDU

(Unidad de Descripción Protocolar, por sus siglas en inglés).

El modo texto es una representación de la cadena de bits contenida en el campo de

datos del modo PDU. No todos los teléfonos soportan el modo PDU, sobre todo los

teléfonos más antiguos. El envío de mensajes en modo texto es más sencillo ya que no

requiere de ningún tipo de codificación del texto que se quiere enviar.

El modo PDU trata el SMS como una cadena de caracteres en octetos hexadecimales o

semioctetos decimales, de cuya codificación resulta el SMS en modo texto. La ventaja de

modo PDU respecto al modo texto es que en modo texto la aplicación queda limitada a la

Page 43: Diseño e implementación de un sistema de control de rutas de transporte

43

opción de codificación que se haya preestablecido, en modo PDU se puede implementar

cualquier codificación.

La cadena PDU no solo contiene el mensaje, sino que lleva información del centro de

servicio SMS, hora de llegada, tipo de mensaje, información sobre el remitente, vigencia,

número de caracteres, nacional ó internacional, alfabeto usado.

La organización ETSI (Escuela Técnica Superior de Ingeniería) especifica que los

mensajes SMS pueden ser de hasta 160 caracteres.

Page 44: Diseño e implementación de un sistema de control de rutas de transporte

44

CAPÍTULO II

METODOLOGÍA

En la elaboración de este proyecto, se aplicaron distintas técnicas de investigación, como

son:

2.1. INVESTIGACIÓN BÁSICA

Se empleó este tipo de investigación para fundamentar las nociones, leyes y principios

del funcionamiento del GPS, además de todas sus tecnologías relacionadas, ya que

contribuye a la ampliación de nuestros conocimientos, creación de nuevas utilizaciones o

modificación de los usos ya existentes.

2.2. INVESTIGACIÓN DE CAMPO

Para comprender y obtener los datos más relevantes a ser analizados, este tipo de

investigación se llevó a cabo en el ambiente natural de trabajo del personal de La Casa

del Toldo®, empleando las siguientes técnicas de investigación:

2.2.1. Observación

Realizada para conocer los hechos, conductas y comportamientos que se requieran

estudiar. De gran utilidad, ya que ayudó a resolver cierto tipo de incógnitas acerca de los

procesos y tareas que se llevan a cabo dentro del establecimiento, favoreciendo a la

creación de un registro del personal con sus debidas actividades de forma detallada.

2.2.2. Encuestas

Son estudios observacionales en los que el investigador busca recolectar datos mediante

un cuestionario previamente diseñado. Estos datos se obtienen realizando un conjunto de

preguntas dirigidas a una muestra representativa de la población en estudio, con el fin de

conocer estados de opinión, características o hechos específicos.

Se emplearon encuestas a los clientes (ver Anexo 1), para determinar el estado actual del

proceso de transporte de mercadería del establecimiento, a fin de identificar y corregir los

Page 45: Diseño e implementación de un sistema de control de rutas de transporte

45

errores más evidentes al trasladarse de un lugar a otro y prevenir cierto tipo de

inconvenientes que se pueden suscitar en cualquier momento.

Para poder aplicar estas encuestas se tuvo que determinar la muestra de una población

finita, en este caso el número de clientes de La Casa del Toldo®; esta muestra se obtuvo

mediante la fórmula de Muestreo Probabilístico Aleatorio, Ver Figura 12 en la que se

consideran: niveles de confianza, varianza y margen de error.

2.2.3. Entrevistas

Constituyen un intercambio de información verbal por medio de preguntas, a fin de

obtener información acerca de las necesidades del cliente y la forma satisfacerlas,

además de establecer una relación de confianza y simpatía con el mismo.

Se realizó una entrevista al Representante Legal del establecimiento comercial La Casa

del Toldo® (ver Anexo 2), para determinar ciertos aspectos técnicos y requerimientos

funcionales que van a ser solucionados por la aplicación a generar.

2.3. INVESTIGACIÓN APLICADA

Con toda la información acerca de los requerimientos funcionales, aspectos técnicos, de

personal y cada una de sus tareas y procesos detallados, se procede a la elaboración de

una rigurosa base de datos relacional, que nos permita tener interconexión entre todas

las tablas creadas, tomando en cuenta su Sistema Gestor, ya que de éste depende la

respuesta efectiva a las transacciones realizadas diariamente, sin tener dificultades por el

nivel de registros que se van a manejar.

( )

N = 1500 Universo

d = 0,25 Varianza,

z = 1,04 Nivel de Confianza,

E = 0,08 Límite de error

Figura 12. Fórmula de Muestreo Probabilístico Aleatorio

Page 46: Diseño e implementación de un sistema de control de rutas de transporte

46

Con la base de datos completamente establecida, se procede a la aplicación de

conocimientos en lenguajes de programación .NET, empleando herramientas como

Visual Basic Express Edition, para la elaboración de interfaces amigables y sobre todo

intuitivas, lo cual ayudará en el desenvolvimiento efectivo de cada uno de los usuarios.

Se elabora cada uno de los módulos que van a enlazar la base de datos (back end) con

las interfaces (front end) previamente realizadas, en el lenguaje de programación .NET,

mencionado anteriormente, debido a su prestación de facilidades al enlazar cada capa

mediante la implementación de un ODBC (Open Data Base Connectivity). La

implementación de la aplicación totalmente finalizada, se la realiza en un Servidor HP

ProLiant ML110 G6, del establecimiento comercial La Casa del Toldo®, el cual cuenta

con un sistema operativo Windows Server 2003, debiendo configurar previamente ciertos

puertos de conexión de datos, siendo su instalación totalmente satisfactoria.

2.4. ENTREVISTA REALIZADA AL PATROCINADOR

Se realizó una entrevista al Representante Legal del establecimiento La Casa del Toldo®,

obteniendo muy buenos resultados, lo cual aporta de manera significativa para enfocarse

en ciertos aspectos importantes que a su vez son trascendentales.

Dirigida a: Juan Carlos Chica Izquierdo

REPRESENTANTE LEGAL

1. ¿Cómo desea que se lleve a cabo el control del transporte de mercadería de La

Casa del Toldo®?

Síntesis:

Actualmente no se lleva un control exacto de cada unidad de transporte, pero se desea

que se controlen las ubicaciones de los clientes en un mapa, para luego darle las

coordenadas específicas a cada uno de los choferes de los puntos que tienen que visitar,

para que de esta manera no exista pérdida de tiempo ni de combustible.

Page 47: Diseño e implementación de un sistema de control de rutas de transporte

47

Además también se quiere tener un control de la ubicación del vehículo que lleva la

mercadería, para guiar a los transportistas en el caso de no encontrar el punto a visitar o

amonestarlos si están fuera de la ruta que se ha diseñado.

Este control se lo desea implementar con tecnologías GPS, las cuales nos brindan la

ubicación exacta de un objeto en cualquier parte del mundo, pudiendo sectorizar a la

ciudad de Santo Domingo para que exista un registro automático de cada punto visitado

por cada transportista, el tiempo que utilizó en llevar a cabo una ruta y un aproximado de

kilómetros recorridos diariamente.

Análisis:

Se percibe la necesidad de un control óptimo de las unidades de transporte, su

localización exacta en tiempo real y el aseguramiento del cumplimiento de las rutas de

mercadería mediante tecnologías actuales en el mercado y de mayor precisión que

permitan el ahorro de recursos significativos de la empresa y por ende un beneficio a

largo plazo para la misma.

2. ¿A qué parroquias de Santo Domingo se da el servicio de entrega de

mercadería?

Síntesis:

Este servicio es prestado únicamente a las parroquias urbanas de Santo Domingo, como

son: Bombolí, Abraham Calazacón, Río Verde, Chiguilpe, Río Toachi, Zaracay y Santo

Domingo, las parroquias centrales son las que poseen mayor número de despachos cada

semana puesto que en estos lugares se encuentran mayor número de locales

comerciales.

Análisis:

Se requiere la implementación de este sistema solamente para las parroquias urbanas de

la provincia, porque es donde se solicita actualmente el servicio y por la localización

estratégica de los locales comerciales de la ciudad.

Page 48: Diseño e implementación de un sistema de control de rutas de transporte

48

3. ¿Qué parroquias urbanas poseen el mayor número de clientes?

Síntesis:

La parroquia Santo Domingo posee el mayor número de clientes, con un estimado de 750

clientes, seguida por las parroquias Río Verde y la Parroquia Bombolí, con una

aproximación de 450 y 300 clientes, respectivamente.

Análisis:

Se refleja que la mayoría de clientes de la casa comercial son de la zona urbana céntrica

de la ciudad.

4. ¿Qué problemas se tienen al momento de localizar a cada uno de los clientes?

Síntesis:

Las direcciones en ciertas ocasiones son difíciles de ubicar, ya que no se cuenta con un

croquis que detalle específicamente el lugar al cual se desea llegar, especificando la

cooperativa, urbanización, parroquia o sector en la cual se encuentra el cliente.

Análisis:

Se necesita mayor información acerca de las direcciones exactas de los clientes para la

correcta entrega de la mercadería solicitada y la satisfacción de las necesidades de los

mismos.

5. De acuerdo a su criterio y su experiencia, ¿cuál o cuáles de las parroquias

tienen mayor problema al momento de la entrega de mercadería?

Síntesis:

Las parroquias que presentan mayores inconvenientes debido a las direcciones son:

Chigüilpe, Río Verde, Abraham Calazacón y Bombolí, ya que las calles no son muy

conocidas o no se encuentran debidamente señalizadas.

Análisis:

La falta de conocimiento e información detallados sobre las direcciones de los clientes

tanto por parte de los mismos, como de una insuficiente señalización e identificación de

las calles, genera dificultades en el transporte y entrega de los productos requeridos,

sobre todo en las parroquias mencionadas.

Page 49: Diseño e implementación de un sistema de control de rutas de transporte

49

6. Describa el proceso de transporte de mercadería de La Casa del Toldo®

Síntesis:

Un determinado cliente nos realiza una compra y nos solicita que le enviemos la

mercadería a su establecimiento comercial o residencia, para esto un despachador

entrega la mercadería a un ayudante de transporte, conjuntamente con la copia de la

factura de compra.

El ayudante lleva la mercadería hasta la unidad de transporte y proceden a llevar la

mercadería a su destino con la dirección que se encuentra en la factura de compra.

El chofer conjuntamente con el ayudante registran en una hoja de control el número de

factura que transportan y llevan la mercadería a su destino.

Al momento de llegar al punto de destino, el ayudante hace la entrega física de la

mercadería y el chofer hace que el cliente o una persona autorizada por el mismo, firme

la hoja de control en la cual se apuntó el número de factura, de esta manera se sabe que

la mercadería se ha recibido satisfactoriamente.

Análisis:

Se tiene un proceso del transporte de mercadería pero se requiere su automatización

para contribuir a la eficiencia y correcto funcionamiento y cumplimiento del mismo.

7. Detalle el control al momento del despacho de mercadería a cada uno de los

transportistas

Síntesis:

Al momento de la emisión de la factura de compra, un despachador de mercadería

comprueba cada ítem registrado en la factura con cada uno de los productos existentes

listos para despachar, controlando que no existan productos faltantes o sobrantes, no se

cuenta con un registro de despacho puesto que únicamente se controla la salida de la

mercadería con la debida factura.

Análisis:

Se requiere un mayor control del despacho de la mercadería que garantice su correcta

distribución y entrega.

Page 50: Diseño e implementación de un sistema de control de rutas de transporte

50

8. ¿Qué función desempeña cada uno de los transportistas de La Casa del Toldo®?

Síntesis:

Llevar un control de las facturas que se han transportado, garantizar el buen traslado y

entrega de la mercadería a cada uno de los clientes que solicitan su servicio.

Análisis:

El correcto desempeño de las funciones de los transportistas es un factor altamente

importante para el cumplimiento del servicio.

9. ¿Cada vehículo cuenta con ayudantes? ¿cuántos?

Síntesis:

Si. Cada vehículo cuenta con un ayudante de transporte.

Análisis:

Las funciones del ayudante de transporte y del transportista se complementan y unifican

para ofrecer una mayor calidad en el servicio.

10. ¿Qué función desempeña cada uno de los ayudantes de transporte de La

Casa del Toldo®?

Síntesis:

Cada ayudante, es el encargado de subir la mercadería a las unidades de transporte,

entregar las facturas al chofer y bajar la mercadería para ser entregada a cada uno de los

clientes.

Análisis:

Los ayudantes contribuyen a un mayor control y soporte para el cumplimiento de las

funciones de los transportistas.

11. ¿Con cuántas unidades de transporte cuenta La Casa del Toldo®?

Síntesis:

Actualmente con 2 vehículos, tipo camioneta a gasolina.

Page 51: Diseño e implementación de un sistema de control de rutas de transporte

51

Análisis:

Se tienen 2 vehículos que facilitan el traslado rápido y oportuno de la mercadería.

12. ¿Cuántos recorridos se realizan en promedio cada día?

Síntesis:

De 5 a 10 recorridos diarios para cada unidad.

Análisis:

Se realizan estos recorridos dependiendo de la cantidad de pedidos y lógicamente, del

tiempo empleado en llegar al destino solicitado.

13. ¿Existe un control de kilometraje en cada una de las unidades de

transporte?

Síntesis:

Actualmente no, pero sí se desea establecer un control, puesto que los choferes en

ocasiones suelen utilizar el vehículo para tareas totalmente ajenas a las encomendadas.

Análisis:

Es necesario un mayor control del kilometraje de las unidades de transporte, mediante un

monitoreo en tiempo real del cumplimiento de las rutas asignadas a cada una para evitar

el incumplimiento de tareas o la mala utilización del vehículo, que genera un retraso en la

entrega de la mercadería.

14. ¿Existe un control de gastos realizados en cada una de las unidades de

transporte?

Síntesis:

No se tiene un debido control, pero sí se espera implementar un control estricto para de

esta manera tener en cuenta para próximos gastos a realizarse, como por ejemplo,

mantenimientos preventivos, cambios de aceite, combustible, entre otros.

Page 52: Diseño e implementación de un sistema de control de rutas de transporte

52

Análisis:

Se requiere un monitoreo adecuado de las rutas de transporte de mercadería que permita

un ahorro de los gastos que produce cada unidad, para poder controlar y programar

mejor dichos gastos de manera regular.

Page 53: Diseño e implementación de un sistema de control de rutas de transporte

53

2.5. ENCUESTA, TABULACIÓN Y ANÁLISIS

La atención al momento de realizar un pedido de mercadería es:

Análisis:

La atención al cliente en los establecimientos es eficiente, ya que la mayoría de los

clientes lo confirma con un 60%, lo cual favorece al establecimiento ya que cuenta con

personal con suficiente experiencia en atención al cliente, incentivando a cada uno de los

usuarios a la adquisición de varios artículos.

RESPUESTA VALOR

Muy eficiente 2

Eficiente 6

Poco eficiente 2

Deficiente 0

Tabla 5. Tabulación Pregunta 1. Encuesta a Clientes

Fuente: Clientes de La Casa del Toldo ® Realizado por: María Belén Jumbo López

Figura 13. Gráfico estadístico Pregunta 1. Encuesta Clientes

0

1

2

3

4

5

6

7

Muyeficiente

Eficiente Pocoeficiente

Deficiente

Page 54: Diseño e implementación de un sistema de control de rutas de transporte

54

¿La mercadería se recibe de manera rápida y oportuna?

Análisis:

El 60% de los clientes manifiesta que la entrega es rápida y oportuna, un 20% no está de

acuerdo y el otro 20% considera que existen otros factores que dificultan la correcta

entrega de la mercadería, en especial la dificultad al encontrar la dirección del cliente que

en ocasiones influye enormemente en la entrega de la mercadería a su debido tiempo.

RESPUESTA VALOR

Sí 6

No 2

Otros 2

Tabla 6. Tabulación Pregunta 2. Encuesta a Clientes

Fuente: Clientes de La Casa del Toldo ®

Realizado por: Benjamín Rolando Aguilar Rodríguez

Figura 14. Gráfico estadístico Pregunta 2. Encuesta Clientes

0

1

2

3

4

5

6

7

Sí No Otros

Page 55: Diseño e implementación de un sistema de control de rutas de transporte

55

¿La mercadería llega en buen estado?

Análisis:

El 90 % de los clientes encuestados señala que la mercadería solicitada se recibe en

buen estado y un escaso 10 % hace referencia a que en ocasiones no.

En este caso, se debe de tomar en cuenta el constante cambio climático, las calles tanto

urbanas como rurales, suelen estar en pésimo estado, causando de esta manera maltrato

a la mercadería transportada, a pesar de no tratarse de artículos de tipo delicado.

RESPUESTA VALOR

Sí 9

No 0

En ocasiones 1

Tabla 7. Tabulación Pregunta 3. Encuesta a Clientes

Fuente: Clientes de La Casa del Toldo ® Realizado por: María Belén Jumbo López

Figura 15. Gráfico estadístico Pregunta 3. Encuesta Clientes

0

2

4

6

8

10

Sí No En ocasiones

Page 56: Diseño e implementación de un sistema de control de rutas de transporte

56

¿La atención al momento de la entrega de mercadería es eficiente y cordial?

Análisis:

El 80 % de los clientes de la Casa del Toldo® expresa que la atención es eficiente y

cordial y por otro lado el 20 % indica que sólo en ocasiones los transportistas atienden

cordialmente a los clientes, lo cual nos indica que existe cierto tipo de negligencia que

puede ser causada por la carga operativa y debe disminuir gracias a una logística más

estudiada que nos permitirá implementar la aplicación a desarrollar.

RESPUESTA VALOR

Sí 8

No 0

En ocasiones 2

Tabla 8. Tabulación Pregunta 4. Encuesta a Clientes

Fuente: Clientes de La Casa del Toldo ® Realizado por: Benjamín Rolando Aguilar Rodríguez

Figura 16. Gráfico estadístico Pregunta 4. Encuesta Clientes

Sí En ocasiones No

0

2

4

6

8

10

Page 57: Diseño e implementación de un sistema de control de rutas de transporte

57

¿Qué aspectos quisiera que se mejoren?

Análisis:

El 50% de los clientes encuestados opina que se deben mejorar los tiempos de entrega,

el 10% la calidad del producto, otro 10% la calidad del servicio y el 30% señala que no

existen inconvenientes aparentes en ningún aspecto.

La mayoría de clientes se siente inconforme con este servicio ya que en algunos casos,

los tiempos de espera para la entrega de la mercadería superan las 24 horas, ya que no

se cuenta con una base detallada de los domicilios de los clientes.

RESPUESTA VALOR

Tiempos de entrega 5

Calidad del producto 1

Calidad de servicio 1

Ninguno 3

Tabla 9. Tabulación Pregunta 5. Encuesta a Clientes

Fuente: Clientes de La Casa del Toldo ® Realizado por: María Belén Jumbo López

Figura 17. Gráfico estadístico Pregunta 5. Encuesta Clientes

0

1

2

3

4

5

6

Tiempos deentrega

Calidad delproducto

Calidad delservicio

Ninguno

Page 58: Diseño e implementación de un sistema de control de rutas de transporte

58

2.6. MODELO DE DESARROLLO DE SOFTWARE

La metodología de la Ingeniería de Software nos indica claramente un conjunto de

métodos, herramientas y técnicas a emplear para el desarrollo de programas

informáticos, trascendiendo las actividades de la programación como pilar fundamental al

momento de crear una aplicación.

De todos los métodos de desarrollo de software existentes, el empleado para el presente

trabajo es el de Cascada, ya que sus principios nos permiten seguir a una siguiente etapa

únicamente si la etapa predecesora se encuentra finalizada totalmente, añadiendo cierto

grado de feedback para tener en cuenta acontecimientos de procesos anteriores y

corregir errores futuros inmediatamente.

2.6.1. Análisis

En la fase de análisis, se extraen todos los requisitos provenientes del usuario, en su

gran mayoría incompletos, contradictorios y de un estado muy ambiguo para

interpretarlos y procesarlos en un formato denominado Especificación de Requisitos de

Software (ver Anexo 3).

Figura 18. Modelo de Desarrollo de Software en Cascada

Page 59: Diseño e implementación de un sistema de control de rutas de transporte

59

2.6.2. Especificación

Para la realización de especificación de requisitos, se emplea la técnica denominada

diagrama de Casos de Uso (ver Anexo 8), en el cual se detalla claramente los usuarios

inmersos con sus tareas a realizar.

2.6.3. Arquitectura

En esta etapa se planifica en diferentes ámbitos, como software, hardware o

infraestructura; en el cual se diseñan todos y cada uno de los componentes de la

aplicación empleando patrones de arquitectura, permitiendo visualizar la interacción de

las entidades inmersas en el negocio, como es el caso del diagrama Entidad – Relación

(Ver Anexo 4) y Diagramas de Secuencia (ver Anexo 7).

2.6.4. Programación

La programación y generación de códigos fuente está íntimamente relacionada a la

ingeniería de software que anteriormente se ha venido planteando, empleando

programación orientada a objetos y herramientas de programación como Microsoft Visual

.NET 2008 Express Edition.

2.6.5. Pruebas

El software en mención, se instaló satisfactoriamente en el servidor del establecimiento

comercial La Casa del Toldo®, posteriormente en una terminal de trabajo, la cual será

empleada por el supervisor de rutas, que se encarga de direccionar el trabajo de cada

uno de los transportistas, empleando la aplicación sin ningún contratiempo, facilitando

sus tareas gracias a interfaces intuitivas y amigables con el usuario.

2.6.6. Documentación

Se procedió a elaborar los respectivos Manuales de Usuario (ver Anexo 10), en los

cuales se detalla el empleo de cada una de las ventanas generadas y con sus

respectivos comandos.

Page 60: Diseño e implementación de un sistema de control de rutas de transporte

60

El Manual del Programador (ver Anexo 9) especifica el código fuente empleado para

generar cada ventana, la operación que realiza cada botón y los respectivos cálculos que

se emplearon para obtener los resultados deseados.

El Manual de Instalación (ver Anexo 11) detalla paso a paso el proceso de instalación del

software en mención, detallando sus requerimientos básicos, como sistema operativo,

espacio libre en disco, plataforma operacional y lugar de instalación.

2.6.7. Mantenimiento

El mantenimiento programado con el establecimiento comercial La Casa del Toldo®, es

de manera mensual, en el cual se procede a respaldar la base de datos empleada,

limpiar datos en caché y tomar nota de errores o nuevos requisitos que se presenten

debido al uso constante.

Page 61: Diseño e implementación de un sistema de control de rutas de transporte

61

CAPÍTULO III

PROPUESTA

DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA DE CONTROL DE RUTAS DE

TRANSPORTE DE MERCADERÍA PARA LA CASA DEL TOLDO® UTILIZANDO

SISTEMAS DE POSICIONAMIENTO GEOGRÁFICO

En el presente proyecto se realizará una aplicación para facilitar el manejo y control de

rutas de transporte de mercadería del establecimiento comercial La Casa del Toldo®,

dando solución a una gran problemática, de tipo común, en empresas que emplean

vehículos motorizados, sin tomar en cuenta la actividad a la cual se dedican.

Entre los grandes inconvenientes presentados para este tipo de entidades, se encuentra

el robo de las unidades móviles, ya que en la actualidad se viven grandes momentos de

tensión por bandas armadas a nivel nacional que causan pérdidas económicas y en el

peor de los casos, pérdidas humanas.

Es por tal motivo, que surge la necesidad de implementar un software que agilite la fácil y

rápida ubicación de cada uno de las unidades de transporte con las cuales cuente la

empresa en mención, para de esta manera establecer además de confianza, seguridad

en los usuarios que diariamente harán uso de la aplicación y propietarios del

establecimiento.

Para desarrollar la aplicación, se hará uso de una herramienta de programación

denominada Microsoft Visual .NET 2008 Express Edition, debido a su Lenguaje Común

de Ejecución (CLR), el cual nos brinda escalabilidad en caso de necesitar migración de

códigos, conjuntamente con su Recolector de Basura (GarbageCollector) que libera

memoria continuamente del computador.

La información generada será administrada por el Sistema Gestor de Base de Datos

MySQL, de manera clara, sencilla y ordenada, ofreciéndonos grandes capacidades de

almacenamiento, servicios multiusuario, multi-threaded y sobre todo, porque es un gestor

diseñado para entornos de trabajo críticos, brindándonos de esta manera seguridad en la

información guardada.

Page 62: Diseño e implementación de un sistema de control de rutas de transporte

62

Se procederá a la elaboración de interfaces amigables e intuitivas para los usuarios,

además de realizar la debida documentación detallada, con el fin de mejorar su

comprensión y facilidad de manejo.

Inicialmente se pretenden elaborar módulos de administración de usuarios con sus

respectivos roles o permisos, permitiendo el ingreso de información de: personal,

vehículos, guías de remisión, información relevante de rutas; puesto que a partir de la

misma, se procederá a realizar cada uno de los controles y procesos.

Se contará con un módulo para el respectivo registro de transportistas donde se

almacenarán sus datos más relevantes, así como también se especificará la función que

cada uno desempeña y de un familiar más cercano al cual se pueda acudir en casos de

emergencia.

Figura 19. Formulario “Registro de Transportistas”

Page 63: Diseño e implementación de un sistema de control de rutas de transporte

63

Se tendrá también un módulo para el respectivo registro de cada uno de los vehículos

que transportan la mercadería de la Casa del Toldo®, con toda su información pertinente.

Se contará con un módulo para el respectivo registro de clientes que utilicen los servicios

de transporte de mercadería, donde se almacenarán los datos más relevantes de cada

uno de ellos, así como también se detallará y controlará el número de veces que el

cliente ha utilizado el servicio.

Figura 20. Formulario “Registro de Vehículos”

Figura 21. Formulario “Registro de Clientes”

Page 64: Diseño e implementación de un sistema de control de rutas de transporte

64

Se contará con un formulario de gestión de rutas y asignación de remisión o facturas,

para asegurar la correcta entrega de la mercadería por parte de los transportistas a los

clientes de la casa comercial.

Uno de los principales formularios a generarse, es el de rastreo, que nos permitirá

consultar los puntos visitados por cada uno de los vehículos motorizados de acuerdo a

una fecha especificada y un intervalo de tiempo determinado.

Figura 22. Formulario “Registro de Rutas”

Figura 23. Formulario “Rastreo de Rutas”

Page 65: Diseño e implementación de un sistema de control de rutas de transporte

65

Para efectivizar el proceso de entrega de mercadería, se ha tomado en cuenta cierto tipo

de parámetros como: información personal del receptor de la mercadería, además de

fecha y hora exactas de la entrega; garantizando de esta manera un excelente servicio.

La aplicación finalizada, contará con su respectivo Manual de Usuario (ver Anexo 10), en

el cual se detallará cada uno de los pasos para realizar las diferentes tareas que se

establecieron en los requisitos previstos por el patrocinador.

Además se procederá a elaborar un Manual del Programador (ver Anexo 9), en el cual se

especificará cada función, clase y codificación empleada para la correcta realización de

esta aplicación, facilitando de esta manera la modificación de cualquiera de sus módulos.

Figura 24. Formulario “Registro de Recibos de Mercadería”

Page 66: Diseño e implementación de un sistema de control de rutas de transporte

66

CONCLUSIONES

Mediante la implementación de sistemas de posicionamiento global se logra mayor

facilidad para localizar una posición y altitud determinadas, con una precisión del 95%,

incluso en condiciones meteorológicas muy adversas. Existen márgenes de error pero

son mínimos.

Los navegadores GPS tienen múltiples usos. Calculan nuestra posición exacta y no

trabajan con ningún dato analógico (temperatura, presión, humedad). Son dispositivos

extraordinariamente útiles para cualquier tarea de navegación, seguimiento de rutas,

almacenamiento de puntos para posteriores estudios.

Cabe destacar la gran utilidad de estos dispositivos para cuestiones de seguridad,

previniendo la pérdida de recursos materiales y humanos, al ofrecer la localización de un

ser vivo, objeto o lugar en tiempo real, pues optimizan el tiempo de búsqueda de los

mismos.

La información recolectada por parte de los funcionarios que brindan el servicio de

transporte, permite definir todos y cada uno de los campos inmersos dentro de la base de

datos, logrando que la misma tenga gran consistencia en sus ámbitos relacional y

estructural.

Las interfaces gráficas implementadas con Visual Studio .NET Express Edition brindan

excelentes resultados de funcionalidad ya que poseen controles sencillos e intuitivos para

su correcto uso, brindando confianza y seguridad a cada uno de los usuarios finales que

interactúan con la aplicación.

Page 67: Diseño e implementación de un sistema de control de rutas de transporte

67

RECOMENDACIONES

Se recomienda una minuciosa selección de equipos GPS, para las diferentes

aplicaciones que pueden realizarse, debido a que existen diversos modelos con muy

distintas funcionalidades y mayor precisión, lo cual influye enormemente en su costo.

Se debe tomar en cuenta, además, los proveedores de los equipos, puesto que en la

mayoría de los casos son extranjeros, haciendo muy dificultosa la adquisición de los

mismos, acarreando adversidades al momento de una debida tutoría acerca de su uso

adecuado.

Para que exista un óptimo funcionamiento de la aplicación realizada, se recomienda la

utilización de Sistemas Operativos Windows XP o versiones superiores, tanto en

estaciones de trabajo y servidor.

El personal que se encargará del manejo de la aplicación, no solamente debe tener

conocimiento sobre los procesos de transporte de mercadería, además, debe poseer

amplia experiencia en el manejo de software y hardware, de esta manera existirá menor

margen de error al momento de ingresar información a las bases de datos, por lo que se

recomienda su previa capacitación.

Se recomienda contratar personal con experiencia en electrónica digital, para la correcta

instalación de los equipos GPS, ya que una ligera variación de voltaje en sus circuitos,

acarrearían daños irreversibles en su estructura interna.

La recomendación más importante que se debe tomar en cuenta, es procurar el ahorro de

papel en la realización de informes, ya que se ha observado que se utiliza gran cantidad

del mismo en diversas empresas públicas y privadas, ocasionando mayores impactos

ambientales.

Page 68: Diseño e implementación de un sistema de control de rutas de transporte

68

BIBLIOGRAFÍA

LIBROS

Blanco, M. (2002). Programación en Visual Basic.NET. (1a. ed.). España: Grupo Eidos.

Huerta, E., Mangiaterra, A. y Noguera, G. (2005). GPS Posicionamiento Satelital. (1a.

ed.). Argentina: UNR Editorial.

Maldonado, G. (1999), Metodología de Investigación Científica. (1ª. ed.). Ecuador:

Editoriales Nuevo Día.

North Atlantic Treaty Organization. (1988). The NAVSTAR GPS System. (161a. ed.).

Francia: AGARD.

Parkinson, B. y Spilker, J. (1996). Global Positioning System Theory and Applications.

(1a. ed.). Estados Unidos: Clearance Center.

Posso, M. (2006). Metodología para el Trabajo de Grad. (3a. ed.). Ecuador: Editoriales

NINA.

SOPORTE ELECTRÓNICO

Microsoft. Visual Studio 2008. Recuperado el 1 de mayo de 2013, de

http://msdn.microsoft.com/en-us/library/aa187935.aspx

Oracle. (2011). Capítulo 1. Información General. Recuperado el 1 de mayo de 2013, de

http://dev.mysql.com/doc/refman/5.0/es/introduction.html

Sedo. (2009). Proyecto Celestia. Recuperado el 1 de mayo de 2013, de

http://blogcelestia.albacete.org/?p=83

Coro, Y. (2013). El Geomarketing y la Distribución Comercial. Recuperado el 1 de mayo

de 2013, de

http://www.uam.es/personal_pdi/economicas/coro//investigacion/geomarketing03.pdf

Page 69: Diseño e implementación de un sistema de control de rutas de transporte

69

Àlvarez, S. (2007). Arquitectura cliente - servidor. Recuperado el 1 de mayo de 2013, de

http://www.desarrolloweb.com/articulos/arquitectura-cliente-servidor.html

Page 70: Diseño e implementación de un sistema de control de rutas de transporte

70

GLOSARIO

AGENTES EXÓGENOS

Entes externos que no pertenecen a la organización o proceso en curso, pero que

interfieren o influyen en el alcance de un resultado.

ALGORITMO

Conjunto de instrucciones que sirven para ejecutar una tarea o resolver un problema. Los

motores de búsqueda usan algoritmos para mostrar los resultados de búsquedas.

ALFANUMÉRICO

Término informático que hace referencia al conjunto de caracteres numéricos y

alfabéticos de los cuales dispone una computadora.

ALMANAQUE

Predicciones de las órbitas de los satélites, son muy predecibles, dado que no existe

fricción atmosférica en el entorno donde se mueven.

ANCHO DE BANDA

Bandwidth en inglés. Cantidad de bits que pueden viajar por un medio físico (cable

coaxial, par trenzado, fibra óptica, etc.) de forma que mientras mayor sea el ancho de

banda, más rápido se obtendrá la información.

API

Del inglés Application Programming Interface. Interfaz de Programación de Aplicaciones.

Una serie de rutinas usadas por una aplicación para gestionar generalmente servicios de

bajo nivel, realizados por el sistema operativo de la computadora.

APLICACIÓN

Cualquier programa que corra en un sistema operativo y que haga una función específica

para un usuario. Por ejemplo, procesadores de palabras, bases de datos, agendas

electrónicas, etc.

Page 71: Diseño e implementación de un sistema de control de rutas de transporte

71

ARCHIVO

Archivo es el equivalente a "file", en inglés. Es data que ha sido codificada para ser

manipulada por una computadora. Los archivos de computadora pueden ser guardados

en CD-ROM, DVD, disco duro o cualquier otro medio de almacenamiento.

BASE DE DATOS

Conjunto de datos que pertenecen al mismo contexto almacenados sistemáticamente. En

una base de datos, la información se organiza en campos y registros. Los datos pueden

aparecer en forma de texto, números, gráficos, sonido o vídeo.

BAUDIO

Unidad de medida, usada en telecomunicaciones, que representa la cantidad de veces

que cambia el estado de una señal en un periodo de tiempo, tanto para señales digitales

como para señales analógicas.

C / C++

C++ es un lenguaje de programación que abarca tres paradigmas de la misma: la

programación estructurada, la programación genérica y la programación orientada a

objetos.

CARRIERS

Operadores de telecomunicaciones propietarios de las redes troncales de Internet y

responsables del transporte de los datos. Proporcionan una conexión a Internet de alto

nivel.

CARTOGRAFÍA

Ciencia que se encarga del estudio y de la elaboración de los mapas geográficos,

territoriales y de diferentes dimensiones lineales y demás.

COORDENADAS

Un sistema de coordenadas es un sistema que utiliza uno o más números (coordenadas)

para determinar unívocamente la posición de un punto o de otro objeto geométrico.

CLIENTE

Aplicación que permite a un usuario obtener un servicio de un servidor localizado en la

red. Sistema o proceso, que solicita a otro sistema o proceso la prestación de un servicio.

Page 72: Diseño e implementación de un sistema de control de rutas de transporte

72

DBMS

Database Management System (Sistema Gestor de Bases de Datos). Es un conjunto de

programas que permiten la completa administración de base de datos.

DECODIFICAR

Recuperación del contenido real de una información previamente encriptada o cifrada.

DEMOGRAFÍA

Ciencia que estudia estadísticamente la estructura y la dinámica de las poblaciones, así

como los procesos concretos que determinan la formación, la conservación y la

desaparición de las poblaciones.

ENCRIPTACIÓN

Cifrado. Tratamiento de un conjunto de datos, contenidos o no en un paquete, a fin de

impedir que nadie excepto el destinatario de los mismos pueda leerlos. Hay muchos tipos

de cifrado de datos, que constituyen la base de la seguridad de la red.

ESPECTRO ELECTROMAGNÉTICO

Distribución energética del conjunto de las ondas electromagnéticas, o radiación

electromagnética que emite o absorbe una sustancia u objeto.

EFEMÉRIDES

Órbitas recalculadas con datos de corrección suministrados por estaciones en tierra y

conjuntamente con información de tiempo.

EULA

En inglés EULA o End User License Agreement, es una licencia por la cual el uso de un

producto sólo está permitido para un único usuario (el comprador). En este tipo de

contrato, el dueño de los derechos de un producto insta al usuario final de éste a que

reconozca tener conocimiento de las restricciones de uso, de los derechos de autor

(copyright), de las patentes, etc. y que acepte de conformidad.

FREEWARE

Programas de Dominio Público. Aplicaciones que pueden obtenerse directamente de

Internet con la característica de que no es necesario pagar por su utilización.

Page 73: Diseño e implementación de un sistema de control de rutas de transporte

73

GEORREFERENCIA

Posicionamiento con el que se define la localización de un objeto espacial, representado

mediante punto, vector, área, volumen en un sistema de coordenadas.

GEOPROCESO

Serie de operaciones y procedimientos dentro de un SIG, para manipular bases

geográficas.

GIGAHERTZ

Un gigahertz equivale a 1,000 megahertz (MHz) o 1,000,000,000 Hz. Es comúnmente

usado para medir las velocidades de los procesadores de las computadoras.

GNU

La letras GNU se refieren en inglés a No es UNIX (GNU's Not UNIX). Es un sistema de

programas compatible con UNIX, desarrollado por el Free Software Foundation (FSF),

con el objetivo de crear un sistema operativo completamente libre.

GPL

Acrónimo en inglés de General Public License (Licencia Pública General). Esta licencia

regula los derechos de autor de los programas de software libre (free software)

promovido por el Free Software Foundation (FSF) en el marco de la iniciativa GNU.

GSM

Sistema Global para Comunicaciones Móviles. Sistema compatible de telefonía móvil

digital desarrollado en Europa con la colaboración de operadores, Administraciones

Públicas y empresas.

HARDWARE

Maquinaria. Componentes físicos de una computadora o de una red (a diferencia de los

programas o elementos lógicos que los hacen funcionar).

HOST

Servidor que nos provee de la información que requerimos para realizar algún

procedimiento desde una aplicación cliente a la que tenemos acceso de diversas formas

(ssh, FTP, www, email, etc.). Al igual que cualquier computadora conectada a Internet,

debe tener una dirección o número IP y un nombre.

Page 74: Diseño e implementación de un sistema de control de rutas de transporte

74

HOMOGÉNEO

Perteneciente o relativo a un mismo género, poseedor de iguales caracteres.

INDISOLUBLE

Que no se puede separar el uno del otro.

INTERFAZ GRÁFICA DE USUARIO

En inglés Graphic User Interface (GUI). Componente de una aplicación informática que el

usuario visualiza gráficamente, y a través de la cual opera con ella. Está formada por

ventanas, botones, menús e iconos, entre otros elementos.

INTRÍNSECO

Que es propio o característico de una cosa por sí misma y no por causas exteriores.

LIBRERÍA

Llamadas también bibliotecas, son un conjunto de subprogramas utilizados para

desarrollar software, contienen código y datos, que proporcionan servicios adicionales a

programas independientes, es decir, pasan a formar parte de estos.

LOGIN

Clave de acceso que se le asigna a un usuario con el propósito de que pueda utilizar los

recursos de una computadora. El login define al usuario y también lo identifica dentro de

Internet junto con la dirección electrónica de la computadora que utiliza.

NEGLIGENCIA

Abandono, descuido u omisión de determinadas actividades por parte del personal, falta

de aplicación o exactitud.

ODBC

Open Database Connectivity. Estándar de acceso a Bases de Datos desarrollado por

Microsoft cuyo objetivo es hacer posible el acceso a cualquier dato de cualquier

aplicación, sin importar qué Sistema Gestor de Bases de Datos (DBMS por sus siglas en

inglés) almacene los datos.

Page 75: Diseño e implementación de un sistema de control de rutas de transporte

75

OPEN SOURCE

Código fuente abierto, software libre, se refiere a un programa cuyo código fuente está

disponible al público general, gratis para usar y modificar.

PHP

Hypertext Preprocessor. Lenguaje de script diseñado para la creación de páginas web

activas (similares a ".asp" de Microsoft), multiplataforma (puede correr en Windows, Mac,

Linux). Usualmente se usa en conjunto con la base de datos MySQL, pero puede usar

cualquier otro tipo de base de datos como por ejemplo Oracle, SQL o PostgreSQL.

PROGRAMACIÓN ORIENTADA A OBJETOS

Programación Orientada a Objetos (POO) es una filosofía o paradigma de programación

que se basa en la utilización de objetos. El objetivo de la POO es "imponer" una serie de

normas de desarrollo que aseguren y faciliten la mantenibilidad y reusabilidad del código.

SELECTIVE AVAILABILITY

Conocida como Disponibilidad Selectiva (S/A en su acrónimo inglés) es una degradación

intencionada de la señal GPS con el fin de evitar la excesiva precisión de los receptores

GPS comerciales modernos.

SERVIDOR

Un servidor es una computadora que maneja peticiones de data, email, servicios de

redes y transferencia de archivos de otras computadoras (clientes).

SISTEMA OPERATIVO

Programa o conjunto de programas que en un sistema informático, gestiona los recursos

de hardware y provee servicios a los programas de aplicación y corre en modo

privilegiado respecto de los restantes.

SMS

Short Message System, Sistema de Mensajes Cortos, es el servicio de envío y recepción

de mensajes escritos de pequeño tamaño, usualmente a través de celulares.

SOCIEDAD DE LA INFORMACIÓN

La noción de sociedad de la información ha sido inspirada por los programas de los

países industrializados, aquella en la cual las tecnologías que facilitan la creación,

Page 76: Diseño e implementación de un sistema de control de rutas de transporte

76

distribución y manipulación de la información juegan un papel importante en las

actividades sociales, culturales y económicas.

SQL

Lenguaje de Consulta Estructurado, Structured Query Language. Es un lenguaje

especializado de programación que permite realizar consultas (queries en inglés) a bases

de datos.

THREAD

En sistemas operativos, un hilo de ejecución, hebra o subproceso es la unidad de

procesamiento más pequeña que puede ser planificada por un sistema operativo.

TECNOLOGÍAS DE LA INFORMACIÓN

Conjunto de tecnologías que permiten la adquisición, producción, almacenamiento,

tratamiento, comunicación, registro y presentación de informaciones, en forma de voz,

imágenes y datos contenidos en señales de naturaleza, óptica o electromagnética.

TRIDIMENSIONAL

Un objeto que tiene altura, ancho y profundidad, como cualquier objeto en el mundo real.

Ejemplo: Tu cuerpo es tridimensional.

Page 77: Diseño e implementación de un sistema de control de rutas de transporte

12

ANEXOS

Page 78: Diseño e implementación de un sistema de control de rutas de transporte

13

ANEXO 1.

ENCUESTA DIRIGIDA A CLIENTES DEL ESTABLECIMIENTO

Sírvase llenar la encuesta bajo estos criterios de evaluación para determinar su nivel de

satisfacción con el servicio que le está brindando La Casa del Toldo®.

1. La atención al momento de realizar un pedido de mercadería es:

Muy eficiente

Eficiente

Poco Eficiente

Deficiente

2. ¿La mercadería se recibe de manera rápida y oportuna?

No

Otros (detallar) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . .

3. ¿La mercadería llega en buen estado?

No

En ocasiones

4. ¿La atención al momento de la entrega de mercadería es eficiente y cordial?

No

En ocasiones

5. ¿Qué aspectos quisiera que se mejoren?

Tiempos de entrega

Calidad del Producto

Calidad del servicio

Todos

Ninguno.

Page 79: Diseño e implementación de un sistema de control de rutas de transporte

14

ANEXO 2.

ENTREVISTA REALIZADA AL PATROCINADOR

Dirigida a: Juan Carlos Chica Izquierdo

REPRESENTANTE LEGAL

1. ¿Cómo desea que se lleve a cabo el control del transporte de mercadería de La

Casa del Toldo®?

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2. ¿A qué parroquias de Santo Domingo se da el servicio de entrega de

mercadería?

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3. ¿Qué parroquias urbanas poseen el mayor número de clientes?

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Page 80: Diseño e implementación de un sistema de control de rutas de transporte

15

4. ¿Qué problemas se tienen al momento de localizar a cada uno de los clientes?

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5. De acuerdo a su criterio y su experiencia, ¿cuál o cuáles de las parroquias

tienen mayor problema al momento de la entrega de mercadería?

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6. Describa el proceso de transporte de mercadería de La Casa del Toldo®

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Page 81: Diseño e implementación de un sistema de control de rutas de transporte

16

7. Detalle el control al momento del despacho de mercadería a cada uno de los

transportistas

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8. ¿Qué función desempeña cada uno de los transportistas de La Casa del

Toldo®?

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9. ¿Cada vehículo cuenta con ayudantes?, ¿cuántos?

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10. ¿Qué función desempeña cada uno de los ayudantes de transporte de La Casa

del Toldo®?

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11. ¿Con cuántas unidades de transporte cuenta La Casa del Toldo®?

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Page 82: Diseño e implementación de un sistema de control de rutas de transporte

17

12. ¿Cuántos recorridos se realizan en promedio cada día?

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13. ¿Existe un control de kilometraje en cada una de las unidades de transporte?

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14. ¿Existe un control de gastos realizados en cada una de las unidades de

transporte?

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Page 83: Diseño e implementación de un sistema de control de rutas de transporte

1

ANEXO 3.

S.R.S. ESPECIFICACIONES DE REQUERIMIENTOS DE SOFTWARE

DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA DE CONTROL DE RUTAS DE

TRANSPORTE DE MERCADERÍA PARA LA CASA DEL TOLDO® UTILIZANDO

SISTEMAS DE POSICIONAMIENTO GEOGRÁFICO.

Page 84: Diseño e implementación de un sistema de control de rutas de transporte

2

Agosto, 2013

FICHA DEL DOCUMENTO

Fecha Revisión Autores Firma

Responsabilidad

01-08-2013 1

Aguilar Rodríguez Benjamín Rolando

Jumbo López María Belén

Documento validado por las partes en fecha: 01-08-2013

Por el cliente Responsables del Proyecto

Fdo. Sr. Juan Carlos Chica LA CASA DEL TOLDO®

Fdo. Aguilar Rodríguez Benjamín Rolando

Fdo. Jumbo López María Belén

Page 85: Diseño e implementación de un sistema de control de rutas de transporte

3

ÍNDICE DE CONTENIDOS FICHA DEL DOCUMENTO 2

1. INTRODUCCIÓN 5

1.1 PROPÓSITO 5

1.2 ALCANCE 5

1.3 PERSONAL INVOLUCRADO 6

1.4 DEFINICIONES, ACRÓNIMOS Y ABREVIATURAS 7

1.4.1 Definiciones 7

1.4.2 Abreviaturas 9

1.5 REFERENCIAS 9

1.6 RESUMEN 9

2. DESCRIPCIÓN GENERAL 10

2.1 PERSPECTIVA DEL PRODUCTO 10

2.2 FUNCIONALIDAD DEL PRODUCTO 10

2.3 CARACTERÍSTICAS DE LOS USUARIOS 10

2.4 RESTRICCIONES 11

2.5 SUPOSICIONES Y DEPENDENCIAS 11

2.6 EVOLUCIÓN PREVISIBLE DEL SISTEMA 12

3. REQUERIMIENTOS ESPECÍFICOS 12

3.1 REQUERIMIENTOS COMUNES DE LAS INTERFACES 12

3.1.1 Interfaces de usuario 12

3.1.2 Interfaces de hardware 12

3.1.3 Interfaces de software 12

3.2 REQUERIMIENTOS FUNCIONALES 13

3.2.1 Requerimiento funcional 1 13

3.2.2 Requerimiento funcional 2 14

3.2.3 Requerimiento funcional 3 14

3.2.4 Requerimiento funcional 4 15

3.2.5 Requerimiento funcional 5 15

3.2.6 Requerimiento funcional 6 16

3.2.7. Requerimiento funcional 7 16

3.2.8. Requerimiento funcional 8 17

3.2.9. Requerimiento funcional 9 17

3.3. REQUERIMIENTOS NO FUNCIONALES 18

3.3.1 Precaución o seguridad 18

3.3.2 Usabilidad 18

Page 86: Diseño e implementación de un sistema de control de rutas de transporte

4

3.3.3 Soportabilidad y Operabilidad 18

3.4 OTROS REQUERIMIENTOS 19

3.4.1 Requerimientos culturales 19

3.4.2 Requerimientos legales 19

4. Apéndice 19

Page 87: Diseño e implementación de un sistema de control de rutas de transporte

5

1. INTRODUCCIÓN

Este sistema va a facilitar la manipulación de datos en la sección de despacho, reparto y

entrega de mercadería del establecimiento La Casa del Toldo®, el cual cuenta con dos

camionetas que realizan servicio de transporte diariamente.

Estas camionetas no cuentan con un debido control en los gastos de combustible,

además no existe un detalle de cada cliente visitado ni su debido orden, lo cual incurre en

un incremento en el consumo de combustible, además de los gastos realizados por

mantenimientos.

El sistema a implementarse también ayudará a controlar las rutas que realizan cada uno

de los vehículos, teniendo un mejor control de los tiempos que se invierten en la visita a

cada uno de los puntos de destino y optimizando el trabajo.

1.1 PROPÓSITO

Mediante el presente documento se pretende establecer el SRS, aplicando en la medida

de lo posible la norma IEEE 830. El proyecto sobre el cual se va aplicar dicha norma será

GPSig, el cual es un software que permite el control de rutas de transporte mediante

Sistemas de Posicionamiento Geográfico. Con la finalidad de lograr el entendimiento y

familiarización del usuario final con el sistema y de acuerdo a los requerimientos

planteados, se tiene como objeto establecer una definición completa y global de la

operación y funcionamiento del sistema.

1.2 ALCANCE

El producto del proyecto a desarrollar se identificará con el nombre “GPSig”.

GPSig se caracterizará por ser un sistema de control de rutas de mercadería que

mediante la utilización de Sistemas de Posicionamiento Geográfico, posibilite un control

de datos los procesos de despacho, reparto y entrega de mercadería, así como también

las rutas de los medios de transporte y optimización de tiempos.

Deberá cumplir con las siguientes especificaciones:

Page 88: Diseño e implementación de un sistema de control de rutas de transporte

6

• Gestionar información de usuarios: Creación, consulta, edición y eliminación de

usuarios y sus respectivos permisos.

• Gestionar opciones de control: Una vez ingresado al sistema, el usuario podrá

ingresar, editar, consultar y eliminar datos relevantes a su función en el control de las

rutas.

• Gestionar reportes: El usuario, de acuerdo a sus permisos, podrá acceder a uno o

varios de estos reportes: puntos visitados en el día, tiempo invertido en cada punto y

tiempo invertido al día.

1.3 PERSONAL INVOLUCRADO

Nombre Aguilar Rodríguez Benjamín Rolando

Rol Desarrollador

Categoría profesional Programador y analista

Responsabilidades Programar los módulos del sistema, diseño de la

arquitectura del sistema y de la base de datos, análisis

y especificación de requerimientos.

Información de contacto [email protected]

Aceptación

Nombre Jumbo López María Belén

Rol Desarrollador

Categoría profesional Programador y analista

Responsabilidades Programar los módulos del sistema, diseño de la

arquitectura del sistema y de la base de datos, análisis

y especificación de requerimientos.

Información de contacto [email protected]

Aceptación

Page 89: Diseño e implementación de un sistema de control de rutas de transporte

7

1.4 DEFINICIONES, ACRÓNIMOS Y ABREVIATURAS

1.4.1 Definiciones

Sistema: Aplicación. Conjunto de partes interrelacionadas: hardware, software y recursos

humanos que permite almacenar y procesar información para cubrir necesidades.

Usuario final: O simplemente usuario, Hace alusión a las personas que interactúan con

el sistema y lo utilizan.

Gestionar: Encierra los procesos de registrar, modificar o eliminar un registro o cualquier

otro tipo de posible acción modificable.

Permiso o Rol: Derechos de acceso de los usuarios a determinados módulos o ciertas

acciones específicas para cada uno de ellos.

Cliente: Empresa o persona que solicita un producto o servicio, de acuerdo a sus

requerimientos.

Proveedor: Empresa o persona que proporciona un producto o servicio.

Norma IEEE 830: Estándar para la elaboración de la Especificación de Requerimientos

de Software, su finalidad es la integración de los requisitos del sistema desde la

perspectiva del usuario, cliente y desarrollador.

Módulo: Porción de un programa o aplicación. De las varias tareas que debe realizar un

programa para cumplir con su propósito, un módulo realizará, comúnmente, una o varias

de dichas tareas.

Base de datos: conjunto de datos almacenados en discos que permiten el acceso directo

a ellos y un conjunto de programas que manipulen ese conjunto de datos.

Servidores de bases de datos: También conocidos como RDBMS (acrónimo en inglés

de Relational DataBase Management Systems, Sistemas de Gestión de Bases de Datos

Relacionales), son programas que permiten organizar datos en una o más tablas

relacionadas.

Page 90: Diseño e implementación de un sistema de control de rutas de transporte

8

Programador: Persona que escribe, depura y mantiene el código fuente de un programa

informático, es decir, del conjunto de instrucciones que ejecuta el hardware de una

computadora para realizar una tarea determinada.

Desarrollador: Programador que se dedica a uno o más aspectos del proceso de

desarrollo de software. Se trata de un ámbito más amplio de la programación. El

desarrollador puede contribuir a la visión general del proyecto más a nivel de aplicación

que a nivel de componentes o en las tareas de programación individuales.

Analista: Encargado del desarrollo de aplicaciones en lo que respecta a su diseño y

obtención de los algoritmos, así como de analizar las posibles utilidades y modificaciones

necesarias de los sistemas operativos para una mayor eficacia de un sistema informático.

Otra misión de estas personas es dar apoyo técnico a los usuarios de las aplicaciones

existentes.

Interfaces: Conexión física y funcional entre dos sistemas o dispositivos de cualquier tipo

dando una comunicación entre distintos niveles.

Interfaz de usuario: Medio con que el usuario puede comunicarse con una máquina, un

equipo o una computadora, y comprende todos los puntos de contacto entre el usuario y

el equipo. Lo ideal es que sean fáciles de entender y fáciles de accionar (amigables e

intuitivas).

Sistema operativo: Programa o conjunto de programas que en un sistema informático

gestiona los recursos de hardware y provee servicios a los programas de aplicación.

Lenguaje de programación: Lenguaje formal diseñado para expresar procesos que

pueden ser llevados a cabo por máquinas como las computadoras.

Alfanumérico: Conjunto de caracteres numéricos y alfabéticos.

Orientado a objetos: La orientación a objetos plantea una nueva forma de enfocar un

problema. Su objetivo es modelar la realidad empleando conceptos del mundo real,

centrándose en la identificación de los objetos.

Page 91: Diseño e implementación de un sistema de control de rutas de transporte

9

1.4.2 Abreviaturas

Fdo.: Firmado.

Sr.: Señor.

IEEE: Instituto de Ingenieros Eléctricos y Electrónicos.

SRS: Especificación de Requerimientos de Software.

GUI: Interfaz Gráfica de Usuario.

1.5 REFERENCIAS

Referencia Titulo Ruta Fecha Autor

Ref1 Ingeniería de

requisitos

http://www.slideshare.net/

JuanManuelAgueraCast/in

genieria-de-requisitos-

ingeniera-de-software

20-05-2013 Juan

Manuel

Aguera

Castro

Ref2 IEEE 830

(Especificaciones

de los Requisitos

del Software)

http://www.slideshare.net/j

ames1360/ieee-830-srs-

6739034

28-01-2011 James

Ospina

1.6 RESUMEN

El presente documento está organizado de la siguiente forma:

Primera fase, presenta una introducción al SRS, la cual contiene el propósito general

del documento, el alcance del sistema, el personal involucrado en el desarrollo del

sistema, definiciones, acrónimos y abreviaturas necesarios para interpretar

apropiadamente el documento, las referencias y una visión general de éste.

Segunda fase, comprende la descripción global del SRS, que incluye la perspectiva

del producto, su funcionalidad, características de los usuarios, restricciones,

Page 92: Diseño e implementación de un sistema de control de rutas de transporte

10

suposiciones y dependencias del software que, si cambian pueden afectar a los

requisitos, así como también la evolución previsible del sistema o futuras mejoras, a

fin de obtener una mejor comprensión del proyecto.

Tercera fase, describe los requerimientos funcionales y no funcionales que debe

cumplir el sistema a desarrollar, con su respectiva información detallada.

2. DESCRIPCIÓN GENERAL

2.1 PERSPECTIVA DEL PRODUCTO

Por la naturaleza de este proyecto de disertación de grado, GPSig es un sistema

independiente de otros productos de software existentes o utilizados por el cliente, es por

esta razón que no es necesario establecer relación con otras aplicaciones.

2.2 FUNCIONALIDAD DEL PRODUCTO

GPSig es un sistema de control de rutas, orientado a cumplir con las siguientes

funciones:

• Administrar la información de usuarios.

• Administrar información de rutas y puntos de entrega.

• Gestionar y acceder a reportes que faciliten el control de los procesos de despacho,

reparto y entrega de mercadería para un manejo correcto y consistente de la

información proporcionada por el sistema

2.3 CARACTERÍSTICAS DE LOS USUARIOS

Tipo de usuario Administrador

Formación Conocimientos de informática y bases de datos (tercer

nivel).

Habilidades Manejo de computadores y sistemas informáticos.

Actividades Control total del sistema, mantenimiento de la base de

datos y los equipos.

Page 93: Diseño e implementación de un sistema de control de rutas de transporte

11

Tipo de usuario Supervisor

Formación Conocimientos de informática (tercer nivel).

Habilidades Manejo de computadores y sistemas informáticos.

Actividades Ingreso al sistema, ingreso, eliminación, edición y

consulta de datos, acceso a los reportes.

Tipo de usuario Digitador

Formación Conocimientos básicos de informática.

Habilidades Manejo de computadores y sistemas informáticos.

Actividades Ingreso al sistema, ingreso de datos, acceso a ciertos

reportes.

2.4 RESTRICCIONES

El sistema deberá de poder realizar la conexión pertinente con el servidor de base de

datos MySQL y la misma solo se podrá hacer con una cuenta tipo administrador de

dicho sistema gestor de base de datos.

El software permitirá la visualización en tiempo real de los puntos visitados en un

mapa.

La aplicación permitirá la generación de reportes de acuerdo a las necesidades del

usuario.

El sistema contará con interfaces amigables e intuitivas para el usuario.

2.5 SUPOSICIONES Y DEPENDENCIAS

Algunos factores que pueden afectar los requerimientos del sistema son:

Agregar nuevas funcionalidades a las ya definidas anteriormente.

Desconexión de la base de datos.

Utilización de un lenguaje de programación diferente para la realización de

requerimientos futuros.

Cambios del sistema operativo.

Page 94: Diseño e implementación de un sistema de control de rutas de transporte

12

2.6 EVOLUCIÓN PREVISIBLE DEL SISTEMA

Algunos requerimientos que se podrían plantear en el futuro serian:

Realización de la aplicación mediante un modelo web.

Generación de reportes adicionales.

3. REQUERIMIENTOS ESPECÍFICOS

3.1 REQUERIMIENTOS COMUNES DE LAS INTERFACES

3.1.1 Interfaces de usuario

Las interfaces de usuario deberán ser amigables e intuitivas. Se requiere la visualización

clara de las rutas en el mapa para mayor comprensión del usuario.

3.1.2 Interfaces de hardware

El equipo en el que se instalará el sistema puede ser una computadora de escritorio o

portátil con las siguientes características:

Resolución de pantalla mínima de 1024 x 768 o superior para la visualización

adecuada de la aplicación.

Capacidad mínima de disco duro 100 GB.

1 GB de RAM mínimo.

3.1.3 Interfaces de software

El equipo en el que se implementará la aplicación debe contar con:

Sistema operativo Windows XP, en adelante.

Conector MySQL ODBC 5.1 o superior.

.NET Framework Redistribuible 3.5 o versiones posteriores.

Page 95: Diseño e implementación de un sistema de control de rutas de transporte

13

3.2 REQUERIMIENTOS FUNCIONALES

Usuarios inmersos:

Usr1 Digitador Encargado de ingresar información a la aplicación

Usr2 Supervisor Encargado de modificar registros y visualizar reportes

Usr3 Administrador Administra la base de datos y aplicación

Detalle General de Requerimientos y Usuarios

RF1 RF2 RF3 RF4 RF5 RF6 RF7 RF8

Usr1 X X X

Usr2 X X X X X X X X

Usr3 X X X X X X x X

3.2.1 Requerimiento funcional 1

Requerimiento general, ingreso al sistema.

Número de requerimiento RF1

Nombre de requerimiento Ingreso al sistema.

Tipo Requerimiento Restricción

Fuente del requerimiento Tabla: TblUsuarios

Prioridad del

requerimiento

Alta/

Esencial

Media/

Deseado

Baja/

Opcional

Descripción: Permite ingresar a los servicios del sistema de transporte de

mercadería.

Predecesor: Ninguno

Actores: Usr1, Usr2, Usr3

Fact. Éxito: Visualización del Menú Principal

Dicho menú tendrá habilitadas y deshabilitadas ciertas funciones

correspondientes a cada uno de los usuarios.

Ambiente 1: Visualización del Menú Principal

Ambiente 2: Mensaje de Alerta detallando los datos de usuario incorrectos.

Page 96: Diseño e implementación de un sistema de control de rutas de transporte

14

3.2.2 Requerimiento funcional 2

Ingreso de información de rutas y puntos de entrega.

Número de requerimiento RF2

Nombre de requerimiento Ingreso de rutas y clientes

Tipo Requerimiento Restricción

Fuente del requerimiento Tablas: TblRutas, TblClientes

Prioridad del

requerimiento

Alta/

Esencial

Media/

Deseado

Baja/

Opcional

Descripción: Permite el ingreso de registros de clientes y puntos a visitarse cada

día.

Predecesor: RF1

Actores: Usr1, Usr2, Usr3

Fact. Éxito: Almacenamiento de nuevo registro en la base de datos.

Ambiente 1: Almacenamiento de nuevo registro en la base de datos.

Ambiente 2: Mensaje de Error, detallando el error de ingreso de datos en algún

campo.

3.2.3 Requerimiento funcional 3

Registro de Usuarios, Vehículos, Transportistas, Unidades GPS.

Número de requerimiento RF3

Nombre de requerimiento Ingreso de usuarios, vehículos, transportistas,

unidades GPS

Tipo Requerimiento Restricción

Fuente del requerimiento Tablas: TblUsuarios, TblVehiculos,

TblTransportistas, TblUnidadesGPS

Prioridad del

requerimiento

Alta/

Esencial

Media/

Deseado

Baja/

Opcional

Descripción: Permite el ingreso de registros en varias tablas de la base de datos.

Predecesor: RF1

Actores: Usr2, Usr3

Fact. Éxito: Almacenamiento de nuevo registro en la base de datos.

Page 97: Diseño e implementación de un sistema de control de rutas de transporte

15

Ambiente 1: Almacenamiento de nuevo registro en la base de datos.

Ambiente 2: Mensaje de Error, detallando el error de ingreso de datos en algún

campo.

3.2.4 Requerimiento funcional 4

Permite la eliminación de registros de la base de datos.

Número de

requerimiento

RF4

Nombre de

requerimiento

Eliminación de registros.

Tipo Requerimiento Restricción

Fuente del

requerimiento

Tablas: TblUsuarios, TblVehiculos, TblTransportistas,

TblUnidadesGPS, TblClientes

Prioridad del

requerimiento

Alta/

Esencial

Media/

Deseado

Baja/

Opcional

Descripción: Elimina un registro de la base de datos.

Predecesor: RF1, RF2, RF3

Actores: Usr2, Usr3

Fact. Éxito: Registro debidamente eliminado.

Ambiente 1: Mensaje de Confirmación para la eliminación del registro especificado.

Ambiente 2: Mensaje de Aviso, confirmando que el registro especificado no se ha

eliminado.

3.2.5 Requerimiento funcional 5

Consulta o reporte de registros.

Número de requerimiento RF5

Nombre de requerimiento Consulta/Reporte de registros

Tipo Requerimiento Restricción

Fuente del requerimiento Tablas: TblUsuarios, TblVehiculos,

TblTransportistas, TblUnidadesGPS, TblClientes

Prioridad del

requerimiento

Alta/

Esencial

Media/

Deseado

Baja/

Opcional

Descripción: Permite realizar consultas de los registros anteriormente ingresados

en el sistema e imprimir su respectivo reporte.

Predecesor: RF1, RF2, RF3

Page 98: Diseño e implementación de un sistema de control de rutas de transporte

16

Actores: Usr1, Usr2, Usr3

Fact. Éxito: Desplegar registros solicitados.

Ambiente 1: No se muestra ningún mensaje o aviso.

Ambiente 2: Mensaje de error especificando que algún campo requerido se

encuentra vacío o tiene algún carácter no válido.

3.2.6 Requerimiento funcional 6

Modificación de registros anteriormente registrados.

Número de requerimiento RF6

Nombre de requerimiento Edición de datos.

Tipo Requerimiento Restricción

Fuente del requerimiento Tablas: TblUsuarios, TblVehiculos, TblRutas,

TblTransportistas, TblUnidadesGPS, TblClientes

Prioridad del

requerimiento

Alta/

Esencial

Media/

Deseado

Baja/

Opcional

Descripción: Permite realizar modificaciones en los registros anteriormente

ingresados en el sistema

Predecesor: RF1, RF2, RF3

Actores: Usr2, Usr3

Fact. Éxito: Modificación satisfactoria de registro seleccionado.

Ambiente 1: Mensaje de confirmación de registro modificado.

Ambiente 2: Mensaje de error especificando que algún campo requerido se

encuentra vacío o tiene algún carácter no válido.

3.2.7. Requerimiento funcional 7

Reporte de seguimiento de vehículos

Número de requerimiento RF7

Nombre de requerimiento Reporte de seguimiento de vehículos

Tipo Requisito Restricción

Fuente del requerimiento Tablas: TblSeguimiento

Prioridad del

requerimiento

Alta/

Esencial

Media/

Deseado

Baja/

Opcional

Page 99: Diseño e implementación de un sistema de control de rutas de transporte

17

Descripción: Describe un listado de los puntos que visitó el vehículo, detallando

horas y fechas.

Predecesor: R1

Actores: Usr2, Us3

Fact. Éxito: Desplegar reporte de puntos en los que se ha ubicado el vehículo.

Ambiente 1: Desplegar reporte de Puntos visitados en el día

Ambiente 2: Mensaje de Error, detallando la anomalía sucedida.

3.2.8. Requerimiento funcional 8

Reporte de rutas realizadas por los vehículos

Número de requerimiento RF8

Nombre de requerimiento Reporte de rutas realizadas por los vehículos

Tipo Requisito Restricción

Fuente del requerimiento Tablas: TblRutas

Prioridad del

requerimiento

Alta/

Esencial

Media/

Deseado

Baja/

Opcional

Descripción: Lista de los tiempos empleados en la visita a los puntos determinados

en las rutas visitadas.

Predecesor: RF1

Actores: Usr2, Usr3

Fact. Éxito: Reporte de rutas realizadas por los vehículos.

Ambiente 1: Reporte de rutas realizadas por los vehículos.

Ambiente 2: Mensaje de Error, detallando la anomalía sucedida.

3.2.9. Requerimiento funcional 9

Activación del Servicio GPS

Número de requerimiento RF9

Nombre de requerimiento Activación del servicio GPS

Tipo Requisito Restricción

Fuente del requerimiento Tablas: TblUnidadesGPS

Prioridad del

requerimiento

Alta/

Esencial

Media/

Deseado

Baja/

Opcional

Page 100: Diseño e implementación de un sistema de control de rutas de transporte

18

Descripción: Activa o desactiva el servicio de rastreo de las unidades GPS.

Predecesor: RF1

Actores: Usr2, Usr3

Fact. Éxito: Activación del servicio de rastreo de las unidades GPS

Ambiente 1: Activación del servicio de rastreo de las unidades GPS

Ambiente 2: Mensaje de Error, detallando la anomalía sucedida.

3.3. REQUERIMIENTOS NO FUNCIONALES

3.3.1 Precaución o seguridad

Se utilizarán niveles de seguridad por cada usuario registrado en la base de datos con su

debida clave personal para acceder a las diferentes áreas de sistema. Las claves

ingresadas en las bases de datos tendrán que cumplir con ciertos requisitos mínimos

como: mínimo 8 caracteres, poseer caracteres alfanuméricos en minúsculas y

mayúsculas.

Creación de respaldos periódicos de la base de datos, para llevar un control preventivo.

3.3.2 Usabilidad

La apariencia de cada una de las ventanas de software diseñado será amigable para el

usuario, de esta forma existirá una fácil adaptabilidad visual, además de cumplir con los

requerimientos estipulados por el cliente. Cada ventana tendrá botones con funciones

específicas y de fácil acceso, para de esta manera, no perturbar la visibilidad del usuario

que se encuentre usando el software.

El software en su totalidad se encontrará bajo los estándares de Windows Graphic User

Interfaces (GUI), usando ventanas, cuadros de texto, botones, etc. Para que de esta

manera el ambiente de trabajo del los usuarios le sea familiar con el resto de aplicaciones

que diariamente utilizan.

3.3.3 Soportabilidad y Operabilidad

El sistema operativo sobre el cual va a ejecutarse el software es Windows XP

Professional, Service Pack 2 ó 3, o versiones posteriores.

Page 101: Diseño e implementación de un sistema de control de rutas de transporte

19

El equipo deberá contar con un espacio mínimo de 100 GB de almacenamiento en disco

duro, además de 1 GB de memoria RAM.

El software será diseñado en lenguaje estructurado de alto nivel orientado a objetos,

como es el caso de Microsoft .NET.

La base de datos que respaldará toda la información manejada en el software será

MySQL 5.0

3.4 OTROS REQUERIMIENTOS

3.4.1 Requerimientos culturales

La interfaz de usuario de la aplicación deberá tener los colores identificativos de la

empresa.

3.4.2 Requerimientos legales

• Se entregará el sistema de acuerdo a un contrato y con las firmas de aprobación tanto

de la parte cliente como de la que provee el servicio.

• Se utilizarán herramientas libres para el desarrollo de la aplicación.

4 Apéndice

Como información complementaria, tenemos a las personas involucradas en el proceso

del transporte de mercadería. Esto no se considerará parte de los requisitos:

Nombre Responsabilidades

Gerente Encargado de la administración del sistema, el control del flujo de

información y la verificación del cumplimiento de las tareas de acuerdo

a los reportes generados.

Supervisor Asegura el cumplimiento de las tareas del transportista y su respectivo

ayudante.

Transportista Se encarga del eficiente traslado y llegada de la mercadería solicitada

por el cliente a su destino final, así como del manejo adecuado del

vehículo a su cargo.

Page 102: Diseño e implementación de un sistema de control de rutas de transporte

20

Ayudante Asiste en el momento de colocar de manera adecuada la mercadería

en cada vehículo, de forma tal que la misma llegue al cliente en un

estado óptimo.

Cliente Solicita y recibe la mercadería.

Page 103: Diseño e implementación de un sistema de control de rutas de transporte

1

ANEXO 4.

DIAGRAMA ENTIDAD - RELACIÓN

Base de Datos: casatoldo

Page 104: Diseño e implementación de un sistema de control de rutas de transporte

2

Page 105: Diseño e implementación de un sistema de control de rutas de transporte

1

ANEXO 5.

CÓDIGO PHP DE CREACIÓN DE LA BASE DE DATOS

1. CREACIÓN DE BASE DE DATOS

CREATE DATABASE `casatoldo` DEFAULT CHARACTER SET latin1 COLLATE

latin1_swedish_ci;

USE `casatoldo`;

2. CREACIÓN DE TABLAS

2.1. TABLA CLIENTES

CREATE TABLE IF NOT EXISTS `tblclientes` (

`codigo_cliente` varchar(10) NOT NULL,

`cedula_cliente` varchar(13) DEFAULT NULL,

`nombres_cliente` varchar(100) DEFAULT NULL,

`apellidos_cliente` varchar(100) DEFAULT NULL,

`nacionalidad_cliente` varchar(100) DEFAULT NULL,

`ecivil_cliente` varchar(50) DEFAULT NULL,

`fnacimiento_cliente` varchar(15) DEFAULT NULL,

`email_cliente` varchar(100) DEFAULT NULL,

`convencional_cliente` varchar(50) DEFAULT NULL,

`celular_cliente` varchar(50) DEFAULT NULL,

`otros_cliente` varchar(200) DEFAULT NULL,

`sector_cliente` varchar(100) DEFAULT NULL,

`parroquia_cliente` varchar(100) DEFAULT NULL,

`coop_cliente` varchar(100) DEFAULT NULL,

`direccion_cliente` varchar(200) DEFAULT NULL,

`referencia_cliente` varchar(100) DEFAULT NULL,

`coordx_cliente` varchar(50) DEFAULT NULL,

`coordy_cliente` varchar(50) DEFAULT NULL,

`usuario_crea` varchar(100) DEFAULT NULL,

`fecha_crea` varchar(15) NOT NULL,

`usuario_modifica` varchar(100) NOT NULL,

Page 106: Diseño e implementación de un sistema de control de rutas de transporte

2

`fecha_modifica` varchar(15) NOT NULL,

`usuario_elimina` varchar(100) DEFAULT NULL,

`fecha_elimina` varchar(15) DEFAULT NULL,

`estado_cliente` varchar(1) DEFAULT NULL,

PRIMARY KEY (`codigo_cliente`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

2.2. TABLA TBLDETALLERUTAS

CREATE TABLE IF NOT EXISTS `tbldetallerutas` (

`codigo_envio` varchar(10) NOT NULL,

`codigo_ruta` varchar(10) DEFAULT ' ',

`orden_ruta` varchar(10) DEFAULT ' ',

`numguia` varchar(50) DEFAULT ' ',

`codigo_cliente` varchar(10) DEFAULT ' ',

`fecha_recibido` varchar(10) DEFAULT ' ',

`hora_recibido` varchar(10) DEFAULT ' ',

`nombres_recibido` varchar(100) DEFAULT ' ',

`cedula_recibido` varchar(10) DEFAULT ' ',

`parentesco_recibido` varchar(100) DEFAULT ' ',

`observacion_recibido` varchar(500) DEFAULT ' ',

`estado` varchar(15) DEFAULT ' ',

`usuario_crea` varchar(10) DEFAULT ' ',

`fecha_crea` varchar(10) DEFAULT ' ',

`usuario_modifica` varchar(10) DEFAULT ' ',

`fecha_modifica` varchar(10) DEFAULT ' ',

`usuario_elimina` varchar(10) DEFAULT ' ',

`fecha_elimina` varchar(10) DEFAULT ' ',

`estado_guia` varchar(10) DEFAULT ' '

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

2.3. TABLA TBLPARAMETROS

CREATE TABLE IF NOT EXISTS `tblparametros` (

`orden` int(11) NOT NULL AUTO_INCREMENT,

`id` varchar(50) DEFAULT NULL,

Page 107: Diseño e implementación de un sistema de control de rutas de transporte

3

`valor` int(15) DEFAULT NULL,

`descripcion` varchar(100) DEFAULT NULL,

PRIMARY KEY (`orden`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;

2.4. TABLA TBLRASTREO

CREATE TABLE IF NOT EXISTS `tblrastreo` (

`codigo_rastreo` varchar(10) NOT NULL,

`codigo_vehiculo` varchar(10) DEFAULT ' ',

`fechagps_rastreo` date DEFAULT NULL,

`horagps_rastreo` time DEFAULT NULL,

`fechasis_rastreo` date DEFAULT NULL,

`horasis_rastreo` time DEFAULT NULL,

`coorgpsx_rastreo` varchar(100) DEFAULT '',

`coorgpsy_rastreo` varchar(100) DEFAULT '',

`coorsisx_rastreo` varchar(100) DEFAULT '',

`coorsisy_rastreo` varchar(100) DEFAULT '',

PRIMARY KEY (`codigo_rastreo`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

2.5. TABLA TBLRUTAS

CREATE TABLE IF NOT EXISTS `tblrutas` (

`codigo_ruta` varchar(10) NOT NULL,

`codigo_vehiculo` varchar(10) DEFAULT NULL,

`observacion_ruta` varchar(200) DEFAULT NULL,

`usuario_crea` varchar(10) NOT NULL,

`fecha_crea` varchar(15) DEFAULT NULL,

`usuario_modifica` varchar(10) NOT NULL,

`fecha_modifica` varchar(15) NOT NULL,

`usuario_elimina` varchar(10) DEFAULT NULL,

`fecha_elimina` varchar(15) DEFAULT NULL,

`estado_ruta` varchar(1) DEFAULT NULL

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Page 108: Diseño e implementación de un sistema de control de rutas de transporte

4

2.6. TABLA TBLTRANSPORTISTAS

CREATE TABLE IF NOT EXISTS `tbltransportistas` (

`codigo_transportista` varchar(10) NOT NULL,

`cedula_transportista` varchar(10) DEFAULT NULL,

`nombres_transportista` varchar(100) DEFAULT NULL,

`apellidos_transportista` varchar(100) DEFAULT NULL,

`nacionalidad_transportista` varchar(100) DEFAULT NULL,

`ecivil_transportista` varchar(50) DEFAULT NULL,

`fnacimiento_transportista` varchar(15) DEFAULT NULL,

`tsangre_transportista` varchar(15) DEFAULT NULL,

`email_transportista` varchar(100) DEFAULT NULL,

`convencional_transportista` varchar(50) DEFAULT NULL,

`celular_transportista` varchar(50) DEFAULT NULL,

`direccion_transportista` varchar(200) DEFAULT NULL,

`enfermedades_transportista` varchar(200) DEFAULT NULL,

`otros_transportista` varchar(200) DEFAULT NULL,

`aservicio_transportista` varchar(15) DEFAULT NULL,

`cargo_transportista` varchar(50) DEFAULT NULL,

`licencia_moto` varchar(10) DEFAULT NULL,

`licencia_vehiculo` varchar(10) DEFAULT NULL,

`referencia_laboral` varchar(100) DEFAULT NULL,

`experiencia_laboral` varchar(100) DEFAULT NULL,

`nombres_familiar` varchar(100) DEFAULT NULL,

`apellidos_familiar` varchar(100) DEFAULT NULL,

`parentesco_familiar` varchar(50) DEFAULT NULL,

`celular_familiar` varchar(50) DEFAULT NULL,

`convencional_familiar` varchar(50) DEFAULT NULL,

`direccion_familiar` varchar(200) DEFAULT NULL,

`usuario_crea` varchar(10) NOT NULL,

`fecha_crea` varchar(15) DEFAULT NULL,

`usuario_modifica` varchar(10) NOT NULL,

`fecha_modifica` varchar(15) NOT NULL,

`usuario_elimina` varchar(10) DEFAULT NULL,

`fecha_elimina` varchar(15) DEFAULT NULL,

`estado_transportista` varchar(1) DEFAULT NULL,

Page 109: Diseño e implementación de un sistema de control de rutas de transporte

5

PRIMARY KEY (`codigo_transportista`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

2.7. TABLA TBLUNIDADESGPS

CREATE TABLE IF NOT EXISTS `tblunidadesgps` (

`codigo_gps` varchar(10) DEFAULT NULL,

`codigo_vehiculo` varchar(10) DEFAULT NULL,

`modelo_gps` varchar(100) DEFAULT NULL,

`marca_gps` varchar(100) DEFAULT NULL,

`serie_gps` varchar(100) DEFAULT NULL,

`fechacompra_gps` varchar(15) DEFAULT NULL,

`tiempogarantia_gps` varchar(100) DEFAULT NULL,

`proveedor_gps` varchar(200) DEFAULT NULL,

`telefonos_gps` varchar(100) DEFAULT NULL,

`email_gps` varchar(200) DEFAULT NULL,

`ciudad_gps` varchar(200) DEFAULT NULL,

`direccion_gps` varchar(300) DEFAULT NULL,

`chip_gps` varchar(100) DEFAULT NULL,

`sensibilidad_gps` varchar(100) DEFAULT NULL,

`frecuenciagps_gps` varchar(100) DEFAULT NULL,

`frecuenciagsm_gps` varchar(100) DEFAULT NULL,

`limitevelocidad_gps` varchar(100) DEFAULT NULL,

`limitealtitud_gps` varchar(100) DEFAULT NULL,

`precisionvelocidad_gps` varchar(100) DEFAULT NULL,

`exactitudposicional_gps` varchar(100) DEFAULT NULL,

`informacionbateria_gps` varchar(200) DEFAULT NULL,

`duracionbateria_gps` varchar(200) DEFAULT NULL,

`numerotelefonico_gps` varchar(10) DEFAULT NULL,

`operador_gps` varchar(100) DEFAULT NULL,

`estadoservicio_gps` varchar(2) DEFAULT NULL,

`latencia_gps` varchar(3) DEFAULT NULL,

`usuario_crea` varchar(100) DEFAULT NULL,

`fecha_crea` varchar(15) DEFAULT NULL,

`usuario_modifica` varchar(100) DEFAULT NULL,

`fecha_modifica` varchar(15) DEFAULT NULL,

Page 110: Diseño e implementación de un sistema de control de rutas de transporte

6

`usuario_elimina` varchar(100) DEFAULT NULL,

`fecha_elimina` varchar(15) DEFAULT NULL,

`estado_unidadgps` varchar(1) DEFAULT NULL

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

2.8. TABLA TBLUSUARIOS

CREATE TABLE IF NOT EXISTS `tblusuarios` (

`codigo_usuario` varchar(10) NOT NULL DEFAULT '',

`cedula_usuario` varchar(13) DEFAULT NULL,

`nombres_usuario` varchar(100) DEFAULT NULL,

`apellidos_usuario` varchar(100) DEFAULT NULL,

`nacionalidad_usuario` varchar(100) DEFAULT NULL,

`ecivil_usuario` varchar(20) DEFAULT NULL,

`fnacimiento_usuario` varchar(15) DEFAULT NULL,

`email_usuario` varchar(100) DEFAULT NULL,

`convencional_usuario` varchar(100) DEFAULT NULL,

`celular_usuario` varchar(100) DEFAULT NULL,

`direccion_usuario` varchar(200) DEFAULT NULL,

`login_usuario` varchar(100) DEFAULT NULL,

`tipo_usuario` varchar(20) DEFAULT NULL,

`password_usuario` varchar(100) DEFAULT NULL,

`usuario_crea` varchar(10) NOT NULL,

`fecha_crea` varchar(15) DEFAULT NULL,

`usuario_modifica` varchar(10) NOT NULL,

`fecha_modifica` varchar(15) NOT NULL,

`usuario_elimina` varchar(10) DEFAULT NULL,

`fecha_elimina` varchar(15) DEFAULT NULL,

`estado_usuario` varchar(1) DEFAULT NULL,

PRIMARY KEY (`codigo_usuario`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

2.9. TABLA TBLVEHICULOS

CREATE TABLE IF NOT EXISTS `tblvehiculos` (

`codigo_vehiculo` varchar(10) NOT NULL,

Page 111: Diseño e implementación de un sistema de control de rutas de transporte

7

`codigo_transportista` varchar(10) DEFAULT NULL,

`placa_vehiculo` varchar(10) DEFAULT NULL,

`modelo_vehiculo` varchar(50) DEFAULT NULL,

`marca_vehiculo` varchar(50) DEFAULT NULL,

`porigen_vehiculo` varchar(100) DEFAULT NULL,

`anio_vehiculo` varchar(10) DEFAULT NULL,

`cilindraje_vehiculo` varchar(10) DEFAULT NULL,

`combustible_vehiculo` varchar(100) DEFAULT NULL,

`transmision_vehiculo` varchar(100) DEFAULT NULL,

`clase_vehiculo` varchar(50) DEFAULT NULL,

`fcompra_vehiculo` varchar(15) DEFAULT NULL,

`fmatricula_vehiculo` varchar(15) DEFAULT NULL,

`canton_vehiculo` varchar(100) DEFAULT NULL,

`color1_vehiculo` varchar(100) DEFAULT NULL,

`color2_vehiculo` varchar(100) DEFAULT NULL,

`nmotor_vehiculo` varchar(100) DEFAULT NULL,

`nchasis_vehiculo` varchar(100) DEFAULT NULL,

`ncarroceria_vehiculo` varchar(100) DEFAULT NULL,

`nllantas_vehiculo` varchar(5) DEFAULT NULL,

`npasajeros_vehiculo` varchar(5) DEFAULT NULL,

`cmaxima_vehiculo` varchar(100) DEFAULT NULL,

`otros_vehiculo` varchar(200) DEFAULT NULL,

`usuario_crea` varchar(10) NOT NULL,

`fecha_crea` varchar(15) DEFAULT NULL,

`usuario_modifica` varchar(10) NOT NULL,

`fecha_modifica` varchar(15) NOT NULL,

`usuario_elimina` varchar(10) DEFAULT NULL,

`fecha_elimina` varchar(15) DEFAULT NULL,

`estado_vehiculo` varchar(1) DEFAULT NULL,

PRIMARY KEY (`codigo_vehiculo`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Page 112: Diseño e implementación de un sistema de control de rutas de transporte

1

ANEXO 6.

LA CASA DEL TOLDO®

GPS

DICCIONARIO DE DATOS

Page 113: Diseño e implementación de un sistema de control de rutas de transporte

2

ÍNDICE DE CONTENIDOS

1. TABLA CLIENTES (TBLCLIENTES) 3

2. TABLA DETALLE DE RUTAS (TBLDETALLERUTAS) 4

3. TABLA PARÁMETROS (TBLPARAMETROS) 6

4. TABLA RASTREO (TBLRASTREO) 6

5. TABLA RUTAS (TBLRUTAS) 7

6. TABLA TRANSPORTISTAS (TBLTRANSPORTISTAS) 7

7. TABLA UNIDADES GPS (TBLUNIDADESGPS) 10

8. TABLA USUARIOS (TBLUSUARIOS) 11

9. TABLA VEHÍCULOS (TBLVEHICULOS) 13

Page 114: Diseño e implementación de un sistema de control de rutas de transporte

3

1. TABLA CLIENTES (TBLCLIENTES)

Columna Tipo Nulo Comentarios

codigo_cliente varchar(10) No Código del cliente que recibe el servicio

de mercadería.

cedula_cliente varchar(13) Sí Cédula de Identidad del cliente.

nombres_cliente varchar(100) Sí Nombres del cliente.

apellidos_cliente varchar(100) Sí Apellidos del cliente.

nacionalidad_cliente varchar(100) Sí Nacionalidad del cliente.

ecivil_cliente varchar(50) Sí Estado civil del cliente.

fnacimiento_cliente varchar(15) Sí Fecha de nacimiento del cliente.

email_cliente varchar(100) Sí Dirección de correo electrónico del

cliente.

convencional_cliente varchar(50) Sí Número convencional del cliente.

celular_cliente varchar(50) Sí Número celular del cliente.

otros_cliente varchar(200) Sí Otros datos relevantes del cliente.

sector_cliente varchar(100) Sí Sector donde se encuentra el cliente

para identificar mejor su ubicación y

características.

parroquia_cliente varchar(100) Sí Parroquia a la que pertenece el lugar

donde se encuentra el cliente.

coop_cliente varchar(100) Sí Cooperativa donde se encuentra el

cliente.

direccion_cliente varchar(200) Sí Dirección del cliente, lo más clara y

exacta posible.

referencia_cliente varchar(100) Sí Referencia para complementar la

dirección del cliente y apoyar a la mejor

ubicación del lugar.

coordx_cliente varchar(50) Sí Coordenada geográfica en el eje X del

lugar donde se encuentra el cliente.

coordy_cliente varchar(50) Sí Coordenada geográfica en el eje Y del

lugar donde se encuentra el cliente.

usuario_crea varchar(10) Sí Campo de auditoría. Registra el login

Page 115: Diseño e implementación de un sistema de control de rutas de transporte

4

del usuario que creó un determinado

cliente.

fecha_crea varchar(15) No Campo de auditoría. Registra la fecha

de creación de un determinado cliente.

usuario_modifica varchar(10) No Campo de auditoría. Registra el login

del usuario que modificó un

determinado cliente.

fecha_modifica varchar(15) No Campo de auditoría. Registra la fecha

de modificación de un determinado

cliente.

usuario_elimina varchar(10) Sí Campo de auditoría. Registra el login

del usuario que eliminó o inactivó un

determinado cliente.

fecha_elimina varchar(15) Sí Campo de auditoría. Registra la fecha

de eliminación o desactivación del

cliente.

estado_cliente varchar(1) Sí Estado del cliente. Determina si el

mismo se encuentra activado o

desactivado.

2. TABLA DETALLE DE RUTAS (TBLDETALLERUTAS)

Columna Tipo Nulo Comentarios

codigo_envio varchar(10) No Código del envío de la mercadería.

codigo_ruta varchar(10) Sí Código de la ruta que debe cubrir el

transportista.

orden_ruta varchar(10) Sí Orden asignada a una ruta que

identifica su prioridad.

Numguia varchar(50) Sí Número de guía, que contiene

información relevante sobre la

mercadería a ser entregada.

codigo_cliente varchar(10) Sí Un cliente puede tener varias rutas,

debido a que puede realizar varios

pedidos.

Page 116: Diseño e implementación de un sistema de control de rutas de transporte

5

fecha_recibido varchar(15) Sí Fecha en la que el cliente, o alguna

persona autorizada por el mismo

recibió la mercadería.

hora_recibido varchar(10) Sí Hora en la que el cliente, o alguna

persona autorizada por el mismo

recibió la mercadería.

nombres_recibido varchar(100) Sí Nombres de la persona que recibió la

mercadería, ya sea el cliente u otra

persona autorizada.

cedula_recibido varchar(10) Sí Cédula de la persona que recibió la

mercadería.

parentesco_recibido varchar(100) Sí Si la mercadería no fue recibida por el

cliente, se indica el parentesco con el

mismo de quien lo hizo en su lugar.

observacion_recibido varchar(500) Sí Notas adicionales del proceso.

Estado varchar(15) Sí Estado de la ruta.

usuario_crea varchar(10) Sí Campo de auditoría. Registra el login

del usuario que creó una determinada

ruta.

fecha_crea varchar(15) Sí Campo de auditoría. Registra la fecha

de creación de una determinada ruta.

usuario_modifica varchar(10) Sí Campo de auditoría. Registra el login

del usuario que modificó una

determinada ruta.

fecha_modifica varchar(15) Sí Campo de auditoría. Registra la fecha

de modificación de una determinada

ruta.

usuario_elimina varchar(10) Sí Campo de auditoría. Registra el login

del usuario que eliminó o inactivó una

determinada ruta.

fecha_elimina varchar(15) Sí Campo de auditoría. Registra la fecha

de eliminación o desactivación de la

ruta.

Page 117: Diseño e implementación de un sistema de control de rutas de transporte

6

estado_guia varchar(1) Sí

Estado de la guía. Determina si la

misma se encuentra activada o

desactivada.

3. TABLA PARÁMETROS (TBLPARAMETROS)

Columna Tipo Nulo Comentarios

Orden int(11) No Orden para identificar el parámetro.

Id varchar(50) Sí Id del parámetro.

Valor int(15) Sí Valor del parámetro.

Descripción varchar(100) Sí Descripción del parámetro.

4. TABLA RASTREO (TBLRASTREO)

Columna Tipo Nulo Comentarios

codigo_rastreo varchar(10) No Código del rastreo de la unidad de

transporte.

codigo_vehiculo varchar(10) Sí Código del vehículo a ser rastreado.

fechagps_rastreo date Sí Fecha de rastreo GPS.

horagps_rastreo time Sí Hora de rastreo GPS.

fechasis_rastreo date Sí Fecha del sistema.

horasis_rastreo time Sí Hora del sistema.

coorgpsx_rastreo varchar(100) Sí Coordenada en el eje de las X del

dispositivo GPS.

coorgpsy_rastreo varchar(100) Sí Coordenada en el eje de las Y del

dispositivo GPS.

coorsisx_rastreo varchar(100) Sí Coordenada en el eje de las X de la

aplicación.

coorsisy_rastreo varchar(100) Sí Coordenada en el eje de las Y de la

aplicación.

Page 118: Diseño e implementación de un sistema de control de rutas de transporte

7

5. TABLA RUTAS (TBLRUTAS)

Columna Tipo Nulo Comentarios

codigo_ruta varchar(10) No Código de la ruta a cumplir.

codigo_vehiculo varchar(10) Sí Código del vehículo que va a cumplir

la ruta.

observacion_ruta varchar(200) Sí Notas respecto a la ruta.

usuario_crea varchar(10) No Campo de auditoría. Registra el login

del usuario que creó una determinada

ruta.

fecha_crea varchar(15) Sí Campo de auditoría. Registra la fecha

de creación de una determinada ruta.

usuario_modifica varchar(10) No Campo de auditoría. Registra el login

del usuario que modificó una

determinada ruta.

fecha_modifica varchar(15) No Campo de auditoría. Registra la fecha

de modificación de una determinada

ruta.

usuario_elimina varchar(10) Sí Campo de auditoría. Registra el login

del usuario que eliminó o inactivó una

determinada ruta.

fecha_elimina varchar(15) Sí Campo de auditoría. Registra la fecha

de eliminación o desactivación de la

ruta.

estado_ruta varchar(1) Sí Estado de la ruta. Determina si la

misma se encuentra activada o

desactivada.

6. TABLA TRANSPORTISTAS (TBLTRANSPORTISTAS)

Columna Tipo Nulo Comentarios

codigo_transportista varchar(10) No Código de la persona que se va

a encargar del traslado de la

mercadería.

Page 119: Diseño e implementación de un sistema de control de rutas de transporte

8

cedula_transportista varchar(10) Sí Cédula de Identidad del

trasportista.

nombres_transportista varchar(100) Sí Nombres del transportista.

apellidos_transportista varchar(100) Sí Apellidos del transportista.

nacionalidad_transportista varchar(100) Sí Nacionalidad del transportista.

ecivil_transportista varchar(50) Sí Estado civil del transportista.

fnacimiento_transportista varchar(15) Sí Fecha de nacimiento del

transportista.

tsangre_transportista varchar(15) Sí Tipo de sangre del transportista,

en caso de alguna emergencia.

email_transportista varchar(100) Sí Dirección de correo electrónico

del transportista.

convencional_transportista varchar(50) Sí Número convencional del

transportista.

celular_transportista varchar(50) Sí Número celular del transportista.

direccion_transportista varchar(200) Sí Dirección domiciliaria del

transportista.

enfermedades_transportista varchar(200) Sí Enfermedades del transportista.

Es necesario estar al tanto de

las mismas, para conocer de

qué forma se atenderá al

empleado en caso de

emergencia.

otros_transportista varchar(200) Sí Notas adicionales acerca del

transportista.

aservicio_transportista varchar(15) Sí Años de servicio del

transportista.

cargo_transportista varchar(50) Sí Cargos del transportista para

verificar si es conductor o

ayudante).

licencia_moto varchar(10) Sí Licencia vehículo.

licencia_vehiculo varchar(10) Sí Licencia de moto.

referencia_laboral varchar(100) Sí Referencias laborales del

Page 120: Diseño e implementación de un sistema de control de rutas de transporte

9

transportista.

experiencia_laboral varchar(100) Sí Detalles sobre experiencia

laboral del transportista.

nombres_familiar varchar(100) Sí Nombres de un familiar del

transportista, en caso de

emergencia.

apellidos_familiar varchar(100) Sí Apellidos del familiar.

parentesco_familiar varchar(50) Sí Parentesco del familiar.

celular_familiar varchar(50) Sí Número celular del familiar.

convencional_familiar varchar(50) Sí Número convencional del

familiar.

direccion_familiar varchar(200) Sí Dirección del familiar.

usuario_crea varchar(10) No Campo de auditoría. Registra el

login del usuario que creó un

determinado transportista.

fecha_crea varchar(15) Sí Campo de auditoría. Registra la

fecha de creación de un

determinado transportista.

usuario_modifica varchar(10) No Campo de auditoría. Registra el

login del usuario que modificó

un determinado transportista.

fecha_modifica varchar(15) No Campo de auditoría. Registra la

fecha de modificación de un

determinado transportista.

usuario_elimina varchar(10) Sí Campo de auditoría. Registra el

login del usuario que eliminó o

inactivó un determinado

transportista.

fecha_elimina varchar(15) Sí Campo de auditoría. Registra la

fecha de eliminación o

desactivación del transportista.

estado_transportista varchar(1) Sí Estado del transportista.

Determina si el mismo se

Page 121: Diseño e implementación de un sistema de control de rutas de transporte

10

encuentra activado o

desactivado.

7. TABLA UNIDADES GPS (TBLUNIDADESGPS)

Columna Tipo Nulo Comentarios

codigo_gps varchar(10) No Código del localizador GPS.

codigo_vehiculo varchar(10) No Código del vehículo al que se le asigna

el localizador GPS.

modelo_gps varchar(100) Sí Modelo del GPS.

marca_gps varchar(100) No Marca del GPS.

serie_gps varchar(100) Sí Número de serie del GPS.

fechacompra_gps varchar(15) Sí Fecha de compra del GPS.

tiempogarantia_gps varchar(100) Sí Tiempo de garantía del GPS.

proveedor_gps varchar(200) Sí Nombre del proveedor del cual se

adquirió el localizador GPS.

telefonos_gps varchar(100) Sí Teléfonos del proveedor del GPS.

email_gps varchar(200) Sí E-mail del proveedor del GPS.

ciudad_gps varchar(200) Sí Ciudad donde se encuentra el

proveedor del GPS.

direccion_gps varchar(300) Sí Dirección del proveedor del GPS.

chip_gps varchar(100) Sí Tipo de chip que posee el GPS.

sensibilidad_gps varchar(100) Sí Sensibilidad del GPS.

frecuenciagps_gps varchar(100) Sí Frecuencia GPS del GPS.

frecuenciagsm_gps varchar(100) Sí Frecuencia GSM del GPS.

limitevelocidad_gps varchar(100) Sí Límite de velocidad del GPS.

limitealtitud_gps varchar(100) Sí Límite de altitud del GPS.

precisionvelocidad_gps varchar(100) Sí Precisión de velocidad del GPS.

exactitudposicional_gps varchar(100) Sí Exactitud posicional del GPS.

informacionbateria_gps varchar(200) Sí Información de la batería del GPS.

duracionbateria_gps varchar(200) Sí Duración de la batería del GPS.

numerotelefonico_gps varchar(10) No Número telefónico del GPS.

Page 122: Diseño e implementación de un sistema de control de rutas de transporte

11

operador_gps varchar(100) No Operador del chip del GPS.

estadoservicio_gps varchar(2) Sí Estado de servicio del GPS.

latencia_gps varchar(3) Sí Latencia del GPS.

usuario_crea varchar(10) No Campo de auditoría. Registra el login

del usuario que creó una determinada

unidad GPS.

fecha_crea varchar(15) Sí Campo de auditoría. Registra la fecha

de creación de una determinada

unidad GPS.

usuario_modifica varchar(10) No Campo de auditoría. Registra el login

del usuario que modificó una

determinada unidad GPS.

fecha_modifica varchar(15) No Campo de auditoría. Registra la fecha

de modificación de una determinada

unidad GPS.

usuario_elimina varchar(10) Sí Campo de auditoría. Registra el login

del usuario que eliminó o inactivó una

determinada unidad GPS.

fecha_elimina varchar(15) Sí Campo de auditoría. Registra la fecha

de eliminación o desactivación de la

unidad GPS.

estado_unidadgps varchar(1) Sí Estado de la unidad GPS. Determina si

la misma se encuentra activada o

desactivada.

8. TABLA USUARIOS (TBLUSUARIOS)

Columna Tipo Nulo Comentarios

codigo_usuario varchar(10) No Código del usuario.

cedula_usuario varchar(13) Sí Cédula del usuario.

nombres_usuario varchar(100) Sí Nombres del usuario.

apellidos_usuario varchar(100) Sí Apellidos del usuario.

nacionalidad_usuario varchar(100) Sí Nacionalidad del usuario.

ecivil_usuario varchar(20) Sí Estado civil del usuario.

Page 123: Diseño e implementación de un sistema de control de rutas de transporte

12

fnacimiento_usuario varchar(15) Sí Fecha de nacimiento del usuario.

email_usuario varchar(100) Sí Dirección de correo electrónico

del usuario.

convencional_usuario varchar(100) Sí Número convencional del

usuario.

celular_usuario varchar(100) Sí Número celular del usuario.

direccion_usuario varchar(200) Sí Dirección domiciliaria del usuario.

login_usuario varchar(100) Sí Login del usuario.

tipo_usuario varchar(20) Sí Tipo de usuario.

password_usuario varchar(100) Sí Contraseña.

usuario_crea varchar(10) No Campo de auditoría. Registra el

login del usuario que creó un

determinado usuario.

fecha_crea varchar(15) Sí Campo de auditoría. Registra la

fecha de creación de un

determinado usuario.

usuario_modifica varchar(10) No Campo de auditoría. Registra el

login del usuario que modificó un

determinado usuario.

fecha_modifica varchar(15) No Campo de auditoría. Registra la

fecha de modificación de un

determinado usuario.

usuario_elimina varchar(10) Sí Campo de auditoría. Registra el

login del usuario que eliminó o

inactivó un determinado usuario.

fecha_elimina varchar(15) Sí Campo de auditoría. Registra la

fecha de eliminación o

desactivación del usuario.

estado_usuario varchar(1) Sí Estado del usuario. Determina si

el mismo se encuentra activado

o desactivado.

Page 124: Diseño e implementación de un sistema de control de rutas de transporte

13

9. TABLA VEHÍCULOS (TBLVEHICULOS)

Columna Tipo Nulo Comentarios

codigo_vehiculo varchar(10) No Código del vehículo que

trasladará la mercadería.

codigo_transportista varchar(10) Sí Código del transportista

responsable del vehículo.

placa_vehiculo varchar(10) Sí Placa del vehículo.

modelo_vehiculo varchar(50) Sí Modelo del vehículo.

marca_vehiculo varchar(50) Sí Marca del vehículo.

porigen_vehiculo varchar(100) Sí País de origen del vehículo.

anio_vehiculo varchar(10) Sí Año del vehículo.

cilindraje_vehiculo varchar(10) Sí Cilindraje del vehículo.

combustible_vehiculo varchar(100) Sí Combustible del vehículo.

transmision_vehiculo varchar(100) Sí Transmisión del vehículo.

clase_vehiculo varchar(50) Sí Clase del vehículo.

fcompra_vehiculo varchar(15) Sí Fecha de compra del vehículo.

fmatricula_vehiculo varchar(15) Sí Fecha de matrícula del vehículo.

canton_vehiculo varchar(100) Sí Cantón al que pertenece el

vehículo.

color1_vehiculo varchar(100) Sí Color del vehículo.

color2_vehiculo varchar(100) Sí Otro color del vehículo, en caso

de que lo hubiera.

nmotor_vehiculo varchar(100) Sí Motor del vehículo.

nchasis_vehiculo varchar(100) Sí Chasís del vehículo.

ncarroceria_vehiculo varchar(100) Sí Carrocería del vehículo.

nllantas_vehiculo varchar(5) Sí Número de llantas del vehículo.

npasajeros_vehiculo varchar(5) Sí Número de pasajeros que

permite el vehículo.

cmaxima_vehiculo varchar(100) Sí Capacidad máxima del vehículo.

otros_vehiculo varchar(200) Sí Notas adicionales acerca del

vehículo.

Page 125: Diseño e implementación de un sistema de control de rutas de transporte

14

usuario_crea varchar(10) No Campo de auditoría. Registra el

login del usuario que creó un

determinado vehículo.

fecha_crea varchar(15) Sí Campo de auditoría. Registra la

fecha de creación de un

determinado vehículo.

usuario_modifica varchar(10) No Campo de auditoría. Registra el

login del usuario que modificó un

determinado vehículo.

fecha_modifica varchar(15) No Campo de auditoría. Registra la

fecha de modificación de un

determinado vehículo.

usuario_elimina varchar(10) Sí Campo de auditoría. Registra el

login del usuario que eliminó o

inactivó un determinado vehículo

fecha_elimina varchar(15) Sí Campo de auditoría. Registra la

fecha de eliminación o

desactivación del vehículo.

estado_vehiculo varchar(1) Sí Estado del vehículo. Determina

si el mismo se encuentra

activado o desactivado.

Page 126: Diseño e implementación de un sistema de control de rutas de transporte

15

ANEXO 7.

DIAGRAMAS DE SECUENCIA

1. INGRESO AL SISTEMA

2. INGRESO DE DATOS

Rutas y puntos de entrega

Page 127: Diseño e implementación de un sistema de control de rutas de transporte

16

3. INGRESO DE DATOS

Usuarios, Vehículos, Transportistas, Unidades Gps

4. ELIMINACIÓN DE DATOS

Page 128: Diseño e implementación de un sistema de control de rutas de transporte

17

5. CONSULTA/REPORTE DE DATOS

6. EDICIÓN DE DATOS

Page 129: Diseño e implementación de un sistema de control de rutas de transporte

18

7. REPORTE DE SEGUIMIENTO DE VEHÍCULOS

8. REPORTE DE RUTAS REALIZADAS POR LOS VEHÍCULOS

9. ACTIVACIÓN DE SERVICIO GPS

Page 130: Diseño e implementación de un sistema de control de rutas de transporte

19

ANEXO 8.

DIAGRAMA CASOS DE USO

1. INGRESO AL SISTEMA

2. INGRESO DE DATOS

Rutas y puntos de entrega

Page 131: Diseño e implementación de un sistema de control de rutas de transporte

20

3. INGRESO DE DATOS

Usuarios, Vehículos, Transportistas y Unidades GPS

4. ELIMINACIÓN DE DATOS

Page 132: Diseño e implementación de un sistema de control de rutas de transporte

21

5. CONSULTA/REPORTE DE DATOS

6. EDICIÓN DE DATOS

Page 133: Diseño e implementación de un sistema de control de rutas de transporte

22

7. REPORTE DE SEGUIMIENTO DE VEHÍCULOS

8. REPORTE DE RUTAS REALIZADAS POR LOS VEHÍCULOS

Page 134: Diseño e implementación de un sistema de control de rutas de transporte

23

9. ACTIVACIÓN DEL SERVICIO GPS

Page 135: Diseño e implementación de un sistema de control de rutas de transporte

1

ANEXO 9.

LA CASA DEL TOLDO®

GPS

MANUAL DEL PROGRAMADOR

Page 136: Diseño e implementación de un sistema de control de rutas de transporte

2

ÍNDICE DE CONTENIDOS

INTRODUCCIÓN 3

1. APLICACIÓN 3

1.1. CLASES 3

1.1.1. Clientes 4

1.1.2. Parámetros 22

1.1.3. Rastreo 28

1.1.4. Recibos de Mercadería 30

1.1.5. Rutas 36

1.1.6. Transportistas 46

1.1.7. Unidades GPS 67

1.1.8. Usuarios 90

1.1.9. Variables 97

1.1.10. Vehículos 98

Page 137: Diseño e implementación de un sistema de control de rutas de transporte

3

INTRODUCCIÓN

El propósito de este manual del programador es dar a conocer al lector todos los listados

del programa realizado. Para ello se tratará de forma amena y concisa un repaso de

todas las Clases, Formularios, Módulos, entre otros, con el fin de que el usuario del

conjunto pueda modificar a su gusto algunos de los valores y parámetros de las funciones

expuestas.

1. APLICACIÓN

La presente aplicación, se encuentra realizada en el lenguaje de programación Visual

Basic 2008 Express Edition, el cual cuenta con un sinnúmero de archivos, de entre los

cuales el principal es el siguiente: InAplicada.sln

Este fichero, se encuentra conjuntamente con una carpeta que contiene toda la

información acerca de la aplicación, la cual se detalla a continuación:

En esta carpeta, se encuentra la clasificación completa de cada una de las partes en

las cuales se divide la aplicación, como Formularios, Clases, Recursos, entre otros,

los cuales se detallarán a continuación.

1.1. CLASES

A continuación se presenta detalladamente cada una de las clases generadas,

conjuntamente con todos sus métodos, para crear un manejo eficiente de recursos,

optimizando tiempo al momento de acceder a consultas generadas con anterioridad

y adaptándolas a nuevos formularios.

Page 138: Diseño e implementación de un sistema de control de rutas de transporte

4

1.1.1. Clientes

La clase Clientes, dentro del proyecto se encuentra asignada con el nombre

ClsClientes.vb.

El código empleado en la clase ClsClientes, se detalla a continuación:

' Importo clases para la conexión

Imports System

Imports System.Data

Imports System.Data.Odbc

' Importo clases para la impresión

Imports System.IO

Imports System.Drawing

Imports System.Drawing.Printing

Imports System.Windows.Forms

Al momento de ingresar nuevos registros en la tabla de clientes, se utilizó el

siguiente método:

' Función Nuevo Cliente

Sub Nuevo(ByVal Codigo As String, ByVal Cedula As String, ByVal Nombres As

String, ByVal Apellidos As String, ByVal Nacionalidad As String, ByVal EstadoCivil

As String, ByVal FechaNacimiento As String, ByVal Email As String, ByVal

Convencional As String, ByVal Celular As String, ByVal Otros As String, ByVal

Sector As String, ByVal Parroquia As String, ByVal Cooperativa As String, ByVal

Direccion As String, ByVal Referencia As String, ByVal CoordenadaX As String,

ByVal CoordenadaY As String)

MiConexion.open()

Dim Cadena As String

Cadena = "insert into tblclientes values('" & Codigo & "', '" & _

Cedula & "', '" & _

Nombres & "', '" & _

Apellidos & "', '" & _

Page 139: Diseño e implementación de un sistema de control de rutas de transporte

5

Nacionalidad & "', '" & _

EstadoCivil & "', '" & _

FechaNacimiento & "', '" & _

Email & "', '" & _

Convencional & "', '" & _

Celular & "', '" & _

Otros & "', '" & _

Sector & "', '" & _

Parroquia & "', '" & _

Cooperativa & "', '" & _

Direccion & "', '" & _

Referencia & "', '" & _

CoordenadaX & "', '" & _

CoordenadaY & "', '" & _

CodigoUsuario() & "', '" & _

Date.Today & "', '" & _

" " & "', '" & _

" " & "', '" & _

" " & "', '" & _

" " & "', 'a')"

Dim ComandoSql As New OdbcCommand(Cadena, MiConexion)

ComandoSql.ExecuteNonQuery()

MiConexion.close()

End Sub

Para realizar modificaciones en los registros existentes en la tabla de clientes,

se utilizó el siguiente código:

' Función Editar Cliente

Sub Editar(ByVal Codigo As String, ByVal Cedula As String, ByVal Nombres As

String, ByVal Apellidos As String, ByVal Nacionalidad As String, ByVal EstadoCivil

As String, ByVal FechaNacimiento As String, ByVal Email As String, ByVal

Convencional As String, ByVal Celular As String, ByVal Otros As String, ByVal

Sector As String, ByVal Parroquia As String, ByVal Cooperativa As String, ByVal

Page 140: Diseño e implementación de un sistema de control de rutas de transporte

6

Direccion As String, ByVal Referencia As String, ByVal CoordenadaX As String,

ByVal CoordenadaY As String)

MiConexion.open()

Dim Cadena As String

Cadena = "update tblclientes set cedula_cliente='" & Cedula & _

"', nombres_cliente='" & Nombres & _

"', apellidos_cliente='" & Apellidos & _

"', nacionalidad_cliente='" & Nacionalidad & _

"', ecivil_cliente='" & EstadoCivil & _

"', fnacimiento_cliente='" & FechaNacimiento & _

"', email_cliente='" & Email & _

"', convencional_cliente='" & Convencional & _

"', celular_cliente='" & Celular & _

"', otros_cliente='" & Otros & _

"', sector_cliente='" & Sector & _

"', parroquia_cliente='" & Parroquia & _

"', coop_cliente='" & Cooperativa & _

"', direccion_cliente='" & Direccion & _

"', referencia_cliente='" & Referencia & _

"', coordx_cliente='" & CoordenadaX & _

"', coordy_cliente='" & CoordenadaY & _

"', usuario_modifica='" &CodigoUsuario() & _

"', fecha_modifica='" & Date.Today & _

"' where codigo_cliente='" & Codigo & "'"

Dim ComandoSql As New OdbcCommand(Cadena, MiConexion)

ComandoSql.ExecuteNonQuery()

MiConexion.close()

End Sub

Para eliminar registros existentes en la tabla clientes, se empleó el siguiente

código:

' Función Eliminar Cliente

Page 141: Diseño e implementación de un sistema de control de rutas de transporte

7

Sub Eliminar(ByVal Codigo As String)

MiConexion.open()

Dim Cadena As String

Cadena = "update tblclientes set estado_cliente='i', fecha_elimina='" &

Date.Today & "', usuario_elimina='" &CodigoUsuario() & "' where codigo_cliente='"

& Codigo & "'"

Dim ComandoSql As New OdbcCommand(Cadena, MiConexion)

ComandoSql.ExecuteNonQuery()

MiConexion.close()

End Sub

Se realizaron consultas dinámicas, que muestran la información de los clientes

mediante búsquedas, empleando los campos de código de cliente, cédula,

nombres y apellidos, detalladas en el siguiente código:

' Realiza una consulta dinámica en el formulario Clientes

Sub Consulta1(ByVal Consulta As String)

MiConexion.Open()

Dim i As Integer = 0

If Consulta = "" Then

i = 0

Else

Dim Consultita As String = "SELECT * FROM tblclientes WHERE (

nombres_cliente LIKE '%" & Consulta & "%' or apellidos_cliente like '%" & Consulta

& "%' or codigo_cliente like '%" & Consulta & "%' or cedula_cliente like '%" &

Consulta & "%' ) and estado_cliente='a'"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmClientes.DgvBusqueda.Rows.Clear()

While (DrLectura.Read())

FrmClientes.DgvBusqueda.Rows.Add(DrLectura("codigo_cliente"),

DrLectura("cedula_cliente"), DrLectura("nombres_cliente"),

DrLectura("apellidos_cliente"), DrLectura("nacionalidad_cliente"),

DrLectura("ecivil_cliente"), DrLectura("fnacimiento_cliente"),

Page 142: Diseño e implementación de un sistema de control de rutas de transporte

8

DrLectura("email_cliente"), DrLectura("convencional_cliente"),

DrLectura("celular_cliente"), DrLectura("otros_cliente"), DrLectura("sector_cliente"),

DrLectura("parroquia_cliente"), DrLectura("coop_cliente"),

DrLectura("direccion_cliente"),DrLectura("referencia_cliente"),

DrLectura("coordx_cliente"), DrLectura("coordy_cliente"))

i += 1

End While

DrLectura.Close()

End If

MiConexion.Close()

If i > 0 Then

FrmClientes.PnlBusqueda.Visible = True

Else

FrmClientes.PnlBusqueda.Visible = False

i = 0

End If

End Sub

Se realizó una consulta dinámica de clientes, para el formulario de generación

de rutas, mediante la utilización del siguiente código:

' Realiza una consulta de Clientes en el formulario Rutas

Sub Consulta2(ByVal Consulta As String)

MiConexion.Open()

Dim Consultita As String = "SELECT * FROM tblclientes WHERE ( nombres_cliente

LIKE '%" & Consulta & "%' or apellidos_cliente like '%" & Consulta & "%' or

codigo_cliente like '%" & Consulta & "%' or cedula_cliente like '%" & Consulta & "%'

) and estado_cliente='a'"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmRutas.DgvConsultaCliente.Rows.Clear()

While (DrLectura.Read())

Page 143: Diseño e implementación de un sistema de control de rutas de transporte

9

FrmRutas.DgvConsultaCliente.Rows.Add(DrLectura("codigo_cliente"),

DrLectura("cedula_cliente"), DrLectura("nombres_cliente"),

DrLectura("apellidos_cliente"), DrLectura("direccion_cliente"))

End While

DrLectura.Close()

MiConexion.Close()

End Sub

El informe general de clientes se generó empleando el siguiente código:

' Realiza una consulta dinámica para generar un reporte de Clientes

Sub Informe(ByVal Consulta As String)

MiConexion.Open()

Dim Consultita As String = "SELECT * FROM tblclientes WHERE (

nombres_cliente LIKE '%" & Consulta & "%' or apellidos_cliente like '%" & Consulta

& "%' or codigo_cliente like '%" & Consulta & "%' or cedula_cliente like '%" &

Consulta & "%' ) and estado_cliente='a' order by codigo_cliente"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmRepClientes.DgvInforme.Rows.Clear()

While (DrLectura.Read())

FrmRepClientes.DgvInforme.Rows.Add(DrLectura("codigo_cliente"),

DrLectura("cedula_cliente"), DrLectura("nombres_cliente"),

DrLectura("apellidos_cliente"), DrLectura("convencional_cliente") & " " &

DrLectura("celular_cliente"), DrLectura("direccion_cliente"),

DrLectura("referencia_cliente"))

End While

DrLectura.Close()

MiConexion.Close()

End Sub

Para la generación del formulario de auditoría, se empleó el siguiente código:

' Realiza una consulta general de todos los registros en la tabla Clientes

Sub Auditoria(ByVal Consulta As String)

Page 144: Diseño e implementación de un sistema de control de rutas de transporte

10

MiConexion.Open()

Dim Consultita As String = "SELECT * FROM tblclientes WHERE (

nombres_cliente LIKE '%" & Consulta & "%' or apellidos_cliente like '%" & Consulta

& "%' or codigo_cliente like '%" & Consulta & "%' or cedula_cliente like '%" &

Consulta & "%' ) order by codigo_cliente"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmAudClientes.DgvInforme.Rows.Clear()

While (DrLectura.Read())

FrmAudClientes.DgvInforme.Rows.Add(DrLectura("codigo_cliente"),

DrLectura("cedula_cliente"), DrLectura("nombres_cliente"),

DrLectura("apellidos_cliente"), DrLectura("usuario_crea"), DrLectura("fecha_crea"),

DrLectura("usuario_modifica"), DrLectura("fecha_modifica"),

DrLectura("usuario_elimina"), DrLectura("fecha_elimina"),

DrLectura("estado_cliente"))

End While

DrLectura.Close()

MiConexion.Close()

End Sub

Se realizó la impresión de un registro específico de la tabla clientes, empleando

el siguiente código:

' Realiza la impresión de un registro de la tabla Clientes

Sub ImprimirRegistro()

Dim pd As New PrintDocument()

AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage1

pd.Print()

End Sub

Private Sub pd_PrintPage1(ByVal sender As Object, ByVal e As

System.Drawing.Printing.PrintPageEventArgs)

' La fuente que vamos a usar para imprimir.

Dim printFont1 As System.Drawing.Font = New Font("Times New Roman", 12,

FontStyle.Bold)

Dim printFont2 As System.Drawing.Font = New Font("Times New Roman", 12)

Page 145: Diseño e implementación de un sistema de control de rutas de transporte

11

Dim printFont3 As System.Drawing.Font = New Font("Times New Roman", 10,

FontStyle.Bold)

Dim printFont4 As System.Drawing.Font = New Font("Times New Roman", 10)

Dim printFont5 As System.Drawing.Font = New Font("Times New Roman", 9,

FontStyle.Bold)

Dim printFont6 As System.Drawing.Font = New Font("Times New Roman", 9)

Dim printFont7 As System.Drawing.Font = New Font("Times New Roman", 6)

Dim topMargin As Single = e.MarginBounds.Top

Dim yPos As Single = 0

Dim xPos As Single = 30

Dim linesPerPage As Single = 0

Dim count As Integer = 0

Dim Texto As String = ""

linesPerPage = e.MarginBounds.Height / printFont2.GetHeight(e.Graphics)

yPos = topMargin + (count * printFont2.GetHeight(e.Graphics))

yPos = 90

xPos = 80

' Graficación de líneas

e.Graphics.DrawLine(Pens.Black, 70, 85, 750, 85)

e.Graphics.DrawLine(Pens.Black, 70, 155, 750, 155)

e.Graphics.DrawLine(Pens.Black, 70, 500, 750, 500)

e.Graphics.DrawLine(Pens.Black, 70, 85, 70, 500)

e.Graphics.DrawLine(Pens.Black, 750, 85, 750, 500)

e.Graphics.DrawLine(Pens.Black, 670, 85, 670, 155)

' Graficación de logotipo

e.Graphics.DrawImage(FrmMenu.PicLogo.Image, 90, 95, 50, 51)

Texto = FrmMenu.LblCodigo.Text

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680, 100)

Texto = FrmMenu.LblUsuario.Text

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680, 112)

Texto = "Pág.: 1/1"

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680, 124)

Page 146: Diseño e implementación de un sistema de control de rutas de transporte

12

Texto = NombreSistema

e.Graphics.DrawString(Texto, printFont1, System.Drawing.Brushes.Black, xPos +

80, yPos)

yPos += 20

Texto = "Los mejores productos, a los mejores precios"

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

80, yPos)

yPos += 15

Texto = "Informe de Clientes"

e.Graphics.DrawString(Texto, printFont3, System.Drawing.Brushes.Black, xPos +

80, yPos)

yPos += 35

Texto = "INFORMACIÓN PERSONAL"

e.Graphics.DrawString(Texto, printFont3, System.Drawing.Brushes.Black, xPos,

yPos)

yPos += 15

Texto = "Código:"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmClientes.TxtCodigo.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Cédula:"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmClientes.TxtCedula.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Nombres: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmClientes.TxtNombres.Text

Page 147: Diseño e implementación de un sistema de control de rutas de transporte

13

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Apellidos: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmClientes.TxtApellidos.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Nacionalidad: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmClientes.TxtNacionalidad.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Estado Civil: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmClientes.CmbEstadoCivil.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "F. Nacimiento: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmClientes.CmbFechaNacimiento.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "E-mail: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmClientes.TxtEmail.Text

Page 148: Diseño e implementación de un sistema de control de rutas de transporte

14

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Convencional: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmClientes.TxtConvencional.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Celular: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmClientes.TxtCelular.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Observación: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmClientes.TxtObservacion.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 20

Texto = "INFORMACIÓN GEOGRÁFICA"

e.Graphics.DrawString(Texto, printFont3, System.Drawing.Brushes.Black, xPos,

yPos)

yPos += 15

Texto = "Sector: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmClientes.TxtSector.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Parroquia: "

Page 149: Diseño e implementación de un sistema de control de rutas de transporte

15

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmClientes.TxtParroquia.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Coop./Urb.: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmClientes.TxtCooperativa.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Dirección: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmClientes.TxtDireccion.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Referencia: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmClientes.TxtReferencia.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Coordenada X: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmClientes.TxtCoordenadaX.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Coordenada Y: "

Page 150: Diseño e implementación de un sistema de control de rutas de transporte

16

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmClientes.TxtCoordenadaY.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = Nothing

If Texto Is Nothing Then e.HasMorePages = False

End Sub

Para la correcta impresión de un informe general de la tabla de clientes, se

empleó el siguiente código:

' Realiza una impresión general de la tabla Clientes

Sub ImprimirInforme()

Dim pd As New PrintDocument()

AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage2

pd.Print()

End Sub

Private Sub pd_PrintPage2(ByVal sender As Object, ByVal e As

System.Drawing.Printing.PrintPageEventArgs)

' La fuente que vamos a usar para imprimir.

Dim printFont1 As System.Drawing.Font = New Font("Times New Roman", 12,

FontStyle.Bold)

Dim printFont2 As System.Drawing.Font = New Font("Times New Roman", 12)

Dim printFont3 As System.Drawing.Font = New Font("Times New Roman", 10,

FontStyle.Bold)

Dim printFont4 As System.Drawing.Font = New Font("Times New Roman", 10)

Dim printFont5 As System.Drawing.Font = New Font("Times New Roman", 8,

FontStyle.Bold)

Dim printFont6 As System.Drawing.Font = New Font("Times New Roman", 8)

Dim printFont7 As System.Drawing.Font = New Font("Times New Roman", 6)

Dim topMargin As Single = e.MarginBounds.Top

Page 151: Diseño e implementación de un sistema de control de rutas de transporte

17

Dim yPos As Single = 0

Dim xPos As Single = 50

Dim linesPerPage As Single = 0

Dim count As Integer = 0

Dim Texto As String = ""

linesPerPage = e.MarginBounds.Height / printFont2.GetHeight(e.Graphics)

yPos = topMargin + (count * printFont2.GetHeight(e.Graphics))

yPos = 90

xPos = 80

' Graficación de líneas

e.Graphics.DrawLine(Pens.Black, 70, 85, 750, 85)

e.Graphics.DrawLine(Pens.Black, 70, 155, 750, 155)

e.Graphics.DrawLine(Pens.Black, 70, 1100, 750, 1100)

e.Graphics.DrawLine(Pens.Black, 70, 85, 70, 1100)

e.Graphics.DrawLine(Pens.Black, 750, 85, 750, 1100)

e.Graphics.DrawLine(Pens.Black, 670, 85, 670, 155)

e.Graphics.DrawImage(FrmMenu.PicLogo.Image, 90, 95, 50, 51)

Texto = FrmMenu.LblCodigo.Text

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680, 100)

Texto = FrmMenu.LblUsuario.Text

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680, 112)

Texto = "Pág.: 1/1"

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680, 124)

Texto = NombreSistema

e.Graphics.DrawString(Texto, printFont1, System.Drawing.Brushes.Black, xPos +

80, yPos)

yPos += 20

Texto = "Los mejores productos, a los mejores precios"

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

80, yPos)

yPos += 15

Texto = "Informe General de Clientes"

Page 152: Diseño e implementación de un sistema de control de rutas de transporte

18

e.Graphics.DrawString(Texto, printFont4, System.Drawing.Brushes.Black, xPos +

80, yPos)

yPos += 35

Texto = "CÓDIGO"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = "CÉDULA"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos +

60, yPos)

Texto = "NOMBRES"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos +

140, yPos)

Texto = "APELLIDOS"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos +

250, yPos)

Texto = "TELÉFONOS"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos +

360, yPos)

Texto = "DIRECCIÓN"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos +

480, yPos)

yPos += 20

Dim Filas As Integer = 0

Dim Codigo As String = ""

Dim Cedula As String = ""

Dim Nombres As String = ""

Dim Apellidos As String = ""

Dim Telefonos As String = ""

Dim Direccion As String = ""

Filas = FrmRepClientes.DgvInforme.RowCount

For a = 0 To Filas - 1

Codigo = FrmRepClientes.DgvInforme.Item(0, a).Value.ToString

Cedula = Mid(FrmRepClientes.DgvInforme.Item(1, a).Value.ToString, 1, 10)

Nombres = FrmRepClientes.DgvInforme.Item(2, a).Value.ToString

Page 153: Diseño e implementación de un sistema de control de rutas de transporte

19

Apellidos = FrmRepClientes.DgvInforme.Item(3, a).Value.ToString

Telefonos = Mid(FrmRepClientes.DgvInforme.Item(4, a).Value.ToString, 1,

21)

Direccion = Mid(FrmRepClientes.DgvInforme.Item(5, a).Value.ToString, 1,

35)

e.Graphics.DrawString(Codigo, printFont6, System.Drawing.Brushes.Black, xPos,

yPos)

e.Graphics.DrawString(Cedula, printFont6, System.Drawing.Brushes.Black, xPos +

60, yPos)

e.Graphics.DrawString(Nombres, printFont6, System.Drawing.Brushes.Black, xPos

+ 140, yPos)

e.Graphics.DrawString(Apellidos, printFont6, System.Drawing.Brushes.Black, xPos

+ 250, yPos)

e.Graphics.DrawString(Telefonos, printFont6, System.Drawing.Brushes.Black, xPos

+ 360, yPos)

e.Graphics.DrawString(Direccion, printFont6, System.Drawing.Brushes.Black, xPos

+ 480, yPos)

yPos += 15

Next

Texto = Nothing

If Texto Is Nothing Then e.HasMorePages = False

End Sub

Se emplearon funciones para manejar la apariencia de los formularios, en el

caso de la manipulación de botones de control, se empleó el siguiente código:

Sub ControlBotones(ByVal Control As Boolean)

If Control = True Then

FrmClientes.TooNuevo1.Enabled = True

FrmClientes.TooEditar1.Enabled = True

FrmClientes.TooGuardar1.Enabled = False

FrmClientes.TooEliminar1.Enabled = True

FrmClientes.TooImprimir1.Enabled = True

Page 154: Diseño e implementación de un sistema de control de rutas de transporte

20

FrmClientes.TxtBusqueda1.Enabled = True

ElseIf Control = False Then

FrmClientes.TooNuevo1.Enabled = False

FrmClientes.TooEditar1.Enabled = False

FrmClientes.TooGuardar1.Enabled = True

FrmClientes.TooEliminar1.Enabled = False

FrmClientes.TooImprimir1.Enabled = False

FrmClientes.TxtBusqueda1.Enabled = False

End If

End Sub

Para el manejo de los cuadros de texto del formulario de clientes, se empleó el

siguiente código:

' Función para habilitar y deshabilitar las cajas de texto

Sub ControlTexto(ByVal Control As String)

If Control = "Habilitar" Then

' INFORMACIÓN PERSONAL

FrmClientes.TxtCodigo.Enabled = False

FrmClientes.TxtCedula.Enabled = True

FrmClientes.TxtNombres.Enabled = True

FrmClientes.TxtApellidos.Enabled = True

FrmClientes.TxtNacionalidad.Enabled = True

FrmClientes.CmbEstadoCivil.Enabled = True

FrmClientes.CmbFechaNacimiento.Enabled = True

FrmClientes.TxtEmail.Enabled = True

FrmClientes.TxtConvencional.Enabled = True

FrmClientes.TxtCelular.Enabled = True

FrmClientes.TxtObservacion.Enabled = True

' INFORMACIÓN GEOGRÁFICA

FrmClientes.TxtSector.Enabled = True

FrmClientes.TxtParroquia.Enabled = True

FrmClientes.TxtCooperativa.Enabled = True

FrmClientes.TxtDireccion.Enabled = True

FrmClientes.TxtReferencia.Enabled = True

FrmClientes.TxtCoordenadaX.Enabled = True

Page 155: Diseño e implementación de un sistema de control de rutas de transporte

21

FrmClientes.TxtCoordenadaY.Enabled = True

ElseIf Control = "Deshabilitar" Then

FrmClientes.TxtCodigo.Enabled = False

FrmClientes.TxtCedula.Enabled = False

FrmClientes.TxtNombres.Enabled = False

FrmClientes.TxtApellidos.Enabled = False

FrmClientes.TxtNacionalidad.Enabled = False

FrmClientes.CmbEstadoCivil.Enabled = False

FrmClientes.CmbFechaNacimiento.Enabled = False

FrmClientes.TxtEmail.Enabled = False

FrmClientes.TxtConvencional.Enabled = False

FrmClientes.TxtCelular.Enabled = False

FrmClientes.TxtObservacion.Enabled = False

' INFORMACIÓN GEOGRÁFICA

FrmClientes.TxtSector.Enabled = False

FrmClientes.TxtParroquia.Enabled = False

FrmClientes.TxtCooperativa.Enabled = False

FrmClientes.TxtDireccion.Enabled = False

FrmClientes.TxtReferencia.Enabled = False

FrmClientes.TxtCoordenadaX.Enabled = False

FrmClientes.TxtCoordenadaY.Enabled = False

ElseIf Control = "Enblanco" Then

FrmClientes.TxtCodigo.Text = ""

FrmClientes.TxtCedula.Text = ""

FrmClientes.TxtNombres.Text = ""

FrmClientes.TxtApellidos.Text = ""

FrmClientes.TxtNacionalidad.Text = ""

FrmClientes.CmbEstadoCivil.Text = ""

FrmClientes.CmbFechaNacimiento.Text = ""

FrmClientes.TxtEmail.Text = ""

FrmClientes.TxtConvencional.Text = ""

FrmClientes.TxtCelular.Text = ""

FrmClientes.TxtObservacion.Text = ""

' INFORMACIÓN GEOGRÁFICA

Page 156: Diseño e implementación de un sistema de control de rutas de transporte

22

FrmClientes.TxtSector.Text = ""

FrmClientes.TxtParroquia.Text = ""

FrmClientes.TxtCooperativa.Text = ""

FrmClientes.TxtDireccion.Text = ""

FrmClientes.TxtReferencia.Text = ""

FrmClientes.TxtCoordenadaX.Text = ""

FrmClientes.TxtCoordenadaY.Text = ""

End If

End Sub

1.1.2. Parámetros

La clase Parámetros, dentro del proyecto se encuentra asignada con el nombre

ClsParametros.vb.

El código empleado en la clase ClsClientes, se detalla a continuación:

' Importar clases para conexión

Imports System

Imports System.Data

Imports System.Data.Odbc

Para la generación de nuevos códigos en el ingreso de Usuarios, se empleó el

siguiente código:

' Devuelve el siguiente código de Usuario

Function NuevoUsuario() As String

Dim Codigo As String

Dim Numero As Integer

MiConexion.Open()

'Consulto en la tabla parámetros el código siguiente

OdbComando.Connection = MiConexion

Page 157: Diseño e implementación de un sistema de control de rutas de transporte

23

OdbComando.CommandText = "select * from tblparametros where id =

'id_usuarios'"

DrLectura = OdbComando.ExecuteReader()

While DrLectura.Read()

Numero = DrLectura("valor")

End While

' Concateno el código

If Numero < 10 Then

Codigo = "US0000" & Numero

ElseIf Numero < 100 Then

Codigo = "US000" & Numero

ElseIf Numero < 1000 Then

Codigo = "US00" & Numero

ElseIf Numero < 10000 Then

Codigo = "US0" & Numero

Else

Codigo = "US" & Numero

End If

' Aumento en la tabla parámetros

Dim Sql8 As New OdbcCommand("update tblparametros set valor=valor+1 where

id='id_usuarios'", MiConexion)

Sql8.ExecuteNonQuery()

DrLectura.Close()

MiConexion.Close()

' retorno el codigo

Return Codigo

End Function

Para la generación de nuevos códigos en el ingreso de Transportistas, se

empleó el siguiente código:

Page 158: Diseño e implementación de un sistema de control de rutas de transporte

24

' Devuelve el siguiente código de Transportista

Function NuevoTransportista() As String

Dim Codigo As String

Dim Numero As Integer

MiConexion.Open()

'consulto en la tabla parámetros el código siguiente

OdbComando.Connection = MiConexion

OdbComando.CommandText = "select * from tblparametros where id =

'id_transportistas'"

DrLectura = OdbComando.ExecuteReader()

While DrLectura.Read()

Numero = DrLectura("valor")

End While

' concateno el código

If Numero < 10 Then

Codigo = "TR0000" & Numero

ElseIf Numero < 100 Then

Codigo = "TR000" & Numero

ElseIf Numero < 1000 Then

Codigo = "TR00" & Numero

ElseIf Numero < 10000 Then

Codigo = "TR0" & Numero

Else

Codigo = "TR" & Numero

End If

' aumento en la tabla parámetros

Dim Sql8 As New OdbcCommand("update tblparametros set valor=valor+1 where

id='id_transportistas'", MiConexion)

Sql8.ExecuteNonQuery()

DrLectura.Close()

MiConexion.Close()

' retorno el codigo

Page 159: Diseño e implementación de un sistema de control de rutas de transporte

25

Return Codigo

End Function

Para la generación de nuevos códigos en el ingreso de Vehículos, se empleó el

siguiente código:

' Devuelve el siguiente código de Vehículo

Function NuevoVehiculo() As String

Dim Codigo As String

Dim Numero As Integer

MiConexion.Open()

'consulto en la tabla parámetros el código siguiente

OdbComando.Connection = MiConexion

OdbComando.CommandText = "select * from tblparametros where id =

'id_vehiculos'"

DrLectura = OdbComando.ExecuteReader()

While DrLectura.Read()

Numero = DrLectura("valor")

End While

' concateno el código

If Numero < 10 Then

Codigo = "VE0000" & Numero

ElseIf Numero < 100 Then

Codigo = "VE000" & Numero

ElseIf Numero < 1000 Then

Codigo = "VE00" & Numero

ElseIf Numero < 10000 Then

Codigo = "VE0" & Numero

Else

Codigo = "VE" & Numero

End If

' aumento en la tabla parámetros

Page 160: Diseño e implementación de un sistema de control de rutas de transporte

26

Dim Sql8 As New OdbcCommand("update tblparametros set valor=valor+1 where

id='id_vehiculos'", MiConexion)

Sql8.ExecuteNonQuery()

DrLectura.Close()

MiConexion.Close()

' retorno el codigo

Return Codigo

End Function

Para la generación de nuevos códigos en el ingreso de Clientes, se empleó el

siguiente código:

' Devuelve el siguiente código de Cliente

Function NuevoCliente() As String

Dim Codigo As String

Dim Numero As Integer

MiConexion.Open()

'consulto en la tabla parámetros el código siguiente

OdbComando.Connection = MiConexion

OdbComando.CommandText = "select * from tblparametros where id =

'id_clientes'"

DrLectura = OdbComando.ExecuteReader()

While DrLectura.Read()

Numero = DrLectura("valor")

End While

' concateno el código

If Numero < 10 Then

Codigo = "CL0000" & Numero

ElseIf Numero < 100 Then

Codigo = "CL000" & Numero

ElseIf Numero < 1000 Then

Codigo = "CL00" & Numero

Page 161: Diseño e implementación de un sistema de control de rutas de transporte

27

ElseIf Numero < 10000 Then

Codigo = "CL0" & Numero

Else

Codigo = "CL" & Numero

End If

' aumento en la tabla parámetros

Dim Sql8 As New OdbcCommand("update tblparametros set valor=valor+1 where

id='id_clientes'", MiConexion)

Sql8.ExecuteNonQuery()

DrLectura.Close()

MiConexion.Close()

' retorno el código

Return Codigo

End Function

Para la generación de nuevos códigos en el ingreso de Rutas, se empleó el

siguiente código:

' Devuelve el siguiente código de Ruta

Function NuevoRuta() As String

Dim Codigo As String

Dim Numero As Integer

MiConexion.Open()

'consulto en la tabla parámetros el código siguiente

OdbComando.Connection = MiConexion

OdbComando.CommandText = "select * from tblparametros where id =

'id_rutas'"

DrLectura = OdbComando.ExecuteReader()

While DrLectura.Read()

Numero = DrLectura("valor")

End While

Page 162: Diseño e implementación de un sistema de control de rutas de transporte

28

' concateno el código

If Numero < 10 Then

Codigo = "RT0000" & Numero

ElseIf Numero < 100 Then

Codigo = "RT000" & Numero

ElseIf Numero < 1000 Then

Codigo = "RT00" & Numero

ElseIf Numero < 10000 Then

Codigo = "RT0" & Numero

Else

Codigo = "RT" & Numero

End If

' aumento en la tabla parámetros

Dim Sql8 As New OdbcCommand("update tblparametros set valor=valor+1 where

id='id_rutas'", MiConexion)

Sql8.ExecuteNonQuery()

DrLectura.Close()

MiConexion.Close()

' retorno el código

Return Codigo

End Function

1.1.3. Rastreo

La clase Rastreo, dentro del proyecto se encuentra asignada con el nombre

ClsRastreo.vb.

El código empleado en la clase ClsRastreo, se detalla a continuación:

' Importo clases de conexión

Imports System

Page 163: Diseño e implementación de un sistema de control de rutas de transporte

29

Imports System.Data

Imports System.Data.Odbc

' Importo clases de impresión

Imports System.IO

Imports System.Drawing

Imports System.Drawing.Printing

Imports System.Windows.Forms

Para la realización de consultas acerca de los puntos sobre los cuales los

vehículos estuvieron en una determinada fecha, se consideró el siguiente

código:

' Consulta de puntos visitados en una ruta específica según una fecha específica

Sub Consulta1(ByVal CodigoVehiculo As String, ByVal FechaFija As String, ByVal

HoraInicio As String, ByVal HoraFin As String)

MiConexion.Open()

Dim Consultita As String = "SELECT * FROM tblrastreo WHERE

codigo_vehiculo like '%" & CodigoVehiculo & "%' and fechagps_rastreo like

DATE_FORMAT(STR_TO_DATE('" & FechaFija & "', '%d/%m/%Y'), '%Y-%m-%d')

and horagps_rastreo between '" & HoraInicio & "' and '" & HoraFin & "'"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmSeguimiento.DgvCoordenadas.Rows.Clear()

While (DrLectura.Read())

FrmSeguimiento.DgvCoordenadas.Rows.Add(DrLectura("codigo_rastreo"),

DrLectura("codigo_vehiculo"), DrLectura("fechagps_rastreo"),

DrLectura("horagps_rastreo"), DrLectura("fechasis_rastreo"),

DrLectura("horasis_rastreo"), DrLectura("coorgpsx_rastreo"),

DrLectura("coorgpsy_rastreo"), DrLectura("coorsisx_rastreo"),

DrLectura("coorsisy_rastreo"))

End While

DrLectura.Close()

MiConexion.Close()

End Sub

Page 164: Diseño e implementación de un sistema de control de rutas de transporte

30

Para la realización de consultas acerca de los puntos sobre los cuales los

vehículos estuvieron en un rango de fechas, se consideró el siguiente código:

' Consulta de puntos visitados en una ruta específica según rango de fechas

Sub Consulta2(ByVal CodigoVehiculo As String, ByVal FechaInicio As String, ByVal

FechaFin As String, ByVal HoraInicio As String, ByVal HoraFin As String)

MiConexion.Open()

Dim Consultita As String = "SELECT * FROM tblrastreo WHERE

codigo_vehiculo like '%" & CodigoVehiculo & "%' and fechagps_rastreo between

DATE_FORMAT(STR_TO_DATE('" & FechaInicio & "', '%d/%m/%Y'), '%Y-%m-%d')

and DATE_FORMAT(STR_TO_DATE('" & FechaFin & "', '%d/%m/%Y'), '%Y-%m-

%d') and horagps_rastreo between '" & HoraInicio & "' and '" & HoraFin & "'"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmSeguimiento.DgvCoordenadas.Rows.Clear()

While (DrLectura.Read())

FrmSeguimiento.DgvCoordenadas.Rows.Add(DrLectura("codigo_rastreo"),

DrLectura("codigo_vehiculo"), DrLectura("fechagps_rastreo"),

DrLectura("horagps_rastreo"), DrLectura("fechasis_rastreo"),

DrLectura("horasis_rastreo"), DrLectura("coorgpsx_rastreo"),

DrLectura("coorgpsy_rastreo"), DrLectura("coorsisx_rastreo"),

DrLectura("coorsisy_rastreo"))

End While

DrLectura.Close()

MiConexion.Close()

End Sub

1.1.4. Recibos de Mercadería

La clase Recibos de Mercadería, dentro del proyecto se encuentra asignada con el

nombre ClsRecibosMercaderia.vb.

El código empleado en la clase ClsRecibosMercaderia, se detalla a

continuación:

Page 165: Diseño e implementación de un sistema de control de rutas de transporte

31

' Importo clases de conexión

Imports System

Imports System.Data

Imports System.Data.Odbc

' Importo clases de impresión

Imports System.IO

Imports System.Drawing

Imports System.Drawing.Printing

Imports System.Windows.Forms

En la edición de los Recibos de Mercadería, se procedió a utilizar el siguiente

código:

' Función Editar recibo de mercadería

Sub Editar(ByVal NumeroGuia As String, ByVal Fecha As String, ByVal Hora As

String, ByVal Nombres As String, ByVal Cedula As String, ByVal Parentesco As

String, ByVal Observacion As String, ByVal Estado As String)

MiConexion.open()

Dim Cadena As String

Cadena = "update tbldetallerutas set fecha_recibido='" & Fecha & _

"', hora_recibido='" & Hora & _

"', nombres_recibido='" & Nombres & _

"', cedula_recibido='" & Cedula & _

"', parentesco_recibido='" & Parentesco & _

"', observacion_recibido='" & Observacion & _

"', estado='" & Estado & _

"', usuario_modifica='" & FrmMenu.LblCodigo.Text & _

"', fecha_modifica='" & Date.Today & _

"' where numguia='" & NumeroGuia & "'"

Dim ComandoSql As New OdbcCommand(Cadena, MiConexion)

ComandoSql.ExecuteNonQuery()

MiConexion.close()

End Sub

Page 166: Diseño e implementación de un sistema de control de rutas de transporte

32

En la eliminación de registros de Recibos de Mercadería, se procedió a utilizar

el siguiente código:

' Función Eliminar recibo de mercadería

Sub Eliminar(ByVal codigo As String)

MiConexion.open()

Dim Cadena As String

Cadena = "update tbldetallerutas set estado_guia='i', fecha_elimina='" &

Date.Today & "', usuario_elimina='" &CodigoUsuario() & "' where numguia='" &

Codigo & "'"

Dim ComandoSql As New OdbcCommand(Cadena, MiConexion)

ComandoSql.ExecuteNonQuery()

MiConexion.close()

End Sub

En la consulta de registros de Recibos de Mercadería, se procedió a utilizar el

siguiente código:

' Función Consultar, permite realizar una consulta de un recibo de mercadería

Sub Consulta1(ByVal Consulta As String)

MiConexion.Open()

Dim i As Integer = 0

If Consulta = "" Then

i = 0

Else

Dim Consultita As String = "select * from tbldetallerutas, tblclientes, tblrutas,

tblvehiculos, tbltransportistas where numguia like '%" & Consulta & "%' and

tbldetallerutas.codigo_cliente=tblclientes.codigo_cliente and

tblrutas.codigo_ruta=tbldetallerutas.codigo_ruta and

tblrutas.codigo_vehiculo=tblvehiculos.codigo_vehiculo and

tblvehiculos.codigo_transportista=tbltransportistas.codigo_transportista and

estado_guia='a'"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmRecibosMercaderia.DgvBusqueda.Rows.Clear()

While (DrLectura.Read())

Page 167: Diseño e implementación de un sistema de control de rutas de transporte

33

FrmRecibosMercaderia.DgvBusqueda.Rows.Add(DrLectura("codigo_ruta"),

DrLectura("orden_ruta"), DrLectura("numguia"), DrLectura("estado"),

DrLectura("codigo_cliente"), DrLectura("nombres_cliente") & " " &

DrLectura("apellidos_cliente"), DrLectura("direccion_cliente"),

DrLectura("fecha_recibido"), DrLectura("hora_recibido"),

DrLectura("nombres_recibido"), DrLectura("cedula_recibido"),

DrLectura("parentesco_recibido"), DrLectura("observacion_recibido"),

DrLectura("fecha_crea"), DrLectura("marca_vehiculo") & " - " &

DrLectura("modelo_vehiculo"), DrLectura("nombres_transportista") & " " &

DrLectura("apellidos_transportista"), DrLectura("celular_transportista"))

i += 1

End While

DrLectura.Close()

End If

MiConexion.Close()

If i > 0 Then

FrmRecibosMercaderia.PnlBusqueda.Visible = True

Else

FrmRecibosMercaderia.PnlBusqueda.Visible = False

i = 0

End If

End Sub

En la consulta para generar el formulario de auditoría de registros de Recibos

de Mercadería, se procedió a utilizar el siguiente código:

' Consulta general de todos los registros de la tabla detalle de rutas, o recibos de

mercadería

Sub Auditoria(ByVal Consulta As String)

MiConexion.Open()

Dim Consultita As String = "select * from tbldetallerutas, tblclientes, tblrutas,

tblvehiculos, tbltransportistas where numguia like '%" & Consulta & "%' and

tbldetallerutas.codigo_cliente=tblclientes.codigo_cliente and

tblrutas.codigo_ruta=tbldetallerutas.codigo_ruta and

tblrutas.codigo_vehiculo=tblvehiculos.codigo_vehiculo and

Page 168: Diseño e implementación de un sistema de control de rutas de transporte

34

tblvehiculos.codigo_transportista=tbltransportistas.codigo_transportista and

estado_guia='a'"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmAudRecibos.DgvInforme.Rows.Clear()

While (DrLectura.Read())

FrmAudRecibos.DgvInforme.Rows.Add(DrLectura("codigo_ruta"),

DrLectura("orden_ruta"), DrLectura("numguia"), DrLectura("codigo_cliente") & " - " &

DrLectura("nombres_cliente") & " " & DrLectura("apellidos_cliente"),

DrLectura("fecha_recibido") & " " & DrLectura("hora_recibido"),

DrLectura("nombres_recibido"), DrLectura("estado"), DrLectura("usuario_crea"),

DrLectura("fecha_crea"), DrLectura("usuario_modifica"),

DrLectura("fecha_modifica"), DrLectura("usuario_elimina"),

DrLectura("fecha_elimina"), DrLectura("estado_guia"))

End While

DrLectura.Close()

MiConexion.Close()

End Sub

Se generaron funciones para manejar la apariencia de los controles del

formulario de Recibos de mercadería, mediante los siguientes códigos:

Sub ControlBotones(ByVal Control As Boolean)

If Control = True Then

FrmRecibosMercaderia.TooEditar.Enabled = True

FrmRecibosMercaderia.TooGuardar.Enabled = False

FrmRecibosMercaderia.TooEliminar.Enabled = True

FrmRecibosMercaderia.TxtBusqueda.Enabled = True

ElseIf Control = False Then

FrmRecibosMercaderia.TooEditar.Enabled = False

FrmRecibosMercaderia.TooGuardar.Enabled = True

FrmRecibosMercaderia.TooEliminar.Enabled = False

FrmRecibosMercaderia.TxtBusqueda.Enabled = False

End If

End Sub

Page 169: Diseño e implementación de un sistema de control de rutas de transporte

35

' Control de las cajas de texto del formulario recibos de mercadería

Sub ControlTexto(ByVal Control As String)

If Control = "Habilitar" Then

FrmRecibosMercaderia.TxtCodigoRuta.Enabled = False

FrmRecibosMercaderia.TxtOrden.Enabled = False

FrmRecibosMercaderia.TxtGuia.Enabled = False

FrmRecibosMercaderia.TxtCodigoCliente.Enabled = False

FrmRecibosMercaderia.TxtCliente.Enabled = False

FrmRecibosMercaderia.TxtDireccion.Enabled = False

FrmRecibosMercaderia.TxtVehiculo.Enabled = False

FrmRecibosMercaderia.TxtTransportista.Enabled = False

FrmRecibosMercaderia.TxtTelefono.Enabled = False

FrmRecibosMercaderia.TxtFechaAsignado.Enabled = False

FrmRecibosMercaderia.TxtEstado.Enabled = True

FrmRecibosMercaderia.TxtFechaRecibido.Enabled = True

FrmRecibosMercaderia.TxtHoraRecibido.Enabled = True

FrmRecibosMercaderia.TxtNombresRecibido.Enabled = True

FrmRecibosMercaderia.TxtCedulaRecibido.Enabled = True

FrmRecibosMercaderia.TxtParentescoRecibido.Enabled = True

FrmRecibosMercaderia.TxtObservacion.Enabled = True

ElseIf Control = "Deshabilitar" Then

FrmRecibosMercaderia.TxtCodigoRuta.Enabled = False

FrmRecibosMercaderia.TxtOrden.Enabled = False

FrmRecibosMercaderia.TxtGuia.Enabled = False

FrmRecibosMercaderia.TxtCodigoCliente.Enabled = False

FrmRecibosMercaderia.TxtCliente.Enabled = False

FrmRecibosMercaderia.TxtDireccion.Enabled = False

FrmRecibosMercaderia.TxtVehiculo.Enabled = False

FrmRecibosMercaderia.TxtTransportista.Enabled = False

FrmRecibosMercaderia.TxtTelefono.Enabled = False

FrmRecibosMercaderia.TxtFechaAsignado.Enabled = False

FrmRecibosMercaderia.TxtEstado.Enabled = False

FrmRecibosMercaderia.TxtFechaRecibido.Enabled = False

Page 170: Diseño e implementación de un sistema de control de rutas de transporte

36

FrmRecibosMercaderia.TxtHoraRecibido.Enabled = False

FrmRecibosMercaderia.TxtNombresRecibido.Enabled = False

FrmRecibosMercaderia.TxtCedulaRecibido.Enabled = False

FrmRecibosMercaderia.TxtParentescoRecibido.Enabled = False

FrmRecibosMercaderia.TxtObservacion.Enabled = False

ElseIf Control = "Enblanco" Then

FrmRecibosMercaderia.TxtCodigoRuta.Text = ""

FrmRecibosMercaderia.TxtOrden.Text = ""

FrmRecibosMercaderia.TxtGuia.Text = ""

FrmRecibosMercaderia.TxtCodigoCliente.Text = ""

FrmRecibosMercaderia.TxtCliente.Text = ""

FrmRecibosMercaderia.TxtDireccion.Text = ""

FrmRecibosMercaderia.TxtVehiculo.Text = ""

FrmRecibosMercaderia.TxtTransportista.Text = ""

FrmRecibosMercaderia.TxtTelefono.Text = ""

FrmRecibosMercaderia.TxtFechaAsignado.Text = ""

FrmRecibosMercaderia.TxtEstado.Text = "Seleccione Opción"

FrmRecibosMercaderia.TxtFechaRecibido.Text = ""

FrmRecibosMercaderia.TxtHoraRecibido.Text = ""

FrmRecibosMercaderia.TxtNombresRecibido.Text = ""

FrmRecibosMercaderia.TxtCedulaRecibido.Text = ""

FrmRecibosMercaderia.TxtParentescoRecibido.Text = ""

FrmRecibosMercaderia.TxtObservacion.Text = ""

End If

End Sub

1.1.5. Rutas

La clase Rutas, dentro del proyecto se encuentra asignada con el nombre

ClsRutas.vb.

Page 171: Diseño e implementación de un sistema de control de rutas de transporte

37

El código empleado en la clase ClsRutas, se detalla a continuación:

Imports System

Imports System.Data

Imports System.Data.Odbc

Imports System.IO

Imports System.Drawing

Imports System.Drawing.Printing

Imports System.Windows.Forms

Para ingresar nuevos registros en la tabla de Rutas, se ha empleado el

siguiente código:

Sub Nuevo(ByVal CodigoRuta As String, ByVal CodigoVehiculo As String, ByVal

Observacion As String)

MiConexion.open()

Dim Cadena As String

Cadena = "insert into tblrutas values('" & CodigoRuta & "', '" & _

CodigoVehiculo & "', '" & _

Observacion & "', '" & _

CodigoUsuario() & "', '" & _

Date.Today & "', '" & _

" " & "', '" & _

" " & "', '" & _

" " & "', '" & _

" " & "', 'a')"

Dim ComandoSql As New OdbcCommand(Cadena, MiConexion)

ComandoSql.ExecuteNonQuery()

MiConexion.close()

End Sub

Para editar registros existentes en la tabla de Rutas, se ha empleado el

siguiente código:

Page 172: Diseño e implementación de un sistema de control de rutas de transporte

38

Sub Editar(ByVal CodigoRuta As String, ByVal CodigoVehiculo As String, ByVal

Observacion As String)

MiConexion.open()

Dim Cadena As String

Cadena = "update tblrutas set codigo_vehiculo='" & CodigoVehiculo & _

"', observacion_ruta='" & Observacion & _

"', usuario_modifica='" & Observacion & _

"', fecha_modifica='" & Observacion & _

"' where codigo_vehiculo='" & CodigoRuta & "'"

Dim ComandoSql As New OdbcCommand(Cadena, MiConexion)

ComandoSql.ExecuteNonQuery()

MiConexion.close()

End Sub

Para eliminar registros existentes en la tabla de Rutas, se ha empleado el

siguiente código:

Sub Eliminar(ByVal Codigo As String)

MiConexion.open()

Dim Cadena As String

Cadena = "update tblrutas set estado_ruta='i', fecha_elimina='" & Date.Today

& "', usuario_elimina='" &CodigoUsuario() & "' where codigo_ruta='" & Codigo & "'"

Dim ComandoSql As New OdbcCommand(Cadena, MiConexion)

ComandoSql.ExecuteNonQuery()

MiConexion.close()

End Sub

Para realizar consultas sobre los registros existentes en la tabla de Rutas, se ha

empleado el siguiente código:

Sub Consulta1(ByVal Consulta As String)

MiConexion.Open()

Dim i As Integer = 0

If Consulta = "" Then

Page 173: Diseño e implementación de un sistema de control de rutas de transporte

39

i = 0

Else

'Dim Consultita As String = "select tblrutas.codigo_ruta,

tblrutas.observacion_ruta, tblrutas.fcreado_ruta, tblvehiculos.codigo_vehiculo,

tbltransportistas.codigo_transportista, tbltransportistas.nombres_transportista,

tbltransportistas.apellidos_transportista from tblrutas, tblvehiculos, tbltransportistas

where ( tbltransportistas.nombres_transportista like '% " & Consulta & " %' or

tbltransportistas.apellidos_transportista like '% " & Consulta & " %' or

tblrutas.codigo_ruta like '% " & Consulta & " %' or tblvehiculos.codigo_vehiculo like

'% " & Consulta & " %' or tblrutas.fcreado_ruta like '% " & Consulta & " %') and

tblrutas.codigo_vehiculo=tblvehiculos.codigo_vehiculo and

tblvehiculos.codigo_transportista=tbltransportistas.codigo_transportista and

estado_ruta='a'"

Dim Consultita As String = "select tblvehiculos.clase_vehiculo,

tblvehiculos.modelo_vehiculo, tblrutas.codigo_ruta, tblrutas.observacion_ruta,

tblrutas.fecha_crea, tblvehiculos.codigo_vehiculo,

tbltransportistas.codigo_transportista, tbltransportistas.nombres_transportista,

tbltransportistas.apellidos_transportista from tblrutas, tblvehiculos, tbltransportistas

where ( (nombres_transportista like '%" & Consulta & "%' or apellidos_transportista

like '%" & Consulta & "%') and

tblrutas.codigo_vehiculo=tblvehiculos.codigo_vehiculo and

tblvehiculos.codigo_transportista=tbltransportistas.codigo_transportista) and

estado_ruta='a'"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmRutas.DgvBusqueda.Rows.Clear()

While (DrLectura.Read())

FrmRutas.DgvBusqueda.Rows.Add(DrLectura("codigo_ruta"),

DrLectura("fecha_crea"), DrLectura("observacion_ruta"),

DrLectura("codigo_vehiculo"), DrLectura("modelo_vehiculo"),

DrLectura("clase_vehiculo"), DrLectura("codigo_transportista"),

DrLectura("nombres_transportista") & " " & DrLectura("apellidos_transportista"))

i += 1

End While

DrLectura.Close()

End If

Page 174: Diseño e implementación de un sistema de control de rutas de transporte

40

MiConexion.Close()

If i > 0 Then

FrmRutas.PnlBusqueda.Visible = True

Else

FrmRutas.PnlBusqueda.Visible = False

i = 0

End If

End Sub

Para realizar consultas más detalladas sobre los registros existentes en la tabla

de Rutas, o auditoría, se ha empleado el siguiente código:

Sub Auditoria(ByVal Consulta As String)

MiConexion.Open()

'Dim Consultita As String = "select tblrutas.codigo_ruta,

tblrutas.observacion_ruta, tblrutas.fcreado_ruta, tblvehiculos.codigo_vehiculo,

tbltransportistas.codigo_transportista, tbltransportistas.nombres_transportista,

tbltransportistas.apellidos_transportista from tblrutas, tblvehiculos, tbltransportistas

where ( tbltransportistas.nombres_transportista like '% " & Consulta & " %' or

tbltransportistas.apellidos_transportista like '% " & Consulta & " %' or

tblrutas.codigo_ruta like '% " & Consulta & " %' or tblvehiculos.codigo_vehiculo like

'% " & Consulta & " %' or tblrutas.fcreado_ruta like '% " & Consulta & " %') and

tblrutas.codigo_vehiculo=tblvehiculos.codigo_vehiculo and

tblvehiculos.codigo_transportista=tbltransportistas.codigo_transportista and

estado_ruta='a'"

Dim Consultita As String = "select tblvehiculos.modelo_vehiculo,

tblrutas.codigo_ruta, tblrutas.observacion_ruta, tblrutas.usuario_crea,

tblrutas.fecha_crea, tblrutas.usuario_modifica, tblrutas.fecha_modifica,

tblrutas.usuario_elimina, tblrutas.fecha_elimina, tblrutas.estado_ruta,

tblvehiculos.codigo_vehiculo, tbltransportistas.codigo_transportista,

tbltransportistas.nombres_transportista, tbltransportistas.apellidos_transportista

from tblrutas, tblvehiculos, tbltransportistas where ( (nombres_transportista like '%"

& Consulta & "%' or apellidos_transportista like '%" & Consulta & "%') and

tblrutas.codigo_vehiculo=tblvehiculos.codigo_vehiculo and

tblvehiculos.codigo_transportista=tbltransportistas.codigo_transportista) "

Page 175: Diseño e implementación de un sistema de control de rutas de transporte

41

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmAudRutas.DgvInforme.Rows.Clear()

While (DrLectura.Read())

FrmAudRutas.DgvInforme.Rows.Add(DrLectura("codigo_ruta"),

DrLectura("codigo_vehiculo") & " - " & DrLectura("modelo_vehiculo"),

DrLectura("codigo_transportista") & " - " & DrLectura("nombres_transportista") & " "

& DrLectura("apellidos_transportista"), DrLectura("observacion_ruta"),

DrLectura("usuario_crea"), DrLectura("fecha_crea"), DrLectura("usuario_modifica"),

DrLectura("fecha_modifica"), DrLectura("usuario_elimina"),

DrLectura("fecha_elimina"), DrLectura("estado_ruta"))

End While

DrLectura.Close()

MiConexion.Close()

End Sub

Para realizar ingresos de nuevos detalles de rutas o Rebibos de mercadería, se

ha empleado el siguiente código:

Sub NuevoDetalle(ByVal CodigoRuta As String, ByVal OrdenRuta As String, ByVal

NumeroGuia As String, ByVal CodigoCliente As String)

MiConexion.open()

Dim Cadena As String

Cadena = "insert into tbldetallerutas (codigo_ruta, orden_ruta, numguia,

codigo_cliente, estado, estado_guia, usuario_crea, fecha_crea)

values('" & CodigoRuta & "', '" & _

OrdenRuta & "', '" & _

NumeroGuia & "', '" & _

CodigoCliente & "', 'Asignado', 'a', '" & FrmMenu.LblCodigo.Text & "' , '" &

Date.Today & "')"

Dim ComandoSql As New OdbcCommand(Cadena, MiConexion)

ComandoSql.ExecuteNonQuery()

MiConexion.close()

End Sub

Page 176: Diseño e implementación de un sistema de control de rutas de transporte

42

Para consultar sobre el detalle de rutas o Recibos de mercadería, se ha

empleado el siguiente código:

Sub MostrarDetalleRuta(ByVal CodigoRuta As String)

MiConexion.Open()

'Dim Consultita As String = "select tblrutas.codigo_ruta,

tblrutas.observacion_ruta, tblrutas.fcreado_ruta, tblvehiculos.codigo_vehiculo,

tbltransportistas.codigo_transportista, tbltransportistas.nombres_transportista,

tbltransportistas.apellidos_transportista from tblrutas, tblvehiculos, tbltransportistas

where ( tbltransportistas.nombres_transportista like '% " & Consulta & " %' or

tbltransportistas.apellidos_transportista like '% " & Consulta & " %' or

tblrutas.codigo_ruta like '% " & Consulta & " %' or tblvehiculos.codigo_vehiculo like

'% " & Consulta & " %' or tblrutas.fcreado_ruta like '% " & Consulta & " %') and

tblrutas.codigo_vehiculo=tblvehiculos.codigo_vehiculo and

tblvehiculos.codigo_transportista=tbltransportistas.codigo_transportista and

estado_ruta='a'"

Dim Consultita As String = "select * from tbldetallerutas, tblclientes where

codigo_ruta='" & CodigoRuta & "' and

tblclientes.codigo_cliente=tbldetallerutas.codigo_cliente order by orden_ruta asc"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmRutas.DgvDetalleRuta.Rows.Clear()

While (DrLectura.Read())

FrmRutas.DgvDetalleRuta.Rows.Add(DrLectura("codigo_ruta"),

DrLectura("orden_ruta"), DrLectura("numguia"), DrLectura("codigo_cliente"),

DrLectura("nombres_cliente") & " " & DrLectura("apellidos_cliente"),

DrLectura("direccion_cliente"))

End While

DrLectura.Close()

MiConexion.Close()

End Sub

Para realizar impresiones de las rutas, con sus respectivos registros de detalle

de ruta, se empleó el siguiente código:

Sub ImprimirRecibos()

Page 177: Diseño e implementación de un sistema de control de rutas de transporte

43

Dim pd As New PrintDocument()

AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage1

pd.Print()

End Sub

Private Sub pd_PrintPage1(ByVal sender As Object, ByVal e As

System.Drawing.Printing.PrintPageEventArgs)

' La fuente que vamos a usar para imprimir.

Dim printFont1 As System.Drawing.Font = New Font("Courier New", 12,

FontStyle.Bold)

Dim printFont2 As System.Drawing.Font = New Font("Courier New", 10)

Dim topMargin As Single = e.MarginBounds.Top

Dim yPos As Single = 0

Dim xPos As Single = 30

Dim linesPerPage As Single = 0

Dim count As Integer = 0

Dim Texto As String = ""

linesPerPage = e.MarginBounds.Height / printFont2.GetHeight(e.Graphics)

yPos = topMargin + (count * printFont2.GetHeight(e.Graphics))

yPos = yPos - 80

For fila = 0 To FrmRutas.DgvDetalleRuta.RowCount - 1

Texto = "LA CASA DEL TOLDO"

e.Graphics.DrawString(Texto, printFont1, System.Drawing.Brushes.Black, xPos,

yPos)

yPos += 15

Texto = "RECIBIDO DE MERCADERÍA"

e.Graphics.DrawString(Texto, printFont1, System.Drawing.Brushes.Black, xPos,

yPos)

yPos += 25

Texto = "Responsable: " & FrmRutas.TxtNombreTransportista.Text

e.Graphics.DrawString(Texto, printFont2, System.Drawing.Brushes.Black, xPos,

yPos)

yPos += 15

Texto = "Ruta: " & FrmRutas.TxtCodigoRuta.Text

e.Graphics.DrawString(Texto, printFont2, System.Drawing.Brushes.Black, xPos,

yPos)

Page 178: Diseño e implementación de un sistema de control de rutas de transporte

44

yPos += 15

Texto = "Factura/Guia: "& FrmRutas.DgvDetalleRuta.Item(2,

fila).Value.ToString

e.Graphics.DrawString(Texto, printFont2, System.Drawing.Brushes.Black, xPos,

yPos)

yPos += 15

Texto = "Cliente: " &FrmRutas.DgvDetalleRuta.Item(3,

fila).Value.ToString & " - " & FrmRutas.DgvDetalleRuta.Item(4, fila).Value.ToString

e.Graphics.DrawString(Texto, printFont2, System.Drawing.Brushes.Black, xPos,

yPos)

yPos += 15

Texto = "Dirección: " &FrmRutas.DgvDetalleRuta.Item(5,

fila).Value.ToString

e.Graphics.DrawString(Texto, printFont2, System.Drawing.Brushes.Black, xPos,

yPos)

yPos += 25

Texto = "Recibido por: _______________________________"

e.Graphics.DrawString(Texto, printFont2, System.Drawing.Brushes.Black, xPos,

yPos)

yPos += 15

Texto = "Cédula: _______________________________"

e.Graphics.DrawString(Texto, printFont2, System.Drawing.Brushes.Black, xPos,

yPos)

yPos += 15

Texto = "Parentesco: _______________________________"

e.Graphics.DrawString(Texto, printFont2, System.Drawing.Brushes.Black, xPos,

yPos)

yPos += 15

Texto = "Fecha y Hora: _______________________________"

e.Graphics.DrawString(Texto, printFont2, System.Drawing.Brushes.Black, xPos,

yPos)

yPos += 15

Texto = "Observación: _______________________________"

e.Graphics.DrawString(Texto, printFont2, System.Drawing.Brushes.Black, xPos,

yPos)

yPos += 45

Page 179: Diseño e implementación de un sistema de control de rutas de transporte

45

Texto = "_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ "

e.Graphics.DrawString(Texto, printFont2, System.Drawing.Brushes.Black, xPos,

yPos)

yPos += 50

Next

Texto = Nothing

If Texto Is Nothing Then e.HasMorePages = False

End Sub

Se implementaron además funciones de apariencia, para manejar los controles

del formulario de rutas, empleando los siguientes códigos:

Sub ControlBotones(ByVal Control As Boolean)

If Control = True Then

FrmRutas.TooNuevo.Enabled = True

FrmRutas.TooEditar.Enabled = True

FrmRutas.TooGuardar.Enabled = False

FrmRutas.TooEliminar.Enabled = True

FrmRutas.TooImprimir.Enabled = True

FrmRutas.TxtBusqueda.Enabled = True

ElseIf Control = False Then

FrmRutas.TooNuevo.Enabled = False

FrmRutas.TooEditar.Enabled = False

FrmRutas.TooGuardar.Enabled = True

FrmRutas.TooEliminar.Enabled = False

FrmRutas.TooImprimir.Enabled = False

FrmRutas.TxtBusqueda.Enabled = False

End If

End Sub

Sub ControlTexto(ByVal Control As String)

If Control = "Habilitar" Then

FrmRutas.TxtCodigoRuta.Enabled = False

FrmRutas.TxtCodigoVehiculo.Enabled = True

FrmRutas.TxtFecha.Enabled = True

FrmRutas.TxtObservacion.Enabled = True

Page 180: Diseño e implementación de un sistema de control de rutas de transporte

46

FrmRutas.BtnAgregarCliente.Enabled = True

FrmRutas.BtnQuitarCliente.Enabled = True

FrmRutas.BtnConsultaVehiculo.Enabled = True

FrmRutas.BtnImprimirRecibos.Enabled = True

ElseIf Control = "Deshabilitar" Then

FrmRutas.TxtCodigoRuta.Enabled = False

FrmRutas.TxtCodigoVehiculo.Enabled = False

FrmRutas.TxtFecha.Enabled = False

FrmRutas.TxtObservacion.Enabled = False

FrmRutas.BtnAgregarCliente.Enabled = False

FrmRutas.BtnQuitarCliente.Enabled = False

FrmRutas.BtnConsultaVehiculo.Enabled = False

FrmRutas.BtnImprimirRecibos.Enabled = False

ElseIf Control = "Enblanco" Then

FrmRutas.TxtCodigoRuta.Text = ""

FrmRutas.TxtCodigoVehiculo.Text = ""

FrmRutas.TxtFecha.Text = ""

FrmRutas.TxtObservacion.Text = ""

End If

End Sub

1.1.6. Transportistas

La clase Transportistas, dentro del proyecto se encuentra asignada con el nombre

ClsTransportistas.vb.

El código utilizado en la clase ClsTransportistas, se detalla a continuación:

Imports System

Page 181: Diseño e implementación de un sistema de control de rutas de transporte

47

Imports System.Data

Imports System.Data.Odbc

Imports System.IO

Imports System.Drawing

Imports System.Drawing.Printing

Imports System.Windows.Forms

Para la creación de nuevos registros se utilizó el siguiente código:

Sub Nuevo(ByVal Codigo As String, ByVal Cedula As String, ByVal Nombres As

String, ByVal Apellidos As String, ByVal Nacionalidad As String, ByVal EstadoCivil

As String, ByVal FechaNacimiento As String, ByVal TipoSangre As String, ByVal

Email As String, ByVal Convencional As String, ByVal Celular As String, ByVal

Direccion As String, ByVal Enfermedades As String, ByVal Observacion As String,

ByVal AñosServicio As String, ByVal Cargo As String, ByVal LicenciaMoto As

String, ByVal LicenciaCarro As String, ByVal ReferenciaLaboral As String, ByVal

ExperienciaLaboral As String, ByVal Parentesco As String, ByVal NombresFamiliar

As String, ByVal ApellidosFamiliar As String, ByVal CelularFamiliar As String, ByVal

ConvencionalFamiliar As String, ByVal DireccionFamiliar As String)

MiConexion.open()

Dim Cadena As String

Cadena = "insert into tbltransportistas values('" & Codigo & "', '" & _

Cedula & "', '" & _

Nombres & "', '" & _

Apellidos & "', '" & _

Nacionalidad & "', '" & _

EstadoCivil & "', '" & _

FechaNacimiento & "', '" & _

TipoSangre & "', '" & _

Email & "', '" & _

Convencional & "', '" & _

Celular & "', '" & _

Direccion & "', '" & _

Enfermedades & "', '" & _

Observacion & "', '" & _

AñosServicio & "', '" & _

Page 182: Diseño e implementación de un sistema de control de rutas de transporte

48

Cargo & "', '" & _

LicenciaMoto & "', '" & _

LicenciaCarro & "', '" & _

ReferenciaLaboral & "', '" & _

ExperienciaLaboral & "', '" & _

NombresFamiliar & "', '" & _

ApellidosFamiliar & "', '" & _

Parentesco & "', '" & _

CelularFamiliar & "', '" & _

ConvencionalFamiliar & "', '" & _

DireccionFamiliar & "', '" & _

CodigoUsuario() & "', '" & _

Date.Today & "', '" & _

" " & "', '" & _

" " & "', '" & _

" " & "', '" & _

" " & "', 'a')"

Dim ComandoSql As New OdbcCommand(Cadena, MiConexion)

ComandoSql.ExecuteNonQuery()

MiConexion.close()

End Sub

Para la modificación de registros existentes se empleó el siguiente código:

Sub Editar(ByVal Codigo As String, ByVal Cedula As String, ByVal Nombres As

String, ByVal Apellidos As String, ByVal Nacionalidad As String, ByVal EstadoCivil

As String, ByVal FechaNacimiento As String, ByVal TipoSangre As String, ByVal

Email As String, ByVal Convencional As String, ByVal Celular As String, ByVal

Direccion As String, ByVal Enfermedades As String, ByVal Observacion As String,

ByVal AñosServicio As String, ByVal Cargo As String, ByVal LicenciaMoto As

String, ByVal LicenciaCarro As String, ByVal ReferenciaLaboral As String, ByVal

ExperienciaLaboral As String, ByVal Parentesco As String, ByVal NombresFamiliar

As String, ByVal ApellidosFamiliar As String, ByVal CelularFamiliar As String, ByVal

ConvencionalFamiliar As String, ByVal DireccionFamiliar As String)

MiConexion.open()

Page 183: Diseño e implementación de un sistema de control de rutas de transporte

49

Dim Cadena As String

Cadena = "update tbltransportistas set cedula_transportista='" & Cedula & _

"', nombres_transportista='" & Nombres & _

"', apellidos_transportista='" & Apellidos & _

"', nacionalidad_transportista='" & Nacionalidad & _

"', ecivil_transportista='" & EstadoCivil & _

"', fnacimiento_transportista='" & FechaNacimiento & _

"', tsangre_transportista='" & TipoSangre & _

"', email_transportista='" & Email & _

"', convencional_transportista='" & Convencional & _

"', celular_transportista='" & Celular & _

"', direccion_transportista='" & Direccion & _

"', enfermedades_transportista='" & Enfermedades & _

"', otros_transportista='" & Observacion & _

"', aservicio_transportista='" & AñosServicio & _

"', cargo_transportista='" & Cargo & _

"', licencia_moto='" & LicenciaMoto & _

"', licencia_vehiculo='" & LicenciaCarro & _

"', referencia_laboral='" & ReferenciaLaboral & _

"', experiencia_laboral='" & ExperienciaLaboral & _

"', nombres_familiar='" & NombresFamiliar & _

"', apellidos_familiar='" & ApellidosFamiliar & _

"', parentesco_familiar='" & Parentesco & _

"', celular_familiar='" & CelularFamiliar & _

"', convencional_familiar='" & ConvencionalFamiliar & _

"', direccion_familiar='" & DireccionFamiliar & _

"', usuario_modifica='" &CodigoUsuario() & _

"', fecha_modifica='" & Date.Today & _

"' where codigo_transportista='" & Codigo & "'"

Dim ComandoSql As New OdbcCommand(Cadena, MiConexion)

ComandoSql.ExecuteNonQuery()

MiConexion.close()

End Sub

Para eliminar registros existentes se utilizó el siguiente código:

Page 184: Diseño e implementación de un sistema de control de rutas de transporte

50

Sub Eliminar(ByVal Codigo As String)

MiConexion.open()

Dim Cadena As String

Cadena = "update tbltransportistas set estado_transportista='i',

fecha_elimina='" & Date.Today & "', usuario_elimina='" & CodigoUsuario() & "'

where codigo_transportista='" & Codigo & "'"

Dim ComandoSql As New OdbcCommand(Cadena, MiConexion)

ComandoSql.ExecuteNonQuery()

MiConexion.close()

End Sub

Para la realización de una consulta dinámica en el formulario de registro, se

utilizó el siguiente código:

Sub Consulta1(ByVal Consulta As String)

MiConexion.Open()

Dim i As Integer = 0

If Consulta = "" Then

i = 0

Else

Dim Consultita As String = "SELECT * FROM tbltransportistas WHERE (

nombres_transportista LIKE '%" & Consulta & "%' or apellidos_transportista like '%"

& Consulta & "%' or codigo_transportista like '%" & Consulta & "%' or

cedula_transportista like '%" & Consulta & "%' ) and estado_transportista='a'"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmTransportistas.DgvBusqueda.Rows.Clear()

While (DrLectura.Read())

FrmTransportistas.DgvBusqueda.Rows.Add(DrLectura("codigo_transportista"),

DrLectura("cedula_transportista"), DrLectura("nombres_transportista"),

DrLectura("apellidos_transportista"), DrLectura("nacionalidad_transportista"),

DrLectura("ecivil_transportista"), DrLectura("fnacimiento_transportista"),

DrLectura("tsangre_transportista"), DrLectura("email_transportista"),

DrLectura("convencional_transportista"), DrLectura("celular_transportista"),

DrLectura("direccion_transportista"), DrLectura("enfermedades_transportista"),

Page 185: Diseño e implementación de un sistema de control de rutas de transporte

51

DrLectura("otros_transportista"), DrLectura("aservicio_transportista"),

DrLectura("cargo_transportista"), DrLectura("licencia_moto"),

DrLectura("licencia_vehiculo"), DrLectura("referencia_laboral"),

DrLectura("experiencia_laboral"), DrLectura("parentesco_familiar"),

DrLectura("nombres_familiar"), DrLectura("apellidos_familiar"),

DrLectura("celular_familiar"), DrLectura("convencional_familiar"),

DrLectura("direccion_familiar"))

i += 1

End While

DrLectura.Close()

End If

MiConexion.Close()

If i > 0 Then

FrmTransportistas.PnlBusqueda.Visible = True

Else

FrmTransportistas.PnlBusqueda.Visible = False

i = 0

End If

End Sub

Para la realización de una consulta dinámica en el formulario de vehículos, se

utilizó el siguiente código:

Sub Consulta2(ByVal Consulta As String)

MiConexion.Open()

Dim Consultita As String = "SELECT * FROM tbltransportistas WHERE (

nombres_transportista LIKE '%" & Consulta & "%' or apellidos_transportista like '%"

& Consulta & "%' or codigo_transportista like '%" & Consulta & "%' or

cedula_transportista like '%" & Consulta & "%' ) and estado_transportista='a'"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmVehiculos.DgvConsulta.Rows.Clear()

While (DrLectura.Read())

Page 186: Diseño e implementación de un sistema de control de rutas de transporte

52

FrmVehiculos.DgvConsulta.Rows.Add(DrLectura("codigo_transportista"),

DrLectura("cedula_transportista"), DrLectura("nombres_transportista"),

DrLectura("apellidos_transportista"))

End While

DrLectura.Close()

MiConexion.Close()

End Sub

Se implementó una función que devuelve los nombres de los transportistas,

cuyo código es el siguiente:

Function Consulta3(ByVal Codigo As String) As String

MiConexion.Open()

Dim Consultita As String = "SELECT * FROM tbltransportistas WHERE

codigo_transportista like '" & Codigo & "' and estado_transportista='a'"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

Dim Transportista As String = ""

While (DrLectura.Read())

Transportista = DrLectura("nombres_transportista") & " " &

DrLectura("apellidos_transportista")

End While

DrLectura.Close()

MiConexion.Close()

If Transportista = "" Then

Transportista = "Código Transportista desconocido"

End If

Return Transportista

End Function

Para la realización de una consulta dinámica, la cual será tomada como

informe, se elaboró el siguiente código:

Sub Informe(ByVal Consulta As String)

Page 187: Diseño e implementación de un sistema de control de rutas de transporte

53

MiConexion.Open()

Dim Consultita As String = "SELECT * FROM tbltransportistas WHERE (

nombres_transportista LIKE '%" & Consulta & "%' or apellidos_transportista like '%"

& Consulta & "%' or codigo_transportista like '%" & Consulta & "%' or

cedula_transportista like '%" & Consulta & "%' or cargo_transportista like '%" &

Consulta & "%') and estado_transportista='a' order by codigo_transportista"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmRepTransportistas.DgvInforme.Rows.Clear()

While (DrLectura.Read())

FrmRepTransportistas.DgvInforme.Rows.Add(DrLectura("codigo_transportista"),

DrLectura("cedula_transportista"), DrLectura("nombres_transportista"),

DrLectura("apellidos_transportista"), DrLectura("convencional_transportista") & " " &

DrLectura("celular_transportista"), DrLectura("cargo_transportista"),

DrLectura("direccion_transportista"), DrLectura("nombres_familiar") & " " &

DrLectura("apellidos_familiar"), DrLectura("celular_familiar") & " - " &

DrLectura("convencional_familiar"))

End While

DrLectura.Close()

MiConexion.Close()

End Sub

Para la realización de una consulta dinámica, la cual será empleada como

auditoría de transportistas, se utilizó el siguiente código:

Sub Auditoria(ByVal Consulta As String)

MiConexion.Open()

Dim Consultita As String = "SELECT * FROM tbltransportistas WHERE (

nombres_transportista LIKE '%" & Consulta & "%' or apellidos_transportista like '%"

& Consulta & "%' or codigo_transportista like '%" & Consulta & "%' or

cedula_transportista like '%" & Consulta & "%' or cargo_transportista like '%" &

Consulta & "%') order by codigo_transportista"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmAudTransportistas.DgvInforme.Rows.Clear()

While (DrLectura.Read())

Page 188: Diseño e implementación de un sistema de control de rutas de transporte

54

FrmAudTransportistas.DgvInforme.Rows.Add(DrLectura("codigo_transportista"),

DrLectura("cedula_transportista"), DrLectura("nombres_transportista"),

DrLectura("apellidos_transportista"), DrLectura("usuario_crea"),

DrLectura("fecha_crea"), DrLectura("usuario_modifica"),

DrLectura("fecha_modifica"), DrLectura("usuario_elimina"),

DrLectura("fecha_elimina"), DrLectura("estado_transportista"))

End While

DrLectura.Close()

MiConexion.Close()

End Sub

Para la impresión de un registro específico se utilizó el siguiente código:

Sub ImprimirRegistro()

Dim pd As New PrintDocument()

AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage1

pd.Print()

End Sub

Private Sub pd_PrintPage1(ByVal sender As Object, ByVal e As

System.Drawing.Printing.PrintPageEventArgs)

' La fuente que vamos a usar para imprimir.

Dim printFont1 As System.Drawing.Font = New Font("Times New Roman", 12,

FontStyle.Bold)

Dim printFont2 As System.Drawing.Font = New Font("Times New Roman", 12)

Dim printFont3 As System.Drawing.Font = New Font("Times New Roman", 10,

FontStyle.Bold)

Dim printFont4 As System.Drawing.Font = New Font("Times New Roman", 10)

Dim printFont5 As System.Drawing.Font = New Font("Times New Roman", 8,

FontStyle.Bold)

Dim printFont6 As System.Drawing.Font = New Font("Times New Roman", 8)

Dim printFont7 As System.Drawing.Font = New Font("Times New Roman", 6)

Dim topMargin As Single = e.MarginBounds.Top

Dim yPos As Single = 0

Dim xPos As Single = 50

Dim linesPerPage As Single = 0

Dim count As Integer = 0

Page 189: Diseño e implementación de un sistema de control de rutas de transporte

55

Dim Texto As String = ""

linesPerPage = e.MarginBounds.Height / printFont2.GetHeight(e.Graphics)

yPos = topMargin + (count * printFont2.GetHeight(e.Graphics))

yPos = 90

xPos = 80

e.Graphics.DrawLine(Pens.Black, 70, 85, 750, 85)

e.Graphics.DrawLine(Pens.Black, 70, 155, 750, 155)

e.Graphics.DrawLine(Pens.Black, 70, 520, 750, 520)

e.Graphics.DrawLine(Pens.Black, 70, 85, 70, 520)

e.Graphics.DrawLine(Pens.Black, 750, 85, 750, 520)

e.Graphics.DrawLine(Pens.Black, 670, 85, 670, 155)

e.Graphics.DrawImage(FrmMenu.PicLogo.Image, 90, 95, 50, 51)

Texto = FrmMenu.LblCodigo.Text

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680, 100)

Texto = FrmMenu.LblUsuario.Text

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680, 112)

Texto = "Pág.: 1/1"

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680, 124)

Texto = NombreSistema

e.Graphics.DrawString(Texto, printFont1, System.Drawing.Brushes.Black, xPos +

80, yPos)

yPos += 20

Texto = "Los mejores productos, a los mejores precios"

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

80, yPos)

yPos += 15

Texto = "Informe de Transportistas"

e.Graphics.DrawString(Texto, printFont4, System.Drawing.Brushes.Black, xPos +

80, yPos)

yPos += 35

Texto = "INFORMACIÓN PERSONAL"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = "REFERENCIA PERSONAL"

Page 190: Diseño e implementación de un sistema de control de rutas de transporte

56

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, 425,

yPos)

yPos += 15

Texto = "Código: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmTransportistas.TxtCodigo.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

Texto = "Parentesco: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, 425,

yPos)

Texto = FrmTransportistas.TxtParentescoFamiliar.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, 525,

yPos)

yPos += 15

Texto = "Cédula: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmTransportistas.TxtCedula.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

Texto = "Nombres: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, 425,

yPos)

Texto = FrmTransportistas.TxtNombresFamiliar.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, 525,

yPos)

yPos += 15

Texto = "Nombres: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmTransportistas.TxtNombres.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

Texto = "Apellidos: "

Page 191: Diseño e implementación de un sistema de control de rutas de transporte

57

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, 425,

yPos)

Texto = FrmTransportistas.TxtApellidosFamiliar.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, 525,

yPos)

yPos += 15

Texto = "Apellidos: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmTransportistas.TxtApellidos.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

Texto = "Convencional: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, 425,

yPos)

Texto = FrmTransportistas.TxtConvencionalFamiliar.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, 525,

yPos)

yPos += 15

Texto = "Nacionalidad: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmTransportistas.TxtNacionalidad.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

Texto = "Celular: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, 425,

yPos)

Texto = FrmTransportistas.TxtCelularFamiliar.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, 525,

yPos)

yPos += 15

Texto = "Estado Civil: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmTransportistas.CmbEstadoCivil.Text

Page 192: Diseño e implementación de un sistema de control de rutas de transporte

58

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

Texto = "Dirección: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, 425,

yPos)

Texto = FrmTransportistas.TxtDireccionFamiliar.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, 525,

yPos)

yPos += 15

Texto = "F. Nacimiento: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmTransportistas.CmbFechaNacimiento.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Tipo de Sangre: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmTransportistas.TxtTipoSangre.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "E-mail: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmTransportistas.TxtEmail.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Convencional: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmTransportistas.TxtConvencional.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

Page 193: Diseño e implementación de un sistema de control de rutas de transporte

59

yPos += 15

Texto = "Celular: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmTransportistas.TxtCelular.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Dirección: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmTransportistas.TxtDireccion.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Enfermedades: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmTransportistas.TxtEnfermedades.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Otros: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmTransportistas.TxtObservacion.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 20

Texto = "INFORMACIÓN LABORAL"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

yPos += 15

Texto = "Años servicio: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Page 194: Diseño e implementación de un sistema de control de rutas de transporte

60

Texto = FrmTransportistas.TxtAñosServicio.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Cargo: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmTransportistas.CmbCargo.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Licencia Moto: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmTransportistas.CmbLicenciaMoto.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Licencia Vehículo: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmTransportistas.CmbLicenciaCarro.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Ref. Laboral: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmTransportistas.TxtReferenciaLaboral.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Exp. Laboral: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmTransportistas.TxtReferenciaLaboral.Text

Page 195: Diseño e implementación de un sistema de control de rutas de transporte

61

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 20

Texto = Nothing

If Texto Is Nothing Then e.HasMorePages = False

End Sub

Para la impresión de todos los registros de la tabla transportistas se procedió a

utilizar el siguiente código:

Sub ImprimirInforme()

Dim pd As New PrintDocument()

AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage2

pd.Print()

End Sub

Private Sub pd_PrintPage2(ByVal sender As Object, ByVal e As

System.Drawing.Printing.PrintPageEventArgs)

' La fuente que vamos a usar para imprimir.

Dim printFont1 As System.Drawing.Font = New Font("Times New Roman", 12,

FontStyle.Bold)

Dim printFont2 As System.Drawing.Font = New Font("Times New Roman", 12)

Dim printFont3 As System.Drawing.Font = New Font("Times New Roman", 10,

FontStyle.Bold)

Dim printFont4 As System.Drawing.Font = New Font("Times New Roman", 10)

Dim printFont5 As System.Drawing.Font = New Font("Times New Roman", 8,

FontStyle.Bold)

Dim printFont6 As System.Drawing.Font = New Font("Times New Roman", 8)

Dim printFont7 As System.Drawing.Font = New Font("Times New Roman", 6)

Dim topMargin As Single = e.MarginBounds.Top

Dim yPos As Single = 0

Dim xPos As Single = 50

Dim linesPerPage As Single = 0

Dim count As Integer = 0

Dim Texto As String = ""

Page 196: Diseño e implementación de un sistema de control de rutas de transporte

62

linesPerPage = e.MarginBounds.Height / printFont2.GetHeight(e.Graphics)

yPos = topMargin + (count * printFont2.GetHeight(e.Graphics))

yPos = 90

xPos = 80

e.Graphics.DrawLine(Pens.Black, 70, 85, 750, 85)

e.Graphics.DrawLine(Pens.Black, 70, 155, 750, 155)

e.Graphics.DrawLine(Pens.Black, 70, 1100, 750, 1100)

e.Graphics.DrawLine(Pens.Black, 70, 85, 70, 1100)

e.Graphics.DrawLine(Pens.Black, 750, 85, 750, 1100)

e.Graphics.DrawLine(Pens.Black, 670, 85, 670, 155)

e.Graphics.DrawImage(FrmMenu.PicLogo.Image, 90, 95, 50, 51)

Texto = FrmMenu.LblCodigo.Text

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680, 100)

Texto = FrmMenu.LblUsuario.Text

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680, 112)

Texto = "Pág.: 1/1"

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680, 124)

Texto = NombreSistema

e.Graphics.DrawString(Texto, printFont1, System.Drawing.Brushes.Black, xPos +

80, yPos)

yPos += 20

Texto = "Los mejores productos, a los mejores precios"

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

80, yPos)

yPos += 15

Texto = "Informe General de Transportistas"

e.Graphics.DrawString(Texto, printFont4, System.Drawing.Brushes.Black, xPos +

80, yPos)

yPos += 35

Texto = "CÓDIGO"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = "CÉDULA"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos +

70, yPos)

Page 197: Diseño e implementación de un sistema de control de rutas de transporte

63

Texto = "NOMBRES"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos +

140, yPos)

Texto = "APELLIDOS"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos +

250, yPos)

Texto = "TELÉFONOS"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos +

360, yPos)

Texto = "CARGO"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos +

470, yPos)

yPos += 20

Dim Filas As Integer = 0

Dim Codigo As String = ""

Dim Cedula As String = ""

Dim Nombres As String = ""

Dim Apellidos As String = ""

Dim Telefonos As String = ""

Dim Cargo As String = ""

Filas = FrmRepTransportistas.DgvInforme.RowCount

For a = 0 To Filas - 1

Codigo = FrmRepTransportistas.DgvInforme.Item(0, a).Value.ToString

Cedula = FrmRepTransportistas.DgvInforme.Item(1, a).Value.ToString

Nombres = Mid(FrmRepTransportistas.DgvInforme.Item(2, a).Value.ToString, 1, 25)

' leo de dtgrid y limito a 16 caracteres

Apellidos = Mid(FrmRepTransportistas.DgvInforme.Item(3,

a).Value.ToString, 1, 25) ' leo de dtgrid y limito a 16 caracteres

Telefonos = LTrim(Mid(FrmRepTransportistas.DgvInforme.Item(4,

a).Value.ToString, 1, 19)) ' leo de dtgrid y limito a 19 caracteres

Cargo = FrmRepTransportistas.DgvInforme.Item(5, a).Value.ToString

e.Graphics.DrawString(Codigo, printFont6, System.Drawing.Brushes.Black, xPos,

yPos)

e.Graphics.DrawString(Cedula, printFont6, System.Drawing.Brushes.Black, xPos +

70, yPos)

Page 198: Diseño e implementación de un sistema de control de rutas de transporte

64

e.Graphics.DrawString(Nombres, printFont6, System.Drawing.Brushes.Black, xPos

+ 140, yPos)

e.Graphics.DrawString(Apellidos, printFont6, System.Drawing.Brushes.Black, xPos

+ 250, yPos)

e.Graphics.DrawString(Telefonos, printFont6, System.Drawing.Brushes.Black, xPos

+ 360, yPos)

e.Graphics.DrawString(Cargo, printFont6, System.Drawing.Brushes.Black, xPos +

470, yPos)

yPos += 15

Next

Texto = Nothing

If Texto Is Nothing Then e.HasMorePages = False

End Sub

Se emplearon funciones de apariencia para controlar los botones de control de

los formularios, conjuntamente con las cajas de texto, para lo cual se utilizó el

siguiente código:

Sub ControlBotones(ByVal Control As Boolean)

If Control = True Then

FrmTransportistas.TooNuevo.Enabled = True

FrmTransportistas.TooEditar.Enabled = True

FrmTransportistas.TooGuardar.Enabled = False

FrmTransportistas.TooEliminar.Enabled = True

FrmTransportistas.TooImprimir.Enabled = True

FrmTransportistas.TxtBusqueda.Enabled = True

ElseIf Control = False Then

FrmTransportistas.TooNuevo.Enabled = False

FrmTransportistas.TooEditar.Enabled = False

FrmTransportistas.TooGuardar.Enabled = True

FrmTransportistas.TooEliminar.Enabled = False

FrmTransportistas.TooImprimir.Enabled = False

FrmTransportistas.TxtBusqueda.Enabled = False

End If

End Sub

Page 199: Diseño e implementación de un sistema de control de rutas de transporte

65

Sub ControlTexto(ByVal Control As String)

If Control = "Habilitar" Then

' INFORMACIÓN PERSONAL

FrmTransportistas.TxtCodigo.Enabled = False

FrmTransportistas.TxtCedula.Enabled = True

FrmTransportistas.TxtNombres.Enabled = True

FrmTransportistas.TxtApellidos.Enabled = True

FrmTransportistas.TxtNacionalidad.Enabled = True

FrmTransportistas.CmbEstadoCivil.Enabled = True

FrmTransportistas.CmbFechaNacimiento.Enabled = True

FrmTransportistas.TxtTipoSangre.Enabled = True

FrmTransportistas.TxtEmail.Enabled = True

FrmTransportistas.TxtConvencional.Enabled = True

FrmTransportistas.TxtCelular.Enabled = True

FrmTransportistas.TxtDireccion.Enabled = True

FrmTransportistas.TxtEnfermedades.Enabled = True

FrmTransportistas.TxtObservacion.Enabled = True

' INFORMACIÓN LABORAL

FrmTransportistas.TxtAñosServicio.Enabled = True

FrmTransportistas.CmbCargo.Enabled = True

FrmTransportistas.CmbLicenciaMoto.Enabled = True

FrmTransportistas.CmbLicenciaCarro.Enabled = True

FrmTransportistas.TxtReferenciaLaboral.Enabled = True

FrmTransportistas.TxtExperienciaLaboral.Enabled = True

' REFERENCIA FAMILIAR

FrmTransportistas.TxtParentescoFamiliar.Enabled = True

FrmTransportistas.TxtNombresFamiliar.Enabled = True

FrmTransportistas.TxtApellidosFamiliar.Enabled = True

FrmTransportistas.TxtCelularFamiliar.Enabled = True

FrmTransportistas.TxtConvencionalFamiliar.Enabled = True

FrmTransportistas.TxtDireccionFamiliar.Enabled = True

ElseIf Control = "Deshabilitar" Then

' INFORMACIÓN PERSONAL

FrmTransportistas.TxtCodigo.Enabled = False

Page 200: Diseño e implementación de un sistema de control de rutas de transporte

66

FrmTransportistas.TxtCedula.Enabled = False

FrmTransportistas.TxtNombres.Enabled = False

FrmTransportistas.TxtApellidos.Enabled = False

FrmTransportistas.TxtNacionalidad.Enabled = False

FrmTransportistas.CmbEstadoCivil.Enabled = False

FrmTransportistas.CmbFechaNacimiento.Enabled = False

FrmTransportistas.TxtTipoSangre.Enabled = False

FrmTransportistas.TxtEmail.Enabled = False

FrmTransportistas.TxtConvencional.Enabled = False

FrmTransportistas.TxtCelular.Enabled = False

FrmTransportistas.TxtDireccion.Enabled = False

FrmTransportistas.TxtEnfermedades.Enabled = False

FrmTransportistas.TxtObservacion.Enabled = False

' INFORMACIÓN LABORAL

FrmTransportistas.TxtAñosServicio.Enabled = False

FrmTransportistas.CmbCargo.Enabled = False

FrmTransportistas.CmbLicenciaMoto.Enabled = False

FrmTransportistas.CmbLicenciaCarro.Enabled = False

FrmTransportistas.TxtReferenciaLaboral.Enabled = False

FrmTransportistas.TxtExperienciaLaboral.Enabled = False

' REFERENCIA FAMILIAR

FrmTransportistas.TxtParentescoFamiliar.Enabled = False

FrmTransportistas.TxtNombresFamiliar.Enabled = False

FrmTransportistas.TxtApellidosFamiliar.Enabled = False

FrmTransportistas.TxtCelularFamiliar.Enabled = False

FrmTransportistas.TxtConvencionalFamiliar.Enabled = False

FrmTransportistas.TxtDireccionFamiliar.Enabled = False

ElseIf Control = "Enblanco" Then

' INFORMACIÓN PERSONAL

FrmTransportistas.TxtCodigo.Text = ""

FrmTransportistas.TxtCedula.Text = ""

FrmTransportistas.TxtNombres.Text = ""

FrmTransportistas.TxtApellidos.Text = ""

FrmTransportistas.TxtNacionalidad.Text = ""

FrmTransportistas.CmbEstadoCivil.Text = "Elegir Opción"

Page 201: Diseño e implementación de un sistema de control de rutas de transporte

67

FrmTransportistas.CmbFechaNacimiento.Text = ""

FrmTransportistas.TxtTipoSangre.Text = ""

FrmTransportistas.TxtEmail.Text = ""

FrmTransportistas.TxtConvencional.Text = ""

FrmTransportistas.TxtCelular.Text = ""

FrmTransportistas.TxtDireccion.Text = ""

FrmTransportistas.TxtEnfermedades.Text = ""

FrmTransportistas.TxtObservacion.Text = ""

' INFORMACIÓN LABORAL

FrmTransportistas.TxtAñosServicio.Text = ""

FrmTransportistas.CmbCargo.Text = "Elegir Opción"

FrmTransportistas.CmbLicenciaMoto.Text = "Elegir Opción"

FrmTransportistas.CmbLicenciaCarro.Text = "Elegir Opción"

FrmTransportistas.TxtReferenciaLaboral.Text = ""

FrmTransportistas.TxtExperienciaLaboral.Text = ""

' REFERENCIA FAMILIAR

FrmTransportistas.TxtParentescoFamiliar.Text = ""

FrmTransportistas.TxtNombresFamiliar.Text = ""

FrmTransportistas.TxtApellidosFamiliar.Text = ""

FrmTransportistas.TxtCelularFamiliar.Text = ""

FrmTransportistas.TxtConvencionalFamiliar.Text = ""

FrmTransportistas.TxtDireccionFamiliar.Text = ""

End If

End Sub

1.1.7. Unidades GPS

La clase que maneja la información concerniente a los equipos GPS, fue asignada

con el nombre ClsUnidadesGPS.vb.

El código utilizado en la clase ClsUnidadesGPS, se detalla a continuación:

' Importo clases de conexión

Page 202: Diseño e implementación de un sistema de control de rutas de transporte

68

Imports System

Imports System.Data

Imports System.Data.Odbc

' Importo clases de impresión

Imports System.IO

Imports System.Drawing

Imports System.Drawing.Printing

Imports System.Windows.Forms

Public Class ClsUnidadesGPS

Para la creación de una nueva unidad GPS se implementa el siguiente código:

' Funcion Nueva Unidad GPS

Sub Nuevo(ByVal Codigo As String, ByVal CodigoVehiculo As String, ByVal

Modelo As String, ByVal Marca As String, ByVal NumeroSerie As String, ByVal

FechaCompra As String, ByVal TiempoGarantia As String, ByVal Proveedor As

String, ByVal TelefonosProveedor As String, ByVal EmailProveedor As String,

ByVal CiudadProveedor As String, ByVal DireccionProveedor As String, ByVal

NoChipGPS As String, ByVal Sensibilidad As String, ByVal FrecuenciaGPS As

String, ByVal FrecuenciaGSM As String, ByVal LimiteVelocidad As String, ByVal

LimiteAltitud As String, ByVal PrecisionVelocidad As String, ByVal

ExactitudPosicional As String, ByVal InformacionBateria As String, ByVal

DuracionBateria As String, ByVal NumeroTelefonico As String, ByVal Operadora As

String)

MiConexion.open()

Dim Cadena As String

Cadena = "insert into tblunidadesgps values('" & Codigo & "', '" & _

CodigoVehiculo & "', '" & _

Modelo & "', '" & _

Marca & "', '" & _

NumeroSerie & "', '" & _

FechaCompra & "', '" & _

TiempoGarantia & "', '" & _

Proveedor & "', '" & _

TelefonosProveedor & "', '" & _

Page 203: Diseño e implementación de un sistema de control de rutas de transporte

69

EmailProveedor & "', '" & _

CiudadProveedor & "', '" & _

DireccionProveedor & "', '" & _

NoChipGPS & "', '" & _

Sensibilidad & "', '" & _

FrecuenciaGPS & "', '" & _

FrecuenciaGSM & "', '" & _

LimiteVelocidad & "', '" & _

LimiteAltitud & "', '" & _

PrecisionVelocidad & "', '" & _

ExactitudPosicional & "', '" & _

InformacionBateria & "', '" & _

DuracionBateria & "', '" & _

NumeroTelefonico & "', '" & _

Operadora & "', '" & _

"No" & "', '" & _

"0" & "', '" & _

CodigoUsuario() & "', '" & _

Date.Today & "', '" & _

" " & "', '" & _

" " & "', '" & _

" " & "', '" & _

" " & "', 'a')"

Dim ComandoSql As New OdbcCommand(Cadena, MiConexion)

ComandoSql.ExecuteNonQuery()

MiConexion.close()

End Sub

Para la edición de una unidad GPS ya existente se cuenta con el siguiente

código:

' Funcion Editar Unidad GPS

Sub Editar(ByVal Codigo As String, ByVal CodigoVehiculo As String, ByVal

Modelo As String, ByVal Marca As String, ByVal NumeroSerie As String, ByVal

FechaCompra As String, ByVal TiempoGarantia As String, ByVal Proveedor As

String, ByVal TelefonosProveedor As String, ByVal EmailProveedor As String,

Page 204: Diseño e implementación de un sistema de control de rutas de transporte

70

ByVal CiudadProveedor As String, ByVal DireccionProveedor As String, ByVal

NoChipGPS As String, ByVal Sensibilidad As String, ByVal FrecuenciaGPS As

String, ByVal FrecuenciaGSM As String, ByVal LimiteVelocidad As String, ByVal

LimiteAltitud As String, ByVal PrecisionVelocidad As String, ByVal

ExactitudPosicional As String, ByVal InformacionBateria As String, ByVal

DuracionBateria As String, ByVal NumeroTelefonico As String, ByVal Operadora As

String)

MiConexion.open()

Dim Cadena As String

Cadena = "update tblunidadesgps set codigo_vehiculo='" & CodigoVehiculo &

_

"', modelo_gps='" & Modelo & _

"', marca_gps='" & Marca & _

"', serie_gps='" & NumeroSerie & _

"', fechacompra_gps='" & FechaCompra & _

"', tiempogarantia_gps='" & TiempoGarantia & _

"', proveedor_gps='" & Proveedor & _

"', telefonos_gps='" & TelefonosProveedor & _

"', email_gps='" & EmailProveedor & _

"', ciudad_gps='" & CiudadProveedor & _

"', direccion_gps='" & DireccionProveedor & _

"', chip_gps='" & NoChipGPS & _

"', sensibilidad_gps='" & Sensibilidad & _

"', frecuenciagps_gps='" & FrecuenciaGPS & _

"', frecuenciagsm_gps='" & FrecuenciaGSM & _

"', limitevelocidad_gps='" & LimiteVelocidad & _

"', limitealtitud_gps='" & LimiteAltitud & _

"', precisionvelocidad_gps='" & PrecisionVelocidad & _

"', exactitudposicional_gps='" & ExactitudPosicional & _

"', informacionbateria_gps='" & InformacionBateria & _

"', duracionbateria_gps='" & DuracionBateria & _

"', numerotelefonico_gps='" & NumeroTelefonico & _

"', operador_gps='" & Operadora & _

"', usuario_modifica='" & CodigoUsuario() & _

"', fecha_modifica='" & Date.Today & _

Page 205: Diseño e implementación de un sistema de control de rutas de transporte

71

"' where codigo_gps='" & Codigo & "'"

Dim ComandoSql As New OdbcCommand(Cadena, MiConexion)

ComandoSql.ExecuteNonQuery()

MiConexion.close()

End Sub

' Funcion Editar Unidad GPS

Sub EditarActivacion(ByVal CodigoGPS As String, ByVal EstadoServicio As

String, ByVal LatenciaServicio As String)

MiConexion.open()

Dim Cadena As String

Cadena = "update tblunidadesgps set estadoservicio_gps='" & EstadoServicio

& _

"', latencia_gps='" & LatenciaServicio & _

"', usuario_modifica='" & CodigoUsuario() & _

"', fecha_modifica='" & Date.Today & _

"' where codigo_gps='" & CodigoGPS & "'"

Dim ComandoSql As New OdbcCommand(Cadena, MiConexion)

ComandoSql.ExecuteNonQuery()

MiConexion.close()

End Sub

Para eliminación o inactivación de una unidad GPS se procedió a realizar el

siguiente código:

' Funcion Eliminar Unidad GPS

Sub Eliminar(ByVal Codigo As String)

MiConexion.open()

Dim Cadena As String

Cadena = "update tblunidadesgps set estado_unidadgps='i', fecha_elimina='" &

Date.Today & "', usuario_elimina='" & CodigoUsuario() & "' where codigo_gps='" &

Codigo & "'"

Page 206: Diseño e implementación de un sistema de control de rutas de transporte

72

Dim ComandoSql As New OdbcCommand(Cadena, MiConexion)

ComandoSql.ExecuteNonQuery()

MiConexion.close()

End Sub

Para realizar una consulta dinámica, a manera de informe, se cuenta con el

siguiente código:

Sub Informe(ByVal Consulta As String)

MiConexion.Open()

Dim Consultita As String = "select * from tblunidadesgps, tblvehiculos

where tblvehiculos.codigo_vehiculo=tblunidadesgps.codigo_vehiculo and

tblunidadesgps.estado_unidadgps='a' and tblvehiculos.estado_vehiculo='a' and (

tblunidadesgps.codigo_gps like '%" & Consulta & "%' or

tblunidadesgps.modelo_gps like '%" & Consulta & "%' or tblunidadesgps.marca_gps

like '%" & Consulta & "%' or tblunidadesgps.serie_gps like '%" & Consulta & "%' or

tblunidadesgps.proveedor_gps like '%" & Consulta & "%' ) order by codigo_gps"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmRepUnidadesGPS.DgvInforme.Rows.Clear()

While (DrLectura.Read())

FrmRepUnidadesGPS.DgvInforme.Rows.Add(DrLectura("codigo_gps"),

DrLectura("modelo_gps"), DrLectura("marca_gps"), DrLectura("serie_gps"),

DrLectura("fechacompra_gps"), DrLectura("tiempogarantia_gps"),

DrLectura("precisionvelocidad_gps"), DrLectura("exactitudposicional_gps"),

DrLectura("numerotelefonico_gps"), DrLectura("operador_gps"),

DrLectura("marca_vehiculo") & " - " & DrLectura("modelo_vehiculo"))

End While

DrLectura.Close()

MiConexion.Close()

End Sub

Para la impresión de un registro específico se utiliza el siguiente código:

' Realiza la impresión de un registro de la tabla unidades gps

Sub ImprimirRegistro()

Page 207: Diseño e implementación de un sistema de control de rutas de transporte

73

Dim pd As New PrintDocument()

AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage1

pd.Print()

End Sub

Private Sub pd_PrintPage1(ByVal sender As Object, ByVal e As

System.Drawing.Printing.PrintPageEventArgs)

' La fuente que vamos a usar para imprimir.

Dim printFont1 As System.Drawing.Font = New Font("Times New Roman", 12,

FontStyle.Bold)

Dim printFont2 As System.Drawing.Font = New Font("Times New Roman", 12)

Dim printFont3 As System.Drawing.Font = New Font("Times New Roman", 10,

FontStyle.Bold)

Dim printFont4 As System.Drawing.Font = New Font("Times New Roman", 10)

Dim printFont5 As System.Drawing.Font = New Font("Times New Roman", 9,

FontStyle.Bold)

Dim printFont6 As System.Drawing.Font = New Font("Times New Roman", 9)

Dim printFont7 As System.Drawing.Font = New Font("Times New Roman", 6)

Dim topMargin As Single = e.MarginBounds.Top

Dim yPos As Single = 0

Dim xPos As Single = 30

Dim linesPerPage As Single = 0

Dim count As Integer = 0

Dim Texto As String = ""

linesPerPage = e.MarginBounds.Height / printFont2.GetHeight(e.Graphics)

yPos = topMargin + (count * printFont2.GetHeight(e.Graphics))

yPos = 90

xPos = 80

' Graficación de líneas

e.Graphics.DrawLine(Pens.Black, 70, 85, 750, 85)

e.Graphics.DrawLine(Pens.Black, 70, 155, 750, 155)

e.Graphics.DrawLine(Pens.Black, 70, 500, 750, 500)

e.Graphics.DrawLine(Pens.Black, 70, 85, 70, 500)

e.Graphics.DrawLine(Pens.Black, 750, 85, 750, 500)

e.Graphics.DrawLine(Pens.Black, 670, 85, 670, 155)

Page 208: Diseño e implementación de un sistema de control de rutas de transporte

74

' Graficación de logotipo

e.Graphics.DrawImage(FrmMenu.PicLogo.Image, 90, 95, 50, 51)

Texto = FrmMenu.LblCodigo.Text

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680,

100)

Texto = FrmMenu.LblUsuario.Text

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680,

112)

Texto = "Pág.: 1/1"

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680,

124)

Texto = NombreSistema

e.Graphics.DrawString(Texto, printFont1, System.Drawing.Brushes.Black,

xPos + 80, yPos)

yPos += 20

Texto = "Los mejores productos, a los mejores precios"

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 80, yPos)

yPos += 15

Texto = "Unidades GPS"

e.Graphics.DrawString(Texto, printFont3, System.Drawing.Brushes.Black,

xPos + 80, yPos)

yPos += 35

Texto = "INFORMACIÓN GENERAL"

e.Graphics.DrawString(Texto, printFont3, System.Drawing.Brushes.Black,

xPos, yPos)

yPos += 15

Texto = "Código:"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtCodigo.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

Page 209: Diseño e implementación de un sistema de control de rutas de transporte

75

Texto = "Vehículo:"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtCodigoVehiculo.Text & " - " &

FrmUnidadesGPS.TxtVehiculo.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

Texto = "Modelo: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtModelo.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

Texto = "Marca: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtMarca.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

Texto = "N/Serie: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtSerie.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

Texto = "F. Compra: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.DtpFechaCompra.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

Page 210: Diseño e implementación de un sistema de control de rutas de transporte

76

Texto = "Garantía: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtGarantia.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

Texto = "Proveedor: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtProveedor.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

Texto = "Teléfonos: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtTelefonoProveedor.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

Texto = "Email: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtEmailProveedor.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

Texto = "Ciudad: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtCiudadProveedor.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

Texto = "Dirección: "

Page 211: Diseño e implementación de un sistema de control de rutas de transporte

77

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtDireccionProveedor.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 20

Texto = "INFORMACIÓN TÉCNICA"

e.Graphics.DrawString(Texto, printFont3, System.Drawing.Brushes.Black,

xPos, yPos)

yPos += 15

Texto = "Chip GPS: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtChipGPS.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

Texto = "Sensibilidad: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtSensibilidad.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

Texto = "Frecuencia GPS: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtFrecuenciaGPS.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

Texto = "Frecuencia GSM: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtFrecuenciaGSM.Text

Page 212: Diseño e implementación de un sistema de control de rutas de transporte

78

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

Texto = "Lim Velocidad: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtLimiteVelocidad.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

Texto = "Lim Altitud: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtLimiteAltitud.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

xPos = 425

yPos = 375

Texto = "Pres. Velocidad: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtPrecisionVelocidad.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

Texto = "Exac. Posicional: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtExactitudPosicional.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

Texto = "Inf. Batería: "

Page 213: Diseño e implementación de un sistema de control de rutas de transporte

79

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtInformacionBateria.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

Texto = "Dur. Batería: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtDuracionBateria.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

Texto = "Num. Telefónico: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtNumeroTelefonico.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

Texto = "Operadora: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = FrmUnidadesGPS.TxtOperadora.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 100, yPos)

yPos += 15

Texto = Nothing

If Texto Is Nothing Then e.HasMorePages = False

End Sub

Para la impresión de todos los registros de la tabla de unidades GPS se

procedió a utilizar el siguiente código:

Page 214: Diseño e implementación de un sistema de control de rutas de transporte

80

' Realiza una impresión general de la tabla Unidad GPS

Sub ImprimirInforme()

Dim pd As New PrintDocument()

AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage2

pd.Print()

End Sub

Private Sub pd_PrintPage2(ByVal sender As Object, ByVal e As

System.Drawing.Printing.PrintPageEventArgs)

' La fuente que vamos a usar para imprimir.

Dim printFont1 As System.Drawing.Font = New Font("Times New Roman", 12,

FontStyle.Bold)

Dim printFont2 As System.Drawing.Font = New Font("Times New Roman", 12)

Dim printFont3 As System.Drawing.Font = New Font("Times New Roman", 10,

FontStyle.Bold)

Dim printFont4 As System.Drawing.Font = New Font("Times New Roman", 10)

Dim printFont5 As System.Drawing.Font = New Font("Times New Roman", 5,

FontStyle.Bold)

Dim printFont6 As System.Drawing.Font = New Font("Times New Roman", 6)

Dim printFont7 As System.Drawing.Font = New Font("Times New Roman", 6)

Dim topMargin As Single = e.MarginBounds.Top

Dim yPos As Single = 0

Dim xPos As Single = 50

Dim linesPerPage As Single = 0

Dim count As Integer = 0

Dim Texto As String = ""

linesPerPage = e.MarginBounds.Height / printFont2.GetHeight(e.Graphics)

yPos = topMargin + (count * printFont2.GetHeight(e.Graphics))

yPos = 90

xPos = 80

' Graficación de líneas

e.Graphics.DrawLine(Pens.Black, 70, 85, 750, 85)

e.Graphics.DrawLine(Pens.Black, 70, 155, 750, 155)

e.Graphics.DrawLine(Pens.Black, 70, 1100, 750, 1100)

e.Graphics.DrawLine(Pens.Black, 70, 85, 70, 1100)

Page 215: Diseño e implementación de un sistema de control de rutas de transporte

81

e.Graphics.DrawLine(Pens.Black, 750, 85, 750, 1100)

e.Graphics.DrawLine(Pens.Black, 670, 85, 670, 155)

e.Graphics.DrawImage(FrmMenu.PicLogo.Image, 90, 95, 50, 51)

Texto = FrmMenu.LblCodigo.Text

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680,

100)

Texto = FrmMenu.LblUsuario.Text

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680,

112)

Texto = "Pág.: 1/1"

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680,

124)

Texto = NombreSistema

e.Graphics.DrawString(Texto, printFont1, System.Drawing.Brushes.Black,

xPos + 80, yPos)

yPos += 20

Texto = "Los mejores productos, a los mejores precios"

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black,

xPos + 80, yPos)

yPos += 15

Texto = "Informe General de Unidades GPS"

e.Graphics.DrawString(Texto, printFont4, System.Drawing.Brushes.Black,

xPos + 80, yPos)

yPos += 35

Texto = "CÓDIGO"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos, yPos)

Texto = "MODELO"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos + 50, yPos)

Texto = "MARCA"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos + 125, yPos)

Texto = "N/SERIE"

Page 216: Diseño e implementación de un sistema de control de rutas de transporte

82

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos + 200, yPos)

Texto = "F.COMPRA"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos + 275, yPos)

Texto = "GARANTÍA"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos + 325, yPos)

Texto = "PRES.VEL."

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos + 375, yPos)

Texto = "EXAC.POS."

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos + 425, yPos)

Texto = "N.TELF."

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos + 475, yPos)

Texto = "OPERADORA"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos + 525, yPos)

Texto = "VEHÍCULO"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black,

xPos + 575, yPos)

yPos += 20

Dim Filas As Integer = 0

Dim Codigo As String = ""

Dim Modelo As String = ""

Dim Marca As String = ""

Dim Serie As String = ""

Dim FechaCompra As String = ""

Dim Garantia As String = ""

Dim PresicionVelocidad As String = ""

Dim ExactitudPosicional As String = ""

Dim NumeroTelefónico As String = ""

Dim Operadora As String = ""

Page 217: Diseño e implementación de un sistema de control de rutas de transporte

83

Dim Vehiculo As String = ""

Filas = FrmRepUnidadesGPS.DgvInforme.RowCount

For a = 0 To Filas - 1

Codigo = FrmRepUnidadesGPS.DgvInforme.Item(0, a).Value.ToString

Modelo = FrmRepUnidadesGPS.DgvInforme.Item(1, a).Value.ToString

Marca = FrmRepUnidadesGPS.DgvInforme.Item(2, a).Value.ToString

Serie = FrmRepUnidadesGPS.DgvInforme.Item(3, a).Value.ToString

FechaCompra = FrmRepUnidadesGPS.DgvInforme.Item(4,

a).Value.ToString

Garantia = FrmRepUnidadesGPS.DgvInforme.Item(5, a).Value.ToString

PresicionVelocidad = FrmRepUnidadesGPS.DgvInforme.Item(6,

a).Value.ToString

ExactitudPosicional = FrmRepUnidadesGPS.DgvInforme.Item(7,

a).Value.ToString

NumeroTelefónico = FrmRepUnidadesGPS.DgvInforme.Item(8,

a).Value.ToString

Operadora = FrmRepUnidadesGPS.DgvInforme.Item(9, a).Value.ToString

Vehiculo = FrmRepUnidadesGPS.DgvInforme.Item(10, a).Value.ToString

e.Graphics.DrawString(Codigo, printFont6, System.Drawing.Brushes.Black,

xPos, yPos)

e.Graphics.DrawString(Modelo, printFont6, System.Drawing.Brushes.Black,

xPos + 50, yPos)

e.Graphics.DrawString(Marca, printFont6, System.Drawing.Brushes.Black,

xPos + 125, yPos)

e.Graphics.DrawString(Serie, printFont6, System.Drawing.Brushes.Black,

xPos + 200, yPos)

e.Graphics.DrawString(FechaCompra, printFont6,

System.Drawing.Brushes.Black, xPos + 275, yPos)

e.Graphics.DrawString(Garantia, printFont6,

System.Drawing.Brushes.Black, xPos + 325, yPos)

e.Graphics.DrawString(PresicionVelocidad, printFont6,

System.Drawing.Brushes.Black, xPos + 375, yPos)

e.Graphics.DrawString(ExactitudPosicional, printFont6,

System.Drawing.Brushes.Black, xPos + 425, yPos)

Page 218: Diseño e implementación de un sistema de control de rutas de transporte

84

e.Graphics.DrawString(NumeroTelefónico, printFont6,

System.Drawing.Brushes.Black, xPos + 475, yPos)

e.Graphics.DrawString(Operadora, printFont6,

System.Drawing.Brushes.Black, xPos + 525, yPos)

e.Graphics.DrawString(Vehiculo, printFont6,

System.Drawing.Brushes.Black, xPos + 575, yPos)

yPos += 15

Next

Texto = Nothing

If Texto Is Nothing Then e.HasMorePages = False

End Sub

Para realizar consultas dinámicas se empleó el siguiente código:

' Realiza una consulta dinámica en el formulario Unidad GPS

Sub Consulta1(ByVal Consulta As String)

MiConexion.Open()

Dim i As Integer = 0

If Consulta = "" Then

i = 0

Else

Dim Consultita As String = "SELECT * FROM tblunidadesgps WHERE (

modelo_gps LIKE '%" & Consulta & "%' or marca_gps like '%" & Consulta & "%' or

serie_gps like '%" & Consulta & "%' or proveedor_gps like '%" & Consulta & "%' or

numerotelefonico_gps like '%" & Consulta & "%' or operador_gps like '%" &

Consulta & "%') and estado_unidadgps='a'"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmUnidadesGPS.DgvBusqueda.Rows.Clear()

While (DrLectura.Read())

FrmUnidadesGPS.DgvBusqueda.Rows.Add(DrLectura("codigo_gps"),

DrLectura("codigo_vehiculo"), DrLectura("modelo_gps"), DrLectura("marca_gps"),

DrLectura("serie_gps"), DrLectura("fechacompra_gps"),

DrLectura("tiempogarantia_gps"), DrLectura("proveedor_gps"),

Page 219: Diseño e implementación de un sistema de control de rutas de transporte

85

DrLectura("telefonos_gps"), DrLectura("email_gps"), DrLectura("ciudad_gps"),

DrLectura("direccion_gps"), DrLectura("chip_gps"), DrLectura("sensibilidad_gps"),

DrLectura("frecuenciagps_gps"), DrLectura("frecuenciagsm_gps"),

DrLectura("limitevelocidad_gps"), DrLectura("limitealtitud_gps"),

DrLectura("precisionvelocidad_gps"), DrLectura("exactitudposicional_gps"),

DrLectura("informacionbateria_gps"), DrLectura("duracionbateria_gps"),

DrLectura("numerotelefonico_gps"), DrLectura("operador_gps"))

i += 1

End While

DrLectura.Close()

End If

MiConexion.Close()

If i > 0 Then

FrmUnidadesGPS.PnlBusqueda.Visible = True

Else

FrmUnidadesGPS.PnlBusqueda.Visible = False

i = 0

End If

End Sub

' Realiza una consulta dinámica en el formulario Activar Servicio GPS

Sub Consulta2()

MiConexion.Open()

Dim Consultita As String = "SELECT * FROM tblunidadesgps, tblvehiculos

WHERE tblvehiculos.codigo_vehiculo=tblunidadesgps.codigo_vehiculo and

tblunidadesgps.estado_unidadgps='a'"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmActivarSeguimiento.DgvConsulta.Rows.Clear()

While (DrLectura.Read())

FrmActivarSeguimiento.DgvConsulta.Rows.Add(DrLectura("codigo_gps"),

DrLectura("modelo_gps"), DrLectura("marca_gps"), DrLectura("marca_vehiculo"),

DrLectura("modelo_vehiculo"), DrLectura("estadoservicio_gps"),

DrLectura("latencia_gps"))

Page 220: Diseño e implementación de un sistema de control de rutas de transporte

86

End While

DrLectura.Close()

MiConexion.Close()

End Sub

' Realiza una consulta dinámica en el formulario Activar Servicio GPS

Sub Consulta3()

MiConexion.Open()

Dim Consultita As String = "SELECT * FROM tblunidadesgps WHERE

estadoservicio_gps='Si' and estado_unidadgps='a'"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmMenu.LblEstadoGPS.Text = ""

While (DrLectura.Read())

FrmMenu.LblEstadoGPS.Text = FrmMenu.LblEstadoGPS.Text & " - " &

DrLectura("codigo_gps")

End While

If FrmMenu.LblEstadoGPS.Text = "" Then

FrmMenu.LblEstadoGPS.Text = "Inactivo"

End If

DrLectura.Close()

MiConexion.Close()

End Sub

Se implementaron también funciones de apariencia para controlar los botones

de control de los formularios, conjuntamente con las cajas de texto, mediante el

siguiente código:

' Funciones de apariencia

Sub ControlBotones(ByVal Control As Boolean)

Page 221: Diseño e implementación de un sistema de control de rutas de transporte

87

If Control = True Then

FrmUnidadesGPS.TooNuevo.Enabled = True

FrmUnidadesGPS.TooEditar.Enabled = True

FrmUnidadesGPS.TooGuardar.Enabled = False

FrmUnidadesGPS.TooEliminar.Enabled = True

FrmUnidadesGPS.TooImprimir.Enabled = True

FrmUnidadesGPS.TxtBusqueda.Enabled = True

ElseIf Control = False Then

FrmUnidadesGPS.TooNuevo.Enabled = False

FrmUnidadesGPS.TooEditar.Enabled = False

FrmUnidadesGPS.TooGuardar.Enabled = True

FrmUnidadesGPS.TooEliminar.Enabled = False

FrmUnidadesGPS.TooImprimir.Enabled = False

FrmUnidadesGPS.TxtBusqueda.Enabled = False

End If

End Sub

Sub ControlTexto(ByVal Control As String)

If Control = "Habilitar" Then

FrmUnidadesGPS.BtnConsultar.Enabled = True

FrmUnidadesGPS.TxtCodigo.Enabled = False

FrmUnidadesGPS.TxtCodigoVehiculo.Enabled = True

FrmUnidadesGPS.TxtVehiculo.Enabled = False

FrmUnidadesGPS.TxtModelo.Enabled = True

FrmUnidadesGPS.TxtMarca.Enabled = True

FrmUnidadesGPS.TxtSerie.Enabled = True

FrmUnidadesGPS.DtpFechaCompra.Enabled = True

FrmUnidadesGPS.TxtGarantia.Enabled = True

FrmUnidadesGPS.TxtProveedor.Enabled = True

FrmUnidadesGPS.TxtTelefonoProveedor.Enabled = True

FrmUnidadesGPS.TxtEmailProveedor.Enabled = True

FrmUnidadesGPS.TxtCiudadProveedor.Enabled = True

FrmUnidadesGPS.TxtDireccionProveedor.Enabled = True

FrmUnidadesGPS.TxtChipGPS.Enabled = True

FrmUnidadesGPS.TxtSensibilidad.Enabled = True

FrmUnidadesGPS.TxtFrecuenciaGPS.Enabled = True

Page 222: Diseño e implementación de un sistema de control de rutas de transporte

88

FrmUnidadesGPS.TxtFrecuenciaGSM.Enabled = True

FrmUnidadesGPS.TxtLimiteVelocidad.Enabled = True

FrmUnidadesGPS.TxtLimiteAltitud.Enabled = True

FrmUnidadesGPS.TxtPrecisionVelocidad.Enabled = True

FrmUnidadesGPS.TxtExactitudPosicional.Enabled = True

FrmUnidadesGPS.TxtInformacionBateria.Enabled = True

FrmUnidadesGPS.TxtDuracionBateria.Enabled = True

FrmUnidadesGPS.TxtNumeroTelefonico.Enabled = True

FrmUnidadesGPS.TxtOperadora.Enabled = True

ElseIf Control = "Deshabilitar" Then

FrmUnidadesGPS.BtnConsultar.Enabled = False

FrmUnidadesGPS.TxtCodigo.Enabled = False

FrmUnidadesGPS.TxtCodigoVehiculo.Enabled = False

FrmUnidadesGPS.TxtVehiculo.Enabled = False

FrmUnidadesGPS.TxtModelo.Enabled = False

FrmUnidadesGPS.TxtMarca.Enabled = False

FrmUnidadesGPS.TxtSerie.Enabled = False

FrmUnidadesGPS.DtpFechaCompra.Enabled = False

FrmUnidadesGPS.TxtGarantia.Enabled = False

FrmUnidadesGPS.TxtProveedor.Enabled = False

FrmUnidadesGPS.TxtTelefonoProveedor.Enabled = False

FrmUnidadesGPS.TxtEmailProveedor.Enabled = False

FrmUnidadesGPS.TxtCiudadProveedor.Enabled = False

FrmUnidadesGPS.TxtDireccionProveedor.Enabled = False

FrmUnidadesGPS.TxtChipGPS.Enabled = False

FrmUnidadesGPS.TxtSensibilidad.Enabled = False

FrmUnidadesGPS.TxtFrecuenciaGPS.Enabled = False

FrmUnidadesGPS.TxtFrecuenciaGSM.Enabled = False

FrmUnidadesGPS.TxtLimiteVelocidad.Enabled = False

FrmUnidadesGPS.TxtLimiteAltitud.Enabled = False

FrmUnidadesGPS.TxtPrecisionVelocidad.Enabled = False

FrmUnidadesGPS.TxtExactitudPosicional.Enabled = False

FrmUnidadesGPS.TxtInformacionBateria.Enabled = False

FrmUnidadesGPS.TxtDuracionBateria.Enabled = False

FrmUnidadesGPS.TxtNumeroTelefonico.Enabled = False

Page 223: Diseño e implementación de un sistema de control de rutas de transporte

89

FrmUnidadesGPS.TxtOperadora.Enabled = False

ElseIf Control = "Enblanco" Then

FrmUnidadesGPS.BtnConsultar.Enabled = True

FrmUnidadesGPS.TxtCodigo.Text = ""

FrmUnidadesGPS.TxtCodigoVehiculo.Text = ""

FrmUnidadesGPS.TxtVehiculo.Text = ""

FrmUnidadesGPS.TxtModelo.Text = ""

FrmUnidadesGPS.TxtMarca.Text = ""

FrmUnidadesGPS.TxtSerie.Text = ""

FrmUnidadesGPS.DtpFechaCompra.Text = ""

FrmUnidadesGPS.TxtGarantia.Text = ""

FrmUnidadesGPS.TxtProveedor.Text = ""

FrmUnidadesGPS.TxtTelefonoProveedor.Text = ""

FrmUnidadesGPS.TxtEmailProveedor.Text = ""

FrmUnidadesGPS.TxtCiudadProveedor.Text = ""

FrmUnidadesGPS.TxtDireccionProveedor.Text = ""

FrmUnidadesGPS.TxtChipGPS.Text = ""

FrmUnidadesGPS.TxtSensibilidad.Text = ""

FrmUnidadesGPS.TxtFrecuenciaGPS.Text = ""

FrmUnidadesGPS.TxtFrecuenciaGSM.Text = ""

FrmUnidadesGPS.TxtLimiteVelocidad.Text = ""

FrmUnidadesGPS.TxtLimiteAltitud.Text = ""

FrmUnidadesGPS.TxtPrecisionVelocidad.Text = ""

FrmUnidadesGPS.TxtExactitudPosicional.Text = ""

FrmUnidadesGPS.TxtInformacionBateria.Text = ""

FrmUnidadesGPS.TxtDuracionBateria.Text = ""

FrmUnidadesGPS.TxtNumeroTelefonico.Text = ""

FrmUnidadesGPS.TxtOperadora.Text = ""

End If

End Sub

End Class

Enviar datos con formato AT por medio de un teléfono celular

Page 224: Diseño e implementación de un sistema de control de rutas de transporte

90

Private Sub Button_enviar_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button_enviar.Click

sib = 0

Try

SerialPort1.Write(Me.TextBox_mensaje.Text & Chr(26))

Me.TextBox_resp.Clear()

MsgBox("Mensaje enviado con exito!")

Catch ex As Exception

MsgBox(ex.Message)

End Try

End Sub

Recibir datos con formato AT por medio de un teléfono celular

Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As

System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived

Try

az = SerialPort1.ReadExisting.Trim

msn(sib) = az

Me.TextBox_resp.Text += msn(sib) + " "

sib = sib + 1

Catch ex As Exception

MsgBox(ex.Message)

End Try

End Sub

1.1.8. Usuarios

La clase Usuarios, dentro del proyecto se encuentra asignada con el nombre

ClsUsuarios.vb.

Page 225: Diseño e implementación de un sistema de control de rutas de transporte

91

El código utilizado en la clase ClsUsuarios, se detalla a continuación:

Imports System

Imports System.Data

Imports System.Data.Odbc

Para la generación de nuevos registros se utilizó el siguiente código:

Sub Nuevo(ByVal Codigo As String, ByVal Cedula As String, ByVal Nombres As

String, ByVal Apellidos As String, ByVal Nacionalidad As String, ByVal EstadoCivil

As String, ByVal FechaNacimiento As String, ByVal Email As String, ByVal

Convencional As String, ByVal Celular As String, ByVal Direccion As String, ByVal

Login As String, ByVal TipoUsuario As String, ByVal Password As String)

MiConexion.open()

Dim Cadena As String

Cadena = "insert into tblusuarios values('" & Codigo & "', '" & _

Cedula & "', '" & _

Nombres & "', '" & _

Apellidos & "', '" & _

Nacionalidad & "', '" & _

EstadoCivil & "', '" & _

FechaNacimiento & "', '" & _

Email & "', '" & _

Convencional & "', '" & _

Celular & "', '" & _

Direccion & "', '" & _

Login & "', '" & _

TipoUsuario & "', '" & _

Password & "', '" & _

Date.Today & "', '" & _

" " & "', '" & _

" " & "', 'a')"

Dim ComandoSql As New OdbcCommand(Cadena, MiConexion)

ComandoSql.ExecuteNonQuery()

MiConexion.close()

End Sub

Page 226: Diseño e implementación de un sistema de control de rutas de transporte

92

Para la edición de registros anteriormente ingresados se utilizó el siguiente

código:

Sub Editar(ByVal Codigo As String, ByVal Cedula As String, ByVal Nombres As

String, ByVal Apellidos As String, ByVal Nacionalidad As String, ByVal EstadoCivil

As String, ByVal FechaNacimiento As String, ByVal Email As String, ByVal

Convencional As String, ByVal Celular As String, ByVal Direccion As String, ByVal

Login As String, ByVal TipoUsuario As String, ByVal Password As String)

MiConexion.open()

Dim Cadena As String

Cadena = "update tblusuarios set cedula_usuario='" & Cedula & _

"', nombres_usuario='" & Nombres & _

"', apellidos_usuario='" & Apellidos & _

"', nacionalidad_usuario='" & Nacionalidad & _

"', ecivil_usuario='" & EstadoCivil & _

"', fnacimiento_usuario='" & FechaNacimiento & _

"', email_usuario='" & Email & _

"', convencional_usuario='" & Convencional & _

"', celular_usuario='" & Celular & _

"', direccion_usuario='" & Direccion & _

"', login_usuario='" & Login & _

"', tipo_usuario='" & TipoUsuario & _

"', password_usuario='" & Password & _

"' where codigo_usuario='" & Codigo & "'"

Dim ComandoSql As New OdbcCommand(Cadena, MiConexion)

ComandoSql.ExecuteNonQuery()

MiConexion.close()

End Sub

Para eliminar registros existentes, se utilizó el siguiente código:

Sub Eliminar(ByVal Codigo As String)

MiConexion.open()

Dim Cadena As String

Page 227: Diseño e implementación de un sistema de control de rutas de transporte

93

Cadena = "update tblusuarios set estado_usuario='i', feliminado_usuario='" &

Date.Today & "', eliminadopor_usuario='" &CodigoUsuario() & "' where

codigo_usuario='" & Codigo & "'"

Dim ComandoSql As New OdbcCommand(Cadena, MiConexion)

ComandoSql.ExecuteNonQuery()

MiConexion.close()

End Sub

Para la realización de una consulta dinámica en el formulario de registro, se

utilizó el siguiente código:

Sub Consulta1(ByVal Consulta As String)

MiConexion.Open()

Dim i As Integer = 0

If Consulta = "" Then

i = 0

Else

Dim Consultita As String = "SELECT * FROM tblusuarios WHERE (

nombres_usuario LIKE '%" & Consulta & "%' or apellidos_usuario like '%" &

Consulta & "%' or codigo_usuario like '%" & Consulta & "%' or cedula_usuario like

'%" & Consulta & "%' ) and estado_usuario='a'"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmUsuarios.DgvBusqueda.Rows.Clear()

While (DrLectura.Read())

FrmUsuarios.DgvBusqueda.Rows.Add(DrLectura("codigo_usuario"),

DrLectura("cedula_usuario"), DrLectura("nombres_usuario"),

DrLectura("apellidos_usuario"), DrLectura("nacionalidad_usuario"),

DrLectura("ecivil_usuario"), DrLectura("fnacimiento_usuario"),

DrLectura("email_usuario"), DrLectura("convencional_usuario"),

DrLectura("celular_usuario"), DrLectura("direccion_usuario"),

DrLectura("login_usuario"), DrLectura("tipo_usuario"),

DrLectura("password_usuario"))

i += 1

End While

Page 228: Diseño e implementación de un sistema de control de rutas de transporte

94

DrLectura.Close()

End If

MiConexion.Close()

If i > 0 Then

FrmUsuarios.PnlBusqueda.Visible = True

Else

FrmUsuarios.PnlBusqueda.Visible = False

i = 0

End If

End Sub

Se procedieron a implementar funciones de verificación de usuarios, para

controlar el ingreso a la aplicación, para lo cual se utilizó el siguiente código:

Function VerificarUsuario(ByVal Login As String, ByVal Password As String,

Optional ByVal MostrarEnMenu As Boolean = False) As String

Dim Nombre As String = ""

MiConexion.Open()

Dim Consultita As String = "select * from tblusuarios where login_usuario='" &

Login & "' and password_usuario='" & Password & "' and estado_usuario='a'"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

If DrLectura.Read Then

Nombre = DrLectura("nombres_usuario") & " " & DrLectura("apellidos_usuario")

If MostrarEnMenu = True Then

FrmMenu.LblCodigo.Text = DrLectura("codigo_usuario")

FrmMenu.LblNombre.Text = DrLectura("nombres_usuario") & " " &

DrLectura("apellidos_usuario")

FrmMenu.LblUsuario.Text = DrLectura("tipo_usuario")

End If

End If

DrLectura.Close()

MiConexion.Close()

Return Nombre

End Function

Page 229: Diseño e implementación de un sistema de control de rutas de transporte

95

Se requirieron funciones de apariencia para controlar los botones de control y

además las cajas de texto, para este fin se utilizó el siguiente código:

Sub ControlBotones(ByVal Control As Boolean)

If Control = True Then

FrmUsuarios.TooNuevo.Enabled = True

FrmUsuarios.TooEditar.Enabled = True

FrmUsuarios.TooGuardar.Enabled = False

FrmUsuarios.TooEliminar.Enabled = True

FrmUsuarios.TooImprimir.Enabled = True

FrmUsuarios.TxtBusqueda.Enabled = True

ElseIf Control = False Then

FrmUsuarios.TooNuevo.Enabled = False

FrmUsuarios.TooEditar.Enabled = False

FrmUsuarios.TooGuardar.Enabled = True

FrmUsuarios.TooEliminar.Enabled = False

FrmUsuarios.TooImprimir.Enabled = False

FrmUsuarios.TxtBusqueda.Enabled = False

End If

End Sub

Sub ControlTexto(ByVal Control As String)

If Control = "Habilitar" Then

FrmUsuarios.TxtCodigo.Enabled = False

FrmUsuarios.TxtCedula.Enabled = True

FrmUsuarios.TxtNombres.Enabled = True

FrmUsuarios.TxtApellidos.Enabled = True

FrmUsuarios.TxtNacionalidad.Enabled = True

FrmUsuarios.CmbEstadoCivil.Enabled = True

FrmUsuarios.CmbFechaNacimiento.Enabled = True

FrmUsuarios.TxtEmail.Enabled = True

FrmUsuarios.TxtConvencional.Enabled = True

FrmUsuarios.TxtCelular.Enabled = True

FrmUsuarios.TxtDireccion.Enabled = True

FrmUsuarios.TxtLogin.Enabled = True

FrmUsuarios.CmbTipoUsuario.Enabled = True

Page 230: Diseño e implementación de un sistema de control de rutas de transporte

96

FrmUsuarios.TxtPassword.Enabled = True

ElseIf Control = "Deshabilitar" Then

FrmUsuarios.TxtCodigo.Enabled = False

FrmUsuarios.TxtCedula.Enabled = False

FrmUsuarios.TxtNombres.Enabled = False

FrmUsuarios.TxtApellidos.Enabled = False

FrmUsuarios.TxtNacionalidad.Enabled = False

FrmUsuarios.CmbEstadoCivil.Enabled = False

FrmUsuarios.CmbFechaNacimiento.Enabled = False

FrmUsuarios.TxtEmail.Enabled = False

FrmUsuarios.TxtConvencional.Enabled = False

FrmUsuarios.TxtCelular.Enabled = False

FrmUsuarios.TxtDireccion.Enabled = False

FrmUsuarios.TxtLogin.Enabled = False

FrmUsuarios.CmbTipoUsuario.Enabled = False

FrmUsuarios.TxtPassword.Enabled = False

ElseIf Control = "Enblanco" Then

FrmUsuarios.TxtCodigo.Text = ""

FrmUsuarios.TxtCedula.Text = ""

FrmUsuarios.TxtNombres.Text = ""

FrmUsuarios.TxtApellidos.Text = ""

FrmUsuarios.TxtNacionalidad.Text = ""

FrmUsuarios.CmbEstadoCivil.Text = "Elegir opción"

FrmUsuarios.CmbFechaNacimiento.Text = ""

FrmUsuarios.TxtEmail.Text = ""

FrmUsuarios.TxtConvencional.Text = ""

FrmUsuarios.TxtCelular.Text = ""

FrmUsuarios.TxtDireccion.Text = ""

FrmUsuarios.TxtLogin.Text = ""

FrmUsuarios.CmbTipoUsuario.Text = "Elegir opción"

FrmUsuarios.TxtPassword.Text = ""

End If

End Sub

Page 231: Diseño e implementación de un sistema de control de rutas de transporte

97

1.1.9. Variables

La clase Variables, dentro del proyecto se encuentra asignada con el nombre

ClsVariables.vb.

El código utilizado en la clase ClsVariables, se detalla a continuación:

Imports System

Imports System.Data

Imports System.Data.Odbc

Se utilizaron diversas funciones para facilitar las consultas generales, mediante

los siguientes códigos:

' NOMBRE DE SISTEMA

Public NombreSistema As String = "La Casa del Toldo GPS"

' VARIABLES DE CONEXIÓN

Public StrConexion As String = "DRIVER={MySQL ODBC 5.1 Driver};" & _

"SERVER=localhost;" & _

"DATABASE=casatoldo;" & _

"UID=root;" & _

"PASSWORD=vertrigo;" & _

"OPTION=3;"

Public MiConexion = New OdbcConnection(StrConexion)

Public OdbComando As New OdbcCommand

Public DrLectura As OdbcDataReader

' FUNCIÓN QUE DEVUELVE EL CÓDIGO DEL USUARIO EN CURSO

Function CodigoUsuario() As String

Dim Codigo As String = ""

Codigo = FrmMenu.LblCodigo.Text

Return Codigo

End Function

' FUNCIÓN QUE DEVUELVE EL NOMBRE DEL USUARIO EN CURSO

Page 232: Diseño e implementación de un sistema de control de rutas de transporte

98

Function NombreUsuario() As String

Dim Nombre As String = ""

Nombre = FrmMenu.LblNombre.Text

Return Nombre

End Function

' FUNCIÓN QUE DEVUELVE EL TIPO DE USUARIO EN CURSO

Function TipoUsuario() As String

Dim Tipo As String = ""

Tipo = FrmMenu.LblUsuario.Text

Return Tipo

End Function

1.1.10. Vehículos

La clase Vehículos, dentro del proyecto se encuentra asignada con el nombre

ClsVehículos.vb.

El código utilizado en la clase ClsVehículos, se detalla a continuación:

Imports System

Imports System.Data

Imports System.Data.Odbc

Imports System.IO

Imports System.Drawing

Imports System.Drawing.Printing

Imports System.Windows.Forms

Para la generación de nuevos registros de vehículos se utilizaron los siguientes

códigos:

Sub Nuevo(ByVal Codigo As String, ByVal CodigoTransportista As String, ByVal

Placa As String, ByVal Modelo As String, ByVal Marca As String, ByVal PaisOrigen

As String, ByVal Año As String, ByVal Cilindraje As String, ByVal Combustible As

Page 233: Diseño e implementación de un sistema de control de rutas de transporte

99

String, ByVal Transmision As String, ByVal Clase As String, ByVal FechaCompra

As String, ByVal FechaMatricula As String, ByVal Canton As String, ByVal Color1

As String, ByVal Color2 As String, ByVal NumeroMotor As String, ByVal

NumeroChasis As String, ByVal NumeroCarroceria As String, ByVal NumeroLlantas

As String, ByVal NumeroPasajeros As String, ByVal CargaMaxima As String, ByVal

Otros As String)

MiConexion.open()

Dim Cadena As String

Cadena = "insert into tblvehiculos values('" & Codigo & "', '" & _

CodigoTransportista & "', '" & _

Placa & "', '" & _

Modelo & "', '" & _

Marca & "', '" & _

PaisOrigen & "', '" & _

Año & "', '" & _

Cilindraje & "', '" & _

Combustible & "', '" & _

Transmision & "', '" & _

Clase & "', '" & _

FechaCompra & "', '" & _

FechaMatricula & "', '" & _

Canton & "', '" & _

Color1 & "', '" & _

Color2 & "', '" & _

NumeroMotor & "', '" & _

NumeroChasis & "', '" & _

NumeroCarroceria & "', '" & _

NumeroLlantas & "', '" & _

NumeroPasajeros & "', '" & _

CargaMaxima & "', '" & _

Otros & "', '" & _

CodigoUsuario() & "', '" & _

Date.Today & "', '" & _

" " & "', '" & _

" " & "', '" & _

" " & "', '" & _

Page 234: Diseño e implementación de un sistema de control de rutas de transporte

100

" " & "', 'a')"

Dim ComandoSql As New OdbcCommand(Cadena, MiConexion)

ComandoSql.ExecuteNonQuery()

MiConexion.close()

End Sub

Para la edición de registros existentes se utilizó el siguiente código:

Sub Editar(ByVal Codigo As String, ByVal CodigoTransportista As String, ByVal

Placa As String, ByVal Modelo As String, ByVal Marca As String, ByVal PaisOrigen

As String, ByVal Año As String, ByVal Cilindraje As String, ByVal Combustible As

String, ByVal Transmision As String, ByVal Clase As String, ByVal FechaCompra

As String, ByVal FechaMatricula As String, ByVal Canton As String, ByVal Color1

As String, ByVal Color2 As String, ByVal NumeroMotor As String, ByVal

NumeroChasis As String, ByVal NumeroCarroceria As String, ByVal NumeroLlantas

As String, ByVal NumeroPasajeros As String, ByVal CargaMaxima As String, ByVal

Otros As String)

MiConexion.open()

Dim Cadena As String

Cadena = "update tblvehiculos set codigo_transportista='" &

CodigoTransportista & _

"', placa_vehiculo='" & Placa & _

"', modelo_vehiculo='" & Modelo & _

"', marca_vehiculo='" & Marca & _

"', porigen_vehiculo='" & PaisOrigen & _

"', anio_vehiculo='" & Año & _

"', cilindraje_vehiculo='" & Cilindraje & _

"', combustible_vehiculo='" & Combustible & _

"', transmision_vehiculo='" & Transmision & _

"', clase_vehiculo='" & Clase & _

"', fcompra_vehiculo='" & FechaCompra & _

"', fmatricula_vehiculo='" & FechaMatricula & _

"', canton_vehiculo='" & Canton & _

"', color1_vehiculo='" & Color1 & _

"', color2_vehiculo='" & Color2 & _

"', nmotor_vehiculo='" & NumeroMotor & _

Page 235: Diseño e implementación de un sistema de control de rutas de transporte

101

"', nchasis_vehiculo='" & NumeroChasis & _

"', ncarroceria_vehiculo='" & NumeroCarroceria & _

"', nllantas_vehiculo='" & NumeroLlantas & _

"', npasajeros_vehiculo='" & NumeroPasajeros & _

"', cmaxima_vehiculo='" & CargaMaxima & _

"', otros_vehiculo='" & Otros & _

"', usuario_modifica='" &CodigoUsuario() & _

"', fecha_modifica='" & Date.Today & _

"' where codigo_vehiculo='" & Codigo & "'"

Dim ComandoSql As New OdbcCommand(Cadena, MiConexion)

ComandoSql.ExecuteNonQuery()

MiConexion.close()

End Sub

Para la eliminación de registros existentes se utilizó el siguiente código:

Sub Eliminar(ByVal Codigo As String)

MiConexion.open()

Dim Cadena As String

Cadena = "update tblvehiculos set estado_vehiculo='i', fecha_elimina='" &

Date.Today & "', usuario_elimina='" &CodigoUsuario() & "' where codigo_vehiculo='"

& Codigo & "'"

Dim ComandoSql As New OdbcCommand(Cadena, MiConexion)

ComandoSql.ExecuteNonQuery()

MiConexion.close()

End Sub

Para la realización de consultas dinámicas en el formulario de registro, se utilizó

el siguiente código:

Sub Consulta1(ByVal Consulta As String)

MiConexion.Open()

Dim i As Integer = 0

If Consulta = "" Then

i = 0

Page 236: Diseño e implementación de un sistema de control de rutas de transporte

102

Else

Dim Consultita As String = "SELECT * FROM tblvehiculos WHERE (

codigo_vehiculo LIKE '%" & Consulta & "%' or placa_vehiculo like '%" & Consulta &

"%' or modelo_vehiculo like '%" & Consulta & "%' or marca_vehiculo like '%" &

Consulta & "%' ) and estado_vehiculo='a'"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmVehiculos.DgvBusqueda.Rows.Clear()

While (DrLectura.Read())

FrmVehiculos.DgvBusqueda.Rows.Add(DrLectura("codigo_vehiculo"),

DrLectura("codigo_transportista"), DrLectura("placa_vehiculo"),

DrLectura("modelo_vehiculo"), DrLectura("marca_vehiculo"),

DrLectura("porigen_vehiculo"), DrLectura("anio_vehiculo"),

DrLectura("cilindraje_vehiculo"), DrLectura("combustible_vehiculo"),

DrLectura("transmision_vehiculo"), DrLectura("clase_vehiculo"),

DrLectura("fcompra_vehiculo"), DrLectura("fmatricula_vehiculo"),

DrLectura("canton_vehiculo"), DrLectura("color1_vehiculo"),

DrLectura("color2_vehiculo"), DrLectura("nmotor_vehiculo"),

DrLectura("nchasis_vehiculo"), DrLectura("ncarroceria_vehiculo"),

DrLectura("nllantas_vehiculo"), DrLectura("npasajeros_vehiculo"),

DrLectura("cmaxima_vehiculo"), DrLectura("otros_vehiculo"))

i += 1

End While

DrLectura.Close()

End If

MiConexion.Close()

If i > 0 Then

FrmVehiculos.PnlBusqueda.Visible = True

Else

FrmVehiculos.PnlBusqueda.Visible = False

i = 0

End If

End Sub

Page 237: Diseño e implementación de un sistema de control de rutas de transporte

103

Para la realización de consultas requeridas en el formulario de rutas, se utilizó el

siguiente código:

Sub Consulta2(ByVal Consulta As String)

MiConexion.Open()

Dim Consultita As String = "select tblvehiculos.codigo_vehiculo,

tblvehiculos.modelo_vehiculo, tblvehiculos.clase_vehiculo,

tbltransportistas.nombres_transportista, tbltransportistas.apellidos_transportista

from tblvehiculos, tbltransportistas where

tblvehiculos.codigo_transportista=tbltransportistas.codigo_transportista and

tblvehiculos.estado_vehiculo='a' and tbltransportistas.estado_transportista='a' and (

tblvehiculos.codigo_vehiculo like '%" & Consulta & "%' or

tblvehiculos.modelo_vehiculo like '%" & Consulta & "%' or

tblvehiculos.clase_vehiculo like '%" & Consulta & "%' or

tbltransportistas.nombres_transportista like '%" & Consulta & "%' or

tbltransportistas.apellidos_transportista like '%" & Consulta & "%' )"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmRutas.DgvConsultaVehiculos.Rows.Clear()

While (DrLectura.Read())

FrmRutas.DgvConsultaVehiculos.Rows.Add(DrLectura("codigo_vehiculo"),

DrLectura("modelo_vehiculo"), DrLectura("clase_vehiculo"),

DrLectura("nombres_transportista") & " " & DrLectura("apellidos_transportista"))

End While

DrLectura.Close()

MiConexion.Close()

End Sub

Para consultas anidadas requeridas en el formulario de rutas, se utilizó el

siguiente código:

Sub Consulta3(ByVal Consulta As String)

MiConexion.Open()

Dim Consultita As String = "select tblvehiculos.codigo_vehiculo,

tblvehiculos.modelo_vehiculo, tblvehiculos.clase_vehiculo,

Page 238: Diseño e implementación de un sistema de control de rutas de transporte

104

tbltransportistas.nombres_transportista, tbltransportistas.apellidos_transportista

from tblvehiculos, tbltransportistas where

tblvehiculos.codigo_transportista=tbltransportistas.codigo_transportista and

tblvehiculos.estado_vehiculo='a' and tbltransportistas.estado_transportista='a' and

tblvehiculos.codigo_vehiculo like '" & Consulta & "' "

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

Dim Vehiculo As String = ""

Dim Tipo As String = ""

Dim Nombre As String = ""

DrLectura = ConsultaSql.ExecuteReader

If DrLectura.Read Then

Vehiculo = DrLectura("modelo_vehiculo")

Tipo = DrLectura("clase_vehiculo")

Nombre = DrLectura("nombres_transportista") & " " &

DrLectura("apellidos_transportista")

End If

If Vehiculo = "" Or Tipo = "" Or Nombre = "" Then

Vehiculo = "Código de vehículo incorrecto"

Tipo = "Código de vehículo incorrecto"

Nombre = "Código de vehículo incorrecto"

End If

FrmRutas.TxtNombreVehiculo.Text = Vehiculo

FrmRutas.TxtTipoVehiculo.Text = Tipo

FrmRutas.TxtNombreTransportista.Text = Nombre

DrLectura.Close()

MiConexion.Close()

End Sub

Para la realización de consultas requeridas en el formulario de Rastreo o

Seguimiento, se utilizó el siguiente código:

Sub Consulta4()

MiConexion.Open()

Page 239: Diseño e implementación de un sistema de control de rutas de transporte

105

Dim Consultita As String = "select * from tblvehiculos where

estado_vehiculo='a'"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

Dim ItemVehiculo As String = ""

DrLectura = ConsultaSql.ExecuteReader

FrmSeguimiento.CmbListaVehiculos.Items.Clear()

While (DrLectura.Read())

ItemVehiculo = DrLectura("codigo_vehiculo") & " - " & DrLectura("modelo_vehiculo")

FrmSeguimiento.CmbListaVehiculos.Items.Add(ItemVehiculo)

End While

DrLectura.Close()

MiConexion.Close()

End Sub

Para la realización de consultas actualizadas en la realización de informes, se

empleó el siguiente código:

Sub Informe(ByVal Consulta As String)

MiConexion.Open()

Dim Consultita As String = "select * from tblvehiculos, tbltransportistas

where tblvehiculos.codigo_transportista=tbltransportistas.codigo_transportista and

tblvehiculos.estado_vehiculo='a' and tbltransportistas.estado_transportista='a' and (

tblvehiculos.codigo_vehiculo like '%" & Consulta & "%' or

tblvehiculos.modelo_vehiculo like '%" & Consulta & "%' or

tblvehiculos.clase_vehiculo like '%" & Consulta & "%' or

tbltransportistas.nombres_transportista like '%" & Consulta & "%' or

tbltransportistas.apellidos_transportista like '%" & Consulta & "%' ) order by

codigo_vehiculo"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmRepVehiculos.DgvInforme.Rows.Clear()

While (DrLectura.Read())

'FrmRepVehiculos.DgvInforme.Rows.Add(DrLectura("codigo_vehiculo"),

DrLectura("codigo_transportista") & " - " & DrLectura("nombres_transportista") & " "

& DrLectura("apellidos_transportista"), DrLectura("placa_vehiculo"),

Page 240: Diseño e implementación de un sistema de control de rutas de transporte

106

DrLectura("modelo_vehiculo"), DrLectura("marca_vehiculo"),

DrLectura("clase_vehiculo"), DrLectura("cmaxima_vehiculo"))

FrmRepVehiculos.DgvInforme.Rows.Add(DrLectura("codigo_vehiculo"),

DrLectura("placa_vehiculo"), DrLectura("modelo_vehiculo"),

DrLectura("marca_vehiculo"), DrLectura("anio_vehiculo"),

DrLectura("cilindraje_vehiculo"), DrLectura("combustible_vehiculo"),

DrLectura("transmision_vehiculo"), DrLectura("clase_vehiculo"),

DrLectura("cmaxima_vehiculo"), DrLectura("color1_vehiculo") & " " &

DrLectura("color2_vehiculo"), DrLectura("nombres_transportista") & " " &

DrLectura("apellidos_transportista"))

End While

DrLectura.Close()

MiConexion.Close()

End Sub

La realización de auditorías sobre los registros de vehículos, conllevó a la

utilización del siguiente código:

Sub Auditoria(ByVal Consulta As String)

MiConexion.Open()

Dim Consultita As String = "select * from tblvehiculos, tbltransportistas

where tblvehiculos.codigo_transportista=tbltransportistas.codigo_transportista and

tbltransportistas.estado_transportista='a' and ( tblvehiculos.codigo_vehiculo like '%"

& Consulta & "%' or tblvehiculos.modelo_vehiculo like '%" & Consulta & "%' or

tblvehiculos.clase_vehiculo like '%" & Consulta & "%' or

tbltransportistas.nombres_transportista like '%" & Consulta & "%' or

tbltransportistas.apellidos_transportista like '%" & Consulta & "%' ) order by

codigo_vehiculo"

Dim ConsultaSql As New OdbcCommand(Consultita, MiConexion)

DrLectura = ConsultaSql.ExecuteReader

FrmAudVehiculos.DgvInforme.Rows.Clear()

While (DrLectura.Read())

FrmAudVehiculos.DgvInforme.Rows.Add(DrLectura("codigo_vehiculo"),

DrLectura("placa_vehiculo"), DrLectura("modelo_vehiculo"),

DrLectura("marca_vehiculo"), DrLectura("nombres_transportista") & " " &

DrLectura("apellidos_transportista"), DrLectura("usuario_crea"),

Page 241: Diseño e implementación de un sistema de control de rutas de transporte

107

DrLectura("fecha_crea"), DrLectura("usuario_modifica"),

DrLectura("fecha_modifica"), DrLectura("usuario_elimina"),

DrLectura("fecha_elimina"), DrLectura("estado_vehiculo"))

End While

DrLectura.Close()

MiConexion.Close()

End Sub

Para realizar impresiones de un registro seleccionado, se utilizó el siguiente

código:

Sub ImprimirRegistro()

Dim pd As New PrintDocument()

AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage1

pd.Print()

End Sub

Private Sub pd_PrintPage1(ByVal sender As Object, ByVal e As

System.Drawing.Printing.PrintPageEventArgs)

' La fuente que vamos a usar para imprimir.

Dim printFont1 As System.Drawing.Font = New Font("Times New Roman", 12,

FontStyle.Bold)

Dim printFont2 As System.Drawing.Font = New Font("Times New Roman", 12)

Dim printFont3 As System.Drawing.Font = New Font("Times New Roman", 10,

FontStyle.Bold)

Dim printFont4 As System.Drawing.Font = New Font("Times New Roman", 10)

Dim printFont5 As System.Drawing.Font = New Font("Times New Roman", 9,

FontStyle.Bold)

Dim printFont6 As System.Drawing.Font = New Font("Times New Roman", 9)

Dim printFont7 As System.Drawing.Font = New Font("Times New Roman", 6)

Dim topMargin As Single = e.MarginBounds.Top

Dim yPos As Single = 0

Dim xPos As Single = 30

Dim linesPerPage As Single = 0

Dim count As Integer = 0

Dim Texto As String = ""

Page 242: Diseño e implementación de un sistema de control de rutas de transporte

108

linesPerPage = e.MarginBounds.Height / printFont2.GetHeight(e.Graphics)

yPos = topMargin + (count * printFont2.GetHeight(e.Graphics))

yPos = 90

xPos = 80

e.Graphics.DrawLine(Pens.Black, 70, 85, 750, 85)

e.Graphics.DrawLine(Pens.Black, 70, 155, 750, 155)

e.Graphics.DrawLine(Pens.Black, 70, 530, 750, 530)

e.Graphics.DrawLine(Pens.Black, 70, 85, 70, 530)

e.Graphics.DrawLine(Pens.Black, 750, 85, 750, 530)

e.Graphics.DrawLine(Pens.Black, 670, 85, 670, 155)

e.Graphics.DrawImage(FrmMenu.PicLogo.Image, 90, 95, 50, 51)

Texto = FrmMenu.LblCodigo.Text

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680, 100)

Texto = FrmMenu.LblUsuario.Text

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680, 112)

Texto = "Pág.: 1/1"

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680, 124)

Texto = NombreSistema

e.Graphics.DrawString(Texto, printFont1, System.Drawing.Brushes.Black, xPos +

80, yPos)

yPos += 20

Texto = "Los mejores productos, a los mejores precios"

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

80, yPos)

yPos += 15

Texto = "Informe de Vehículos"

e.Graphics.DrawString(Texto, printFont3, System.Drawing.Brushes.Black, xPos +

80, yPos)

yPos += 35

Texto = "INFORMACIÓN GENERAL"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

yPos += 15

Texto = "Cód. Vehículo: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Page 243: Diseño e implementación de un sistema de control de rutas de transporte

109

Texto = FrmVehiculos.TxtCodigo.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Responsable: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmVehiculos.TxtCodigoTransportista.Text & " - " &

FrmVehiculos.TxtNombreTransportista.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Placa: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmVehiculos.TxtPlaca.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Modelo/Nombre: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmVehiculos.TxtModelo.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Marca: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmVehiculos.TxtMarca.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "País Origen: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Page 244: Diseño e implementación de un sistema de control de rutas de transporte

110

Texto = FrmVehiculos.TxtPaisOrigen.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Año: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmVehiculos.TxtAño.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Cilindraje: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmVehiculos.TxtCilindraje.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Combustible: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmVehiculos.CmbCombustible.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Transmisión: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmVehiculos.CmbTransmision.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Clase: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmVehiculos.CmbClase.Text

Page 245: Diseño e implementación de un sistema de control de rutas de transporte

111

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Fecha Compra: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmVehiculos.CmbFechaCompra.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Matriculación: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmVehiculos.CmbFechaMatricula.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Cantón: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmVehiculos.TxtCantón.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Color 1: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmVehiculos.TxtColor1.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Color 2: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmVehiculos.TxtColor2.Text

Page 246: Diseño e implementación de un sistema de control de rutas de transporte

112

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "No. Motor: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmVehiculos.TxtNumeroMotor.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "No. Chasis: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmVehiculos.TxtNumeroChasis.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "No. Carrocería: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmVehiculos.TxtNumeroCarroceria.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "No. Llantas: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmVehiculos.TxtNumeroLlantas.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "No. Pasajeros: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmVehiculos.TxtNumeroPasajeros.Text

Page 247: Diseño e implementación de un sistema de control de rutas de transporte

113

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Carga Máxima: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmVehiculos.TxtCargaMaxima.Text & " Toneladas"

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

yPos += 15

Texto = "Observación: "

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = FrmVehiculos.TxtObservacion.Text

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

100, yPos)

Texto = Nothing

If Texto Is Nothing Then e.HasMorePages = False

End Sub

Para realizar la impresión correcta del informe de vehículos registrados, se

utilizó el siguiente código:

Sub ImprimirInforme()

Dim pd As New PrintDocument()

AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage2

pd.Print()

End Sub

Private Sub pd_PrintPage2(ByVal sender As Object, ByVal e As

System.Drawing.Printing.PrintPageEventArgs)

' La fuente que vamos a usar para imprimir.

Dim printFont1 As System.Drawing.Font = New Font("Times New Roman", 12,

FontStyle.Bold)

Dim printFont2 As System.Drawing.Font = New Font("Times New Roman", 12)

Page 248: Diseño e implementación de un sistema de control de rutas de transporte

114

Dim printFont3 As System.Drawing.Font = New Font("Times New Roman", 10,

FontStyle.Bold)

Dim printFont4 As System.Drawing.Font = New Font("Times New Roman", 10)

Dim printFont5 As System.Drawing.Font = New Font("Times New Roman", 8,

FontStyle.Bold)

Dim printFont6 As System.Drawing.Font = New Font("Times New Roman", 8)

Dim printFont7 As System.Drawing.Font = New Font("Times New Roman", 6)

Dim topMargin As Single = e.MarginBounds.Top

Dim yPos As Single = 0

Dim xPos As Single = 50

Dim linesPerPage As Single = 0

Dim count As Integer = 0

Dim Texto As String = ""

linesPerPage = e.MarginBounds.Height / printFont2.GetHeight(e.Graphics)

yPos = topMargin + (count * printFont2.GetHeight(e.Graphics))

yPos = 90

xPos = 80

e.Graphics.DrawLine(Pens.Black, 70, 85, 750, 85)

e.Graphics.DrawLine(Pens.Black, 70, 155, 750, 155)

e.Graphics.DrawLine(Pens.Black, 70, 1100, 750, 1100)

e.Graphics.DrawLine(Pens.Black, 70, 85, 70, 1100)

e.Graphics.DrawLine(Pens.Black, 750, 85, 750, 1100)

e.Graphics.DrawLine(Pens.Black, 670, 85, 670, 155)

e.Graphics.DrawImage(FrmMenu.PicLogo.Image, 90, 95, 50, 51)

Texto = FrmMenu.LblCodigo.Text

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680, 100)

Texto = FrmMenu.LblUsuario.Text

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680, 112)

Texto = "Pág.: 1/1"

e.Graphics.DrawString(Texto, printFont7, System.Drawing.Brushes.Black, 680, 124)

Texto = NombreSistema

e.Graphics.DrawString(Texto, printFont1, System.Drawing.Brushes.Black, xPos +

80, yPos)

yPos += 20

Texto = "Los mejores productos, a los mejores precios"

Page 249: Diseño e implementación de un sistema de control de rutas de transporte

115

e.Graphics.DrawString(Texto, printFont6, System.Drawing.Brushes.Black, xPos +

80, yPos)

yPos += 15

Texto = "Informe General de Vehículos"

e.Graphics.DrawString(Texto, printFont4, System.Drawing.Brushes.Black, xPos +

80, yPos)

yPos += 35

Texto = "CÓDIGO"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos,

yPos)

Texto = "PLACA"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos +

60, yPos)

Texto = "MODELO"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos +

130, yPos)

Texto = "MARCA"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos +

230, yPos)

Texto = "AÑO"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos +

300, yPos)

Texto = "CILIN."

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos +

340, yPos)

Texto = "COMB."

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos +

380, yPos)

Texto = "TON."

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos +

440, yPos)

Texto = "RESPONSABLE"

e.Graphics.DrawString(Texto, printFont5, System.Drawing.Brushes.Black, xPos +

480, yPos)

yPos += 20

Page 250: Diseño e implementación de un sistema de control de rutas de transporte

116

Dim Filas As Integer = 0

Dim Codigo As String = ""

Dim Placa As String = ""

Dim Modelo As String = ""

Dim Marca As String = ""

Dim Anio As String = ""

Dim Cilindraje As String = ""

Dim Combustible As String = ""

Dim Tonelaje As String = ""

Dim Responsable As String = ""

Filas = FrmRepVehiculos.DgvInforme.RowCount

For a = 0 To Filas - 1

Codigo = FrmRepVehiculos.DgvInforme.Item(0, a).Value.ToString

Placa = Mid(FrmRepVehiculos.DgvInforme.Item(1, a).Value.ToString, 1, 20) ' leo

el dtgrid y limito a 20 caracteres

Modelo = FrmRepVehiculos.DgvInforme.Item(2, a).Value.ToString

Marca = Mid(FrmRepVehiculos.DgvInforme.Item(3, a).Value.ToString, 1, 10)

' leo el dtgrid y limito a 10 caracteres

Anio = Mid(FrmRepVehiculos.DgvInforme.Item(4, a).Value.ToString, 1, 10)

' leo el dtgrid y limito a 10 caracteres

Cilindraje = Mid(FrmRepVehiculos.DgvInforme.Item(5, a).Value.ToString, 1,

10) ' leo el dtgrid y limito a 10 caracteres

Combustible = FrmRepVehiculos.DgvInforme.Item(6, a).Value.ToString

Tonelaje = FrmRepVehiculos.DgvInforme.Item(9, a).Value.ToString

Responsable = Mid(FrmRepVehiculos.DgvInforme.Item(11,

a).Value.ToString, 1, 30)

e.Graphics.DrawString(Codigo, printFont6, System.Drawing.Brushes.Black, xPos,

yPos)

e.Graphics.DrawString(Placa, printFont6, System.Drawing.Brushes.Black, xPos +

60, yPos)

e.Graphics.DrawString(Modelo, printFont6, System.Drawing.Brushes.Black, xPos +

130, yPos)

e.Graphics.DrawString(Marca, printFont6, System.Drawing.Brushes.Black, xPos +

230, yPos)

Page 251: Diseño e implementación de un sistema de control de rutas de transporte

117

e.Graphics.DrawString(Anio, printFont6, System.Drawing.Brushes.Black, xPos +

300, yPos)

e.Graphics.DrawString(Cilindraje, printFont6, System.Drawing.Brushes.Black, xPos

+ 340, yPos)

e.Graphics.DrawString(Combustible, printFont6, System.Drawing.Brushes.Black,

xPos + 380, yPos)

e.Graphics.DrawString(Tonelaje, printFont6, System.Drawing.Brushes.Black, xPos

+ 440, yPos)

e.Graphics.DrawString(Responsable, printFont6, System.Drawing.Brushes.Black,

xPos + 480, yPos)

yPos += 15

Next

Texto = Nothing

If Texto Is Nothing Then e.HasMorePages = False

End Sub

Se utilizaron también funciones de apariencia para el correcto control de los

botones y cajas de texto en el formulario de registro, mediante el siguiente

código:

Sub ControlBotones(ByVal Control As Boolean)

If Control = True Then

FrmVehiculos.TooNuevo.Enabled = True

FrmVehiculos.TooEditar.Enabled = True

FrmVehiculos.TooGuardar.Enabled = False

FrmVehiculos.TooEliminar.Enabled = True

FrmVehiculos.TooImprimir.Enabled = True

FrmVehiculos.TxtBusqueda.Enabled = True

ElseIf Control = False Then

FrmVehiculos.TooNuevo.Enabled = False

FrmVehiculos.TooEditar.Enabled = False

FrmVehiculos.TooGuardar.Enabled = True

FrmVehiculos.TooEliminar.Enabled = False

FrmVehiculos.TooImprimir.Enabled = False

Page 252: Diseño e implementación de un sistema de control de rutas de transporte

118

FrmVehiculos.TxtBusqueda.Enabled = False

End If

End Sub

Sub ControlTexto(ByVal Control As String)

If Control = "Habilitar" Then

FrmVehiculos.TxtCodigo.Enabled = False

FrmVehiculos.TxtCodigoTransportista.Enabled = True

FrmVehiculos.TxtPlaca.Enabled = True

FrmVehiculos.TxtModelo.Enabled = True

FrmVehiculos.TxtMarca.Enabled = True

FrmVehiculos.TxtPaisOrigen.Enabled = True

FrmVehiculos.TxtAño.Enabled = True

FrmVehiculos.TxtCilindraje.Enabled = True

FrmVehiculos.CmbCombustible.Enabled = True

FrmVehiculos.CmbTransmision.Enabled = True

FrmVehiculos.CmbClase.Enabled = True

FrmVehiculos.CmbFechaCompra.Enabled = True

FrmVehiculos.CmbFechaMatricula.Enabled = True

FrmVehiculos.TxtCantón.Enabled = True

FrmVehiculos.TxtColor1.Enabled = True

FrmVehiculos.TxtColor2.Enabled = True

FrmVehiculos.TxtNumeroMotor.Enabled = True

FrmVehiculos.TxtNumeroChasis.Enabled = True

FrmVehiculos.TxtNumeroCarroceria.Enabled = True

FrmVehiculos.TxtNumeroLlantas.Enabled = True

FrmVehiculos.TxtNumeroPasajeros.Enabled = True

FrmVehiculos.TxtCargaMaxima.Enabled = True

FrmVehiculos.TxtObservacion.Enabled = True

FrmVehiculos.BtnConsultar.Enabled = True

ElseIf Control = "Deshabilitar" Then

FrmVehiculos.TxtCodigo.Enabled = False

FrmVehiculos.TxtCodigoTransportista.Enabled = False

FrmVehiculos.TxtPlaca.Enabled = False

Page 253: Diseño e implementación de un sistema de control de rutas de transporte

119

FrmVehiculos.TxtModelo.Enabled = False

FrmVehiculos.TxtMarca.Enabled = False

FrmVehiculos.TxtPaisOrigen.Enabled = False

FrmVehiculos.TxtAño.Enabled = False

FrmVehiculos.TxtCilindraje.Enabled = False

FrmVehiculos.CmbCombustible.Enabled = False

FrmVehiculos.CmbTransmision.Enabled = False

FrmVehiculos.CmbClase.Enabled = False

FrmVehiculos.CmbFechaCompra.Enabled = False

FrmVehiculos.CmbFechaMatricula.Enabled = False

FrmVehiculos.TxtCantón.Enabled = False

FrmVehiculos.TxtColor1.Enabled = False

FrmVehiculos.TxtColor2.Enabled = False

FrmVehiculos.TxtNumeroMotor.Enabled = False

FrmVehiculos.TxtNumeroChasis.Enabled = False

FrmVehiculos.TxtNumeroCarroceria.Enabled = False

FrmVehiculos.TxtNumeroLlantas.Enabled = False

FrmVehiculos.TxtNumeroPasajeros.Enabled = False

FrmVehiculos.TxtCargaMaxima.Enabled = False

FrmVehiculos.TxtObservacion.Enabled = False

FrmVehiculos.BtnConsultar.Enabled = False

FrmVehiculos.PnlConsulta.Visible = False

ElseIf Control = "Enblanco" Then

FrmVehiculos.TxtCodigo.Text = ""

FrmVehiculos.TxtCodigoTransportista.Text = ""

FrmVehiculos.TxtPlaca.Text = ""

FrmVehiculos.TxtModelo.Text = ""

FrmVehiculos.TxtMarca.Text = ""

FrmVehiculos.TxtPaisOrigen.Text = ""

FrmVehiculos.TxtAño.Text = ""

FrmVehiculos.TxtCilindraje.Text = ""

FrmVehiculos.CmbCombustible.Text = "Elegir opción"

FrmVehiculos.CmbTransmision.Text = "Elegir opción"

FrmVehiculos.CmbClase.Text = "Elegir opción"

Page 254: Diseño e implementación de un sistema de control de rutas de transporte

120

FrmVehiculos.CmbFechaCompra.Text = ""

FrmVehiculos.CmbFechaMatricula.Text = ""

FrmVehiculos.TxtCantón.Text = ""

FrmVehiculos.TxtColor1.Text = ""

FrmVehiculos.TxtColor2.Text = ""

FrmVehiculos.TxtNumeroMotor.Text = ""

FrmVehiculos.TxtNumeroChasis.Text = ""

FrmVehiculos.TxtNumeroCarroceria.Text = ""

FrmVehiculos.TxtNumeroLlantas.Text = ""

FrmVehiculos.TxtNumeroPasajeros.Text = ""

FrmVehiculos.TxtCargaMaxima.Text = ""

FrmVehiculos.TxtObservacion.Text = ""

End If

End Sub

Page 255: Diseño e implementación de un sistema de control de rutas de transporte

1

ANEXO 10.

LA CASA DEL TOLDO®

GPS

MANUAL DE USUARIO

Page 256: Diseño e implementación de un sistema de control de rutas de transporte

2

ÍNDICE DE CONTENIDOS

1. INGRESO AL SISTEMA 3

2. MENÚ PRINCIPAL 4

3. CLIENTES 4

3.1. REGISTRO DE CLIENTES 5

3.2. INFORME DE CLIENTES 6

3.3. INFORME DE ENVÍOS POR CLIENTE 7

4. TRANSPORTISTAS 7

4.1. REGISTRO DE TRANSPORTISTAS 8

4.2. INFORME DE TRANSPORTISTAS 10

4.3. CONSULTA DE RUTAS POR TRANSPORTISTA 10

5. VEHÍCULOS 11

5.1. REGISTRO DE VEHÍCULOS 12

5.2. INFORME DE VEHÍCULOS 14

6. RUTAS 14

6.1. REGISTRO DE RUTAS 15

6.2. REGISTRO DE RECIBOS 17

6.3. CONSULTA GENERAL DE RUTAS 18

7. RASTREO 19

7.1. REGISTRO DE UNIDADES GPS 19

7.2. REPORTE DE UNIDADES GPS 20

7.3. RASTREO 20

7.4. ACTIVACIÓN DE SERVICIO DE SEGUIMIENTO 21

8. USUARIOS 21

8.1. REGISTRO DE USUARIOS 22

8.2. AUDITORÍA 23

8.2.1. AUDITORÍA DE CLIENTES 23

8.2.2. AUDITORÍA DE TRANSPORTISTAS 24

8.2.3. AUDITORÍA DE VEHÍCULOS 24

8.2.4. AUDITORÍA DE RUTAS 25

8.2.5. AUDITORÍA DE RECIBOS DE MERCADERÍA 25

Page 257: Diseño e implementación de un sistema de control de rutas de transporte

3

1. INGRESO AL SISTEMA

Para el respectivo ingreso a la aplicación en mención, se debe de ingresar un Login y

Password, lo cual nos permite un acceso respectivo a ciertas áreas que nos

competen.

Luego de haber ingresado correctamente la información solicitada, la aplicación nos

mostrará un mensaje de bienvenida con el nombre del usuario que ha ingresado.

En caso de que la información ingresada en la aplicación sea incorrecta, se

desplegará el siguiente mensaje:

Se brinda al usuario tres oportunidades de errar en el intento de ingresar a la

aplicación, utilizadas estas oportunidades se procede a cerrar el formulario de

ingreso.

Page 258: Diseño e implementación de un sistema de control de rutas de transporte

4

2. MENÚ PRINCIPAL

Posteriormente de haber ingresado correctamente la información de ingreso, se

desplegará una ventana principal con todas las opciones que nos brinda la aplicación.

3. CLIENTES

El Menú Clientes, nos presenta dos opciones, las cuales son: “Registro de Clientes” e

“Informe de clientes”, las cuales nos sirven para realizar ingresos y modificaciones de

registros.

Page 259: Diseño e implementación de un sistema de control de rutas de transporte

5

3.1. REGISTRO DE CLIENTES

El formulario de “Registro de Clientes”, nos permite visualizar de manera

detallada cada uno de los registros que se encuentran ingresados.

Además de realizar consultas detalladas, este formulario nos permite:

- Crear nuevos registros

Al momento de realizar el respectivo ingreso de la información en cada

uno de los campos, se requiere obligatoriamente el correcto ingreso de la

Cédula de Identidad, Nombres y Apellidos de los clientes.

- Modificar registros existentes

- Eliminar registros existentes

Page 260: Diseño e implementación de un sistema de control de rutas de transporte

6

- Imprimir un registro seleccionado

- Realizar consultas referentes a la información del registro

Las consultas se las realiza mediante la búsqueda de los campos: Código

de Cliente, Cédula de Identidad, Nombres o Apellidos.

3.2. INFORME DE CLIENTES

El formulario “Informe de Clientes”, nos permite apreciar un informe de manera

general de todos los clientes que se encuentran registrados en la aplicación,

detallando únicamente los campos más relevantes.

Las consultas se las realiza mediante la búsqueda de los campos: Código de

Cliente, Cédula de Identidad, Nombres o Apellidos.

Page 261: Diseño e implementación de un sistema de control de rutas de transporte

7

El informe general realizado en este formulario, puede ser impreso de manera

rápida presionando el botón de impresión.

3.3. INFORME DE ENVÍOS POR CLIENTE

El formulario “Informe de envíos por Cliente”, nos indica un listado de todos los

clientes que han dado uso del servicio de envío de transporte de mercadería,

indicándonos con un índice la cantidad de envíos que se han generado hasta

la presente fecha.

4. TRANSPORTISTAS

El Menú Transportistas, nos presenta dos opciones, las cuales son: “Registro de

Transportistas” e “Informe de Transportistas”, las cuales nos sirven para realizar

ingresos y modificaciones de registros.

Page 262: Diseño e implementación de un sistema de control de rutas de transporte

8

4.1. REGISTRO DE TRANSPORTISTAS

El formulario de “Registro de Transportistas”, nos permite visualizar de manera

detallada cada uno de los registros que se encuentran ingresados.

Además de realizar consultas detalladas, este formulario nos permite:

- Crear nuevos registros

Al momento de realizar el respectivo ingreso de la información en cada

uno de los campos, se requiere obligatoriamente el correcto ingreso de la

Cédula de Identidad, Nombres, Apellidos, Cargo, Licencias de

Motocicletas y de Vehículos de los transportistas.

Page 263: Diseño e implementación de un sistema de control de rutas de transporte

9

- Modificar registros existentes

- Eliminar registros existentes

- Imprimir un registro seleccionado

- Realizar consultas referentes a la información del registro

Las consultas se las realiza mediante la búsqueda de los campos: Código de

Transportista, Cédula de Identidad, Nombres o Apellidos.

Page 264: Diseño e implementación de un sistema de control de rutas de transporte

10

4.2. INFORME DE TRANSPORTISTAS

El formulario “Informe de Transportistas”, nos permite apreciar un informe de

manera general de todos los Transportistas que se encuentran registrados en

la aplicación, detallando únicamente los campos más relevantes.

Las consultas se las realiza mediante la búsqueda de los campos: Código

de Transportista, Cédula de Identidad, Nombres o Apellidos.

- El informe general realizado en este formulario, puede ser impreso de

manera rápida presionando el botón de impresión.

4.3. CONSULTA DE RUTAS POR TRANSPORTISTA

En el formulario de Consulta de Rutas por Transportista, se pueden generar

un listado de todas las rutas asignadas, indicando una fecha específica o un

rango de fechas y de esta manera conocer el estado del envío.

Page 265: Diseño e implementación de un sistema de control de rutas de transporte

11

Adicionalmente se puede obtener un reporte de estadística, por fechas

específicas o por rangos de fechas, obteniendo el total de envíos asignados,

pendientes, entregados o no entregados.

5. VEHÍCULOS

El Menú Vehículos, nos presenta dos opciones, las cuales son: “Registro de

Vehículos” e “Informe de Vehículos”, las cuales nos sirven para realizar ingresos y

modificaciones de registros.

Page 266: Diseño e implementación de un sistema de control de rutas de transporte

12

5.1. REGISTRO DE VEHÍCULOS

El formulario de “Registro de Vehículos”, nos permite visualizar de manera

detallada cada uno de los registros que se encuentran ingresados.

Además de realizar consultas detalladas, este formulario nos permite:

- Crear nuevos registros

Al momento de realizar el respectivo ingreso de la información en cada

uno de los campos, se requiere obligatoriamente el correcto ingreso del

campo Código de Transportista, que se encuentra como responsable de la

Page 267: Diseño e implementación de un sistema de control de rutas de transporte

13

unidad, Placa, Modelo, Marca, Cilindraje, Combustible, Clase de vehículo,

Número de Motor, Número de Chasis y la Carga máxima.

- Modificar registros existentes

- Eliminar registros existentes

- Imprimir un registro seleccionado

- Realizar consultas referentes a la información del registro

Page 268: Diseño e implementación de un sistema de control de rutas de transporte

14

Las consultas se las realiza mediante la búsqueda de los campos: Código

de Vehículo, Placa del vehículo, Modelo o Marca.

5.2. INFORME DE VEHÍCULOS

El formulario “Informe de Vehículos”, nos permite apreciar un informe de

manera general de todos los Vehículos que se encuentran registrados en la

aplicación, detallando únicamente los campos más relevantes.

Las consultas se las realiza mediante la búsqueda de los campos: Código de

Vehículo, Placa del vehículo, Modelo o Marca.

- El informe general realizado en este formulario, puede ser impreso de

manera rápida presionando el botón de impresión.

6. RUTAS

El Menú Rutas, nos presenta tres opciones, las cuales son: “Registro de Rutas”,

“Rastreo” y “Registro de Recibos”, las cuales nos sirven para realizar ingresos,

modificaciones y consulta de registros respecto a las rutas que cumplen los

transportistas con sus respectivos vehículos.

Page 269: Diseño e implementación de un sistema de control de rutas de transporte

15

6.1. REGISTRO DE RUTAS

El formulario de “Registro de Rutas”, nos permite visualizar de manera

detallada cada una de las rutas de entrega de mercadería que se encuentran

ingresadas.

Además de realizar consultas detalladas, este formulario nos permite:

- Crear nuevos registros

Page 270: Diseño e implementación de un sistema de control de rutas de transporte

16

Al momento de realizar el respectivo ingreso de la información en cada

uno de los campos, se requiere obligatoriamente el correcto ingreso del

vehículo asignado a la ruta y al menos un registro en el detalle de la ruta,

ya que, se consideran como puntos de visita.

- Modificar registros existentes

- Eliminar registros existentes

- Imprimir un registro seleccionado

- Realizar consultas referentes a la información del registro

Page 271: Diseño e implementación de un sistema de control de rutas de transporte

17

Las consultas se las realiza mediante la búsqueda de los campos: Código de

Ruta o número de guía de Remisión o Factura de entrega.

6.2. REGISTRO DE RECIBOS

El formulario de “Registro de Recibos”, nos permite registrar y consultar los

recibos de la entrega satisfactoria de la mercadería a cada uno de los clientes

que requieren de los servicios de entrega a domicilio.

Mediante la utilización de este formulario se puede verificar qué persona

recibió la encomienda, fecha, hora, parentesco y ciertas observaciones de las

viviendas que sirven como referencia para una próxima visita al cliente.

Además de realizar consultas detalladas, este formulario nos permite:

- Modificar registros existentes

- Imprimir un registro seleccionado

- Realizar consultas referentes a la información del registro

Page 272: Diseño e implementación de un sistema de control de rutas de transporte

18

6.3. CONSULTA GENERAL DE RUTAS

En el formulario en mención, se puede generar una consulta de todos los

envíos que un cliente ha solicitado, ordenados por fecha ascendentemente e

indicando el estado del envío conjuntamente con los datos de la persona que

recibió la mercadería transportada.

Page 273: Diseño e implementación de un sistema de control de rutas de transporte

19

7. RASTREO

El módulo de rastreo nos presenta opciones de sistema encaminadas a administrar

los dispositivos GPS, como se muestra a continuación:

7.1. REGISTRO DE UNIDADES GPS

Registro de Unidades GPS, nos permite registrar todos y cada uno de los

equipos GPS destinados a ser empleados para el rastreo de vehículos.

Page 274: Diseño e implementación de un sistema de control de rutas de transporte

20

7.2. REPORTE DE UNIDADES GPS

El formulario en mención, nos permite desplegar un listado de todos los

equipos GPS que se encuentran registrados en el sistema, indicando si se

encuentran con servicio activo, tiempos de garantía, y demás información

relevante para su control.

7.3. RASTREO

El formulario “Rastreo”, nos permite visualizar los puntos por los cuales se ha

movilizado un vehículo dentro del perímetro de Santo Domingo, especificando

la fecha y el intervalo de tiempo, para la constatación de las visitas a los

clientes que se definieron con anterioridad en las rutas.

Page 275: Diseño e implementación de un sistema de control de rutas de transporte

21

7.4. ACTIVACIÓN DE SERVICIO DE SEGUIMIENTO

En el formulario de Activación de Servicio de Seguimiento, se despliega un

listado de todos los equipos GPS, para activar el servicio, únicamente se debe

seleccionar el registro, presionar „Editar‟ y definir el Estado como activado „Sí‟

y definir el número de segundos de latencia para recibir y enviar las señales

de localización.

8. USUARIOS

El menú Usuarios, nos presenta las opciones de “Registro de Usuarios” y “Auditoría”,

en la cual se pueden realizar Ingresos, Modificaciones y Consultas detalladas de los

usuarios que tienen acceso a la aplicación y sus acciones sobre cada uno de los

registros.

Page 276: Diseño e implementación de un sistema de control de rutas de transporte

22

8.1. REGISTRO DE USUARIOS

El formulario “Registro de usuarios” nos permite ingresar toda la información

de manera detallada del personal que va a tener acceso a la aplicación.

Además de realizar consultas detalladas, este formulario nos permite:

- Crear nuevos registros

Al momento de realizar el respectivo ingreso de la información en cada

uno de los campos, se requiere obligatoriamente el correcto ingreso de

Cédula de Identidad, Nombres, Apellidos, Login, Tipo de Usuario y un

Password o contraseña, para que el usuario creado, pueda tener un

acceso seguro a la aplicación.

- Modificar registros existentes

Page 277: Diseño e implementación de un sistema de control de rutas de transporte

23

- Eliminar registros existentes

- Imprimir un registro seleccionado

- Realizar consultas referentes a la información del registro

Las consultas se las realiza mediante la búsqueda de los campos: Código

de Usuario, Nombres o Apellidos.

8.2. AUDITORÍA

Este grupo de formularios de auditoría, nos permite un control exhaustivo de

todos los registros que se encuentran ingresados en la aplicación, detallando

qué usuario creó el registro, qué usuario modificó por última vez un registro y

qué usuario ha eliminado un registro, cada uno con sus respectivas fechas.

8.2.1. CLIENTES

Formulario de auditoría de clientes, detallando todos los campos de control

y estado, de cada uno de los registros.

Page 278: Diseño e implementación de un sistema de control de rutas de transporte

24

8.2.2. TRANSPORTISTAS

Formulario de auditoría de Transportistas, detallando todos los campos de

control y estado, de cada uno de los registros.

8.2.3. VEHÍCULOS

Formulario de auditoría de Vehículos, detallando todos los campos de

control y estado de cada uno de los registros.

Page 279: Diseño e implementación de un sistema de control de rutas de transporte

25

8.2.4. RUTAS

Formulario de auditoría de Rutas, detallando todos los campos de control y

estado de cada uno de los registros.

8.2.5. RECIBOS DE MERCADERÍA

Formulario de auditoría de Recibos de Mercadería, detallando todos los

campos de control y estado de cada uno de los registros.

Page 280: Diseño e implementación de un sistema de control de rutas de transporte

26

Page 281: Diseño e implementación de un sistema de control de rutas de transporte

1

ANEXO 11.

LA CASA DEL TOLDO®

GPS

MANUAL DE INSTALACIÓN

Page 282: Diseño e implementación de un sistema de control de rutas de transporte

2

MANUAL DE INSTALACIÓN

1. INSTALAR

El CD de instalación de GPSig, para el rastreo de rutas de La Casa del Toldo® posee

dos archivos de instalación, de los cuales se debe de dar doble clic sobre

SETUP.EXE

2. La primera pantalla es un informativo de la aplicación, en el cual se debe dar clic en

“Siguiente”.

3. Elegir el directorio en el cual se desea instalar la aplicación.

Page 283: Diseño e implementación de un sistema de control de rutas de transporte

3

Luego de haber elegido la ruta de instalación, se procede a dar clic en “Siguiente”

4. En la siguiente pantalla, se procede a confirmar la instalación de InAplicada en el

equipo.

5. Se despliega la pantalla de progreso de instalación de InAplicada.

6. Se muestra la pantalla de instalación completa de la aplicación InAplicada,

concluyendo con el proceso.

Page 284: Diseño e implementación de un sistema de control de rutas de transporte

4

7. Clic en Cerrar.

Page 285: Diseño e implementación de un sistema de control de rutas de transporte

1

ANEXO 12.

LA CASA DEL TOLDO®

GPS

MANUAL DE CONFIGURACIÓN DE MÓDEM

Page 286: Diseño e implementación de un sistema de control de rutas de transporte

2

MANUAL DE CONFIGURACIÓN DE MÓDEM

Para realizar una debida y correcta conexión entre el computador y el teléfono

móvil, deben de seguirse los siguientes pasos:

1. Acceder al “Administrador de Dispositivos”.

2. Seleccionar la opción “Módems”.

3. Escoger la opción “Módem estándar con vínculo Bluetooth”.

Page 287: Diseño e implementación de un sistema de control de rutas de transporte

3

4. Dar clic en la pestaña “Módem”, en la cual se especificará el puerto asignado

para conexiones serial y la latencia en la comunicación serial (velocidad

máxima del puerto), que será definida en 9600.

5. Presionar “Aceptar”.

6. El dispositivo se encuentra listo para ser utilizado.

Page 288: Diseño e implementación de un sistema de control de rutas de transporte

4

ANEXO 13.

LA CASA DEL TOLDO®

GPS

CONVENIO DE PASANTÍAS ENTRE LA CASA DEL TOLDO® Y LA

PONTIFICIA UNIVERSIDAD CATÓLICA DEL ECUADOR – SEDE

SANTO DOMINGO

Page 289: Diseño e implementación de un sistema de control de rutas de transporte

5

Page 290: Diseño e implementación de un sistema de control de rutas de transporte

6

Page 291: Diseño e implementación de un sistema de control de rutas de transporte

7

Page 292: Diseño e implementación de un sistema de control de rutas de transporte

8

ANEXO 14.

LA CASA DEL TOLDO®

GPS

CONTRATO DE PRESTACIÓN DE SERVICIOS DE DESARROLLO

PARA LA CASA DEL TOLDO®

Page 293: Diseño e implementación de un sistema de control de rutas de transporte

9

GPSig

SISTEMA DE CONTROL DE

RUTAS DE TRANSPORTE DE

MERCADERÍA PARA LA CASA

DEL TOLDO® UTILIZANDO

SISTEMAS DE POSICIONAMIENTO

GEOGRÁFICO

No.:

CS 2012-001

GP 2012-001

Tipo: Contrato

Versión: 1.0

PARTES CONTRATANTES:

En Santo Domingo, Provincia Santo Domingo de los Tsáchilas, a 30 de Junio de 2012, DE UNA

PARTE, La Casa del Toldo®, empresa importadora, distribuidora y fabricante de artículos

textiles, en adelante, el “CLIENTE”.

DE OTRA PARTE, GPSIG, empresa prestadora de servicios informáticos, en adelante, el

“PROVEEDOR”.

El CLIENTE y el PROVEEDOR, en adelante, podrán ser denominadas, individualmente, “la

Parte” y, conjuntamente, “las Partes”, reconociéndose mutuamente capacidad jurídica y de

obrar suficiente para la celebración del presente Contrato

CLÁUSULAS GENERALES: DEFINICIONES. PRIMERO: Que el CLIENTE está interesado en la contratación de los servicios de: Desarrollo de una aplicación que permita el control rutas de transporte de mercadería. El CLIENTE está interesado en contratar dichos servicios para acceder al control de clientes y rutas de los transportes de mercadería, con mayor facilidad y rapidez, optimizando de esta manera tiempos y recursos. SEGUNDO: Que el PROVEEDOR prestará sus servicios informáticos integrales. TERCERO: Que las Partes están interesadas en celebrar un contrato de desarrollo de programa informático, en virtud del cual el PROVEEDOR preste al CLIENTE el servicio de: Adaptación del programa informático, propiedad del PROVEEDOR, a las necesidades específicas del negocio del CLIENTE. Que las Partes reunidas en la sede social del CLIENTE, acuerdan celebrar el presente contrato de DESARROLLO DE PROGRAMA INFORMÁTICO, en adelante el “Contrato”, de acuerdo con las cláusulas. OBJETO. En virtud del Contrato el PROVEEDOR se obliga a prestar al CLIENTE el servicio de desarrollo y adaptación del programa informático GPSig. En adelante “el Servicio”, en los términos y condiciones previstos en el Contrato y en todos sus Anexos. DURACIÓN. El plazo máximo de terminación del desarrollo del programa es de 2 años a partir de la fecha referida en el encabezamiento del Contrato. El retraso superior a 15 días será considerado como una incidencia crítica. PRECIO Y FORMA DE PAGO. Por la naturaleza de este proyecto de disertación de grado, no existe pago por el mismo. Sin

Page 294: Diseño e implementación de un sistema de control de rutas de transporte

10

embargo, el cliente se compromete con la prestación de las facilidades necesarias para el desarrollo del sistema, así como de los equipos que se requieran. COMUNICACIONES ENTRE LAS PARTES. Las notificaciones que se realicen las Partes deberán realizarse por correo con acuse de recibo a las siguientes direcciones:

CLIENTE , Av. 3 de Julio y Cuenca, [email protected]

PROVEEDOR: Calle E. Ecuatoriano 507 y Puyo, [email protected] CONFIDENCIALIDAD. El PROVEEDOR guardará confidencialidad sobre la información que le facilite el CLIENTE en o para la ejecución del Contrato o que por su propia naturaleza deba ser tratada como tal. Se excluye de la categoría de información confidencial toda aquella información que sea divulgada por el CLIENTE, aquella que haya de ser revelada de acuerdo con las leyes o con una resolución judicial o acto de autoridad competente. Este deber se mantendrá durante un plazo de tres años a contar desde la finalización del servicio. RESOLUCIÓN DEL CONTRATO. Las Partes podrán resolver el Contrato, con derecho a la indemnización de daños y perjuicios causados, en caso de incumplimiento de las obligaciones establecidas en el mismo. DERECHOS Y OBLIGACIONES DE LAS PARTES. El CLIENTE se compromete a utilizar el programa dentro de la legalidad y a no realizar copias del mismo sin autorización por escrito del PROVEEDOR. El CLIENTE es el único responsable de determinar si el servicio que constituye el objeto de este Contrato se ajusta a sus necesidades. El PROVEEDOR declara que ostenta todos los derechos de propiedad sobre el programa objeto de este contrato. El PROVEEDOR se obliga a gestionar y obtener, a su cargo, todas las licencias, permisos y autorizaciones administrativas que pudieren ser necesarias para la realización del Servicio. Los empleados del CLIENTE y los técnicos del PROVEEDOR se deberán prestar colaboración en todo momento y hasta la finalización del presente contrato. RESPONSABILIDADES DE LAS PARTES. El PROVEEDOR responderá de la calidad del trabajo desarrollado con la diligencia exigible a una empresa experta en la realización del trabajo objeto del Contrato. El PROVEEDOR responderá, por tanto, de las infracciones en que pudiera incurrir en el caso de que destine los datos personales a otra finalidad, los comunique a un tercero, o en general, los utilice de forma irregular, así como cuando no adopte las medidas correspondientes para el almacenamiento y custodia de los mismos. A tal efecto, se obliga a indemnizar al CLIENTE, por cualesquiera daños y perjuicios que sufra directamente, o por toda reclamación, acción o procedimiento, que traiga su causa de un incumplimiento o cumplimiento defectuoso por parte del PROVEEDOR de lo dispuesto tanto en el Contrato como lo dispuesto en la normativa reguladora de la protección de datos de carácter personal. La GARANTIA asegura el cumplimiento de las especificaciones del PRODUCTO. Si así no ocurriese y siempre que los fallos no se deban al mal uso o negligencia del USUARIO se procederá a su corrección o reemplazo. Dentro de la garantía no quedan incluidos los gastos que puedan originarse como consecuencia del envío de material, de desplazamientos al domicilio del usuario y demás gastos suplidos, que serán siempre por cuenta del usuario. Una vez transcurrido el periodo de garantía, el USUARIO se responsabiliza de la verificación de la idoneidad de los productos con licencias contratados para alcanzar los resultados

Page 295: Diseño e implementación de un sistema de control de rutas de transporte

11

adecuados.

CLÁUSULAS ESPECÍFICAS: SERVICIOS A PRESTAR. El PROVEEDOR prestará el servicio en los siguientes términos y condiciones específicos: El PROVEEDOR adaptará el programa informático para que le sea útil al CLIENTE. El PROVEEDOR realizará una propuesta en la que sea compatible el programa, el sistema informático y las necesidades del CLIENTE. La propuesta será la base para el estudio del desarrollo del programa. En las instalaciones del CLIENTE se realizarán simulaciones para saber los posibles resultados. Una vez realizada la adaptación y el desarrollo, el programa se instalará en el sistema informático del CLIENTE y se realizarán las oportunas pruebas. El CLIENTE tendrá acceso al código fuente, en el momento que necesite adaptar de nuevo el programa. CARACTERÍSTICAS DEL SERVICIO. El Servicio prestado por el PROVEEDOR se realizará por personal especializado en cada materia. El personal del PROVEEDOR acudirá previsto de todo el material necesario, adecuado y actualizado, para prestar el Servicio. El Servicio goza de una garantía de 60 días, contados a partir de la FECHA DE INICIO. Esta fecha resultante, se denominara FECHA EFECTIVA para el SOPORTE. Caso de la instalación de varios subsistemas en distintas fechas se establecerá una garantía por subsistema a partir de la cual se iniciara el SOPORTE, que deberá contratarse aparte. PLAZOS. El PROVEEDOR deberá cumplir los plazos de entrega que se acuerden con el CLIENTE. Se considerará un incumplimiento de los plazos cuando se supere [indicar el plazo máximo que se puede superar] y en ese caso el CLIENTE podrá exigir al PROVEEDOR el pago de los daños y perjuicios que corresponda. La reparación se realizará en los siguientes períodos máximos desde el aviso:

Incidencia crítica: 15 días

Incidencia grave: 10 días.

Incidencia leve: 5 días

SUSPENSIÓN Y MODIFICACIÓN DEL SERVICIO. Las Partes podrán suspender y/o modificar el contrato de mutuo acuerdo y por escrito.

Page 296: Diseño e implementación de un sistema de control de rutas de transporte

12

FIRMAS

LA CASA DEL TOLDO GPSig

____________________________ ____________________________

Sr. Chica Izquierdo Juan Carlos. Sr. Aguilar Rodríguez Benjamín Rolando

GERENTE GENERAL TÉCNICO

CLIENTE PROVEEDOR

____________________________

Srta. Jumbo López María Belén

TÉCNICO

PROVEEDOR