proyecto fin de carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/pfc_bbdd.pdf ·...

101
cu Equation Chapter 1 Section 1 Proyecto Fin de Carrera Ingeniería de Telecomunicación Autor: Manuel Herrera Bermejo Tutor: Juan Antonio Ternero Muñiz Dep. Telemática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2015 Diseño de una base de datos del funcionamiento de un taller de fabricación de mazos de cables e implementación en Microsoft Access

Upload: voanh

Post on 06-Sep-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

cu Equation Chapter 1 Section 1

Proyecto Fin de Carrera

Ingeniería de Telecomunicación

Autor: Manuel Herrera Bermejo

Tutor: Juan Antonio Ternero Muñiz

Dep. Telemática

Escuela Técnica Superior de Ingeniería

Universidad de Sevilla

Sevilla, 2015

Diseño de una base de datos del funcionamiento

de un taller de fabricación de mazos de cables

e implementación en Microsoft Access

Page 2: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un
Page 3: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Proyecto Fin de Carrera

Ingeniería de Telecomunicación

Diseño de una base de datos del funcionamiento

de un taller de fabricación de mazos de cables

e implementación en Microsoft Access

Autor:

Manuel Herrera Bermejo

Tutor:

Juan Antonio Ternero Muñiz

Dep. de Telemática

Escuela Técnica Superior de Ingeniería

Universidad de Sevilla

Sevilla, 2015

Page 4: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un
Page 5: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un taller de fabricación de

mazos de cables e implementación en Microsoft Access

Autor: Manuel Herrera Bermejo

Tutor: Juan Antonio Ternero Muñiz

El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros:

Presidente:

Vocales:

Secretario:

Acuerdan otorgarle la calificación de:

Sevilla, 2015

El Secretario del Tribunal

Page 6: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un
Page 7: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Agradecimientos

Durante los años de trabajo empleados para la realización de esta carrera, muchas han sido las personas que han

contribuido a que este proyecto se hiciera realidad, todas ellas merecen mi reconocimiento y consideración.

- A mi familia, porque siempre me empujaban a seguir adelante en las situaciones difíciles.

- A Sandra, porque me aguantó en estos largos años de estudio y fue un apoyo constante.

- A todos mis compañeros de estudio. Por aquellas largas noches de insomnio, las dioptrías han merecido

la pena.

- A todos los profesores, por su dedicación y esfuerzo.

- A todos mis amigos, por los buenos momentos que te hacen olvidar los problemas.

Manuel Herrera Bermejo

Ingeniero de Telecomunicaciones

Sevilla, 2015

Page 8: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un
Page 9: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Resumen

En este proyecto se abordará la construcción de una base de datos en Microsoft Access. Está basado en unas

prácticas que hizo el autor para la empresa “Airbus Defence And Space” en Sevilla en 2014.

Desde hace unos años Airbus intenta actualizar sus métodos de recogida y cruce de datos. Para este fin se

adjudicó este proyecto, que tuvo 4 meses de duración.

El principal objetivo de esta base de datos será tener una visión actualizada del trabajo del taller eléctrico, y

además, eliminar los archivos Excel donde se cumplimentaban los datos. En un principio, estará programada

para permitir la entrada de datos por archivos Excel además de por formularios. Se hizo así para que sirviera de

solución puente para aquellas personas que sólo sabían manejarse con hojas de datos.

Otros objetivos que se perseguían eran la centralización de la información, la mejora de la consistencia y

accesibilidad de la información, la mejora de la usabilidad de la interfaz, la seguridad y fiabilidad del sistema y

el uso de un software existente ya en la empresa.

Microsoft Acceess cumplía todos estos requisitos, y además, permitía vincular hojas de datos a nuestra base de

datos de una forma fácil. Con este sistema de vinculación nuestra aplicación tendrá en todo momento una tabla

copia de los archivos Excel de entrada.

En definitiva, nuestro sistema será capaz de organizar el trabajo diario de las distintas áreas de fabricación, y

proporcionar informes para que control de producción pueda mejorar la productividad en un futuro.

Page 10: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un
Page 11: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Abstract

This project was based on the completion of a Microsoft Access database for the company Airbus.

The main objective of this database will be the elimination of Excel files. Initially, it will be programmed to

accept data in two ways: by Excel files and by forms. It was created as such to bridge the gap for people who

have only known how to handle datasheets. In addition, our system will offer a higher level of security and

reliability, as well as ease in information accessibility.

Microsoft Access met all of these requirements, and it allowed us to easily link datasheets to our database.

In short, our system will be capable of organizing the daily work of each different manufacturing area, as well

as will provide reports so that production control can improve productivity in the future.

Page 12: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un
Page 13: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Índice

Agradecimientos 7

Resumen 9

Abstract 11

Índice 13

Índice de Tablas 15

Índice de Figuras 17

1 Introducción 1 1.1 Decisiones técnicas 3

2 Utilidad para la empresa 5

3 Sistemas de gestión de base de datos 7 3.1 Características de los gestores de bases de datos 7 3.2 Ventajas e inconvenientes de los gestores de bases de datos. 8 3.3 Microsoft Access 9

4 Funcionamiento del taller 13

5 Búsqueda de dependencias funcionales 17 5.1 Búsqueda del diagrama E-R 17 5.2 Cumplimiento de las formas normales 18

5.2.1 Primera forma normal 18 5.2.2 Segunda forma normal 18 5.2.3 Tercera forma normal 19

5.3 Reducción de dependencias funcionales 19 5.3.1 Descripción de las entidades y atributos. 19 5.3.2 Esquema de relaciones 20 5.3.3 Asignación de relaciones 21 5.3.4 Reducción de relaciones 21

5.4 Creación de las tablas 22

6 Desarrollo de la base de datos 25 6.1 Vinculación de los archivos excel de entrada 25

6.1.1 Pasos para la vinculación 25 6.2 Creación de las tablas 27 6.3 Relaciones entre tablas 28

6.3.1 Creación del esquema de relaciones 29 6.4 Formularios de navegación 30

6.4.1 Controles para el formulario navegación 32 6.4.2 Creación de macros. 36 6.4.3 Creación de consultas 37

6.5 Formularios para la entrada de datos. 38 6.6 Generación de informes 43

Page 14: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

7 Implementación de la base de datos 47 7.1 Formularios de navegación 47

7.1.1 Formulario “Control de acceso” 47 7.1.2 Formulario ”Inicio” 51 7.1.3 Formulario “Planificación de Áreas” 54 7.1.4 Formulario “Informes de seguimiento” 58 7.1.5 Formulario “Varios” 63 7.1.6 Formulario “Comerciales” 65 7.1.7 Formulario “Pruebas” 67 7.1.8 Formulario “Paradas” 68 7.1.9 Formulario “Producción” 70

8 Conclusiones 73 8.1.1 Conclusiones técnicas 73 8.1.2 Conclusiones personales 74

Bibliografía 75

Anexos 77 10.1.1 Los objetos en Visual Basic 77 10.1.2 Concepto de encapsulación (Public v.s. Private) 78 10.1.3 Utilización de variables de objeto 78 10.1.4 Variables estáticas 79 10.1.5 Cadenas de caracteres largas. 79 10.1.6 Instrucción Recordsets 79 10.1.7 Como crear colecciones de objeto 80 10.1.8 Acceder a los elementos de una colección. 80

Page 15: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

ÍNDICE DE TABLAS

Tabla 4–1. Tipos de mesas de fabricación. 6

Tabla 5–1. Tabla Mazo_Concreto_Tipo. 13

Tabla 5–2. Tabla Cables 13

Tabla 5–3. Tabla Contiene. 14

Tabla 5–4. Tabla Suministra 14

Tabla 5–5. Tabla Cables. 15

Tabla 5–6. Tabla Proveedores. 15

Tabla 5–7. Tabla Mesa. 15

Page 16: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un
Page 17: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

ÍNDICE DE FIGURAS

Figura 1-1. Ejemplo de hoja de datos. 1

Figura 1-2. Ejemplo de formulario de entrada de datos. 2

Figura 3-1. Ejemplo de formulario de navegación Access. 3

Figura 4-1. Ejemplo hoja de cálculo de comerciales. 13

Figura 4-2. Ejemplo de hoja de cálculo”Proveedores_Cables” 14

Figura 4-3. Ejemplo de hoja de cálculo”Cableado” 14

Figura 4-4. Ejemplo de registros en el “Part Master” 14

Figura 4-3. Ejemplo de hoja de cálculo “Pruebas” 15

Figura 5-1. Árbol entidad-relación 17

Figura 5-2. Ejemplo de fallo en segunda forma normal. 18

Figura 6-1. Vinculación Excel 1 25

Figura 6-2. Vinculación Excel 2 26

Figura 6-3. Vinculación Excel 3 26

Figura 6-4. Creación de tablas 27

Figura 6-5. Esquema de relaciones. 28

Figura 6-6. Creación del esquema de relaciones 1. 29

Figura 6-7. Creación de los formularios de navegación 1. 30

Figura 6-8. Menú “Controles” de formulario de navegación. 30

Figura 6-9. Ejemplo de formulario de navegación. 31

Figura 6-10. Programación de botones. 31

Figura 6-11. Menú “Controles”. 32

Figura 6-12. Ejemplo hoja de propiedades. 33

Figura 6-13. Ejemplo de cuadro combinado. 34

Figura 6-14. Propiedades de un cuadro de lista. 34

Figura 6-15. Campos verificación. 35

Figura 6-16. Grupo de opciones. 35

Figura 6-17. Creación de macros. 36

Figura 6-18. Creación de macros 2. 37

Figura 6-19. Ejemplo de consulta. 38

Figura 6-20. Creación de los formularios de entrada de datos 1. 38

Figura 6-22. Creación de los formularios de entrada de datos 3. 39

Figura 6-23. Formulario de entrada de datos. Menú herramientas. 39

Figura 6-24. Formulario de entrada de datos. Lista de campos. 40

Page 18: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Figura 6-19. Formulario de entrada de datos. Menú controles. 40

Figura 6-19. Formulario de entrada de datos. Configuración de campos. 41

Figura 6-21. Formulario “Comerciales”. 41

Figura 6-19. Ejemplo uso de subformulario. 42

Figura 6-21. Consulta “Pruebas” 43

Figura 6-21. Informe “Pruebas” 44

Figura 6-21. Menú herramientas. 44

Figura 6-21. Creación de informes “Hojas de propiedades”. 44

Figura 6-26. Creación de informes. Menú herramientas. 45

Figura 6-27. Creación de informes. Lista de campos. 45

Figura 6-28. Informe “Pruebas” 46

Figura 7-1. Formulario “Inicio” 51

Figura 7-2. Macro “Actualización” 51

Figura 7-3. Consulta “Anexar Comerciales_vinculada”. 52

Figura 7-4. Consulta “Actualiza Mazo_conc_tipo”. 53

Figura 7-5. Macro botón “Informes de Incidencias” 53

Figura 7-6. Formulario “Planificación de Áreas” 54

Figura 7-7. Consulta “Carga Baja” 54

Figura 7-8. Formulario “Carga Baja” 55

Figura 7-9. Informe “P/N sin pulsos consumidos Carga Media” 55

Figura 7-10. Informe “Mazos sin fabricar” 56

Figura 7-11. Informe “Órdenes paradas” 56

Figura 7-12. Consulta “Órdenes paradas” 57

Figura 7-13. Formulario “Informes de seguimiento” 58

Figura 7-14. Informe “Pruebas” 58

Figura 7-15. Consulta “Pruebas” 59

Figura 7-16. Consulta “Motivo_fallos_prueba” 60

Figura 7-16. Consulta “Motivo_fallos_prueba” 60

Figura 7-16. Consulta “Mazos sin stock” 61

Figura 7-17. Informe “Mazos sin stock” 61

Figura 7-14. Informe “Saturación de tipo de mesa por área” 62

Figura 7-19. Consulta “Saturación de tipo de mesa por área” 62

Figura 7-20. Informe “Histórico” 63

Figura 7-21. Consulta “Histórico” 63

Figura 7-22. Consulta “Aviones en fabricación” 64

Figura 7-23. Informe “Aviones en fabricación” 64

Figura 7-24. Formulario “Comerciales” 1 65

Page 19: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Figura 7-25. Formulario “Comerciales” 3 65

Figura 7-26. Formulario “Comerciales” 4 66

Figura 7-27. Menú “Controles” de formulario de navegación. 66

Page 20: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un
Page 21: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

1 INTRODUCCIÓN

n este proyecto se abordará la construcción de una base de datos en Microsoft Access. Está basado en unas

prácticas que hizo el autor para la empresa “Airbus Defence And Space” en Sevilla en 2014.

El objetivo que esta base de datos perseguía era la centralización de la información, la mejora de la

consistencia y accesibilidad de la información, la mejora de la usabilidad de la interfaz, la seguridad y fiabilidad

del sistema y el uso de una tecnología basada en el software libre.

La empresa tenía un problema en el seguimiento de las piezas en el taller de montaje. Todos los manuales e

informes se hacían de manera manual mediante hojas de datos. Esto acarreaba pérdidas de datos a la hora del

cruce de la información. Por ello se pensó en la introducción de un nuevo método de recogida y tratamiento de

datos.

Figura 1-1. Ejemplo de hoja de datos.

Todos los días se tenían que actualizar todas las hojas de cálculo, y comprobar que los datos eran coherentes.

Esto suponía una tarea diaria y tediosa, perdiéndose aproximadamente 1 hora todos los días de productividad.

Nuestra BBDD permitirá tener un sistema de datos único y centralizado, con lo cual se suprimirán a corto plazo

el uso de hojas de cálculo. En un principio, nuestro sistema estará programado para permitir la entrada de datos

mediante archivos Excel además de por formularios. Se hizo así para que sirviera de puente para aquellas

personas que sólo sabían manejarse con hojas de datos.

E

Cada día sabemos más y entendemos menos

- Albert Einstein -

Page 22: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Introducción

2

ii

Para la introducción de datos en nuestra BBDD programaremos formularios. Estos tendrán los mismos campos

que las hojas de datos que queremos eliminar. Otra ventaja de este sistema es la posibilidad de comprobación

de los datos introducidos. Por ejemplo programaremos el campo “ITEM” para que sólo acepte campos

numéricos. El campo “Fecha_entrada” será programado para que sea un campo fecha anterior al valor fecha del

campo “Fecha_Salida”. Cada comercial tendrá acceso a un formulario similar al mostrado en la figura inferior.

Figura 1-2. Ejemplo de formulario de entrada de datos.

La base de datos será capaz de organizar el trabajo diario de las distintas áreas de fabricación, y proporcionar

informes sobre la situación del taller. Con estos informes control de producción podrá mejorar el funcionamiento

de la fábrica y optimizar su funcionamiento.

En definitiva, nuestro sistema será capaz de organizar el trabajo diario de las distintas áreas de fabricación, y

proporcionar informes para que control de producción pueda mejorar la productividad en un futuro.

En las siguientes líneas se expondrá de forma breve el funcionamiento de la empresa, desde la entrada de los

datos hasta la salida de los mazos fabricados.

Los comerciales eran agentes que se dedicaban a buscar recursos para la empresa. Se reunían con potenciales

clientes a los cuales pudiera interesarle la adquisición de aeronaves. Después de estas reuniones, responsables

de la empresa rellenaban archivos Excel donde aparecían todos los mazos a fabricar para cada avión conseguido.

Con todos los mazos a fabricar, control de producción hacía el planning de las distintas áreas de producción para

conseguir la entrega en la fecha indicada. Este planning se entregaba al responsable de cada área de fabricación,

