Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
HIERARCHICAL PRODUCTION
PLANNING – SCHEDULING
“ HPP – S ”
HERRAMIENTA INFORMÁTICA EN HOJA ELECTRÓNICA
PARA LA PLANEACIÓN A CORTO PLAZO DE LA PRODUCCIÓN
EN AMBIENTES DE PLANIFICACIÓN JERÁRQUICA,
PARA PYMES CON SISTEMA DE PRODUCCIÓN POR LOTES O SERIES CORTAS.
“ HPP – S ”
Director
iii
UNIVERSIDAD DEL VALLE
FACULTAD DE INGENIERÍAS
Autores
Titulo
Temas
iv
Nota de aceptación
Jurado
Jurado
v
Agradezco a:
mis padres.
que Amo.
herramientas brindadas.
amor maternal.
vi
AGRADECIMIENTOS.
• Ingeniero Gerardo Motoa G. Ph. D. Director del presente proyecto, por su comprensiva
formación académica.
• A todas aquellas personas que de una u otra manera nos colaboraron en la formación
vii
TABLA DE CONTENIDO
Pág.
INTRODUCCIÓN ................................................................................................................ 1
1. PRELIMINARES ........................................................................................................... 3
1.1 OBJETIVOS........................................................................................................... 3
1.2 HIPÓTESIS DEL TRABAJO ................................................................................ 4
1.3 JUSTIFICACIÓN................................................................................................... 5
2. MARCO DEL PROYECTO .......................................................................................... 8
2.1 MARCO DE REFERENCIA.................................................................................. 8
2.2 MARCO CONCEPTUAL. ................................................................................... 11
2.2.1 Planeación jerárquica de la producción............................................................ 13
2.2.2 Planeación a corto plazo................................................................................... 18
2.2.3 Programación enfocada a la carga.................................................................... 26
2.2.4 Modelos de programación. ............................................................................... 32
2.3 PLANTEAMIENTO DEL PROBLEMA............................................................. 47
3. LÓGICA DE DISEÑO ................................................................................................. 49
3.1 PLATAFORMA DE DESARROLLO. ................................................................ 49
3.1.1 Visual Basic...................................................................................................... 51
3.1.2 Hojas de cálculo. .............................................................................................. 55
3.1.3 Bases de datos................................................................................................... 57
3.2 ESTRUCTURA DE LA APLICACIÓN .............................................................. 67
3.2.1 Modelos de datos.............................................................................................. 67
3.2.2 Tablas. .............................................................................................................. 76
3.2.3 Modelo entidad – relación en la aplicación...................................................... 82
3.3 ELEMENTOS OPERACIONALES..................................................................... 88
3.3.1 Aproximación al Job-Shop ............................................................................... 88
3.3.2 Sistema operacional.......................................................................................... 90
viii
4. LÓGICA DE LA APLICACIÓN ................................................................................ 95
4.1 CONCEPTOS TEÓRICOS DE LA APLICACIÓN ............................................ 95
4.2 APLICACIÓN ‘HPP-S’ ..................................................................................... 111
4.2.1 Preparación pedido. ........................................................................................ 113
4.2.2 Scheduling. ..................................................................................................... 128
4.2.3 Control............................................................................................................ 143
4.3 INFORMACIÓN ADICIONAL PARA EL USUARIO. ................................... 149
CONCLUSIONES ............................................................................................................ 152
ANEXOS ........................................................................................................................... 156
ANEXO A. MANUAL DEL USUARIO ..................................................................... 156
Instrucciones de manejo rápido ................................................................................... 156
Datos ejemplo general.................................................................................................. 157
Ingreso de datos ejemplos particulares ........................................................................ 159
ANEXO B. CODIGOS................................................................................................. 163
Formularios en Access................................................................................................. 163
Modulo exportar a Excel.............................................................................................. 200
Modulo funciones de utilidad ...................................................................................... 207
Archivos Excel............................................................................................................. 208
ix
TABLA DE FIGURAS
Pág.
x
Figura 3-11. Nivel 3. Planeación a Corto Plazo - Control. ............................................... 75
Figura 3-12. Relaciones producto ..................................................................................... 83
Figura 3-13. Relaciones pedidos ....................................................................................... 83
Figura 3-14. Relaciones control ........................................................................................ 84
Figura 3-15. Datos ruta P1 ................................................................................................ 85
Figura 3-16. Relaciones tiempo de suministro.................................................................. 85
Figura 3-17. Datos centros de trabajo ............................................................................... 86
Figura 3-18. Cálculo tiempo de suministro....................................................................... 86
Figura 3-19. Carga por operación y duración.................................................................... 88
Figura 3-20. Barra de Menú de la Aplicación ................................................................... 91
Figura 3-21. Barra de Herramientas de la Aplicación....................................................... 91
Figura 3-22. Barra de Menú- Archivo y Edición. ............................................................. 92
Figura 3-23. Barra de Menú- Registros, Información y General. ..................................... 92
Figura 3-24. Barra de Menú- Preparación Pedido............................................................. 93
Figura 3-25. Barra de Menú- Scheduling.......................................................................... 93
Figura 3-26. Barra de Menú- Ventana y ?......................................................................... 94
Figura 4-1. Formularios en la aplicación. ....................................................................... 96
Figura 4-2. Diagrama de ensamblado para el producto ‘Silla’........................................ 97
Figura 4-3. Árbol Estructura del producto ‘Silla’. .......................................................... 99
Figura 4-4. Incidencia de los factores en la obtención de una unidad........................... 104
Figura 4-5. Árbol de Rutas para del producto ‘Silla’. ................................................... 106
Figura 4-6. Detalle relaciones entre paneles de control. ............................................... 112
Figura 4-7. Panel principal ............................................................................................ 113
Figura 4-8. Panel preparación pedido............................................................................ 113
Figura 4-9. Formulario clientes..................................................................................... 114
Figura 4-10. Panel datos producto................................................................................... 115
Figura 4-11. Formulario productos ................................................................................. 115
Figura 4-12. Formulario partes/componentes ................................................................. 116
Figura 4-13. Formulario estructura producto. ................................................................. 117
Figura 4-14. Panel datos ruta........................................................................................... 118
xi
Figura 4-15. Formulario centros de trabajo..................................................................... 118
Figura 4-16. Formulario detalle centros de trabajo. ........................................................ 119
Figura 4-17. Formulario máquinas paralelas CT............................................................. 120
Figura 4-18. Formulario hoja de ruta. ............................................................................. 121
Figura 4-19. Formulario rutas producto. ......................................................................... 122
Figura 4-20. Formulario pedidos..................................................................................... 123
Figura 4-21. Formulario cantidad requerida. .................................................................. 124
Figura 4-22. Formulario tiempo de entrega..................................................................... 125
Figura 4-23. Habilitar macros. ........................................................................................ 126
Figura 4-24. Programación detallada en Excel. .............................................................. 127
Figura 4-25. Programación detallada – detalle inicio y fin operaciones. ........................ 127
Figura 4-26. Panel scheduling......................................................................................... 128
Figura 4-27. Panel Asignación. ....................................................................................... 129
Figura 4-28. Formulario carga pedidos. .......................................................................... 130
Figura 4-29. Formulario carga operaciones. ................................................................... 131
Figura 4-30. Formulario control pedidos. ....................................................................... 132
Figura 4-31. Formulario cargas operaciones iniciadas.................................................... 134
Figura 4-32. Panel secuenciación.................................................................................... 135
Figura 4-33. Formulario reglas de prioridad. .................................................................. 135
Figura 4-34. Reglas de prioridad en Excel. ..................................................................... 136
Figura 4-35. Formulario pedidos pendientes a la fecha. ................................................. 138
Figura 4-36. Formulario método húngaro. ...................................................................... 139
Figura 4-37. Método húngaro en Excel – hoja de cálculo asignar. ................................. 140
Figura 4-38. Método húngaro en Excel – hoja de cálculo Hoja1.................................... 141
Figura 4-39. Formulario regla de Johnson. ..................................................................... 141
Figura 4-40. Johnson en Excel ........................................................................................ 142
Figura 4-41. Panel control. .............................................................................................. 143
Figura 4-42. Formulario producción planeada................................................................ 144
Figura 4-43. Carga finita en Excel – hoja de cálculo ‘cg_finita’. ................................... 145
Figura 4-44. Carga finita en Excel – hoja de cálculo ‘Hoja2’......................................... 146
xii
Figura 4-45. Formulario producción real. ....................................................................... 146
Figura 4-46. Formulario control input-output. ................................................................ 147
Figura 4-47. Control in-out en Excel. ............................................................................. 148
Figura 4-48. Formulario acerca de. ................................................................................. 149
Figura A-1. Dirección para descomprimir Aplicación HPP-S.exe ................................ 158
Figura A-2. Instalación terminada.................................................................................. 158
Figura A-3. Árbol de Estructura del producto ‘P1’........................................................ 160
Figura A-4. Operaciones ruta ‘P1’. ................................................................................ 161
Figura A-5. Árbol de rutas del producto ‘P1’. ............................................................... 162
xiii
LISTADO DE CÓDIGOS
Pág.
xiv
Formulario lista rutas...................................................................................................... 182
Formulario máquinas...................................................................................................... 183
Formulario máquinas ct .................................................................................................. 184
Formulario operaciones ruta........................................................................................... 184
Formulario pedidos......................................................................................................... 186
Formulario pedidos pendientes....................................................................................... 187
Formulario pendientes a la fecha.................................................................................... 187
Formulario producción planeada .................................................................................... 188
Formulario producción real ............................................................................................ 189
Formulario rcomponentes subformulario ....................................................................... 189
Formulario rcomponentes1 subformulario ..................................................................... 191
Formulario rcomponentes2 subformulario ..................................................................... 192
Formulario regla de Johnson .......................................................................................... 193
Formulario reglas prioridad ............................................................................................ 194
Formulario rproductos .................................................................................................... 194
Formulario rutas iniciadas .............................................................................................. 196
Subformulario control detalle pedido ............................................................................. 196
Subformulario control pedidos ....................................................................................... 197
Formulario switchboard.................................................................................................. 197
Formulario tipo ............................................................................................................... 200
Formulario unidades ....................................................................................................... 200
Modulo exportar a Excel.................................................................................................. 200
Function Exportar_Prioridades() .................................................................................... 200
Function Exportar_In_Out() ........................................................................................... 202
Function Exportar_Johnson() ......................................................................................... 203
Function Exportar_Asignación() .................................................................................... 204
Function Exportar_Programa_Detallado() ..................................................................... 205
Function Exportar_FINITA() ......................................................................................... 206
Modulo funciones de utilidad .......................................................................................... 207
Function estácargado(ByVal txtNombreFormulario As String) As Boolean................. 207
xv
Function Verventanabasededatos()................................................................................. 207
Function salir() ............................................................................................................... 207
Function cerrar() ............................................................................................................. 208
Archivos Excel .................................................................................................................. 208
Prioridades.Xls ............................................................................................................... 208
Asignación.Xls ............................................................................................................... 208
Johnson.Xls..................................................................................................................... 216
Detallada.Xls .................................................................................................................. 222
Carga_Finita.Xls............................................................................................................. 224
In-out.Xls........................................................................................................................ 227
xvi
INTRODUCCIÓN
restrinjan a grandes empresas, como hasta el momento viene ocurriendo, ya que por los
altos costos del software especializado, las pequeñas empresas no cuentan con herramientas
Nuestro propósito se enfoca en crear una herramienta funcional y económica que permita
una mejor programación del sistema propio de una PYME en cuanto a controles de
productividad se refiere, esto es, teniendo en cuenta que la productividad es un factor que
etc., y es en este sentido en el cual contar con herramientas de sistematización como la que
1
programación más precisa ejerciendo el control adecuado para una adecuada utilización de
los recursos.
Hemos estructurado el proyecto en capítulos que permiten dar mayor claridad a cada una
de las partes que forma la aplicación “HPP-S” desarrollada. En ellos abarcamos los
preliminares del proyecto, sus objetivos, justificación y enmarcamos los temas propios de la
2
1. PRELIMINARES
1 CAPÍTULO 1. ANTEPROYECTO.
1.1 OBJETIVOS
General.
Diseñar una herramienta informática en hoja electrónica que permita realizar la planeación
a corto plazo en PYMES con fabricación por lotes o series cortas, en sistemas de
planificación jerárquicos.
Específicos.
programación normal.
la toma de decisiones.
fabricación por lotes o series cortas y usar ésta información bajo criterios de
3
rendimiento y aprovechamiento de los recursos limitados en empresas de manufactura
para hacer más efectiva la terminación de los pedidos en las fechas ofrecidas al cliente.
utilización.
• Diseñar un sistema o interfaz de control de las órdenes de producción que permita tener
de producción.
costo y flexible que integre su sistema productivo permitiéndoles ser más competitivas. El
poco seguimiento que se hace a las órdenes durante el proceso de manufactura limita a las
PYMES para dar una rápida reacción a los cambios eventuales en las demandas, por la
4
1.3 JUSTIFICACIÓN
En la actualidad existen gran variedad de modelos y programas para dar mejores soluciones
que funcione de manera fácil, dinámica y precisa sobre hojas de calculo apoyadas en una
base de datos, para ser implementada en una pequeña o mediana empresa a fin de aumentar
su rendimiento partiendo del principio de que entre mayor información se maneje de los
Dentro del sistema manufacturero nos centramos particularmente en las PYMES. Para el
año 2000 es considerada pequeña y mediana empresa la unidad económica cuyo nivel de
activos fiscales a diciembre de 1999 estuviera entre $135 millones y $3335 millones y que
ocupen entre 11 y 199 empleados según la ley 78 de 1998,1 por ser éstas las que
1
¿Qué es una Pyme?. http://www.ifi.gov.co/htm/crpymeque.htm
5
contribuyen a dinamizar la economía (generación del empleo 15%)2, además representan el
Dentro de éstas seleccionamos las de sistema productivo por lotes o series cortas que
Como las hojas electrónicas han aumentado su popularidad por su sencilla implementación3
la herramienta informática se realizará con una base de datos vinculada a hojas electrónicas
por la gran facilidad de aplicación práctica y adaptabilidad a los escenarios del mercado,
recursos productivos.
Los costos de implementación en hoja electrónica son bajos comparados con las
computacional (MAX) que tiene un costo promedio de US$ 9.500 para un fabricante
pequeño o mediano con todos los módulos de manufactura y contabilidad, pero los
requisitos específicos pueden modificar los costos desde US$ 550 hasta US$ 33.200 para
2
Registro mercantil. Cámara de comerció de Cali, Separata (Jun. 1999)
3
SIPPER, Daniel y BUFFIN, L. Robert. Planeación y control de la producción. Mexico : Mc Graw Hill,
1998. p. 91, 189, 215.
6
un paquete multiusuario4, o el sistema de SAP R/3, que es una solución ERP (Planeador de
dólares.5
Acorde con los objetivos de la producción se busca dar una herramienta al programador de
programador podrá analizar varias alternativas de programación en poco tiempo para ver su
4
CHASE, Richard B. y AQUILANO, Nicolas J. Dirección y administración de la producción y de las
operaciones. 6 ed. Mexico : Mc Graw Hill, 1995, p. 725
5
La revolución de los ERP. En : Dinero. No. 90 (Ago 13 1999), p. 90
7
2. MARCO DEL PROYECTO
En el mercado podemos encontrar varios programas para la planeación a corto plazo en las
empresas, los cuales ofrecen cada uno una estructura y forma de trabajo diferente. Software
Software, Inc. Software for Manufacturing (ERP/MRP) Planning and Control9 y Merlin
MRP Software10, entre otros. Programas en su mayoría en otro idioma cuya complejidad
Sin duda, uno de los aspectos más trascendentales para la mayoría de las empresas
6
ERP/MRP Systems. http://cmit.edi.gatech.edu/cmit/ERPMRP.htm
7
Obvious MRP for Windows. http://www.obviousmrp.com/
8
Pc/MRP the complete Windows MRP Accounting and Inventory Control Software Package with ISO9000
report. http://www.midwesterngallery.com/pcmrp/index.htm
9
Solid State Software : Software for MRP/ERP, Accounting and Distribution. http://www.sssoft.com/
10
Merlin MRP Manufacturing Software. http://www.merlinsys.co.uk/
8
producción, pues están en juego el nivel de confianza que tengan los clientes con respecto a
desde software para computadora de dominio público hasta aplicaciones hechas a la medida
que cuestan millones de dólares. Debe tenerse cuidado al comprar un paquete, ya que las
los programas. Los más elaborados permiten “tomar e insertar” operaciones en la misma
gráfica de Gantt; éstos requieren interfaces de usuario (gráficas) complejas. Los paquetes
menos costosos permiten hacer cambios en los tiempos de inicio y terminación de los
trabajos. De la mano con la evaluación del programa, los ajustes permiten al usuario hacer
Los paquetes más avanzados generan los programas de producción, pero muchos de ellos
no son muy buenos. El paquete puede generar un solo programa, varios programas o el
pueden producir un programa. Al usar varias reglas de despacho se pueden generar varios
programas; después el usuario elige uno o el paquete solo le muestra el “mejor”. Se pueden
usar heurísticos más avanzados para generar un programa. Como la programación es difícil,
el enfoque debe hacerse a la medida del problema que se tiene; un enfoque complejo
9
Para sistemas de producción complicados (como una planta grande de producción
intermitente), puede ser necesaria una simulación del programa. Al someter a prueba el
decisiones de programación. Los paquetes que simulan la planta son costosos, por lo
el software, Parsifal con su libro; Parsifal resuelve la mayor parte de los modelos de
programación; puede usar varios heurísticos para modelos de una sola máquina, máquinas
programación. QS: Quantitative Systems (Chang - 1995) es un software general que realiza
disponibles.
11
SIPPER y BUFFIN, Op cit., p. 467-469
10
2.2 MARCO CONCEPTUAL.
proyecto de estudio se aplicarán en hoja electrónica tomando la información desde una base
de datos, dado que permiten cambiar muchas variables y crear diferentes combinaciones
Los precursores del enfoque de hoja de cálculo son los métodos tabulares y gráficos que
durante varios años y cada vez más toman mayor importancia gracias al desarrollo de los
nivelar la producción con las demandas fluctuantes. Las alternativas se pueden desarrollar
en hoja electrónica de manera sencilla y con fácil implementación13, de tal modo que se
12
HEIZER, Jay y RENDER Arry. Dirección de la producción. Madrid : Mc Graw Hill, 1997. p. 144-145
13
NOORI, Hamid y RADFORD Rusell. Administración de operaciones y producción. Santafé de Bogotá :
Mc Graw Hill, 1997. p. 43, 267, 457
14
SIPPER, y BUFFIN. Op cit p. 180-181
11
El proyecto parte de conceptualizar los sistemas de fabricación y entre ellos, en especial,
los de producción por lotes y series cortas. Esto significa revisar conceptos tales como
puede ser definido como una combinación de mano de obra, maquinaria y equipos,
Las entradas son la materia prima y la energía. La información es también una entrada al
sistema y lo hace en forma de demanda de los clientes por los productos de dicho sistema.
12
En general, el estudio de los sistemas de fabricación puede ser conceptualizado como la
del sistema.15
producción para las empresas de manufactura, no ocurre lo mismo con los nombres a los
cuales se asocian esos conceptos, presentándose así falta de homogeneidad en los términos
usados por los diferentes autores al momento de desarrollar cada uno sus temas. Para hacer
claridad en los conceptos y términos que serán manejados en la realización de este proyecto
así como a los otros nombres más conocidos con los cuales es manejado.
dentro de una estructura de largo, mediano y corto plazo. Harlan Meal utiliza el termino
15
MOTOA, T. Gerardo. Algunos apuntes sobre el uso de la simulación en el diseño de sistemas de
fabricación. Madrid junio 1994. Disam. Universidad Politécnica de Madrid.
16
HARLAN, C Meal, ”Putting production decisions where they belong” Harward Business Review 62, N 2
marzo-abril 1984, pp-102-11.
13
producción es uno de los enfoques para el análisis que se basa en los conceptos de desglose
que puede adaptarse a muchas empresas con lo que se convierte en una herramienta útil
para los directivos en sus labores. El enfoque incorpora una filosofía de ajuste de los
Principios de este sistema de planeación jerárquico son: el desglose que debe seguir las
que se requiere para las decisiones a tomar; esto significa que pueden hacerse los planes
En general, existen cuatro elementos que pueden dar origen a construir la jerarquía: tiempo,
uno solo de tales elementos. En muchos casos, tiempo y estado (de agregación-
por ejemplo, en el nivel superior escalas de tiempo gruesas y estados más agregados que en
14
relación a la información, cada nivel posee situaciones y tipos diferentes de información en
demanda al sistema (Ver Figura 2-2). Los pronósticos a largo plazo ayudan a los directores
a tratar con los problemas de capacidad y estrategia que son responsabilidad de la alta
15
situación y expansión de las instalaciones, el desarrollo de nuevos productos, la
años.
Una vez tomadas las decisiones de capacidad a largo plazo, los directores de operaciones
pasan a efectuar la planificación a medio plazo para alcanzar los objetivos de la empresa.
Las decisiones de programación táctica suponen crear planes mensuales o trimestrales, que
estos planes necesitan ser consistentes con la estrategia a largo plazo de la alta dirección y
trabajar con los recursos asignados por decisiones estratégicas anteriores. El corazón de la
La planificación a corto plazo se extiende hasta un año, pero normalmente es menor de tres
meses. Los directores de operaciones hacen estos planes en unión con los jefes de planta
quienes desagregan el plan a mediano plazo en programas semanales, diarios y por horas.
Los métodos para efectuar la planeación a corto plazo traducen las decisiones de capacidad,
16
Este enfoque jerárquico permite la coordinación entre los objetivos, planes y actividades de
los distintos niveles largo (estratégico), mediano (táctico) y corto plazo (operativo),
cumpliendo cada uno sus propias metas, pero teniendo siempre en cuenta las del nivel
superior, de las cuales dependen, y las del nivel inferior, a las que restringe. Sin dicho
acuerdo con los diferentes grados de agregación, con la intención de hacer más tratable el
independencia de decisiones. Decisiones de alto nivel pueden usualmente ser hechas sin
tomar en cuenta futuras decisiones de bajo nivel. Las decisiones agregadas de nivel
superior, por ejemplo, con relación a la carga en mano de obra no dependen de las
decisiones con relación al tamaño del lote se pueden tomar cuando la información sobre
requerimientos de materiales esté disponible y estarán restringidas por los límites de horas
19
MACHUCA DOMÍNGUEZ, José Antonio et al. Dirección de operaciones : Aspectos tácticos y operativos
en la producción y los servicios. España : Mc Graw Hill, 1995. 8 p.
20
MOTOA, Sistemas de Planificación Jerárquicos , Op cit., p. 8.
17
2.2.2 Planeación a corto plazo
Una vez obtenido el plan de requerimientos de materiales (MRP) que establece las
del sistema para asegurar que se cumplan los requerimientos del programa maestro de
una máquina específica; los momentos de comienzo y fin de las actividades de cada
centro de trabajo, así como las operaciones de cada orden para la secuencia realizada. Las
unidades manejadas en este nivel pueden ser productos específicos y la capacidad estará
de capacidad asociados. Es evidente que van a existir divergencias entre lo planificado y los
aspectos de la actividad diaria: unidades realmente obtenidas tras las operaciones, cantidad
21
CHASE, y AQUILANO, Op cit., p. 757.
18
medir la capacidad de cada uno de ellos en horas estándar), las fechas de entrega, los
tiempos de suministro, la evolución de las colas de espera y, con ellas, la adecuación de las
capacidades y cargas planificadas a las reales, etc. Solo así será posible detectar las
divergencias significativas entre los valores planificados y los reales, con base en los cuales
se adoptarán las medidas correctoras necesarias, que retroalimentarán a los distintos niveles
del sistema.22
realizar sobre las distintas órdenes, durante cada momento del horizonte planificado, en
cada Centro de Trabajo (CT), de tal forma que, con la capacidad disponible en cada uno de
las características del proceso productivo y su entorno, pudiendo variar entre unas horas y
varias semanas.23
22
MACHUCA DOMÍNGUEZ. Op cit., p. 292.
23
Ibid., p. 295.
19
El desarrollo de la programación con lleva a variar notablemente en función del tipo de
productivas propuestas por diferentes autores. Nos apoyamos en la clasificación que realiza
proyectos.
instalación. Cada CT, máquina o equipo está acondicionado para realizar siempre la misma
por un CT, máquina o equipo precedente, que esta en igual condición para alimentar a la
24
MACHUCA DOMÍNGUEZ, José Antonio et al. Dirección de operaciones : Aspectos estratégicos en la
producción y los servicios. España : Mc Graw Hill, 1995. p. 143
20
La configuración continua hace la programación más elemental pues las únicas actividades
producción masiva donde un producto pasa por los mismos centros de trabajo en grandes
configuración está en que utiliza las mismas instalaciones para la obtención de múltiples
productos, de forma que, una vez obtenida la cantidad deseada para uno de ellos, se procede
Procediéndose a ajustar los CT o máquinas tras fabricar un lote para elaborar otro distinto.
En la configuración por lotes enfocada al producto o flow shop hay pocos productos, lotes
homogéneos de tamaño mediano, pasan por los mismos centros de trabajo con diferentes
25
Ibid., p. 143.
21
valores de utilización, adecuación y alistamiento. Programación que implica secuenciación
de las órdenes para dar respuesta a la pregunta ¿cuál hacer primero? (Ver Figura 2-4.)
En la configuración Job Shop se producen lotes más o menos pequeños de una amplia
equipos suelen ser versátiles y permiten ejecutar operaciones diversas, por lo que puede
La configuración por lotes enfocada al proceso o job shop fabrica bajo pedido para lotes de
tamaño pequeño, hay gran variedad de productos y componentes. Programación donde hay
Figura 2-5.)
26
MACHUCA DOMÍNGUEZ, José Antonio et al. Aspectos estratégicos en la producción y los servicios,
Op cit., p. 144
22
Figura 2-5. Configuración por lotes enfocada al proceso – Job Shop
unos inputs que suelen ser de gran tamaño. La programación se da bajo modelos como el
PERT / CPM.
23
La figura 2-6 muestra la relación entre las configuraciones productivas y el número de
Para el tipo de configuración al cual se enfoca el presente trabajo – configuración por lotes
enfocada al producto o flow shop – en el corto plazo se tienen en el caso más complejo las
Figura 2-7.)
Asignación
de planeación. Cada trabajo debe tener sus especificaciones únicas de productos y, por
24
tanto, su hoja de ruta o trayectoria a través de los diversos centro de trabajo dentro de las
instalaciones. A medida que las nuevas órdenes de trabajo pasan a proceso, se asignan o
dirigen entre los CT, estableciéndose así la parte de la carga que le corresponde a cada uno
Secuenciación.
Esta etapa establece las prioridades para los trabajos en las colas de espera en los centros de
trabajo, la secuencia de prioridad específica el orden en el cual son procesados los trabajos
pendientes.
Programación detallada.
Las fechas especifican cuando hay que efectuar las órdenes de trabajo, emplear los
materiales (insumos), así como los trabajos terminados (productos) que deben estar
disponibles en cada CT. Los detalles sobre fechas y tiempos en general no se especifican
Al calcular la duración de los procesos y las fechas establecidas para todos los trabajos, los
programa detallado.
Control
Es el seguimiento que se realiza al avance de los trabajos por las instalaciones, permite
coordinar las acciones especiales requeridas por un trabajo en particular para que éste
25
transite por los CT a tiempo, solucionando las interrupciones generadas en las operaciones
último momento en las prioridades, que ocasiona desviaciones en los planes y los
programas de producción.
Es el seguimiento que se realiza a los centros de trabajo. Los planes y los programas de
medidas correctoras oportunas y hacer ajustes en la utilización para alcanzar los niveles
deseados.
La carga significa la asignación de tareas a cada Centro de Trabajo (CT) o proceso. Los
directores de operaciones asignan trabajo a los centros de trabajo de tal forma que los
actualidad hay dos enfoques básicos que son la carga infinita y la carga finita.
27
HEIZER, y RENDER , Op cit., p. 208.
26
Carga infinita.
La carga infinita se presenta cuando la tarea ha sido asignada a un CT sin tener en cuenta su
capacidad, la carga que proviene del programa de producción se distribuye en los centros
Las reglas de secuencia prioritaria (como su nombre lo indica determinan que trabajo debe
tareas programadas, por esta razón estas reglas se emplean con técnicas de planificación de
capacidad basadas en cargas infinitas.28 Otros modelos que usan este enfoque de
Grafica de Gantt.
La gráfica de Gantt útil para la carga o programación, es una herramienta visual para
una serie de máquinas así como para vigilar su avance a través de todas ellas. Teniendo
28
VOLLMANN, Op cit., p. 181.
27
de recursos cuando la carga en cualquier centro de trabajo es demasiado grande para el caso
de carga finita.
trabajo o tiempo extra, en todo momento. El eje ‘x’ representa el tiempo y el eje ‘y’
consiste en una barra horizontal para cada máquina. Las gráficas de Gantt también se
Esta permite representar el desarrollo de las diferentes operaciones a realizar de cada lote
actividades, de los equipos (incluyendo fallas), del tiempo que trabajan las personas y
averías inesperadas o errores humanos que requieran una repetición del trabajo, cualquiera
de las cuales puede hacer que el cálculo de la carga estimada sea impreciso. También la
gráfica es estática y debe de actualizarse en forma periódica para que pueda incluir la
29
SIPPER y BUFFIN, Op cit., p. 404
28
llegada de nuevas órdenes de trabajo y los cálculos de tiempo que hubieran sido revisados
Carga finita.
El sistema de carga finita simula el inicio y final de las cargas de trabajo reales para
producir un programa detallado de cada orden a cada centro de trabajo; es decir, lo que la
carga finita hace, en realidad, es cargar todas las tareas en los centros de trabajo necesarios
fin para cada operación en cada centro de trabajo. Este programa se basa en los límites de
para cada tarea a través de CT, basándose en sus capacidades y las otras tareas
programadas.
30
EVERETT, E. Adam. Jr, y RONALD, J. Ebert. Administración de la producción y las operaciones. 4 ed.
Mexico : Prentice Hall, 1994. p. 455.
29
Dos enfoques para asignar la carga del MRP en la planta son: la carga vertical (por centros
La carga vertical consiste en llenar cada CT operación por operación donde el recurso
crítico que se programa es el CT. (Ver Figura 2-8). Cuando se determina que un centro de
De esta forma se puede decidir si empezar otro trabajo ya ejecutable al objeto de no dejar
ocioso el CT. Siguiendo así para todos los pedidos en este CT, estableciéndose el programa
de operaciones que va ha desarrollarse durante las horas de cada día. Esta forma de
La carga horizontal o por pedidos toma los pedidos completos por orden de prioridad,
asignándose la carga de sus operaciones a todos los CT por los que ha de pasar, en su
30
Este enfoque horizontal puede estar en contra del criterio de usar un CT a su máxima
capacidad, la creación de programas detallados con carga horizontal puede dar como
resultado neto “huecos” de capacidad para un CT. Esto implica que en ocasiones una
máquina este inactiva aún si esta disponible otra tarea, porque este por llegar otra tarea más
importante.
Ya sea en la carga horizontal o en la carga vertical, existe siempre la decisión de que tarea
fecha actual y carga de los centros de trabajo hacia futuro. El tiempo de procesamiento se
acumula contra cada centro de trabajo, suponiendo una capacidad finita o infinita. En éste
caso es posible exceder las fechas de entrega si es necesario. Como se utilizan tiempos de
espera promedio en las colas, la fecha de terminación del pedido resultante es sólo una
31
Programación hacia atrás (Backward).
con la fecha de entrega de cada pedido y carga las necesidades de procesamiento contra
propósito de la carga hacia atrás es calcular la capacidad requerida en cada CT para cada
al mediano plazo donde se genera una nueva planeación agregada que desciende en la
32
La dificultad teórica de los problemas de programación se incrementa en la medida en que
consecuencia, la única restricción que hay respecto de n es que éste debe ser un número
específico y finito.31
siempre que el objetivo a lograr sea único o sí, existiendo varios, uno de ellos es prioritario
y no existe otro método para contemplarlos simultáneamente. Con base en este indicador
Cada pedido tiene asociados tres elementos principales que lo hacen unico: un identificador
éstos elementos de donde salen los factores que forman los cocientes en los criterios de
evaluación:
• El tiempo de flujo por pedido es el tiempo de permanencia del pedido en una instalación
hasta ser trabajado, es igual al acumulado de las cargas de todos los pedidos anteriores en
31
CHASE, y AQUILANO. Op cit., p. 684
33
• La suma de los tiempos totales de flujo es la sumatoria de todos los tiempos de flujo por
pedido o trabajo evaluados, su valor depende del orden dada a los trabajos.
• Los días de retrazo son los valores positivos de la resta por pedido del tiempo de flujo
• Los días totales de retrazo son la sumatoria de los valores positivos obtenidos en los
trabajos]
Reglas de prioridad
• FCFS (First Come, First Served) o FIFO (First In, First Out) primero en llegar primero
34
• SOT (Shortest Operating Time) Tiempo de operación más corto: primero se ejecuta la
tarea que tenga el tiempo de terminación más corto, luego el segundo más corto y así
ayuda a minimizar los tiempos ociosos. Sin embargo, se ignora la información relativa a
• EDD (Earliest Due Date): Se realiza en primer lugar aquel pedido cuya fecha de entrega
está más próxima, cualquiera que sea el tiempo de proceso que le reste. Es una
aplicación simple del objetivo de cumplir las fechas de entrega, que deja fuera las
consideraciones sobre el logro del menor tiempo total de procesamiento de los pedidos.
trabajo a realizar en un CT será aquel cuya operación en dicho centro sea la más larga.
La idea que la preside es que, normalmente, los trabajos más largos son los más grandes
y más importantes y, por tanto deben ser los primeros en realizarse. Se supone, además,
que éstos serán los trabajos con menor holgura (aunque no siempre ha de ser así, pues
35
• SRT (Shortest Remaining Time) Menor tiempo restante. En ésta se ejecuta primero
aquel pedido al que le quede menos tiempo hasta su entrega planificada, ejecutando
primero el pedido más urgente para cumplir las fechas de entrega. No obstante, no
considera un aspecto fundamental, el tiempo que queda para entregar el trabajo (que es
entrega y la fecha actual, dividida por el número de días de trabajo restante. Las órdenes
que tengan el CR más pequeño se ejecutan primero. Esta regla intenta corregir el
defecto señalado para la anterior, proporcionando una visión comparada del tiempo y la
carga que restan para entregar y concluir un trabajo. Su idea básica es la misma.
• STR (Slack Time Remaining) Menor tiempo de holgura restante. Se calcula como la
procesamiento restante. Los pedidos que tienen el STR más corto se ejecutan primero.
Al igual que el Coeficiente Crítico (CR), pretende dar una idea del tiempo que resta
para cumplir con la fecha de entrega planificada en comparación con el tiempo que falta
para acabarlo.
• STR/OP (Slack-Time Remaining per Operation) Los pedidos más cortos son ejecutados
36
se relaciona además con el número de operaciones que le restan al pedido para ser
difícil completar aquel con mayor número de éstas, al tener que ser programado a través
• LCFES (Last Come First Served) o LIFO (Last In, First Out) Último en llegar, primero
en salir: esta norma se presenta con frecuencia por defecto a medida que llegan las
Diferentes autores como Sipper o Krajewski entre otros, han clasificado las reglas de
prioridad para la programación, en dos categorías: reglas locales (para una sola dimensión o
Reglas locales: A estas reglas las llamamos reglas para una sola dimensión por que
asignan las prioridades tomando como base un solo aspecto del trabajo, como el tiempo de
Reglas globales: las reglas de prioridad, como la CR, S/RO ( o STR/OP), incluyen
información sobre los demás centros de trabajo en los que deberá ser procesado cada
32
KRAJEWSKI Lee, RITZMAN Larry. Administración de operaciones o producción: Estrategia y análisis.
México: Pearson educación, 2000. p.767.
37
trabajo, además del tiempo de procesamiento en el centro de trabajo actual o la fecha de
entrega, que también se toman en cuenta en las reglas para una sola dimensión. A estas las
llamamos reglas para dimensiones múltiples porque usan más de un aspecto del trabajo.33
regla SOT produce una solución optima para el caso n/1 en los criterios de evaluación tales
como el tiempo de espera medio (retraso medio del trabajo) y el tiempo de terminación
medio (tiempo medio de finalización). Por tanto se ha denominado esta regla como el
Los modelos de una sola máquina también son adecuados para procesos continuos o en
agregada como una situación del caso n/1. (Ver Figura 2-11.)
33
Ibid., p. 770.
34
CHASE, y AQUILANO. Op cit., p. 687.
38
Dentro de n/1 se tiene el caso particular de las máquinas paralelas que explicamos a
continuación.
Máquinas paralelas
Con frecuencia, los problemas de programación consideran varias máquinas. Las máquinas
múltiples pueden estar colocadas en paralelo o en serie. La figura 2-12 describe máquinas
paralelas. Cuando se usan máquinas múltiples en paralelo, se supone que cualquier trabajo
se puede procesar en cualquiera de las máquinas, y que el tiempo para procesar un trabajo
puede ser o no el mismo en cualquiera de ellas, es decir, son o no idénticas. Además, los
trabajos consisten en una sola operación; una vez que comienza el procesado de un trabajo
35
SIPPER y BUFFIN, Op cit., p. 439
39
Figura 2-13. Máquinas paralelas – continuo
balanceados de producción continua como una variación del caso n/1, como ya se
mencionó. Ahora para el caso de las máquinas paralelas este esquema también es aplicable
para cuando existan varias líneas de producción continua siendo esta la situación de unir
dos esquemas: caso n/1 continuo y máquinas paralelas, para facilitar la programación de las
diferentes órdenes. Obteniéndose así otra variación del caso n/1. (Ver Figura 2-13)
Cuando se cuenta con el suficiente tipo correcto de máquinas para comenzar todas las
tareas simultáneamente, se debe pensar en que la adecuada asignación de cada tarea a cada
máquina dará como resultado el mejor programa global. Para este caso es utilizado el
húngaro.
36
CHASE, y AQUILANO. Op cit., p. 689
40
Para este método la programación se vuelve matemáticamente muy compleja, cuando los
valores de ‘n’ (operaciones) o ‘m’ (máquinas) son altos, siendo necesario para el análisis la
La asignación de las operaciones a las máquinas se realiza de forma que cada una de ellas
se ejecute en una sola máquina, y viceversa. Partiendo de una matriz formada por los
tiempos de proceso de cada operación en cada máquina detallamos a continuación los pasos
Se comienza por las columnas de la matriz. En cada una se elige el menor tiempo y se
resta a todos los elementos de dicha columna. Repitiendo este proceso con cada
columna de la matriz, se obtiene la tabla donde los ceros indican los lugares con los
menores tiempos un cada una de ellas. Con la nueva matriz se realiza un procedimiento
análogo, pero en las filas, eligiendo el elemento más pequeño de cada una de ellas y
restándoselo, posteriormente, al resto de los elementos que la integran. Con los cálculos
realizados se asegura que en cada fila y en cada columna exista al menos, un cero, es
37
Scheduling, http://www.usd.edu/~rlau/schedule.htm
38
MACHUCA DOMÍNGUEZ, José Antonio et al. Aspectos tácticos y operativos en la producción y los
servicios, Op cit., p. 299.
41
Es evidente que si se puede realizar una asignación biunívoca con los lugares ocupados
por los ceros en la matriz inicial que relacionase a cada Oi, con una sola Mj y viceversa,
Fase 3:
Obtención de un conjunto mínimo de filas y columnas que contiene todos los ceros para
En este punto se repite la fase 2 y si ello revela que se ha llegado a la solución óptima, el
de configuración continua. Todos los trabajos se procesan en el mismo orden, por lo que se
pueden enumerar los CT de manera que el CT1 hace la primera operación y así
continua.
El caso siguiente en complejidad es el caso n/2, en donde dos o más órdenes deben
procesarse en dos CT o máquinas en una secuencia común. Como en el caso n/1, existe un
enfoque que lleva a una solución optima de acuerdo con ciertos criterios.
42
Figura 2-14. Caso n/2
tarea hasta la terminación de la última, Partiendo del tiempo de ejecución de cada pedido en
cada máquina, éste método heurístico pretende hacer mínimo el tiempo necesario para
concluir todos ellos y, por tanto, el tiempo ocioso de las máquinas. Utilizando al máximo
los CT (makespan)
el sistema. Un makespan mínimo por lo general implica una alta utilización de las
máquinas.40
39
M. Johnson, “Optimal two and three stage production schedule with set up times included,” Naval research
Logistics Quarterly, 1, No 1 (marzo 1954): c61-68.
40
Sheduling – flow shop http://www.informs.org/Conf/no95/talks/ma30.3.html
43
La Regla Johnson consta de los siguientes pasos.
3. Si el tiempo más corto es para la primera máquina, hacer la tarea primero; si es para
4. Repetir los pasos 2 y 3 para cada tarea restante hasta completar el programa.
especiales. Un caso especial ocurre cuando la máquina intermedia esta dominada, ya sea
41
SCHROEDER, Roger G. Administración De Operaciones : toma de decisiones en la función de
operaciones. 3 ed. Mexico : Mc Graw Hill, 1992. p. 401
44
Dos enfoques para asignar la carga del MRP en la planta son: la carga vertical (por centros
de trabajo) y la carga horizontal (por pedidos), cuando su tiempo de procesado más largo
no es mayor que el tiempo de procesado más corto de otra máquina, es decir, para la
procesado
Al resolver este problema de dos máquinas se obtiene la secuencia de lapso óptimo para el
problema dominado por tres máquinas. Un trabajo comienza en una máquina tan pronto
termina. Esto funciona porque en un problema dominado la máquina dos nunca causa un
retraso en el programa.
Para problemas de dos máquinas y problemas de tres máquinas con la máquina dos
diferentes secuencias de trabajo en al menos dos máquinas. Suponga que el trabajo ‘i’ está
programado antes del trabajo ‘j’ en la máquina ‘k’, pero en la máquina ‘k+1’ se procesa ‘j’
antes de ‘i’. El trabajo ‘i’ pudo haberse procesado en la máquina ‘k+1’, mientras ‘j’ estaba
en la máquina ‘k’, de manera que hay tiempo ocioso insertado en la máquina ‘k+1’. Si el
45
objetivo es el lapso de producción, se puede demostrar que un programa óptimo es un
Sin embargo, para cuatro o más máquinas, el programa óptimo puede no ser un programa
de permutación. Para otros objetivos, los problemas de tres máquinas no tienen garantía de
tres máquinas, o si se tienen más de tres máquinas, no existe una manera sencilla de obtener
una solución óptima. Debe recurrirse a algoritmos heurísticos o enumerativos para resolver
estos problemas.
Algoritmos heurísticos
Un algoritmo heurístico directo es forzar al problema para que se vea como uno de dos
permutación para el problema original. Los diferentes enfoques para convertir el problema
Sean Pi1' y Pi '2 los tiempos de procesado para el problema de dos máquinas. Entonces, para
46
ellos sugieren comenzar con k = 1 y l = m y generar un programa con el algoritmo de
y l = 2. se usa el mejor de los (m –1) programas generados. Existen otras formas para
y defina
regla en el algoritmo de Johnson para una máquina intermedia dominada, porque es exacta
de las operaciones, que contribuye a que se den respuestas tardías a los cambios en la
42
SIPPER y BUFFIN, Op cit., p. 448
47
demanda, la no-optimización de los recursos, entre otros. Esto se da porque su estructura
sincronicen los niveles de planeación jerárquica43 en especial el corto plazo, a la vez que la
proporcionando un sistema de apoyo para la planeación a corto plazo, que permite realizar
operaciones y centros de trabajo en conjunto con las necesidades MRP provenientes del
y fácil de implementar.
43
QUINTERO M, Víctor Manuel. Alternativa empresarial. Cali : Icesi, 1998 p. 257
44
Planificación en línea. En : Dinero. No 79 (Mar 12 1999); p. 90-91.
48
3. LÓGICA DE DISEÑO
Excel de la versión 2000 del Office, donde el primero se usa para la captura de los datos y
el segundo para el análisis de los mismos. Adicional a estos dos programas nos apoyamos
realizan en las macros para Excel y los sucesos de eventos para Access.
de la aplicación. Dado que Access es menos conocido o usado que Excel presentamos una
aproximación a éste programa relacionándolo con el concepto de las bases de datos, ya que
tiene distinta interpretación según la aplicación, comenzamos con Excel para generalizar su
uso en Access y así soportar porque se eligió como recurso válido en la captura de los
datos.
49
Programas usados.
Hoy existe un programa para cada actividad profesional, lo que sólo ha sido posible gracias
las necesidades de nuestra sociedad, cada vez más especializada, respondiendo con
soluciones prácticas a las demandas concretas de cada sector. En este sentido, los
programas profesionales suelen ser muy complejos y no están al alcance de todo el mundo,
pero existen algunos – como es el caso de la base de datos Access y la hoja de cálculo
Excel – que también pueden ser utilizados por el usuario particular para realizar algunas
Access es una base de datos relacional, lo cual significa que es capaz de combinar la
sistema permite tener almacenados los datos de forma lógica en tablas de tamaño pequeño
que hacen más fácil el trabajo – y que el computador opere con mayor rapidez.
Si en algún momento desea extraer información muy específica de una base de datos
necesitará crear lo que en Access se conoce como consulta. La función de este elemento es
buscar entre los registros que contienen las tablas aquellos que se ajustan a unas
condiciones determinadas.
45
Manual de Informática Básica, Barcelona: editorial SOL 90 Ltda.
50
De otro lado, para trabajar óptimamente con operaciones matemáticas lo más adecuado es
utilizar una hoja de cálculo. Aunque en el mercado existen diversos programas de este tipo,
Office – es el de uso más extendido. Su éxito está ligado a la capacidad que tiene de hacer
fácil lo difícil, lo cual la convierte en una herramienta fundamental para el trabajo y para la
casa.46
Para crear los elementos de una interfaz, bastará con pulsar los controles de interfaz de
utilizar en una ventana especial llamada Ventana Código. La escritura del código de
programa proporciona mayor control sobre el modo de trabajo del programa. El uso del
Visual Basic contiene varios cientos de sentencias, funciones y caracteres especiales, pero
46
Ibid., p. 210.
51
la mayoría de las tareas de programación podrán ser gestionadas por unas cuantas docenas
Microsoft Visual Basic para aplicaciones se incluye dentro del Microsoft Excel, Microsoft
aparecen. Los programas esperan al usuario a que de una respuesta (la entrada) para
a partir de un grupo de objetos ‘inteligentes’ que saben como responder cuando el usuario
Un procedimiento es una unidad de código de Visual Basic que contiene una serie de
instrucciones y métodos que realizan una operación específica. Un evento es una acción
Microsoft Access responde a una variedad de eventos: clic del mouse, cambios en los datos,
formularios que se abren o cierran, y muchos otros. Es por eso que apoyados con la
47
HALVORSON, Michael. Microsoft Visual Basic 4 : paso a paso. Colombia : Mc Graw Hill, 1996.
52
programación en Visual Basic se aprovecha en el desarrollo de la aplicación esta potente
característica.
Los eventos son normalmente el resultado de una acción del usuario. Si se usa un
evento nombrada para el evento y el objeto al modulo del respectivo. Lo que se necesita
hacer es agregar el código que responda de la forma que se desee cuando se produzca el
Una sola acción, como puede ser pasar de un control a otro puede desencadenar varios
eventos diferentes que suceden de una determinada secuencia. El saber cuándo ocurren los
eventos y en qué orden lo hacen es importante, porque esto afecta a cómo y cuándo se
modificar y/o actualizar datos en un control, eliminar registros, crear nuevos registros,
pulsaciones de teclas, son muestra de los variados eventos que pueden ocurrir.
53
depende el control. Las macros y los procedimientos de evento proporcionan una mayor
La naturaleza, dirigida por eventos de Visual Basic, significa que la mayoría de los cálculos
bloques de códigos específicos procesan entradas, calculan nuevos valores, gestionan tareas
y muestran la salida.
Cada objeto de Visual Basic tiene un conjunto predefinido de eventos a los que puede
responder. Estos sucesos se listan para cada uno de los objetos en el cuadro de lista
predeterminadas varias propiedades para cado uno de sus objetos, es así como podremos
asociado con el mismo. Por ejemplo, cuando se pulsa el botón de comando en un programa,
54
el evento (Al hacer clic) ejecuta el procedimiento de evento Command_Clic asociado. (Ver
Anexos B Códigos). La figura 3-1 muestra los eventos predeterminados que Access tiene
Las funciones proporcionadas dentro de los paquetes integrados permiten a los usuarios
metodología determinada cuando construyen bases en hojas de cálculo para modelar. Esto
que producen modelos que parecen más complejos de lo que ellos necesitan ser y son
48
A framework for building spreadsheet based decision models, D Mather, Monash University, Australia,
1997. http://www.stockton-press.co.uk/0160-5682/v50n1/pdf/2600672.pdf
55
Excel
En Excel se identifica el concepto de base de datos con el de lista (o tabla). Por lo tanto una
base de datos en Excel es un conjunto de filas en las cuales una columna tiene siempre el
mismo tipo de información. La definición que da Excel de lista es: “Serie rotulada de filas
de hojas de cálculo que contiene grupos similares de datos, como una base de datos de
usarse como una base de datos, donde las filas son registros y las columnas son campos.”
específica para realizar operaciones de base de datos como: introducir, borrar, buscar,
ordenar o efectuar el subtotal de los datos, el programa reconoce la lista como una base de
datos.
Para crear una base de datos o una lista en Excel se debe introducir una primera fila en la
siguientes cada uno de los datos. Estas filas constituyen los registros de la lista. Por ejemplo
se crea una lista para contener los datos de carné, nombre, dos apellidos y curso de una
serie de alumnos. Dos de las operaciones que Excel permite realizar con dichos datos son:
edición y ordenación.
Ordenar mediante criterios, realizar un filtro para obtener una nueva sublista o hallar
subtotales de los campos que se deseen, son funciones propias de una aplicación de gestión
de bases de datos, sin embargo existe una diferencia fundamental entre Excel y una
56
aplicación de base de datos: Excel sólo puede tener una lista en cada hoja y no puede
de datos, lo que Excel llama lista o base de datos se denomina tabla. Y el conjunto de todas
las tablas con sus relaciones es lo que realmente constituye la base de datos.
bases de datos diseñado para ser utilizado en computadoras personales tipo PC. Aunque no
está considerado como un sistema ‘serio’, lo cierto es que permite realizar las mismas
tareas que los tradicionalmente considerados sistemas ‘serios’, como puede ser Oracle. A
diferencia de éste, Access puede funcionar en sistemas de bajo costo, y es mucho más
asequible. Además, dispone de un entorno muy amigable (al estilo Windows 98). Por esta
razón, cada vez más empresas apuestan por este sistema; tanto es así que los fabricantes de
los sistemas ‘serios’, incluido Oracle, tienden a hacer que sus productos se parezcan, en
cuanto a interfaz de usuario se refiere, a lo que el usuario pide, que no es otra cosa que el
entorno visual. Así aparece Developer 2000, un entorno visual para crear aplicaciones para
Oracle.49
49
Prácticas de Bases de Datos / Bases de Datos I, Curso 1997-98. Universidad de Huelva. España.
57
Access es un programa para la gestión de información. Permite diseñar las estructuras para
Una peculiaridad que se debe tener en cuenta al trabajar con programas de gestión de bases
de datos, como es el caso de Access, es que no existe la opción Save (Guardar), referida a
los datos de la aplicación, debido a que los cambios en los datos se van guardando siempre
refiere a guardar los cambios realizados en el diseño de los distintos objetos que componen
Access
Sistema de Gestión de Bases de Datos SGBD o DBMS (Data Base Management System).
La estructura básica de esta información son tablas, que se corresponden con las listas de
Excel. Para una mejor gestión de la información y para reducir el número de datos, las
tablas se relacionan, por ejemplo si se desean tener listas con los pedidos de cada cliente, en
vez de incluir el nombre, Nit y otros en la lista de cada pedido, bastará con almacenar el
código de cada cliente. El código del cliente en la lista de pedidos sirve para establecer una
relación con los datos de la cada cliente en la tabla clientes, ( Ver Figura 3-2.) Debido a este
50
SARRIEGUI, José María, SERRANO, Nicolás, MURO, Iván. Aprenda Microsoft Access 97 como si
estuviera en primero. San Sebastián, Octubre 1998 Escuela Superior de Ingenieros Industriales,
Universidad de Navarra
58
carácter relacional, Access es un sistema de gestión de bases de datos relacional SGBDR o
Es importante mencionar que en Access es posible exportar hojas de datos a páginas HTML
estáticas o dinámicas del World Wide Web, así como toda una serie de utilidades para
trabajar con intranets privadas y con la red pública Internet. Aunque esta característica no
al poder ser instalada en un servidor para permitir consultas desde diferentes terminales.
Conceptos generales
El ejemplo de la base de datos o lista de Excel nos sirve para exponer los tres conceptos
básicos de bases de datos: tablas, campos y registros. Una tabla es una colección de datos
con la misma estructura. Si se disponen los datos en una hoja de cálculo, una columna
siempre tiene el mismo tipo de dato, por ejemplo un nombre, un número de teléfono etc.
59
Cada tabla es un conjunto de información relativa a una categoría específica, consta, de un
cierto número de campos, en cada uno de los cuales se guarda un dato, que puede ser
del campo. Un registro es cada una de las filas de la tabla, y está formado por el dato de
cada uno de los campos almacenados en una misma operación.(Ver Figura 3-3.) En el
ejemplo anterior, la lista de clientes constituye una tabla en Access. Esta tabla consta de 12
Una base de datos es un conjunto de tablas que se utilizan para gestionar un determinado
académica de una universidad, la base de datos de los pedidos de una empresa o la base de
datos de centros de trabajo. Por lo tanto la base de datos está constituida por la estructura de
60
base de datos. Para ser exactos Access es una aplicación de gestión de base de datos. Es la
misma diferencia que existe entre un procesador de textos como Word y un documento de
Word..
Tablas (Tables): La tabla es el tipo principal de objeto de una base de datos. El concepto de
tabla se ha explicado al ver la relación de Excel con las bases de datos. Como resumen, una
tabla es un conjunto de datos estructurados en columnas (los campos) y filas (los registros).
datos.
Consultas (Queries) Operaciones que pueden realizarse sobre los datos de las tablas:
entre otras.
Macros y módulos: segmentos de código en lenguaje de alto nivel (Access Basic, Visual
Basic, lenguaje de macros,...) que permiten realizar operaciones complejas con los datos y
datos. En Excel, a partir de una lista se puede generar automáticamente un formulario para
introducir los datos. Access posee herramientas para realizar el diseño de los formularios de
una manera mucho más elaborada utilizando listas desplegables, rejillas, botones de opción
61
y de selección, etc. El formulario permite introducir, modificar, consultar y borrar los
presentación como hoja de datos es que los campos se presentan de manera más adecuada
al usuario, con un diseño que ayuda a su comprensión, utilizando los controles más
adecuados a cada tipo de información. En algunos casos la tabla puede ser la mejor manera
representación en la pantalla.
Una página de acceso a datos es muy similar a un formulario, pero puede utilizarse para
acceder a la base de datos desde un navegador web de la misma manera que lo haría desde
Access. De hecho, a diferencia de un formulario, que se guarda como parte de una base de
datos, las páginas de acceso a datos se almacenan en el disco duro de forma independiente
En general, se puede afirmar que el diseño de la presentación de los datos es uno de los
adecuado a cada usuario reduce el tiempo de aprendizaje y motiva al usuario, lo que es casi
62
Los formularios son la principal interfaz o vía de comunicación entre el usuario y la base de
datos. Entre las utilidades más importantes de los formularios se pueden citar las de mostrar
y editar datos de una o varias tablas o consultas, la de controlar el flujo de la aplicación con
el formulario se decide cuál es el tipo de formulario que mejor se adapta a cada situación.
El tipo de formulario más sencillo muestra los valores de todos los campos de una tabla o
consulta. Es posible avanzar uno a uno a lo largo de todos los registros y moverse al
primero o al último de la tabla, para ver sus valores y/o modificarlos. También se puede
Para moverse entre los diferentes registros ingresados a la base o para ingresar uno nuevo
ventana activa (Ver Figura 3-4). Puede utilizar estos botones para desplazarse rápidamente
63
Los formularios en Access son versátiles: permiten realizar tareas que no son posibles en
las hojas de datos tabla o consulta. Es posible validar las entradas con base en la
Un formulario puede mostrar los datos de tablas o consultas con una relación uno a varios
principal aparezcan los datos del lado único de la relación y en el subformulario se pueda
que el subformulario presente sólo los registros que están relacionados con el registro
actual del formulario principal. Cuando se utiliza un formulario con un subformulario para
principal cuando se introduce el subformulario. Esto asegura que los registros de la tabla
‘varios’ tengan un registro en la tabla ‘uno’ con el que relacionarse. También guarda
64
Figura 3-5. Detalle subformularios
superior se muestran los datos propios del pedido y en la inferior los distintos artículos que
forman las líneas del mismo. En la aplicación se manejan formularios jerárquicos anidados,
es decir que, un mismo formulario puede ser subformulario (lado ‘varios’ de la relación)
para una relación de datos y ser al tiempo formulario principal (lado ‘uno’ de la relación)
para otra. La figura 3-5 presenta formularios anidados que muestran esta condición.
Los formularios son la parte de la aplicación que va a estar a disposición de los usuarios,
especial cuidado en su diseño y construcción. Los usuarios que manejen los formularios
deben encontrarlos sencillos y eficientes. Aunque es posible utilizar las hojas de datos de
65
tablas y consultas para realizar muchas de las funciones de los formularios, éstos tienen la
usuarios.
Un formulario especial es el panel de control que funciona como un menú, esto facilita la
formularios específicos. Frente a cada uno de los elementos que conforman el panel de
Controles
Los controles son los objetos que forman el formulario para componer su aspecto externo o
para editar los contenidos de las tablas o consultas. El control más habitual es la caja de
texto (text box) pero hay otros controles que pueden resultar más adecuados para
determinados tipos de datos. Entre otros tenemos las listas (list), la lista desplegable
(combo list), y para datos que sólo puede tomar dos valores (verdadero o falso, uno o cero,
etc.) el botón de verificación (Check box). Uno de los controles más utilizados es el botón
ya que permite que determinada acción no comience hasta que sea requerida por el usuario,
entre otras.
66
3.2 ESTRUCTURA DE LA APLICACIÓN
Para describir la estructura de una base de datos es necesario definir el concepto de moldeo
de datos, una colección de herramientas conceptuales para describir datos, relaciones entre
ellos, semántica asociada a los datos y restricciones de consistencia. Los diversos modelos
de datos basados en objetos se dividen en tres grupos: modelos lógicos basados en objetos,
Los modelos lógicos basados en objetos se usan para describir datos en los niveles
explícitamente. Hay muchos modelos diferentes, y es probable que aparezcan más. Algunos
• El modelo entidad-relación.
51
KORTH, Henry F y SILBERSCHATZ, Abraham. Fundamentos de bases de datos. 2 ed. España : Mc
Graw Hill, 1995. p. 6-7.
67
Modelo funcional.
datos, que muestran el flujo de valores desde las entradas externas a través de las
Los diagramas de flujo de datos son una herramienta gráfica que se emplea para describir y
analizar el movimiento de datos a través de un sistema, ya sea que éste fuera manual o
Los diagramas de flujo de datos son la herramienta más importante y la base sobre la cual
Contiene un solo proceso pero juega un papel muy importante en el estudio del sistema en
uso. El diagrama de contexto define el sistema que va ha ser estudiado en el sentido que
determina las fronteras. Los procesos de bajo nivel son operaciones que se desagregan de
Los métodos para el análisis de flujo de datos fueron desarrollados y promovidos al mismo
68
aplicación de utiliza el enfoque de Yourdon el cual utiliza cuatro notaciones sencillas,
símbolos especiales o iconos y anotaciones que los asocian con un sistema especifico.52
3. Fuente o destino de los datos (cuadro): fuentes o destinos externos de datos que pueden
52
SENN, James A : Análisis y diseño de sistemas de información. 2 ed. México : Mc Graw Hill, 1992. p 181.
69
Cada componente en un diagrama de flujo de datos tiene una etiqueta con un nombre
descriptivo. Los nombres de los procesos también reciben un número que es utilizado con
fines de identificación.
Diagramas de flujo
políticas y
estrategias
Dirección requerimientos
y de inversion Finanzas
Gestión
0
Mercadeo datos de
datos de Recursos
y personal
clientes orden entrada Humanos
Ventas
de materiales
Ingeniería
Compras datos de de
procesos procesos
orden de compra
Los diagramas están estructurados por niveles que representan la jerarquía de la planeación
nivel 3 de la planeación a corto plazo. Mostrando en ellos los procesos, las entidades y los
70
objetivos a
largo plazo
DIRECCIÓN
Y
GESTIÓN
presupuesto políticas y
de producción estrategias
Centro
nivel de fuerza laboral Personal
de
1
Costos
aprobación de
fondos personal asignado
ventas reales
estimaciones
de demanda Ventas Compras
a largo plazo datos plan pedidos
agregado comprometidos
clientes
orden de compra
Planeación de materiales
Pronósticos datos familias
Agregada 2
agregadas
Lista de materiales
mix de productos
Mercadeo MRP
órdenes
de pedido
materiales disponibles
planificadas
Métodos
Inventarios de
requerimientos de materiales Programación
métodos
requeridos
métodos
solicitados
capacidad detallada
CRP
3
datos capacidad planificada
ajustes de capacidad
PLANEACIÓN A CORTO PLAZO
(HPP-S)
orden producción
71
La figura 3-7 presenta y relaciona los tres niveles del sistema de planeación jerárquica,
‘HPP-S’.
Lista de
Materiales
Órdenes 3.1
de pedido
planificadas métodos requeridos
solicitud Métodos
PREPARACIÓN datos cliente de
PEDIDO Programación
datos producto
solicitud de métodos
3.2
seleccionar gráfico
Producto SCHEDULING
pedidos
asignados
datos pedido
pedidos para Gráficos
programar de
Gantt
PLANTA orden de
DE producción
PRODUCCIÓN
control de la capacidad
CRP CONTROL
capacidad
planificada ajustes de
capacidad
anterior, en los tres procesos básicos tomados para el modelo de datos, soporte para el
72
Producto
datos producto
componentes
productos
Estructura
Producto
3.1.1
partes componente
producto
INGRESAR
DATOS Partes
PRODUCTO Componente
datos productos
detalles rutas
producto
Rutas
producto
INGRESAR
RUTAS
3.1.4
datos producto
Producto
datos cliente
Tiempo
de programación
Entrega hacia delante
3.1.3 elemento
cantidad a emitir
INGRESAR tipo
DATOS Cantidad
PEDIDOS requerida
unidad
detalle pedido
duración en
días de
fecha de entrega operaciones
Pedido
fecha de emisión
# pedido
Programacion
detallada
carga por
operación al
CT
73
La figura 3-9 desagrega el subproceso 3.1 ‘preparación pedido’ de la figura anterior en las
Control pedido
detalle pedido
Control Carga
ASIGNACIÓN
Producción Operaciones
Rutas producto
rutas iniciadas
control operaciones
datos del CT
cargas por CT
N/1CT/Mmaq
MÉTODO
3.2.2 HÚNGARO
datos del CT
datos de
N/1
las máquinas
CT/1maq
carga operaciones SECUENCIACIÓN
REGLAS
DE
PRIORIDAD
N/2CT
REGLA órdenes Planta
DE datos del CT
secuenciadas
JOHNSON
La figura 3-10 desagrega el subproceso 3.2 ‘scheduling’ de la figura 3-8 en las operaciones
secuenciación.
74
La figura 3-11 desagrega el subproceso 3.3 ‘scheduling’ de la figura 3-8 en las operaciones
carga operaciones
Producción
Producción Real
Planeada centros periodo
trabajo
3.3.1 avance
producto
gráficos de Gantt ANÁLISIS
POR
PERIODO
Es una descripción del aspecto del mundo real que el diseñador intenta capturar en un
entidades u objetos de interés relacionados entre sí por interrelaciones que son la relación
que vincula a dos o más entidades no necesariamente distintas.53 Estas relaciones pueden
53
RUMBAUGH et al. Modelado y diseño orientado a objetos. 4 ed. México : Prentice may, 1995
75
ser: relaciones 1:1 , uno a uno; relaciones 1: , uno a varios; relaciones : , varios a
varios.
En Access la relación entre tablas se muestra por líneas que las une. Para evitar que se
generen errores en las bases de datos permite usar integridad referencial obligatoria para
asegura que no exista un registro ‘varios’ que no coincida con un registro en ‘uno’. Además
esta también permite habilitar las opciones de: actualizar en cascada los campos
La integridad referencial es entonces un sistema de reglas que utiliza Access para garantizar
que las relaciones entre los registros de tablas relacionadas son válidas y que no se eliminan
3.2.2 Tablas.
Las tablas son los almacenes de datos, y su diseño consiste en la definición de los campos
Detallamos ahora cuales son y como están definidos los campos para cada una de las 20
54
NEIBAUER, Alan. Access 2000 para gente ocupada. Mexico : Mc Graw Hill, 2000. p. 183
76
Centro_trabajo
Idcentro Auto numérico Clave principal
Nombre_centro Texto
cap_d_hr_reales Numérico
cap_d_hr_estándar Numérico
Eficiencia Numérico
Utilización Numérico
t_ medio_preparación Numérico
t_medio_de_cola Numérico
Clientes
Idcliente Auto numérico Clave principal
Nombre_cliente Texto
Teléfono Texto
Componentes
Idcomp Auto numérico Clave principal
Producto Numérico
Material Numérico
Cant Numérico
Idund Numérico
Idlistaruta Numérico
Factor Numérico
Componentes1
Idcomp1 Auto numérico Clave principal
Idcomp Numérico
Material Numérico
Cant Numérico
77
Idund Numérico
Idlistaruta Numérico
Factor Numérico
Componentes2
Idcomp2 Auto numérico Clave principal
Idcomp1 Numérico
Material Numérico
Cant Numérico
Idund Numérico
Idlistaruta Numérico
Factor Numérico
Control_operaciones
Idcontxopr Auto numérico Clave principal
Idcontrolruta Numérico
Idoperación Numérico
Iniciada Sí/No
Terminada Sí/No
Control_ruta
Idcontrolruta Auto numérico Clave principal
Idpedido Numérico
Idproducto Numérico
Nombre_ruta Texto
Cant_emitir Numérico
Cant_pend Numérico
cantidad Numérico
Iniciada Sí/No
Terminada Sí/No
78
Detalle_pedido
Iddetallepedido Auto numérico Clave principal
Idpedido Numérico
producto Numérico
cantidad Numérico
Iniciada Sí/No
Terminada Sí/No
In_out
Idin_out Auto numérico Clave principal
Idper Numérico
Idcentro Numérico
Hr Numérico
Input_planeado Numérico
Input_real Numérico
output_planeado Numérico
output_real Numérico
Lista_materiales
Idmaterial Auto numérico Clave principal
material Texto
Tipo Texto
Lista_rutas
Idlistaruta Auto numérico Clave principal
Nombre_ruta Texto
Factor Numérico
Máquinas
Idmaq Auto numérico Clave principal
79
Idcentro Numérico
Idoperación Numérico
operación Texto
Maq1 Numérico
Maq2 Numérico
Maq3 Numérico
Maq4 Numérico
Maq5 Numérico
Maq6 Numérico
Maq7 Numérico
Maq8 Numérico
Maq9 Numérico
Operaciones
Idoperación Auto numérico Clave principal
Idlistaruta Numérico
Centro Numérico
Operación Texto
T_ejec Numérico
T_medio_desplaz Numérico
Aprovech Numérico
Fact Numérico
Operaciones_CT
IdoperxCT Auto numérico Clave principal
Centro Numérico
Operacion Texto
Pedidos
Idpedido Auto numérico Clave principal
80
Cliente Numérico
Fecha_emisión Fecha/hora
Fecha_entrega Fecha/hora
F_entrega _real Fecha/hora
Iniciado Sí/No
Periodo
Idper Auto numérico Clave principal
Fecha Fecha/hora
Productos
Idproducto Auto numérico Clave principal
Producto Texto
Idlistaruta Numérico
Factor Numérico
Switchboard Items
switchboardID Numérico Clave principal
ItemNumber Numérico
ItemText Texto
command Numérico
Argument Texto
Tipo
Idtipo Auto numérico Clave principal
tipo Texto
Unidad
Idund Auto numérico Clave principal
unidad Texto
81
3.2.3 Modelo entidad – relación en la aplicación
En general, nunca se debe poner toda la información que se tenga en una sola tabla. Por
definición, mientras más campos e información se disponga en una tabla, más difícil será
trabajar con ella. La mayor parte de las veces se debe dividir la información en dos o más
tablas, y luego se le indicará a Access qué relación tienen las tablas entre sí. Se relacionan
las tablas unas con otras mediante uno o más campos para que los registros de cada una
coincidan. En una base de datos, se pueden crear varios tipos de relaciones. En una relación
de las que se denominan uno a uno, cada registro de una tabla se relaciona sólo con un
registro en la otra. Así por cada registro con la dirección de un cliente existe un solo
registro de crédito. También puede haber relaciones llamadas uno a varios, esto significa
que un registro en una tabla puede estar relacionado con uno o más registros en otra tabla.
El registro de un cliente en la tabla clientes, puede estar relacionado con más de un registro
de la tabla pedidos.55
Las relaciones que existen en la base de datos se dividen principalmente en tres bloques que
• Las relaciones para identificar el producto, sus componentes y rutas. Figura 3-12.
• Las relaciones para realizar la carga a planta de los pedidos y su posterior control
55
Ibid., p. 17-18.
82
Figura 3-12. Relaciones producto
83
Figura 3-14. Relaciones control
de datos mientras que la hoja de cálculo de Excel tiene la función de manipulación de los
mismos. Pero hay que controlar lo que se envía a Excel para obtener datos veraces al
momento de servir de apoyo en la toma de decisiones. Es por eso que Access también hace
filtros para la información que está guardada en la base de datos por medio del uso de
casillas de verificación, las cuales al estar marcadas o no, permiten controlar la información
que se presenta en los formularios a medida que se navega por ellos. Es así, como esta
calcularse cuando no son necesarios (por ejemplo pedidos entregados) aumentan el tamaño
84
Figura 3-15. Datos ruta P1
Como Excel procesa los datos pero Access los guarda, éste último puede también generar
nuevos datos con los almacenados. Como es el caso del tiempo de entrega o tiempo de
El cálculo del tiempo de suministro y la carga se realiza siguiendo el ejemplo 5.1 del libro
de Machuca56, de donde traemos los datos de la ruta P1 (Ver Figura 3-15). Las relaciones
en la aplicación para este fin se muestran en la figura 3-16. Las ecuaciones se explican a
56
MACHUCA DOMÍNGUEZ, José Antonio et al. Aspectos tácticos y operativos en la producción y los
servicios, Op cit., p. 160
85
continuación. (Sin tener un tiempo para la confección del pedido, la espera final ni la
inspección.)
momento en que está disponible para ser utilizado, se desglosa este tiempo en sus distintos
componentes, considerando las distintas operaciones necesarias para obtener cada ítem, los
horas estándar. La figura 3-17 muestra los datos de los centros de trabajo para la ruta ‘P1’.
86
De esta forma, se ve claramente el desarrollo de cada proceso y los tiempos que ello
implica; por ejemplo para obtener un lote de 186 unidades de P1 se comienza realizando la
primera operación en el primer centro de trabajo según la ruta, continuando con la segunda
y así sucesivamente. La suma de todos estos tiempos da lugar al tiempo de suministro total.
cálculos del lado derecho provenientes del apéndice 5A de Machuca57. La diferencia en los
aplicación creada.
Las ecuaciones para el cálculo de la carga se usan los datos de la ruta y los del centro de
trabajo por donde pasa. La carga se calcula en horas estándar (h.e) para cada operación de
la ruta tomando en cuenta para cada una los valores propios al centro de trabajo por donde
pasa.
Carga (h.e) = ejecución (h.e) + preparación (h.e) [tiempo medio de preparación del CT]
donde
57
Ibid., p. 190
87
En la ruta de ‘P1’ los valores para la carga por operación en cada centro de trabajo son:
para la operación 01 de 16,15 h.e, para la operación 02 de 3,94 h.e, y para la operación 03
Observe en la figura anterior para las 3 operaciones de la ruta ‘P1’, el tiempo (duración) en
días necesarios para elaborar el producto, y la carga que se genera por las 186 unidades
requeridas.
por medio de Johnson. La versión del Office en la que debe ejecutarse la aplicación, las
Aunque la aplicación se diseño para empresas que tienen configuración orientada al Flow-
shop. En el caso de empresas que suelen fabricar bajo pedido (job shop), se da la opción
88
por medio de Johnson para realizar una programación de los centros de trabajo que son
componentes.
Para filtrar los datos antes de enviarlos a Johnson en Excel, se tomó en cuenta lo siguiente:
dada la complejidad para dejar de forma automática el cargar un centro de trabajo luego
que el usuario eligiera uno, por la variedad de opciones que se deberían tener en cuenta, por
la composición de las rutas algunas pasaran del centro 1 al 3, otras entraran al centro 2 sin
pasar por el 1 o las que del centro 2 no pasan al 3 sino que regresan al 1.
Por la complejidad que se toma el tratar de desarrollar un algoritmo para que cubra esas y
muchas otras condiciones se deja en manos del usuario, que sea él, quien conociendo los
dos centros que desea analizar, seleccione y ordene los centros según requiera.
vinculada a la primera, donde la primera filtra para el centro de trabajo seleccionado las
rutas y cargas de las operaciones iniciadas en el centro; la segunda busca entre las rutas
resultado de la primera consulta, cuales pasan por el centro seleccionado en segundo lugar,
Después de esto se envían a Excel los datos resultado de las consultas para ser ordenados
89
3.3.2 Sistema operacional.
planeación y en ese sentido a que deben tenerse unos datos resultado del mediano plazo que
son elementos de entrada para éste el corto plazo, así como la información proveniente de
la propia empresa del conocimiento de sus procesos: información del mediano plazo en el
automático, debe ser preciso y apropiado. Esto significa que necesita una base de datos de
planificación que son: (1) el archivo maestro de artículos, que contiene información sobre
cada componente que la empresa fabrica o compra; (2) un archivo de rutas, que indica la
marcha de cada componente por el centro de trabajo; y (3) un archivo maestro del centro de
eficiencia.58
58
HEIZER, y RENDER, Op cit., p. 207-208.
90
Como el objetivo de este proyecto es el de entregar una aplicación funcionando, se
adecuaron los espacios para ingresar la información necesaria para que la planeación a
corto plazo se realice. Es por eso que en el interior de la aplicación se creo un MRP
La aplicación cuenta con una barra de menú y una barra de herramientas que ofrecen al
formularios y funciones.
Mostramos ahora el despliegue de los nombres que integran la barra de menú sin detallar en
Preparación pedido, Scheduling, Control, Ventana y para terminar la ayuda ‘?’ (símbolo
interrogante)
91
Figura 3-22. Barra de Menú- Archivo y Edición.
En el menú Archivo la opción compactar y reparar base de datos es útil para mantener el
tamaño del archivo en espacio de disco acorde con los datos ingresados y evitar que se
En ‘Datos empresa’ del menú General se encuentra el formulario donde, como su nombre
lo indica, se ingresan los datos propios a la empresa: nombre, nit, teléfonos, fax, etc.
92
Figura 3-24. Barra de Menú- Preparación Pedido.
El menú preparación pedido contiene las divisiones del panel con el mismo nombre, y
dentro se han colocado los submenú ‘Ingresar datos producto’ y ‘Ingresar datos ruta’ que se
despliega al ubicarse sobre cada uno. Esto para reunir en un solo menú los datos que se
Los dos últimos submenús de la barra de menú, figura 3-26, son los convencionales que
93
Figura 3-26. Barra de Menú- Ventana y ?.
Selección en formularios.
los nombres de rutas u operaciones que vaya a iniciar por medio de formularios
Access como base de datos relacional de heredar características de las tablas padre
Por eso, como no se logró cargar de forma automática las operaciones asociadas a una ruta
facilidad de que sea el mismo quien controle todo el proceso, decidiendo que se hace y en
que momento.
aplicación con los valores o cantidades reales por las existencias en los diferentes
inventarios, teniéndose así, el no tener que iniciar una ruta desde la operación inicial si ya
se encuentra algún material en proceso o el no tener que cargar todas las rutas para elaborar
94
4. LÓGICA DE LA APLICACIÓN
algunos comentarios dirigidos al usuario sobre las posibilidades que tiene la aplicación
Para el corto plazo se hace referencia a los datos que provienen del nivel anterior según
95
Figura 4-1. Formularios en la aplicación.
La figura 4-1 muestra para las tres divisiones principales de la aplicación: los formularios
que tienen conceptos teóricos y el orden de aparición de los mismos. Para explicar mejor el
Figura 4-2)
96
Figura 4-2. Diagrama de ensamblado para el producto ‘Silla’.
Partes/componestes.
Los componentes y cantidades para una unidad del producto ‘Silla’ son:
Los nombre de las partes o componentes que son usados en la elaboración de los diferentes
productos ofrecidos por la empresa se ingresan a la base de datos. Teniéndose así, una lista
97
única que centraliza y codifica cada parte o componente que requiere la empresa para su
producto según sea su composición. Aquí se usa el concepto de lista materiales que hace
• Las cantidades necesarias de cada uno de ellos para formar una unidad del producto
intermedio o final.
En el formulario estructura producto por los enlaces entre los subformularios anidados que
lo conforman, se puede armar el árbol del producto al desagregarse hasta cuatro niveles:
fabricación y montaje.
La división por niveles facilita la explosión de las partes requeridas MRP para un producto
98
Nivel 0 (Producto): El producto terminado, como resultado del ensamble de varios
identificando su tipo.
1, identificando su tipo
2, identificando su tipo.
La figura muestra el árbol de estructura para el producto ‘Silla’ La forma como se obtiene
99
La aplicación se diseño para soportar productos que se desagreguen hasta un tercer nivel.
debido a su tamaño.
La estructura diseñada es útil para presentar el árbol estructura del producto que se apoya
Centros de trabajo.
Los centro y las operaciones que interviene en la realización del producto ‘Silla’son:
1. CORTE.
1. Medición.
2. Corte de pieza.
3. Mecanizado.
2. TROQUELADO.
4. Doblado pieza.
5. Lijado.
3. PERFORADO.
6. Medición.
7. Perforado.
4. TERMINADO.
8. Pintura.
9. secado.
5. ENSAMBLE.
10. Armado.
11. Remachado.
100
Capacidad Capacidad Tiempo medio Tiempo
id Nombre centro diaria horas diaria horas eficiencia utilización preparación medio de
reales estándar (h.e) cola (h.e)
1 CORTE 8,5 8,16 0,98 0,98 1 3
2 TROQUELADO 8,5 6,50 0,9 0,85 1 4
3 PERFORADO 8,5 5,44 0,8 0,8 1 4
4 TERMINADO 8 6,12 0,9 0,85 0,15 0
5 ENSAMBLE 8 6,62 0,92 0,9 0,1 0
factores y tiempos. En la aplicación ‘HPP-S’ los factores se calculan en las hojas de ruta, y
• La capacidad diaria en horas reales (hr) es igual una jornada normal de trabajo.
horas productivas desarrolladas (Nhp) y el número de horas reales (Nhr) de trabajo por
periodo. (día)
dando lugar a un número diferente de horas productivas en función de quien las ejecute.
Por tal razón se hace necesario la aplicación de una medida homogénea basada en los
compararlas. Dicha unidad se denomina hora estándar (he) y supone un valor de 1 para
instalaciones bajo las condiciones adecuadas para llevar acabo una nueva operación
101
tras haber desarrollado otra diferente, y este valor podrá variar para una operación en
función de la cual sea previamente realizada por lo que se suele emplear el tiempo de
preparación medio.
• El tiempo de cola es el que sufre el pedido en cada uno de los centros de trabajo por los
que ha de pasar hasta que se realicen todas las operaciones que sean necesarias. Como
Máquinas paralelas.
idea de máquinas por ser esta la situación más tratada por los diferentes autores
específicas que se realizan en determinado centro. Detallándose para las rutas que pasan por
el centro de trabajo las operaciones paralelas que se presentan en éste, y para cada
Hoja de ruta.
Para cada parte/componente del producto, que se elabora en la planta se toma la secuencia
de las operaciones, en cada uno de los centros de trabajo por los que pasa, asignándose a
cada secuencia un nombre representativo que la hace única en la base de datos. Además se
102
de aprovechamiento, que se emplean para evaluar los requerimientos de capacidad para
cada CT. (En la aplicación no se incluye en esta hoja los tiempos de espera o cola por
El tiempo de ejecución es el tiempo necesario para desarrollar una operación una vez se
producto final, se obtiene una cierta proporción de elementos que no cumplen los requisitos
de calidad. Esta proporción, expresada en tanto por uno, se denomina Factor de defectuosas
cualquier operación tenga un ‘d’ > 0, habría que corregir el TCjk (tiempo de carga de cada
componente o producto final ‘j’ en un centro de trabajo ‘k’), dado que la obtención de un
elemento “bueno” originaría en realidad más carga que la calculada, es decir habría que
incluir las que han generado las piezas defectuosas en cada una de las operaciones.
103
Figura 4-4. Incidencia de los factores en la obtención de una unidad
En la figura 4-4, se observa como los diferentes valores de aprovechamiento (ai) por
operación generan que para obtener 1 unidad de ‘P1’ se debe emitir una orden por 1,10
unidades. Esto es, en caso de ser requeridas 100 unidades de ‘P1’ hay que emitir una orden
Silla = Silla
F = Asiento patas delanteras
G = Respaldo patas traseras
A = Marco asiento patas delanteras
C = Asiento
B = Marco respaldo patas traseras
D = Respaldo
104
A 7 PERFORADO. Perforado.
A 8 TERMINADO. Pintura.
A 9 TERMINADO. secado.
B 10 CORTE Medición.
B 11 CORTE Corte pieza.
B 12 CORTE Mecanizado.
B 13 TROQUELADO Doblado pieza.
B 14 TROQUELADO Lijado.
B 15 PERFORADO. Medición.
B 16 PERFORADO. Perforado.
B 17 TERMINADO. Pintura.
B 18 TERMINADO. Secado.
C 19 CORTE Medición.
C 20 CORTE Corte pieza.
C 21 PERFORADO. Medición.
C 22 PERFORADO. Perforado.
C 23 TERMINADO. Pintura.
C 24 TERMINADO. Secado.
D 25 CORTE Medición.
D 26 CORTE Corte pieza.
D 27 PERFORADO. Medición.
D 28 PERFORADO. Perforado.
D 29 TERMINADO. Pintura.
D 30 TERMINADO. Secado.
F 31 ENSAMBLE. Armado.
F 32 ENSAMBLE. Remachado.
G 33 ENSAMBLE. Armado.
G 34 ENSAMBLE. Remachado.
Silla 35 ENSAMBLE. Armado.
Silla 36 ENSAMBLE. Remachado.
libertad del usuario para ingresar los que valores que desee.
Rutas producto.
con una hoja de ruta específica. Las hojas de ruta asociadas a partes componentes en cada
uno de los diferentes niveles de la estructura forman el árbol de rutas del producto.
105
Este árbol de rutas del producto (Ver Figura 4-5) es la forma en que se expresa en
diferentes niveles de fabricación y montaje las hojas de rutas. La codificación por niveles
facilita la explosión de las necesidades a partir del elemento final y su lógica es la siguiente:
Nivel 0 (producto): Unión de las rutas necesarias para obtener el producto terminado. Esta
106
Nivel 2 (Subruta de subensamble): Los componentes unidos directamente a un elemento
Pedidos.
Los pedidos planificados (pedidos que se entregarán en fechas futuras) pueden ingresarse
momento de inicio de cada uno. La aplicación tiene la opción de mostrar para todos los
pedidos ingresados, los días de retraso que tiene cada uno contra la fecha de entrega dada al
cliente, esto en las opciones pedidos pendientes hasta hoy y pedidos pendientes a la fecha.
Secuenciación.
59
SCHROEDOER, Op cit., p. 388.
107
Johnson como elementos en los cuales se puede apoyar para dar rápida respuesta a las
Reglas de prioridad.
Una regla de prioridad específica qué trabajo debe seleccionarse para realizarlo después,
entre una cola de trabajos. Cuando se dispone de una máquina o de un trabajo, se aplica la
regla de despacho y se selecciona la tarea siguiente. Una regla de despacho resulta, por lo
tanto, dinámica por naturaleza y se ajusta constantemente a las condiciones cambiantes. Las
reglas de despacho sirven para responder la pregunta inmediata del trabajador ¿qué hago
ahora?60
dos: FCFS, EDD, LOT y SOT, para con ellas secuenciar las cargas en cada uno de los
Método húngaro.
empleado por los diferentes autores es el Algoritmo de Asignación de kuhn, que parte de
60
Ibid, p. 403.
108
una matriz formada, en nuestro caso, por los tiempos para realizar cada operación en cada
instalación.
Este es el método que se incluyó en el desarrollo de la aplicación para dar respuesta a éste
una matriz que refleja los tiempos que provocaría la asignación de una determinada
resolución, el algoritmo húngaro o de Kuhn, que, partiendo de una matriz de costos, para
nosotros de tiempos, escoge un elemento, y sólo uno, por fila y por columna, de modo que
se minimicen los tiempo totales. El procedimiento que lleva a conseguir una solución
óptima para realizar la asignación se menciono en el capítulo dos, y el algoritmo que realiza
Este método presenta algunos inconvenientes que lo hacen excesivamente rígido. Entre
ellos cabria destacar, por una parte, que de los distintos trabajos, sólo uno puede ser
asignado a cada CT o instalación. Dado que aquellos tendrán distinta duración, esto
61
MACHUCA DOMÍNGUEZ, José Antonio et al. Aspectos tácticos y operativos en la producción y los
servicios, Op cit., p. 299.
109
implicará desperdiciar las instalaciones más eficientes si a éstas se asigna un trabajo corto.
Por otra parte, no se contempla la posibilidad de que los trabajos se puedan subdividir,
Regla de Johnson.
en la aplicación al desarrollar para ésta la regla de Johnson, que parte del tiempo de
ejecución de cada pedido en cada máquina, este método heurístico pretende hacer mínimo
el tiempo necesario para concluir todos ellos y, por tanto, el tiempo ocioso de las máquinas.
Producción planeada.
La planeación se realiza para cada centro de trabajo bajo el concepto de la carga vertical
las desviaciones significativas, proporcionando así la información necesaria para tomar las
medidas correctoras oportunas”. Sólo así se podrán mantener actualizados los factores de
de capacidad confiable. Dada, además, la influencia que las colas de espera tienen en los
110
para su mantenimiento actualizado y, en consecuencia, para una adecuada planificación y
control de la producción62
Esta planeación es la que viene del mediano plazo por el CRP. Como la planeación a corto
plazo se realiza por periodos se creó el formulario Producción Planeada por CT para suplir
La programación finita supera las desventajas de los sistemas basados en reglas ofreciendo
flexibilidad para manejar cualquier situación, incluyendo cambios en los pedidos, trabajos o
máquinas.63 Esta flexibilidad se ofrece al usuario en este formulario por medio de los
62
Ibid p. 322.
63
HEIZER, y RENDER, Op cit., p. 244.
111
• La aplicación esta diseñada para funcionar en una PYME manufacturera, que tenga sus
procesos estandarizados.
• Como ayuda puntual la mayoría de los formularios cuentan con botones de información
que orientan al usuario en el uso de estos. Así como, botones en algunos para avanzar
112
La secuencia de pasos o divisiones que contiene la aplicación según los paneles de control
para acceder a los diferentes formularios que contiene se muestra en la figura 4-6.
La exploración de la aplicación se inicia desde el panel principal que contiene los tres
113
Al hacer clic en el botón Preparación pedido en el panel principal se despliega el panel que
se muestra en la figura 4-8, que contiene los vínculos a los formularios Clientes y Pedidos
La relación entre los productos de la empresa y los pedidos de los clientes, genera el flujo
clientes, productos, rutas y centros de trabajo. Por eso, al iniciar la aplicación ‘HPP-S’ se
Clientes.
Este formulario Clientes, figura 4-9, aparece después de oprimir en botón Ingresar clientes
en el panel Preparación pedido, recoge información sobre cada uno de los clientes. Lo
114
importante para el desarrollo de la aplicación es la vinculación de éstos con la empresa por
El panel ‘Datos productos’, figura 4-10, contiene los vínculos a los formularios Productos,
Productos
115
El botón Producto del panel anterior activa el formulario de la figura 4-11, en éste se
Partes/componentes.
12, en éste se ingresan el nombre y tipo del elemento usado en la elaboración de los
116
base de datos. La columna tipo es para clasificar el elemento según sea en: insumo,
componente y ensamble, tipos que aparecen en la aplicación por defecto, los cuales pueden
Estructura producto.
El botón Estructura producto del panel ‘Datos producto’ abre el formulario de la figura 4-
13, en éste se forma el árbol del producto o estructura del producto al armar el producto con
117
presente los diferentes niveles para su composición. Indicando las cantidades requeridas y
El panel ‘Datos ruta’, figura 4-14, contiene los vínculos a los formularios Centros de
trabajo, Detalles centros de trabajo, Máquinas paralelas CT, Hoja de ruta y Rutas producto.
Centros de trabajo.
118
El botón Centros de trabajo del panel anterior activa el formulario de la figura 4-15, en éste
se ingresan el nombre de cada centro de trabajo. Dándose a cada uno un identificador que
El botón Detalle centros de trabajo del panel ‘Datos ruta’ abre el formulario, figura 4-16, en
que se ingresan los detalles de los centros de trabajo usados en la planta: horas reales de
119
Máquinas paralelas.
El botón Máquinas paralelas CT del panel ‘Datos ruta’ abre el formulario, figura 4-17, en
donde se ingresan los valores en minutos para las operaciones que son paralelas en el centro
de trabajo seleccionado. Hay posibilidad de ingresar valores hasta para nueve operaciones
paralelas.
Hoja de ruta.
El botón Hoja de ruta del panel ‘Datos ruta’ abre el formulario, figura 4-18, donde se
ingresan para cada ruta las operaciones necesarias para su elaboración, los centros de
120
trabajo por donde pasa y los valores en minutos para el tiempo de ejecución y el tiempo de
desplazamiento.
ruta. Cada ruta ingresada queda identificada con un número y nombre que la hacen única en
ruta, la suma de los tiempos de ejecución y desplazamiento por todas las operaciones
121
Rutas producto.
El botón Rutas producto del panel ‘Datos ruta’ abre el formulario, figura 4-19, donde para
cuenta los diferentes niveles de su estructura. Los elementos que son insumo para el
producto terminado en el árbol de rutas del producto quedarán con un factor igual a 1, pues
122
Pedidos.
El botón Ingresar pedidos del panel ‘Preparación pedido’ abre el formulario, figura 4-20,
donde se relacionan los productos con los clientes en cantidades por ellos suministradas.
Aquí se identifica cada pedido con un número único en la base de datos, se detalla la
programada y entrega real. Desde este formulario se puede averiguar las cantidades
necesarias por cada componente para cumplir con el número de productos que el cliente
requiere. Además de, conocer la cantidad de días necesarios para la elaboración del mismo.
123
Cantidad requerida.
cantidad requerida por pedido, figura 4-21, el cual muestra las cantidades por tipo (partes,
componentes e insumos), con sus unidades que son requeridas para elaborar los productos
puede diferir de las cantidades que están en el pedido. Esto porque, al tenerse en la base de
datos registrado el factor de utilización por rutas asociadas a componentes e incluso hasta
las rutas de ensamble, las cantidades mostradas, son las que se deben emitir como entrada
124
al proceso para que luego en la salida se obtengan las cantidades requeridas por el cliente.
Observe como las cantidades a emitir para los productos, P1 (186) y Silla (26), son mayores
Tiempo de entrega.
entrega el cual realiza la carga horizontal, es decir, carga todos los tiempos de las
en el tiempo. Lo que se hace, es cargar todas las tareas en los centros de trabajo necesarios
125
a lo largo del horizonte de planificación, siendo la sumatoria de todas las duraciones, el
tiempo total en días para la elaboración del pedido desde la fecha actual tomada como cero.
Hacer clic en el botón Programación detallada del formulario Tiempo de entrega, realiza el
procesaran los datos según corresponda. Como los archivos en Excel tienen todos una
cuadro de mensaje de la figura 4-23, al cual hay que responder haciendo clic en el botón
Habilitar macros.
Programación detallada.
de cada trabajo. La figura 4-25, es un detalle de la figura 4-24 donde muestra las fechas de
inicio y finales para cada operación asociada a la ruta que compone. Basándose en los
126
Figura 4-24. Programación detallada en Excel.
La figura 4-24 es la imagen del archivo ‘detallada’ en Excel que ofrece al programador una
gráfica de Gantt, que representar el desarrollo de las diferentes operaciones a realizar para
podrá dar comienzo a ninguna actividad hasta que se haya finalizado la operación anterior
sobre todas y cada una de las unidades a fabricar. Esta situación concuerda con el concepto
del flow shop donde hay una secuencia establecida para la elaboración de los productos En
127
estas condiciones, el gráfico de Gantt resultante da lugar a un tiempo total para el tamaño
del pedido.
Se deja al lector comprobar, que al ingresar una fecha en el campo fecha de entrega real del
entrega en los formularios que aparecen no se muestra ningún valor. Esto para evitar que se
generen dentro de la base de datos valores que ya no son útiles ¿para qué necesito mantener
4.2.2 Scheduling.
El panel ‘Scheduling’, figura 4-26, contiene los vínculos a los paneles de control
Asignación y Secuenciación.
Asignación.
El panel ‘Asignación’, figura 4-27, contiene los vínculos a los formularios Carga pedidos,
128
Para el desarrollo del Scheduling, hemos dividido el proceso en dos momentos que son: la
Como diversos centros de trabajo son capaces de procesar los nuevos pedidos de los
clientes, ¿cómo determinar cuáles trabajos deben asignarse a cada centro?. Por medio del
programa de producción podemos manejar los productos con margen de cómo y cuándo
deberán terminarse. Además, se cuenta con la trayectoria o ruta del proceso de cada
elemento, de manera que conocemos cuáles son los centros que deben intervenir.
Carga pedidos.
El botón Carga pedidos del panel ‘Asignación’ abre el formulario, figura 4-28, donde la
carga de cada pedido se realiza al marcar la casilla de verificación como iniciado en la tabla
129
Figura 4-28. Formulario carga pedidos.
aplicación no generará los valores de la carga respectiva pues está no se reconocerá como
iniciada.
El programador frente al formulario Carga pedidos, debe iniciar (cargar) los pedidos, los
productos que lo componen, y las operaciones que conforman cada uno de las rutas. Es
decir, debe descender desde el pedido hasta las rutas para poder calcular en el formulario
siguiente los valores de las cargas para los centros de trabajo donde se realizan las
operaciones.
130
Carga operaciones.
El botón Carga operaciones del panel ‘Asignación’ abre el formulario, figura 4-29, donde
para las rutas marcadas como iniciadas en el formulario anterior se selecciona la operación
El programador selecciona una ruta de entre las rutas marcadas como iniciadas (tabla Rutas
iniciada.
mostrara en los pasos siguientes la carga para el centro de trabajo en el cual se procese.
131
Control pedidos.
El botón Control pedidos del panel ‘Asignación’ abre el formulario, figura 4-30, donde
aparecen las acciones realizadas en los formularios anteriores, en este punto el programador
izquierdo de cada subformulario indica la fila que se encuentra activa en el momento, así es
como en la figura 4-28, formulario carga pedidos, se muestran los detalles para el pedido 2,
(que se compone de dos productos ‘Silla’ y ‘P1’), que ambos están iniciados y que, en el
132
control ruta para el producto ‘Silla’ aunque tiene seleccionadas varias rutas solo se dan
El formulario Control pedidos, figura 4-30, muestra en la tabla rutas producto para el
pedido ‘1’, producto ‘Silla’, y ruta ‘8’ con nombre ‘asiento delantero’ que de 124 unidades
sólo quedan pendientes 8 unidades. Cantidad con la cual se calculará la nueva carga para el
centro de trabajo que utilice la operación marcada como iniciada en ésta ruta. El formulario
Dejamos para el usuario, por ejemplo desmarcar el producto ‘P1’ del formulario Carga
pedidos y observar lo que pasa en los formularios Carga operaciones y Control pedidos, así
Control pedidos para apreciar que efectos tienen estos cambios, con esto, si no se dan por
Hacer clic en el botón Cargas operaciones iniciadas del formulario Control pedidos. Abre el
formulario de la figura 4-31 que muestra para todas las operaciones iniciadas: la cantidad
133
de unidades a elaborar, la carga por operación, la duración de cada una, su nombre y pedido
al cual esta vinculada, entre otros datos también útiles para el programador.
Observe que para el caso mencionado pedido ‘1’ ruta ‘asiento delantero’ con ‘8’unidades
pendientes solamente se realizará la operación ‘39’. Compruebe como cambian los valores
para la duración y carga modificando en el formulario Control pedidos figura 4-30, el valor
134
Secuenciación.
El panel ‘Secuenciación’ de la figura 4-32, contiene los vínculos a los formularios Reglas
Prioridades.
El botón Reglas de prioridad del panel ‘Secuenciación’ abre el formulario, figura 4-33,
donde aparece para el centro de trabajo seleccionado el siguiente detalle de datos: pedidos
135
asignados al CT, número de operación, la fecha de entrega, el nombre de la ruta y la carga
por operación.
botón ‘Reglas de prioridad’ para que sea procesada y mostrada al usuario en la forma como
En el desarrollo de esta aplicación tomamos las siguientes reglas para locales: FCFS, EDD,
LOT y SOT, para con ellas secuenciar las cargas en cada uno de los diferentes centros de
136
El archivo en Excel ‘Prioridades’, tiene en una hoja de cálculo para cada prioridad, otra
hoja de cálculo ‘reglas’ (resumen) que se muestra en la figura 4-34, y un gráfico que
Detallando la relación entre las figuras 4-33 y 4-34, se observa que los datos enviados son
presentados en diferente orden según la regla que los evalúa. Por ejemplo los datos del
pedido 2 operación 5 ruta 112, bajo la regla FCFS se ubica de primero, en la regla SOT
esta segundo, en la regla EDD está último y en la regla LOT está de tercero.
Las prioridades son un método que el programador puede usar para secuenciar las órdenes
presentan otras dos opciones: pedidos pendientes hasta hoy y pedidos pendientes a la fecha.
137
Figura 4-35. Formulario pedidos pendientes a la fecha.
En pedidos pendientes hasta hoy se puede conocer por sus días de retraso hasta el día actual
entrega hasta una fecha específica ingresada por el usuario ofreciéndole la posibilidad de
buscar los pedidos hasta la fecha que desee sin importar si es anterior o posterior a la fecha
actual, mostrándose también el número de sus días de retraso hasta la fecha ingresada. (Ver
Figura 4-35)
138
Método húngaro.
El botón Método húngaro del panel ‘Secuenciación’ abre el formulario, figura 4-36, donde
operación en cada una de las máquinas paralelas. En el caso mostrado el centro de trabajo
es ‘1 – Corte’.
Esté método tiene asociado el concepto de máquinas paralelas descrito anteriormente por el
cual se obtienen diferentes valores de carga para una misma operación según las máquinas
donde se realice.
139
Lo anterior solo aplica para los centros de trabajo en los que se hayan ingresado datos en
las operaciones que presentan actividades paralelas. Como es el caso de las operaciones 8 y
a Excel al archivo ‘Asignación’ luego de oprimir el botón ‘Método húngaro’. Los datos se
copian en la hoja de cálculo llamada ‘asignar’,(Ver Figura 4-37). Para ejecutar el método el
usuario debe oprimir el botón ‘Ejecutar método húngaro’ el cual muestra los resultados
La figura 4-38 muestra al usuario la asignación resultado del proceso para los datos del
140
Figura 4-38. Método húngaro en Excel – hoja de cálculo Hoja1.
141
Regla de Johnson.
El botón Regla de Johnson del panel ‘Secuenciación’ abre el formulario, figura 4-39, que
aplica para las rutas que tienen operaciones que deben pasar a través de dos máquinas o
centro de trabajo en el mismo orden. Así en el formulario se relacionan las cargas del
centro de trabajo 1 y el centro de trabajo 2 para las rutas que cumplen la condición anterior.
2 3
2 3
archivo ‘johnson’ en Excel luego de oprimir el botón ‘Regla de Johnson’. Los datos se
copian en la hoja de cálculo llamada ‘johnson’, y para que se corra el algoritmo, el usuario
debe oprimir el botón ‘johnson’. Los resultados generados se muestran en la hoja de cálculo
142
La figura 4-40 muestra al usuario el orden -columna A- resultado del proceso para los
anterior se han colocado los números de fila (2,3) de la columna A, sobre los espacios de
carga (barras horizontales) para indicar la secuencia de los pedidos en los CT. En el archivo
4.2.3 Control.
El panel ‘Control’, figura 4-41, contiene los vínculos a los formularios Producción
Producción planeada.
El formulario Producción planeada por CT, figura 4-42, muestra el detalle de cargas
afectan los próximos cinco periodos a partir del actual con el total de carga pendiente, para
143
Cambiando para el centro deseado el valor de hr (horas reales de trabajo) en la tabla ‘Input,
‘Comportamiento del ct a cinco periodos’ donde para los próximos periodos se suponen
Como apoyo adicional se ofrecen en Excel otras opciones para ejecutar una programación
más dinámica y óptima. El botón ‘Gráfico de Gantt’ envía los datos del centro seleccionado
cálculo llamada ‘cg_finita’, (Ver Figura 4-43), para con estos realizar los cálculos y las
144
Figura 4-43. Carga finita en Excel – hoja de cálculo ‘cg_finita’.
Como la programación finita supera las desventajas de los sistemas basados en reglas
la figura 4-43. permite al usuario interactuar con ella al modificar los datos de la columna F
‘carga_operación’, mostrando en el grafico de la misma hoja los efectos que estos cambios
tienen.
cambiar las horas reales normales de trabajo. Observando por cifras y gráficamente los
efectos que tales cambios tienen en los cinco próximos periodos teniendo estos condiciones
normales de trabajo.
145
Figura 4-44. Carga finita en Excel – hoja de cálculo ‘Hoja2’.
146
Producción real.
El botón Producción real del panel ‘Control’ abre el formulario, figura 4-45, en el cual se
ingresan los datos reales de funcionamiento, terminadas todas las operaciones en los
centros de trabajo a los que se les programó actividad al inicio del periodo.
Input-output.
Para terminar el botón Input – Output del panel ‘Control’ abre el formulario, figura 4-46,
utilidad para hacer el seguimiento de los desempeños de cada uno de los centros de trabajo.
Al oprimir el botón ‘Informe input/Output’ del formulario Control input-output envían los
datos en la tabla control Input – Output del centro seleccionado al archivo ‘in-out’ en Excel.
Donde los datos se copian en la hoja de cálculo activa, figura 4-47, y se procesan para
147
además de mostrar gráficas que representan lo planeado y la real para ambos casos el input
y el output.
Otros.
El botón ‘Acerca de’ en el panel principal, activa la ventana, figura 4-48, donde aparecen:
El título del trabajo de grado y los autores. El botón salir del mismo panel cierra la
aplicación y Access.
148
Figura 4-48. Formulario acerca de.
Para los productos así como para los centros de trabajo se ha dispuesto un formulario en el
que se pueden ingresar todos los nombres de los productos y centros de trabajo que utiliza
Al realizar el árbol de rutas para un producto es necesario ingresar como mínimo la ruta de
ensamble del mismo, ruta de nivel más alto. De no ser así, la cantidad de elementos
componentes del producto necesarios para cumplir con un pedido no se presentan, pues,
por los factores de utilización de las rutas, las cantidades requeridas son el resultado de
multiplicaciones sucesivas entre los factores de las rutas según los niveles ingresados al
producto y la cantidad de partes ingresadas en la estructura del producto. Por eso se debe
asociar al producto la ruta de ensamble, siendo esta la unión de las otras rutas que
149
El formulario Cargas operaciones iniciadas figura 4-31 permite conocer para todas las
operaciones iniciadas: el valor de la carga, el centro de trabajo por el que pasa, la duración
número del pedido al que corresponde, la fecha de entrega del mismo, la cantidad a
pueden ser utilizados por el usuario para realizar cualquier otro tipo de ordenamiento de las
pedidos a los centros de trabajo se trabaja siempre con los mismos datos, carga por
operación, esto se puede confirmar al comparar los valores de carga por operación que
aparecen en los diferentes formularios presentados en la aplicación (Ver Figuras 4-33, 4-39,
4-42), contra los valores que aparecen el formulario cargas iniciadas por operación. (Ver
Figura 4-31).
Los formularios Carga operaciones y Control pedido permiten elegir los componentes del
producto o elegir las operaciones en la ruta del componente que en realidad se necesitan
para elaborarlo. Esto es poder programar actividadas de producción reflejo real del avance
diseñó de manera tal que sea el usuario quien controle los momentos de inicio y fin de las
150
operaciones de producción, ésto por medio de las casillas de verificación, generando un
oprimir la tecla ‘F11’ permitiendo al usuario trabajar sobre la propia estructura de la base
de datos. Recuerde que al trabajar con programas de gestión de bases de datos, como es el
caso de Access, no existe la opción Save (Guardar), referida a los datos de la aplicación,
debido a que los cambios en los datos se van guardando siempre en el dispositivo de
almacenamiento permanente.
la información del archivo ‘HPP-S’en Access a los diferentes archivos vinculados en Excel.
Por otra parte, los archivos en Excel cuentan con botones para la creación de los elementos
de apoyo en cada uno de ellos, como: gráficos y cuadros de texto. Esto para evitar que se
151
CONCLUSIONES
5 CAPÍTULO 6. CONCLUSIONES.
La herramienta informática diseñada permite al programador realizar la planeación de la
producción a corto plazo de una manera rápida y precisa en empresas manufactureras con
fabricación por lotes o series cortas que tengan sus procesos normalizados. Y para las que
no, les ayuda a ordenar su información sobre productos, rutas, operaciones y centros de
acuerdo a las condiciones del momento en que esta se realiza. Para nuevas condiciones de
actualizada.
La carga de los trabajos a la planta en la aplicación se realiza para cada uno de los centros
de trabajos, el usuario programador puede entonces identificar cual es el centro con mayor
carga, dedicando así, más tiempo para buscar opciones de programación en dicho centro.
152
archivo de Access, ofreciendose así una herramienta de apoyo a nivel académico para los
cursos de producción.
orden en su información:
• Centralización de la información.
con sus rutas. Esto por medio de los impresos que se pueden realizar de la información
en la base de datos.
Para reclamos por defectos de fabricación de algún producto o para la trazabilidad de los
cada una de las partes que componen un producto ternimado. Historial unico para cada uno
153
BIBLIOGRAFÍA
6 CAPÍTULO 7. BIBLIOGRAFÍA.
BRIMELE, Ricardo. ¡EXCEL FÁCIL!. México : Prentice Hall, 1994. 286 p.
154
-------- : Aspectos tácticos y operativos en la producción y los servicios. España : Mc Graw
Hill, 1995. p. 267 – 487.
NEIBAUER, Alan. Access 2000 para gente ocupada. Mexico : Mc Graw Hill, 2000. 312 p.
RUMBAUGH, James et al. Modelado y diseño orientado a objetos. 4 ed. México : Prentice
may, 1995
SARRIEGUI, José María, SERRANO, Nicolás, MURO, Ivan. Aprenda Microsoft Access
97 como si estuviera en primero. San Sebastián, Octubre 1998 Escuela Superior de
Ingenieros Industriales, Universidad De Navarra
155
ANEXOS
1. Para el ingreso de nuevos productos haga clic en Productos del menú Preparación
2. Para el ingreso de nuevos clientes haga clic ingresar clientes del menú Preparación
pedido.
3. Para el ingreso de nuevos pedidos haga clic en ingresar pedidos del menú Preparación
pedido.
4. Cargue los pedidos a la planta oprimiendo en carga pedidos del submenú Asignación en
el menú Scheduling y seleccione el pedido, los productos que lo componen e inicie las
rutas necesarias.
156
5. Para determinar que operaciones cargar en las rutas iniciadas en el punto anterior.
6. Verifique las rutas y operaciones iniciadas a los pedidos al hacer clic en control pedido
9. Registre la producción real al hacer clic en producción real del submenú control en el
menú Scheduling.
10. Conozca el informe input-output por centro de trabajo presionando control input-output
157
Figura A-1. Dirección para descomprimir Aplicación HPP-S.exe
En la figura A-1 presione el botón ‘Unzip’ para iniciar la instalación. Terminada esta
aplicación.
158
Ingreso de datos ejemplos particulares
El ingreso de datos se realizará con casos de productos de estructuras cortas para producto
y rutas, con el objeto de mostrar como se ingresan los datos en las estructuras iniciales
producto 'P1' que Machuca64 usa en el ejemplo 5.1. Se dará información que guíe al usuario
en lo básico dejando que esté lea la información en los botones que contienen los
Ingreso productos.
64
MACHUCA DOMÍNGUEZ, José Antonio et al. Dirección De Operaciones : Aspectos tácticos y
operativos en la producción y los servicios. España : Mc Graw Hill, 1995. p. 160
159
2. Ingrese la estructura del producto P1 al oprimir la estructura en el submenú ingresar
datos producto del menú Preparación. Debe verse al final como se muestra en la figura
Si coloca el cursor en la casilla ‘111’ de la tabla componentes, Figura A-3, observe que
3. En el formulario ‘Detalle centro de Trabajo’ ingrese los datos por centro de trabajo.
160
4. Rutas. Siguiendo con el producto P1 del ejemplo, los datos de la ruta de ensamble ‘P1’
queda como se muestra en la figura A-4. [preparación pedido/ ingresar datos ruta/ Hoja
de ruta].
5. Rutas por producto. Con las tres rutas, la estructura de rutas del producto ‘P1’ se
aprecia en la figura A-4. siendo estas las que tienen un factor diferente de 1.
161
Figura A-5. Árbol de rutas del producto ‘P1’.
Observe en la figura A-5, como solo las rutas tienen un factor diferente de 1
Ingreso pedidos.
6. Active el formulario clientes. [Preparación pedido/ ingresar clientes] e ingrese los datos.
162
Elaboración pedidos.
8. Cargue (asigne) los pedidos, productos, rutas y operaciones a los centros de trabajo en
9. Ordene (secuencie) los pedidos usando las opciones para secuenciación ofrecidas
[Scheduling /secuenciación ].
Control pedidos.
producción por cada centro de trabajo según opciones del submenú control. [Scheduling
/Control].
Salir.
ANEXO B. CODIGOS
Formularios en Access.
Formulario acerca de
Option Compare Database
Private Sub Aceptar_Click()
DoCmd.Close
End Sub
Formulario asignación
Option Compare Database
Private Sub Comando12_Click()
MsgBox "El botón MÉTODO HÚNGARO envía al archivo asignación de excel la " _
163
& "información de la tabla MATRÍZ DE DATOS para que sea presentada según " _
& "la asignación del MÉTODO HÚNGARO.", vbInformation, "INFORMACIÓN"
End Sub
Formulario cargas_operaciones_iniciadas
Option Compare Database
Private Sub DETALLES_CT_Click()
On Error GoTo Err_DETALLES_CT_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "centro_trabajo"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_DETALLES_CT_Click:
Exit Sub
Err_DETALLES_CT_Click:
MsgBox Err.Description
164
Resume Exit_DETALLES_CT_Click
End Sub
End Sub
165
& "la capacidad diaria horas reales, la eficiencia y la utilización.", vbInformation,
"INFORMACIÓN"
End Sub
166
Formulario clientes
Option Compare Database
Private Sub Form_Error(DataErr As Integer, Response As Integer)
MsgBox "No se permiten nombres de clientes repetidos", vbCritical, "ERROR EN NOMBRE
CLIENTE"
End Sub
167
Else
lngelemento = Me![elemento]
Me![elemento] = Null
End If
DoCmd.OpenForm "lista_materiales", , , , , acWindowNormal, NewRecord
Me![elemento].Requery
If lngelemento <> 0 Then Me![elemento] = lngelemento
Exit_elemento_DblClick:
Exit Sub
Err_elemento_DblClick:
MsgBox Err.Description
Resume Exit_elemento_DblClick
End Sub
Sub Form_Current()
Dim ParentDocName As String
On Error Resume Next
ParentDocName = Me.Parent.Name
If Err <> 0 Then
GoTo Form_Current_Exit
Else
On Error GoTo Form_Current_Err
Me.Parent![componentes1_Subformulario].Requery
End If
Form_Current_Exit:
Exit Sub
Form_Current_Err:
MsgBox Error$
Resume Form_Current_Exit
End Sub
168
Else
lngunidad = Me![unidad]
Me![unidad] = Null
End If
DoCmd.OpenForm "unidades", , , , , acWindowNormal, NewRecord
Me![unidad].Requery
If lngunidad <> 0 Then Me![unidad] = lngunidad
Exit_unidad_DblClick:
Exit Sub
Err_unidad_DblClick:
MsgBox Err.Description
Resume Exit_unidad_DblClick
End Sub
169
MsgBox "Haga DOBLE clic en este campo para agregar una entrada a la lista."
Response = acDataErrContinue
End Sub
Sub Form_Current()
Dim ParentDocName As String
On Error Resume Next
ParentDocName = Me.Parent.Name
If Err <> 0 Then
GoTo Form_Current_Exit
Else
On Error GoTo Form_Current_Err
Me.Parent![componentes2_Subformulario].Requery
End If
Form_Current_Exit:
Exit Sub
Form_Current_Err:
MsgBox Error$
Resume Form_Current_Exit
End Sub
170
MsgBox "Haga DOBLE clic en este campo para agregar una entrada a la lista."
Response = acDataErrContinue
End Sub
171
Me![unidad].Requery
If lngunidad <> 0 Then Me![unidad] = lngunidad
Exit_unidad_DblClick:
Exit Sub
Err_unidad_DblClick:
MsgBox Err.Description
Resume Exit_unidad_DblClick
End Sub
172
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "CONTROL PRODUCCIÓN"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_CONTROL_PRODUCCION_Click:
Exit Sub
Err_CONTROL_PRODUCCION_Click:
MsgBox Err.Description
Resume Exit_CONTROL_PRODUCCION_Click
End Sub
173
MsgBox Err.Description
Resume Exit_CONTROL_PEDIDOS_Click
End Sub
174
& " el producto esta iniciado y/o terminado marcando la casilla respectiva."
End Sub
175
Private Sub Control_Operaciones_Click()
On Error GoTo Err_Control_Operaciones_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "CONTROL OPERACIONES"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Control_Operaciones_Click:
Exit Sub
Err_Control_Operaciones_Click:
MsgBox Err.Description
Resume Exit_Control_Operaciones_Click
End Sub
176
Private Sub terminado_AfterUpdate()
Me.Refresh
End Sub
177
Formulario control ruta
Option Compare Database
Private Sub Form_Activate()
Me.Refresh
End Sub
178
End Sub
Formulario ct
Option Compare Database
Private Sub DETALLES_CT_Click()
On Error GoTo Err_DETALLES_CT_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "centro_trabajo"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_DETALLES_CT_Click:
Exit Sub
Err_DETALLES_CT_Click:
MsgBox Err.Description
Resume Exit_DETALLES_CT_Click
End Sub
Formulario entrega
Option Compare Database
Private Sub Comando9_Click()
MsgBox "El botón PROGRAMACIÓN DETALLADA envía al archivo detallada de Excel la " _
& "información de la tabla TIEMPO REQUERIDO para que sea presentada en el grafico de
GANTT " _
& "para un secuenciamiento sin solapamientos", vbInformation, "INFORMACIÓN"
End Sub
179
Private Sub hr_Change()
output_planificado = capac
End Sub
Formulario inicio
Option Compare Database 'Usar orden de la base de datos para las comparaciones de cadenas.
Option Explicit
180
' y se debe mostrar el botón Cerrar.
cmdCerrarFormulario.Visible = True
Else
' Este formulario se abrió como el formulario de inicio de la aplicación,
' entonces se debe ocultar el botón Cerrar y establecer TimerInterval
' para cerrar el formulatio después de 1.2 segundos.
cmdCerrarFormulario.Visible = False
Me.TimerInterval = 1200
End If
End Sub
Formulario johnson
Option Compare Database
Private Sub Form_Activate()
Me.Refresh
End Sub
181
End If
DoCmd.OpenForm "tipo", , , , , acWindowNormal, NewRecord
Me![tipo].Requery
If lngtipo <> "" Then Me![tipo] = lngtipo
Exit_tipo_DblClick:
Exit Sub
Err_tipo_DblClick:
MsgBox Err.Description
Resume Exit_tipo_DblClick
End Sub
182
End Sub
Formulario máquinas
Option Compare Database
Private Sub idoperación_Click()
Me.Refresh
End Sub
183
Private Sub idoperación_Enter()
Me.Refresh
End Sub
Formulario máquinas ct
Option Compare Database
Private Sub Comando12_Click()
MsgBox "En la tabla TIEMPO DE EJECUCIÓN DE LAS MÁQUINAS EN EL CENTRO
seleccione " _
& "la operación entre las listadas en la tabla CENTRO OPERACIONES y luego coloque los " _
& "valores para los tiempos de ejecución en minutos estándar para cada una de las " _
& "máquinas del centro.", vbInformation, "INFORMACIÓN"
End Sub
184
rst.MovePrevious
'MsgBox i
End If
End If
End If
Next n
rst.MoveLast
End Sub
Err_idcentro_DblClick:
MsgBox Err.Description
Resume Exit_idcentro_DblClick
End Sub
185
Private Sub operación_Enter()
Me.Refresh
End Sub
Formulario pedidos
Option Compare Database
Private Sub Comando9_Click()
MsgBox "El botón CANT REQUERIDA muestra las cantidades necesarias por " _
& " partes / componentes para cumplir con el pedido actual. El botón TIEMPO " _
& " DE ENTREGA bajo una programación hacia delante indica la cantidad de días " _
& " necesarios para producir el pedido en condiciones normales de trabajo. "_
& "Las cantidades solo se muestran para los pedidos que no tienen fecha de entrega real."
End Sub
186
Private Sub idcliente_DblClick(Cancel As Integer)
On Error GoTo Err_idcliente_DblClick
Dim lngtipo As Long
DoCmd.OpenForm "clientes", , , , , acDialog, "GotoNew"
Me![idcliente].Requery
If lngtipo <> 0 Then Me![idcliente] = lngtipo
Exit_idcliente_DblClick:
Exit Sub
Err_idcliente_DblClick:
MsgBox Err.Description
Resume Exit_idcliente_DblClick
End Sub
187
Formulario producción planeada
Option Compare Database
Private Sub Comando12_Click()
MsgBox "La tabla CENTROS DE TRABAJO muestra el número y nombre de todos los centro de
trabajo ingresados en la base de datos La tabla COMPORTAMIENTO DEL CT A CINCO
PERIODOS muestra como se afecta el CT por la carga vs la capacidad para los próximos cinco
periodos.", , "INFORMACIÓN"
End Sub
188
Resume Exit_GRAFICO_GANTT_Click
End Sub
189
GoTo Form_Current_Exit
Else
On Error GoTo Form_Current_Err
Me.Parent![Rcomponentes1_Subformulario].Requery
End If
Form_Current_Exit:
Exit Sub
Form_Current_Err:
MsgBox Error$
Resume Form_Current_Exit
End Sub
190
Private Sub nombre_ruta_NotInList(NewData As String, Response As Integer)
MsgBox "Haga DOBLE clic en este campo para agregar una entrada a la lista."
Response = acDataErrContinue
End Sub
191
Else
lngnombre_ruta = Me![nombre_ruta]
Me![nombre_ruta] = Null
End If
DoCmd.OpenForm "lista_rutas", , , , , acWindowNormal, NewRecord
Me![nombre_ruta].Requery
If lngnombre_ruta <> 0 Then Me![nombre_ruta] = lngnombre_ruta
Exit_nombre_ruta_DblClick:
Exit Sub
Err_nombre_ruta_DblClick:
MsgBox Err.Description
Resume Exit_nombre_ruta_DblClick
End Sub
192
Me![nombre_ruta].Requery
If lngnombre_ruta <> 0 Then Me![nombre_ruta] = lngnombre_ruta
Exit_nombre_ruta_DblClick:
Exit Sub
Err_nombre_ruta_DblClick:
MsgBox Err.Description
Resume Exit_nombre_ruta_DblClick
End Sub
193
Err_REGLA_DE_JOHNSON_Click:
MsgBox Err.Description
Resume Exit_REGLA_DE_JOHNSON_Click
End Sub
Formulario rproductos
Option Compare Database
Private Sub buscar_producto_Click()
On Error GoTo Err_buscar_producto_Click
Screen.PreviousControl.SetFocus
DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70
Exit_buscar_producto_Click:
Exit Sub
Err_buscar_producto_Click:
MsgBox Err.Description
Resume Exit_buscar_producto_Click
End Sub
194
presenta en las diferentes tablas depende de la forma con se ingresaron los datos en el formulario ''
Estructura Producto ''"
Me!producto.SetFocus
End Sub
195
End Sub
196
Me.Refresh
End Sub
Formulario switchboard
Option Compare Database
Private Sub Form_Open(Cancel As Integer)
' Minimize the database window and initialize the form.
' Move to the switchboard page that is marked as the default.
Me.Filter = "[ItemNumber] = 0 AND [Argument] = 'Default' "
Me.FilterOn = True
End Sub
197
Me("OptionLabel" & intOption).Visible = False
Next intOption
' Open the table of Switchboard Items, and find the first item for this Switchboard Page.
Set con = Application.CurrentProject.Connection
stSql = "SELECT * FROM [Switchboard Items]"
stSql = stSql & " WHERE [ItemNumber] > 0 AND [SwitchboardID]=" & Me![SwitchboardID]
stSql = stSql & " ORDER BY [ItemNumber];"
Set rs = CreateObject("ADODB.Recordset")
rs.Open stSql, con, 1 ' 1 = adOpenKeyset
' If there are no options for this Switchboard Page, display a message. Otherwise, fill the page
with the items.
If (rs.EOF) Then
Me![OptionLabel1].Caption = "There are no items for this switchboard page"
Else
While (Not (rs.EOF))
Me("Option" & rs![ItemNumber]).Visible = True
Me("OptionLabel" & rs![ItemNumber]).Visible = True
Me("OptionLabel" & rs![ItemNumber]).Caption = rs![ItemText]
rs.MoveNext
Wend
End If
' Close the recordset and the database.
rs.Close
Set rs = Nothing
Set con = Nothing
End Sub
198
stSql = "SELECT * FROM [Switchboard Items] "
stSql = stSql & "WHERE [SwitchboardID]=" & Me![SwitchboardID] & " AND [ItemNumber]="
& intBtn
rs.Open stSql, con, 1 ' 1 = adOpenKeyset
' If no item matches, report the error and exit the function.
If (rs.EOF) Then
MsgBox "There was an error reading the Switchboard Items table."
rs.Close
Set rs = Nothing
Set con = Nothing
Exit Function
End If
Select Case rs![Command]
' Go to another switchboard.
Case conCmdGotoSwitchboard
Me.Filter = "[ItemNumber] = 0 AND [SwitchboardID]=" & rs![Argument]
' Open a form in Add mode.
Case conCmdOpenFormAdd
DoCmd.OpenForm rs![Argument], , , , acAdd
' Open a form.
Case conCmdOpenFormBrowse
DoCmd.OpenForm rs![Argument]
' Open a report.
Case conCmdOpenReport
DoCmd.OpenReport rs![Argument], acPreview
' Customize the Switchboard.
Case conCmdCustomizeSwitchboard
' Handle the case where the Switchboard Manager
' is not installed (e.g. Minimal Install).
On Error Resume Next
Application.Run "ACWZMAIN.sbm_Entry"
If (Err <> 0) Then MsgBox "Command not available."
On Error GoTo 0
' Update the form.
Me.Filter = "[ItemNumber] = 0 AND [Argument] = 'Default' "
Me.Caption = Nz(Me![ItemText], "")
FillOptions
' Exit the application.
Case conCmdExitApplication
CloseCurrentDatabase
' Run a macro.
Case conCmdRunMacro
DoCmd.RunMacro rs![Argument]
' Run code.
Case conCmdRunCode
Application.Run rs![Argument]
' Open a Data Access Page
Case conCmdOpenPage
DoCmd.OpenDataAccessPage rs![Argument]
199
' Any other command is unrecognized.
Case Else
MsgBox "Unknown option."
End Select
' Close the recordset and the database.
rs.Close
HandleButtonClick_Exit:
On Error Resume Next
Set rs = Nothing
Set con = Nothing
Exit Function
HandleButtonClick_Err:
' If the action was cancelled by the user for some reason, don't display an error message.Instead,
resume on the next line.
If (Err = conErrDoCmdCancelled) Then
Resume Next
Else
MsgBox "There was an error executing the command.", vbCritical
Resume HandleButtonClick_Exit
End If
End Function
Formulario tipo
Option Compare Database
Private Sub Form_Close()
Form_lista_materiales.Refresh
End Sub
Formulario unidades
Option Compare Database
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord , , acNewRec
End Sub
Function Exportar_Prioridades()
200
On Error GoTo EXPORTAR_prioridades_Err
Dim i, c As Integer, m, n As String
c=1
Set fs = Application.FileSearch
With fs
.LookIn = "c:\aplicación" 'para buscar en los discos c y d pege esté comando .LookIn = "c:\;d:\"
.SearchSubFolders = True
.FileName = "prioridades.xls"
m = "c:\aplicación\prioridades.xls"
If .Execute > 0 Then
' MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
n = .FoundFiles(i)
If n = m Then
'MsgBox "igual"
c=0
End If
Next i
End If
End With
If c = 0 Then
DoCmd.TransferSpreadsheet acExport, 8, "edd", [m], True, ""
DoCmd.TransferSpreadsheet acExport, 8, "fcfs", [m], True, ""
DoCmd.TransferSpreadsheet acExport, 8, "lot", [m], True, ""
DoCmd.TransferSpreadsheet acExport, 8, "sot", [m], True, ""
Else
MsgBox "No se encontró prioridades.xls en la ruta ( c:\aplicación ) Copie el archivo ORIGINAL
a esta ruta para que la aplicación funcione correctamente.", vbCritical, "ERROR - ARCHIVO NO
ENCONTRADO"
End If
EXPORTAR_prioridades_Exit:
Exit Function
EXPORTAR_prioridades_Err:
If Err.Number = 3010 Then
MsgBox Err.Number & " - Cierre el archivo de Excel ''prioridades.xls'' para realizar
correctamente " _
& "el envio de la información - " & Err.Description, vbCritical, "Error - EL ARCHIVO
DESTINO ESTA ABIERTO"
Else
MsgBox Err.Number & "- - " & Err.Description, vbCritical, "ERROR"
End If
201
Resume EXPORTAR_prioridades_Exit
End Function
Function Exportar_In_Out()
On Error GoTo EXPORTAR_IN_OUT_Err
Dim i, c As Integer, m, n As String
c=1
Set fs = Application.FileSearch
With fs
.LookIn = "c:\aplicación" 'para buscar en los discos c y d pege esté comando .LookIn = "c:\;d:\"
.SearchSubFolders = True
.FileName = "in-out.xls"
m = "c:\aplicación\in-out.xls"
If .Execute > 0 Then
' MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
n = .FoundFiles(i)
If n = m Then
'MsgBox "igual"
c=0
End If
Next i
End If
End With
If c = 0 Then
DoCmd.TransferSpreadsheet acExport, 8, "control_input_output", [m], True, ""
Else
MsgBox "No se encontró prioridades.xls en la ruta ( c:\aplicación ) Copie el archivo ORIGINAL
a esta ruta para que la aplicación funcione correctamente.", vbCritical, "ERROR - ARCHIVO NO
ENCONTRADO"
End If
EXPORTAR_IN_OUT_Exit:
Exit Function
EXPORTAR_IN_OUT_Err:
If Err.Number = 3010 Then
MsgBox Err.Number & " - Cierre el archivo de Excel ''in-out.xls'' para realizar correctamente
"_
& "el envio de la información - " & Err.Description, vbCritical, "Error - EL ARCHIVO
DESTINO ESTA ABIERTO"
Else
MsgBox Err.Number & "- - " & Err.Description, vbCritical, "ERROR"
202
End If
Resume EXPORTAR_IN_OUT_Exit
End Function
Function Exportar_Johnson()
On Error GoTo EXPORTAR_JOHNSON_Err
Dim i, c As Integer, m, n As String
c=1
Set fs = Application.FileSearch
With fs
.LookIn = "c:\aplicación" 'para buscar en los discos c y d pege esté comando .LookIn = "c:\;d:\"
.SearchSubFolders = True
.FileName = "johnson.xls"
m = "c:\aplicación\johnson.xls"
If .Execute > 0 Then
' MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
n = .FoundFiles(i)
If n = m Then
'MsgBox "igual"
c=0
End If
Next i
End If
End With
If c = 0 Then
DoCmd.TransferSpreadsheet acExport, 8, "johnson", [m], True, ""
Else
MsgBox "No se encontró johnson.xls en la ruta ( c:\aplicación ) Copie el archivo ORIGINAL a
esta ruta para que la aplicación funcione correctamente.", vbCritical, "ERROR - ARCHIVO NO
ENCONTRADO"
End If
EXPORTAR_JOHNSON_Exit:
Exit Function
EXPORTAR_JOHNSON_Err:
If Err.Number = 3010 Then
MsgBox Err.Number & " - Cierre el archivo de Excel ''johnson.xls'' para realizar
correctamente " _
& "el envio de la información - " & Err.Description, vbCritical, "Error - EL ARCHIVO
DESTINO ESTA ABIERTO"
Else
203
MsgBox Err.Number & "- - " & Err.Description, vbCritical, "ERROR"
End If
Resume EXPORTAR_JOHNSON_Exit
End Function
Function Exportar_Asignación()
On Error GoTo EXPORTAR_ASIGNACIÓN_Err
Dim i, c As Integer, m, n As String
c=1
Set fs = Application.FileSearch
With fs
.LookIn = "c:\aplicación" 'para buscar en los discos c y d pege esté comando .LookIn = "c:\;d:\"
.SearchSubFolders = True
.FileName = "asignación.xls"
m = "c:\aplicación\asignación.xls"
If .Execute > 0 Then
' MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
n = .FoundFiles(i)
If n = m Then
'MsgBox "igual"
c=0
End If
Next i
End If
End With
If c = 0 Then
DoCmd.TransferSpreadsheet acExport, 8, "asignar", [m], True, ""
Else
MsgBox "No se encontró asignación.xls en la ruta ( c:\aplicación ) Copie el archivo ORIGINAL
a esta ruta para que la aplicación funcione correctamente.", vbCritical, "ERROR - ARCHIVO NO
ENCONTRADO"
End If
EXPORTAR_ASIGNACIÓN_Exit:
Exit Function
EXPORTAR_ASIGNACIÓN_Err:
If Err.Number = 3010 Then
MsgBox Err.Number & " - Cierre el archivo de Excel ''asignación.xls'' para realizar
correctamente " _
204
& "el envio de la información - " & Err.Description, vbCritical, "Error - EL ARCHIVO
DESTINO ESTA ABIERTO"
Else
MsgBox Err.Number & "- - " & Err.Description, vbCritical, "ERROR"
End If
Resume EXPORTAR_ASIGNACIÓN_Exit
End Function
Function Exportar_Programa_Detallado()
On Error GoTo EXPORTAR_Err
Dim i, c As Integer, m, n As String
c=1
Set fs = Application.FileSearch
With fs
.LookIn = "c:\aplicación" 'para buscar en los discos c y d pege esté comando .LookIn = "c:\;d:\"
.SearchSubFolders = True
.FileName = "detallada.xls"
m = "c:\aplicación\detallada.xls"
If .Execute > 0 Then
' MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
n = .FoundFiles(i)
If n = m Then
'MsgBox "igual"
c=0
End If
Next i
End If
End With
If c = 0 Then
DoCmd.TransferSpreadsheet acExport, 8, "prog_detallada", [m], True, ""
Else
MsgBox "No se encontró detallada.xls en la ruta ( c:\aplicación ) Copie el archivo ORIGINAL a
esta ruta para que la aplicación funcione correctamente.", vbCritical, "ERROR - ARCHIVO NO
ENCONTRADO"
End If
EXPORTAR_Exit:
Exit Function
EXPORTAR_Err:
If Err.Number = 3010 Then
205
MsgBox Err.Number & " - Cierre el archivo de Excel ''detallada.xls'' para realizar
correctamente " _
& "el envio de la información - " & Err.Description, vbCritical, "Error - EL ARCHIVO
DESTINO ESTA ABIERTO"
Else
MsgBox Err.Number & "- - " & Err.Description, vbCritical, "ERROR"
End If
Resume EXPORTAR_Exit
End Function
Function Exportar_FINITA()
On Error GoTo EXPORTAR_Err
Dim i, c As Integer, m, n As String
c=1
Set fs = Application.FileSearch
With fs
.LookIn = "c:\aplicación" 'para buscar en los discos c y d pege esté comando .LookIn = "c:\;d:\"
.SearchSubFolders = True
.FileName = "carga_finita.xls"
m = "c:\aplicación\carga_finita.xls"
If .Execute > 0 Then
' MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
n = .FoundFiles(i)
If n = m Then
'MsgBox "igual"
c=0
End If
Next i
End If
End With
If c = 0 Then
DoCmd.TransferSpreadsheet acExport, 8, "cg_finita", [m], True, ""
Else
MsgBox "No se encontró carga_finita.xls en la ruta ( c:\aplicación ) Copie el archivo
ORIGINAL a esta ruta para que la aplicación funcione correctamente.", vbCritical, "ERROR -
ARCHIVO NO ENCONTRADO"
End If
EXPORTAR_Exit:
Exit Function
EXPORTAR_Err:
206
If Err.Number = 3010 Then
MsgBox Err.Number & " - Cierre el archivo de Excel ''carga_finita.xls'' para realizar
correctamente " _
& "el envio de la información - " & Err.Description, vbCritical, "Error - EL ARCHIVO
DESTINO ESTA ABIERTO"
Else
MsgBox Err.Number & "- - " & Err.Description, vbCritical, "ERROR"
End If
Resume EXPORTAR_Exit
End Function
End Function
Function Verventanabasededatos()
On Error GoTo Err_VerVentanaBaseDeDatos
Dim txtNombreDoc As String
txtNombreDoc = "Centro_trabajo"
' Cerrar el formulario Panel de control principal.
DoCmd.Close
' Mandar el enfoque a la ventana de base de datos; seleccionar la tabla
' Categorías (primer formulario de la lista).
DoCmd.SelectObject acTable, txtNombreDoc, True
Salir_VerVentanaBaseDeDatos:
Exit Function
Err_VerVentanaBaseDeDatos:
MsgBox Err.Description
Resume Salir_VerVentanaBaseDeDatos
End Function
Function salir()
207
On Error GoTo Err_salir
Exit_salir:
Exit Function
Err_salir:
MsgBox Err.Description
Resume Exit_salir
End Function
Function cerrar()
DoCmd.ShowToolbar "BASE DE DATOS", acToolbarYes
CloseCurrentDatabase
End Function
Archivos Excel
Prioridades.Xls
'Diseñado por Jesús Eduardo Scarpetta jescarpe@yahoo.com
'Feb 2002 Trabajo de grado
Sub msg()
MsgBox "TRABAJO DE GRADO Herramienta informática en hoja electrónica para la planeación a
corto plazo de la producción en ambientes de planificación jerárquica, para PYMES con sistema de
producción por lotes o series cortas. REALIZADO POR Jesús Eduardo Scarpetta y Eliana Cuellar
Bernal. Este archivo es un vinculo del archivo en Access HPP-S.mdb", vbInformation, "Acerca de"
End Sub
Asignación.Xls
'Diseñado por Jesús Eduardo Scarpetta jescarpe@yahoo.com
'Feb 2002 Trabajo de grado
Sub msg()
MsgBox "TRABAJO DE GRADO Herramienta informática en hoja electrónica para la
planeación a corto plazo de la producción en ambientes de planificación jerárquica, para
PYMES con sistema de producción por lotes o series cortas. REALIZADO POR Jesús
Eduardo Scarpetta y Eliana Cuellar Bernal. Este archivo es un vinculo del archivo en
Access HPP-S.mdb Método Húngaro, VER: MACHUCA DOMÍNGUEZ, José Antonio et
al. Dirección De Operaciones : Aspectos tácticos y operativos en la producción y los
servicios. España : Mc Graw Hill, 1995. 299 p.", vbInformation, "Acerca de"
End Sub
Sub algoritmo()
208
Dim n, m, i As Integer, aux As Double
Dim mat(1 To 99, 1 To 99) As Double
Dim cero(1 To 99, 1 To 99)
Dim temp(1 To 99, 1 To 99)
Dim cont(1 To 99, 1 To 1)
Dim fila(1 To 99, 1 To 99) As Double
On Error GoTo algoritmo_Err
Worksheets("asignar").Select
Range("B2:CU99").Select
ActiveWorkbook.Names.Add Name:="tabla",
RefersToR1C1:="=asignar!R2C2:R99C99"
Range("CV2").Select
ActiveCell.FormulaR1C1 = "=COUNT(RC[-98]:RC[-1])"
n = Range("Cv2") 'busca el limite para las columnas
Range("B100").Select
ActiveCell.FormulaR1C1 = "=COUNT(R[-98]C:R[-1]C)"
m = Range("B100") 'busca el limite para las filas
Range("B2").Select
If n = 0 Or m = 0 Then 'condicional primario
MsgBox "alguno o ambos limites de la matriz igual a cero. verifique que los datos
comienzan desde la casilla B2", vbInformation, "ERROR EN LOS LIMITES"
Else
m=m+1
n=n+1
209
End If
Next r
For r = 2 To m
i=0
For c = 2 To n
If cero(r, c) = "asignar" Then
i=i+1
End If
Next c
If i = 0 Then
p=r
End If
Next r
210
For c = 2 To n
temp(p, c) = mat(p, c)
Next c
For c = 2 To n
If temp(p, c) = 0 Then
For r = 2 To m
If cero(r, c) = "asignar" Then
For q = 2 To n
If cero(r, q) = "asignar" Then
temp(r, q) = cero(r, q)
Else: temp(r, q) = mat(r, q)
End If
Next q
Else: temp(r, c) = mat(r, c)
End If
Next r
End If
Next c
If i > 0 Then
For c = 2 To n 'asigna las filas con ceros o asignacion
fila(r, c) = temp(r, c) 'a la matriz fila, borrando esa casillas
temp(r, c) = Null 'de la matriz temp
Next c
End If
Next r
For c = 2 To n
If fila(p, c) = 0 Then
For r = 2 To m
fila(r, c) = Null
Next r
211
End If
Next c
aux = fila(2, 2)
For r = 2 To m
For c = 2 To n
If IsEmpty(fila(r, c)) Then 'busca el mínimo en la matriz
Else 'fila
If fila(r, c) < aux Then
aux = fila(r, c)
End If
End If
Next c
Next r
For r = 2 To m
For c = 2 To m
If IsEmpty(fila(r, c)) Then 'resta el mínimo a la matriz
Else: fila(r, c) = fila(r, c) - aux 'fila
End If
If IsEmpty(temp(r, c)) Then 'suma el mínimo a la matriz
Else: temp(r, c) = temp(r, c) + aux 'temp
End If
If IsNull(fila(r, c)) Or IsEmpty(fila(r, c)) Then
Else: temp(r, c) = fila(r, c) 'pasa los datos de la
End If 'matriz fila a temp
Next c
Next r
End If
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
'================================================================
' FASE DOS BUSQUEDA SOLUCIÓN ÓPTIMA
'================================================================
For r = 2 To m 'cambia los ceros por
For c = 2 To n 'sus valores en la hoja
If mat(r, c) = 0 Then 'de calculo matriz y los
With Worksheets("asignar").Cells(r, c) 'guarda en la matriz cero
cero(r, c) = .Value
End With
End If
212
Next c
Next r
'**********************************************************ciclo externo
vacio = False 'valor de la variable de control
Do 'inicio del ciclo externo
aux = 0: min = 1000
Next c
Next r
'---------------------------------------------------------ciclo interno--
i=1
Do
j=1
For r = 2 To m
If cont(r, 1) = 0 Then 'contador de ceros en el vector cont(r,1)
j=j+1
End If
If j = m Then
vacio = True
Exit Do 'sale del ciclo interno cuando el vector
Else: vacio = False 'este lleno de ceros
End If
If cont(r, 1) = i Then
For c = 2 To n
If cero(r, c) <> 0 Then
With Worksheets("asignar").Cells(r, c)
aux = .Value
If aux < min Then
min = aux: p = r: q = c
End If
End With
End If
Next c
End If
Next r
213
If min = 1000 Then
i = 1 + i: vacio = True
End If
Loop Until vacio = False
'----------------------------------------------------fin---ciclo interno--
If vacio = True Then
i=0
For r = 2 To m '
For c = 2 To n '
If cero(r, c) = "asignar" Then
i=1+i
End If
Next c
Next r
If i = ok Then
fase3 = False
Exit Do
Else: fase3 = True
Exit Do
End If
End If
214
Worksheets("Hoja1").Cells(r, c).Select
Next c
Next r
End If
ActiveSheet.Shapes(2).Select
Range("A1").Select
'MsgBox "fin"
algoritmo_Exit:
Exit Sub
algoritmo_Err: ' Rutina de control de errores.
'MsgBox Err.Number & "- - " & Err.Description, vbCritical, "ERROR"
If Err.Number = -2147024809 Then
cuadro_de_texto
Resume
Else
MsgBox Err.Number & "- - " & Err.Description, vbCritical, "ERROR"
Resume algoritmo_Exit
End If
End Sub 'algoritmo
Sub cuadro_de_texto()
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 151.5, 92.25, 299.25,
72#).Select
Selection.Font.Bold = False
ActiveSheet.Shapes(2).Select
Selection.ShapeRange.Line.Visible = msoFalse
With Selection
.HorizontalAlignment = xlJustify
.VerticalAlignment = xlJustify
.Orientation = xlHorizontal
.AutoSize = False
End With
Selection.Characters.Text = _
"La palabra ASIGNAR indica que trabajo debe asignarse a que maquina para obtener
el menor tiempo de proceso posible."
With Selection.Characters(Start:=1, Length:=117).Font
.Name = "Times New Roman"
.FontStyle = "Normal"
.Size = 16
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
215
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
With Selection.Characters(Start:=12, Length:=7).Font
.Name = "Times New Roman"
.FontStyle = "Negrita"
.Size = 16
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 7
End With
Range("A1").Select
End Sub
Johnson.Xls
'Diseñado por Jesús Eduardo Scarpetta jescarpe@yahoo.com
'Feb 2002 Trabajo de grado
Sub algoritmo()
Dim g, t, y, j, m, i As Integer, aux, s As Variant
Dim dat(1 To 99, 1 To 3) As Variant
Dim JOHN(1 To 99, 1 To 3): Dim graf(1 To 99, 1 To 3)
216
Worksheets("johnson").Cells(r, c).Select
Next c
Next r
If q = 2 Then
For c = 1 To 3
JOHN(i, c) = dat(p, c)
dat(p, c) = Null
Next c
i=i+1
Else
t=m-j
For c = 1 To 3
JOHN(t, c) = dat(p, c)
dat(p, c) = Null
Next c
j=j+1
End If
k=0
For r = 2 To m
If IsNull(dat(r, 2)) Then
k=k+1
End If
Next r
If k = ok Then
Exit Do
End If
Loop
'*****************************************************************
217
graf(1, c) = JOHN(1, c) 'matriz john y graf
Next c
Worksheets("Hoja1").Select
Range("A1:CU99").Select 'limpia la zona donde
Selection.ClearContents 'se pegan los datos
i=0
For c = 2 To 3
For r = 2 To m
p=r+i
graf(p, c) = JOHN(r, c)
Next r
i=i+1
Next c
q=m+1
s=0
For r = 2 To m
s = graf(r, 2) + s
Next r
s = graf(q, 3) + s
graf(2, 3) = JOHN(2, 2)
For r = 1 To q 'imprime los datos del array en
For c = 1 To 3 'la hoja1 del archivo por columna
q=8-c
Cells(r, q) = graf(r, c)
'Worksheets("Hoja1").Cells(r, q).Select
Next c
Next r
t=0
g=0
For i = 1 To 3
ActiveSheet.Shapes(i).Select
Next i
If g = 0 And t = 0 Then
218
g=2
Else:
If t <> 0 Then
MsgBox "EN CASO DE REALIZARSE MAL LA OPERACIÓN BORRE EL
OBJETO E INTENTE DE NUEVO LA OPERACIÓN. ", vbInformation,
"IMPORTANTE"
g=2
End If
End If
ActiveSheet.Shapes(g).Select
Selection.Characters.Text = "los trabajos se terminan en " & s & " horas estándar "
With Selection.Characters(Start:=1, Length:=43).Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 16
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
End If
Worksheets("Hoja1").Cells(1, 1).Select
algoritmo_Exit:
Exit Sub
algoritmo_Err: ' Rutina de control de errores.
'MsgBox Err.Number & "- - " & Err.Description, vbCritical, "ERROR"
If Err.Number = -2147024809 Then
y = InputBox("Falta uno de estos elementos en la hoja de cálculo: "_
&" "_
& "1 - El grafico representativo de la Regla de Johnson. "_
& "2 - El Texto explicación de la respuesta obtenida. "_
& "3 - El botón que ejecuta el algoritmo. "_
& "4 - Todas las anteriores", "FALTA ALGO EN LA HOJA DE CÁLCULO")
Select Case y
Case 1
grafico
t=1
Case 2
cuadro_de_texto
g=i
219
Case 3
boton
t=1
Case 4
grafico
cuadro_de_texto
boton
t=1
Case Else
MsgBox "El número no es valido"
Resume algoritmo_Exit
End Select
Resume
Else
MsgBox Err.Number & "- - " & Err.Description, vbCritical, "ERROR"
Resume algoritmo_Exit
End If
End Sub 'JOHNSON
MODULO 2
'Diseñado por Jesús Eduardo Scarpetta
'jescarpe@yahoo.com
'Feb 2002
'Trabajo de grado
Sub grafico()
'ActiveWindow.Visible = False
'Windows("grafico johnson.xls").Activate
Range("A1:C99").Select
Charts.Add
ActiveChart.HasLegend = False
ActiveChart.ChartType = xlBarStacked
ActiveChart.SetSourceData Source:=Sheets("Hoja1").Range("A1:A99,E1:F99"), _
PlotBy:=xlRows
For r = 1 To 98
ActiveChart.SeriesCollection(r).Select
Selection.Interior.ColorIndex = xlNone
Next r
ActiveChart.Location Where:=xlLocationAsObject, Name:="Hoja1"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Secuenciación Regla de Johnson para N trabajos en 2
maquinas"
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
220
With ActiveChart.Axes(xlCategory)
.HasMajorGridlines = False
.HasMinorGridlines = False
End With
With ActiveChart.Axes(xlValue)
.HasMajorGridlines = False
.HasMinorGridlines = False
End With
ActiveChart.PlotArea.Select
ActiveChart.ChartArea.Select
'MsgBox "borrar"
' ActiveWindow.Visible = False
' Selection.Delete
End Sub
Sub cuadro_de_texto()
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 203.25, 16.5, _
388.5, 43.5).Select
Selection.ShapeRange.Line.Visible = msoFalse
Selection.Characters.Text = "los trabajos se terminan en " & s & " horas estándar"
With Selection.Characters(Start:=1, Length:=63).Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 16
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
End Sub
Sub boton()
ActiveSheet.Buttons.Add(49.5, 249, 123.75, 28.5).Select
Selection.OnAction = "algoritmo"
'ActiveSheet.Shapes("1").Select
Selection.Characters.Text = "JOHNSON"
With Selection.Characters(Start:=1, Length:=4).Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 10
.Strikethrough = False
.Superscript = False
221
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Range("A2").Select
End Sub
Sub msg()
MsgBox "TRABAJO DE GRADO Herramienta informática en hoja electrónica para la
planeación a corto plazo de la producción en ambientes de planificación jerárquica, para
PYMES con sistema de producción por lotes o series cortas. REALIZADO POR Jesús
Eduardo Scarpetta y Eliana Cuellar Bernal. Este archivo es un vinculo del archivo en
Access HPP-S.mdb", vbInformation, "Acerca de"
End Sub
Detallada.Xls
Sub Macro1()
ActiveSheet.ChartObjects("Gráfico 12").Activate
ActiveChart.Axes(xlValue).Select
ActiveChart.ChartArea.Select
With ActiveChart
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "he"
End With
Selection.Left = 282
Selection.Top = 162
Selection.Font.Bold = False
End Sub
MODULO 2
'Diseñado por Jesús Eduardo Scarpetta jescarpe@yahoo.com
'Feb 2002 Trabajo de grado
Sub msg()
MsgBox "TRABAJO DE GRADO Herramienta informática en hoja electrónica para la
planeación a corto plazo de la producción en ambientes de planificación jerárquica, para
PYMES con sistema de producción por lotes o series cortas. REALIZADO POR Jesús
Eduardo Scarpetta y Eliana Cuellar Bernal. Este archivo es un vinculo del archivo en
Access HPP-S.mdb", vbInformation, "Acerca de"
End Sub
Sub grafico()
Range("A1:B100").Select
222
Charts.Add
ActiveChart.ChartType = xlBarStacked
ActiveChart.SetSourceData Source:=Sheets("prog_detallada").Range("A1:B100"), _
PlotBy:=xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:="prog_detallada"
ActiveChart.HasLegend = False
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.AutoScaleFont = True
With Selection.TickLabels.Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 2
.Background = xlTransparent
End With
ActiveChart.Shapes.AddTextbox(msoTextOrientationHorizontal, 6.75, 24#, 37.5 _
, 22.5).Select
Selection.ShapeRange.Line.Visible = msoFalse
Selection.Characters.Text = "Pedido"
Selection.AutoScaleFont = False
With Selection.Characters(Start:=1, Length:=6).Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
With ActiveChart
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "he"
End With
Range("A1").Select
End Sub
223
Carga_Finita.Xls
'Diseñado por Jesús Eduardo Scarpetta jescarpe@yahoo.com
'Feb 2002 Trabajo de grado
Sub msg()
MsgBox "TRABAJO DE GRADO Herramienta informática en hoja electrónica para la
planeación a corto plazo de la producción en ambientes de planificación jerárquica, para
PYMES con sistema de producción por lotes o series cortas. REALIZADO POR Jesús
Eduardo Scarpetta y Eliana Cuellar Bernal. Este archivo es un vinculo del archivo en
Access HPP-S.mdb", vbInformation, "Acerca de"
End Sub
Sub Informacion1()
MsgBox "Cambie las horas reales de la celda en verde claro para variar las horas reales
normales de trabajo que se muestran en la celda de arriba en color naranja. Realice los
cambios en la celda verde y observe las modificaciones en el grafico. Al cerrar el archivo
copie el nuevo valor de las horas de trabajo para el periodo evaluado en el centro de análisis
en la base de datos en Access archivo 'PLANEACIÓN CORTO PLAZO' en el formulario
PRODUCCIÓN PLANEADA del menú CONTROL en la columna HR de la tabla INPUT,
OUTPUT PLANIFICADO para el centro seleccionado.", vbInformation,
"INFORMACIÓN"
End Sub
Sub Informacion2()
MsgBox "Suprima o borre cargas de la columna F (números en Fucsia) y observe los
cambios en el grafico al realizar lo anterior", vbInformation, "INFORMACIÓN"
End Sub
MODULO 2
'Diseñado por Jesús Eduardo Scarpetta jescarpe@yahoo.com
'Feb 2002 Trabajo de grado
Sub grafico()
Range("B5:H8").Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Hoja2").Range("B5:H8"), PlotBy:= _
xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:="Hoja2"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = _
"GANTT de carga finita para el centro seleccionado"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "periodos"
224
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "carga"
End With
ActiveChart.Axes(xlValue).Select
ActiveChart.PlotArea.Select
Selection.Left = 1
Selection.Top = 61
Selection.Top = 6
Selection.Width = 278
Selection.Height = 135
ActiveChart.Legend.Select
Selection.Left = 188
Selection.Top = 25
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.AutoScaleFont = False
With Selection.TickLabels.Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
ActiveChart.Axes(xlCategory).AxisTitle.Select
Selection.AutoScaleFont = False
With Selection.Font
.Name = "Arial"
.FontStyle = "Negrita"
.Size = 7
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
Selection.Left = 230
ActiveChart.Axes(xlValue).Select
225
Selection.TickLabels.AutoScaleFont = False
With Selection.TickLabels.Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
ActiveChart.Axes(xlValue).AxisTitle.Select
Selection.AutoScaleFont = False
With Selection.Font
.Name = "Arial"
.FontStyle = "Negrita"
.Size = 7
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Orientation = xlHorizontal
End With
Selection.Left = 3
Selection.Top = 1
ActiveChart.ChartTitle.Select
Selection.Left = 117
Selection.Top = 1
Selection.AutoScaleFont = False
With Selection.Font
.Name = "Arial"
.FontStyle = "Negrita"
.Size = 10
.Strikethrough = False
226
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
ActiveChart.Legend.Select
Selection.AutoScaleFont = False
With Selection.Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
ActiveWindow.Visible = False
Windows("carga_finita.xls").Activate
Range("B5").Select
End Sub
In-out.Xls
'Diseñado por Jesús Eduardo Scarpetta jescarpe@yahoo.com
'Feb 2002 Trabajo de grado
Sub msg()
MsgBox "TRABAJO DE GRADO Herramienta informática en hoja electrónica para la
planeación a corto plazo de la producción en ambientes de planificación jerárquica, para
PYMES con sistema de producción por lotes o series cortas. REALIZADO POR Jesús
Eduardo Scarpetta y Eliana Cuellar Bernal. Este archivo es un vinculo del archivo en
Access HPP-S.mdb", vbInformation, "Acerca de"
End Sub
MODULO 2
Sub gráfico()
Range("D1:E100").Select
ActiveWindow.SmallScroll Down:=-8
End Sub
227
Sub graf()
Charts.Add
ActiveChart.ChartType = xlColumnStacked
ActiveChart.SetSourceData Source:=Sheets("control_input_output").Range( _
"D1:E100"), PlotBy:=xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:= _
"control_input_output"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "input para el CT"
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
With ActiveChart.Axes(xlCategory)
.HasMajorGridlines = False
.HasMinorGridlines = False
End With
With ActiveChart.Axes(xlValue)
.HasMajorGridlines = True
.HasMinorGridlines = False
End With
ActiveChart.HasLegend = False
ActiveSheet.Shapes("Gráfico 3").ScaleWidth 1.14, msoFalse, _
msoScaleFromBottomRight
ActiveSheet.Shapes("Gráfico 3").ScaleHeight 1.34, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("Gráfico 3").IncrementLeft -93.75
ActiveSheet.Shapes("Gráfico 3").IncrementTop 36#
End Sub
Sub outgraf()
Charts.Add
ActiveChart.ChartType = xlColumnStacked
ActiveChart.SetSourceData Source:=Sheets("control_input_output").Range( _
"F1:G100"), PlotBy:=xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:= _
"control_input_output"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "out para el CT"
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
ActiveChart.HasLegend = False
228
ActiveSheet.Shapes("Gráfico 4").ScaleWidth 1.07, msoFalse, msoScaleFromTopLeft
ActiveSheet.Shapes("Gráfico 4").ScaleHeight 1.16, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("Gráfico 4").ScaleWidth 1.05, msoFalse, msoScaleFromTopLeft
ActiveSheet.Shapes("Gráfico 4").ScaleHeight 1.1, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("Gráfico 4").IncrementLeft 192#
ActiveSheet.Shapes("Gráfico 4").IncrementTop 54#
ActiveSheet.Shapes("Gráfico 4").IncrementLeft -1.5
ActiveSheet.Shapes("Gráfico 4").IncrementTop -17.25
ActiveWindow.Visible = False
Windows("in-out.xls").Activate
ActiveSheet.ChartObjects("Gráfico 3").Activate
ActiveChart.ChartArea.Select
ActiveSheet.Shapes("Gráfico 3").IncrementLeft -8.25
ActiveSheet.Shapes("Gráfico 3").ScaleWidth 0.97, msoFalse, msoScaleFromTopLeft
ActiveSheet.Shapes("Gráfico 3").ScaleHeight 1.01, msoFalse, _
msoScaleFromBottomRight
ActiveWindow.Visible = False
Windows("in-out.xls").Activate
ActiveSheet.ChartObjects("Gráfico 4").Activate
ActiveChart.ChartArea.Select
ActiveSheet.Shapes("Gráfico 4").IncrementLeft -16.5
ActiveSheet.Shapes("Gráfico 4").IncrementTop -1.5
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
Windows("in-out.xls").SmallScroll ToRight:=1
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
Windows("in-out.xls").SmallScroll ToRight:=1
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
Windows("in-out.xls").SmallScroll ToRight:=-1
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
229
Windows("in-out.xls").SmallScroll ToRight:=1
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
Windows("in-out.xls").SmallScroll ToRight:=1
Windows("in-out.xls").SmallScroll Down:=3
ActiveSheet.Shapes("Gráfico 4").ScaleWidth 0.94, msoFalse, msoScaleFromTopLeft
ActiveSheet.Shapes("Gráfico 4").ScaleHeight 0.99, msoFalse, _
msoScaleFromBottomRight
Windows("in-out.xls").LargeScroll ToRight:=-1
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
Windows("in-out.xls").SmallScroll Down:=-1
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
Windows("in-out.xls").SmallScroll Down:=-1
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
Windows("in-out.xls").SmallScroll Down:=-1
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
Windows("in-out.xls").SmallScroll Down:=1
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
ActiveWindow.Visible = False
ActiveSheet.ChartObjects("Gráfico 4").Activate
230
Windows("in-out.xls").SmallScroll Down:=-1
ActiveWindow.Visible = False
Windows("in-out.xls").Activate
Range("A1").Select
End Sub
231