que eran finalmente los que controlaban que la fabricación fuera acorde a los parámetros establecidos.

Cuando el operario terminaba la construcción de un mazo, este pasaba al área de pruebas. Había 3 tipos de

Page 23: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

pruebas: pruebas EMI, pruebas eléctricas y pruebas de conectores. Dependiendo de la utilidad final del mazo,

este tendría que pasar 1, 2 o las 3 pruebas existentes. Para saber que pruebas debe de pasar un mazo concreto,

los operarios se apoyaban en un archivo Excel, “Part Master”, que contenía los parámetros de todos los mazos

a fabricar.

La hoja de datos “Part Master”, con los parámetros de producción de cada pieza, estaba editado por los

ingenieros de planta. Los ingenieros tenían en cuenta qué herramientas eran necesarias para fabricar cada mazo,

con lo cual definían el área de fabricación ideal para cada pieza. También incluían en el archivo las pruebas que

tenía que pasar cada pieza dependiendo de su uso final.

El problema radicaba en que se fabricaban miles de piezas, llevar el control de cada una de ellas era imposible.

Si una pieza se perdía o no tenía stock, control de producción no se enteraba, y la pieza podía quedarse estancada

días. Esto repercutía en un retraso de las entregas, pérdidas económicas y mala reputación para la empresa.

Para solventar este problema se propuso la creación de esta base de datos, con la cual, control de producción

tuviera una visión real y actualizada del estado del taller.

1.1 Decisiones técnicas

Por todo lo comentado en el apartado anterior, la elección de la solución tecnológica está condicionada al

software existente en la empresa. Para contener la base de datos y generar los documentos oportunos se opta por

el software de Microsoft Access. Como solución puente, conservaremos los archivos Excel, ya que algunos

usuarios finales no están familiarizados con el uso de Microsoft Access. Con la eliminación de las hojas de datos

se pretende tener un sistema con datos centralizados y únicos. Además con la inserción de datos mediante

formularios se puede comprobar el formato de los datos introducidos. Por ejemplo, comprobaremos que el

campo “ITEM” sea un campo numérico, o que el campo “Fecha_entrada” es anterior al campo “Fecha_salida”

Otra decisión importante es la elección del método de programación de Microsoft Access. En este sistema se

puede programar mediante macros o a través de código VBA. Vamos a usar en prácticamente la totalidad de la

base de datos el método de macros, aunque en algunos formularios usaremos código VBA. Esto es debido a que

las macros nos proporcionan un método más visual de programar. Además para una base de datos compartida

en un servidor de archivos prefiererimos evitar usar VBA por razones de seguridad. Tenemos un pequeño

manual de Visual Basic en el “Anexo 1”.

Page 24: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Introducción

4

iv

Page 25: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

2 UTILIDAD PARA LA EMPRESA

omo se comentó en el apartado anterior, la implementación de la base de datos pretendía mejorar la

organización del trabajo en las distintas áreas. Debido a la gran cantidad de archivos Excel, la empresa

no tenía un control de la situación de cada pieza en el taller.

No sólo se pretendía tener un control más exhaustivo de la producción, si no que además nuestra base de datos

permitiría sacar informes que usarían en control de producción para mejorar la productividad. Por ejemplo,

podríamos observar que mazos están en el área de pruebas y ver si el área está saturada.

Figura 2-1. Informe “Pruebas”

Con estos informes, control de producción podría prever el colapso de un área de fabricación, y evitar esto

introduciendo trabajadores de otras áreas. Con otros informes podrían observar el tiempo que un área dedica a

la fabricación de una pieza. Si el tiempo es excesivo podrían preguntar a que es debido.

Por lo tanto, con la implantación de la base de datos se tendrá un control más claro de la situación de cada pieza,

y la empresa ahorrará dinero al aumentar la productividad.

También se pretendía en un futuro suprimir la utilización de los archivos Excel a la hora de recogida de datos.

Nuestra BBDD proporciona una solución puente, tiene un sistema de introducción de datos por medio de

formularios, además de introducción de datos mediante hojas de datos. Se tomo esta decisión para que los

usuarios tuvieran un tiempo de adaptación a Microsoft Access.

Con la creación de esta base de datos se perseguía la centralización de la información, la mejora de la

consistencia y accesibilidad de la información, la mejora de la usabilidad de la interfaz, la seguridad y fiabilidad

del sistema y el uso de un software que existiera ya en la empresa.

C

Page 26: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Utilidad para la empresa

6

vi

Microsoft Acceess cumplía todos estos requisitos, y además, permitía vincular hojas de datos a nuestra base de

datos de una forma fácil. Con este sistema de vinculación nuestra aplicación tendrá en todo momento una tabla

copia de los archivos Excel de entrada.

Page 27: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

3 SISTEMAS DE GESTIÓN DE BASE DE DATOS

na base de datos es un conjunto de datos almacenados entre los que existen relaciones lógicas. Estos

sistemas son diseñados para satisfacacer satisfacer los requerimientos de información de una empresa u

organización. En una base de datos, además de los datos, también se almacena su descripción. La base

de datos funciona como un gran almacén de datos que se define una sola vez y que se utiliza al mismo tiempo

por muchos departamentos y usuarios. En lugar de trabajar con ficheros desconectados e información

redundante, por ejemplo usando hojas de cálculo, todos los datos se integran con una mínima cantidad de

duplicidad. La base de datos no pertenece a un departamento, se comparte por toda la organización. Dependiendo

del usuario final, este tendrá acceso a unos informes a otros. Además, la base de datos no sólo contiene los datos

de la organización, también almacena una descripción de dichos datos. Esta descripción es lo que se denomina

metadatos, catálogo y es lo que permite que exista independencia de datos lógica-física.

Con los sistemas de bases de datos se consigue separar la definición de los datos de los programas de aplicación.

Los usuarios del sistema sólo ven la la interfaz gráfica, en nuestro caso formularios e informes, y no se deben

preocupar de como se define internamente los datos. Una ventaja de este modelo, conocido como abstracción

de datos, es la posibilidad de cambiar la definición interna de un objeto sin afectar a sus usuarios ya que la

interfaz gráfica no se ve afectada. Del mismo modo, los sistemas de bases de datos separan la definición de

la estructura de los datos, de los programas de aplicación y almacenan esta definición en la base de datos. Si se

añaden nuevas estructuras de datos o se modifican las ya existentes, los programas de aplicación no se ven

afectados ya que no dependen directamente de aquello que se ha modificado.

Un sistema de gestión de bases de datos (SGBD) está formado por un conjunto de programas que permiten el

almacenamiento, modificación y extracción de la información en una base de datos, además de proporcionar

herramientas para añadir, borrar, modificar y analizar los datos. Los usuarios pueden acceder a la información

usando herramientas específicas de generación de informes, o bien mediante aplicaciones al efecto.

Generalmente se accede a los datos mediante lenguajes de alto nivel que simplifican la tarea de construir las

aplicaciones. Un SGBD permite controlar el acceso a los datos, asegurar su integridad, gestionar el acceso

concurrente a ellos, recuperar los datos tras un fallo del sistema y hacer copias de seguridad. Las bases de datos

y los sistemas para su gestión son esenciales para cualquier área de negocio.

3.1 Características de los gestores de bases de datos

El propósito general de los sistemas de gestión de bases de datos es el de manejar de manera clara, sencilla y

ordenada un conjunto de datos que posteriormente se convertirán en información relevante para una

organización.

Como ejemplos de gestores de bases de datos podemos nombrar: MySQL, PostgreSQL, Microsoft SQL Server,

Open Access, etc.

U

Page 28: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Sistemas de gestión de base de datos

8

viii

Las características principales de estos sistemas de gestión son:

Independencia: consiste en la capacidad de modificar el esquema (físico o lógico) de una base de datos sin tener

que realizar cambios en las aplicaciones que se sirven de ella.

Redundancia mínima: un buen diseño de una base de datos logrará evitar la aparición de información repetida o

redundante.

Consistencia: vigilar que aquella información que aparece repetida se actualice de forma coherente, es decir, que

todos los datos repetidos se actualicen de forma simultánea.

Seguridad: deben garantizar que esta información se encuentra asegurada frente a usuarios malintencionados.

Integridad: se trata de adoptar las medidas necesarias para garantizar la validez de los datos almacenados.

Respaldo y recuperación: deben proporcionar una forma eficiente de realizar copias de respaldo de la

información almacenada en ellos.

Control de la concurrencia: habitualmente son muchas las personas que acceden a una base de datos por lo que

ésta debe controlar este acceso concurrente a la información, que podría derivar en inconsistencias.

3.2 Ventajas e inconvenientes de los gestores de bases de datos.

Entre las ventajas de los gestores de bases de datos, se encuentran que:

1) Proveen facilidades para la manipulación de grandes volúmenes de datos

2) Simplifican la programación de equipos de consistencia.

3) Organizan los datos con un impacto mínimo en el código de los programas.

4) Disminuyen drásticamente los tiempos de desarrollo y aumentan la calidad del sistema desarrollado si son

bien explotados por los desarrolladores.

5) Usualmente, proveen interfaces y lenguajes de consulta que simplifican la recuperación de los datos.

Como inconvenientes de su uso destacan que:

1) Es necesario disponer de una o más personas que administren la base de datos, de la misma forma en que

suele ser necesario en instalaciones de cierto porte disponer de una o más personas que administren los sistemas

operativos. Esto puede llegar a incrementar los costos de operación en una empresa. Sin embargo hay que

balancear este aspecto con la calidad y confiabilidad del sistema que se obtiene.

2) Si se tienen muy pocos datos que son usados por un único usuario por vez y no hay que realizar consultas

complejas sobre los datos, entonces es posible que sea mejor usar una hoja de cálculo.

3) Complejidad: el software muy complejo y las personas que vayan a usarlo deben tener conocimiento de las

funcionalidades del mismo para poder aprovecharlo al máximo.

4) Tamaño: la complejidad y la gran cantidad de funciones hace que sea un software de gran tamaño que requiera

de una gran capacidad de memoria RAM.

5) Coste del hardware adicional: los requisitos de hardware para un SGBD por lo general son relativamente

Page 29: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

altos, por lo que estos equipos pueden ser caros.

3.3 Microsoft Access

Microsoft Access es un sistema gestor de base de datos que pertenece a Microsoft Office. Microsoft Office es

una suite de oficina que abarca e interrelaciona aplicaciones de escritorio, servidores y servicios para los sistemas

operativos Microsoft Windows y Mac OS X. La primera versión de Office contenía Microsoft Word, Microsoft

Excel y Microsoft PowerPoint. Además, una versión profesional de Office incluía Microsoft Access y Schedule

Plus. Con el tiempo, las aplicaciones de Office han crecido sustancialmente y de forma más estrecha con

características compartidas, como un corrector ortográfico común, la integración de datos OLE y el lenguaje de

secuencias de comandos de Microsoft, Visual Basic para aplicaciones. Microsoft también posiciona Office como

una plataforma de desarrollo para software de línea de negocios, bajo la marca de Office Business Applications

(aplicaciones empresariales de Office u OBA por sus siglas en inglés).

Microsoft Access es un sistema gestor de bases de datos desarrollado por Microsoft y orientado a ser usado en

un entorno personal o en pequeñas organizaciones. Este sistema cumple con todas las características principales

de los gestores de bases de datos: independencia, redundancia mínima, consistencia, seguridad, integridad y

control de la concurrencia.

En Microsoft Access, la programación es el proceso de agregar funcionalidad a la base de datos mediante el uso

de macros de Access o código de Visual Basic para Aplicaciones (VBA). Por ejemplo, suponga que hemos

creado un formulario y un informe y deseamos agregar un botón de comando al formulario que, cuando se haga

clic en él, abra el informe. En este caso, la programación la podemos hacer mediante la creación de una macro

o un procedimiento de VBA.

Access permite crear ficheros de bases de datos relacionales que pueden ser fácilmente gestionadas por una

interfaz gráfica simple. Además, estas bases de datos pueden ser consultadas por otros programas. Este programa

permite manipular los datos en forma de tablas y crear relaciones entre tablas, consultas, formularios para

introducir datos e informes para presentar la información. La decisión de utilizar Microsoft Access se debe a las

siguientes razones:

1) Necesidad de importar y exportar datos en formato Excel. Este software permite crear tablas vinculadas

con archivos Excel. Con ello conseguíamos tener una copia exacta de todas las hojas de datos dentro de

nuestra base de datos.

2) Era un software que estaba ya instalado en la empresa. Esto ahorraba tiempo de instalación de otro

software.

3) Permite crear una interfaz de usuario fácil de usar mediante los llamados formularios de navegación.

Un formulario de navegación es, simplemente, un formulario que contiene un control de navegación

formado por botones y check que nos llevan a otros formularios, informes o consultas. Este tipo de

formularios constituye un enorme aliciente en cualquier base de datos, ya que es de uso intuitivo.

Page 30: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Sistemas de gestión de base de datos

10

x

Figura 3-1. Ejemplo de formulario de navegación Access.

Para trabajar en Microsoft Access usaremos un lenguaje de consulta estructurado o SQL (Structured Query

Language), y para programar su contenido dinámico usaremos Visual Basic (VBA) . SQL es un lenguaje de

acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en éstas. Entre sus

características principales destacan el manejo del álgebra y el cálculo relacional, permitiendo efectuar consultas

con el fin de recuperar información de interés de la base de datos, así como también hacer cambios sobre ella.

A continuación mostraremos algunas de las sentencias más utilizadas en nuestro sistema, acompañadas de un

ejemplo básico:

• Update: modifica datos existentes en una tabla de la base de datos.

• Delete: suprime filas de una tabla.

• Insert: añade nuevas filas de datos a una tabla la base de datos.

Page 31: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

• Select: selecciona filas de la tabla indicada.

Los orígenes del SQL están ligados a los de las bases de datos relacionales. En 1970 E. F. Codd propone

el modelo relacional y asociado a este un lenguaje primitivo de acceso a datos. Basándose en estas ideas, los

laboratorios de IBM definieron el lenguaje SEQUEL (Structured English Query Language) que más tarde fue

implementado por el sistema de gestión de bases de datos (SGBD) experimental System R, desarrollado en 1977

también por IBM. Sin embargo, fue Oracle quien lo introdujo por primera vez en 1979 en un producto comercial.

El SEQUEL terminó siendo el predecesor de SQL, que es una versión evolucionada del primero. El SQL pasa

a ser el lenguaje por excelencia de los diversos sistemas de gestión de bases de datos relacionales surgidos en

los años siguientes y fue por fin estandarizado en 1986 por el ANSI, dando lugar a la primera versión estándar de

este lenguaje. Al año siguiente este estándar es también adoptado por la ISO.

Sin embargo, este primer estándar no cubría todas las necesidades de los desarrolladores e incluía

funcionalidades de definición de almacenamiento que se consideró suprimirlas. Así que, en 1992, se lanzó un

nuevo estándar ampliado y revisado del SQL llamado "SQL-92". En la actualidad el SQL es el estándar de la

inmensa mayoría de los SGBD comerciales.

Visual Basic (VBA) es el lenguaje de programación desarrollado por Microsoft para crear contenido dinámico

en las aplicaciones de Microsoft Office. Microsoft Access es el programa de base de datos dentro del paquete

de Microsoft Office que utiliza SQL y VBA para administrar datos y proporcionar la automatización de las

funciones sistemáticas de base de datos. VBA permite a los programadores ampliar la funcionalidad de

programas como Excel y Access. A continuación mostramos un ejemplo de un cógido VBA.

Page 32: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Sistemas de gestión de base de datos

12

xii

Explicaremos que hace cada sentencia del código anterior:

a) Dim bd As Database : Sirve para declarar una base de datos.

b) Dim tau As TableDef : Declaramos una tabla.

c) Dim cam As Field : Declaramos un campo .

d) Set bd = CreateDataBase(): Creamos una base de datos de nombre bd.

e) Set tau = bd.CreateTableDef(): Creamos en la base de datos bd una tabla.

f) Set cam = tau.CreateField(): Sirve para crear un campo en una base de datos.

Para obtener más información acerca del código tenemos un manual de Visual Basic en el “Anexo 1”.

Page 33: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

4 FUNCIONAMIENTO DEL TALLER

ara entender nuestra base de datos debemos comprender en que consiste el trabajo en la fábrica de Airbus.

En primer lugar, los comerciales se dedicaban a buscar recursos para la empresa. Se reunían con

potenciales clientes a los cuales pudiera interesarle la adquisición de aeronaves. Después de estas reuniones,

responsables de la empresa rellenaban archivos Excel donde aparecían todos los mazos a fabricar para cada

avión conseguido. Había un archivo Excel por cada comercial, lo que producía un descontrol a la hora de hacer

la planificación de los mazos. Los comerciales se comprometían con los clientes en una fecha y siempre querían

que sus mazos a fabricar fueran los primeros. Para paliar este descontrol se propuso tener un solo archivo Excel

para todos los comerciales. Con todos los mazos a fabricar, control de producción hacía la planificación de las

distintas áreas de producción para conseguir la entrega en la fecha indicada.

Figura 4-1. Ejemplo hoja de cálculo de comerciales.

La planificación se entregaba al responsable de cada área de fabricación, que eran finalmente los que controlaban

que la fabricación fuera acorde a los parámetros establecidos. Cada responsable de área trabajaba con su hoja de

cálculo. Cada vez que desde control de producción se intentaba averiguar como iba la construcción de un mazo

se perdía gran cantidad de tiempo. Se perdía capacidad de producción en las áreas de fabricación, ya que a los

responsables de montaje se les olvidaba editar los Excel. Los operarios de pruebas no sabían que mazos estaban

terminados, y control de producción no era consciente de en que estado estaba el mazo.

El trabajo en el taller consistía en la fabricación de mazos. Un mazo es un conjunto de cables, conectores y

paneles. Había muchos tipos de mazos que se pueden fabricar, cada uno de ellos tiene un Part Number (P/N).

Este Part Number no es un distintivo absoluto, ya que podemos fabricar las veces que queramos ese mazo.

Los operarios del almacen tenían el control sobre los encargos de los cables sin stock. Para ello tenían un archivo

Excel donde se encontraban el identificador de todos los cables usados en el taller junto con el identificador de

sus proveedores. El encargado del almacén todos los días comprobaba los encargos de la semana, si observaba

que podía faltar algún cable se hacía un encargo.

P

Page 34: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Funcionamiento del taller

14

xiv

Figura 4-2. Ejemplo de hoja de cálculo”Proveedores_Cables”

Normalmente los encargos se hacían los lunes, ya que la planificación de los mazos a fabricar se hacía a

principios de semana. Si observaban que había muchos tipos de mazos iguales a fabricar, buscaban en otro Excel

que cables usaba ese mazo. Cada cable que se fabricaba llevaba unos conectores asociados, los operarios del

almacén se dedicaban a recopilar los conectores necesarios y llevarlos al área de fabricación. Para estos

conectores siempre tenían stock, ya que la empresa hacía un encargo una vez al año para la fabricación anual.

Figura 4-3. Ejemplo de hoja de cálculo”Cableado”

Por otra parte estaban los ingenieros de planta. Estos ingenieros se dedicaban a controlar los parámetros de

fabricación de todos los tipos de mazos. Hacían reuniones todos los lunes y proponían mejoras para la

producción de todas las piezas del taller. Estos ingenieros trabajaban con un archivo Excel llamado “Part

Master”. La hoja de datos contenía todos los tipos de mazos que se podían fabricar, y los distintos parámetros

de montaje. Este archivo contiene para cada tipo de mazo, las pruebas que tiene que pasar una vez montado, la

longitud del mazo en metros, el área de fabricación y los pulsos para su construcción.

Figura 4-4. Ejemplo de registros en el “Part Master”

Page 35: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

El taller contaba con 3 áreas de fabricación. El “Part Master” nos definía en cual de las 3 áreas de fabricación se

construirá definitivamente cada mazo. Esta decisión se tomaba en base a las herramientas necesarias para la

construcción de cada pieza concreta. Cada área estaba dirigida por un responsable que seguía la ejecución

correcta de todos los mazos de su área, además, apuntaba en hojas de datos todos los mazos que se fabricaban y

diversos parámetros de fabricación.

Dentro de cada área de fabricación había 3 tipos de mesa. Cada tipo de mesa tenía una longitud específica.

Dependiendo de la longitud del mazo, este pasa por una mesa de fabricación u otra. A continuación mostramos

una tabla con las distintas mesas de fabricación. Todas las áreas tenían los 3 tipos de mesas distintos.

Tabla 4–1. Tipos de mesas de fabricación.

Tipo de Mesa Longitud Cables

Tipo_A < 3 metros

Tipo_B < 5 metros

Tipo_C > 5 metros

El tiempo en el que un mazo tiene que ser fabricado se divide en pulsos. Un pulso equivale a 4 horas de trabajo,

por lo tanto, un trabajador al día produce 2 pulsos. El responsable podrá acceder al formulario de planificación

de su área, en este formulario tendrá 2 campos editables: Pulsos Consumidos y Motivo Parada.

El primero de ellos lo actualizará 2 veces al día y servirá para controlar el tiempo de fabricación del mazo.

Cuando el mazo haya alcanzado los pulsos establecidos en el “Part Master” para su fabricación, este pasará a la

sección de pruebas. El campo “Motivo Parada” sirve para que los responsables puedan avisar a control de

producción que un mazo ha quedado parado e indicar el motivo.

Cuando el mazo es fabricado pasa al área de pruebas. En esta área los trabajadores accedían a la hoja de datos

“Part Master” para saber qué tipo de pruebas tenía que pasar cada mazo concreto. Se podían realizar 3 tipos de

pruebas distintas dependiendo de la finalidad del mazo: pruebas de apantallamiento contra EMI, pruebas de

temperatura y la pruebas de conectores. Cuando finalizaban las pruebas de un mazo lo apuntaban en un Excel.

Si el mazo no pasaba las pruebas era fabricado de nuevo

Figura 4-5. Ejemplo de hoja de cálculo “Pruebas”

Page 36: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Funcionamiento del taller

16

xvi

Las pruebas que se llevaban a cabo en el taller eran:

1) Pruebas de apantallamiento contra EMI: los operarios comprobaban que el mazo estaba debidamente

apantallado y que funcionaba correctamente en condiciones de emisiones electromagnéticas extremas.

2) Pruebas de temperatura: algunos mazos tenían que pasar pruebas de temperatura debido a que se

posicionaban en un área del avión crítica. Por ejemplo los mazos que actuaban sobre los motores tenían

que pasar estas pruebas.

3) Pruebas de conectores: era una prueba de continuidad eléctrica. Conectaban los mazos en un entorno

simulado y comprobaban que no hubiera algún defecto en la fabricación del mazo.

El responsable del área de pruebas rellenaba otro Excel con los mazos que pasaban las pruebas, y ordenaba la

creación de los mazos que no las superaban. Cuando el mazo había pasado las pruebas correspondientes era

empaquetado y enviado al área de montaje.

Page 37: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

5 BÚSQUEDA DE DEPENDENCIAS FUNCIONALES

5.1 Búsqueda del diagrama E-R

El punto de partida lógico para obtener una base de datos coherente será buscar las entidades relacionales. En la

siguiente figura se muestra el diagrama E-R que se obtuvo para nuestra BBDD.

Figura 5-1. Árbol entidad-relación

Page 38: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Búsqueda de dependencias funcionales

18

xviii

5.2 Cumplimiento de las formas normales

Otra parte importante de la creación de nuestra base de datos fue la comprobación de que cumplía las formas

normales. En este apartado revisaremos las 3 formas normales más esenciales.

5.2.1 Primera forma normal

Una relación está en la primera forma normal si los dominios en los que se definen los atributos son escalares.

En la comprobación de esta norma encontramos los siguientes problemas:

A) Fechas: El sistema usa las fechas exclusivamente como valor individual, por lo tanto será escalar. En nuestra

base de datos usaremos fechas “enteras”, es decir, no usaremos valores de día, mes y año por separado.

B) Códigos: Hay empresas que usan valores de referencia que son la suma de varios campos. Nuestra base de

datos no tiene este tipo de campos ya que incumplen la primera forma normal.

5.2.2 Segunda forma normal

Una relación está en la segunda forma normal, si está en la primera, y además, todos sus atributos dependen de

la clave candidata completa. Esta forma trata de no representar dos entidades distintas en una única relación.

Por ejemplo, cometeríamos un error de forma si pusiéramos en la misma relación Mazos y Proveedores, ya que

no hay una relación directa.

Figura 5-2. Ejemplo de fallo en segunda forma normal.

Page 39: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

5.2.3 Tercera forma normal

Una relación está en la tercera forma normal, si está en la segunda, y además, no hay dependencias funcionales

transitivas. Lo que se consigue cumpliendo esta norma es no tener información redundante.

5.3 Reducción de dependencias funcionales

5.3.1 Descripción de las entidades y atributos.

Para definir las dependencias funcionales, en primer lugar vamos a describir cada entidad y atributos existentes.

Le asignaremos una letra para referirnos a cada una más adelante.

A) ITEM: Número único que identifica un mazo concreto en la cadena de montaje

B) P/N: Código que identifica el tipo de mazo que se quiere fabricar

C) Comercial: Identifica al que pertenece el comercial que pide el mazo

D) Id_Avión: Identifica el avión para el cual va destinado el mazo.

F) Pasa_P1: Nos indica un mazo concreto pasó la prueba 1.

G) Pasa_P2: Nos indica un mazo concreto pasó la prueba 2.

H) Pasa_P3: Nos indica un mazo concreto pasó la prueba 3.

I) Fecha_Entrada: Nos indica cuando se solicitó un mazo concreto.

J) Fecha_Salida: Indica el día que el mazo tiene que estar listo.

K) Pulsos_Consumidos: Indica los pulsos que lleva en fabricación un mazo.

L) Motivo_Parada: Indica el motivo de la parada de fabricación de un mazo.

M) Área_de_Fabricación: Define el área donde se fabrica el mazo.

N) Pasar_P1: Nos indica si el tipo de mazo tiene que pasar la prueba 1.

O) Pasar_P2: Nos indica si el tipo de mazo tiene que pasar la prueba 2.

P) Pasar_P3: Nos indica si el tipo de mazo tiene que pasar la prueba 3.

Q) Longitud: Indica la longitud de un tipo de mazo

R) En_Fabricación: Indica si un mazo ha entrado en el proceso de fabricación.

S) Id_Cable: Indica el tipo de cable dentro del almacén.

T) Id_Proveedor: Nos indican los proveedores de un cable.

U) Longitud_Stock: Define la cantidad de un tipo de cable que hay en stock en el almacén.

V) Tipo_Mesa: Indica que mesa está asignada a la fabricación de un mazo.

X) Tlf_Provedor: Teléfono proveedor

Y) Conectores: Atributo de los cables. Identifica el tipo de conectores para cada Id_Cable.

Z) Motivo_Parada_P1: Atributo que nos indica el motivo por el cual está parada la prueba 1.

AA) Motivo_Parada_P2: Atributo que nos indica el motivo por el cual está parada la prueba 2.

AB) Motivo_Parada_P3: Atributo que nos indica el motivo por el cual está parada la prueba 3.

Page 40: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Búsqueda de dependencias funcionales

20

xx

5.3.2 Esquema de relaciones

Un esquema de relaciones es una estructura abstracta que define una relación a través de un nombre, un conjunto

de atributos y un conjunto de restricciones que caracterizan a esa relación.

Seguiremos la notación: r=R(T,L), donde:

R es el nombre de la relación r.

T es el conjunto de atributos que definen a R. T=(T1,T2,T3)

L es el conjunto de restricciones que la caracterizan: L= (L1,L2,L3)

Aplicadas a nuestra base de datos obtenemos:

a) Mazo_Concreto (ITEM, Comercial, Id_Avión, En_Fabricación, Pulsos_Consumidos, Motivo_Parada

Fecha_Entrada, Fecha_Salida, Pasa_P1, Pasa_P2, Pasa_P3, Motivo_Parada_P1, Motivo_Parada_P2,

Motivo_Parada_P3)

L1 = ITEM (Comercial, Id_Avión, En_Fabricación, Pulsos_Consumidos, Motivo_Parada

Fecha_Entrada, Fecha_Salida, Pasa_P1, Pasa_P2, Pasa_P3)

b) Es_de_tipo (ITEM, P/N)

ÍTEM será la clave externa para la entidad “Mazo_Concreto”.

P/N será la clave externa para la entidad “Tipo_Mazo”.

c) Tipo_Mazo (P/N, Área_Fabricación, Tipo_mesa, Fecha_Entrada, Fecha_Salida, Pulsos_Necesarios,

Longitud, Id_Avión, Pasar_P1, Pasar_P2, Pasar_P3)

L1= P/N (Área_Fabricación, Tipo_mesa, Fecha_Entrada, Fecha_Salida, Pulsos_Necesarios, Longitud,

Id_Avión, Pasar_P1, Pasar_P2, Pasar_P3)

d) Contiene ( P/N, Id_Cable )

P/N será la clave externa para la entidad “Mazo_Concreto”.

Id_Cable será la clave externa para la entidad “Cables”.

e) Cables ( Id_Cable, Longitud_Stock, Conectores )

L1= Id_Cable (Longitud_Stock, Conectores)

f) Suministra ( Id_Proveedor, Id_Cable )

Id_Proveedor será la clave externa para la entidad “Cables”.

Id_Cable será la clave externa para la entidad “Proveedor”.

Page 41: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

g) Proveedor ( Id_Proveedor, Teléfono, Dirrección; Nombre_Proveedor )

L1= Id_Proveedor (Nombre_Proveedor, Telefono, Dirrección)

5.3.3 Asignación de relaciones

Con las entidades y atributos bien definidos pasamos a la asignación de las relaciones.

A, C, D, F, G, H, I, J, L,R,V, Z, AA, AB: Si sabemos el ITEM podremos saber: (Comercial, Id_Avión,

En_Fabricación, Pulsos_Consumidos, Motivo_Parada Fecha_Entrada, Fecha_Salida, Pasa_P1, Pasa_P2,

Pasa_P3, Tipo_Mesa, Motivo_Parada_P1, Motivo_Parada_P2, Motivo_Parada_P3)

BN, O, P, Q, K, M : Sabiendo el P/N de un mazo, sabremos: ( Área_Fabricación, Tipo_mesa, Fecha_Entrada,

Fecha_Salida, Pulsos_Necesarios, Longitud, Id_Avión, Pasar_P1, Pasar_P2, Pasar_P3)

AB: Con el ITEM, sabremos su P/N.

BS: Con el P/N conoceremos su Id_Cable asociados.

SQ, Y: Sabiendo el Id_cable podremos sacar Longitud_Stock y sus conectores.

TS : Sabiendo el Id_proveedor podemos conocer los cables que suministra.

T X : Id_proveedor define el teléfono del proveedor.

Finalmente nos quedaría para nuestra base de datos.

F(A C, D, F, G, H, I, J, L ,V, Z, AA, AB BN, O, P, Q, K, M AB BS SQ TS T X)

5.3.4 Reducción de relaciones

Sea un conjunto de dependencias funcionales F, podemos hallar el cierre de F, denominado F+. El cierre de F

es el conjunto de todas las dependencias funcionales implicadas lógicamente en F.

Dado F, se puede calcular F+ a partir de la definición formal de dependencia funcional.

Para poder reducir correctamente F aplicaremos las 3 reglas o axiomas de Armstrong, en honor a la persona que

la propuso por primera vez. Estas reglas son:

h) Regla de la reflexividad: Si α es un conjunto de atributos y β contiene a α, entonces se cumple que α

β

i) Regla de la aumentatividad: Si se cumple que α β, y Ω , es un conjunto de atributos, entonces de

cumple: Ω α Ω β

j) Regla de la transitividad: Si se cumple que α β, y también se cumple que βµ, entonces se cumple

que α µ

Los axiomas de Armstrong son correctos porque no generan dependencias funcionales incorrectas. También son

completos porque dada cualquier conjunto de dependencias funcionales F puede hallar F*.

Debido a la complejidad de implementar estas reglas en nuestra F, también usaremos reglas simplificadas. Con

estas reglas se hallaría también F* de una forma más fácil:

Page 42: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Búsqueda de dependencias funcionales

22

xxii

k) Regla de la unión: Si α β y α Ω, entonces α βΩ

l) Regla de la descomposición: Si se cumple que α βΩ, entonces de cumple: α β y α Ω.

m) Regla de la pseudotransitividad: Si se cumple que α β y πβµ, entonces se cumple que πα µ.

Partiendo de las relaciones definidas en el apartado anterior, vamos a proceder a reducirlas con los métodos

estudiados.

F(A C, D, F, G, H, I, J, L ,V, Z, AA, AB BN, O, P, Q, K, M AB BS SQ TS T X)

Partimos con la primera relación: (A C, D, F, G, H, I, J, L,V ) y (AB)

Con la regla de la unión se nos quedará: A C, D, F, G, H, I, J, L,V, B

Podría parecer que con las dos últimas relaciones pudiésemos hacer la misma reducción. Pero no es posible

reducirlas, ya que como vemos en el diagrama E-R, la relación es de (M : N).

Aplicamos las reglas a las demás relaciones y no podemos reducirlas. Por lo tanto nuestra F definitiva será:

F(A C, D, F, G, H, I, J, L BN, O, P, Q, K, M BH HJ TX )

Estas relaciones darán lugar a 5 tablas que serán representadas en el siguiente apartado.

5.4 Creación de las tablas

A partir de las dependencias funcionales podremos sacar las tablas que constituirán nuestra base de datos. A

continuación mostraremos cuáles son esas tablas.

a) Tablas Mazo_Concreto_Tipo: Tendrá por clave principal el campo ITEM. Es una tabla extensa en

cuanto a campos. Además tendrá campos editables por los responsables de cada área como son

“Motivos_Parada” , “Pulsos_Consumidos y pruebas pasadas.

Tabla 5–1. Tabla Mazo_Concreto_Tipo.

Item Programa … Id_Avión P/N En_Fabricación

100001 Civil … 00010 35-61119-0012 Si

100002 Civil … 00010 35-61119-0013 Si

El ITEM identificará de forma univoca un registro dentro de la base de datos.

Page 43: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

L1= ITEM (P/N, Comercial, Id_Avión, En_Fabricación, Pulsos_Consumidos, Motivo_Parada

Fecha_Entrada, Fecha_Salida, Pasa_P1, Pasa_P2, Pasa_P3, Área_Fabricación, Tipo_mesa,

Fecha_Entrada, Fecha_Salida, Pulsos_Necesarios, Longitud, Pasar_P1, Pasar_P2, Pasar_P3)

b) Mazo_tipo: Tendrá por clave principal el campo P/N. En nuestra base de datos coincidirá con el archivo

Excel vinulado “Part Master”. Contendrá los parámetros de fabricación necesarios para todos los mazos

catalogados en el sistema.

L1= P/N (Área_fabricación, Pulsos, Pasar_Prueba_conectores, Pasar_Prueba_temperatura,

Pasar_Prueba_EMI, Longitud, Tipo_mesa,)

Tabla 5–2. Tabla Mazo_tipo

P/N Área_Fabricación … Pulsos Tipo_mesa

35-61119-0012 Baja … 2 A

35-61119-0013 Media … 3 C

c) Tabla Cables: Tendremos una tabla que nos indicará por cada Id_Cable, su Longitud_Stock, conectores

y grosor.

L1= Id_Cable Longitud_Stock, Conectores, grosor.

Tabla 5–3. Tabla Cables

d) Tabla Contiene: En esta tabla estarán reflejados los cables que contiene cada mazo a fabricar.

Tabla 5–4. Tabla Contiene.

P/N Id_Cables

35-61119-0001 100000

35-61119-0001 100048

Id_Cable Conectores Loguitud_ Stock Grosor

100000 A1223 100 10

100001 B4354 223 10

100002 B2333 70 20

Page 44: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Búsqueda de dependencias funcionales

24

xxiv

e) Tabla Suministra: Tendremos una tabla que relacionara los cables con sus proveedores. Tendrá 2 claves

primarias.

Tabla 5–5 Tabla Suministra.

f) Tabla Provedores: Relaciona el identificador de los proveedores con su teléfono, dirección y nombre de

la empresa.

Tabla 5-6. Tabla Proveedores

Id_Proveedores Id_Cables

AM483 100000

AM483 100001

AM484 100000

Id_Proveedor Empresa Dirección Teléfono

SE120 Ainco S.L

C/Juan Marcos 23

(Sevilla)

954545454

MA221 Bequinsa S.A

C/ España 1

(Madrid)

901123922

BC400 Electrogas S.L

C/Joan Marc 2

(Barcelona)

902123949

Page 45: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

6 DESARROLLO DE LA BASE DE DATOS

6.1 Vinculación de los archivos excel de entrada

El primer paso para la creación de nuestra base de datos será la vinculación de las hojas de datos de entrada.

Como comentamos en apartados anteriores, Access nos permite una integración rápida de las hojas de cálculo.

Selecionando la opción vinculación, tendremos una copia del archivo excel en nuestra base de datos. Cuando se

vincula a una hoja de cálculo de Excel, Access crea una nueva tabla que está vinculada a las celdas de origen.

Cualquier cambio que realice en las celdas de origen en Excel aparece en la tabla vinculada. No obstante, no

puede editar el contenido de la tabla correspondiente en Access. Si desea agregar, editar o eliminar datos, debe

realizar los cambios en el archivo de origen. Esta es la major opción para tener actualizado nuestro sistema

cuando tenemos entradas desde hojas de cálculo.

6.1.1 Pasos para la vinculación

Para crear la vinculación seguiremos unos pasos muy sencillos que mostraremos a continuación.

En el menú principal de nuestro sistema seleccionaremos la opción “Datos Externos”. Se nos abrirá un menú de

opciones, entre todas las posiblidades escogeremos “Importar Excel a Access”.

Figura 6-1. Vinculación Excel 1

Page 46: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Desarrollo de la base de datos

26

xxvi

Se nos abrirá una nueva pestaña, seleccionaremos la opción vincular. Copiaremos la ruta donde está nuestro

archivo Excel y pulsaremos el botón “Siguiente”.

Figura 6-2. Vinculación Excel 2

Se nos abrirá una nueva pestaña, en la cual, aparecerán los datos del archivo origen y la opción “Primera fila

contiene encabezados de columna”. Seleccionaremos esta opción para que nuestra tabla vinculada tenga como

nombres de campo la primera fila del archivo origen. Es importante seleccionar esta opción ya que en su defecto

no podremos operar con la tabla vinculada.

Figura 6-3. Vinculación Excel 3

Page 47: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Una vez realizadas estos pasos, sólo nos quedaría ponerle nombre a nuestra tabla vinculada. Realizaremos esta

opción con los 6 archivos excel que queremos vincular.

Existiría la opción de “Importar” los archivos excel, pero no se actualizaría nuestras tablas internas cuando las

hojas de cálculos fueran editadas. Con la opción de vinculación podremos hacer que nuestra BBDD tenga como

entradas las hojas de datos, lo cual nos proporcionará 2 sistemas para la introducción de datos de entrada: ficheros

Excel y Formularios.

En un futuro, esta opción se eliminaría y sólo se admitirán nuevos registros mediante la edición de formularios.

6.2 Creación de las tablas

Nuestra base de datos contendrá 6 tablas las cuales contendrá toda la información necesaria de nuestro sistema.

Para la creación de cada una de las tablas seguiremos los pasos comentados a continuación.

En el menú principal de nuestro sistema seleccionaremos la opción “Crear”. Se nos abrirá un menú de opciones,

entre todas las posiblidades escogeremos “Diseño Tabla”. Habría otra posibilidad que sería escoger la opción

“Tabla”, pero esta alternativa nos abriría una nueva tabla en modo “Hoja de datos”. Este modo serviría para

meter datos directamente en una tabla creada por Access por defecto. Como nosotros queremos una tabla con

unos nombres de campos concretos la mejor opción será escoger “Diseño Tabla”.

Figura 6-4. Creación de tablas

Se nos abrirá una pestaña con 3 campos: “Nombre de campo”, “Tipo de datos” y “Descripción”. En el “Nombre

de campo” podremos los nombres de los campos de nuestra tabla a crear. En “Tipo de datos” pondremos el tipo

de datos que contendrá el campo creado. Es importante definir bien el tipo de datos de cada campo para evitar

fallos en nuestro sistema. Por último seleccionaremos el campo ITEM como clave primaria de la tabla, esto se

hará haciendo doble clic en el campo en cuestión y pulsando “Agregar clave primaria”. Al guardar, cambiaremos

el nombre por defecto de la tabla.

Seguiremos este procedimiento para crear cada una de las tablas indicadas en el apartado anterior.

Page 48: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Desarrollo de la base de datos

28

xxviii

6.3 Relaciones entre tablas

Para que los datos de nuestro sistema se puedan seleccionar, encontrar y procesar de forma rápida y eficaz, es

necesario que las tablas estén relacionadas mediante claves externas. Las tablas tienen que estar relacionadas

con otras formando estructuras relacionales. La relación es una asociación establecida entre campos comunes

(claves externas) en dos tablas. Los campos que entran en relación pueden llamarse de distinta manera, pero

tienen que ser del mismo tipo de datos: númerico, texto, fecha, etc. La relación permite al motor de Acces,

encontrar datos relacionados en ambas tablas.

Para que nuestra base de datos funcione correctamente debemos definir las relaciones entre las tablas existentes.

Hemos programado el sistema para que las tablas relacionen mediante sus claves primarias y foráneas. Algunas

tablas coinciden directamente con los Excel vinculados (Contine, Suministra, Cableado, Proveedor), pero la

tabla “Mazos_conc_tipo” se crea mediante la anexión de los datos del excel de entranda

“Comerciales_vinculado” y la actualización desde la tabla vinculada “Part Master”. Es por esta razón que en el

esquema de relaciones aparece como si hubiera 7 tablas, pero realmente serían 5 tablas funcionales (Contine,

Suministra, Cableado, Proveedor y Mazo_conc_tipo)

Figura 6-5. Esquema de relaciones.

Page 49: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

6.3.1 Creación del esquema de relaciones

Para crear el esquema de relaciones en nuestro sistema necesitamos primero haber creado todas las tablas que

existirán en nuestra BBDD. En el menú principal de nuestro sistema seleccionaremos la opción “Herramientas

de base de datos”. Se nos abrirá un menú de opciones, entre todas las posiblidades escogeremos “Relaciones”.

Figura 6-6. Creación del esquema de relaciones 1.

Se nos abrirá una pestaña en gris con todas las tablas definidas en nuestro sistema. Haciendo clic en cada una de

las tablas podremos definir con que tablas está relacionadas y de que modo. Podremos, por ejemplo, exigir

integridad referencial y eliminar en cascada.

La integridad referencial es un sistema de reglas que utiliza Access para asegurarse que las relaciones entre

registros de tablas relacionadas son válidas y que no se borren o cambien datos relacionados de forma accidental.

Al exigir integridad referencial en una relación le estamos diciendo a Access que no nos deje introducir datos

en la tabla secundaria si previamente no se ha introducido el registro relacionado en la tabla principal.

Por ejemplo: Tenemos la tabla “Mazo_conc_tipo” y la tabla de “Contiene”, en la tabla “Mazo_conc_tipo” tengo

el campo P/N que me indica el tipo de mazo, las dos tablas deberían estar relacionadas por ese campo, en esta

relación de tipo uno a varios la tabla “Mazo_conc_tipo” es la tabla principal y la tabla “Contiene” la secundaria

(un mazo esta formado por varios cables). Si marcamos la casilla “Integridad Referencial”, no nos dejaría

asignar un cable a un P/N que no exista en la tabla “Mazo_conc_tipo”.

Si escogemos la opción “Integridad Referencial”, podremos seleccionar “Eliminar en cascada” y “actualizar en

cascada.

a) Actualizar en cascada los campos relacionados: Hace que cuando se cambie el valor del campo de la

tabla principal, automáticamente cambiarán los valores de sus registros relacionados en la tabla

secundaria.

b) Eliminar en cascada los registros relacionados: Cuando se elimina un registro de la tabla principal se

borrarán también los registros relacionados en la tabla secundaria.

Por ejemplo: Si borrásemos un tipo de mazo de la cadena de producción (“Part Master”),

automáticamente se borraría el registro que relacionan los Id_cables con el P/N borrado (“Contiene”)

Hemos seleccionado integridad referencial y eliminación en cascada entre las tablas “Proveedor” y

“Suministra”. Con ello conseguimos que si un proveedor deja de abastecer a la empresa, borrando el registro de

la tabla “Proveedor”, automáticamente se borrarían los registros con su Id_proveedor de la tabla “Suministra”.

Page 50: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Desarrollo de la base de datos

30

xxx

6.4 Formularios de navegación

Los formularios constituyen una herramienta para la entrada y presentación de datos en Microsoft Access.

Existen dos tipos importantes de formularios: formularios de navegación y formularios para entrada de datos.

En este apartado nos centraremos en los formularios de navegación. Estos constan de dos elementos principales:

la ventana donde se nos presentará el formulario y los controles. Toda la información del formulario está

contenida en controles. Los controles son objetos del formulario que muestran datos, realizan acciones o

decoran el formulario. Estos controles serán definidos con más detalle en el apartado siguiente.

A continuación describiremos los pasos a seguir para la creación de un formulario de navegación. El formulario

de navegación es una interfaz gráfica que permite al usuario final accede facilmente a tablas, informes y

consultas de la base de datos.

Para crear estos formularios, en el menú principal seleccionaremos la opción “Crear”. Se nos abrirá un menú de

opciones, entre todas las posiblidades escogeremos “Formulario en Blanco”.

Figura 6-7. Creación de los formularios de navegación 1.

Nos aparecerá una pestaña en gris. En la parte superior de la pantalla nos aparecerá el menú “controles”.

Haciendo clic en cada uno de sus elementos podremos incluir en nuestro formulario texto, hipervínculos o

botones a los cuales añadir macros o códigos. En el apartado siguiente describiremos con más detalle todo lo

relacionado con los controles.

Figura 6-8. Menú “Controles” de formulario de navegación.

Page 51: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Figura 6-9. Ejemplo de formulario de navegación.

Por ejemplo haciendo clic en el control “Aa” podremos añadir texto a nuestro formulario de entrada. Podemos

añadir botones seleccionando el 4º elemento del menú “Controles”. El logotipo de Airbus lo hemos introducido

mediante el método de inserción de imágenes que sería el 7º elemento del menú “Controles”.

Una vez insertado el botón le cambiaremos el nombre y lo podemos programar para que ejecute un código en

VBA o una macro que contenga varias consultas creadas en nuestra BBDD. En nuestro sistema nos hemos

decidido por que los botones ejecuten macros ya que es un método más visual y directo que el código VBA.

Para programar un botón lo seleccionamos con el botón secundario del ratón y le damos a “Propiedades”. En

esta pestaña le asignamos al recuadro “Al hacer click” una macro que hayamos creado previamente.

Figura 6-10. Programación de botones.

Como observamos en la imagen podríamos haber programado el botón para que hiciese algo al recibir enfoque

o al hacer doble clic sobre él.

Page 52: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Desarrollo de la base de datos

32

xxxii

6.4.1 Controles para el formulario navegación

Como mencionamos en el apartado anterior, los formularios de navegación constan de dos elementos

principales: la ventana donde se nos presentará el formulario y los controles. Toda la información del formulario

está contenida en controles. Los controles son objetos del formulario que muestran datos, realizan acciones o

decoran el formulario.

Algunos controles dependen de campos existentes en una tabla o consulta, permitiendo ver los datos de dichos

campos. Por ejemplo, se pueden introducir y mostrar datos utilizando cuadros de texto, cuadros de lista, botones

de opción, etc. Para mostrar imágenes utilizaremos marcos de objetos.

Otros controles muestran información que sólo está almacenada en el diseño del formulario. Por ejemplo, las

etiquetas se utilizan para mostrar textos descriptivos, y las líneas y rectángulos, para organizar los datos y añadir

una interfaz visual más atractiva al formulario.

Cuando agregamos un control a un formulario debemos decidir de dónde obtiene dicho control la información

que va a mostrar. Tenemos tres tipos de controles:

a) Dependientes. Su origen de datos es un campo de la tabla o consulta subyacente. Se utilizan para

mostrar, introducir y actualizar los valores de los campos de la base de datos.

b) Independientes. No tienen ningún origen de datos. Se utilizan para mostrar información, líneas,

rectángulos e imágenes. Por ejemplo, una etiqueta que muestra el título de un formulario o el nombre

de un campo es un control independiente.

c) Calculados. Su origen de datos es una expresión. Una expresión es una combinación de operadores,

nombres de controles, nombres de campos, funciones y constantes.

Para crear un control de cuadro de texto dependiente de un campo podemos hacerlo de dos maneras:

a) Arrastrando el campo que se desee desde la lista de campos hasta el formulario. En este caso se creará

un control de cuadro de texto dependiente del campo seleccionado. Un cuadro de texto dependiente

tiene una etiqueta adjunta que toma como título predeterminado el nombre del campo. La etiqueta

adjunta a un cuadro de texto es a su vez un control (en este caso independiente).

b) Utilizando el cuadro de herramientas (para visualizarlo accedemos a la opción barras de herramientas

del menú “Inicio”). En este caso seleccionamos el icono correpondiente en el cuadro de herramientas

y hacemos click sobre la ventana del formulario para indicar dónde ubicaremos el control. El control es

creado como un control independiente. Para convertirlo en un control dependiente basta con escribir el

nombre del campo dentro del control.

Figura 6-11. Menú “Controles”.

Para crear un control de cualquier tipo, haremos click en la herramienta correspondiente del cuadro de

herramientas. Si queremos que el control sea dependiente, arrastraremos el campo subyacente de la lista de

campos hasta la ventana del formulario. Si queremos crear un control independiente o calculado simplemente

Page 53: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

haremos click sobre el lugar correspendiente de la ventana del formulario.

Para crear un control calculado escribiremos la expresión que calcula el valor a mostrar dentro del control,

precedida del operador igual “=”. Por ejemplo, para crear un cuadro de texto que muestre la fecha actual,

escribiremos dentro del cuadro la expresión “=Fecha ()”.

Los controles tienen asociadas unas determinadas propiedades que podemos agrupar en categorías:

a) Formato: presentan características de apariencia del control. Tamaño de fuente, cursiva, etc

b) Datos: presentan características de los datos mostrados en el control. La propiedad Origen del control

muestra, en el caso de un control dependiente, el campo de la tabla o consulta subyacente. En el caso

de un control calculado, el origen del control mostrará la expresión que calcula el valor del campo,

pudiendo utilizar el generador de expresiones para construir dicha expresión.

c) Eventos. Macro o procedimiento de evento que Access ejecuta cuando ocurre un evento como hacer

click sobre el control.

d) Otras: nombre, descripción del control, orden de tabulación del control en el formulario, etc.

Figura 6-12. Ejemplo hoja de propiedades.

Al crear un control, una serie de propiedades toman valores por defecto. Podemos cambiar las propiedades

predeterminadas para un tipo de control seleccionando la opción “Propiedades” del menú. Si cambia el valor de

una propiedad del control, la propiedad del campo correspondiente no se ve afectada. Igualmente, si cambia el

valor de una propiedad de un campo en una tabla o consulta subyacente después de haber creado el formulario

que utiliza ese campo, deberemos actualizar el valor de esa propiedad en todos los controles dependientes de

dicho campo.

Se pueden cambiar simultáneamente las propiedades de varios controles utilizando la tecla mayúscula para

seleccionarlos en grupo. En la ventana de la hoja de propiedades aparecerá el texto “Selección múltiple”.

Access ofrece una gran variedad de controles que se pueden utilizar para hacer que el uso del formulario más

sencillo. Así, podemos reemplazar cuadros de texto por cuadros de lista o por grupos de opciones para

seleccionar un valor en lugar de tener que escribirlo. También podemos utilizar líneas y rectángulos para agrupar

la información relacionada o para crerar efectos especiales tales como sombreados

También tenemos la opción de crear un control “Cuadro de lista”. Un cuadro de lista es una lista de valores

entre los que se puede elegir el deseado. Una solución parecida sería crear un cuadro combinado. La diferencia

Page 54: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Desarrollo de la base de datos

34

xxxiv

fundamental es que en el caso de los cuadros combinados, se puede controlar si se permite introducir o no

valores nuevos. Las listas que aparecen en estos dos tipos de cuadros constan de una serie de filas de datos.

Cada fila puede tener una o más columnas, y las columnas pueden aparecer con o sin encabezados. En el caso

de los cuadros combinados, se puede controlar si se permite introducir o no valores nuevos.

Figura 6-13. Ejemplo de cuadro combinado.

Dependiendo de cual sea el origen de la información a mostrar en las filas de la lista, se pueden crear cinco

tipos de listas para un cuadro de lista o combinado. La propiedad “Tipo de origen de la fila” se establece de

acuerdo con el tipo de lista a mostrar:

a) Se pueden presentar las filas directamente desde cualquier tabla o consulta. En este caso elegiremos la

opción “Tabla/Consulta” como “Tipo de origen de la fila”, e indicaremos el nombre de la tabla o consulta

que contiene los datos a mostrar.

b) Se pueden presentar valores de una instrucción SELECT de SQL, en cuyo caso elegiremos

“Tabla/Consulta”, y escribiremos la consulta SQL en el origen de la fila.

c) Se pueden escribir los valores exactos, generando lo que se denomina una lista de valores. En el origen de

la fila escribiremos los valores a mostrar separados por signos de punto y coma.

d) Se puede crear una Lista de campos que muestra los nombres de los campos pertenecientes a una tabla o

consulta. En el origen de la fila escribiremos el nombre de la tabla o consulta.

e) Se pueden mostrar valores obtenidos a partir de una función de Access Basic, para lo cual debemos indicar

el nombre de la función.

Cuando deseemos mostrar múltiples columnas en una lista, debemos establecer las propiedades “Número de

columnas” y “Ancho de columnas” en la categoría Formato. La propiedad “Número de columnas” especifica

el número de columnas que mostrará la lista. Si el origen de la fila es una tabla o consulta, la lista mostrará el

número especificado de campos de dicha tabla o consulta, empezando por la izquierda. En la propiedad Ancho

de columnas se especifican las anchuras de las columnas a mostrar en la lista, separadas por punto y coma. Si

la anchura de una columna se establece a cero, ésta permanecerá oculta. Si se deja en blanco el ancho de la

columna se establecerá por defecto.

Figura 6-14. Propiedades de un cuadro de lista.

Page 55: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

En un cuadro combinado, se mostrará solamente el valor situado en la primera columna visible a la izquierda

de la lista. Cuando se despliegue la lista, se verán todas las columnas.

En un cuadro combinado se puede seleccionar un valor de la lista o bien se puede introducir un valor que no

figure en dicha lista. Si queremos asegurar que los únicos valores que se introducirán en el cuadro son los ya

incluidos en la lista, debemos establecer la propiedad “Limitar a la lista”.

Cuando se seleccione un valor de la lista, el valor del control cambiará al valor de una de las columnas de la

lista. La propiedad “Columna dependiente” sirve para especificar qué columna se utilizará para los valores del

control. Es importante resaltar que el valor mostrado por el cuadro puede ser diferente del valor que tome el

cuadro. Por ejemplo, podríamos mostrar las columnas “Id_Proveedor” y “Nombre_proveedor” de la tabla de

“Proveedores” con anchos de campo 0 cm y 3 cm, respectivamente. Sólo se visualizará la columna

Nombre_proveedor, cuando un usuario seleccione en la lista el nombre del proveedor, el sistema recogerá el

“Id_Proveedor” que es la clave primaria de la tabla. Esto sería posible si pusiéramos dependiente la columna

“Id_Proveedor”. Si hacemos que el control sea dependiente de un campo, dicho campo tomará el valor que

tome el control.

Podemos usar también las casillas de verificación. Estos tipos de controles se utilizan para definir valores

“Sí/No”. Cuando están seleccionados, estos controles indican un valor “Sí” o “Verdadero”. Cuando están

desactivados, indican un valor “No” o “Falso”. Estos controles son especialmente útiles cuando dependen de

campos “Si/No”, en cuyo caso Access almacenará el valor en la tabla subyacente y lo mostrará en el formulario.

Si los controles dependen de otro tipo de campo, Access almacenará el valor “–1” si el control está

seleccionado, y “0” si no lo está.

Figura 6-15. Campos verificación.

Otro control útil son los grupos de opciones. Estos se utilizan para presentar un conjunto limitado de

alternativas. Un grupo de opciones consta de un marco de grupo que contiene un conjunto de casillas de

verificación, botones de opción o botones de alternar. El marco dispone de una etiqueta adjunta.

Un grupo de opciones facilita la selección de un valor, puesto que permite hacer click en una de las alternativas

sin necesidad de escribir en un cuadro de texto ni desplazarse por una lista. Además, se puede establecer como

predeterminada una de las opciones para simplificar la introducción de datos. Solamente se puede seleccionar

una opción de un grupo a la vez.

Figura 6-16. Grupo de opciones.

Page 56: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Desarrollo de la base de datos

36

xxxvi

Si un grupo de opciones es dependiente de un campo, será el marco del grupo quien dependa del campo, no

cada opción individual existente dentro de él. Un marco de grupo también se puede establecer como un

objeto independiente. Cuando en un grupo de opciones se utilicen casillas de verificación, botones de opción

o botones de alternar, las propiedades de éstos serán diferentes a cuando se utilizan como controles

independientes. Cada opción de un grupo tiene su propia propiedad “Valor de la opción”, en lugar de la

propiedad “Origen del control”. El grupo de opciones tomará el valor asignado a la propiedad “Valor de la

opción” de la opción seleccionada. Si el grupo de opciones es dependiente de un campo, dicho campo tomará

el “Valor de la opción” que haya sido seleccionado. Una opción dentro de un grupo solamente podrá tomar

valores numéricos.

6.4.2 Creación de macros.

Las Macros son un método sencillo para llevar a cabo una o varias tareas básicas como abrir y cerrar formularios,

mostrar u ocultar barras de herramientas, ejecutar informes, etc. También sirven para crear métodos abreviados

de teclado y para que se ejecuten tareas automáticamente cada vez que se inicie la base de datos.

Si guardamos la Macro con el nombre de AutoExec, cada vez que se inicie la base de datos, se ejecutará

automáticamente. Esto es debido a que Access al arrancar busca una macro con ese nombre, si la encuentra será

el primer objeto que se ejecute antes de lanzar cualquier otro. Esta opción es muy socorrida a la hora de efectuar

comprobaciones o lanzar procesos antes de que el usuario empiece a trabajar con la base de datos. Nosotros

vamos a crear el botón actualización para ejecutar la macro de mismo nombre. Lo hacemos así para que el

usuario final tenga la opción de actualizar cuando crea conveniente el sistema.

Para definir una macro, indicaremos una acción o conjunto de acciones que automatizarán un proceso. Cuando

ejecutemos una Macro, el proceso se realizará automáticamente sin necesidad, en principio, de interacción por

nuestra parte. Podremos ejecutar consultas de forma secuencial.

Para crear una macro nos vamos al menú “inicio” y seleccionamos el botón “Macro”. Nos aparecerá una pestaña

como la siguiente.

Figura 6-17. Creación de macros.

Page 57: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Añadiremos en el campo “Acción” el nombre de las consultas que queramos que ejecute nuestra macro. En

argumentos le daramos los parámetros necesarios para que esa consulta se ejecute con éxito. Una vez guardada

el aspecto de una macro será el siguiente:

Figura 6-18. Creación de macros 2.

Esta macro estaría programada para el botón actualizar de la base de datos. La función de esta macro sería la de

anexar todos los registros nuevos en el Excel de entrada de los comerciales, y a continuación, actualizar la tabla

Mazo_conc_tipo” con los parámetros de fabricación de cada mazo descritos en la hoja de cálculo “Part Master”.

Las consultas usadas serán explicadas con más detenimiento en los apartados posteriores.

6.4.3 Creación de consultas

En una base de datos bien diseñada, los datos que se quieren plasmar en un formulario o informe suelen estar

repartidos en varias tablas. Con una consulta, se puede extraer información de diversas tablas y ensamblarla para

mostrarla en el formulario o informe. Una consulta puede servir para pedir resultados de datos de la base de

datos, para llevar a cabo una acción relativa a los datos o para ambas cosas. También sirve para obtener una

respuesta a una pregunta sencilla, efectuar cálculos, combinar datos de distintas tablas o agregar, cambiar o

eliminar datos de una base de datos. Dada su enorme versatilidad, existen muchos tipos de consulta y el tipo que

se cree depende de la tarea que quiera realizarse.

Para la creación de una consulta, en el menú principal de nuestro sistema seleccionaremos la opción “Crear”. Se

nos abrirá un menú de opciones, entre todas las posiblidades escogeremos “Diseño de consulta”. Tendremos 2

opciones;

a) Vista SQL: Si creamos la consulta en esta vista sólo tendremos que introducir el código que queremos

que se ejecute al llamarla. Por ejemplo si queremos insertar registros en la tabla Mazo_conc_tipo el

código podría ser:

INSERT INTO Mazo_conc_tipo (Item, Comerciales, Id_avión, [P/N], Fecha_entrada, Fecha_salida)

SELECT Item, Comercial, Avión, [P/N], [Fecha pedido], [Fecha necesidad]

FROM Comerciales_vinculada;

Page 58: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Desarrollo de la base de datos

38

xxxviii

Vista Diseño: Es una forma visual de crear una consulta, al seleccionar este método se nos abrirá una

pestaña vacía. Podremos incluir las tablas a las que queremos hacer la consulta haciendo clic en el botón

derecho y seleccionando “Mostrar Tabla”. Para hacer la misma consulta que la del ejemplo anterior

tendríamos que mostrar la tabla “Mazo_conc_tipo” y la tabla “Comerciales_vinculada”. Hacemos clic

en los campos de la tabla “Comerciales_vinculada” que queremos insertar. En la parte inferior, en los

campos “Anexar a” tendremos que poner los campos de la tabla “Comerciales_vinculada” que

queramos que reciban las campos a insertar. Al ser clave primaria el ITEM los registros no se

duplcarían. Los dos métodos de crear una consulta son equivalentes. Podríamos decir que el segundo

método es una forma visual de ver el código SQL. Finalmente el aspecto final de la consulta será:

Figura 6-19. Ejemplo de consulta.

6.5 Formularios para la entrada de datos.

En el apartado anterior hemos descrito la creación de los formularios de navegación. Estos fomularios son usados

como interfaz gráfica, pero no permiten la insercción de datos en el sistema. Para este fin tenemos los formularios

para la entrada de datos. La idea es tener un formulario con campos editables. Una vez rellenos estos campos y

dandole click al botón guardar, los registros se guardarían en una tabla dentro de nuestro sistema.

Nuestra BBDD tiene implementado un formulario de estas características para la entrada de registros por parte

de los comerciales. El fin que sigue la implementación de este método es la supresión final de los archivos excel

de entrada.

Para la creación de este tipo de formularios seguimos los pasos descritos a continuación:

En el menú principal seleccionaremos la opción “Crear”. Se nos abrirá un menú de opciones, entre todas las

posiblidades escogeremos “Diseño del formulario”.

Figura 6-20. Creación de los formularios de entrada de datos 1.

Page 59: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

En esta ocasión nos aparecerá una pestaña a cuadros con el nombre genérico “Formulario1”. Estos cuadros

sirven para cuadrar los campos que introduzcamos en el formulario. En la parte derecha de la pestaña nos aparece

el menú “Propiedades del formulario”. En este menú tendremos que escoger el origen de los datos del

formulario. En este caso seleccionamos la tabla “Mazo_conc_tipo”.

Figura 6-21. Creación de los formularios de entrada de datos 3.

Con esta acción hemos conseguido que nuestro formulario esté asociado a esta tabla. Cuando un comercial

introduzca un registro en este formulario, sería equivalente a que lo introdujese en la hoja de datos Excel.

Como no queremos que el formulario muestre todos los campos de la tabla, escogeremos los campos que

podrán introducirse manualmente. Seleccionaremos los mismos campos que los de la hoja de cálculo

“Comerciales”.

Para formar nuestro formulario buscamos el campo “Mostrar campos existentes” del menú herramientas. Se

nos mostrará un desplegable con todos los campos de la tabla origen del formulario.

Figura 6-22. Formulario de entrada de datos. Menú herramientas.

Page 60: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Desarrollo de la base de datos

40

xl

Figura 6-23. Formulario de entrada de datos. Lista de campos.

De la lista escogemos los campos “ITEM”,”P/N”,”Comerciales”,”Fecha_entrada”,”Fecha_salida”.

Finalmente crearemos un botón que estará programado para ejecutar una sentencia “INSERT INTO” a la tabla

“Mazo_conc_tipo”. Para crear el botón seleccionaremos el 4º elemento del menó controles. Insertaremos el

botón en la parte inferior del formulario e insertaremos una imagen que se asocie a guardar.

Figura 6-24. Formulario de entrada de datos. Menú controles.

Para que el botón ejecute la inserción el cógido usado será el siguiente:

INSERT INTO Mazo_conc_tipo (Item, Comerciales, Id_avión, [P/N], Fecha_entrada, Fecha_salida )

SELECT Item, Comercial, Avión, [P/N], [Fecha pedido], [Fecha necesidad]

FROM Formulario_Comerciales;

Nuestro formulario “Comerciales” finalmente estaría compuesto de 5 campos editables y de un botón de

guardado. Al introducir datos, el formulario comprobará si estos datos cumplen las características del campo

donde van a ser insertados. Esto lo haremos configurando la hoja de propiedades de cada campo:

a) ITEM: Es un campo numérico sin cifras decimales

b) Comerciales: Es un campo texto de tres carácteres de longitud.

c) Fecha_salida: Será un campo fecha corta y tiene que ser menor que el campo “Fecha_entrada”.

d) Fecha_entrada: Será un campo fecha corta y su valor tiene que ser mayor que “Fecha_salida”.

Page 61: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Figura 6-25. Formulario de entrada de datos. Configuración de campos.

Cuando el comercial vaya a introducir los datos, sólo se insertarán si cumplen todos los requisitos. Cuando le de

al botón de guardar los datos serán anexados a la tabla “Mazo_conc_tipo”. Se accederá a este formulario desde

el formulario “Inicio” seleccionando el botón “Formulario Comerciales”. La siguiente figura muestra el acabado

la vista final del formulario:

Figura 6-26. Formulario “Comerciales”.

Page 62: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Desarrollo de la base de datos

42

xlii

Si contiene datos de más de una tabla, Tenemos dos métodos para la construcción de este tipo de formularios:

a) Crear una consulta que combine datos de varias tablas y después basar un formulario en esa consulta.

b) Usar un subformulario, que es simplemente un método para introducir un formulario dentro de otro

formulario. El formulario que es incluido en el formulario principal recibe el nombre de subformulario.

En este método, el formulario principal y el subformulario deben estar vinculados, de modo que el

subformulario sólo mostrará los registros que estén relacionados con los del formulario principal. El uso de

subformularios es muy aconsejable para mostrar datos almacenados en tablas o en consultas con una relación

de 1-N, pero, debemos ser cautos a la hora del diseño de las tablas o consultas subyacentes. Para la construcción

de estos subformularios debemos tener en cuenta que:

a) Las tablas tienen una relación 1-N. El formulario principal presenta la tabla con cardinalidad (1) y el

subformulario la tabla con cardinalidad (N).

b) Hay que establecer el campo común sobre el que se puedan vincular.

c) Si usamos un vínculo que no es clave principal ni externa puede ser interesante indexarlo.

Para crear un formulario principal y un subformulario, debemos diseñar ambos por separado. Después

insertaremos el subformulario en el formulario principal. Un subformulario es un formulario independiente, es

decir, se diseña y se guarda exactamente de la misma forma que cualquier otro formulario. Después se puede

agregar a un formulario principal.

Figura 6-27. Ejemplo uso de subformulario.

Page 63: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Para crear el formulario de la figura anterior hemos creado un formulario con los datos de la tabla “Contiene”.

Esta tabla representa el identificador de los cables en relación a sus proveedores. De la tabla “Contiene”

mostramos sólo el campo “Id_Cable”. Creamos un subformulario de la tabla “Proveedores”, cuya tabla

contiene el identificador y los datos de cada proveedor. Unimos el formulario principal con el subformulario

por medio del campo “Id_Cable”. Cuando accedemos al formulario principal nos aparecerá la lista de todos

los campos “Id_Cable”, y seleccionando uno de ellos nos aparecerá un desplegable con los datos de los

proveedores de ese cable.

6.6 Generación de informes

Los informes constituyen un recurso específico para la representación de información por pantalla de nuestra

base de datos. El origen de estos informes pueden ser una tabla o consulta. Además, es posible incluir en el

informe elementos gráficos como tablas o esquemas para hacerlo mas atractivo. Hay dos formas de crear un

informe: mediante un asistente de creación o seleccionando un “Informe nuevo”. Nosotros usaremos la opción

“Informe Nuevo”, ya que nos permite crear un informe desde el inicio.

Para mostrar como se genera un informe, usaremos como ejemplo el “Informe Pruebas” de nuestra

BBDD.Este informe se basa en la consulta “Pruebas”, la cual, selecciona los registros que tienen el campo

“Pulsos_Necesarios” igual al campo “Pulsos_Consumidos”. Estos serán los mazos terminados que se pasan a

pruebas.

Figura 6-28. Consulta “Pruebas”

Con la consulta seleccionada nos dirigimos al menú inicio y seleccionamos la opción “Informe”. Se nos

generará una pestaña nueva dividida en 4 secciones: título, encabezado de página, detalle, pié de página y pié

de informe.

a) Título: contendrá la información que se indica únicamente al principio del informe.

b) Encabezado de página: contendrá la información que se repetirá al principio de cada página, como los

encabezados de los registros.

c) Detalle: estará formado por los datos seleccionados en la consulta origen.

d) Pié de informe: contendrá la información que se repetirá al final de cada página, como la fecha del

informe o el número de página,

Page 64: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Desarrollo de la base de datos

44

xliv

Figura 6-29. Informe “Pruebas”

Para que nuestro informe muestre los datos de la consulta “Pruebas”, debemos acceder a la “Hoja de

Propiedades”. Esta hoja de propiedades se podrá seleccionar en el menú herramientas.

Figura 6-30. Menú herramientas.

Una vez seleccionado, se nos abrirá una pestaña con las propiedades del informe. En el campo “Origen de

datos” deberemos escoger la consulta “Pruebas”.

Figura 6-31. Creación de informes “Hojas de propiedades”.

Page 65: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Como no queremos que el informe muestre todos los campos de la consulta, escogeremos los campos de manera

manual. Para formar nuestro informe buscamos el campo “Mostrar campos existentes” del menú herramientas.

Se nos mostrará un desplegable con todos los campos de la consulta origen del infome.

Figura 6-32. Creación de informes. Menú herramientas.

Figura 6-33. Creación de informes. Lista de campos.

De la lista escogemos los campos relacionados con las pruebas a pasar además de la clave principal ITEM y el

P/N. Con estos campos cualquier operario del área de pruebas podría sacar el informe y comprobar el estado

real del área en cuestión.

Page 66: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Desarrollo de la base de datos

46

xlvi

Figura 6-34. Informe “Pruebas”

Page 67: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

7 IMPLEMENTACIÓN DE LA BASE DE DATOS

En este apartado abordaremos con más profundidad la creación de la base de datos. Lo primero que veremos

será la construcción de los formularios, en los cuales, tendremos botones configurados para el acceso a informes

y otros formularios.

7.1 Formularios de navegación

7.1.1 Formulario “Control de acceso”

El primer formulario que nos aparecerá nada más abrir nuestra base de datos será el llamado “Formulario Control

de Acceso”.Sólo podrán acceder a la base de datos los usuarios registrados, el sistema no permitirá un acceso

libre a todos los usuarios. Este formulario se programará para que pida un nombre de usuario y una contraseña.

Si la contraseña no es correcta, nos aparecerá un mensaje por pantalla “La contraseña introducida no es correcta”.

También se programará para que de error cuando no se introduzca el campo usuario o el campo nombre. En este

caso el mensaje de error será “Por favor, rellene los campos usuario y contraseña”.

El aspecto de este formulario será el siguiente:

Figura 7-1. Formulario “Control de Acceso”

Page 68: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Implementación de la base de datos

48

xlviii

Para simplificar el código crearemos la tabla “Usuarios”. En esta tabla se introducirán todos los usuarios que

puedan acceder a la base de datos, y sus contraseñas. Nuestro código buscará si los datos introducidos

corresponden a un registro de la tabla. Si es así se abrirá el menú “Inicio”, si no coincide le saldrá por pantalla

el mensaje “Los datos introducidos no son correctos”

Figura 7-2. Formulario “Control de Acceso”. Tabla Usuarios

El botón “Acceso” estará programado para que ejecute el siguiente código:

Page 69: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Explicaremos las partes más importantes del código. En el “Anexo 1” tendremos un manual más detallado de

VBA que podemos consultar.

Declaración de variables

--------------------------------------------------------------------------------------------------------------------------------------

Dim sSQL As String ‘Declaración de una variable string

Dim rs As Recordset ‘Declaración de objeto para representar selecciones de tablas

Dim db As DAO.Database ‘ Declaración de objeto para acceder a una base de datos

--------------------------------------------------------------------------------------------------------------------------------------

Código VBA

--------------------------------------------------------------------------------------------------------------------------------------

‘ Comprobación de los datos introducidos

If Nz(Me.txtNombre.Value,””) =”” Or Nz(Me.txtContraseña.Value ,””) =”” Then

‘ Comprobamos que Nombre y contraseña están rellenos

MsgBox ("Por favor rellene Usuario y contraseña.") ‘Muestra mensaje por pantalla

Else

‘ Consulta select a la tabla Usuario buscando el registro usuario y contraseña

sSQL = "SELECT * from Usuarios " ‘Código SQL

sSQL = sSQL & " WHERE Nombre=Me.txtNombre.value AND Contraseña=Me.txtContraseña.value"

Set db = CurrentDb() ' origen en base de datos actual

Set rs = db.OpenRecordset(sSQL) ' sirve para ejecutar sentencias de selección

If rs.RecordCount > 0 Then ‘Comprobamos si existe el registro

.OpenForm ("Pantalla de Inicio") 'si la consulta devuelve resultados abro el formulario inicio

Else

MsgBox ("Los datos introducidos no son correctos.") ‘Muestra mensaje por pantalla

End If

End If

-------------------------------------------------------------------------------------------------------------------------------

Page 70: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Implementación de la base de datos

50

l

A continuación mostraremos las pruebas realizadas para observar el correcto funcionamiento del código.

a) Usuario o contraseña no introducidos: Alguno de los campos no se han introducido. Si es así, Access

mostrará un mensaje por pantalla.

Figura 7-3. Formulario “Control de Acceso”. Mensaje “Datos no introducidos”

b) Usuario o contraseña incorrectos: Ocurre cuando no aparece el registro “Contraseña” más “Usuario en

la tabla “Usuario”. Nos mostraría un mensaje de error por pantalla.

Figura 7-4. Formulario “Control de Acceso”. Mensaje “Datos incorrectos”

c) Datos correctos: Si los datos introducidos fueran correctos, se accederá al formulario “Inicio”. Desde

este formulario se podrá acceder a todos los informes y formularos de nuestra base de datos. En el

siguiente apartado describiremos la programación de dicho formulario.

Page 71: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

7.1.2 Formulario ”Inicio”

Una vez hayamos conseguido pasar el control de acceso, lo primero que veremos será el formulario de inicio.

Este formulario está compuesto por 4 botones que nos llevan a otros formularios, y un quinto botón de

actualización. El botón de actualización está programado para ejecutar una macro que actualiza nuestra BBDD.

Figura 7-5. Formulario “Inicio”

A continuación abordaremos la utilidad de cada uno de los botones de este formulario.

Botón de actualización: Es una parte vital de nuestra base de datos. Esta programado para ejecutar una serie de

consultas que harán que nuestra base de datos esté actualizada. Hemos optado por usar macros porque nos

proporcionaba un método visual y de mejor comprensión que el simple código VBA.

Figura 7-6. Macro “Actualización”

Page 72: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Implementación de la base de datos

52

lii

Consulta “Anexar Comerciales_vinculada”: El objetivo de esta consulta es pasar todos los registros del Excel

de comerciales vinculado a la tabla llamada “Mazo_conc_tipo”. El código usado para crear la consulta es el

siguiente:

INSERT INTO Mazo_conc_tipo (Item, Comerciales, Id_avión, [P/N], Fecha_entrada, Fecha_salida)

SELECT Item, Comercial, Avión, [P/N], [Fecha pedido], [Fecha necesidad]

FROM Comerciales_vinculada;

Figura 7-7. Consulta “Anexar Comerciales_vinculada”.

Consulta “Actualiza Mazo_conc_tipo”: la función de esta consulta es actualizar los párametros de fabricación

de los mazos de la tabla “Mazo_conc_tipo”. Estos parámetros están definidos en la tabla vinulada “Part Master”.

El código utilizado es el siguiente:

UPDATE Mazo_conc_tipo INNER JOIN [Part Master] ON Mazo_conc_tipo.[P/N] = [Part Master].[P/N] SET

Mazo_conc_tipo.Área_fabricación = [Part Master].[Área de fabricación], Mazo_conc_tipo.Longitud = [Part

Master].[Longitud], Mazo_conc_tipo.Tipo_Mesa = [Part Master].[Tipo de Mesa]

WHERE (((Mazo_conc_tipo.[P/N])=[Part Master].[P/N]));

Page 73: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

En vita diseño la consulta quedaría:

Figura 7-8. Consulta “Actualiza Mazo_conc_tipo”.

Los 4 botones superiores del formulario “Inicio” están programados para ejecutar una macro. Esta macro abré

el formulario de navegación con el mismo nombre del botón.

Figura 7-9. Macro botón “Informes de Incidencias”

Page 74: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Implementación de la base de datos

54

liv

7.1.3 Formulario “Planificación de Áreas”

Este formulario está compuesto por 3 botones para la planificación de cada área, y otros 2 para informes

asociados. Cada uno estará ligado a un formulario distinto. En la figura inferior vemos la vista de este formulario.

Figura 7-10. Formulario “Planificación de Áreas”

Botones de Planificación de áreas: cada uno abre un formulario editable en el cual se pueden ver los P/N

asignados a su área. El responsable de cada área será el encargado de editar la información. Estos formularios

están formados por una consulta que muestra los mazos de su área y los campos “Pulsos consumidos” y “Motivo

Parada” de “Mazo_conc_tipo”. Como ejemplo podemos ver el formulario de carga baja. Este formulario se basa

en la consulta “Carga Baja” que se muestra en la siguiente figura:

Figura 7-11. Consulta “Carga Baja”

Page 75: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

En este caso sólo se mostraran en el formulario los mazos con el campo “Área de Fabricación” igual a “Baja”.

Esta consulta tiene asociadas los campos de la tabla “Pulsos Consumidos” y “Motivos Parada”. El formulario

hace la consulta y muestra los datos no editables de la consulta y los campos editables de la tabla “General”. En

la siguiente figura muestra un detalle del formulario “Carga Baja”.

Figura 7-12. Formulario “Carga Baja”

Al igual que este formulario tendremos tres, uno por cada área de fabricación. La diferencia entre las consultas

estará en los datos que muestra cada consulta. En la consulta “Carga Media” mostrara los registros cuyo campo

“Área de fabricación” sea “Media”. Igualmente para “Carga Alta” buscando los mazos con “Área de

fabricación” igual a “Alta”

Informe “Mazos sin fabricar”: Este informe será accesible a los responsables de área y a control de producción.

Nos indicará que están esperando a que se inicie su fabricación. El criterio seleccionado en la consulta es que el

campo “En_fabricación” sea distinto de “Si”. Este informe es muy útil para saber que mazos se han quedado

atascados sin iniciar su fabricación.

Figura 7-13. Informe “P/N sin pulsos consumidos Carga Media”

Page 76: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Implementación de la base de datos

56

lvi

Este informe está basado en la consulta de mismo nombre. Esta consulta muestra los registros que tienen como

campo “En_Fabricación” algo distinto de “Si”.

El código usado será el siguiente:

SELECT ITEM, [P/N], Fecha_entrada, Fecha_salida, En_fabricación

FROM Mazo_conc_tipo

WHERE (((Mazo_conc_tipo.En_fabricación)<>"Si"));

A continuación mostramos una imagen de la consulta asociada:

Figura 7-14. Informe “Mazos sin fabricar”

Informe “Órdenes paradas”: La tabla “Mazo_conc_tipo” tendrá un campo editable “Motivo_Parada”. El

responsable de cada área podrá poner el motivo por el cual un mazo no se puede terminar, por ejemplo: falta de

material, falta documentación, etc. En este informe se mostrarán todos aquellos mazos que tengan el campo

“Parada” relleno. En la figura inferior se muestra un ejemplo.

Figura 7-15. Informe “Órdenes paradas”

Page 77: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Este informe tiene una consulta asociada del mismo nombre. Esta consulta muestra los registros que tienen el

campo “Motivo_Parada” relleno.

SELECT ITEM, [P/N], Área_fabricación, Motivo_parada

FROM Mazo_conc_tipo WHERE (((Mazo_conc_tipo.Motivo_parada) Is Not Null));

La imagen de la consulta asociada será la siguiente:

Figura 7-16. Consulta “Órdenes paradas”

Page 78: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Implementación de la base de datos

58

lviii

7.1.4 Formulario “Informes de seguimiento”

Este formulario está compuesto por 3 botones que generan informes de nuestra base de datos.

Figura 7-17. Formulario “Informes de seguimiento”

Informe Pruebas: Este informe nos mostrará las pruebas de los mazos que ya han sido fabricados. Para saber

que mazos cumplen esta condición comprobaremos que el campo “Pulsos Consumidos” igual al campo “Pulsos

Necesarios”.

Figura 7-18. Informe “Pruebas”

Page 79: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Este informe tiene una consulta asociada del mismo nombre. Esta consulta muestra los registros que tienen el

campo “Pulsos Consumidos” igual al campo “Pulsos Necesarios”. El código SQL asociado es:

SELECT ITEM, [P/N], Pasar_prueba_conectores, Pasa_prueba_conectores, Pasar_prueba_temperatura,

Pasa_prueba_temperatura, Pasa_prueba_EMI, Pasar_prueba_EMI

FROM Mazo_conc_tipo

WHERE (((Mazo_conc_tipo.Pulsos_consumidos) = [Mazo_conc_tipo].[Pulsos_necesarios]))

Figura 7-19. Consulta “Pruebas”

Este informe nos muestra la tabla Pruebas”. Esta tabla se construye ejecutando la consulta “Anexar a Pruebas”,

que anexa a pruebas los registros de tabla general que tienen el campo “Pulsos Consumidos” igual al campo

“Pulsos” de la tabla Part Master. Para saber más de esta consulta está más detallada en el botón de actualización

del “Formulario Inicio”

Informe “Motivos_parada_pruebas”: Este informe nos muestra los motivos por los que un mazo no pasa las

pruebas. Está basado en la consulta del mismo nombre. Muestra los mazos que tienen algún campo de

Pasa_prueba_X igual a “No”. El código utilizado será el siguiente:

SELECT [ITEM], [Motivo_parada_conectores], [Motivo_parada_temperatura], [Motivo_parada_EMI],

Pasar_prueba_temperatura

FROM Mazo_conc_tipo

WHERE ((( Pasa_prueba_conectores)="No")) OR ((( Pasa_prueba_temperatura)="No")) OR

((( Pasa_prueba_EMI)="No"))

GROUP BY [ITEM], [Motivo_parada_conectores], Pasar_prueba_temperatura;

En vista diseño vemos que esta consulta selecciona los mazos desde la tabla “Mazo_conc_tipo”. La condición

para que un registro sea seleccionado es que tenga un campo “Pasa_prueba_X” igual a “No”.

Page 80: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Implementación de la base de datos

60

lx

Figura 7-20. Consulta “Motivo_fallos_prueba”

Para mostrar esta consulta de forma adecuada, hemos creado un informe a partir de ella. Este informe muestra

los mismos campos de la consulta. Además, le hemos agragado un campo calculado “Cuenta” al final del

informe. Nos devuelve el número de mazos que están parados en el área de pruebas.

Figura 7-21. Consulta “Motivo_fallos_prueba”

Page 81: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Informe “Mazos sin stock”: Nos muestra los P/N que no se puede fabricar ningún mazo. Este informe se basa

en la consulta del mismo nombre. En esta consulta recoremos todos los P/N y mostraremos aquellos cuyos cables

no lleguen a la longitud mínima en el almacen.

Figura 7-22. Consulta “Mazos sin stock”

El código usado para esta consulta será el siguiente:

SELECT [Part Master].[P/N], [Part Master].Longitud

FROM ([Part Master] INNER JOIN Contiene ON [Part Master].[P/N] = Contiene.[P/N]) INNER JOIN

Cableado ON Contiene.Id_Cables = Cableado.Id_Cable

WHERE (((Cableado.Cantidad)<[Part Master].[Longitud]))

GROUP BY [Part Master].[P/N], [Part Master].Longitud;

Figura 7-23. Informe “Mazos sin stock”

Page 82: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Implementación de la base de datos

62

lxii

Informe “Saturación de tipo de mesa por área”: nos indicará cuantos mazos en cada área están asignados a una

mesa concreta. Usamos una consulta de referencias cruzadas. El encabezado de columnas serán los tipos de

mesa, y los encabezados de filas las 3 áreas.

En la siguiente figura se muestra un ejemplo del informe.

Figura 7-24. Informe “Saturación de tipo de mesa por área”

A continuación se muestra el detalle de la consulta asociada a este informe:

Figura 7-25. Consulta “Saturación de tipo de mesa por área”

El código usado es el siguiente:

TRANSFORM Count (General.Tipo_Mesa) AS CuentaDeTipo_Mesa

SELECT [Part Master].[Área de fabricación]

FROM [General] INNER JOIN [Part Master] ON General.[P/N] = [Part Master].[P/N]

GROUP BY [Part Master].[Área de fabricación]

PIVOT General.Tipo_Mesa;

La sentencia TRANSFORM es la que se utiliza para definir una consulta de referencias cruzadas. En la

Page 83: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

cláusula PIVOT indicamos la columna cuyos valores van a definir las columnas del resultado

7.1.5 Formulario “Varios”

Estos formularios son usados por control de producción. Esta compuesto por 2 botones, el primero nos muestra

un informe de los mazos que han sido fabricados, y el segundo, los mazos que están en fabricación de todos los

aviones.

Informe Históricos: Aquí estarán todos los mazos que han sido fabricados, el origen del informe será la tabla

“Mazo_conc_tipo”. Esta consulta muestra los mazos que tienen todas sus pruebas pasadas.

A continuación mostramos un detalle del formulario en vista hoja de datos:

Figura 7-26. Informe “Histórico”

Un mazo siempre tiene que pasar como mínimo 2 pruebas. Teniendo en cuenta está condición impondremos

que se muestren todos los registros que:

a) Tengan todos sus campos “Pasar_prueba_x” a “Si” y los campos “Pasa_prueba_x” sean igual a

“Pasada”.

b) Tengan los dos campos “Pasa_prueba_x” a “Pasada” cuando su campo asociado “Pasar_prueba_x”

esté a “Si”.

Partiendo de esta limitación la consulta asociada es la siguiente:

Figura 7-27. Consulta “Histórico”

Page 84: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Implementación de la base de datos

64

lxiv

Informe Aviones: Este informe nos mostrará los aviones que se entán fabricando, y cuantos mazos tienen en

fabricación cada uno de ellos. Está basado en la consulta de mismo nombre. La consulta agrupa la tabla general

por aviones y hace la cuenta de cada P/N asignado a cada avón. En la figura inferior mostramos el detalle de la

consulta.

Figura 7-28. Consulta “Aviones en fabricación”

El código que usamos fue el siguiente: SELECT Avión, Count([P/N]) AS [P/N_Fabricación]

FROM [Mazo_conc_tipo]

Nos devuelve una columna con los aviones fabricados y en otra el número de mazos que están en proceso.

Esta consulta tiene un informe asociado, en la figura inferior podemos ver este informe

Figura 7-29. Informe “Aviones en fabricación”

Page 85: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

7.1.6 Formulario “Comerciales”

Este formulario permite ingresar mazos a fabricar a nuestra BBDD sin necesidad de utilizar hojas de cálculos.

En un principio los mazos se ingresaban mediante excel de entrada. En un futuro se quiere dejar apartado los

archivos excel y que todos los datos se introduzcan directamente en la base de datos. Esto solo es possible

mediante formularios.

Aquí tenemos un formulario editable, los datos introducidos en el irán a la tabla “Mazo_conc_tipo”. Cuando se

haga click en el botón actualizar estos datos, junto a los demás, pasarán a la tabla general y los mazos serán

producidos.

Figura 7-30. Formulario “Comerciales” 1

Este formulario se ha creado con herramienta “Formulario en blanco” del menú principal. Al hacer clic nos

genera una pestaña en blanco. Cambiamos el origen de los registros a nuestra tabla principal “Mazo_conc_tipo”

y agregamos los campos que queremos que se puedan introducir. En nuestro caso serán los mismos campos que

se introducían por medio del archivo Excel “Comerciales”.

Figura 7-31. Formulario “Comerciales” 3

Page 86: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Implementación de la base de datos

66

lxvi

A continuación agregamos los campos haciendo clic con el botón derecho del ratón en la pestaña y seleccionar

la opción “Agregar campo”. Finalmente nuestro formulario en vista diseño quedaría así:

Figura 7-32. Formulario “Comerciales” 4

Por último incluimos el botón de guardar registro. Para crear este botón le damos al 4º elemento del menú

controles, como se explicó en apartados anteriores.

Figura 7-33. Menú “Controles” de formulario de navegación.

El botón será programado para que ejecute una instrucción INSERT INTO a la tabla “Mazo_conc_tipo” con los

parámetros introducidos en el formulario.

INSERT INTO Mazo_conc_tipo ( Item, Comerciales, Id_avión, [P/N], Fecha_entrada, Fecha_salida )

SELECT Item, Comercial, Avión, [P/N], [Fecha pedido], [Fecha necesidad]

Page 87: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

7.1.7 Formulario “Pruebas”

Cuando los mazos pasen las pruebas, el resultado de estas debe de quedar recogidas en las tablas de la base de

datos. Para este fin se construye el formulario “Pruebas”. Este formulario está constituido de una lista con todos

los mazos del área pruebas y los campos “Pasar_prueba_x” “Pasa_prueba_x” y “Motivo_parada_x”.Los mazos

que aparecerán en esta lista serán los que tengan el campo “Pulsos_necesarios” igual al campo

“Pulsos_Consumidos”.

Contendrá un cadro de verificaciones donde se podrá escoger que pruebas a pasadado el mazo seleccionado en

la lista. Por último se programará un botón de guardado que ejecutará un código VBA. Se ha decidido hacer así

porque era muy complejo hacerlo por medio de macros.

El código VBA utilizado es el siguiente:

Page 88: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Implementación de la base de datos

68

lxviii

El formulario cuenta con 3 botones de verificación para introducir las pruebas pasadas. A continuación se

muestra la imagen de este formulario.

Figura 7-34. Formulario “Pruebas”

7.1.8 Formulario “Paradas”

En el proceso de fabricación, puede ser que un mazo no pueda ser fabricado. La causa debe de quedar reflejada

en la base de datos. Para este fin se creó el formulario “Paradas”. Este formulario está compuesto de una lista

cual se muestran los registros que están en proceso de fabricación. Para ello se basa en una consulta que recoge

los mazos que tienen el campo “Pulsos Consumidos” distinto de “Pulsos necesarios”.

Figura 7-35. Consulta “mazos en fabricación”

Page 89: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Los registros que resultan de esta consultan se mostraran en el cuadro de lista. El usuario podrá seleccionar un

elemento de la lista y a continuación pulsar una de las 3 opciones de parada implementad. El grupo de opciones

facilita la selección de un valor, puesto que permite hacer click en una de las alternativas sin necesidad de

escribir en un cuadro de texto ni desplazarse por una lista. Además, se puede establecer como predeterminada

una de las opciones para simplificar la introducción de datos. Solamente se puede seleccionar una opción de

un grupo a la vez.

Figura 7-36. Grupo de opciones para el formulario “Paradas”

Por último se programará un botón de guardado que ejecutará un código VBA. Se ha decidido hacer así porque

era muy complejo hacerlo por medio de macros.

El código VBA utilizado es el siguiente:

Page 90: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Implementación de la base de datos

70

lxx

Finalmente el formulario “Parada” mostrará el siguiente aspecto:

Figura 7-37. Formulario “Paradas”

7.1.9 Formulario “Producción”

En el proceso de producción, podría ocurrir que un mazo no pudiera entrar en fabricación. Esto podría pasar por

varios motivos, por ejemplo por la falta de stock de un cable. En este formulario queremos que control de

producción pueda ver los mazos que no están fabricándose, y que puedan introducir información al respecto.

Para ello tendremos la consulta “Mazos__sin_fabricar”, en la cual se seleccionan los mazos que tienen el campo

“En_fabricación” distinto de “Si”.

Figura 7-38. Consulta “Mazos sin fabricar”

Page 91: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

El código SQL de está consulta será el siguiente:

SELECT [ITEM], [P/N], [En_fabricación], [Área_fabricación], [Longitud]

FROM Mazo_conc_tipo

WHERE (((Mazo_conc_tipo.En_fabricación ) <> "Si"))

Agregaremos al formulario un campo verificación “Apto_para_fabricar”. Control de producción pulsará este

campo si el mazo está listo para su fabricación. En campo si no está verificado el campo se habilitará un campo

editable “Motivo_parada”. En este campo el responsable podrá rellenar el motivo por el cual el mazo no entra

en producción.

Figura 7-39. Verificación y campo editable. Formulario “Producción”

Le asignaremos un botón de guardado que ejecutará el siguiente código en VBA:

Page 92: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Implementación de la base de datos

72

lxxii

Por último mostramos una imagen de la apariencia final del formulario.

Figura 7-40. Formulario “Producción”

Page 93: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

8 CONCLUSIONES

En este último apartado presentaremos las conclusiones obtenidas tanto a nivel de trabajo como a nivel

personal.Mostraremos algunas líneas futuras que ayuden a mejorar la aplicación y ampliar el alcance de nuestro

sistema.

8.1.1 Conclusiones técnicas

A la hora de desarrollar una aplicación software es difícil establecer las condiciones de satisfacción para que el

trabajo se dé por concluido. Nuestra base de datos implementa una solución “puente” entre la entrada de datos

por base de archivos excel y mediante formularios. En el futuro se podría suprimir la entrada mediante hojas de

datos, ya que era uno de los objetivos principales de nuestro proyecto. En este punto enumeraremos algunos

cambios que podrían realizarse para mejorar nuestra aplicación y la base de datos.

a) Recopilar más datos provenientes de recursos humanos, (vacaciones, horas de baja,..), para que nuestra

aplicación pueda calcular cuándo se puede saturar el sistema. Por ejemplo, cuando hubiese muchos

trabajadores de baja, nuestra base de datos fuera capaz de determinar que áreas de fabricación se

colapsarían.

b) Podríamos generar consultas e informes sobre los mazos que se han retrasado en la entrega. Con esto

podríamos ver cuáles son los porcentajes de entrega a tiempo y en qué parte de la cadena de montaje

hay que actuar.

c) Introducir datos de más piezas de montaje, por ejemplo los conectores de los cables. Con ello

conseguiríamos una visión más amplia de la situación del taller.

d) Proponer una tabla de clientes actuales y potenciales. Con esta tabla se podrían generar informes muy

útiles para los comerciales. Por ejemplo se podría generar un informe que indicará a los comerciales

cuales son los que compran un tipo de avión en concreto. También podrían saber que clientes generan

más beneficios para la empresa, pudiendoles hacer un descuento.

e) Agregar gráficos de rendimiento por áreas. Podríamos saber que áreas producen más mazos en un

tiempo determinado. Con esta información, control de producción sabría que áreas son más productivas.

Page 94: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Conclusiones

74

lxxiv

8.1.2 Conclusiones personales

Este proyecto me ha resultado bastante duro, ya que no tenía muchos conocimientos de Microsoft Access. He

aprendido a manejarme en este entorno y a utilizar sus abundantes recursos.

Me encontré con algunos problemas a la hora de realizar la implementación, ya que al tener realizada parte de

la base de datos tuve que reconstruir casi por completo la implementación. Este hecho me retraso a la hora de

proponer una fecha final de entrega. Por otro lado, debido a la larga duración del proyecto, he tenido diferentes

ordenadores desde que empecé con el proyecto, a mitad de la implementación tuve que cambiar de pc. Por este

hecho he tenido que importar y exportar datos de unos ordenadores a otros y he podido comprobar que no tiene

demasiada dificultad y he aprendido a cambiar vinculaciones, anexar datos de entrada, etc. Cosas que en

principio, no tenía pensado aprender durante la realización del proyecto.

En la actualidad el trabajo que desempeño está relacionado con la programación de Microsoft Access y la

herramienta VBA. Cuando empecé este proyecto mis conocimientos sobre programación eran muy limitados,

por lo cual tuve que rehacer parte del trabajo ya elaborado.

Page 95: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

BIBLIOGRAFÍA

[1]

[2]

[3]

[4]

[5]

[6]

[7]

[8]

[9]

[10]

[11]

[12]

[13]

[14]

Piñero Gómez, Jose Manuel, (2011) Diseño de Bases de datos relacionales: UF2175.

Rebecca M. Riordan, Rebecca. (2005) Diseño de bases de datos relacionales, Access y SQL Server

Viescas, John. (2007) Soluciones de Bases de datos con Access [Recurso electrónico]

Oracle Corporation (2015), MySQL. [Recurso Web]] Available: http://www.mysql.com/

López Rodrigues, Ignario. (2006) Problemas de bases de datos

Cuadra, Dolores, (2011) Desarrollo de bases de datos: casos prácticos, análisis e implementación.

Lambert, Joan ; Cox, Joyce (2013) Microsoft Access step by step

Base de Datos Relacionales, M. Celma, J.C. Casamayor, L. Mota, Pearson Prentice Hall. 2.

Apuntes asignatura: Base de Datos (2013).

Access 2010, M. Groh, ANAYA.

http://office.microsoft.com/es-ar/access/

A. Simpson, E. Olson. La Biblia de Access 97. Ediciones ANAYA. Atlanta, 1997.

Ediciones ENI. Access 2010. Barcelona, 2010.

Ediciones ENI. Microsoft Project 2007. Barcelona, 2007

Page 96: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Bibliografía

76

lxxvi

Page 97: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

ANEXOS

10.1 Programación en Visual Basic.

Visual Basic se ha convertido en un importante entorno de desarrollo. Este entorno cubre todos los aspectos de

la programación profesional, desde las aplicaciones financieras a la construcción de componentes para Internet.

En la actualidad es una herramienta útil para la programación en entornos Windows, gracias a su potencia y

variedad de opciones.

10.1.1 Los objetos en Visual Basic

Los objetos están encapsulados; es decir, contienen su propio código y sus propios datos. Esto facilita su

mantenimiento más que los métodos de escritura de código tradicionales.

Los objetos de Visual Basic tienen 3 partes fundamentales: propiedades, métodos y eventos.

- Las propiedades son los datos que describen un objeto.

- Los métodos nos describen lo que puede hacer con el objeto.

- Los eventos son tareas que realiza el objeto; podemos escribir código para ejecutarlo cuando se

produzcan eventos.

En VBA, los objetos se crean a partir de clases; así, un objeto se dice que es una instancia de una clase. La clase

define las interfaces de un objeto, si el objeto es público y en qué circunstancias se puede crear.

Para utilizar un objeto tiene que mantener una “referencia a él” en una variable de objeto. El tipo de enlace

determina la velocidad con la que se tiene acceso a los métodos de un objeto mediante la variable de objeto. Una

variable de objeto puede ser un enlace en tiempo de compilación o un enlace en tiempo de diseño.

Al conjunto de propiedades y métodos se le llama interfaz. La interfaz predeterminada de un objeto de Visual

Basic es una interfaz dual que admite las formas de enlace anteriormente mencionadas. Si una variable de objeto

está correctamente definida (es decir, “Dim … As nombre_clase”), utilizará la forma más rápida de enlace.

Para tener un código VBA optimizado, es muy importante que todas las variables que se utilicen estén

debidamente definidas.

Page 98: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Anexos

78

lxxviii

10.1.2 Concepto de encapsulación (Public v.s. Private)

Una de las características más importantes de la programación orientada a objetos es el concepto de

encapsulación. Un objeto bien desarrollado es aquel que puede ser utilizado por otros elementos de forma

eficiente, pero sin que éstos conozcan cómo funciona internamente. Esto nos permite cambiar la forma en que

un objeto funciona sin que los elementos que utilizan el objeto noten dicho cambio.

En Visual Basic, las propiedades y métodos de una clase pueden ser de dos tipos:

Public: accesibles por cualquier elemento del proyecto.

Private: accesibles sólo por los elementos de la clase donde están definidos.

10.1.3 Utilización de variables de objeto

Utilizar una variable de objeto es similar a utilizar una variable convencional, pero con un paso adicional:

asignar un objeto a la variable.

Primero, declararemos la variable con una sentencia

Dim variable As clase

Luego, asignaremos un objeto a esa variable, utilizando la instrucción Set:

Set variable = objeto

Es muy importante haber declarado antes el objeto, ya que este ha de existir para poder ser asignado a una

variable de objeto. Es decir, previamente hemos tenido que utilizar la instrucción New, bien en la misma

sentencia en la que declaramos la variable de objeto:

Dim variable As New Clase

O podemos hacerlo en la propia sentencia Set:

Set variable = New Clase

La sentencia New crea una instancia de la clase especificada (es decir, crea un objeto nuevo a partir del modelo

que es la clase).

Cuando ya no utilicemos estos objetos, necesitamos liberar la memoria y los recursos que éstos consumen. En

la mayoría de los casos será el sistema operativo el que se encargará de esta tarea si se nos olvida a nosotros,

pero no hay que confiarse. Para liberar la memoria y los recursos que consume un objeto utilizaremos la

sentencia:

Set variable = Nothing

Page 99: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

10.1.4 Variables estáticas

La utilidad de una variable está directamente relacionada con la forma y el lugar donde se declara. El valor

de las variables declaradas a nivel de módulo y públicas se preserva durante todo el tiempo de ejecución.

Sin embargo, las variables locales declaradas con Dim sólo existen mientras se ejecuta el procedimiento en

el cual se han declarado. La próxima vez que se ejecute el procedimiento se reinicializarán todas sus

variables locales.

Sin embargo es posible preservar el valor de una variable local si se declara como estática, utilizando la

palabra clave Static:

Static nombre_variable as tipo_dato

10.1.5 Cadenas de caracteres largas.

Cuando esté creando una cadena larga, use el carácter “&” de continuación de línea para crear

múltiples líneas de código, de forma que pueda leer o depurar la cadena fácilmente. Esta técnica

es especialmente útil cuando se muestra un mensaje por pantalla con la instrucción (MsgBox) o

un cuadro de entrada (InputBox), o cuando se crea una cadena SQL. Por ejemplo:

10.1.6 Instrucción Recordsets

Un objeto Recordset representa los registros de una tabla o los registros que resultan de ejecutar una consulta.

Existen varios tipos de Recordset, cada uno de los cuales tiene sus ventajas e inconvenientes:

De tabla: tiene acceso a la base de datos directamente, es decir, que tiene acceso a la tabla

directamente. Las búsquedas son más rápidas que con otros tipos de Recordset, pero no permite

uniones.

De instantanea: contiene una copia fija de los datos tal y como existen en el momento en el que se

accedió. Consume menos recursos que otros Recordset, por lo que puede ejecutar consultas y

devolver datos más rápidamente.

Hojas de respuesta dinámica o Dynaset: es un conjunto de referencias a los registros de una o

varias tablas. Los cambios realizados en la BBDD son automáticamente actualizados en un

Recordset de este tipo. Sin embargo, las búsquedas son más lentas ya que las acciones que se hacen

no solo se ejecutan en la memoria, si no que se reflejan a la vez en la base de datos.

Page 100: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Anexos

80

lxxx

Por ejemplo, para insertar un registro nuevo (Usuario=”manherber”, Contraseña=”1212” )en la tabla 'Usuarios.

Dim RsetTabla as Recordset

Set RsetTabla = VarBD.OpenRecordset(“Usuarios”,dbOpenTable)

With RsetTabla

.AddNew

!Contraseña = “1212”

!Usuario = “manherber”

.Update

End With

10.1.7 Como crear colecciones de objeto

Todos los objetos tipo “Collection” almacenan cada elemento en una variable tipo “Variant”. De esta forma,

la lista de elementos que se pueden agregar a un objeto “Collection” es igual que la lista de elementos que se

pueden almacenar en una variable tipo “Variant”.Entre ellas se incluyen los tipos de datos, los objetos y las

matrices, pero no se incluyen los tipos definidos por el usuario.

Las variables “Variant” siempre ocupan 16 bytes, independientemente de su contenido, por lo que el uso de

objetos “Collection” no es tan eficiente como el uso de matrices.

A pesar del tamaño de las variables Variant, habrá muchas ocasiones en las que nos sea útil utilizar un objeto

“Collection” para almacenar todos los tipos de datos enumerados anteriormente. Sin embargo, siempre tenemos

que tener presente que si bien los objetos “Collection” nos permitirán escribir un código limpio y fácil de

mantener, estamos pagando el precio de almacenar los elementos en variables Variant.

10.1.8 Acceder a los elementos de una colección.

Las operaciones básicas de agregar, eliminar y recuperar elementos de una colección dependen de sus claves e

índices. Una clave es un valor “String”. Puede ser por ejemplo un nombre, un número DNI, un número de la

seguridad social o un dato de tipo “Integer” convertido en tipo “String”. El método “Add” nos permite asociar

una clave con un elemento, como se describe más adelante.

Un índice es un dato de tipo “Long” que contiene el lugar de un elemento de la colección. Podemos controlar

el valor inicial del índice de un elemento mediante los parámetros “before” y “after”, pero su valor puede cambiar

si agregamos o eliminamos otros elementos.

Podemos utilizar el índice para recorrer los elementos de una colección. Por ejemplo, si insertamos el código

siguiente en el “Load” de un formulario aparecería en la pantalla “Debug” el nombre de los controles que están

pegados en él:

Dim IntContador as Integer

For IntContador = 0 To Controls.Count - 1

Debug.Print Controls(IntContador).Name & vbCrLf

Next

Page 101: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/12278/fichero/PFC_BBDD.pdf · Proyecto Fin de Carrera: Diseño de una base de datos del funcionamiento de un

Existe otra forma de acceder a los elementos de una colección que proporciona un mayor rendimiento: utilizar

la sentencia “For Each”. Esta opción es notablemente más rápida que la iteración mediante índice, aunque esto

no es cierto en todas las implementaciones de colecciones: depende de cómo almacena la colección los datos

internamente. Podemos codificar de nuevo el ejemplo anterior utilizando esta sentencia:

Dim VarDato as Variant

For Each VarDato In Controls

Debug.Print VarDato.Name & vbCrLf

Next VarDato