REPÚBLICA BOLIVARIANA DE VENEZUELA UNIVERSIDAD DEL ZULIA
FACULTAD DE INGENIERÍA DIVISIÓN DE POSTGRADO
PROGRAMA DE POSTGRADO EN GERENCIA DE MANTENIMIENTO
SISTEMA AUTOMATIZADO PARA LA PROGRAMACIÓN Y SEGUIMIENTO DE LAS ACTIVIDADES DE MANTENIMIENTO EN
INSTITUCIONES POLICIALES
Trabajo de Grado presentado ante la
Ilustre Universidad del Zulia para optar al Grado Académico de
MAGÍSTER SCIENTIARUM EN GERENCIA DE MANTENIMIENTO
Autor: ALEXANDER ENRIQUE FUENMAYOR FERRER
Tutor: Carmen Galíndez Co-tutor: Marianella Mendoza
Maracaibo, Mayo de 2007
FRONTISPICIO
SISTEMA AUTOMATIZADO PARA LA PROGRAMACIÓN Y SEGUIMIENTO DE LAS ACTIVIDADES DE MANTENIMIENTO EN
INSTITUCIONES POLICIALES
Autor: Apellidos: Fuenmayor Ferrer Nombres: Alexander Enrique Cédula de Identidad: 7.818.398 Dirección: Avenida 20 con calle 67. Edificio “Capri”, piso 7. Maracaibo, estado Zulia. Teléfono: 0414-6169511 0261-7520372 E-mail: [email protected], [email protected] Firma: Tutor: Apellidos: Galíndez Novoa Nombres: Carmen Virginia Cédula de Identidad: 12.305.069 Dirección: Conj. Residencial La Paragua. Edif. Aripagua II. Apto 4 B, Maracaibo, estado Zulia Teléfono: 0261-7411118, 0414-6200095. E-mail: [email protected] Firma: Cotutor: Apellidos: Mendoza Barboza Nombres: Marianella Cédula de Identidad: 10.104.514 Dirección: Av. 23 con calle 73 Res. Pacairigua Apto 8ª Sector Paraíso Teléfono: 0261-0261-7518692, 0414-6286680 E-mail: [email protected] Firma:
APROBACIÓN
Este Jurado aprueba el Trabajo de Grado Titulado SISTEMA AUTOMATIZADO PARA LA
PROGRAMACIÓN Y SEGUIMIENTO DE LAS ACTIVIDADES DE MANTENIMIENTO EN
INSTITUCIONES POLICIALES que el Ingeniero Alexander Enrique Fuenmayor Ferrer, C.I.
7.818.398 presenta ante el Consejo Técnico de la División de Postgrado de la Facultad de
Ingeniería en cumplimiento del Articulo 51, Parágrafo 51.6 de la Sección Segunda del
Reglamento de Estudios para Graduados de la Universidad de Zulia, como requisito para optar
al Grado Académico de
MAGÍSTER SCIENTIARUM EN GERENCIA DE MANTENIMIENTO.
Coordinador de Jurado.
Carmen Galíndez. C.I. 12.305.069
Ana Irene Rivas Gerardo Guerra. C.I. 4.152.755 C.I. 7.614.521
Gisela Páez Director de la División de Postgrado.
Maracaibo, Mayo de 2007.
Fuenmayor Ferrer Alexander Enrique. Sistema Automatizado para la Programación y Seguimiento de las Actividades de Mantenimiento en Instituciones Policiales. (2007). Trabajo de Grado. Universidad del Zulia. Facultad de Ingeniería. División de Postgrado. Maracaibo, Venezuela. 346p. Tutor: MSc. Carmen Galíndez, Cotutor: MSc. Marianela Mendoza.
RESUMEN Este trabajo de grado describe el diseño y desarrollo de un Sistema Automatizado para la programación y seguimiento de las actividades de mantenimiento que se ejecutan en el departamento de mantenimiento de una institución policial. Básicamente se refiere a la utilización de la tecnología existente actualmente en materia de computadoras para el diseño de un programa que proporcione una valiosa ayuda en la programación de las actividades de mantenimiento preventivo de los equipos y maquinarias de instituciones policiales. Particularmente en este tipo de entidades se presenta la problemática de que no existen programas de mantenimientos coordinados que estén basados en alguna de las metodologías usadas mundialmente en materia de mantenimiento. Esto genera una ausencia de seguimiento de las actividades propias de mantenimiento, aumento en los costos de mantenimiento, falta de información y control sobre sus equipos y ausencia de políticas de mantenimiento orientadas al mejoramiento de sus actividades. Adicionalmente, es común que en el departamento de mantenimiento de estas instituciones no exista un programa de computadoras específico para las labores que ejecuta ya que son vistas como un gasto y no como una inversión. Como objetivo principal se busca desarrollar un programa de computación modular capaz de llevar a cabo la programación y el seguimiento de las actividades de mantenimiento de los equipos y maquinarias de una institución policial, basándose en los registros que lleve la base de datos del mismo. Para lograr este fin se desarrollaron actividades planificadas y ordenadas entre las que podemos mencionar: inventario, entrevistas, antecedentes, evaluación y mejoras de los programas de mantenimiento existentes y la formulación de índices de control para la evaluación de la gestión del mantenimiento. Como resultado se obtuvo que el sistema automatizado realizado complementó a los departamentos de mantenimiento de las instituciones policiales y se recurrió al mismo como apoyo importante para el mejoramiento de las políticas de mantenimiento que buscan la optimización de sus servicios. Palabras clave: mantenimiento, programación, automatización. E-mail del autor: [email protected].
Fuenmayor Ferrer Alexander Enrique. Sistema Automatizado para la Programación y Seguimiento de las Actividades de Mantenimiento en Instituciones Policiales. (2007). Trabajo de Grado. Universidad del Zulia. Facultad de Ingeniería. División de Postgrado. Maracaibo, Venezuela. 346p. Tutor: MSc. Carmen Galíndez, Cotutor: MSc. Marianela Mendoza.
ABSTRACT This degree work describes the Automated System design and development for the programming and tracking maintenance activities executed in the police maintenance departments. Basically it refers to the use of today existent computers technology for a program's design that provides a valuable help in the programming of equipment and machines maintenance preventive activities. Particularly in these organizations it encounters the inconvenience that coordinated maintenance programs based on one of maintenance methodologies used world widely doesn’t exists. This generates a follow-up own absence of maintenance activities, increase in maintenance costs, drop-out and thrashing on its equipment and machines, and absence of maintenance policies guided to improvement of activities. Additionally, it’s common that in these entities maintenance departments exist none computer program for the chores they executes since they are seen like an expense and not like an investment. Principal objective tries to develop a computer modular program capable to carry-out programming and tracking maintenance activities on police institutions equipment and machines, being based on records in its databases. In order to achieve this, planned and ordered activities were development: Inventory, interviews, background, evaluation and improvements on existing maintenance programs and control indexes formulation to evaluate maintenance performance. As result, automated system accomplished complemented the institutional police maintenance departments and it was used as an important support for the maintenance policies improvements that pursuits its services optimization. Key words: Maintenance, programming, automation. Author`s e-mail: [email protected]
AGRADECIMIENTO
A la ilustre Universidad del Zulia, por darme oportunidad de alcanzar el objetivo
propuesto.
A todos los Profesores, por su dedicación, apoyo y conocimientos que me brindaron
durante todo el período de estudio.
A las profesoras Ana Irene Rivas, Carmen Galíndez y Marianella Mendoza por su
valiosa ayuda y asesoría en la realización de este trabajo.
A todo el personal de mantenimiento de los organismos policiales por su participación y
colaboración brindada.
A todos los compañeros que siguieron conmigo todo el camino hasta la culminación de
nuestros estudios.
A todo el personal de la facultad de Ingeniería de la Universidad del Zulia,
especialmente de la división de postgrado, quienes colaboraron con su trabajo en mis
estudios.
A todas las personas que de alguna manera contribuyeron a que alcanzara esta meta.
GRACIAS A TODOS.
TABLA DE CONTENIDO
Página
RESUMEN..................................................................................................................... 4ABSTRACT.................................................................................................................... 5AGRADECIMIENTO....................................................................................................... 6TABLA DE CONTENIDO............................................................................................... 7LISTA DE TABLAS……………………………………………………………………………. 9LISTA DE FIGURAS………………………………………...………………………………… 11INTRODUCCIÓN……………………………………………………………………….……… 13CAPÍTULO I. ASPECTOS GENERALES…………………………………………………………… 15 1.1. Planteamiento del problema……………………………………………….… 15 1.2. Justificación.............................................................................................. 16 1.3. Alcance..................................................................................................... 17 1.4. Delimitación.............................................................................................. 17 1.5. Objetivo general....................................................................................... 17 1.6. Objetivos específicos................................................................................ 17 1.7. Antecedentes de la investigación………………………………………….… 18 1.8. Descripción de los organismos policiales................................................. 20 II. FUNDAMENTOS TEÓRICOS……………………………………………………….. 21 2.1. Aspectos generales sobre sistemas automatizados.................................. 21 2.2. Aspectos generales del mantenimiento..................................................... 22 2.2.1. Introducción al mantenimiento…………………………………………… 22 2.2.2. El proceso de mantenimiento…………………………………………….. 23 2.2.3. Políticas de mantenimiento……………………………………………….. 26 2.2.4. Objetivos y funciones del mantenimiento……………………………….. 27 2.2.5. Ventanas del mantenimiento……………………………………………… 28 2.2.6. Tipos de mantenimiento…………………………………………………… 29
2.3. Aspectos generales sobre sistemas computarizados de gestión de mantenimiento………………………….…..………………………
31
2.3.1. Qué es un sistema computarizado de gestión de mantenimiento……. 31
2.3.2. Ventajas del sistema computarizado de gestión de mantenimiento….. 32
III. MARCO METODOLÓGICO…………………………………………………………… 34 3.1. Tipo de Investigación…............................................................................... 34 3.2. Población y muestra…................................................................................ 35 3.3. Técnicas e instrumentos de recolección de datos…………………………… 35 3.4. Procedimiento metodológico…………………………………………………… 35 IV. PRESENTACIÓN DE RESULTADOS………………………………………………. 40
4.1. Inventario de partes, maquinarias y equipos a ser considerados por el sistema automatizado para la programación y seguimiento de las actividades de mantenimiento ………………………………..…………
40
TABLA DE CONTENIDO
Página
4.2. Codificación……………………….................................................................. 44 4.2.1. Código para equipos………………………………………………………… 44 4.2.2. Código para locaciones o ubicaciones……………………………………. 77 4.2.3. Código para categoría de equipos…………………………………………. 77 4.2.4. Código para departamentos………………………………………………… 77 4.2.5. Código para estatus de equipos……………………………………………. 77 4.3. Evaluación de programas de mantenimiento existente…………………..….. 81 4.3.1. Programas de mantenimiento existentes…………………………………. 81 4.3.2. Parámetros de los programas de mantenimiento existentes……………
4.4. Programa de mantenimiento preventivo para equipos y maquinarias basados en historiales, recomendaciones del fabricante y siguiendo lineamientos característicos del mantenimiento clase mundial………………………………………………..….
86
4.4.1. Investigación documental……………………………………………….….. 86
4.4.2. Objetivos del mantenimiento clase mundial a considerar…………..…… 87
4.4.3. Elaboración del programa de mantenimiento…………………………….. 87
4.4.4. Formatos a utilizar en labores de mantenimiento………………………… 153
4.5. Índices de control para medir efectividad del sistema……………………..… 162
4.6. Parámetros a ser considerados por el sistema automatizado para la programación y seguimiento de las actividades de mantenimiento…………………………………………………………………….
165
4.7. Desarrollo del programa para computadoras con interfaz hombre-máquina amigable para hacer fácil su operabilidad………………...
167
4.7.1. Selección de lenguaje de programación…………………………………. 168
4.7.2. Método de programación para la aplicación…………………………….. 169
4.7.3. Subprogramas que conforman la aplicación…………………………….. 170
4.7.4. Desarrollo del sistema automatizado…………………………………….. 173
4.7.4.1. Tablas utilizadas para almacenamiento de información…………... 173
4.7.4.2. Formularios……………………………………………………………... 178
CONCLUSIONES............................................................................................................ 341RECOMENDACIONES.................................................................................................... 342BIBLIOGRAFÍA................................................................................................................ 343ANEXOS……………………………………………………………………………………..….. 346
LISTA DE TABLAS
Página
Tabla No. 1 Inventario de aires acondicionados de policía municipal de
Maracaibo................................................................................... 45
Tabla No. 2 Inventario de vehículos de policía municipal de Maracaibo........ 49
Tabla No. 3 Inventario de aires acondicionados de policía regional del
estado Zulia................................................................................. 53
Tabla No. 4 Inventario de vehículos de policía regional estado Zulia…......... 57
Tabla No. 5 Inventario de aires acondicionados de policía del municipal
de San Francisco………………………………………………… 62
Tabla No. 6 Inventario de vehículos de policía municipal de San Francisco. 63
Tabla No. 7 Inventario de equipos de telecomunicaciones de la policía
municipal de Maracaibo………………………………………….. 65
Tabla No. 8 Inventario de equipos de telecomunicaciones de la policía
municipal de San Francisco……………………………………... 65
Tabla No. 9 Inventario de equipos de telecomunicaciones de la policía
regional del estado Zulia …………………….…………………... 66
Tabla No.10 Inventario de partes en almacenes……….…………………….. 68
Tabla No.11 Programa de mantenimiento para vehiculo Crown Victoria.…… 89
Tabla No.12 Programa de mantenimiento para vehiculo Impala………...…… 95
Tabla No.13 Programa de mantenimiento para vehiculo Four Runner.....…… 99
Tabla No.14 Programa de mantenimiento para vehiculo LUV Dmax.......…… 102
Tabla No.15 Programa de mantenimiento para vehiculo Jeep Cherokee.…… 111
Tabla No.16 Programa de mantenimiento para vehiculo Mazda B2600....…… 116
Tabla No.17 Programa de mantenimiento para vehiculo Autana…………...… 122
Tabla No.18 Programa de mantenimiento para aire acondicionado tipo
ventana…………………………………………………………… 125
Tabla No.19 Programa de mantenimiento para aire acondicionado tipo
split York 3 a 5 Ton.…………………………………………….… 131
LISTA DE TABLAS
Página
Tabla No.20 Programa de mantenimiento para aire acondicionado tipo
multi-split LG 5 Ton.…………………………………………….… 137
Tabla No.21 Programa de mantenimiento para aire acondicionado tipo
split 30K BTU……………………………………………………… 140
Tabla No.22 Programa de mantenimiento para aire acondicionado tipo
compacto 5 a 20 Ton.…………………………………………… 143
Tabla No.23 Programa de mantenimiento para aire acondicionado tipo
split Carrier 5 a 15 Ton..………………………………………… 146
Tabla No.24 Programa de mantenimiento para aire acondicionado tipo
mini-split 15 a 24K BTU.………………………………………… 149
Tabla No.25 Índices de control………….……………………………………… 152
LISTA DE FIGURAS
Página
Figura No. 1 El proceso de mantenimiento.......................................................... 24
Figura No. 2 Formato para solicitud de trabajos.................................................. 153
Figura No. 3 Formato para mantenimiento preventivo de vehículos.................... 154
Figura No. 4 Formato para mantenimiento preventivo de aires acondicionados.. 156
Figura No. 5 Formato para reparación de vehículos…………………………… 158
Figura No. 6 Formato para reparación de aires acondicionados...……………… 160
Figura No. 7 Formulario Menú principal……………………………….………….. 178
Figura No. 8 Formulario Lista de equipos...………………………….……………. 184
Figura No. 9 Formulario Equipo actual…......………………………….………….. 195
Figura No.10 Formulario Equipo nuevo…......………………………….………….. 202
Figura No.11 Formulario Lista de empleados..………………………….………….. 203
Figura No.12 Formulario Empleado actual....………………………….……………. 207
Figura No.13 Formulario Empleado nuevo...………………………….…………….. 209
Figura No.14 Formulario Lista de ubicaciones……………………….……………… 212
Figura No.15 Formulario Ubicación actual……...…………………….……………… 215
Figura No.16 Formulario Ubicación nueva……...…………………….……………… 216
Figura No.17 Formulario Información de empresa….……………….……………… 217
Figura No.18 Formulario Reportes…………………………………………………… 219
Figura No.19 Formulario Listado de solicitudes de trabajo……………...………… 244
Figura No. 20 Formulario Solicitudes de órdenes de trabajo…….……………….. 248
Figura No. 21 Formulario Listados generales del sistema…..…….……………….. 251
Figura No. 22 Formulario Listados generales del sistema - Equipos……………... 252
Figura No. 23 Formulario Listados generales del sistema - Tipos de equipos…… 252
Figura No. 24 Formulario Listados generales del sistema - Empleados………….. 253
Figura No. 25 Formulario Listados generales del sistema - Ubicaciones..……….. 254
LISTA DE FIGURAS
Página
Figura No. 26 Formulario Listados generales del sistema - Proveedores.……….. 255
Figura No. 27 Formulario Listados generales del sistema - Repuestos...……….. 256
Figura No. 28 Formulario Listados generales del sistema - Códigos de Falla..….. 257
Figura No. 29 Formulario Listados generales del sistema - Otros…………....….. 258
Figura No. 30 Formulario Listados generales del sistema - Departamentos....….. 259
Figura No. 31 Menú mantenimiento preventivo……………………………….....….. 267
Figura No. 32 Lista de tareas de mantenimiento preventivo por fechas..….....….. 269
Figura No. 33 Tarea de mantenimiento preventivo actual por fecha…....….....….. 273
Figura No. 34 Lista de Tareas - medidores…………………………………......….. 285
Figura No. 35 Tarea de mantenimiento preventivo actual por medidores…….….. 289
Figura No. 36 Lectura de medidores……………………………………………….... 297
Figura No. 37 Lista de instrucciones……………………………………………….... 302
Figura No. 38 Instrucción actual……..…………………………………………….... 303
Figura No. 39 Instrucción nueva……..…………………………………………….... 303
Figura No. 40 Generación de orden de trabajo de mantenimiento preventivo….... 308
Figura No. 41 Horas de mano de obra distribuidos en mantenimiento preventivo... 329
INTRODUCCIÓN
El mantenimiento se ha convertido en una necesidad evidente de los sistemas de
producción y servicios a nivel mundial. Existen razones que justifican la existencia de planes de
mantenimiento preventivo, las cuales resultan en beneficio directo e indirecto del sistema.
El mantenimiento es considerado hoy en día un factor estratégico cuando se busca
incrementar los niveles de productividad, calidad y seguridad en una empresa. Es por ello que
una empresa que aspire a ser mas competitiva y eficiente debe adoptar técnicas y sistemas que
le permitan tener organizada y actualizada una gran cantidad de información para llevar a cabo
una buena gestión del mismo, alcanzando beneficios en la reducción de paros de equipos,
aumento de la vida útil de los equipos, reducción de los niveles de inventario, prevención de
reparaciones mayores, disminución de accidentes, contabilidad y uniformidad en la calidad de
sus productos y/o servicios.
El diseño de un plan de mantenimiento, tomando en cuenta los requerimientos y
características de cada empresa o institución, necesita de inventario de todos los equipos de
manera que permita identificar y seleccionar a cada uno de acuerdo a su complejidad y
criticidad de manera rápida y efectiva a través de un sistema de codificación por medio del
cual el personal que labora allí reconocerá los equipos.
Además, un programa de mantenimiento contempla toda la información técnica acerca de
lo que se debe seguir para el mantenimiento de los equipos existentes en una institución, de
manera de facilitar su operación al personal y con el propósito de preservar las máquinas y
equipos en condiciones óptimas de operación durante su tiempo de vida para la continuidad del
servicio que ofrece la institución y conectar la atención en las áreas más problemáticas y de
mayor importancia tecnológica, a fin de trabajar de forma coordinada con el área operativa,
minimizar el mantenimiento correctivo, costos de operación, paradas innecesarias por falta de
planificación, y por ende prolongar la vida útil de los equipos.
En el caso particular de los organismos policiales se diseñará un plan de mantenimiento
preventivo para sus equipos y maquinarias contemplando toda la información necesaria que
permita cumplir de forma adecuada y segura las labores de mantenimiento y de esta manera
maximizar la eficacia de los mismos garantizando la disponibilidad y calidad del servicio que
ofrecen estas instituciones.
13
14
Así mismo, se evaluará y mejorará la metodología que utilizan estas instituciones para el
manejo de sus inventarios, considerando que este aspecto es muy importante ya que se
relaciona directamente con la eficacia de un programa de mantenimiento óptimo.
Una vez definidos los programas de mantenimiento para los equipos y maquinarias de las
instituciones policiales y establecidos los adecuados procedimientos y técnicas para el manejo
de los inventarios, se diseñará un programa para computadoras que ayudará en alto grado al
control y seguimiento de las actividades de mantenimiento de cada uno de los equipos y
maquinarias de las instituciones policiales y permitirá llevar registros de todos las operaciones
que se lleven a cabo en los mismos incluyendo el manejo de los inventarios.
Este trabajo de grado se encuentra estructurado de la siguiente manera:
En el Capitulo I se especifican generalidades del problema donde se describe el objetivo
general, objetivos específicos, justificación, y una breve descripción de las funciones de los
organismos policiales.
En el Capitulo II se explican una serie de conceptos y antecedentes en general, que
permitan un mayor entendimiento acerca del diseño óptimo y eficiente de los programas de
mantenimiento preventivo.
En el Capitulo III se señalan los procedimientos a seguir para la elaboración de los
programas de mantenimiento, considerando la situación actual de los organismos policiales en
materia de mantenimiento. También comprende el tipo de investigación a realizar, la población
a ser estudiada, la recopilación de datos y los procedimientos para el análisis de los resultados.
En el capitulo IV se muestran los resultados obtenidos, la interpretación de los mismos y
la solución del problema.
Finalmente se expone las conclusiones y recomendaciones de la problemática estudiada.
CAPITULO I ASPECTOS GENERALES
En este capitulo se hace referencia a los aspectos generales del tema a tratar que incluye
el planteamiento y formulación del problema, el objetivo general, los objetivos específicos, la
justificación de la investigación, alcance, delimitación, y la descripción de la empresa.
1.1. – Planteamiento y formulación del problema
El mantenimiento de los equipos y maquinaria en una institución o empresa es uno de los
aspectos más importantes dentro de las funciones que éstas desarrollan ya que de él depende
el mantener dichos equipos en óptimo estado de operatividad y lograr el uso más eficiente de
los mismos durante su período de vida útil. Es bien conocido que en los organismos de
servicios públicos, que prestan servicios a la comunidad, como las instituciones policiales, las
labores de mantenimiento generalmente son subcontratadas o no se realizan debido a varias
razones como la no asignación de presupuesto o carencia de personal capacitado.
Durante las últimas dos décadas pasadas, fue muy común el observar la situación que se
presentaba con los equipos y maquinarias en los organismos policiales caracterizada por la falta
casi total de mantenimiento, por lo que dichos equipos eran utilizados hasta que los mismos se
deterioraban y/o presentaban fallas. Cuando esto sucedía a algún equipo, el mismo era
colocado en un depósito para su supuesta posterior reparación, la cual no era realizada, se
desmantelaba el equipo y terminaba en lo que comúnmente se denomina un “cementerio de
chatarra”.
A pesar de que en los últimos siete años se ha dado una mayor importancia a los
aspectos relacionados con el mantenimiento y que actualmente se está considerando la
inclusión del departamento de mantenimiento en la estructura organizativa de los organismos
policiales, estos departamentos en su mayoría no se encuentran organizados de una manera
óptima ya que no se llevan controles de inventario de partes, programa de mantenimiento
adecuado y personal bien calificado, limitándose a realizar las labores de mantenimiento
correctivo cuando el equipo falla y dejando el equipo inoperable hasta conseguir la parte a
reemplazar y realizar la reparación.
Otras de las situaciones reales que se presentan en los organismos policiales es el
frecuente cambio de personal, situación a la que no escapa el personal encargado de la
dirección del departamento o gerencia de mantenimiento. Se da el caso de que se coloca en la
dirección de mantenimiento a personal no calificado para estas labores.
Cuando el director ó gerente de mantenimiento es cambiado de su cargo en un tiempo
16
relativamente breve, es muy común que se pierdan los planes de mantenimiento que ha venido
desarrollando durante el tiempo de su trabajo además de perderse información recopilada
durante su período. Como es lógico el nuevo gerente aplicará su metodología propia y no se da
continuidad al trabajo realizado anteriormente y muchas veces se generan cambios en las
políticas de mantenimiento.
Bajo estos escenarios, no óptimos para una gerencia de mantenimiento, se llegan a
generar varios tipos de pérdidas que promedian un 40% más de tiempo de un equipo en espera
de repuestos y como consecuencia de la ausencia de un programa de mantenimiento
coherente, en donde se lleve el control sobre las actividades de mantenimiento acumuladas,
registros, información y seguimiento del programa, se genera un 35% mas en los costos de
mantenimiento. Por lo que se presenta la solución al planteamiento del problema como: ¿qué
recursos metodológicos y/o tecnológicos utilizar en los organismos policiales para llevar el
control sobre el programa de mantenimiento de manera que permita la operación y optimización
continua del mismo?
1.2. - Justificación
La elaboración de este proyecto busca desarrollar un sistema automatizado para la
programación y el seguimiento efectivo de todas las actividades de mantenimiento que se
desarrollen en las instituciones policiales.
La investigación es conveniente ya que sirve para estandarizar los métodos y
procedimientos para cada una de las actividades de mantenimiento que se realizan en los
institutos policiales y tiene implicaciones prácticas ya que ayudará a solucionar el problema de
la falta de seguimiento del programa de mantenimiento.
Así mismo, tiene utilidad metodológica al considerar una de las tendencias más
importantes y actuales en la gerencia del mantenimiento como lo es el Mantenimiento Clase
Mundial en el desarrollo del programa de mantenimiento preventivo, y la utilización de índices
de control para la medición de la efectividad del sistema, lo cual genera nuevos conocimientos
para el departamento encargado.
De igual manera, el proyecto genera un nuevo instrumento para la recolección y análisis
de datos ya que con el desarrollo de un programa para computadoras será posible realizar
estudios de historiales que influyan notablemente en la acertada toma de decisiones en lo que a
acciones de mantenimiento se refiera.
Además, considerando que el desarrollo del programa se basará en las actividades de
mantenimiento que se realizan en instituciones policiales, éste será de gran utilidad al estar
adaptado a las necesidades actuales de los mismos y a la vez podrá ser modificado para
17
adaptarlo a nuevos escenarios de mantenimiento que puedan generarse posteriormente.
1.3. – Alcance
La presente investigación comprende la identificación de las partes, maquinarias y
equipos de las instituciones policiales que van a ser tomadas en cuenta para el diseño del
sistema automatizado, considerando la flota vehicular, equipos de telecomunicaciones, equipos
electrónicos y eléctricos, equipos acondicionadores de ambiente y flota de operaciones aéreas,
evaluando los programas de mantenimiento actuales para su mejoramiento y creación de
nuevos programas que incluyan recomendaciones y lineamientos del mantenimiento clase
mundial. Así mismo, comprende la selección de los índices de control necesarios para medir la
efectividad del sistema y el desarrollo del programa de mantenimiento para computadoras
adaptado a los requerimientos de las instituciones policiales.
1.4. - Delimitación
El proyecto se limitará al diseño de un programa para computadoras para la programación
y seguimiento de las actividades de mantenimiento en las instituciones policiales de la región
zuliana: Instituto Autónomo Policía del Municipio Maracaibo, Instituto Autónomo Policía del
Municipio San Francisco y Policía Regional del estado Zulia. La investigación se encuentra
delimitada temporalmente desde el mes de abril del 2005 hasta el mes de Abril del 2007.
1.5. - Objetivo general
Desarrollar un sistema automatizado para la programación y seguimiento de las
actividades de mantenimiento de los equipos y maquinarias en instituciones policiales.
1.6. – Objetivos específicos
Elaborar el inventario de las partes, maquinarias y equipos a ser considerados en el
diseño del sistema automatizado para la programación y seguimiento de las actividades
de mantenimiento en instituciones policiales.
Evaluar el programa de mantenimiento existente en las instituciones policiales y los
factores que se tomaron en cuenta para su elaboración.
18
Desarrollar el programa de mantenimiento preventivo para los equipos y maquinarias,
basados en historiales, recomendaciones del fabricante y siguiendo los lineamientos
característicos del Mantenimiento Clase Mundial.
Formular índices de control para medir la efectividad total del sistema.
Diseñar los parámetros que van a ser considerados por del sistema automatizado para
la programación y seguimiento de las actividades de mantenimiento.
Desarrollar el programa para computadoras con interfaz hombre-máquina amigable con
el objeto de hacer fácil su operabilidad.
1.7. – Antecedentes de la investigación.
Desarrollo de un sistema computacional para el control de equipos y trabajos en
empresas productoras de vinos. Ing. Claudia Wildman. Trabajo de grado para optar al
título de Magíster Scientiarum en Gerencia de Mantenimiento. Universidad del Zulia,
2003.
Resumen
A fin de controlar la actividad de mantenimiento a través de los subsistemas de control de equipos y trabajos de manera fácil, rápida y precisa a tono con la política empresarial, el ambiente y la situación socio-económica del país; se crea un sistema de información automatizado para dichos subsistemas en empresas productoras de vino. El escenario computacional es creado siguiendo la metodología enfocada por el autor James Seen, el cual menciona seis etapas que conforman el ciclo de vida de un sistema completamente desarrollado: 1.- Investigación preliminar, 2.- Determinación de los requerimientos, 3.- diseño del sistema, 4.- Desarrollo del software, 5.- Prueba del sistema, 6.- Implantación del sistema. Escrito en lenguaje Visual Basic, este software registra la información concerniente a los equipos y actividades para el programa de mantenimiento preventivo del Centro Vitícola del Edo. Zulia, consignando la entrada y salida de datos, los cuales son desplegados por pantallas e impresos por reportes originados automáticamente. Con este sistema se mejora considerablemente la velocidad de procesamiento y consulta de la información; aumentando la confiabilidad de las transcripciones, eliminando de esta manera la realización de actividades manuales, minimizando la pérdida de tiempo y dinero; sirviendo de herramienta para la estructuración y organización general del mantenimiento. Como prueba de validez de esta investigación se pone de manifiesto la funcionalidad del sistema y se evidencia la facilidad del manejo del mismo, permitiendo así comprobar que satisface las necesidades y los requerimientos establecidos.
De este trabajo, el cual contempla entre otros aspectos, el uso de un programa para
computadoras para llevar la información referente a los equipos instalados en una empresa
19
productora de vinos y su mantenimiento, se toma como referencia la clasificación detallada de
los parámetros a tomar en cuenta en el programa de mantenimiento de los equipos y la manera
de mostrar la información en el sistema además de la apropiada codificación de los equipos y
tareas de mantenimiento.
Diseño de un sistema de mantenimiento preventivo de los equipos para empresas
de servicios. Ing. Joseline Finol. Trabajo de grado para optar al título de Magíster
Scientiarum en Gerencia de Mantenimiento. Universidad del Zulia, 2002.
Resumen
En un mundo en plena transformación, donde la competitividad es la clave del éxito de cualquier empresa que opere mecánicamente, una de las herramientas básicas para la consecución de tal objetivo, la constituye un sistema gerencial de mantenimiento que permita obtener los parámetros específicos de un programa de mantenimiento preventivo, que a su vez asegure el eficiente funcionamiento de los equipos, aumente su vida útil y reduzca los períodos de mal funcionamiento o fallas que generen costos innecesarios, para así ofrecer ventajas competitivas a los clientes de las empresas de servicios de alimentos. Para tales efectos se seleccionó como punto de partida de esta investigación la empresa SHRM (Servicio de Hotelería, Restaurante y Mantenimiento) que labora en este ramo. El diseño del plan de mantenimiento preventivo se realizó a partir de la identificación y codificación de los equipos críticos y semicríticos que permitió llevar un control de equipos mediante registros e historiales, un control de trabajos mediante la programación de las actividades de mantenimiento preventivo a ejecutar y la aplicación de formatos, un control de inventario a través de la codificación de los repuestos, materiales, herramientas y equipos, el establecimiento de políticas y formatos para su control; y la utilización del computador como respaldo de información; que permite imponer mejoras significativas en el proceso productivo de las empresas de servicios de alimentos. Siendo todas las características del programa de mantenimiento preventivo adaptables a cualquier empresa que labore en el mismo ramo.
Este trabajo crea un modelo de base de datos de fácil uso y compatible con muchos
programas que manejan las mismas el cual permite compartir los datos con otras aplicaciones
desarrolladas en otros lenguajes. Esta filosofía de manejo de la información tiene la gran
ventaja de que en futuros desarrollos de programas no se pierde la misma sino que es utilizada
por las nuevas aplicaciones.
Software de Mantenimiento MaintSmart. Daniel Cook. Es un programa para
mantenimiento que se empezó a desarrollar en el año 1997 y que cuenta con constantes
actualizaciones y que en comparación con otras aplicaciones es una de las más
completas del mercado. El programa es modular lo que significa que de acuerdo con la
necesidad del cliente se adquieren los módulos de programa requeridos para cada
20
función de la empresa. De este programa se tomó como referencia las variables básicas
que debe tener una aplicación de computadoras para mantenimiento.
Software de mantenimiento EZ Maintenance, CMMS Preventive Maintenance
Software. Link it Software Corporation. Este programa planifica el mantenimiento de
flotas de vehículos así como otros equipos de una empresa. También utiliza varios
niveles de accesos al usuario que usa el programa para prevenir accesos no autorizados
o modificación de datos en los diferentes módulos del programa. A pesar de que no está
orientado al manejo de inventario, se tomo como referencia principal el manejo que hace
de las flotas de vehículos en las actividades de mantenimiento.
Software Prisma II Gestión de Mantenimiento. Sisteplant S.A. Es un software que
está orientado a la reducción de averías y costos de mantenimiento así como también
la optimización de los mantenimientos preventivos, cumpliendo con los estándares ISO.
De este software se tomo como referencia la manera de presentación de los datos y
presentaciones en pantalla.
1.8. – Descripción de los organismos policiales
Los Organismos de seguridad policiales son instituciones sin fines de lucro que tienen
como función principal la prestación del servicio de seguridad a la comunidad y sus bienes así
como funciones secundarias como velar por el mantenimiento de la moralidad, salubridad,
urbanismo, ornato público, defensa del ambiente, tránsito y orden público en la jurisdicción que
les corresponde. Estos organismos son dependencias de las gobernaciones o alcaldías
municipales de cada región y que dependen a su vez del gobierno nacional.
Estas instituciones tienen dentro de sus estrategias el cumplir con sus funciones de
patrullaje diario y constante por todos los sectores de la ciudad o región; para ello cuentan con
un importante número de unidades radio patrulleras (vehículos), y camionetas rústicas y otros
equipos para blindar su capacidad de repuesta en las regiones bajo su responsabilidad.
También pueden tener otras maquinarias utilizadas como soporte a sus labores de seguridad
como las unidades de apoyo aéreo, motocicletas y unidades de transporte.
Son instituciones que por su carácter de organismos de seguridad prestan un servicio a la
comunidad de 24 horas diarias durante todo el año, lo que implica un uso constante de sus
activos por parte del personal asignado, incluyendo vehículos automotores, equipos eléctricos y
electrónicos, equipos de oficina, computadoras y equipos de telecomunicaciones.
CAPITULO II FUNDAMENTOS TEORICOS
A continuación se definirán los fundamentos teóricos de las disciplinas consideradas en
esta investigación, con el propósito de establecer una base de referencias sobre los tópicos a
tratar. Como punto de partida de los fundamentos teóricos se definirán los términos que serán
manejados en esta investigación y posteriormente otros conceptos importantes relacionados
con la misma.
2.1. Aspectos generales sobre sistemas automatizados
Se define como Sistema a un conjunto de elementos que, ordenadamente relacionados
entre sí, contribuyen a determinado objeto, según el diccionario de la lengua española
(http://www.wordreference.com/definicion/sistema). Herrera (1994), define un sistema como un
conjunto de objetos organizados que interactúan entre sí para lograr un objetivo. Se puede
definir entonces como Sistema al conjunto de objetos relacionados entre si que interactúan para
cumplir una función específica.
Así mismo, se puede definir un Sistema automatizado partiendo del concepto de Control
Automático que según Abarca (2003) se define como “el mantenimiento de un valor deseado
para una cantidad o condición física, midiendo su valor actual, comparándolo con el valor
referencia, y utilizando la diferencia para proceder a reducirla mediante una acción correctiva.
En consecuencia, el control automático exige un lazo cerrado de acción y reacción que funcione
sin intervención humana”. En base a este concepto, se puede definir un Sistema Automatizado
como: el conjunto de elementos organizados que interactúan entre sí para lograr un objetivo
minimizando la intervención humana. En esta investigación el sistema automatizado estará
representado por un programa para computadoras que asistirá al usuario en la programación y
seguimiento de las actividades propias del mantenimiento de los activos en los organismos de
seguridad.
El término Programación, según Sethi (1992), se define como la acción de establecer una
secuencia de instrucciones mediante las cuales se ejecutan diferentes acciones. Cuando se
habla de Programación y seguimiento de las actividades de mantenimiento se refiere a la
definición de las tareas que se ejecutarán a un bien, activo o equipo como parte de un programa
de mantenimiento y el control sobre la oportuna ejecución de esas tareas durante un período de
tiempo de funcionamiento del mismo. Esto implica el registro de todas las actividades que se
ejecuten al equipo durante su tiempo de vida estimado.
2.2. – Aspectos generales del mantenimiento
Según García Garrido (1993), el Mantenimiento es “el conjunto de técnicas destinado a
conservar equipos e instalaciones en servicio durante el mayor tiempo posible buscando la más
alta disponibilidad y con el máximo rendimiento.” Este conjunto de técnicas no solo abarcan las
actividades que se aplican a un equipo o instalación sino también el estudio de las mejores
prácticas, metodologías, análisis de fallas, gestión y control. Por esta razón es importante
destacar y conocer más en detalle los aspectos que implica el mantenimiento, detalles
necesarios para la elaboración y aplicación de un efectivo plan de mantenimiento.
2.2.1. - Introducción al mantenimiento
Todo sistema, maquinaria o equipo, cuando comienza a ser utilizado por primera vez,
generalmente se encuentra en un estado totalmente operativo considerando su condición de
nuevo. Pero a pesar que el mismo comienza su vida operativa, cada usuario del mismo debe
estar consciente de que, independientemente de la perfección de su diseño o de su tecnología,
a lo largo de su operación se producirán cambios irreversibles. Estos cambios son resultado de
procesos tales como corrosión, abrasión, acumulación de deformaciones, distorsión,
sobrecalentamientos, fatiga, difusión de un material en otro, etc. A menudo, estos procesos se
superponen e interactúan los unos con los otros y causan un cambio en el sistema, con lo cual
cambiarán sus características de actuación. La desviación de esas características respecto a
los valores especificados es lo que se considera como fallo del sistema, los que también
pueden ser provocados por errores de los operadores, sobrecargas, reparaciones incorrectas,
etc.
Para que un sistema recupere la capacidad de realizar una función es necesario realizar
unas tareas especificadas, conocidas como tareas de mantenimiento. Se conoce como
mantenimiento al conjunto de acciones que se aplican a los equipos con el objeto de detectar,
corregir y prever condiciones desfavorables en su funcionamiento, asegurando de esta manera
que la calidad de servicio permanezca dentro de los límites establecidos.
Las tareas de recuperación más comunes son limpieza, ajuste, lubricación, pintura,
calibración, sustitución, reparación, restauración, renovación, etc.; a menudo es necesario
realizar más de una tarea para recuperar la funcionalidad de un sistema. Además de las tareas
de mantenimiento consecuentes al fallo durante la operación, un sistema puede requerir tareas
adicionales para mantenerlo en estado de funcionamiento. Generalmente, estas tareas son
menos complejas que las necesarias para la recuperación de la funcionabilidad, siendo típicas
actividades tales como limpieza, ajuste, comprobación e inspección.
22
Es muy importante que el usuario del sistema en consideración, tenga al principio de su
vida operativa, información sobre la funcionabilidad, costo, seguridad y otras características. Sin
embargo, es igualmente importante, tener información sobre las características que definen la
forma de su perfil de funcionabilidad, ya que la razón principal para la adquisición de cualquier
equipo o sistema es la prestación satisfactoria de su función esperada. Simplemente, un
sistema es útil cuando, y solo cuando, realiza la función exigida. Por consiguiente, una de las
mayores preocupaciones de los usuarios es la forma de su perfil de funcionabilidad cuyos
factores responsables son las características inherentes al sistema como fiabilidad, y
mantenibilidad y la logística de mantenimiento cuyo objetivo es gestionar el suministro de los
recursos necesarios para la conclusión de todas las tareas de mantenimiento. (Knezevic, 1996).
2.2.2. - El proceso de mantenimiento
Todos los operadores de un sistema, maquinaria o equipo desean que los mismos se
mantengan en estado de funcionamiento tanto tiempo como sea posible. Para lograrlo, es
necesario “ayudar” al sistema a mantener su funcionalidad durante la operación, realizando las
tareas apropiadas. Algunas de estas tareas son exigidas o sugeridas por los diseñadores o
fabricantes. Sin embargo, a pesar de todas las tareas realizadas, no puede posponerse
indefinidamente el momento en que el sistema deja de ser funcionable. A partir de ahí, es
necesario realizar otras tareas para que recupere su funcionabilidad. Esto conduce al concepto
de mantenimiento que incluye todas las tareas que realiza el usuario para conservar el
elemento o sistema en estado de funcionabilidad, o para recuperarlo a ese estado.
Hay multitud de sistemas creados por el hombre cuya funcionabilidad debe ser
conservada por el usuario a lo largo de su utilización. El proceso durante el que se mantiene la
capacidad del sistema para realizar una función, es conocido como proceso de mantenimiento y
se puede definir como un conjunto de tareas de mantenimiento realizadas por el usuario para
mantener la funcionabilidad del sistema durante su vida operativa.
Por tanto, la entrada para el proceso de mantenimiento está constituida por la
funcionabilidad de cualquier sistema humano, que deba ser conservada por el usuario, mientras
que la salida del proceso consiste en el sistema funcionable, como se muestra en la figura 1.
23
RECURSOS
ENTRADA SALIDA
RESTRICCIONES
Figura 1.- El proceso de Mantenimiento.
Cuando se analizan los objetivos de las tareas de mantenimiento realizadas durante un
proceso de mantenimiento, es posible enumerarlos así:
Reducción del cambio de condición, con lo que se consigue un alargamiento de la vida
operativa del sistema. Ejemplos típicos son: lavado, limpieza, pintura, filtrado, ajuste,
lubricación, calibración, etc.
Garantía de la fiabilidad y seguridad exigidas, lo que reduce la probabilidad de presencia
de fallos. Las actividades más comunes de este tipo son: inspección, detección,
exámenes, pruebas.
Consecución de una tasa óptima de consumo para elementos como combustible,
lubricantes, neumáticos, etc., lo que contribuye al costo-eficacia del proceso de
operación.
Recuperación de la funcionabilidad del sistema, una vez que se ha producido la
transición al estado de falla. Las actividades más frecuentemente realizadas para
recuperar la funcionabilidad son: sustitución, reparación, restauración, renovación, etc.
Es necesario hacer hincapié en que se necesitan ciertos recursos para facilitar este
proceso. Como el fin principal de estos recursos es facilitar el proceso de mantenimiento, se les
designará con el nombre de recursos de mantenimiento. Los recursos necesarios para la
realización con éxito de toda tarea de mantenimiento pueden agruparse en las siguientes
24
categorías:
Abastecimiento o aprovisionamiento: es un nombre genérico que incluye el suministro de
todos los repuestos, elementos de reparación, consumibles, suministros especiales y
artículos de inventario necesarios para apoyar a los procesos de mantenimiento.
Equipos de prueba y apoyo: incluye todas las herramientas, equipos especiales de
vigilancia de la condición, equipos de comprobación, metrología y calibración, bancos de
mantenimiento, y equipos auxiliares de servicio necesarios para apoyar las tareas de
mantenimiento asociadas al elemento o sistema.
Personal: se incluye el necesario para la instalación, comprobación, manejo y realización
del mantenimiento del elemento o sistema y de los equipos necesarios de prueba y
apoyo. Debe considerarse la formación específica del personal necesario para cada
tarea de mantenimiento.
Instalaciones: incluye las instalaciones especiales precisas para la ejecución de las
tareas de mantenimiento. Deben considerarse las plantas industriales, edificios,
edificaciones portátiles, fosas de inspección, diques secos, refugios, talleres de
mantenimiento, laboratorios de calibración y otras instalaciones para reparaciones
especiales y revisiones generales relacionadas con cada tarea de mantenimiento.
Datos técnicos: procedimientos de comprobación, instrucciones de mantenimiento,
procedimientos de inspección y calibración, procedimientos de revisiones generales,
instrucciones de modificación, información sobre las instalaciones, planos y
especificaciones que son necesarios para realizar las funciones de mantenimiento del
sistema. Tales datos no sólo se refieren al sistema, sino también al equipo de prueba y
apoyo, y de transporte y manejo del equipo.
Recursos informáticos: comprende los ordenadores y sus accesorios, software, discos y
cintas de programas, bases de datos, etc., necesarios para realizar las funciones de
mantenimiento.
Los procesos de mantenimiento, como tantos otros, tienen sus propias restricciones. Las
más frecuentes en los procesos de mantenimiento son:
Presupuesto.
25
Programación, tiempo disponible.
Reglamentaciones de seguridad.
Entorno, clima.
Lenguas extranjeras.
Cultura y costumbres.
Cuando se realiza un proceso de mantenimiento es imperativo considerar tanto los
recursos como las restricciones, a fin de conseguir un óptimo control de unas operaciones tan
complejas, que tienen un gran impacto en la seguridad, fiabilidad, costo, prestigio y otras
características decisivas para la conducción competitiva de las operaciones. (Knezevic, 1996).
2.2.3. - Políticas de mantenimiento
Con respecto a la relación entre el instante de producción de la falla (conocido como
tiempo hasta la falla o TTF) y el instante de ejecución de la tarea de mantenimiento (conocido
como tiempo para el mantenimiento o TTM), existen las siguientes políticas de mantenimiento:
Política de mantenimiento basada en la producción de la falla (Failure-based
maintenance, FBM), en la que las tareas de mantenimiento correctivo se inician tras la
producción de la falla, es decir, tras la presentación de anomalías en la función del
sistema o equipo.
Política de mantenimiento basada en la vida del sistema (life-based maintenance, LBM),
donde se realizan tareas de mantenimiento preventivo a intervalos fijos predeterminados
durante la vida operativa del sistema.
Política de mantenimiento basada en la inspección (Inspection-based maintenance,
IBM), donde se realizan las actividades de mantenimiento condicional en forma de
inspecciones a intervalos fijos del tiempo de operación, hasta que se requiere la
realización de una tarea de mantenimiento preventivo.
Política de mantenimiento basada en el examen (examination-based maintenance,
EBM), donde se realizan las tareas de mantenimiento condicional en forma de
exámenes, según la condición observada en el elemento o sistema, hasta que se
necesita la ejecución de una tarea de mantenimiento preventivo.
Política de mantenimiento basada en la oportunidad (Oportunity-based maintenance,
26
Dentro de cada política de mantenimiento, excepto la FBM, la programación de las
actividades de mantenimiento condicional y preventivo se determina mediante una
estrategia específica, determinada por el usuario del equipo o sistema. (Knezevic, 1996)
2.2.4. Objetivos y funciones del mantenimiento
Una estrategia efectiva para toda empresa productora de bienes o servicios, teniendo en
cuenta que, en todo caso, requieren algún tipo de equipo o herramienta para realizar su función,
consiste en contar con las herramientas, tecnología, personal y procesos necesarios para
maximizar las prestaciones y la vida útil de los equipamientos. Pero, más que esto, para
maximizar las prestaciones de los activos es crítico aplicar las actividades correctas, al activo
correcto en todo su ciclo de vida. Dependiendo de los objetivos precisos y de la parte del
proceso a mantener, la estrategia ideal es una mezcla de dos métodos principales de
mantenimiento conocidos como mantenimiento preventivo y mantenimiento correctivo o
reactivo.
En forma general, la misión básica del mantenimiento es la de proporcionar la utilización
óptima de la mano de obra, materiales y equipos para mantener un sistema productivo en forma
adecuada de manera que pueda cumplir su misión para lograr la producción esperada y la
calidad de servicio exigida a un costo global mínimo.
Esto se logra a través de:
Preservar la inversión de capital.
Crear una confiabilidad en las instalaciones y equipos.
Asegurar que el proceso opere con control estadístico.
Dirigir la división de mantenimiento de manera de obtener costo totales mínimos de
operación.
La filosofía de mantenimiento depende en cada caso de una serie de factores, como son:
Tamaño de la empresa, complejidad de los equipos, numero de equipos iguales, costo de
paradas, etc. Sin embargo es necesario tener un sistema que evite o al menos reduzca las
averías detecte o diagnostique las fallas y repara o corrija los efectos del uso, sujetándose en
todos momentos al presupuesto de la empresa. (Rosaler, 1997).
27
Los trabajos de mantenimientos exigen calidad y, sobre todo, la aplicación criterio
económico, pues en ocasiones es preferible cambiar una parte de los equipos (aunque esto a
primera vista parezca muy costoso) que cambiar, por creerlo mas económico, una pequeña
pieza que no garantice que el equipo pueda continuar funcionando correctamente y un tiempo
entre fallas mayor.
Para el logro de su misión básica, el mantenimiento debe emplear varios recursos, y
actividades, y cumplir varias funciones entre las que podemos mencionar:
Llevar a cabo una inspección sistemática de las instalaciones, a intervalos de control
definidos, para detectar cualquier desgaste o rotura, manteniendo registros adecuados.
Mantener, reparar y revisar los equipos e instalaciones.
Efectuar las reparaciones de emergencia lo mas pronto posible, empleando los métodos
más fáciles de reparación.
Sugerir y proyectar mejoras en la maquinaria y equipos.
Controlar el costo directo de mantenimiento mediante el uso correcto y eficiencia del
tiempo, materiales, mano de obra y servicio.
Seleccionar y entrenar al personal en las técnicas de mantenimiento.
Desarrollar los programas de Mantenimiento preventivo programado.
Controlar y asegurar un inventario de repuestos y suministros.
Reducir al mínimo el tiempo de paro.
Planear y coordinar la distribución del trabajo acorde con la fuerza laboral disponible.
Proporcionar y mantener el equipo de taller requerido.
Preparar un presupuesto anual, con justificación adecuada que cuba el costo de las
actividades del programa de mantenimiento.
Mantener los equipos de seguridad y demás equipos de protección.
Entrenar al personal en el uso de los equipos de protección personal y medidas de
seguridad a tomar en las actividades de mantenimiento.
Maximizar el tiempo de vida de los equipos.
2.2.5. - Ventajas del mantenimiento
Dado que el mantenimiento representa una inversión que a mediano y largo plazo
acarreará ganancias no solo para el empresario a quien esta inversión se le revertirá en
mejoras en su producción y también en el ahorro que representa tener trabajadores sanos e
índices de accidentes bajos, se justifica plenamente el tener un programa de mantenimiento en
toda empresa.
28
El mantenimiento representa un arma importante en seguridad laboral, ya que un gran
porcentaje de accidentes son causados por desperfectos en los equipos que pueden ser
prevenidos.
Otras ventajas de tener un programa de mantenimiento son las siguientes:
Menor tiempo perdido como resultado de menos paros de máquinas por avería.
Menor costo por concepto de horas extraordinarias de trabajos, como resultado
de laborar con un programa preestablecido.
Menos reparaciones en gran escala, pues son prevenidas mediante reparaciones
oportunas y de rutinas.
Menos ocurrencias de productos rechazados, repeticiones y desperdicios (en el
caso de empresas productoras de bienes) producto de una mejor condición
general del equipo.
Identificación del equipo que origina gastos de mantenimiento preventivo
exagerados, pudiéndose así señalar la necesidad de un trabajo de
mantenimiento correctivo para el mismo, un mejor adiestramiento del operador o
reemplazo de las máquinas muy viejas.
Mejores condiciones de seguridad.
2.2.6. Tipos de mantenimiento
Partiendo del concepto general del mantenimiento como el conjunto de acciones para
mantener o restablecer un bien, a través de los años se han establecido varios modelos de tipos
de mantenimiento según el autor o investigador que lo determine. Unos hacen una división de
más o menos tipos según lo consideren apropiado y que generalmente son subdivisiones de
otros tipos pero que en su totalidad tienen validez y son aceptados como correctos. Una modelo
simple de los tipos de mantenimiento, y en la que todos los autores coinciden, es la siguiente:
Mantenimiento Correctivo.
Mantenimiento Preventivo (del que puede derivarse el Mantenimiento Predictivo).
En esta investigación se tomarán en cuenta estos dos principales tipos de mantenimiento
ya que se desarrollará un programa de mantenimiento preventivo para equipos y maquinarias y
el mantenimiento correctivo es imprevisto y por tanto siempre hay que considerarlo. A
continuación se definen estos tópicos.
29
2.2.6.1. Mantenimiento correctivo
También es conocido como ”mantenimiento reactivo” y consiste en corregir una falla y
la(s) causa(s) que la originan en un equipo. Si no se produce una falla el mantenimiento será
nulo, por lo que se tendrá que esperar hasta que se presente el desperfecto para tomar las
medidas de corrección de errores. Este mantenimiento trae consigo las siguientes
consecuencias:
Paradas no previstas en el proceso productivo, disminuyendo las horas operativas.
Afecta las cadenas productivas, es decir, que los ciclos productivos posteriores se verán
detenidos a la espera de la corrección de la etapa anterior.
Presenta costos por reparación y repuestos no presupuestados, por lo que se dará el
caso que por falta de recursos económicos no se podrán comprar los repuestos en el
momento deseado.
La planificación del tiempo que estará el equipo fuera de operación no es predecible.
El mantenimiento correctivo amerita detener el proceso de producción de una máquina o
equipo. Las reparaciones que se realizan pueden tener diferentes orígenes entre los que se
pueden mencionar:
Reparaciones surgidas por el mantenimiento preventivo o predictivo como consecuencia
de la detección de una falla parcial o intermitente. Estas reparaciones se programan
para ser realizadas en las horas que más le convenga a la gerencia de operaciones o de
producción.
Reparaciones derivadas de la ocurrencia de una falla total imprevista. Estas
reparaciones tienen que efectuarse, generalmente, de emergencia ya que originan
interrupciones no previstas. (Knezevic, 1996).
2.2.6.2. Mantenimiento preventivo
Este mantenimiento también es denominado “mantenimiento planificado” y se realiza
antes de que ocurra una falla o avería. Se efectúa bajo condiciones controladas sin la existencia
de algún error en el equipo o sistema. Se realiza a razón de la experiencia del personal,
recomendaciones del fabricante y condiciones de uso del equipo siguiendo un criterio
30
determinado. Está diseñado para prolongar la vida útil del equipo y evitar cualquier actividad
imprevista de mantenimiento, minimizando así costos, fallas y depreciación excesiva del equipo.
El mantenimiento preventivo comprende planes y programas a fin de detectar en el equipo
cualquier condición que pudiese afectar el servicio del mismo.
Las mediciones del mantenimiento preventivo abarcan la vida útil del equipo, las
variaciones directas de mano de obra, las reparaciones, el inventario de partes de repuestos y
la productividad del personal de mantenimiento. (Newbrough, 1967).
Presenta las siguientes características:
Se realiza en un momento planificado en que la parada del equipo produce un mínimo
impacto para la empresa.
Se lleva a cabo mediante un programa previamente elaborado donde se detalla el
procedimiento a seguir y las actividades a realizar, a fin de tener las herramientas y
repuestos necesarios.
Cuenta con una fecha programada, además de un tiempo de inicio y de fin
preestablecido y aprobado por la directiva de la empresa.
Permite a la empresa contar con un historial de todos los equipos.
Permite contar con un presupuesto aprobado por la directiva.
Los resultados obtenidos con el mantenimiento preventivo son los siguientes:
Disminución del tiempo ocioso debido a menos paros imprevistos en la
empresa.
Menor número de reparaciones repetitivas por fallas inesperadas.
Reducción de costos de mantenimiento, mano de obra y gastos generales para
las partidas de activos que se encuentran en el programa.
Cambia el mantenimiento deficiente de paros a mantenimiento programado
menos costoso con lo que se logra mejor control del trabajo. (Knezevic, 1996)
2.3.- Aspectos generales sobre sistemas computarizados de gestión de mantenimiento
2.3.1.- Qué es un Sistema computarizado de gestión de mantenimiento
Un sistema computarizado de gestión de mantenimiento es un programa para
computadoras que mantiene una base de datos de información relevante a todas las
31
operaciones de mantenimiento de una empresa. Actualmente existe una cantidad considerable
de compañías desarrolladoras de programas o “software” que tienen en el mercado
aplicaciones diseñadas para el manejo efectivo de los programas de mantenimiento de una
empresa. Estos programas son conocidos también como “Softwares para administración de
activos empresariales” o “Sistemas de gestión de mantenimiento asistida por computadoras”,
todos provenientes de las siglas en inglés CMMS (Computerized Maintenance Management
System).
Las siglas “GMAO”, que corresponden a la expresión “Gestión de mantenimiento asistido
por ordenador”, se utilizan en la práctica para identificar a los programas informáticos que
permiten la gestión de mantenimiento de los equipos y/o instalaciones de una o más empresas,
tanto mantenimiento preventivo como correctivo. También se conocen como sistemas “GMAC”
cuyas siglas significan “Gestión de mantenimiento asistido por computadora”.
Los sistemas Gmac suelen estar compuestos de varias secciones o módulos de programa
interconectados, todos con acceso a una base de datos, que permiten ejecutar y llevar el control
de las tareas habituales en los departamentos de mantenimiento como:
Control de incidencias, averías y fallas formando un historial de cada máquina o
equipo.
Programación de las revisiones y tareas de mantenimiento preventivo: limpieza,
lubricación, etc.
Control de “Stocks” de repuestos y recambios, conocido como gestión o control de
almacén.
Generación y seguimiento de las "Ordenes de trabajo" para los técnicos de
mantenimiento.
2.3.2.- Ventajas de un sistema computarizado de gestión de mantenimiento
La utilización de un sistema computarizado destinado al control y seguimiento de las
actividades de mantenimiento como una herramienta de soporte para la gerencia o personal de
mantenimiento de una empresa brinda numerosas ventajas entre las que se pueden
mencionar:
Los sistemas Gmac permiten disponer de gran cantidad de información, de una
forma adecuada y fácil de y/o extraer. Esto, a su vez, permite disponer de un
historial de cada equipo, maquinaria o componente, tanto de características
técnicas, como de fallas, revisiones, sustituciones, fechas de las últimas
32
33
Al mismo tiempo, permitirá programar en función de los parámetros que se
requieran, los mantenimientos preventivos, generando los listados
correspondientes para las actividades de los técnicos, según los plazos
programados.
Muchos de los sistemas Gmac permiten la gestión de herramientas y/o stocks de
repuestos, avisando cuando se tiene menos de un mínimo de piezas de un
determinado repuesto, generando incluso una orden de compra. También pueden
tener un archivo de proveedores, fabricantes, empleados, etc.
Así mismo, pueden gestionar las órdenes de reparación de equipos fuera de la
ubicación habitual, gestión de garantías, etc.
Permiten garantizar la disponibilidad de los equipos y maquinarias al apoyarse en
las tareas de administración, control, planificación y seguimiento de los procesos
de mantenimiento preventivo.
CAPITULO III MARCO METODOLÓGICO
En este capítulo se describen las fases que comprenden la metodología utilizada para el
desarrollo de cada objetivo de la investigación. En él se especifica el tipo de investigación,
herramientas y procedimientos aplicados.
3.1. - Tipo de investigación
Según el nivel de profundidad de conocimiento esta investigación es de tipo descriptiva,
según la estrategia empleada la investigación es de campo, según el método utilizado la
investigación es de tipo descriptivo y según el carácter es de tipo cualitativa. Esta clasificación
está basada en los estudios y descripciones de las obras varios autores reconocidos en el área
de la metodología de la investigación cuyos contenidos podemos citar:
La investigación descriptiva es el tipo de investigación que procura determinar cuál es la situación, ver lo que hay…describir cuál es la condición sobre un asunto o problema. Mediante este tipo de investigación se logra caracterizar un objeto de estudio o una situación concreta, señalar sus características y propiedades. Combinada con ciertos criterios de clasificación sirve para ordenar, agrupar o sistematizar los objetos involucrados en el trabajo indagatorio; puede servir de base para investigaciones que requieran un mayor nivel de profundidad”. (Tamayo y Tamayo, 1990).
“El trabajo de campo asume la forma de la observación...”, “…se apoya en los
documentos para la planeación del trabajo y la interpretación de la información recolectada. Se
caracteriza por el contacto directo con el objeto de estudio”. (Ortiz y García, 2003).
Tesis de Investigación de Campo. Investigaciones en donde la recopilación de información se realiza enmarcada dentro del ambiente específico en el que se presenta en fenómeno o hecho a estudiar [...] se utilizan métodos específicos de recopilación de datos [...] y la tabulación y análisis de información se utilizan métodos y técnicas estadísticas y/o matemáticos [...].(Muñoz Razo, 1998).
“La investigación cualitativa evita la cuantificación; es una investigación sin medición. En
vez de medir variables, los investigadores cualitativos hacen registros narrativos de los
fenómenos que son estudiados mediante técnicas como la observación participante y las
entrevistas no estructuradas”. (Abdellah FG, 1994).
“La investigación cualitativa es un proceso permanente de producción de conocimiento,
donde los resultados son momentos parciales, que de manera continua se integran dando lugar
a nuevos interrogantes, abriendo nuevos caminos a la producción del conocimiento.” (Fica
Carrasco, 2002)
3.2.- Población y Muestra
Los elementos de observación para el desarrollo del proyecto son los equipos,
maquinarias y sus partes de las instituciones policiales del estado Zulia, que conforman la
población de trabajo. Se tomará como muestra los equipos, maquinarias y partes de los
organismos policiales Instituto Autónomo Policía del Municipio Maracaibo, Instituto Autónomo
Policía del Municipio San Francisco y Policía Regional del estado Zulia.
3.3. - Técnicas e instrumentos de recolección de datos
Los recursos a utilizar para la recolección de la información necesaria para el desarrollo de
la investigación son: entrevistas, observación directa, investigación documental bibliográfica e
investigación documental magnética.
3.4. - Procedimiento Metodológico
OBJETIVO Nº 1:
ELABORAR EL INVENTARIO DE LAS PARTES, MAQUINARIAS Y EQUIPOS A SER
CONSIDERADOS EN EL DISEÑO DEL SISTEMA AUTOMATIZADO PARA LA
PROGRAMACIÓN Y SEGUIMIENTO DE LAS ACTIVIDADES DE MANTENIMIENTO EN
INSTITUCIONES POLICIALES.
ACTIVIDAD METODOLOGIA
I. Realizar inventario de los
equipos objetos de estudio
- Realizar una investigación bibliográfica sobre las
consideraciones a tomar en cuenta para el manejo de inventarios en talleres de mantenimiento.
- Efectuar una entrevista con el personal responsable del
inventario de equipos y partes para determinar la mejor estructuración del inventario. Se diseñará y entregará un formato con preguntas referentes a manejo de inventarios para detectar posibles irregularidades que puedan ser corregidas.
- Efectuar una entrevista con el personal de
mantenimiento para determinar cuáles son los
35
II. Establecer Codificación
estándar.
- Establecer la codificación para los equipos, partes y
maquinaria a ser utilizados por el sistema computarizado y los programas de mantenimiento. Para ejecutar esta fase se realizarán reuniones con el personal de mantenimiento de las instituciones policiales para realizar propuestas y determinar una codificación que se adapte a las necesidades de cada institución.
- Diseño de formatos donde se señalen las
características de los equipos presentes en el estudio y sus características técnicas tales como, marca, tipo, modelo, serial, código, función, frecuencia de mantenimiento, estado actual y observaciones entre otras.
III. Recopilar Información
- Se emitirá un informe que recopile y registre la
información donde se indicarán los equipos, partes y maquinarias con sus respectivos códigos establecidos.
OBJETIVO Nº 2:
EVALUAR EL PROGRAMA DE MANTENIMIENTO EXISTENTE Y LOS FACTORES QUE
SE TOMARON EN CUENTA PARA SU ELABORACION.
ACTIVIDAD METODOLOGIA
I. Determinar el tipo de
Mantenimiento existentes para
cada tipo de Equipo y
Maquinaria.
- Se realizará una entrevista con los jefes de
mantenimiento de las instituciones policiales para precisar si existen programas de mantenimiento programados para los equipos y maquinarias de la institución que representan.
- Precisar qué tipo y frecuencia de mantenimiento se
aplica a los equipos y maquinarias.
36
II. Establecimiento de los
parámetros de los Programas
de Mantenimiento actuales
- Se establecerán los parámetros que se tomaron en
cuenta para la elaboración de los programas de mantenimiento existentes para que éstos sean reevaluados y determinar su importancia para los nuevos programas a desarrollar.
.OBJETIVO N° 3:
DESARROLLAR EL PROGRAMA DE MANTENIMIENTO PREVENTIVO PARA LOS
EQUIPOS Y MAQUINARIAS BASADOS EN HISTORIALES, RECOMENDACIONES DEL
FABRICANTE Y SIGUIENDO LOS LINEAMIENTOS CARACTERISTICOS DEL
MANTENIMIENTO CLASE MUNDIAL
ACTIVIDAD METODOLOGIA
I. Investigación Documental.
- Se consultarán los manuales de operación de los
equipos, para recabar la información referente al uso y el mantenimiento sugeridas por el fabricante y de igual forma se revisarán fuentes bibliográficas.
- Se tomará como base la Norma Covenin 3049-93, para el desarrollo de instrucciones y procedimientos correctos de mantenimiento.
II. Definir los objetivos del
Sistema de Mantenimiento
Clase Mundial a considerar.
- Precisar las mejores prácticas del método de
Mantenimiento Clase Mundial que serán tomadas en cuenta para la elaboración del programa de mantenimiento preventivo como parámetros adicionales con el objeto de optimizarlo.
-
III. Elaboración del Programa
de Mantenimiento Preventivo.
- Se definirán las actividades que van a conformar el
programa de mantenimiento preventivo teniendo en cuenta los estándares de personal, frecuencia, naturaleza y tiempo empleado en dichas labores.
- Para el desarrollo de éste programa se tomará en cuenta el historial de operación y mantenimiento de cada uno de los equipos y maquinarias y las recomendaciones del fabricante.
- Se elaborará el plan de mantenimiento por equipo.
IV. Diseño de Formatos a
utilizar.
- Diseño de los formatos que van a ser utilizados para las
labores de mantenimiento y que servirán a su vez de fuente de información de datos para la base de datos del Sistema automatizado.
37
OBJETIVO N° 4:
FORMULAR LOS ÍNDICES DE CONTROL PARA MEDIR LA EFECTIVIDAD DEL
SISTEMA
ACTIVIDAD METODOLOGIA
I. Determinar índices de control.
- Se efectuarán reuniones con los jefes de
mantenimiento de las instituciones policiales para determinar cuáles son los índices que se evaluarán para medir la efectividad del sistema.
- Se propondrán índices de control, tomando en cuenta
los indicadores de clase mundial que puedan ser aplicados.
OBJETIVO N° 5
DISEÑAR LOS PARÁMETROS QUE VAN A SER CONSIDERADOS POR EL SISTEMA
AUTOMATIZADO PARA LA PROGRAMACIÓN Y SEGUIMIENTO DE LAS ACTIVIDADES
DE MANTENIMIENTO
ACTIVIDAD METODOLOGIA
I. Determinar los Parámetros
del Sistema Computarizado.
- Se realizarán reuniones de trabajo con los jefes de
mantenimiento de las instituciones policiales para establecer cuáles serán los parámetros que tomará en cuenta el programa de computadoras para su elaboración y funcionamiento.
- Se determinarán los parámetros considerando el régimen de uso que tienen en particular los equipos y maquinarias en las instituciones.
38
39
OBJETIVO N° 6:
DESARROLLAR EL PROGRAMA PARA COMPUTADORAS CON INTERFAZ HOMBRE-
MAQUINA AMIGABLE CON EL OBJETO DE HACER FACIL SU OPERABILIDAD
ACTIVIDAD METODOLOGIA
I. Selección del Lenguaje de
Programación.
- Se realizará una investigación de los lenguajes de
programación existentes capaces de manejar bases de datos de forma eficiente.
- Se recopilará la información disponible sobre el lenguaje seleccionado para la documentación y estudio del mismo.
II.- Determinar el método de
programación adecuado para la
Elaboración de la Aplicación.
- Se realizarán reuniones de trabajo con profesionales
especialistas en sistemas de información para determinar el método de manejo de la base de datos apropiado para el programa.
III. Definir los Subprogramas
que deben confirmar la
Aplicación completa
- Se definirán la cantidad y contenido de las subrutinas
de programación que serán parte de la aplicación completa.
IV. Desarrollar el Sistema
automatizado.
- Se desarrollará el programa de computadoras basados
en toda la información recopilada y requerimientos de las Instituciones policiales.
CAPITULO IV PRESENTACIÓN DE RESULTADOS
En este capítulo se presentan los resultados obtenidos en el estudio y desarrollo del
sistema automatizado para la programación y seguimiento de las actividades de mantenimiento
en instituciones policiales. Estos se encuentran estructurados de acuerdo con los objetivos
específicos planteados en el capitulo I asi como las fases metodológicas desarrolladas en el
capitulo III.
4.1. Inventario de partes, maquinarias y equipos a ser considerados por el sistema
automatizado para la programación y seguimiento de las actividades de mantenimiento
en instituciones policiales
Como primer paso se realizó una investigación bibliográfica sobre las consideraciones que
se deben tomar en cuenta para el manejo eficiente de inventarios para determinar cuáles son
loas aspectos más importantes en este tema. De esta investigación se obtuvo que para llevar
un control oportuno, permanente y preciso de un inventario se deben cumplir los siguientes
puntos:
Formalizar el sistema general de localización que se utiliza en toda la instalación.
Seguir el almacenamiento y movimiento de la parte o bien desde que se recibe hasta
que se traslade a su punto de uso.
Mantener registros oportunos del almacenamiento y movimiento de todos los artículos.
Luego de realizar la investigación bibliográfica de las recomendaciones para el manejo
eficiente de inventarios se realizaron entrevistas con el personal encargado de los almacenes
de partes de los institutos policiales para analizar los procedimientos que llevan a cabo para
llevar el control de sus inventarios y mejorarlos si fuera necesario. Para obtener información
específica de las instituciones policiales se les entregó un formato con preguntas concretas
referentes al inventario que manejan cada una de ellas. A continuación se muestran los
resultados obtenidos de las respuestas dadas a estos formatos:
Formulario para la evaluación y mejoramiento de Inventarios
Nombre de la Institución: Policía del Municipio San Francisco
Posee su institución almacén de partes y repuestos? SI NO
Maneja su institución un programa de entrenamiento para el personal de almacén?
SI NO
Utilizan algún programa para computadoras para el manejo de inventarios?
SI NO
O utiliza alguna Hoja de Cálculo como Excel, Multiplan, Lotus, etc para llevar el control de inventario?
SI NO
Explique: Se lleva en Excel
Utiliza libros para el registro de entradas, salidas y pedidos de partes? SI NO
Tiene alguna codificación especial para identificar las partes? SI NO Explique: Se lleva por número de parte original
Utilizaría una Herramienta de Software para el mejoramiento del manejo de inventarios?
SI NO
Formulario para la evaluación y mejoramiento de Inventarios
Nombre de la Institución: Policía Regional del Estado Zulia
Posee su institución almacén de partes y repuestos? SI NO
Maneja su institución un programa de entrenamiento para el personal de almacén?
SI NO
Utilizan algún programa para computadoras para el manejo de inventarios? SI
NO
O utiliza alguna Hoja de Cálculo como Excel, Multiplan, Lotus, etc para llevar el control de inventario?
SI NO
Explique: Las reparaciones y mantenimientos son responsabilidad de cada dependencia. Los jefes de cada dependencia o departamento policial son los encargados de solicitar el mantenimiento o reparación de los activos bajo su responsabilidad. Existe un taller para reparaciones y mantenimiento.
Utiliza libros para el registro de entradas, salidas y pedidos de partes? SI NO
Tiene alguna codificación especial para identificar las partes? SI
NO Explique: Utilizaría una Herramienta de Software para el mejoramiento del manejo de inventarios?
SI NO
41
Formulario para la evaluación y mejoramiento de Inventarios
Nombre de la Institución: Instituto Autónomo Policía del Municipio Maracaibo
Posee su institución almacén de partes y repuestos? SI NO
Maneja su institución un programa de entrenamiento para el personal de almacén?
SI NO
Utilizan algún programa para computadoras para el manejo de inventarios?
SI NO
O utiliza alguna Hoja de Cálculo como Excel, Multiplan, Lotus, etc para llevar el control de inventario?
SI NO
Explique: se usa hoja de cálculo Excel para control del inventario
Utiliza libros para el registro de entradas, salidas y pedidos de partes? SI NO
Tiene alguna codificación especial para identificar las partes? SI NO Explique: se codifica por número de parte, pero la información también puede ser ordenada por otro campo como marca, centro de consumo, ubicación, etc ya que la hoja de excel lo permite.
Utilizaría una Herramienta de Software para el mejoramiento del manejo de inventarios?
SI NO
De las respuestas de estos formatos se obtuvieron las siguientes conclusiones
generales:
No existe un sistema informático o programa específico para el manejo de inventario.
El registro de información de las partes se lleva utilizando una hoja de cálculo excel
por lo que se revelaron diferentes registros con números de parte iguales lo que
representa una inconsistencia.
No se lleva registro del costo de las partes.
No se lleva registro de los tiempos de entrega de las empresas que suministran las
partes.
No se clasifican las partes y repuestos por algún parámetro en especifico como
marca, tipo de parte, número de parte, código propio, etc.
Por otro lado se realizaron entrevistas con el personal encargado del mantenimiento en
cada una de las instituciones para determinar cuales son los condiciones que según sus puntos
de vista deben ser mas importantes para la realización de un programa de mantenimiento que
se adapte a sus necesidades. De estas reuniones se concluyó que todos los bienes activos de
las instituciones son importantes para cada una de ellas, por lo que el sistema automatizado
debe tener la capacidad de registrar y llevar el control del las actividades de mantenimiento para
cualquier tipo de bien, sin embargo, el parámetro que determina cuales son los equipos que
42
deben formar parte en una fase inicial de una futura implementación del sistema automatizado,
es la criticidad del equipo ya que, por ser instituciones policiales que laboran las 24 horas del
día durante todo el año, sus maquinarias y equipos deben tener alta disponibilidad.
Asi mismo. se realizaron reuniones con los jefes o encargados de los inventarios para
explicarles los puntos más importantes de las investigaciones bibliográficas realizadas,
mencionadas anteriormente, y proponer algunas mejoras que ayudarían a un manejo eficiente
de los inventarios en las instituciones policiales.
De estas reuniones se presentaron, se acordaron y se establecieron los siguientes puntos
para lograr corregir los defectos actuales y por consiguiente conseguir las mejoras deseadas:
Desarrollo de una aplicación para computadoras adaptada a los requerimientos de
las instituciones policiales para el manejo de inventarios de partes con capacidad de
registrar cualquier tipo de equipo, parte o maquinaria.
Las maquinarias y equipos clasificados como críticos y las partes en almacén
clasificadas como repuestos son las que van a ser consideradas para el desarrollo
del sistema automatizado, sin embargo este último tendrá la capacidad de manejar
cualquier tipo de equipo. Bajo esta condición, las maquinarias a ser considerados
por el sistema automatizado son los vehículos de operaciones de cada una de las
instituciones policiales y los equipos a considerar son los equipos de
telecomunicaciones y las unidades de aire acondicionado de las edificaciones. Esta
selección se fundamenta en el hecho de que estos equipos y maquinarias son
críticos ya que están en funcionamiento constantemente, es decir, todos los días, a
todas horas, considerando que las instituciones policiales laboran las 24 horas del
día los 365 días del año, por lo que ésta selección requiere un mayor mantenimiento
que aquellos equipos y maquinarias que no son clasificados como críticos.
Se realizó el inventario de los equipos y maquinarias consideradas como críticas
para las instituciones policiales a fin de evaluar y mejorar sus programas de
mantenimiento o de diseñar nuevos programas de mantenimiento en caso de que
éstos no existan. Este inventario se muestra en la Tabla 2.
Se estableció una codificación para los equipos y maquinarias de los institutos
policiales.
Se estableció que la codificación a utilizar para las partes de almacén clasificadas
43
44
4.2. - Codificación
La codificación establecida para la identificación y ubicación de los equipos maquinarias
es la siguiente:
4.2.1. - Código para equipos
Para la identificación de los equipos o activos de la institución se seleccionó un código de
nueve caracteres alfanuméricos. Este código se seleccionó tomando en cuenta que el mismo
puede ser utilizado en instituciones policiales nacionales e internacionales de manera que
pueda ser utilizado por cualquier tipo de organismo de seguridad y tomando en cuenta que
varias instituciones de seguridad de un país pueden integrarse a un mismo sistema
automatizado de mantenimiento..
Formato del Código: XXXYYYZZZ, donde
XXX = Institución Policial.
YYY = Región.
ZZZ = Número de equipo.
Tabla 1. – Inventario de aires acondicionados de la policía del municipio Maracaibo. (Equipos de aire acondicionado en la central de comunicaciones)
Ciclos (Hz)
Ubicación Tipo Marca Modelo Serial Capac. Fase Comp. Amp Presion A. Presion B. Voltaje
Central de Comunicaciones
Ventana Samsung S/I 18K btu 1 S/I 1 60 12 S/I S/I 208
Central de Comunicaciones
Compacto Tempco S/I S/I 1 1 60 24 5 Ton. 400 psi 300 psi 208
Central de Comunicaciones
Compacto Carrier
(Equipos de aire acondicionado en sede operativa este)
50SS060301 4395G4034 5 Ton. 1 1 60 22 300psi / 2068Kpa
150psi / 1034Kpa
208
Central de Comunicaciones
Compacto Tempco 50MH051F 0495243 4 Ton. 1 1 60 28 400 psi 300 psi 208
Central de Comunicaciones
Compacto Carrier 50ZP036311 4601G30759 5 Ton. 1 1 60 22 431psi /
2967 Kpa 171 psi / 1179Kpa
208
Ciclos (Hz)
Amp Presion
A. Presion
B. Ubicación Tipo Marca Modelo Serial Capac Fase Comp. Voltaje
Sede Este Compacto York D2CE180A25C NMKA30152 15
Ton. 1 3 60 S/I
450 LBS/PO2
190 LBS/PO2
208/230
Sede Este Compacto York D2CE240A25C NLKM119285 25
Ton. 1 4 60 S/I
450 LBS/PO2
190 LBS/PO2
208/230
Sede Este Compacto York D2CE300A25A NMKM126658 25
Ton. 1 4 60 S/I
450 LBS/PO2
190 LBS/PO2
208/230
Sede Este Compacto York D2CE180A25C NMKM131141 15
Ton. 1 3 60 S/I
450 LBS/PO2
190 LBS/PO2
208/230
45
Tabla 1. – Continuación. (Equipos de aire acondicionado en academia)
Ciclo (Hz)
Amp Presion
A. Presion
B. Ubicación Tipo Marca Modelo Serial Capac Fase Comp. Voltaje
Academia Compacto LG Gold LK0529AH 411KANY00175 5 Ton. 1 1 60 27 S/I S/I 208/230Academia Compacto Tempco 50MH051F 0495242 4 Ton. 1 1 60 38 400 psi 300 psi 208
(Equipos de aire acondicionado en sede operativa oeste)
Ubicación Tipo Marca Modelo Serial Capac Fase Comp. Ciclos (Hz)
Amp Presion A. Presion B. Voltaje
Sede Oeste
Compacto Inperca EC180BHHV2H 501492 5 3 1 60 26,9 250 198 208/230
Sede Oeste
Compacto Inperca EC240BHHV2Z 501358 5 3 1 60 32 250 198 208/230
Sede Oeste
Compacto Inperca EC180BHHV2H 501491 5 3 1 60 32 250 198 208/230
Sede Oeste
Compacto Inperca EC300BHHV2H 501074 5 3 1 60 48,4 250 198 208/230
46
Tabla 1. – Continuación.
(Equipos de aire acondicionado en sede central)
Ubicación Tipo Marca Modelo Serial Capac Fase Comp Ciclos (Hz)
AmpPresion
A. Presion
B. Voltaje
Sede Central Split Carrier NAC060AKCE E040718381 3 1 1 60 50
300 PSI/2068 Kpa
150 Psi/1034 Kpa 208/230
Sede Central Split Carrier NAC060AKCE E040428867 3 1 1 60 50
300 PSI/2068 Kpa
150 Psi/1034 Kpa 208/230
Sede Central Split Carrier NAC060AKCE E040718373 3 1 1 60 50
300 PSI/2068 Kpa
150 Psi/1034 Kpa 208/230
Sede Central Compacto Carrier 50ZP060311 5004G12259 3 1 1 60 25
337Psa/ 2320 Kpa
160Psi/ 1103 Kpa 230
Sede Central Split Carrier NAC060AKCE E040718391 3 1 1 60 50
300 PSI/2068 Kpa
150 Psi/1034 Kpa 208/230
Sede Central Split Carrier NAC060AKCE E040718344 3 1 1 60 50
300 PSI/2068 Kpa
150 Psi/1034 Kpa 208/230
Sede Central Split Carrier NAC036AKA4 L024204868 3 1 1 60 50
300 PSI/2068 Kpa
150 Psi/1034 Kpa 208/230
Sede Central Compacto LG Gold LK0529AH 311KA00097 3 1 1 60 22 S/I S/I 208/230Sede Central Compacto LG Gold LK0529AH 311KA00096 3 1 1 60 22 S/I S/I 208/230
47
48
Tabla 1. – Continuación.
Ubicación Tipo Marca Modelo Serial Capac Fase CompCiclos (Hz)
AmpPresion
A. Presion
B. Voltaje
Sede Central Split Carrier 38CKC060370 420422779 3 1 1 60 20
300 PSI/2068 Kpa
150 Psi/1034 Kpa 208/230
Sede Central Split Carrier 38CKC060370 4204330778 3 1 1 60 20
300 PSI/2068 Kpa
150 Psi/1034 Kpa 208/230
Sede Central Split Carrier 38TG018300 2990E40777 1 1 60 20
450PSI/ 3102 Kpa
210Psi/ 1448 Kpa
Area de oficinas Compacto Carrier FAHBNF0600 4704A76008 3 1 1 60 25 S/I S/I 208/230Area de oficinas Compacto Carrier FAHBNF0600 3 1 1 60 25 S/I S/I 208/230
Division de Transito Compacto Carrier EBP600B A040573375 3 1 1 60 25 S/I S/I 208/230
Division de Transito Compacto Carrier FB4BNF060 3104A73887 3 1 1 60 25 S/I S/I 208/230
Division de Transito Compacto Carrier NFCP3600D2 L022487619 3 1 1 60 25 S/I S/I 208/230
208Administración Compacto Chema C.A. FEV1036ND
0001091-192 3 1 1 60 30 S/I S/I
Administración Compacto Chema C.A. FEV1036ND
0000891-192 3 1 1 60 30 S/I S/I 208
Tabla 2. – Inventario de unidades automotoras de la policia del municipio Maracaibo.
Codigo Ubicación Tipo Marca Modelo
PDM-001 Sede Central Sedán Ford Crown Victoria
PDM-002 Sede Central Sedán Ford Crown Victoria
PDM-003 Sede Central Sedán Ford Crown Victoria
PDM-004 Sede Central Sedán Ford Crown Victoria
PDM-005 Sede Central Sedán Ford Crown Victoria
PDM-006 Sede Central Sedán Ford Crown Victoria
PDM-007 Sede Central Sedán Ford Crown Victoria
PDM-008 Sede Operativa Este Sedán Ford Crown Victoria
PDM-009 Sede Operativa Este Sedán Ford Crown Victoria
PDM-010 Sede Operativa Este Sedán Ford Crown Victoria
PDM-011 Sede Operativa Este Sedán Ford Crown Victoria
PDM-012 Sede Operativa Este Sedán Ford Crown Victoria
PDM-013 Sede Operativa Este Sedán Ford Crown Victoria
PDM-014 Sede Operativa Este Sedán Ford Crown Victoria
PDM-015 Sede Operativa Este Sedán Ford Crown Victoria
PDM-016 Sede Operativa Este Sedán Ford Crown Victoria
PDM-017 Sede Operativa Este Sedán Ford Crown Victoria
PDM-018 Sede Operativa Este Sedán Ford Crown Victoria
PDM-019 Sede Operativa Este Sedán Ford Crown Victoria
PDM-020 Sede Operativa Este Sedán Ford Crown Victoria
Codigo Ubicación Tipo Marca Modelo
PDM-021 Sede Operativa Este Sedán Ford Crown Victoria
PDM-022 Sede Operativa Este Sedán Ford Crown Victoria
PDM-023 Sede Operativa Este Sedán Ford Crown Victoria
PDM-024 Sede Operativa Este Sedán Ford Crown Victoria
PDM-025 Sede Operativa Este Sedán Ford Crown Victoria
PDM-026 Sede Operativa Este Sedán Ford Crown Victoria
PDM-027 Sede Operativa Este Sedán Ford Crown Victoria
PDM-028 Sede Operativa Este Sedán Ford Crown Victoria
PDM-029 Sede Operativa Este Sedán Ford Crown Victoria
PDM-030 Sede Operativa Este Sedán Ford Crown Victoria
PDM-031 Sede Operativa Oeste Sedán Ford Crown Victoria
PDM-032 Sede Operativa Oeste Sedán Ford Crown Victoria
PDM-033 Sede Operativa Oeste Sedán Ford Crown Victoria
PDM-034 Sede Operativa Oeste Sedán Ford Crown Victoria
PDM-035 Sede Operativa Oeste Sedán Ford Crown Victoria
PDM-036 Sede Operativa Oeste Sedán Ford Crown Victoria
PDM-037 Sede Operativa Oeste Sedán Ford Crown Victoria
PDM-038 Sede Operativa Oeste Sedán Ford Crown Victoria
PDM-039 Sede Operativa Oeste Sedán Ford Crown Victoria
PDM-040 Sede Operativa Oeste Sedán Ford Crown Victoria
49
Tabla 2. – Continuación.
Codigo Ubicación Tipo Marca Modelo
PDM-041 Sede Operativa Oeste Sedán Ford Crown Victoria
PDM-042 Sede Operativa Oeste Sedán Ford Crown Victoria
PDM-043 Sede Operativa Oeste Sedán Ford Crown Victoria
PDM-044 Sede Operativa Oeste Sedán Ford Crown Victoria
PDM-045 Sede Operativa Oeste Sedán Ford Crown Victoria
PDM-046 Sede Operativa Oeste Sedán Ford Crown Victoria
PDM-047 Sede Operativa Oeste Sedán Ford Crown Victoria
PDM-048 Sede Operativa Oeste Sedán Ford Crown Victoria
PDM-049 Sede Operativa Oeste Sedán Ford Crown Victoria
PDM-050 Sede Operativa Oeste Sedán Ford Crown Victoria
PDM-051 Sede Central Sedán Toyota Four Runner
PDM-052 Sede Central Sedán Toyota Four Runner
PDM-053 Sede Central Sedán Toyota Four Runner
PDM-054 Sede Central Sedán Toyota Four Runner
PDM-055 Sede Central Sedán Toyota Four Runner
PDM-056 Sede Central Sedán Toyota Four Runner
PDM-057 Sede Central Sedán Toyota Four Runner
PDM-058 Sede Central Sedán Toyota Four Runner
PDM-059 Sede Central Sedán Toyota Four Runner
PDM-060 Sede Central Sedán Toyota Four Runner
Codigo Ubicación Tipo Marca Modelo
PDM-061 Sede Central Sedán Toyota Four Runner
PDM-062 Sede Operativa Este Sedán Toyota Four Runner
PDM-063 Sede Operativa Este Sedán Toyota Four Runner
PDM-064 Sede Operativa Este Sedán Toyota Four Runner
PDM-065 Sede Operativa Este Sedán Toyota Four Runner
PDM-066 Sede Operativa Este Sedán Toyota Four Runner
PDM-067 Sede Operativa Este Sedán Toyota Four Runner
PDM-068 Sede Operativa Este Sedán Toyota Four Runner
PDM-069 Sede Operativa Este Sedán Toyota Four Runner
PDM-070 Sede Operativa Este Sedán Toyota Four Runner
PDM-071 Sede Operativa Este Sedán Toyota Four Runner
PDM-072 Sede Operativa Este Sedán Toyota Four Runner
PDM-073 Sede Operativa Este Sedán Toyota Four Runner
PDM-074 Sede Operativa Este Sedán Toyota Four Runner
PDM-075 Sede Operativa Este Sedán Toyota Four Runner
PDM-076 Sede Operativa Este Sedán Toyota Four Runner
PDM-077 Sede Operativa Oeste Sedán Toyota Four Runner
PDM-078 Sede Operativa Oeste Sedán Toyota Four Runner
PDM-079 Sede Operativa Oeste Sedán Toyota Four Runner
PDM-080 Sede Operativa Oeste Sedán Toyota Four Runner
50
Tabla 2. – Continuación.
Codigo Ubicación Tipo Marca Modelo
PDM-081 Sede Operativa Oeste Sedán Toyota Four Runner
PDM-082 Sede Operativa Oeste Sedán Toyota Four Runner
PDM-083 Sede Operativa Oeste Sedán Toyota Four Runner
PDM-084 Sede Operativa Oeste Sedán Toyota Four Runner
PDM-085 Sede Operativa Oeste Sedán Toyota Four Runner
PDM-086 Sede Operativa Oeste Sedán Toyota Four Runner
PDM-087 Sede Operativa Oeste Sedán Toyota Four Runner
PDM-088 Sede Operativa Oeste Sedán Toyota Four Runner
PDM-089 Sede Operativa Oeste Sedán Toyota Four Runner
PDM-090 Sede Operativa Oeste Sedán Toyota Four Runner
PDM-091 Sede Central Sedán GM Impala
PDM-092 Sede Central Sedán GM Impala
PDM-093 Sede Central Sedán GM Impala
PDM-094 Sede Central Sedán GM Impala
PDM-095 Sede Central Sedán GM Impala
PDM-096 Sede Central Sedán GM Impala
PDM-097 Sede operativa Este Sedán GM Impala
PDM-098 Sede operativa Este Sedán GM Impala
PDM-099 Sede operativa Este Sedán GM Impala
PDM-100 Sede operativa Este Sedán GM Impala
Codigo Ubicación Tipo Marca Modelo
PDM-101 Sede operativa Este Sedán GM Impala
PDM-102 Sede operativa Este Sedán GM Impala
PDM-103 Sede operativa Este Sedán GM Impala
PDM-104 Sede operativa Este Sedán GM Impala
PDM-105 Sede operativa Este Sedán GM Impala
PDM-106 Sede operativa Este Sedán GM Impala
PDM-107 Sede operativa Este Sedán GM Impala
PDM-108 Sede operativa Este Sedán GM Impala
PDM-109 Sede operativa Este Sedán GM Impala
PDM-110 Sede operativa Este Sedán GM Impala
PDM-111 Sede operativa Este Sedán GM Impala
PDM-112 Sede operativa Este Sedán GM Impala
PDM-113 Sede operativa Este Sedán GM Impala
PDM-114 Sede operativa Este Sedán GM Impala
PDM-115 Sede operativa Este Sedán GM Impala
PDM-116 Sede operativa Este Sedán Mazda B2600
PDM-117 Sede operativa Este Sedán Mazda B2600
PDM-118 Sede operativa Oeste Sedán Mazda B2600
PDM-119 Sede operativa Oeste Sedán Mazda B2600
PDM-120 Sede operativa Oeste Sedán Mazda B2600
51
Tabla 2. – Continuación. Codigo Ubicación Tipo Marca Modelo
PDM-121 Sede operativa Oeste Sedán Mazda B2600 PDM-122 Sede operativa Oeste Sedán Mazda B2600
PDM-123 Sede operativa Oeste Sedán Mazda B2600
PDM-124 Sede operativa Oeste Sedán Mazda B2600 PDM-125 Sede operativa Oeste Sedán Mazda B2600
PDM-126 Sede operativa Oeste Sedán Mazda B2600 PDM-127 Sede operativa Oeste Sedán Mazda B2600
PDM-128 Sede operativa Oeste Sedán Mazda B2600
PDM-129 Sede operativa Oeste Sedán Mazda B2600 PDM-130 Sede operativa Oeste Sedán Mazda B2600
PDM-131 Sede operativa Oeste Sedán Mazda B2600 PDM-132 Sede operativa Oeste Sedán Mazda B2600
PDM-133 Sede operativa Oeste Sedán Mazda B2600
T-01 Sede Central Bus Titan S/I T-02 Sede Central Bus Titan S/I
52
Tabla 3. – Inventario de aires acondicionados de la policía regional del estado Zulia.
Ubicación Tipo Marca Serial Capacidad Fase Ciclos (Hz) Voltaje
DP Padilla Split York L023505765 3 Ton. 1 50 a 60 Hz 220 VAC
DP Padilla Ventana GE S/I 18K BTU 1 50 a 60 Hz 220 VAC
DP Baralt Split LG 371LA26748A 15K BTU 1 50 a 60 Hz 220 VAC
DP Baralt Split LG 371LA27490A 15K BTU 1 50 a 60 Hz 220 VAC
DP Catatumbo Compacto York WKJM021253 3 Ton. 1 50 a 60 Hz 220 VAC
DP Colón Split York 3918250308 3 Ton. 1 50 a 60 Hz 220 VAC
DP Colón Ventana Samsung S/I 21K BTU 1 50 a 60 Hz 220 VAC
DP Francisco Javier Pulgar Compacto Carrier WDJP193972 5 Ton. 1 50 a 60 Hz 220 VAC
DP Jesús Enrique Losada Split Panasonic S/I 12K BTU 1 50 a 60 Hz 220 VAC
DP Jesús Enrique Losada Split LG 162GA05275A 15K BTU 1 50 a 60 Hz 220 VAC
DP Jesús María Semprún Compacto York WFJP002057 3 Ton. 1 50 a 60 Hz 220 VAC
DP Jesús María Semprún Split Panasonic S/I 12K BTU 1 50 a 60 Hz 220 VAC
DP La Cañada Split Carrier 0600E06992 18K BTU 1 50 a 60 Hz 220 VAC
DP La Cañada Ventana GE S/I 18K BTU 1 50 a 60 Hz 220 VAC
DP Machiques de Perijá Split LG 312KA00488A 15K BTU 1 50 a 60 Hz 220 VAC
DP Machiques de Perijá Split Carrier 08001R08251 18K BTU 1 50 a 60 Hz 220 VAC
DP Mara Ventana GE S/I 18K BTU 1 50 a 60 Hz 220 VAC
DP Mara Split York WMJM013496 3 Ton. 1 50 a 60 Hz 220 VAC
DP Miranda Split York WMJM006897 3 Ton. 1 50 a 60 Hz 220 VAC
DP Miranda Ventana Fedders S/I 21K BTU 1 50 a 60 Hz 220 VAC
DP Páez Ventana GE S/I 18K BTU 1 50 a 60 Hz 220 VAC
DP Páez Split LG GSA030800578 5 Ton. 1 50 a 60 Hz 220 VAC
DP Páez Split LG 074LA02251A 15K BTU 1 50 a 60 Hz 220 VAC
53
Tabla 3. – Continuación. Ubicación Tipo Marca Serial Capacidad Fase Ciclos (Hz) Voltaje DP Rosario de Perijá Compacto Carrier 1604G51691 5 Ton. 1 50 a 60 Hz 220 VAC DP Rosario de Perijá Ventana Samsung S/I 18K BTU 1 50 a 60 Hz 220 VAC
DP San Francisco Split LG 352KA88358A 15K BTU 1 50 a 60 Hz 220 VAC DP San Francisco Split LG 352KA57822A 15K BTU 1 50 a 60 Hz 220 VAC DP Santa Rita Compacto Tappan 4329361 3 Ton. 1 50 a 60 Hz 220 VAC
DP Santa Rita Split Carrier 0600E0158244 21K BTU 1 50 a 60 Hz 220 VAC DP Simón Bolívar Compacto York WGJM000848 3 Ton. 1 50 a 60 Hz 220 VAC DP Simón Bolívar Compacto York WDJP193923 3 Ton. 1 50 a 60 Hz 220 VAC
DP Sucre Compacto Carrier 1604651685 5 Ton. 1 50 a 60 Hz 220 VAC DP Valmore Rodríguez Split Carrier 24001E24816 21K BTU 1 50 a 60 Hz 220 VAC DP Valmore Rodríguez Split LG 247LA14528A 15K BTU 1 50 a 60 Hz 220 VAC
Paroquia Idelfonso Vázquez Split Carrier 0803E26309 21K BTU 1 50 a 60 Hz 220 VAC DP Ciudad Ojeda y Venezuela Ventana GE S/I 15K BTU 1 50 a 60 Hz 220 VAC DP Ciudad Ojeda y Venezuela Compacto Carrier 370063A190 10 Ton 1 50 a 60 Hz 220 VAC
DP Ciudad Ojeda y Venezuela Split LG O101507859 5 Ton. 1 50 a 60 Hz 220 VAC DP Ciudad Ojeda y Venezuela Split LG 211KA00784 30K BTU 1 50 a 60 Hz 220 VAC DP Ciudad Ojeda y Venezuela Split York 3699040240 3 Ton. 1 50 a 60 Hz 220 VAC
DP Cabimas Ventana GE S/I 21K BTU 1 50 a 60 Hz 220 VAC DP Cabimas Compacto Carrier O16967NBKM 10 Ton 1 50 a 60 Hz 220 VAC DP Cabimas Split Carrier 0803E28318 21K BTU 1 50 a 60 Hz 220 VAC
DP Cabimas Split Carrier 0803E157299 18K BTU 1 50 a 60 Hz 220 VAC DP Cabimas Compacto Carrier 51016A0696 5 Ton. 1 50 a 60 Hz 220 VAC
DP Cabimas Ventana GE S/I 18K BTU 1 50 a 60 Hz 220 VAC
54
Tabla 3. – Continuación.
Ubicación Tipo Marca Serial Capacidad Fase Ciclos (Hz) Voltaje
DP Bolívar Split Carrier 0800E337591 18K BTU 1 50 a 60 Hz 220 VAC
DP Bolívar Ventana Samsung S/I 15K BTU 1 50 a 60 Hz 220 VAC
DP Santa Lucía Split York WMSM007086 3 Ton. 1 50 a 60 Hz 220 VAC
DP Santa Lucía Split LG 195KA41186A 15K BTU 1 50 a 60 Hz 220 VAC
DP Cacique Mara Split York WMJM006897 3 Ton. 1 50 a 60 Hz 220 VAC
DP Cacique Mara Ventana GE S/I 18K BTU 1 50 a 60 Hz 220 VAC
DP Cecilio Acosta Split LG 180LA55723A 15K BTU 1 50 a 60 Hz 220 VAC
DP Cecilio Acosta Split Carrier 0803E131794 21K BTU 1 50 a 60 Hz 220 VAC
DP Chiquinquirá Split York ECHM501056 3 Ton. 1 50 a 60 Hz 220 VAC
DP Chiquinquirá Ventana Samsung S/I 18K BTU 1 50 a 60 Hz 220 VAC
DP Chiquinquirá Split LG 182LA52498A 15K BTU 1 50 a 60 Hz 220 VAC
DP Coquivacoa Split Carrier 0803E3987286 18K BTU 1 50 a 60 Hz 220 VAC
DP Coquivacoa Split LG 354KA37264A 21K BTU 1 50 a 60 Hz 220 VAC
DP Cristo de Aranza Split York SELJM473584 3 Ton. 1 50 a 60 Hz 220 VAC
DP Francisco Bustamante Split York SELJM49182 3 Ton. 1 50 a 60 Hz 220 VAC
DP Idelfonso Vázquez Split LG 263LA98274A 15K BTU 1 50 a 60 Hz 220 VAC
DP Juana de Avila Split Carrier 0800E264390 18K BTU 1 50 a 60 Hz 220 VAC
DP Juana de Avila Split Carrier 0800E236932 18K BTU 1 50 a 60 Hz 220 VAC
DP Luis Hurtado Higuera Split York SELJM494120 3 Ton. 1 50 a 60 Hz 220 VAC
DP Manuel Dagnino Split Carrier 0600E231796 21K BTU 1 50 a 60 Hz 220 VAC
DP Manuel Dagnino Split LG 263LA98274A 12K BTU 1 50 a 60 Hz 220 VAC
DP Olegario Villalobos Ventana GE S/I 21K BTU 1 50 a 60 Hz 220 VAC
DP Olegario Villalobos Split LG 351KA34827A 15K BTU 1 50 a 60 Hz 220 VAC
55
Tabla 3. – Continuación.
Ubicación Tipo Marca Serial Capacidad Fase Ciclos (Hz) Voltaje DP Raúl Leoni Split York SFLJM473585 3 Ton. 1 50 a 60 Hz 220 VAC
DP San Isidro Ventana GE S/I 18KBTU 1 50 a 60 Hz 220 VAC DP San Isidro Ventana GE S/I 15K BTU 1 50 a 60 Hz 220 VAC DP Venancio Pulgar Split Carrier 0601E277685 21K BTU 1 50 a 60 Hz 220 VAC
DP Venancio Pulgar Ventana Samsung S/I 18K BTU 1 50 a 60 Hz 220 VAC Comandancia Delicias Split York L020717696 5 Ton. 1 50 a 60 Hz 220 VAC
Comandancia Delicias Split Carrier 1705610069 10 Ton 1 50 a 60 Hz 220 VAC Comandancia Delicias Split York SELJM473611 3 Ton. 1 50 a 60 Hz 220 VAC
Comandancia Delicias Split LG 411LA33790A 18K BTU 1 50 a 60 Hz 220 VAC Comandancia Delicias Split LG 351LA35827A 15K BTU 1 50 a 60 Hz 220 VAC
DIP - Centro Control RF Split York WCK017483 5 Ton. 1 50 a 60 Hz 220 VAC
DIP - Centro Control RF Split Carrier 4399F58328 10 Ton 1 50 a 60 Hz 220 VAC DIP - Centro Control RF Split York 2709710114 5 Ton. 1 50 a 60 Hz 220 VAC
56
Tabla 4. – Inventario de unidades automotoras de la policía regional del estado Zulia.
Cantidad Ubicación Tipo Marca Modelo
3 Municipio Almirante Padilla Sedán Jeep Cherokee 2 Municipio Almirante Padilla Sedán Chevrolet D-max 6 Municipio Baralt Sedán Jeep Cherokee 8 Municipio Baralt Sedán Ford Crown Victoria
3 Municipio Baralt Sedán Chevrolet D-max 4 Municipio Baralt Sedán Chevrolet Impala 8 Municipio Catatumbo Sedán Jeep Cherokee 3 Municipio Catatumbo Sedán Chevrolet D-max
8 Municipio Colón Sedán Jeep Cherokee
3 Municipio Colón Sedán Chevrolet D-max 3 Municipio Francisco Javier Pulgar Sedán Chevrolet D-max 4 Municipio Francisco Javier Pulgar Sedán Chevrolet Impala
10 Municipio Jesús Enrique Losada Sedán Ford Crown Victoria
2 Municipio Jesús Enrique Losada Sedán Chevrolet D-max 5 Municipio Jesús Enrique Losada Sedán Chevrolet Impala 8 Municipio Jesús María Semprún Sedán Ford Crown Victoria
3 Municipio Jesús María Semprún Sedán Chevrolet D-max
10 Municipio La Cañada de Urdaneta Sedán Jeep Cherokee 15 Municipio La Cañada de Urdaneta Sedán Ford Crown Victoria 3 Municipio La Cañada de Urdaneta Sedán Chevrolet D-max
57
Tabla 4. – Continuación. Cantidad Ubicación Tipo Marca Modelo
5 Municipio La Cañada de Urdaneta Sedán Chevrolet Impala
7 Municipio Machiques de Perijá Sedán Jeep Cherokee 3 Municipio Machiques de Perijá Sedán Chevrolet D-max 5 Municipio Machiques de Perijá Sedán Chevrolet Impala
10 Municipio Mara Sedán Jeep Cherokee
15 Municipio Mara Sedán Ford Crown Victoria 5 Municipio Mara Sedán Chevrolet D-max 8 Municipio Mara Sedán Chevrolet Impala
8 Municipio Miranda Sedán Ford Crown Victoria
3 Municipio Miranda Sedán Chevrolet D-max 4 Municipio Miranda Sedán Chevrolet Impala 8 Municipio Páez Sedán Jeep Cherokee
10 Municipio Páez Sedán Ford Crown Victoria
3 Municipio Páez Sedán Chevrolet D-max 5 Municipio Páez Sedán Chevrolet Impala 8 Municipio Rosario de Perijá Sedán Jeep Cherokee 8 Municipio Rosario de Perijá Sedán Ford Crown Victoria
3 Municipio Rosario de Perijá Sedán Chevrolet D-max
5 Municipio Rosario de Perijá Sedán Chevrolet Impala 10 Municipio San Francisco Sedán Ford Crown Victoria
58
Tabla 4. – Continuación.
Cantidad Ubicación Tipo Marca Modelo 5 Municipio San Francisco Sedán Chevrolet D-max
8 Municipio San Francisco Sedán Chevrolet Impala
4 Municipio Santa Rita Sedán Jeep Cherokee 8 Municipio Santa Rita Sedán Ford Crown Victoria 3 Municipio Santa Rita Sedán Chevrolet D-max
4 Municipio Santa Rita Sedán Chevrolet Impala
10 Municipio Simón Bolívar Sedán Ford Crown Victoria 3 Municipio Simón Bolívar Sedán Chevrolet D-max 4 Municipio Simón Bolívar Sedán Chevrolet Impala
8 Municipio Sucre Sedán Ford Crown Victoria
2 Municipio Sucre Sedán Chevrolet D-max 4 Municipio Sucre Sedán Chevrolet Impala 10 Municipio Valmore Rodríguez Sedán Jeep Cherokee 10 Municipio Valmore Rodríguez Sedán Ford Crown Victoria
4 Municipio Valmore Rodríguez Sedán Chevrolet D-max
5 Municipio Valmore Rodríguez Sedán Chevrolet Impala 3 Paroquia Idelfonso Vázquez Sedán Chevrolet Impala 8 Parroquia Alonso de Ojeda y Venezuela - Mun.Lagunillas Sedán Jeep Cherokee
12 Parroquia Alonso de Ojeda y Venezuela - Mun.Lagunillas Sedán Ford Crown Victoria
2 Parroquia Alonso de Ojeda y Venezuela - Mun.Lagunillas Sedán Chevrolet D-max
59
Tabla 4. – Continuación. Cantidad Ubicación Tipo Marca Modelo 8 Parroquia Alonso de Ojeda y Venezuela - Mun.Lagunillas Sedán Chevrolet Impala 12 Parroquia Ambrosio - Municipio Cabimas Sedán Jeep Cherokee 12 Parroquia Ambrosio - Municipio Cabimas Sedán Ford Crown Victoria
2 Parroquia Ambrosio - Municipio Cabimas Sedán Chevrolet D-max
10 Parroquia Ambrosio - Municipio Cabimas Sedán Chevrolet Impala 10 Parroquia Bolívar y Santa Lucía Sedán Ford Crown Victoria 2 Parroquia Bolívar y Santa Lucía Sedán Chevrolet D-max
2 Parroquia Cacique Mara y Cecilio Acosta Sedán Chevrolet D-max
4 Parroquia Cacique Mara y Cecilio Acosta Sedán Chevrolet Impala 5 Parroquia Chiquinquirá Sedán Ford Crown Victoria 2 Parroquia Chiquinquirá Sedán Chevrolet D-max
6 Parroquia Chiquinquirá Sedán Chevrolet Impala
5 Parroquia Coquivacoa Sedán Ford Crown Victoria 2 Parroquia Coquivacoa Sedán Chevrolet D-max 2 Parroquia Cristo de Aranza Sedán Chevrolet D-max
4 Parroquia Cristo de Aranza Sedán Chevrolet Impala
2 Parroquia Francisco Bustamante Sedán Chevrolet D-max
4 Parroquia Francisco Bustamante Sedán Chevrolet Impala 8 Parroquia Germán Rios Linares - Municipio Cabimas Sedán Jeep Cherokee 8 Parroquia Germán Rios Linares - Municipio Cabimas Sedán Ford Crown Victoria
60
Tabla 4. – Continuación. Cantidad Ubicación Tipo Marca Modelo
5 Parroquia Germán Rios Linares - Municipio Cabimas Sedán Chevrolet D-max 7 Parroquia Idelfonso Vázquez Sedán Ford Crown Victoria 2 Parroquia Idelfonso Vázquez Sedán Chevrolet D-max 3 Parroquia Juana de Avila Sedán Chevrolet D-max
6 Parroquia Juana de Avila Sedán Chevrolet Impala
2 Parroquia Luis Hurtado Higuera y Manuel Dagnino Sedán Chevrolet D-max 4 Parroquia Luis Hurtado Higuera y Manuel Dagnino Sedán Chevrolet Impala 4 Parroquia Olegario Villalobos Sedán Chevrolet D-max
7 Parroquia Olegario Villalobos Sedán Chevrolet Impala
5 Parroquia Punta Gorda - Municipio Cabimas Sedán Ford Crown Victoria 3 Parroquia Punta Gorda - Municipio Cabimas Sedán Chevrolet D-max 4 Parroquia Punta Gorda - Municipio Cabimas Sedán Chevrolet Impala
3 Parroquia Raúl Leoni y Carracciolo Parra Pérez Sedán Chevrolet D-max
4 Parroquia Raúl Leoni y Carracciolo Parra Pérez Sedán Chevrolet Impala 5 Parroquia San Isidro Sedán Jeep Cherokee 8 Parroquia San Isidro Sedán Ford Crown Victoria 3 Parroquia San Isidro Sedán Chevrolet D-max
5 Parroquia Venancio Pulgar y Borjas Romero Sedán Jeep Cherokee 5 Parroquia Venancio Pulgar y Borjas Romero Sedán Chevrolet D-max 6 Parroquia Venancio Pulgar y Borjas Romero Sedán Chevrolet Impala
61
Tabla 5. – Inventario de aires acondicionados de la policía del municipio San Francisco.
Ciclos (Hz) Voltaje Ubicación Tipo Marca Serial Capac Fase
Sede Principal PSF Compacto Carrier 3502G11277 10 Ton. 1 60 208/230 VAC
Sede Principal PSF Compacto Carrier 2249F23903 15 Ton. 1 60 208/230 VAC
Sede Principal PSF Compacto Carrier 3502G20729 10 Ton. 1 60 208/230 VAC
Sede Principal PSF Compacto Carrier 2258F38793 15 Ton. 1 60 208/230 VAC Estacionamiento
PSF Compacto Carrier 1604G51671 5 Ton. 1 60 208/230 VAC
Estacionamiento PSF Compacto Carrier O200G30363 10 Ton. 1 60 208/230 VAC
Estacionamiento PSF
Split LG 177LB204491 24K BTU 1 60 208/230 VAC
Estacionamiento PSF Compacto Carrier 1604G37193 5 Ton 1 60 208/230 VAC
62
63
Tabla 6. – Inventario de unidades automotoras de la policía del municipio San Francisco.
Codigo Ubicación Tipo Marca Modelo PSF-001 Garaje PSF Sedán Ford Crown Victoria PSF-002 Garaje PSF Sedán Ford Crown Victoria PSF-003 Garaje PSF Sedán Ford Crown Victoria PSF-004 Garaje PSF Sedán Ford Crown Victoria PSF-005 Garaje PSF Sedán Ford Crown Victoria PSF-006 Garaje PSF Sedán Ford Crown Victoria PSF-007 Garaje PSF Sedán Ford Crown Victoria PSF-008 Garaje PSF Sedán Ford Crown Victoria PSF-009 Garaje PSF Sedán Ford Crown Victoria PSF-010 Garaje PSF Sedán Ford Crown Victoria PSF-011 Garaje PSF Sedán Ford Crown Victoria PSF-012 Garaje PSF Sedán Ford Crown Victoria PSF-013 Garaje PSF Sedán Ford Crown Victoria PSF-014 Garaje PSF Sedán Ford Crown Victoria PSF-015 Garaje PSF Sedán Ford Crown Victoria PSF-016 Garaje PSF Sedán Ford Crown Victoria PSF-017 Garaje PSF Sedán Ford Crown Victoria PSF-018 Garaje PSF Sedán Ford Crown Victoria PSF-019 Garaje PSF Sedán Ford Crown Victoria PSF-020 Garaje PSF Sedán Ford Crown Victoria PSF-021 Garaje PSF Sedán Ford Crown Victoria PSF-022 Garaje PSF Sedán Ford Crown Victoria PSF-023 Garaje PSF Sedán Ford Crown Victoria PSF-024 Garaje PSF Sedán Ford Crown Victoria PSF-025 Garaje PSF Sedán Ford Crown Victoria PSF-026 Garaje PSF Sedán Ford Crown Victoria PSF-027 Garaje PSF Sedán Ford Crown Victoria
PSF-028 Garaje PSF Sedán Ford Crown Victoria
Codigo Ubicación Tipo Marca Modelo PSF-029 Garaje PSF Sedán Ford Crown Victoria PSF-030 Garaje PSF Sedán Ford Crown Victoria PSF-031 Garaje PSF Sedán Ford Crown Victoria PSF-032 Garaje PSF Sedán Ford Crown Victoria PSF-033 Garaje PSF Sedán Ford Crown Victoria PSF-034 Garaje PSF Sedán Ford Crown Victoria PSF-035 Garaje PSF Sedán Ford Crown Victoria PSF-036 Garaje PSF Sedán Ford Crown Victoria PSF-037 Garaje PSF Sedán Ford Crown Victoria PSF-038 Garaje PSF Sedán Ford Crown Victoria PSF-039 Garaje PSF Sedán Ford Crown Victoria PSF-040 Garaje PSF Sedán Ford Crown Victoria PSF-041 Garaje PSF Sedán Ford Crown Victoria PSF-042 Garaje PSF Sedán Ford Crown Victoria PSF-043 Garaje PSF Sedán Ford Crown Victoria PSF-044 Garaje PSF Sedán Ford Crown Victoria PSF-045 Garaje PSF Sedán Ford Crown Victoria PSF-046 Garaje PSF Sedán Ford Crown Victoria PSF-047 Garaje PSF Sedán Ford Crown Victoria PSF-048 Garaje PSF Sedán Ford Crown Victoria PSF-049 Garaje PSF Sedán Ford Crown Victoria PSF-050 Garaje PSF Sedán Ford Crown Victoria PSF-051 Garaje PSF Sedán Ford Crown Victoria PSF-052 Garaje PSF Sedán Ford Crown Victoria PSF-053 Garaje PSF Sedán Ford Crown Victoria PSF-054 Garaje PSF Sedán Ford Crown Victoria PSF-055 Garaje PSF Sedán Ford Crown Victoria
PSF-056 Garaje PSF Sedán Ford Crown Victoria
64
Tabla 6. – Continuación.
Codigo Ubicación Tipo Marca Modelo PSF-057 Garaje PSF Sedán Ford Crown Victoria PSF-058 Garaje PSF Sedán Ford Crown Victoria PSF-059 Garaje PSF Sedán Ford Crown Victoria PSF-060 Garaje PSF Sedán Ford Crown Victoria PSF-061 Garaje PSF Sedán Ford Crown Victoria PSF-062 Garaje PSF Sedán Ford Crown Victoria PSF-063 Garaje PSF Sedán Ford Crown Victoria PSF-064 Garaje PSF Sedán Ford Crown Victoria PSF-065 Garaje PSF Sedán Ford Crown Victoria PSF-066 Garaje PSF Sedán Ford Crown Victoria PSF-067 Garaje PSF Sedán Ford Crown Victoria PSF-068 Garaje PSF Sedán Ford Crown Victoria PSF-069 Garaje PSF Sedán Ford Crown Victoria PSF-070 Garaje PSF Sedán Ford Crown Victoria PSF-071 Garaje PSF Sedán Ford Crown Victoria PSF-072 Garaje PSF Sedán Ford Crown Victoria PSF-073 Garaje PSF Sedán Ford Crown Victoria PSF-074 Garaje PSF Sedán Ford Crown Victoria PSF-075 Garaje PSF Sedán Ford Crown Victoria PSF-076 Garaje PSF Sedán Ford Crown Victoria PSF-077 Garaje PSF Sedán Ford Crown Victoria PSF-078 Garaje PSF Sedán Ford Crown Victoria PSF-079 Garaje PSF Sedán Ford Crown Victoria PSF-080 Garaje PSF Sedán Ford Crown Victoria PSF-081 Garaje PSF Sedán Ford Crown Victoria PSF-082 Garaje PSF Sedán Ford Crown Victoria PSF-083 Garaje PSF Sedán Ford Crown Victoria
PSF-084 Garaje PSF Sedán Ford Crown Victoria
Codigo Ubicación Tipo Marca Modelo PSF-085 Garaje PSF Sedán Ford Crown Victoria PSF-086 Garaje PSF Sedán Ford Crown Victoria PSF-087 Garaje PSF Sedán Ford Crown Victoria PSF-088 Garaje PSF Sedán Ford Crown Victoria PSF-089 Garaje PSF Sedán Ford Crown Victoria PSF-090 Garaje PSF Sedán Toyota Autana PSF-091 Garaje PSF Sedán Toyota Autana PSF-092 Garaje PSF Sedán Toyota Autana PSF-093 Garaje PSF Sedán Toyota Autana PSF-094 Garaje PSF Sedán Toyota Autana PSF-095 Garaje PSF Sedán Toyota Autana PSF-096 Garaje PSF Sedán Toyota Autana PSF-097 Garaje PSF Sedán Toyota Autana PSF-098 Garaje PSF Sedán Toyota Autana PSF-099 Garaje PSF Sedán Toyota Autana PSF-100 Garaje PSF Sedán Toyota Autana PSF-101 Garaje PSF Sedán Toyota Autana PSF-102 Garaje PSF Sedán Toyota Autana PSF-103 Garaje PSF Sedán Toyota Autana PSF-104 Garaje PSF Sedán Toyota Autana PSF-105 Garaje PSF Sedán Toyota Autana PSF-106 Garaje PSF Sedán Toyota Autana PSF-107 Garaje PSF Sedán Toyota Autana PSF-108 Garaje PSF Sedán Toyota Autana PSF-109 Garaje PSF Sedán Toyota Autana PSF-110 Garaje PSF Sedán Toyota Autana PSF-111 Garaje PSF Sedán Toyota Autana
PSF-112 Garaje PSF Sedán Toyota Autana
Tabla 7. – Inventario de equipos de telecomunicaciones de la policía del municipio Maracaibo.
Cantidad Descripción Marca Modelo Potencia / Capacidad Ubicación 6 Repetidora de RF Motorola Quantar Intellirepeater 100 Watts Torre Elca - Maracaibo 1 Combinador de Transmisión Andrew DB8062F 500 Watts / 10 canales Torre Elca - Maracaibo
2 Antenas RFS BMR-O-12 500 Watts Torre Elca - Maracaibo 1 Rectificador Cargador de Baterías Intergy IMPS 520 120 Amp Torre Elca - Maracaibo
32 Batería Sellada Dynasty MPS12-50 12 VDC Torre Elca - Maracaibo 1 Modem Motorola Trendnet TFM560X Torre Elca - Maracaibo
80 Batería Sellada Dynasty MPS12-50 12 VDC Sede DIP - PDM 1 Banco de canales Motorola Tensr 800 32 canales Sede DIP - PDM
1 Modem Trendnet TFM560X N/A Sede DIP - PDM 1 UPS Powerware 9315-225 225 KVA Sede DIP - PDM
266 Radio Portátil sin teclado Motorola PRO 5750 3 watts / 16 canales Sedes Operativas PDM 130 Radio móvil Motorola LCS 2000 15 watts / 8 canales Unidades automotoras
Tabla 8. – Inventario de equipos de telecomunicaciones de la policía del municipio San Francisco.
Cantidad Descripción Marca Modelo Potencia / Capacidad Ubicación 4 Repetidora de RF Motorola Quantar 100 Watts Torre Hotel Maruma 1 Combinador de Transmisión RFS TCD900-5 150 Watt / 5 canales Torre Hotel Maruma
2 Antenas RFS BMR-O-10 500 Watts Torre Hotel Maruma Rectificador / Cargador de Baterías
1 Majorpower MajorTPS 50/48 50 Amps Torre Hotel Maruma
16 Batería Sellada Power 12100X 12 VDC Torre Hotel Maruma
1 UPS APC Smart-UPS 2200 VA Torre Hotel Maruma 120 Radio Portátil con teclado Motorola LTS 2000 3 watts / 16 canales Sede Operativa PSF 92 Radio móvil Motorola MCS 2000 15 watts / 8 canales Unidades automotoras
65
Tabla 9. – Inventario de equipos de telecomunicaciones de la policía regional del estado Zulia.
Cantidad Descripción Marca Modelo Potencia / Capacidad Ubicación
11 Repetidora de RF Motorola Quantar Intellirepeater 100 Watts Sede DIP - Policía Regional
2 Combinador de Transmisión Andrew DB8062F 500 Watts / 10 canales Sede DIP - Policía Regional
3 Antenas RFS BMR-O-12 500 Watts Sede DIP - Policía Regional
1 Rectificador Cargador de Baterías Intergy IMPS 520 120 Amp Sede DIP - Policía Regional
80 Batería Sellada Dynasty MPS12-50 12 VDC Sede DIP - Policía Regional
1 Modem Motorola Trendnet TFM560X Sede DIP - Policía Regional
1 Banco de canales Motorola Tensr 800 32 canales Sede DIP - Policía Regional
1 Modem Trendnet TFM560X N/A Sede DIP - Policía Regional
20 Radio Portátil con teclado Motorola PRO7750 3 watts / 16 canales Sedes Operativas
1560 Radio Portátil sin teclado Motorola PRO 5750 3 watts / 16 canales Sedes Operativas
420 Radio móvil Motorola LCS 2000 15 watts / 8 canales Unidades automotoras
4 Repetidora de RF Motorola Quantar Intellirepeater 100 Watts Cerro Misoa
1 Combinador de Transmisión Andrew DB8062F 500 Watts / 6 canales Cerro Misoa
2 Antenas RFS BMR-O-12 500 Watts Cerro Misoa
1 Rectificador Cargador de Baterías Intergy IMPS 520 120 Amp Cerro Misoa
32 Batería Sellada Dynasty MPS12-50 12 VDC Cerro Misoa
1 Modem Trendnet TFM560X N/A Cerro Misoa
4 Repetidora de RF Motorola Quantar Intellirepeater 100 Watts La Sierra
1 Combinador de Transmisión Andrew DB8062F 500 Watts / 6 canales La Sierra
2 Antenas RFS BMR-O-12 500 Watts La Sierra
66
Tabla 9. – Continuación.
Cantidad Descripción Marca Modelo Potencia / Capacidad Ubicación
1 Rectificador Cargador de Baterías Intergy IMPS 520 120 Amp La Sierra
32 Batería Sellada Dynasty MPS12-50 12 VDC La Sierra
1 Modem Trendnet TFM560X N/A La Sierra
3 Repetidora de RF Motorola Quantar Intellirepeater 100 Watts Paraguaipoa 1 Combinador de Transmisión Andrew DB8062F 500 Watts / 6 canales Paraguaipoa
2 Antenas RFS BMR-O-12 500 Watts Paraguaipoa
1 Rectificador Cargador de Baterías Intergy IMPS 520 120 Amp Paraguaipoa 24 Batería Sellada Dynasty MPS12-50 12 VDC Paraguaipoa
1 Modem Trendnet TFM560X N/A Paraguaipoa 3 Repetidora de RF Motorola Quantar Intellirepeater 100 Watts Cerro San Telmo 1 Combinador de Transmisión Andrew DB8062F 500 Watts / 6 canales Cerro San Telmo
2 Antenas RFS BMR-O-12 500 Watts Cerro San Telmo 1 Rectificador Cargador de Baterías Intergy IMPS 520 120 Amp Cerro San Telmo
24 Batería Sellada Dynasty MPS12-50 12 VDC Cerro San Telmo 1 Modem Trendnet TFM560X N/A Cerro San Telmo 5 Repetidora de RF Motorola Quantar Intellirepeater 100 Watts Cerro Azul
1 Combinador de Transmisión Andrew DB8062F 500 Watts / 6 canales Cerro Azul
2 Antenas RFS BMR-O-12 500 Watts Cerro Azul
1 Rectificador Cargador de Baterías Intergy IMPS 520 120 Amp Cerro Azul
32 Batería Sellada Dynasty MPS12-50 12 VDC Cerro Azul 1 Modem Trendnet TFM560X N/A Cerro Azul
67
Tabla 10. – Inventario de partes en almacenes.
Cantidad No. De Parte Descripción de parte
1 15 Piñon de Cadena 1 387 Crucetas 2 655 Disco de Clocheth 1 5123 Discos de Freno Delantero 1 5472 Discos de Freno Delantero
13 7298 Tacos de Frenos 3 12506 Buje de Tijera Izqiuerda 3 23612 Aceite de Barras 1 33262 Disco de croche 3 41885 Rueda Libre
12 51040 Filtro de Aceite 55 51348 Filtro de Aceite 1 51515 Filto de aceite wix 3 51515 Filtro de Aceite 2 54029 Discos delanteros 2 54060 Discos de Freno 6 231776 Contra peso 6 234509 Tapa polvo 4 316487 Protectores de tapas de valvulas 1 330222 Prensa disco 1 330223 Prensa discos 4 335892 Parales
28 341233 Filtros de gasolina 20 341708 Empacadura tapa valvula 2 361082 Emblema BMW pequeña 5 376004 Pomo de silicon 1 455342 Cardan 1 461852 Interruptor 1 465153 Regulador de presion 3 651457 Parales 4 765005 Mica de stop trasero
Cantidad No. De Parte Descripción de parte
4 790320 Guaya de kilometrajes 1 832400 Pomo de silicon
10 908133 Pasadores 30 1230319 Gomas de carrocerias 6 1242019 Bujes de separacion de tuberia 6 1242020 Muelles
10 1242104 Goma de posa pie 2 1244611 Kit de arranque 2 1247406 Valvulas catalizadoras 4 1340324 Estopera de piñon 5 1340724 Soporte de escape traseros
10 1340900 Tapa de cierre 7 1340903 Tapa de valvula izquierda 8 1340904 Tapa de valvula derecha 1 1341022 Capsula de temperatura 1 1341030 Pulsor de señal 1 1341231 Bomba de gasolina 5 1341232 Amortiguadores 5 1341418 Pulgas
20 1341472 Tornillo 8 MM 2 1341562 Tapa de polea
10 1341592 Manguiutos 4 1341619 Topes de goma 2 1341697 Muelle operador
20 1341707 Punta interior 20 1341786 Orrines 30 1341797 Anillos obturados grades 1 1341895 Tapa delantera del motor 2 1341978 Bombina de encendido 4 1342366 Inyectadores
10 1342394 Empacadura del carter
68
Tabla 10. – Continuación.
Cantidad No. De Parte Descripción de parte
2 1342641 Pipas de bujias 12 1342979 Protector de tapa bujias 30 1354619 Bombillos de halogenos 20 1370987 Fusidle de 32 volteos 30 1372033 Click de tornillo 20 1372626 Fusibles de 15 AMP 25 1386627 Fucibles 10 1386848 Fusibles de 32 voltios 2 1389105 Relay 2 1393412 Relay de 4 tapas 1 1436000 Sesor de suiche 5 1437474 Anillo octurado pequeño 1 1450230 Casquillo de Cojinete 6 1451237 Pasadores de posa pie
10 1459136 Socate de luces 20 1460165 Lochas de Motor 10 1460594 Caperusa de proteccion 32 1461475 Gomas universales 2 1464985 Termostato 2 1465286 Protector de tapa de agua 4 1703993 Interruptor termico 5 1707705 Ty rap 3 1720201 Soporte de Tuberia de Gasolina 1 1739365 Carbonera regulador 1 1739510 Sensor de temperatura 1 2305735 Suiche de freno 1 2306020 Alternador 2 2306050 Mica de stop trasero
40 2306150 Bombillo de cruce 5 2306327 Porta mangas 1 2306624 Flotador de tanque
Cantidad No. De Parte Descripción de parte
2 2306979 Intermitentes 11 2310401 Gomas de posa pie 10 2310404 Posa pie 2 2310575 Click 6 2310871 Base protectora de suiche 6 2310872 Pieza distanciadora derecha 1 2311409 Acticulacion eferica 1 2311670 Resorte de freno trasero 8 2311988 Retendor de eje 6 2312712 Tapones de chasis 4 2312836 Estoperas grandes 4 2312837 Anillos de Retencion
10 2312838 Estopera de barra 11 2313229 Llaves virgenes 5 2313284 Cerradura con llaves 4 2313544 Tornillo de suiches 2 2313716 Cruce delantero izquierdo completo 2 2313783 Swuiche
10 2313823 Tornillos de cilindros 10 2314017 Pulga de frenos 10 2314301 Topones de chasis 30 2325999 Tornillos de cabeza 5 2330145 Tornillo de cierre
10 2330310 Tornillo de ventilacion 1 2330391 T delantero 1 2331278 Disco trasero 1 2331289 Sensor trasero
24 2332469 Tornillos l 5MM 2 2332604 Anillo obturado 4 2332844 Estoperas 4 2332885 Retendedor de eje
69
Tabla 10. – Continuación.
Cantidad No. De Parte Descripción de parte
1 2333397 Juegos de tapas discos 1 2333485 Sensor de abs 1 2335061 Bomba de lapis 4 2335322 Base de resortes 1 2337268 Cilindro de cierre 8 2337268 Cerraduras 2 2337268 Juegos de cilindros 6 2337269 Cilindro de cierre 2 2338238 Disco traseros 4 2343022 Empacadura de cilindro 2 2343036 Rolig delantero de arranque 2 2343037 Rollin trasero 4 2343114 Tamiz de Aceite 1 2343175 Pasadores 2 2343243 Chavetas de discos 2 2343255 Chaveta de Discos 2 2343259 Estopera de eje de cambio 6 2343326 Tornillo de tapa valvula 1 2343442 Pasadores de Piston 3 2343451 Kit de bomba de agua 1 2343565 Filtro de Gasolina 1 2343576 Orrig grandes 2 2343582 Catalizador
10 2343583 Tapas protectoras de escapes izquierdo 7 2343584 Tapas protectoras de escapes
10 2343587 Aro de tapa de gasolina 64 2345232 Filtros de aire 12 2345275 Resorte de parales 10 2345383 Orrig pequeños 1 2345743 Caja de cerrojos 2 2345799 T de Barra
Cantidad No. De Parte Descripción de parte
4 2345802 Soporte de bolante 2 2345827 Anillo Obturador 1 2345853 Bomba de Freno Deelantero 1 2345868 Regulador 5 2346383 Tapas de maleteros 3 2346391 Soporte de guardaborro 1 2346396 Encadenado Delantero 1 2346397 Tablero 1 2346545 Bomba de gasolina 1 2346550 Ratificador de Corriente 1 2346552 Sensor de arranque 1 2346553 Interructor de Luz Trasera 2 2346558 Faro Delantero 1 2346566 Cochinotios de arraque
10 2346570 Bombinas de encendido 4 2346586 Balanceador 6 2346586 Conta peso 4 2346589 Cruces completos 6 2351511 Tornillo abellados 1 2352156 Puntas 1 2352170 Juego de reparacion de piston 2 2352171 Jusgo de reparacion de piston 4 2606433 Mica de cruce izquierdo
28 3225859 Filtro de gasolina 1 5260040 Tijera delantera 2 7393417 Relay 1 7554745 Puete de orquilla 2 7606335 Relay indicador de combustible 3 7650006 Anillo de ajustes 2 7650082 Palanca manipuladora 1 7650087 Placas de Soporte
70
Tabla 10. – Continuación.
Cantidad No. De Parte Descripción de parte
1 7650269 Base de caja de luces 1 7650281 Suiche de luces de Cambio Izquierdo 1 7650293 Base de Posa Pie Izquierdo 1 7650294 Base de Posa Pie Derecho 1 7650585 Eje trasero 2 7650685 Parales
10 7650942 Tapa de compresion 2 7650987 Protector de suiche 4 7650994 Leva de freno 2 7650999 Relay de intermitentes
10 7651036 Goma de carroceria grande 3 7651446 Protector de tapa cadenas 1 7651461 Manguera de Freno Delantero
10 7651630 Tornillo 120 7651954 Quita Ruido De Freno Trasero 1 7651954 Juegos de piezas adicionales
40 7651955 Quita Ruido De Freno Delantero 1 7652084 Anillos censor delantero 1 7652085 Anillos de Sensor 8 7652161 Tornillo de tapa lateral 2 7652560 Tapas laterale protectoras 5 7652611 Retrovisor izquierdo 5 7652612 Retrovisor derecho 1 7652671 Reja de soporte izquierdo 1 7652672 Reja de soporte derecho
15 7652847 Cargador de bateria 1 7652879 Piston 2 7652916 Anillos de seguridad 1 7652919 Palanca de Embrage 4 7652921 Puntas de tapas 1 7652932 Arrandela Distanciadora
Cantidad No. De Parte Descripción de parte
1 7652934 Protector de tapas de gasolina 4 7652940 Empacaduras de tapas delanteras 3 7652942 Pedal de cambio 4 7652944 Empacadura de compresion 4 7652946 Empacaduras de croches 1 7652980 Juego de aros 1 7652984 Juego completos de Anillos 3 7652984 Juego de lamina de forro 1 7653873 L 2 7654026 Rin Trasero 1 7654216 Suiche de Encendido
10 7654223 Tornillo de casquillo 1 7654244 Encendido
10 7654407 Tornillos Tirafon 1 7654444 Caja derecha 1 7654603 Interruptor de apllo lateral 2 7654604 Padal de cambio 1 7654609 Suisw de Arranque 7 7654616 Base de retroviso 3 7654663 Posa pie delantero izquierdo 1 7654664 Posa pie delantero
10 7654865 Abrasedera 2 7654915 Volantes 8 7654978 Caquillo de goma 4 7655284 Manguitos de gomas 5 7655396 Juego de cilindro de freno 5 7655480 Estopera 2 7655605 Protector de Moto 2 7655781 Tapones de barra delantero 1 7655838 Base del faro delantero 4 7656019 Estopera de eje de cambio
71
Tabla 10. – Continuación.
Cantidad No. De Parte Descripción de parte
1 7657001 Conductor de guaya de acelerador 5 7657148 Leva de freno 8 7657922 Chapa de repuesto
12 7657949 Tornillos 4mm 5 7658697 Recubrimiento 4 7658870 Manubrio de volantes 4 7659677 Guaya de acelerador pequeña 1 7660427 Bomba de frenos traseros 1 7661513 Tubo flexible de freno 2 7661648 Mirilla del nivel de aceite 2 7662056 Relay de 7 patas 1 7690380 Guaya de acelerador
50 8164924 Emblemas BMW grandes 6 8364594 Fusibles
70 9063575 Bombillos de cruces 20 9900019 Orring 20 9902167 Tornillo 6 9902186 Pasadore de Posa Pie 6 9902538 Tornillos L 5 9919143 Tapon de aceite
50 9931019 Arandela Plana 50 9931696 Arandela 4MM 5 9934319 Chapa de Sujecion
100 9936439 Arrandela Plana 5 9941417 Prisioneros 6 9945076 Pasadores 1 10289769 Camisa ( Parrilla ) 2 10448574 Soporte de Motor 3 10560031 Lotite 0 11758311 Filtro de Aceite 1 12582313 Estopera Trasera
Cantidad No. De Parte Descripción de parte
20 14606149 Puntas 1 15293665 Tijera inferior izquierda 2 22343581 Escape 7 27657147 Leva de croche 2 32313715 Cruce delantero derecho completo
66 1371134528 Filtro de aire 1 5215935040 Placa de Parachoque Trasero 1 S/N Kit Transmision Automatica 3 S/N Electroventilador 1 S/N Radiador P/ Crown Victoria 2 S/N ParachoquePlastico 2 S/N Guaya de Kilometraje 1 S/N Bendix de Motor de Arranque 4 S/N Pistones 4 S/N Bandas de Frenos 2 S/N Puerta Delantera Derecha
31 L24651 Filtro de Aceite de Motor 13 FA1032 Filtro de Aire 3 FG-986B Filtro de Gasolina 1 01-46100W Kit de Caja Hidromatica 1 04111-11026 Juego de Empacadura 1 04445-60070 Juego de Empacadura de Engranaje 2 10-82230 Filtro de Aceite de Motor 1 12372-15171 Soporte de Caja 1 15830A Kit de Carburador 1 16361 - 66020 Taraba 1 16470-15081 Tanque Recuperador de Agua de Radiador2 16533-15120 Soporte de Radiador 1 17700 - 62100 Envase Purificador de Aire C/ Filtro 1 1LZZ-6L266-AA Tensor 6 1W1Z-14B006-AA Sensor de Air Bag
72
Tabla 10. – Continuación.
Cantidad No. De Parte Descripción de parte
4 1W7Z14B321-AC Sensor Principal de Air Bag 2 1W7Z5440A26-AA Tapa Externa de Tanque 3 1W7Z-8260-AA Manguera 2 1W7Z-8286-BA Manguera 6 20-59629 Espejo de Retrovisor 1 20-86831 Espejo de Retrovisor Derecho 1 20-86832 Espejo Retrovisor Izquierdo
13 24x175 Tripas 3 2W7Z3A131-AA Terminales Largo
24 2W7Z3A139-AA Terminales Corto 1 44305-22040 Tapa de Reserva de Aceite de la Bomba 1 45-000EREH Kit de Caja Hidromatica 4 48061-35050 Bujes de tijerea inferior Derecho
15 48815-35100 Bujes de Barra Estabilizadora 1 4FU-W0045-00 Tacos de Freno Delantero Yamaha 5 4PK1090 Corres de Direccion 1 4W7Z-13008B Faro Delantero Derecho 1 4W7Z-19805-AA Motor Soplador 4 52075-12030 Retenedor Amortiguador de Choque Posterior 3 52076-12030 Retenedor Amortiguador de Choque 1 52115-12340 Soporte Amortiguador de Choque 2 52116-12270 Soporte Amortiguador de Choque 3 52156-12200 Soporte de Parachoque Trasero Izquierdo
10 52185-12130 Bracket 1 52553-12030 Rellenador Amortiguador de Choque Posterior 1 53111-35400 Parrilla 1 53202-35100 Soporte de Radiador 2 53215-12200 Soporte de Cirre de Capota 2 60-100/DG-508 Bobinas de Encendido 2 69901-12190 Rieles 2 6PK-2325 Correa Motor
Cantidad No. De Parte Descripción de parte
4 6PK-2540 Correa de Motor 8 7499C9E Bujias de Moto Yamaha Secca 1 75085-35020 Moldura de guardafango delantero derecho 1 75441-12650 Carracteristica de Puerta 1 78180-10470 Cojunto de Cable de Control de Acelerador 4 7822BPR6ES Bujias 1 81130-10810 Faro Delantero Derecho usado 1 81150-1A552 Conjunto de Faro Delantero Izquierdo 2 81481 - 12040 Sello Lateral Amortiguador Choque 2 81621-35340 Mica de Cruce Delantera Izquierda 1 85211 - 10091 Conjuntos de Brazo Limpiaparabrisa Derecho1 85220 - 12671 Cepillos Limpiaparabrisa 1 85221 - 10091 Brazo Limpiaparabrisa Izq 2 90080-91090-83 Correas de alternador 1 90311 - 38047 Sello Aceite ( Portadiferencial) 1 90-62287 Tacos de Freno Delantero Yamaha 4 90916-04902 Soporte de Radiador 2 91-62234 Tacos de Freno Delantero Yamaha 1 92PV-978-AA Insteructor 1 97JZ-17757-6A Valvula BY PASS 1 97JZ-9P04-A6 Manguera de Vacio 8 A1 Filtro De aceite partmo 4 A263GF Alternador de Crown 3 A52155-12210 Soporte Lateral 1 DC-354 Distribuidor 1 DD08626 Vidro de Puerta Delantera Derecha 2 DD08627 Vidrio de Puerta Delantera Izquierda 1 DD08-73326TYVVX Vidrio de Puerta Delantera Derecha 4 DD09292 Vidrio de Puerta Trasera Izquierdo 1 DD87-336TYVVX Vidrio de Puerta Delantero Izquierdo 1 E8TZ-4676-C Estopera piñon de ataque
73
Tabla 10. – Continuación.
Cantidad No. De Parte Descripción de parte
1 E9SZ-9278-A Swich de Puerta 2 ES3302RL Terminales Externos 4 F1TZ-1341-1F Socate de Dos Contactos 4 F2MY5424701-A Chapa Externa de Puerta Trasera derecha 3 F2MY54247-A Chapa Externa de Puerta Trasera Izquierda 1 F4MY-5426870-A Vidrio Lateral Puerta Trasera Derecha 1 F4MY-5426871-A Vidrio Lateral Puerta Trasera Izquierda 1 F57A-FBA19F2 Fan Cluch 2 F57Z-7827008-AC Mecanismo de Puerta Trasera Derecha 2 F57Z-7827009-AC Mecanismo de Puerta Trasera Izquierda 2 F57Z-7829038-AAB Platina de Guardafango Derecho 1 F57Z-7829039-AAB Platina de Guardafango Izquierdo 1 F5AZ-3105-A Acople de Direccion Izquierdo 2 F5AZ-3106-A Acople de Direccion Derecho 9 F5AZ-5421818-C Manillas Interna de Puerta Derecha. 5 F5AZ5421819-C Manillas Interna de Puerta Izquierda 4 F5TZ-17626-AAD Babero de Parachoque Delantero Inferior 2 F600 Reguladores de Voltaje 1 F60Z-VARMI Carcaza de Alternador 1 F67Z-7823208-AA Mecanismo Puerta Derecha 2 F67Z-7823209-AA Mecanismo Puerta Izquierda
15 F6AZ-6840-AA Empacadura Base de filtro 2 F6AZ-7A098-A Filtro de Aceite de Caja 1 F6DY-10316-A Regulador de Voltaje 1 F6DZ-6A666-D Valvula PCV 3 F6MZ-5425597-AAA Cepillo de vidrio de puerta 1 F77Z - 6051-AF Empacadura de Camara 2 F77Z-4A489-AA Amortiguadores del Diferencial 1 F77Z-6268-BC Cadena de Tiempo 8 F77Z-6571-AB Gomas de Valvulas 1 F77Z-6B209-AA Tensor de Correa
Cantidad No. De Parte Descripción de parte
1 F77Z-6K397-BC Gia Tensora 1 F77Z-6M264-BA Pinon de Cigueñal Grande 2 F77Z-7821818 Manilla interna derecha 1 F77Z-7821819 Manilla Interna Izquierda 1 F77Z-7825596-AAA Cepillo de vidrio de puerta trasera derecha 1 F77Z-7825597-AAA Cepillo de vidrio de puerta trasera izquierda2 F77Z-8600-DB Taraba de Motor 4 F7AZ-7F251-AA Sensor de Caja 1 F7TZ-8594-A Toma de Agua 4 F7Z-3069-AA Buje de Meseta 2 F85Z-3A674-ABRM Bomba de Direccion Hidraulica 1 F87Z-14529-CA Swich 1 F87Z-16005-EA Guardafango Delantero Derecho 2 F87Z-16006-EA Guardafango Delantero Izquierdo 1 F87Z-17757-GA Parachoque Delantero 3 F87Z-2005-AA Hidrobak 6 F87Z-7822404-BAL Manilla Externa De Puerta 2 F87Z-784214-AA Gancho de ventana trasera 1 F87Z-8190-CA Frontal 3 F87Z-8200-NAD Camisa 2 F887Z-8286-HA Manguera de radiador 4 F8AZ16A602-AA Refuerzo de Bisagra 3 F8AZ-1754-AA Base de Barra de Inpacto Derecha 4 F8AZ-17755-AA Base de Barra de Inpacto Izquierdo 4 f8az-17906 Biga de Parachoque Delantero 2 F8AZ-17A385-AA Porta Placa Delantero 6 F8AZ-17D995-AA Soporte Izq. Lateral de Parachoque
10 F8AZ-17D995-AB Soporte Der. Lateral de Parachoque 10 F8AZ-3590-AA Brazo Pigman 5 F8AZ-5420878-BAA Platina Media Puerta derecha izquierda 3 F8AZ-5424630-AA Puerta Trasera Derecha
74
Tabla 10. – Continuación.
Cantidad No. De Parte Descripción de parte
2 F8AZ-5424631-AA Puerta Trasera Izquierda 6 F8AZ-5425556-BAA Platina Media Puerta trasera izquierda 1 F8AZ-5427886-AA Guardafango Interno Trasero Derecho 1 F8AZ-5427887-AA Guardafango Interno Trasero Izquierdo 7 F8AZ-5K484-AA Brazos Secundarios de Barra Estab. 5 F8AZ-8326-AA Plasticos 0 F8AZ-8A080-AB Tanque Recuperador de Agua 4 F8VZ-16E128-AA Brazo Soporte Guardafango Izquierdo
17 F8VZ-17787-AA Base de Barra de Inpacto Izquierdo 19 F8VZ-17788-AA Base de Barra de Inpacto Derecha 1 F8Z7-2B373 Vavula del ABS 7 F91032 Filtro de Aire
11 FCZC-1190-AA Estopera de Disco de Freno Delantero 9 FJ-1040-SM Pastillas de Frenos Traseros R-1150 9 FJ-1070-M Pastillas de Frenos Traseros F 650 GS
10 FJ-1480M Pastillas de Frenos Delanteros F 650GS 1 FL-820S Filtro de Aceite 1 FL-A1 Filtro de Aceite 5 K060910 Correas de Motor 8 K-8259 Muñon de Tijera Inferior
12 K8704 Bujes Superiores 14 K8705 Bujes de Tijera Inferior 31 L10111 Filtros de Aceite Puroleitor 1 L30001 Filtro de aceite 2 LK2604 Pastillas de Freno Trasero 2 LK4004 Pastillas de Freno Delantero
11 MK 6479 Filtro de Aire Millan 13 MK-2676 Filtro de Aire Millard 2 P06017B Amortiguadores Delanteros
14 PDG508M Tacos de Freno Traseros 10 PDG699M Tacos de Freno Delantero
Cantidad No. De Parte Descripción de parte
1 PGD652M Tacos Para Frenos Delanteros 6 PGD674A Tacos de Freno Trasero
18 PGD-748M Tacos de Freno Delantero 36 PL3387 Filtro de Aceite 12 PL-372 Filtro de Aceite 1 RF10FR602 Diodera de Alternador 9 RT-1178 Termostato
20 S/N Orrig de cilindros 2 S/N Rines traseros 2 S/N Rines delanteros 1 S/N Tubo de escape 2 S/N Bateria, para RT 1150 4 S/N Barras Delantera 4 S/N Guaya de Acelerador 1 S/N Extension de Guardabarro Delantero 7 S/N Parabrisas Delantero de Color Gris 4 S/N Empadura 1 S/N Base de Cruces 5 S/N Protector de guardabarro trasero 6 S/N Cojinetes 8 S/N Baterias 3 S/N Filtro de Aire de Chevrolet 1 S/N Brazo de Anclaje de Chevrolet 1 S/S Terminal de Direccion
12 WIX-51372 Filtro de Aceite 1 WR-5784 Cable de Bujia 8 XL2Z-6M273-AA Patin de Cadena 1 XL3Z-7G383-AB Selenoide 7 XW7Z13008-AB Faro Delantero Izquierdo 1 XW7Z-15A201-AB Micas de Cruce 4 XW7Z-18125-BB Amortiguadores Traseros
75
76
Tabla 10. – Continuación.
Cantidad No. De Parte Descripción de parte
1 XW7Z-216700-AA Cerradura de Capota 3 XW7Z-5422404-AAA Manillas externas 1 XW7Z-5422405-AAA Manillas Internas 3 XW7Z-5426604-AA Manilla Externa De Puerta delantera izquierda 3 XW7Z-5426605-AA Manilla Externa de puerta delantera derecha 2 XW7Z-9439-AA Empacadura de Camarin(maniford) 1 YW7Z-13405-AA Stop Trasero Derecho 1 YW7Z-13405-AA Stop Trasero Izquierdo 1 YW7Z-5420125-AA Puerta Delantera Izquierda 3 YW7Z5420200-AA Chapa Externa de Puerta Delantera Derecha 1 YW7Z5420201-BA Chapa Externa de Puerta Delantera Izquierda 2 YW7Z-8327-AA Plastico protector de radiador 4 S/N Brazo Soporte Guardafango Derecho 7 S/N Vidrio de Puerta Trasera Derecha 1 S/N Maleta de Crown 2 S/N Terminales Externo 1 S/N Disco de Freno rin 16 1 S/N Estopera de Piñon de Ataque 1 S/N Relleno de Parachoque Delantero 1 S/N Parachoque Delantero 1 S/N Plastico Superior de Parachoque 1 S/N Muñones Inferior derecho 1 S/N Muñon superior izquierdo 2 S/N Amortiguador Izquierdo 2 S/N Cruces Completo
77
4.2.2. - Código para locaciones o ubicaciones
Para la identificación de los diferentes sitios, ubicaciones y locaciones que utiliza el
sistema para registrar los lugares de establecimiento de equipos, ubicación de oficinas y sitios
donde se encuentran asignados vehículos automotores se seleccionó un código de siete
caracteres alfanuméricos.
Formato del código: XXYYZZZ , donde
XX = Ubicación de Edificación.
YY = Área de trabajo.
ZZZ = Oficina o ubicación específica.
4.2.3. - Código para categorías de equipos
Para la identificación de las categorías de equipos se seleccionó un código de 6 cifras
numéricas:
Formato del código: XXX - YYY, donde
XXX = Categoría principal de equipo.
YYY = Subcategoría.
4.2.4. - Código para departamentos
Para la identificación de los diferentes departamentos de las instituciones policiales se
seleccionó un código de tres cifras numéricas
Formato del código: XXX, donde
XXX = Número de departamento.
4.2.5. - Código para estatus de equipos
El estatus de equipo es una variable que indica en qué condición se encuentra el equipo o
activo de una institución policial. El código asignado es un número de una cifra ya que existen
menos de diez estados en los que puede estar un equipo en el sistema.
78
Formato del código: X, donde
X = Número (indica el estatus).
Se diseñó el informe final de la codificación propuesta indicando los campos de
datos importantes para las instituciones policiales y que a su vez serán
contemplados en el sistema automatizado. A continuación se detallan los códigos
establecidos.
Códigos para equipos y maquinarias:
XXX = Institución
ZZZ = Número de Equipo
Formato: XXXYYYZZZ YYY = Región
Policía Regional 059
Policía Municipal de Maracaibo 058
Policía Municipal de San Franscisco 060
Municipio Almirante Padilla 001
Municipio Baralt 002
Municipio Cabimas 003
Municipio Catatumbo 004
Municipio Colón 005
Municipio Francisco Javier Pulgar 006
Municipio Jesús Enrique Losada 007
Municipio Jesús María Semprún 008
Municipio La Cañada de Urdaneta 009
Municipio Lagunillas 010
Municipio Machiques de Perijá 011
Municipio Mara 012
Municipio Maracaibo 013
Municipio Miranda 014
Municipio Páez 015
Municipio Rosario de Perijá 016
Municipio San Francisco 017
Municipio Santa Rita 018
Municipio Simón Bolívar 019
Municipio Sucre 020
Municipio Valmore Rodríguez 021
Desde 001 hasta 999
Numeración de Equipos y Maquinarias
79
Códigos para Locaciones o Ubicaciones:
XX = Edificación
YY = Area de Trabajo
ZZ = Ubicación específica
Formato: XXYYZZ
Sede Central Policía Municipal de Maracaibo 01
Sede Este Policía Municipal de Maracaibo 02
Sede Oeste Policía Municipal de Maracaibo 03
Comandancia General Policía Regional 04
Sede DIP de Policía Regional 05
DP Almirante Padilla 06
DP Baralt 07
DP Cabimas 08
DP Catatumbo 09
DP Colón 10
DP Francisco Javier Pulgar 11
DP Jesús Enrique Losada 12
DP Jesús María Semprún 13
DP La Cañada de Urdaneta 14
DP Lagunillas 15
DP Machiques de Perijá 16
DP Mara 17
DP Maracaibo 18
DP Miranda 19
DP Páez 20
DP Rosario de Perijá 21
DP San Francisco 22
DP Santa Rita 23
DP Simón Bolívar 24
DP Sucre 25
DP Valmore Rodríguez 26
Comando Principal Policía Mun. San Francisco 27
Estacionamiento Policía Mun.de San Francisco 28
Administración AD
Informática IN
Comunicaciones CO
Operaciones OP
Servicios Generales SG
Taller TA
Traslado TR
Ubicación específica dentro de cada edificación desde 01 hasta 99
80
Códigos para Categoría de equipos y maquinarias.
XXX= Categoría principal
YYY = Subcategoría
Formato: XXX-YYY
Aire Acondicionado Split 100 - 001
Aire Acondicionado Compacto 100 - 002
Aire Acondicionado de Ventana 100 - 003
Vehículo normal sedan 200 - 001
Vehículo rústico 200 - 002
Vehículo de Transporte 200 - 003
Códigos para Estatus de equipos y maquinarias.
X = Número de Estatus
Formato: X
Activo 1 Inactivo 2 Desincorporado 3
Extraviado 4
En Almacen 5
Códigos para Departamentos
XXX = Número Departamento
Formato: XXX
Administración 001 Operaciones 002 Comunicaciones 003
Informatica 004
Servicios Generales 005 Taller 006
Deposito 007
4.3. Evaluación de programa de mantenimiento existente
4.3.1. Programas de mantenimiento existentes
Se realizaron reuniones con el personal encargado de las labores de mantenimiento de
las instituciones policiales para conocer si existen programas de mantenimiento en cada una de
ellas y de existir programas de mantenimiento obtener la información de las actividades que
comprenden éstos. Se muestra a continuación un resúmen de los datos obtenidos sobre los
programas de mantenimiento de las instituciones policiales:
Programa de Mantenimiento para Vehículo Impala:
KMS TIEMPO COMPONENTE TIPO MANT. DESCRIPCIÓN DEL MANTENIMIENTO
5.000 1ER CAMBIO PREVENTIVO CAMBIO DE ACEITE DEL MOTOR
12.500 2do CAMBIO PREVENTIVO CAMBIO DE ACEITE DEL MOTOR
PREVENTIVO CAMBIO DE ACEITE DEL MOTOR 12.500
CORRECTIVO REEMPLACE FILTRO DE ACEITE DEL MOTOR
25.000 PREVENTIVO INSPECCIONAR EL FILTRO DE AIRE
166.000 PREVENTIVO INSPECCIÓN Y REEMPLAZO DE BUJÍAS
PREVENTIVO CHEQUEAR SISTEMA DE ENFRIAMIENTO 5 AÑOS
MOTOR
PREVENTIVO CAMBIO DE REFRIGERANTE
CORRECTIVO
CAMBIO DE ACEITE DE LA TRANSMISIÓN AUTOMÁTICA
83.000
TRANSMISIÓN
CORRECTIVO REEMPLAZO DEL FILTRO DE LA TRANSMISIÓN AUTOMÁTICA
5.000 1ERA ROTACION PREVENTIVO ROTACIÓN DE NEUMÁTICOS
12.500 2DA ROTACION PREVENTIVO ROTACIÓN DE NEUMÁTICOS
PREVENTIVO REVISAR CILINDROS DE PUERTA ANUAL
PREVENTIVO LUBRICACIÓN EN LAS PUERTAS
PREVENTIVO REVISAR LIMPIAPARABRISA
PREVENTIVO CHEQUEO AUTOMÁTICO DE EJES
PREVENTIVO INSPECCION SENSOR DE LIBERACIÓN DE MALETA PORTA EQUIPAJE
SEMESTRAL
CARROCERÍA
PREVENTIVO REVISAR CINTURONES DE SEGURIDAD
81
Programa de mantenimiento para vehículo Crown Victoria
KMS TIEMPO COMPONENTE TIPO MANT. DESCRIPCIÓN DEL MANTENIMIENTO DIARIO PREVENTIVO NIVEL DE ACEITE
1 MES PREVENTIVO NIVEL DEL REFRIGERANTE DEL MOTOR
3 MESES PREVENTIVO SEÑALES DE FUGA DE REFRIGERANTE EN EL RADIADOR Y OTROS
5.000
CORRECTIVO REEMPLACE EL FILTRO DE AIRE
CORRECTIVO CAMBIAR ACEITE DEL MOTOR
PREVENTIVO INSPECCIONE EL SISTEMA DE ENFRIAMIENTO Y MANGUERAS
8.000
CORRECTIVO REEMPLAZAR FILTRO DE ACEITE
25.000 CORRECTIVO REEMPLACE EL FILTRO DE COMBUSTIBLE
75.000 CORRECTIVO CAMBIE EL REFRIGERANTE DEL MOTOR
CORRECTIVO REEMPLACE LAS BUJÍA 100.000
MOTOR
CORRECTIVO REEMPLACE FILTRO DE AIRE
PREVENTIVO NIVEL DEL FLUIDO DE LOS FRENOS 3 MESES
CORRECTIVO TACOS DELANTEROS DE LOS FRENOS 5.000
PREVENTIVO FRENO DE ESTACIONAMIENTO
PREVENTIVO INSPECCIONE EL SISTEMA: DISCOS, TACOS, BANDAS, LÍNEAS, MANGUERAS Y FRENO DE MANO 6 MESES
FRENOS
PREVENTIVO INSPECCIONE LOS TACOS TRASEROS DE LOS FRENOS
8.000
3 MESES PREVENTIVO INSPECCIONAR NIVEL DEL FLUIDO DE LA DIRECCIÓN HIDRÁULICA
5.000
8.000 DIRECCIÓN
PREVENTIVO INSPECCIONE EL SISTEMA DE DIRECCIÓN
160.000 EJE CORRECTIVO REEMPLACE LUBRICANTE EN EL EJE TRASERO CADA VEZ QUE EL EJE SE SUMERJA EN AGUA
SUSPENSIÓN PREVENTIVO INSPECCIONE EL SISTEMA DE SUSPENSIÓN 8.000
1 MES PREVENTIVO REVISIÓN DEL FLUIDO DE LA TRANSMISIÓN AUTOMÁTICA
5.000
8.000 PREVENTIVO INSPECCIONE EL NIVEL DEL FLUÍDO DE LA TRANSMISIÓN AUTOMÁTICA
25.000 CORRECTIVO CAMBIE EL FLUÍDO DE LA TRANSMISIÓN AUTOMÁTICA.
CORRECTIVO REEMPLACE GRASA EN LOS SELLOS Y AJUSTE LAS ROLINERAS
50.000 CORRECTIVO
CAMBIE EL FLUIDO DE LA TRANSMISIÓN AUTOMÁTICA
100.000
TRANSMISIÓN
CORRECTIVO CAMBIE EL FLUIDO DE LA CAJA
8.000 TREN
DELANTERO CORRECTIVO LUBRICAR CON GRASA ZERK
5.000 3 MESES PREVENTIVO CABLES, BORNES Y CONEXIONES DE LA BATERÍA 8.000
SISTEMA ELÉCTRICO PREVENTIVO CHEQUEE NIVEL DE ELECTROLITO
PREVENTIVO FLUIDO LIMPIAPARABRISA
PREVENTIVO DESGASTE Y/O PRESIÓN DE CAUCHOS 5000 DIARIO
PREVENTIVO FUNCIONES DE LAS LUCES INTERIORES Y EXTERIORES
8.000 PREVENTIVO ROTAR LOS CAUCHOS
25.000
CARROCERÍA
PREVENTIVO INSPECCIONE EL SISTEMA DE ESCAPE
20.000 AIRE ACONDIC. CORRECTIVO VERIFICAR GAS REFRIGERANTE DEL AIRE ACOND./ EVAPORADOR
82
Programa de mantenimiento para vehículo Rústico (Tipo camioneta):
Pro
KMS TIEMPO COMPONENTE TIPO MANT. DESCRIPCIÓN DEL MANTENIMIENTO
PREVENTIVO REEMPLACE ACEITE DEL MOTOR 10.000 12 MESES
CORRECTIVO REEMPLACE FILTRO DE ACEITE DEL MOTOR
24 MESES PREVENTIVO REEMPLACE REFRIGERANTE DEL MOTOR 40.000
48 MESES PREVENTIVO REEMPLACE BUJÍAS
MOTOR
CORRECTIVO REEMPLACE CORREA DE DISTRIBUCIÓN 150.000
12 MESES PREVENTIVOINSPECCIONE ACEITE DE ENGRANAJES DEL
DIFERENCIAL 40.000
48 MESES
DIFERENCIAL
PREVENTIVOREEMPLACE ACEITE DE ENGRANAJES DEL
DIFERENCIAL 80.000
12 MESES DIRECCIÓN PREVENTIVOINSPECCIONE VOLANTE DE DIR., VARILLAJE Y
ACEITE DE CAJA ENGRANAJES DE LA DIRECCIÓN 20.000
10.000 6 MESES SERVODIRECCIÓN PREVENTIVO INSPECCIONAR LÍQUIDO DE LA SERVODIRECCIÓN
12 MESES PREVENTIVOINSPECCIONE TAPA DEL DEPÓSITO DE
COMBUSTIBLE, LÍNEAS DE COMBUSTIBLE Y
CONEXIONES
20.000
SISTEMA DE
COMBUSTIBLE
CORRECTIVO REEMPLAZAR FILTRO DE COMBUSTIBLE 80.000
5.000 3 MESES PREVENTIVO INSPECCIONAR PASTILLAS Y DISCOS DE LOS FRENOS
PREVENTIVOINSPECCIONAR PEDAL DE FRENO Y FRENO DE
MANO 10.000 6 MESES
PREVENTIVO INSPECCIONE LÍQUIDO DE FRENOS
PREVENTIVOINSPECCIONAR FORROS Y TAMBORES DE LOS
FRENOS 20.000 12 MESES
PREVENTIVOINSPECCIONE TUBOS Y MANGUERAS DE LAS LÍNEAS
DEL FRENO
24 MESES
SISTEMA DE
FRENOS
CORRECTIVO REEMPLACE LÍQUIDO DE LOS FRENOS 40.000
12 MESES SUSPENSIÓN PREVENTIVOINSPECCIONE SUSPENSIONES DELANTERAS Y
TRASERAS 20.000
20.000 24 MESES PREVENTIVO INSPECCIONAR CORREA DE LA TRANSMISIÓN
24 MESES PREVENTIVOINSPECCIONE LÍQUIDO TRANSMISIÓN
AUTOMÁTICA Y ACEITE DE LA TRANSFERENCIA 40.000
48 MESES
TRANSMISIÓN
CORRECTIVOREEMPLACE LÍQUIDO TRANSMISIÓN AUTOMÁTICA
Y ACEITE DE LA TRANSFERENCIA 80.000
6 MESES TREN
DELANTERO PREVENTIVO
JUNTAS DE BOLA Y CUBIERTAS CONTRA EL POLVO,
MUÑONES 10.000
12 MESES SISTEMA
ELÉCTRICO PREVENTIVO INSPECCIONE BATERÍA Y BORNES 10.000
PREVENTIVOINSPECCIONAR DESGASTE EN NEUMÁTICOS,
PRESIÓN Y ROTAR CAUCHOS 10.000 6 MESES
PREVENTIVOINSPECCIONAR LUCES, BOCINAS, LIMPIADORES Y
LAVADORES
12 MESES
CARROCERÍA
PREVENTIVO INSPECCIONE TUBOS DE ESCAPE Y MONTURAS 20.000
20.000 12 MESES AIRE ACOND. PREVENTIVO INSPECCIONAR EL GAS REFRIGERANTE
83
Programa de mantenimiento para aires acondicionados:
TIEMPO COMPONENTE TIPO MANT. DESCRIPCIÓN DE MANTENIMIENTO
EVAPORADOR
CONDENSADOR PREVENTIVO LAVADO
INSPECCIÓN DE CORREAS MOTOR PREVENTIVO
ENGRASE
COMPRESOR MEDICIÓN DE PRESIÓN DE GAS
2 MESES
SISTEMA ELECTRICO PREVENTIVO
INSPECCIÓN DE CABLES Y CONEXIONES
1 AÑO CAMBIO DE CORREA
18 MESES MOTOR CORRECTIVO
CAMBO DE RODAMIENTO
De la evaluación de estos programas de mantenimiento encontrados en las instituciones
policiales se pueden concluir los siguientes aspectos generales importantes:
Existen actividades de mantenimiento vehicular que se ejecutan en base a la
medición de un kilometraje determinado o una fecha determinada, lo que representa
un error ya que las actividades de mantenimiento que se rígen por la medición de
kilometraje no pueden ser ejecutadas en base a la variable tiempo ya que esta
variable no da información acerca del uso del vehículo.
No existen formatos mediante los cuales el mantenimiento ejecutado a los equipos o
maquinarias se registre, de manera de formar un historial de mantenimiento, sino
que se llena un formato donde, en el caso de los vehículos, se coloca el kilometraje o
fecha de ejecución del próximo mantenimiento y cuando éste es ejecutado se llena
un nuevo formato y se desecha el anterior. En el caso de los equipos de aire
acondicionado y equipos de telecomunicaciones no existen formatos.
Los equipos de aire acondicionado son considerados todos del mismo tipo lo cual es
una imprecisión ya que existen varios tipos de éstos y sus lugares y condiciones de
uso son diferentes.
No existe un conocimiento claro y definido de lo que es mantenimiento preventivo y
un mantenimiento correctivo. Algunas actividades son consideradas como
mantenimiento correctivo erróneamente ya que éstas no son producto de una falla.
84
85
No se tiene ningún programa de mantenimiento para los equipos de
telecomunicaciones que, a pesar de que son considerados equipos críticos y que
bajo una condición de falla puede detener las operaciones de los organismos
policiales, no se tiene personal de mantenimiento para estos equipos.
No se llevan índices de control que permitan medir, desde varios puntos de vista, la
efectividad de la gestión del mantenimiento.
Partiendo de estos puntos, mencionados anteriormente, se planteó la necesidad de
corregir y mejorar los programas de mantenimiento existentes en las instituciones policiales y
determinar que parámetros fueron tomados en cuenta en los programas de mantenimiento
actuales y que parámetros adicionales deben ser incluidos. En el siguiente punto se tratan los
parámetros de los programas de mantenimiento encontrados.
4.3.2. Parámetros de los programas de mantenimiento existentes
En las instituciones policiales, donde se desarrolló esta investigación, que tenían estos
programas de mantenimiento, se encontró que el personal encargado de la planificación de
estas actividades no tenían ningun tipo de estudios especializados en mantenimiento lo que
confirma que para la elaboración de los programas se tomó en cuenta sólo la experiencia del
personal técnico que ejecuta las labores. No fué consultado ningun tipo de literatura como
manuales de mantenimiento o recomendaciones de los fabricantes. En uno de los organismos
policiales se encontró que los mantenimientos de los equipos de aire acondicionado eran
ejecutados por una empresa especialista subcontratada. Posteriormente, para reducir costos,
no fué renovado su contrato de mantenimiento y como consecuencia, aumentaron las fallas en
este tipo de equipos producto de un mantenimiento deficiente. Se puede concluir entonces, que
los programas de mantenimento encontrados en estas instituciones fueron elaborados
empíricamente.
Dada esta situación, común en las instituciones policiales, se elaborará, en el siguiente
punto, nuevos programas de mantenimiento en los que se tomará en cuenta no solamente la
experiencia del personal técnico, que es un variable válida, sino también las recomendaciones
de los fabricantes, documentación de mantenimiento, seguridad, régimen de uso y prácticas
orientadas a conseguir características del mantenimiento clase mundial.
4.4. programa de mantenimiento preventivo para equipos y maquinarias basados en
historiales, recomendaciones del fabricante y siguiendo los lineamientos caracteristicos
del mantenimiento clase mundial
4.4.1. Investigación documental
Se realizó una investigación documental para conocer cuales son las recomendaciones
de los fabricantes de los equipos y maquinarias referentes al mantenimiento de los mismos asi
como también las características y conceptos que se manejan en el mantenimiento clase
mundial. Se consultaron las empresas consecionarias de vehículos y se obtuvo alguna
información sobre el mantenimiento recomendado por los fabricantes. En el caso de los equipos
de aire acondicionado se obtuvo información de las empresas representantes de los fabricantes
y de documentación técnica general sobre este tipo de equipos. En cuanto a la filosofía del
mantenimiento clase mundial a continuación se describen los aspectos más importantes de esta
metodología.
El mantenimiento clase mundial es el conjunto de las mejores prácticas operacionales y
de mantenimiento que reune elementos de distintos enfoques organizacionales los cuales
aplicados en forma coherente optimizan las operaciones de una empresa incluyendo la
administración del mantenimiento. Estas prácticas buscan el mejoramiento contínuo en las
operaciones de mantenimiento lo que implica mejoramiento en las actividades y en las
tecnologías de mantenimiento.; en otras palabras, la empresa debe estar actualizada en cuanto
a las estratégias y en la tecnología nueva en materia de mantenimiento. Reune características
de varios enfoques de mantenimiento como el mantenimiento basado en confiabilidad,
mantenimiento productivo total y la filosofía japonesa kaisen. Los principales objetivos
generales del mantenimiento mundial son los siguientes:
Lograr excelencia en los procesos de mantenimiento.
Obtener calidad y rentabilidad de los productos.
Motivar y satisfacer las necesidades del personal y de los clientes.
Lograr las metas de mantenimiento.
Maximizar disponibilidad y confiabilidad.
Maximizar la seguridad personal.
Maximizar la protección ambiental.
Mejorar la flexibilidad en la producción.
Disminuir los costos de producción
86
Mejorar la seguridad y el impacto al medio ambiente en el sistema.
Aumentar la conservación y transferencia de conocimientos.
4.4.2. – Objetivos del mantenimiento clase mundial a considerar
En las instituciones policiales se puede perseguir el logro de los objetivos generales del
mantenimiento clase mundial, exceptuando los que se refieren a la producción, en el sentido
estricto de la palabra, ya que los organismos policiales no son empresas que generan
productos, pero si se toma en cuenta que la función principal de los mismos es el servicio hacia
la comunidad se puede considerar el servicio como el producto final de estas instituciones. De
esta forma se pueden establecer los objetivos basados en el mantenimiento clase mundial que
serán considerados para la elaboración de los programas de mantenimiento preventivo:
Optimizar los procesos de mantenimiento, incluyendo actividades, inventario,
tiempos de ejecución, requisiciones, control, seguridad y calidad.
Lograr las metas del mantenimiento.
Motivar y satisfacer las necesidades del personal.
Maximizar la disponibilidad y confiabilidad de los equipos y maquinarias.
Maximizar la seguridad personal.
Maximizar la protección ambiental.
Disminuir los costos de mantenimiento.
Entrenamiento continuo y actualizado del personal.
Uso fundamental de la tecnología de la información como integrador de los
procesos.
4.4.3. – Elaboración del Programa de Mantenimiento
A objeto de tomar en cuenta los objetivos propuestos para la elaboración del programa de
mantenimiento para los equipos y maquinarias de las instituciones policiales, se precisaron
algunas actividades generales que se deben cumplir para todas las labores de mantenimiento
específicas para cada tipo de equipo o maquinaria. Estas actividades generales tienen que ver
con la seguridad del personal, limpieza y procedimientos a seguir y las mismas se describen a
continuación:
Limpieza del lugar de trabajo.
Verificar condiciones seguras de trabajo.
87
88
Utilizar equipo de protección personal adecuado a las actividades a ejecutar.
Obtener los formatos a llenar para el tipo de labor a realizar.
Solicitar los suministros que se utilizarán durante las actividades de mantenimiento.
Notificar al supervisor el inicio de las actividades.
Utilizar las herramientas adecuadas para las actividades a realizar.
Informar al supervisor de cualquier situación anormal que pueda presentarse.
Dejar limpio el sitio de trabajo al finalizar las actividades.
Llenar los formatos y entregarlos al supervisor.
Colocar los desechos en el sitio establecido por la gerencia.
Estas actividades se deben cumplir siempre que se vaya a ejecutar el mantenimiento
preventivo o reparación de cualquier equipo o maquinaria.
Seguidamente se detallan los programas de mantenimiento preventivo elaborados para los
equipos y maquinarias clasificadas como críticas por el personal de mantenimiento de las
instituciones policiales ya que de estos equipos depende el funcionamiento contínuo de estas
instituciones, que como se indicó anteriormente, laboran las 24 horas del día durante todo el
año lo que implica un uso constante de tales equipos. Los equipos clasificados como críticos
para estos organismos son los equipos de telecomunicaciones y los aires acondicionados,
mientras que las maquinarias clasificadas como críticas son los vehículos de operaciones.
Conociendo esto se elaboraron los programas de mantenimiento preventivo, utilizando una hoja
de cálculo Excel que permite introducir valores iniciales para obtener los programas de
mantenimiento específicos para cada equipo o maquinaria. En el caso de los equipos de
comunicaciones o aires acondicionados se introduce la fecha inicial y para el caso de los
vehículos de operaciones se introduce el kilometraje inicial de cada unidad obteniendose así el
progamas de mantenimiento individuales. Seguidamente se muestran estos programas:
Tabla 11. – Programa de mantenimiento para vehiculo modelo Crown Victoria.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
CROWN VICTORIA
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
4800
8000
9600
1440
0
1600
0
2400
0
2880
0
3200
0
3360
0
4000
0
4320
0
4800
0
Aceite de Motor Cambiar √ √ √ √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √Terminales y muñones Inspección √ √ √ √ √ √ √ √Sistema de Frenos Inspección y limpieza √ √ √ √ √ √Rines + Cauchos Rotar √ √ √ √ √ √Filtro de Aire Reemplazar √ √Líquido de Transmisión automática Medir nivel/completar √ √Líquido de Transmisión automática CambiarMangueras y tuberías de sistema de frenos Inspección y ajuste √ √Sistema de enfriamiento Inspección √ √Filtro de gasolina Reemplazar √ √Sistema de Dirección y Suspensión Inspección y lubricación √ √Sistema de escape Inspección √Rolineras de ruedas Inspección √Refrigerante ReemplazarBujías ReemplazarCardán y eje de Transmisión Inspección y LubricaciónCorrea del Motor Inspección / reemplazarVálvula PCV ReemplazarLíquido de diferencial trasero Cambiar
89
Tabla 11 – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
CROWN VICTORIA
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
5280
0
5600
0
5760
0
6240
0
6400
0
6720
0
7200
0
7680
0
8000
0
8160
0
8640
0
8800
0
Aceite de Motor Cambiar √ √ √ √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √Terminales y muñones Inspección √ √ √ √ √ √ √ √Sistema de Frenos Inspección y limpieza √ √ √ √ √Rines + Cauchos Rotar √ √ √ √ √Filtro de Aire Reemplazar √Líquido de Transmisión automática Medir nivel/completarLíquido de Transmisión automática CambiarMangueras y tuberías de sistema de frenos Inspección y ajuste √Sistema de enfriamiento Inspección √Filtro de gasolina Reemplazar √Sistema de Dirección y Suspensión Inspección y lubricación √Sistema de escape InspecciónRolineras de ruedas InspecciónRefrigerante Reemplazar √Bujías ReemplazarCardán y eje de Transmisión Inspección y LubricaciónCorrea del Motor Inspección / reemplazarVálvula PCV ReemplazarLíquido de diferencial trasero Cambiar
90
Tabla 11 – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
CROWN VICTORIA
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
9120
0
9600
0
1008
00
1040
00
1056
00
1104
00
1120
00
1152
00
1200
00
1248
00
1280
00
1296
00
Aceite de Motor Cambiar √ √ √ √ √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √ √Terminales y muñones Inspección √ √ √ √ √ √ √ √ √Sistema de Frenos Inspección y limpieza √ √ √ √ √Rines + Cauchos Rotar √ √ √ √ √Filtro de Aire Reemplazar √ √Líquido de Transmisión automática Medir nivel/completar √Líquido de Transmisión automática CambiarMangueras y tuberías de sistema de frenos Inspección y ajuste √Sistema de enfriamiento Inspección √Filtro de gasolina Reemplazar √ √Sistema de Dirección y Suspensión Inspección y lubricación √ √Sistema de escape Inspección √Rolineras de ruedas Inspección √Refrigerante Reemplazar √Bujías Reemplazar √Cardán y eje de Transmisión Inspección y Lubricación √Correa del Motor Inspección / reemplazarVálvula PCV ReemplazarLíquido de diferencial trasero Cambiar
91
Tabla 11 – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
CROWN VICTORIA
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
1344
00
1360
00
1392
00
1440
00
1488
00
1520
00
1536
00
1584
00
1600
00
1632
00
1680
00
1728
00
Aceite de Motor Cambiar √ √ √ √ √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √ √Terminales y muñones Inspección √ √ √ √ √ √ √ √ √Sistema de Frenos Inspección y limpieza √ √ √ √ √Rines + Cauchos Rotar √ √ √ √ √Filtro de Aire Reemplazar √ √Líquido de Transmisión automática Medir nivel/completarLíquido de Transmisión automática Cambiar √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √Sistema de enfriamiento Inspección √ √Filtro de gasolina Reemplazar √ √Sistema de Dirección y Suspensión Inspección y lubricación √ √Sistema de escape Inspección √Rolineras de ruedas Inspección √Refrigerante Reemplazar √Bujías ReemplazarCardán y eje de Transmisión Inspección y LubricaciónCorrea del Motor Inspección / reemplazar √Válvula PCV Reemplazar √Líquido de diferencial trasero Cambiar
92
Tabla 11 – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
CROWN VICTORIA
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
1760
00
1776
00
1824
00
1840
00
1872
00
1920
00
1968
00
2000
00
2016
00
2064
00
2080
00
2112
00
Aceite de Motor Cambiar √ √ √ √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √Terminales y muñones Inspección √ √ √ √ √ √ √ √Sistema de Frenos Inspección y limpieza √ √ √ √ √Rines + Cauchos Rotar √ √ √ √ √Filtro de Aire Reemplazar √Líquido de Transmisión automática Medir nivel/completarLíquido de Transmisión automática Cambiar √Mangueras y tuberías de sistema de frenos Inspección y ajuste √Sistema de enfriamiento Inspección √Filtro de gasolina Reemplazar √Sistema de Dirección y Suspensión Inspección y lubricación √Sistema de escape Inspección √Rolineras de ruedas Inspección √Refrigerante ReemplazarBujías Reemplazar √Cardán y eje de Transmisión Inspección y Lubricación √Correa del Motor Inspección / reemplazarVálvula PCV ReemplazarLíquido de diferencial trasero Cambiar
93
Tabla 11 – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
CROWN VICTORIA
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
2160
00
2208
00
2240
00
2256
00
2304
00
2320
00
2352
00
2400
00
Aceite de Motor Cambiar √ √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √Terminales y muñones Inspección √ √ √ √ √ √Sistema de Frenos Inspección y limpieza √ √ √ √Rines + Cauchos Rotar √ √ √ √Filtro de Aire Reemplazar √ √Líquido de Transmisión automática Medir nivel/completarLíquido de Transmisión automática Cambiar √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √Sistema de enfriamiento Inspección √ √Filtro de gasolina Reemplazar √ √Sistema de Dirección y Suspensión Inspección y lubricación √ √Sistema de escape Inspección √Rolineras de ruedas Inspección √Refrigerante Reemplazar √Bujías ReemplazarCardán y eje de Transmisión Inspección y LubricaciónCorrea del Motor Inspección / reemplazarVálvula PCV ReemplazarLíquido de diferencial trasero Cambiar √
94
Tabla 12. – Programa de mantenimiento para vehiculo modelo Impala.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
IMPALA
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
6000
1200
0
1800
0
2400
0
3000
0
3600
0
4200
0
4800
0
5400
0
6000
0
6600
0
Aceite de Motor Cambiar √ √ √ √ √ √ √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √ √ √ √Filtro de Aire de la Cabina Inspección √ √ √ √ √Tren delantero Inspección √ √ √ √ √ √ √ √ √ √ √Rines + Cauchos Rotar √ √ √ √ √Filtro de Aire Reemplazar √ √Sistema de Frenos Inspección y limpieza √ √ √ √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √Filtros de Transmisión automática ReemplazarLíquido de Transmisión automática CambiarSistema de escape Inspección √Sistema de enfriamiento Inspección/ServicioRefrigerante ReemplazarBujías + Cables ReemplazarCorrea del Motor Inspección / reemplazarSistema de Dirección y Suspensión Inspección y lubricación √
95
Tabla 12. – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
IMPALA
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
7200
0
7800
0
8000
0
8400
0
9000
0
9600
0
1020
00
1080
00
1140
00
1200
00
1260
00
1320
00
Aceite de Motor Cambiar √ √ √ √ √ √ √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √ √ √ √Filtro de Aire de la Cabina Inspección √ √ √ √ √ √Tren delantero Inspección √ √ √ √ √ √ √ √ √ √ √Rines + Cauchos Rotar √ √ √ √ √ √Filtro de Aire Reemplazar √ √ √Sistema de Frenos Inspección y limpieza √ √ √ √ √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √ √ √Filtros de Transmisión automática Reemplazar √Líquido de Transmisión automática Cambiar √Sistema de escape Inspección √Sistema de enfriamiento Inspección/ServicioRefrigerante ReemplazarBujías + Cables ReemplazarCorrea del Motor Inspección / reemplazarSistema de Dirección y Suspensión Inspección y lubricación √ √
96
Tabla 12. – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
IMPALA
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
1380
00
1440
00
1500
00
1560
00
1600
00
1620
00
1680
00
1740
00
1800
00
1860
00
1920
00
1980
00
Aceite de Motor Cambiar √ √ √ √ √ √ √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √ √ √ √Filtro de Aire de la Cabina Inspección √ √ √ √ √Tren delantero Inspección √ √ √ √ √ √ √ √ √ √ √Rines + Cauchos Rotar √ √ √ √ √Filtro de Aire Reemplazar √ √ √Sistema de Frenos Inspección y limpieza √ √ √ √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √Filtros de Transmisión automática Reemplazar √Líquido de Transmisión automática Cambiar √Sistema de escape Inspección √ √Sistema de enfriamiento Inspección/ServicioRefrigerante ReemplazarBujías + Cables Reemplazar √Correa del Motor Inspección / reemplazarSistema de Dirección y Suspensión Inspección y lubricación √ √
97
Tabla 12. – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
IMPALA
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
2040
00
2100
00
2160
00
2220
00
2280
00
2340
00
2400
00
Aceite de Motor Cambiar √ √ √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √Filtro de Aire de la Cabina Inspección √ √ √ √Tren delantero Inspección √ √ √ √ √ √ √Rines + Cauchos Rotar √ √ √ √Filtro de Aire Reemplazar √Sistema de Frenos Inspección y limpieza √ √ √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √Filtros de Transmisión automática Reemplazar √Líquido de Transmisión automática Cambiar √Sistema de escape Inspección √Sistema de enfriamiento Inspección/Servicio √Refrigerante Reemplazar √Bujías + Cables ReemplazarCorrea del Motor Inspección / reemplazar √Sistema de Dirección y Suspensión Inspección y lubricación √
98
Tabla 13. – Programa de mantenimiento para vehiculo modelo Four Runner.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
FOUR RUNNER
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
8000
1600
0
2400
0
3200
0
4000
0
4800
0
5600
0
6400
0
7200
0
8000
0
8800
0
Aceite de Motor Cambiar √ √ √ √ √ √ √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √ √ √ √Terminales y muñones Inspección √ √ √ √ √ √ √ √ √ √ √Pernos y tuercas de chasis Inspección y ajuste √ √ √ √ √ √ √ √ √ √ √Sistema de Frenos (Tacos, bandas, protectores) Inspección y limpieza √ √ √ √ √ √ √ √ √ √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √ √Tripoides Inspección √ √ √ √ √ √ √ √ √ √ √Rines + Cauchos Rotar √ √ √ √ √ √ √ √ √ √ √Filtro de Aire Inspección √ √ √ √ √ √ √ √ √ √ √Sistema de Dirección y Suspensión Inspección y lubricación √ √ √ √ √ √ √ √ √ √ √Líquido de Transmisión automática Inspección/Completar √ √ √Líquido de Diferencial delantero Cambiar √ √ √Sistema de enfriamiento Limpieza √Sistema de escape Inspección √ √ √Rolineras de ruedas Inspección √Refrigerante Reemplazar √Bujías Reemplazar √Diferencial trasero Inspección y Lubricación √ √ √Fluido de Diferencial trasero Cambiar √ √ √Correa del Motor Inspección / reemplazarTapa de Gasolina Inspección √Sistema de Gasolina (Tanque, mangueras, bomba, inyectores) Inspección / Limpieza √Filtro de gasolina Reemplazar √Líquido de Caja de Transferencia Cambio √Apertura de válvulas Inspección / ajusteDispositivo de Control de emisiones InspecciónCorrea del Tiempo Reemplazar
99
Tabla 13. – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
FOUR RUNNER
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
9600
0
1040
00
1120
00
1200
00
1280
00
1360
00
1440
00
1520
00
1600
00
1680
00
1760
00
Aceite de Motor Cambiar √ √ √ √ √ √ √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √ √ √ √Terminales y muñones Inspección √ √ √ √ √ √ √ √ √ √ √Pernos y tuercas de chasis Inspección y ajuste √ √ √ √ √ √ √ √ √ √ √Sistema de Frenos (Tacos, bandas, protectores) Inspección y limpieza √ √ √ √ √ √ √ √ √ √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √ √ √Tripoides Inspección √ √ √ √ √ √ √ √ √ √ √Rines + Cauchos Rotar √ √ √ √ √ √ √ √ √ √ √Filtro de Aire Inspección √ √ √ √ √ √ √ √ √ √ √Sistema de Dirección y Suspensión Inspección y lubricación √ √ √ √ √ √ √ √ √ √ √Líquido de Transmisión automática Inspección/Completar √ √ √ √Líquido de Diferencial delantero Cambiar √ √ √ √Sistema de enfriamiento Limpieza √ √Sistema de escape Inspección √ √ √ √Rolineras de ruedas Inspección √ √Refrigerante Reemplazar √ √Bujías Reemplazar √ √Diferencial trasero Inspección y Lubricación √ √ √ √Fluido de Diferencial trasero Cambiar √ √ √ √Correa del Motor Inspección / reemplazar √ √ √ √Tapa de Gasolina Inspección √ √Sistema de Gasolina (Tanque, mangueras, bomba, inyectores) Inspección / Limpieza √ √Filtro de gasolina Reemplazar √ √Líquido de Caja de Transferencia Cambio √Apertura de válvulas Inspección / ajuste √Dispositivo de Control de emisiones Inspección √Correa del Tiempo Reemplazar √
100
Tabla 13. – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
FOUR RUNNER
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
1840
00
1920
00
2000
00
2080
00
2160
00
2240
00
2320
00
2400
00
Aceite de Motor Cambiar √ √ √ √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √Terminales y muñones Inspección √ √ √ √ √ √ √ √Pernos y tuercas de chasis Inspección y ajuste √ √ √ √ √ √ √ √Sistema de Frenos (Tacos, bandas, protectores) Inspección y limpieza √ √ √ √ √ √ √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √ √Tripoides Inspección √ √ √ √ √ √ √ √Rines + Cauchos Rotar √ √ √ √ √ √ √ √Filtro de Aire Inspección √ √ √ √ √ √ √ √Sistema de Dirección y Suspensión Inspección y lubricación √ √ √ √ √ √ √ √Líquido de Transmisión automática Inspección/Completar √ √ √Líquido de Diferencial delantero Cambiar √Sistema de enfriamiento Limpieza √ √Sistema de escape Inspección √ √ √Rolineras de ruedas Inspección √ √Refrigerante Reemplazar √ √Bujías Reemplazar √ √Diferencial trasero Inspección y Lubricación √ √ √Fluido de Diferencial trasero Cambiar √ √ √Correa del Motor Inspección / reemplazar √Tapa de Gasolina Inspección √ √Sistema de Gasolina (Tanque, mangueras, bomba, inyectores) Inspección / Limpieza √Filtro de gasolina Reemplazar √ √Líquido de Caja de Transferencia Cambio √Apertura de válvulas Inspección / ajuste √Dispositivo de Control de emisiones Inspección √Correa del Tiempo Reemplazar
101
Tabla 14. – Programa de mantenimiento para vehiculo modelo Luv - Dmax.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
LUV D-MAX
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
4800
9600
1168
0
1200
0
1440
0
1600
0
1920
0
2336
0
2400
0
2880
0
3200
0
Aceite de Motor Cambiar √ √Filtro de Aceite Reemplazar √ √Chasis (Pernos, Tuercas, paneles) Inspección / ajuste √ √ √ √ √ √ √Sistema de Frenos (Discos,tacos, protectores) Inspección y limpieza √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √Guaya de Freno Inspección y lubricación √ √ √ √ √ √Guaya de Cambio de velocidades Inspección √ √ √ √ √ √Sistema Lavaparabrisas(incluye cepillos) Verificar / Completar Nivel √ √ √ √Rines + Cauchos Rotar / Ajustar presión √ √Filtro de Aire Inspección √ √Sistema de inyección de combustible Inspección / Limpieza √ √Sistema de Dirección y Suspensión Inspección y lubricación √ √ √ √ √ √Líquido de Transmisión automática CambiarFiltro de Transmisión automática ReemplazarSistema de enfriamiento Inspección / LimpiezaSistema de escape InspecciónRefrigerante Reemplazar √ √Bujías + Cables ReemplazarCorrea del Motor Inspección / reemplazarFiltro de gasolina ReemplazarCadena del Tiempo Reemplazar
102
Tabla 14. – Continuación.
4.3.2. Elaboración nuevos progra antenimiento preventi
4.3.3. Objetiv enimiento clase mundial considerad
4.3.4. Diseño
mas de m vo.
os del sistema de mant os.
de formatos.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
LUV D-MAX
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
3360
0
3504
0
3600
0
3840
0
4000
0
4320
0
4672
0
4800
0
5280
0
5760
0
5840
0
Aceite de Motor Cambiar √ √Filtro de Aceite Reemplazar √ √ √Chasis (Pernos, Tuercas, paneles) Inspección / ajuste √ √ √ √ √ √Sistema de Frenos (Discos,tacos, protectores) Inspección y limpieza √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √Guaya de Freno Inspección y lubricación √ √ √ √ √ √Guaya de Cambio de velocidades Inspección √ √ √ √ √ √Sistema Lavaparabrisas(incluye cepillos) Verificar / Completar Nivel √ √Rines + Cauchos Rotar / Ajustar presión √ √Filtro de Aire Inspección √Sistema de inyección de combustible Inspección / Limpieza √ √Sistema de Dirección y Suspensión Inspección y lubricación √ √ √ √ √ √Líquido de Transmisión automática CambiarFiltro de Transmisión automática ReemplazarSistema de enfriamiento Inspección / LimpiezaSistema de escape Inspección √Refrigerante Reemplazar √ √Bujías + Cables ReemplazarCorrea del Motor Inspección / reemplazarFiltro de gasolina ReemplazarCadena del Tiempo Reemplazar
103
Tabla 14. – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
LUV D-MAX
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
6000
0
6240
0
6400
0
6720
0
7008
0
7200
0
7680
0
8000
0
8160
0
8176
0
8400
0
Aceite de Motor Cambiar √ √ √Filtro de Aceite Reemplazar √ √Chasis (Pernos, Tuercas, paneles) Inspección / ajuste √ √ √ √ √ √ √Sistema de Frenos (Discos,tacos, protectores) Inspección y limpieza √ √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √ √Guaya de Freno Inspección y lubricación √ √ √ √ √Guaya de Cambio de velocidades Inspección √ √ √ √ √Sistema Lavaparabrisas(incluye cepillos) Verificar / Completar Nivel √ √ √ √ √Rines + Cauchos Rotar / Ajustar presión √ √ √Filtro de Aire Inspección √ √Sistema de inyección de combustible Inspección / Limpieza √ √Sistema de Dirección y Suspensión Inspección y lubricación √ √ √ √ √Líquido de Transmisión automática Cambiar √Filtro de Transmisión automática Reemplazar √Sistema de enfriamiento Inspección / Limpieza √Sistema de escape Inspección √Refrigerante Reemplazar √ √Bujías + Cables ReemplazarCorrea del Motor Inspección / reemplazarFiltro de gasolina Reemplazar √Cadena del Tiempo Reemplazar
104
Tabla 14. – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
LUV D-MAX
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
8640
0
9120
0
9344
0
9600
0
1008
00
1051
20
1056
00
1080
00
1104
00
1120
00
1152
00
Aceite de Motor Cambiar √ √Filtro de Aceite Reemplazar √ √Chasis (Pernos, Tuercas, paneles) Inspección / ajuste √ √ √ √ √ √ √Sistema de Frenos (Discos,tacos, protectores) Inspección y limpieza √ √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √ √Guaya de Freno Inspección y lubricación √ √ √ √ √ √Guaya de Cambio de velocidades Inspección √ √ √ √ √ √Sistema Lavaparabrisas(incluye cepillos) Verificar / Completar Nivel √ √ √Rines + Cauchos Rotar / Ajustar presión √ √Filtro de Aire InspecciónSistema de inyección de combustible Inspección / Limpieza √Sistema de Dirección y Suspensión Inspección y lubricación √ √ √ √ √ √ √Líquido de Transmisión automática CambiarFiltro de Transmisión automática ReemplazarSistema de enfriamiento Inspección / LimpiezaSistema de escape InspecciónRefrigerante Reemplazar √ √Bujías + Cables ReemplazarCorrea del Motor Inspección / reemplazar √Filtro de gasolina ReemplazarCadena del Tiempo Reemplazar
105
Tabla 14. – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
LUV D-MAX
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
1168
00
1200
00
1248
00
1280
00
1284
80
1296
00
1320
00
1344
00
1392
00
1401
60
1440
00
Aceite de Motor Cambiar √ √ √Filtro de Aceite Reemplazar √ √ √Chasis (Pernos, Tuercas, paneles) Inspección / ajuste √ √ √ √ √ √ √Sistema de Frenos (Discos,tacos, protectores) Inspección y limpieza √ √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √ √Guaya de Freno Inspección y lubricación √ √ √ √ √Guaya de Cambio de velocidades Inspección √ √ √ √ √ √Sistema Lavaparabrisas(incluye cepillos) Verificar / Completar Nivel √ √ √ √Rines + Cauchos Rotar / Ajustar presión √ √ √Filtro de Aire InspecciónSistema de inyección de combustible Inspección / Limpieza √ √Sistema de Dirección y Suspensión Inspección y lubricación √ √ √ √ √ √Líquido de Transmisión automática CambiarFiltro de Transmisión automática ReemplazarSistema de enfriamiento Inspección / LimpiezaSistema de escape Inspección √Refrigerante Reemplazar √ √ √Bujías + Cables ReemplazarCorrea del Motor Inspección / reemplazarFiltro de gasolina ReemplazarCadena del Tiempo Reemplazar √
106
Tabla 14. – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
LUV D-MAX
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
1488
00
1518
40
1536
00
1560
00
1584
00
1600
00
1632
00
1635
20
1680
00
1728
00
1752
00
Aceite de Motor Cambiar √Filtro de Aceite Reemplazar √ √ √Chasis (Pernos, Tuercas, paneles) Inspección / ajuste √ √ √ √ √ √ √Sistema de Frenos (Discos,tacos, protectores) Inspección y limpieza √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √Guaya de Freno Inspección y lubricación √ √ √ √ √ √Guaya de Cambio de velocidades Inspección √ √ √ √ √ √Sistema Lavaparabrisas(incluye cepillos) Verificar / Completar Nivel √ √ √Rines + Cauchos Rotar / Ajustar presión √ √Filtro de Aire Inspección √Sistema de inyección de combustible Inspección / Limpieza √Sistema de Dirección y Suspensión Inspección y lubricación √ √ √ √ √ √Líquido de Transmisión automática Cambiar √Filtro de Transmisión automática Reemplazar √Sistema de enfriamiento Inspección / LimpiezaSistema de escape Inspección √Refrigerante Reemplazar √ √Bujías + Cables Reemplazar √Correa del Motor Inspección / reemplazarFiltro de gasolina Reemplazar √Cadena del Tiempo Reemplazar
107
Tabla 14. – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
LUV D-MAX
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
1760
00
1776
00
1800
00
1824
00
1868
80
1872
00
1920
00
1968
00
1985
60
2000
00
2016
00
Aceite de Motor Cambiar √ √Filtro de Aceite Reemplazar √ √Chasis (Pernos, Tuercas, paneles) Inspección / ajuste √ √ √ √ √ √ √Sistema de Frenos (Discos,tacos, protectores) Inspección y limpieza √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √Guaya de Freno Inspección y lubricación √ √ √ √ √ √Guaya de Cambio de velocidades Inspección √ √ √ √ √ √Sistema Lavaparabrisas(incluye cepillos) Verificar / Completar Nivel √ √ √Rines + Cauchos Rotar / Ajustar presión √ √Filtro de Aire InspecciónSistema de inyección de combustible Inspección / Limpieza √ √ √Sistema de Dirección y Suspensión Inspección y lubricación √ √ √ √ √Líquido de Transmisión automática CambiarFiltro de Transmisión automática ReemplazarSistema de enfriamiento Inspección / LimpiezaSistema de escape Inspección √Refrigerante Reemplazar √ √Bujías + Cables ReemplazarCorrea del Motor Inspección / reemplazarFiltro de gasolina ReemplazarCadena del Tiempo Reemplazar
108
Tabla 14. – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
LUV D-MAX
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
2040
00
2064
00
2080
00
2102
40
2112
00
2160
00
2208
00
2219
20
2240
00
2256
00
2280
00
Aceite de Motor Cambiar √ √ √Filtro de Aceite Reemplazar √ √Chasis (Pernos, Tuercas, paneles) Inspección / ajuste √ √ √ √ √ √ √Sistema de Frenos (Discos,tacos, protectores) Inspección y limpieza √ √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √ √Guaya de Freno Inspección y lubricación √ √ √ √ √Guaya de Cambio de velocidades Inspección √ √ √ √ √Sistema Lavaparabrisas(incluye cepillos) Verificar / Completar Nivel √ √ √ √ √Rines + Cauchos Rotar / Ajustar presión √ √ √Filtro de Aire InspecciónSistema de inyección de combustible Inspección / Limpieza √ √Sistema de Dirección y Suspensión Inspección y lubricación √ √ √ √ √Líquido de Transmisión automática CambiarFiltro de Transmisión automática ReemplazarSistema de enfriamiento Inspección / LimpiezaSistema de escape InspecciónRefrigerante Reemplazar √ √ √Bujías + Cables ReemplazarCorrea del Motor Inspección / reemplazarFiltro de gasolina ReemplazarCadena del Tiempo Reemplazar
109
Tabla 14. – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
LUV D-MAX
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
2304
00
2336
00
2352
00
2400
00
Aceite de Motor Cambiar √Filtro de Aceite Reemplazar √Chasis (Pernos, Tuercas, paneles) Inspección / ajuste √ √ √Sistema de Frenos (Discos,tacos, protectores) Inspección y limpieza √Mangueras y tuberías de sistema de frenos Inspección y ajuste √Guaya de Freno Inspección y lubricación √ √ √Guaya de Cambio de velocidades Inspección √ √ √Sistema Lavaparabrisas(incluye cepillos) Verificar / Completar Nivel √Rines + Cauchos Rotar / Ajustar presión √Filtro de Aire Inspección √Sistema de inyección de combustible Inspección / Limpieza √Sistema de Dirección y Suspensión Inspección y lubricación √ √ √Líquido de Transmisión automática Cambiar √Filtro de Transmisión automática Reemplazar √Sistema de enfriamiento Inspección / Limpieza √Sistema de escape Inspección √Refrigerante Reemplazar √Bujías + Cables ReemplazarCorrea del Motor Inspección / reemplazar √Filtro de gasolina Reemplazar √Cadena del Tiempo Reemplazar
110
Tabla 15. – Programa de mantenimiento para vehiculo modelo Jeep Cherokee.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
JEEP CHEROKEE
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
4800
9600
1200
0
1440
0
1920
0
2400
0
2880
0
3360
0
3600
0
3840
0
4320
0
Aceite de Motor Cambiar √ √ √ √ √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √ √Chasis (Pernos, Tuercas) Inspección / ajuste √ √ √ √ √ √ √Terminales y Muñones Inspección √ √ √ √Sistema de Frenos (Discos,tacos, protectores) Inspección y limpieza √ √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √ √ √ √ √ √Juntas de Velocidad Constante Inspección / Ajuste √ √ √ √ √ √ √ √ √Rines + Cauchos Rotar / Ajustar presión √ √ √Filtro de Aire Inspección √Sistema de inyección de combustible Inspección / Limpieza √ √Sistema de Dirección y Suspensión Inspección y lubricación √ √ √ √ √ √ √ √ √ √Líquido de Transmisión automática Cambiar √ √Filtro de Transmisión automática ReemplazarLíquido de Diferencial Reemplazar √ √Líquido Caja de transferencia ReemplazarSistema de enfriamiento Inspección / LimpiezaSistema de escape Inspección √ √ √ √ √ √Refrigerante ReemplazarBujías + Cables ReemplazarCorrea del Motor Inspección / reemplazarFiltro de gasolina Reemplazar √ √Cadena del Tiempo Reemplazar
111
Tabla 15. – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
JEEP CHEROKEE
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
4800
0
5280
0
5760
0
6000
0
6240
0
6720
0
7200
0
7680
0
8160
0
8400
0
8640
0
Aceite de Motor Cambiar √ √ √ √ √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √ √Chasis (Pernos, Tuercas) Inspección / ajuste √ √ √ √ √ √Terminales y Muñones Inspección √ √ √ √ √Sistema de Frenos (Discos,tacos, protectores) Inspección y limpiezaMangueras y tuberías de sistema de frenos Inspección y ajuste √ √ √ √ √ √ √ √Juntas de Velocidad Constante Inspección / Ajuste √ √ √ √ √ √ √ √ √Rines + Cauchos Rotar / Ajustar presión √ √ √ √Filtro de Aire Inspección √ √Sistema de inyección de combustible Inspección / Limpieza √ √Sistema de Dirección y Suspensión Inspección y lubricación √ √ √ √ √ √ √ √ √ √ √Líquido de Transmisión automática Cambiar √ √Filtro de Transmisión automática ReemplazarLíquido de Diferencial Reemplazar √ √Líquido Caja de transferencia Reemplazar √Sistema de enfriamiento Inspección / LimpiezaSistema de escape Inspección √ √ √ √ √Refrigerante Reemplazar √ √ √Bujías + Cables Reemplazar √Correa del Motor Inspección / reemplazar √Filtro de gasolina Reemplazar √ √Cadena del Tiempo Reemplazar
112
Tabla 15. – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
JEEP CHEROKEE
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
9120
0
9600
0
1008
00
1056
00
1104
00
1152
00
1200
00
1248
00
1296
00
1320
00
1344
00
Aceite de Motor Cambiar √ √ √ √ √ √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √ √ √Chasis (Pernos, Tuercas) Inspección / ajuste √ √ √ √ √ √ √ √ √Terminales y Muñones Inspección √ √ √ √Sistema de Frenos (Discos,tacos, protectores) Inspección y limpiezaMangueras y tuberías de sistema de frenos Inspección y ajuste √ √ √ √ √ √ √ √ √Juntas de Velocidad Constante Inspección / Ajuste √ √ √ √ √ √ √ √ √Rines + Cauchos Rotar / Ajustar presión √ √ √ √Filtro de Aire Inspección √ √Sistema de inyección de combustible Inspección / Limpieza √ √ √Sistema de Dirección y Suspensión Inspección y lubricación √ √ √ √ √ √ √ √ √ √Líquido de Transmisión automática Cambiar √ √ √Filtro de Transmisión automática ReemplazarLíquido de Diferencial Reemplazar √ √ √Líquido Caja de transferencia Reemplazar √Sistema de enfriamiento Inspección / LimpiezaSistema de escape Inspección √ √ √ √ √ √ √ √Refrigerante Reemplazar √ √ √Bujías + Cables Reemplazar √Correa del Motor Inspección / reemplazarFiltro de gasolina Reemplazar √ √ √Cadena del Tiempo Reemplazar
113
Tabla 15. – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
JEEP CHEROKEE
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
1392
00
1440
00
1488
00
1536
00
1560
00
1584
00
1632
00
1680
00
1728
00
1776
00
1800
00
Aceite de Motor Cambiar √ √ √ √ √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √ √Chasis (Pernos, Tuercas) Inspección / ajuste √ √ √ √ √ √ √ √Terminales y Muñones Inspección √ √ √ √Sistema de Frenos (Discos,tacos, protectores) Inspección y limpieza √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √ √ √ √ √ √ √ √Juntas de Velocidad Constante Inspección / Ajuste √ √ √ √ √ √ √ √ √Rines + Cauchos Rotar / Ajustar presión √ √ √ √Filtro de Aire Inspección √ √Sistema de inyección de combustible Inspección / Limpieza √ √Sistema de Dirección y Suspensión Inspección y lubricación √ √ √ √ √ √ √ √ √ √ √Líquido de Transmisión automática Cambiar √ √Filtro de Transmisión automática ReemplazarLíquido de Diferencial Reemplazar √ √Líquido Caja de transferencia Reemplazar √Sistema de enfriamiento Inspección / LimpiezaSistema de escape Inspección √ √ √ √ √Refrigerante Reemplazar √ √ √ √Bujías + Cables Reemplazar √Correa del Motor Inspección / reemplazar √Filtro de gasolina Reemplazar √ √Cadena del Tiempo Reemplazar √
114
Tabla 15. – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
JEEP CHEROKEE
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
1824
00
1872
00
1920
00
2016
00
2064
00
2112
00
2160
00
2208
00
2256
00
2304
00
2352
00
2400
00
Aceite de Motor Cambiar √ √ √ √ √ √ √ √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √ √ √ √ √Chasis (Pernos, Tuercas) Inspección / ajuste √ √ √ √ √ √ √ √ √ √ √Terminales y Muñones Inspección √ √ √ √ √ √Sistema de Frenos (Discos,tacos, protectores) Inspección y limpieza √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √ √ √ √ √ √ √ √ √ √Juntas de Velocidad Constante Inspección / Ajuste √ √ √ √ √ √ √ √ √ √ √Rines + Cauchos Rotar / Ajustar presión √ √ √ √ √ √Filtro de Aire Inspección √ √Sistema de inyección de combustible Inspección / Limpieza √ √ √Sistema de Dirección y Suspensión Inspección y lubricación √ √ √ √ √ √ √ √ √ √ √Líquido de Transmisión automática Cambiar √ √ √Filtro de Transmisión automática ReemplazarLíquido de Diferencial Reemplazar √ √ √Líquido Caja de transferencia Reemplazar √ √Sistema de enfriamiento Inspección / LimpiezaSistema de escape Inspección √ √ √ √ √ √ √ √Refrigerante ReemplazarBujías + Cables Reemplazar √ √Correa del Motor Inspección / reemplazar √Filtro de gasolina Reemplazar √ √ √Cadena del Tiempo Reemplazar
115
Tabla 16. – Programa de mantenimiento para vehiculo modelo Mazda B2600.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
MAZDA B2600
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
4800
8000
9600
1440
0
1600
0
1920
0
2400
0
2880
0
3200
0
3360
0
3840
0
4000
0
Aceite de Motor Cambiar √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √Chasis (Pernos, Tuercas) Inspección / ajusteTerminales y Muñones InspecciónSistema de Frenos (Discos,tacos, líquido) Inspección y limpieza √ √ √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √ √ √Guaya de Freno de mano InspecciónCardán y eje de transmisión Inspección / Lubricación √Rines + Cauchos Rotar / Ajustar presión √ √ √Filtro de Aire Inspección / ReemplazoSistema de inyección de combustible Inspección / Limpieza √Sistema de Dirección y Suspensión Inspección y lubricaciónLíquido de Transmisión automática CambiarLíquido Caja de transferencia ReemplazarSistema de enfriamiento Inspección / LimpiezaSistema de escape InspecciónRefrigerante ReemplazarBujías + Cables ReemplazarCorrea del Motor Inspección / reemplazarFiltro de gasolina Reemplazar √Cadena del Tiempo ReemplazarVálvula PCV Reemplazar
116
Tabla 16. – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
MAZDA B2600
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
4320
0
4800
0
5280
0
5600
0
5760
0
6240
0
6400
0
6720
0
7200
0
7680
0
8000
0
8160
0
Aceite de Motor Cambiar √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √ √Chasis (Pernos, Tuercas) Inspección / ajuste √Terminales y Muñones Inspección √Sistema de Frenos (Discos,tacos, líquido) Inspección y limpieza √ √ √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √ √ √Guaya de Freno de mano Inspección √Cardán y eje de transmisión Inspección / Lubricación √Rines + Cauchos Rotar / Ajustar presión √ √ √ √Filtro de Aire Inspección / Reemplazo √Sistema de inyección de combustible Inspección / Limpieza √ √Sistema de Dirección y Suspensión Inspección y lubricación √Líquido de Transmisión automática Cambiar √Líquido Caja de transferencia ReemplazarSistema de enfriamiento Inspección / Limpieza √ √Sistema de escape Inspección √Refrigerante Reemplazar √Bujías + Cables ReemplazarCorrea del Motor Inspección / reemplazarFiltro de gasolina Reemplazar √ √Cadena del Tiempo ReemplazarVálvula PCV Reemplazar
117
Tabla 16. – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
MAZDA B2600
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
8640
0
8800
0
9120
0
9600
0
1008
00
1040
00
1056
00
1104
00
1120
00
1152
00
1200
00
1248
00
Aceite de Motor Cambiar √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √ √Chasis (Pernos, Tuercas) Inspección / ajuste √Terminales y Muñones Inspección √Sistema de Frenos (Discos,tacos, líquido) Inspección y limpieza √ √ √ √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √ √ √ √Guaya de Freno de mano InspecciónCardán y eje de transmisión Inspección / Lubricación √Rines + Cauchos Rotar / Ajustar presión √ √ √ √Filtro de Aire Inspección / Reemplazo √Sistema de inyección de combustible Inspección / Limpieza √ √Sistema de Dirección y Suspensión Inspección y lubricación √Líquido de Transmisión automática Cambiar √Líquido Caja de transferencia Reemplazar √Sistema de enfriamiento Inspección / Limpieza √Sistema de escape InspecciónRefrigerante ReemplazarBujías + Cables Reemplazar √Correa del Motor Inspección / reemplazarFiltro de gasolina Reemplazar √ √Cadena del Tiempo ReemplazarVálvula PCV Reemplazar
118
Tabla 16. – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
MAZDA B2600
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
1280
00
1296
00
1344
00
1360
00
1392
00
1440
00
1488
00
1520
00
1536
00
1584
00
1600
00
1632
00
Aceite de Motor Cambiar √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √Chasis (Pernos, Tuercas) Inspección / ajuste √Terminales y Muñones InspecciónSistema de Frenos (Discos,tacos, líquido) Inspección y limpieza √ √ √ √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √ √ √ √Guaya de Freno de mano InspecciónCardán y eje de transmisión Inspección / LubricaciónRines + Cauchos Rotar / Ajustar presión √ √ √ √Filtro de Aire Inspección / ReemplazoSistema de inyección de combustible Inspección / Limpieza √Sistema de Dirección y Suspensión Inspección y lubricaciónLíquido de Transmisión automática Cambiar √Líquido Caja de transferencia ReemplazarSistema de enfriamiento Inspección / Limpieza √Sistema de escape InspecciónRefrigerante Reemplazar √Bujías + Cables Reemplazar √Correa del Motor Inspección / reemplazar √Filtro de gasolina Reemplazar √Cadena del Tiempo Reemplazar √Válvula PCV Reemplazar √
119
Tabla 16. – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
MAZDA B2600
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
1680
00
1728
00
1760
00
1776
00
1824
00
1840
00
1872
00
1920
00
1968
00
2000
00
2016
00
2064
00
Aceite de Motor Cambiar √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √ √Chasis (Pernos, Tuercas) Inspección / ajuste √Terminales y Muñones Inspección √Sistema de Frenos (Discos,tacos, líquido) Inspección y limpieza √ √ √ √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √ √ √ √Guaya de Freno de mano Inspección √Cardán y eje de transmisión Inspección / Lubricación √Rines + Cauchos Rotar / Ajustar presión √ √ √Filtro de Aire Inspección / Reemplazo √Sistema de inyección de combustible Inspección / Limpieza √ √Sistema de Dirección y Suspensión Inspección y lubricación √Líquido de Transmisión automática Cambiar √Líquido Caja de transferencia Reemplazar √Sistema de enfriamiento Inspección / Limpieza √Sistema de escape InspecciónRefrigerante ReemplazarBujías + Cables Reemplazar √Correa del Motor Inspección / reemplazarFiltro de gasolina Reemplazar √ √Cadena del Tiempo ReemplazarVálvula PCV Reemplazar
120
Tabla 16. – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO TIPO
MAZDA B2600
Kilometraje Inicial: 0
Componente del Vehículo Actividad Km
2080
00
2112
00
2160
00
2208
00
2240
00
2256
00
2304
00
2320
00
2352
00
2400
00
Aceite de Motor Cambiar √ √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √Chasis (Pernos, Tuercas) Inspección / ajuste √Terminales y Muñones Inspección √ √Sistema de Frenos (Discos,tacos, líquido) Inspección y limpieza √ √ √ √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √ √ √ √Guaya de Freno de mano Inspección √ √Cardán y eje de transmisión Inspección / Lubricación √ √Rines + Cauchos Rotar / Ajustar presiónFiltro de Aire Inspección / Reemplazo √Sistema de inyección de combustible Inspección / Limpieza √ √Sistema de Dirección y Suspensión Inspección y lubricación √ √Líquido de Transmisión automática Cambiar √Líquido Caja de transferencia ReemplazarSistema de enfriamiento Inspección / Limpieza √ √Sistema de escape Inspección √Refrigerante ReemplazarBujías + Cables ReemplazarCorrea del Motor Inspección / reemplazarFiltro de gasolina Reemplazar √ √Cadena del Tiempo ReemplazarVálvula PCV Reemplazar
121
Tabla 17. – Programa de mantenimiento para vehiculo modelo Autana.
PLAN DE MANTENIMIENTO PARA VEHICULO: AUTANAKilometraje Inicial: 0
Componente del Vehículo Actividad Km
8000
1600
0
2400
0
3200
0
4000
0
4800
0
5600
0
6400
0
7200
0
8000
0
Aceite de Motor Cambiar √ √ √ √ √ √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √ √ √Terminales y muñones Inspección √ √ √ √ √ √ √ √ √ √Pernos y tuercas de chasis Inspección y ajuste √ √ √ √ √ √ √ √ √ √Sistema de Frenos (Tacos, bandas, protectores) Inspección y limpieza √ √ √ √ √ √ √ √ √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √ √ √ √ √ √ √ √ √Tripoides Inspección √ √ √ √ √ √ √ √ √ √Rines + Cauchos Rotar √ √ √ √ √ √ √ √ √ √Filtro de Aire Inspección √ √ √ √ √ √ √ √ √ √Sistema de Dirección y Suspensión Inspección y lubricación √ √ √ √ √ √ √ √ √ √Líquido de Transmisión automática Inspección/Completar √ √ √Fluido de Diferencial delantero Cambiar √ √ √Fluido de Diferencial trasero Cambiar √Diferencial Inspección / Lubricación √ √ √Diferencial Trasero Inspección / Lubricación √ √ √Sistema de enfriamiento Limpieza √Sistema de escape Inspección √ √ √Rolineras de ruedas Inspección √Refrigerante Reemplazar √Bujías Reemplazar √Correa del Motor Inspección / reemplazarTapa de Gasolina Inspección √Sistema de Gasolina (Tanque, mangueras, bomba, inyectores) Inspección / Limpieza √Filtro de gasolina Reemplazar √Líquido de Caja de Transferencia Cambio √Apertura de válvulas Inspección / ajusteDispositivo de Control de emisiones InspecciónCadena del Tiempo Reemplazar
122
Tabla 17. – Continuación.
PLAN DE MANTENIMIENTO PARA VEHICULO: AUTANAKilometraje Inicial: 0
Componente del Vehículo Actividad Km
8800
0
9600
0
1040
00
1120
00
1200
00
1280
00
1360
00
1440
00
1520
00
1600
00
Aceite de Motor Cambiar √ √ √ √ √ √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √ √ √Terminales y muñones Inspección √ √ √ √ √ √ √ √ √ √Pernos y tuercas de chasis Inspección y ajuste √ √ √ √ √ √ √ √ √ √Sistema de Frenos (Tacos, bandas, protectores) Inspección y limpieza √ √ √ √ √ √ √ √ √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √ √ √ √ √ √ √ √ √Tripoides Inspección √ √ √ √ √ √ √ √ √ √Rines + Cauchos Rotar √ √ √ √ √ √ √ √ √ √Filtro de Aire Inspección √ √ √ √ √ √ √ √ √ √Sistema de Dirección y Suspensión Inspección y lubricación √ √ √ √ √ √ √ √ √ √Líquido de Transmisión automática Inspección/Completar √ √ √Fluido de Diferencial delantero Cambiar √ √ √Fluido de Diferencial trasero Cambiar √ √Diferencial Inspección / Lubricación √ √ √Diferencial Trasero Inspección / Lubricación √ √ √Sistema de enfriamiento Limpieza √ √Sistema de escape Inspección √ √ √Rolineras de ruedas Inspección √ √Refrigerante Reemplazar √ √Bujías Reemplazar √ √Correa del Motor Inspección / reemplazar √Tapa de Gasolina Inspección √ √Sistema de Gasolina (Tanque, mangueras, bomba, inyectores)
Inspección / Limpieza√ √
Filtro de gasolina Reemplazar √ √Líquido de Caja de Transferencia Cambio √ √Apertura de válvulas Inspección / ajuste √Dispositivo de Control de emisiones Inspección √Cadena del Tiempo Reemplazar √
123
PLAN DE MANTENIMIENTO PARA VEHICULO: AUTANAKilometraje Inicial: 0
Componente del Vehículo Actividad Km
1680
00
1760
00
1840
00
1920
00
2000
00
2080
00
2160
00
2240
00
2320
00
2400
00
Aceite de Motor Cambiar √ √ √ √ √ √ √ √ √ √Filtro de Aceite Reemplazar √ √ √ √ √ √ √ √ √ √Terminales y muñones Inspección √ √ √ √ √ √ √ √ √ √Pernos y tuercas de chasis Inspección y ajuste √ √ √ √ √ √ √ √ √ √Sistema de Frenos (Tacos, bandas, protectores) Inspección y limpieza √ √ √ √ √ √ √ √ √ √Mangueras y tuberías de sistema de frenos Inspección y ajuste √ √ √ √ √ √ √ √ √ √Tripoides Inspección √ √ √ √ √ √ √ √ √ √Rines + Cauchos Rotar √ √ √ √ √ √ √ √ √ √Filtro de Aire Inspección √ √ √ √ √ √ √ √ √ √Sistema de Dirección y Suspensión Inspección y lubricación √ √ √ √ √ √ √ √ √ √Líquido de Transmisión automática Inspección/Completar √ √ √ √Fluido de Diferencial delantero Cambiar √ √ √ √Fluido de Diferencial trasero Cambiar √ √Diferencial Inspección / Lubricación √ √ √ √Diferencial Trasero Inspección / Lubricación √ √ √ √Sistema de enfriamiento Limpieza √ √Sistema de escape Inspección √ √ √ √Rolineras de ruedas Inspección √ √Refrigerante Reemplazar √ √Bujías Reemplazar √ √Correa del Motor Inspección / reemplazar √Tapa de Gasolina Inspección √ √Sistema de Gasolina (Tanque, mangueras, bomba, inyectores) Inspección / Limpieza √ √Filtro de gasolina Reemplazar √ √Líquido de Caja de Transferencia Cambio √ √Apertura de válvulas Inspección / ajuste √Dispositivo de Control de emisiones Inspección √Cadena del Tiempo Reemplazar
Tabla 17. – Continuación.
124
Tabla 18. – Programa de mantenimiento para aire acondicionado tipo ventana.
PLAN DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
General Electric, Samsung
Descripción del Equipo Tipo: VentanaCapacidad:15K, 18K, 24K BTU
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Urbano
Partes del Equipo Actividad Fecha
10/1
2/06
09/0
1/07
08/0
2/07
10/0
3/07
09/0
4/07
09/0
5/07
08/0
6/07
08/0
7/07
07/0
8/07
06/0
9/07
06/1
0/07
05/1
1/07
Filtro de Aire Limpieza /Lavado √ √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √Condensador Limpieza / Lavado químico √ √ √Motor Limpieza / Lubricación √ √ √Compresor Limpieza √ √ √Relé de encendido Inspección √ √Tarjeta de Control Aplicar Limpacontactos √ √Ventilador Condensador Inspección / Limpieza √ √ √Impulsor Limpieza √ √ √Tuberías de cobre (Capilar) Inspección / Limpieza √ √ √Gas Refrigerante Medición de nivel √ √ √ √ √ √Válvula de Expansión Inspección √ √ √Termostato Inspección √ √ √Filtro deshidratador Inspección √
125
Tabla 18. – Continuación.
PLAN DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
General Electric, Samsung
Descripción del Equipo Tipo: VentanaCapacidad:15K, 18K, 24K BTU
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Urbano
Partes del Equipo Actividad Fecha
05/1
2/07
04/0
1/08
03/0
2/08
04/0
3/08
03/0
4/08
03/0
5/08
02/0
6/08
02/0
7/08
01/0
8/08
31/0
8/08
30/0
9/08
30/1
0/08
Filtro de Aire Limpieza /Lavado √ √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √Condensador Limpieza / Lavado químico √ √ √Motor Limpieza / Lubricación √ √ √Compresor Limpieza √ √ √Relé de encendido Inspección √ √Tarjeta de Control Aplicar Limpacontactos √ √Ventilador Condensador Inspección / Limpieza √ √ √Impulsor Limpieza √ √ √Tuberías de cobre (Capilar) Inspección / Limpieza √ √ √Gas Refrigerante Medición de nivel √ √ √ √ √ √Válvula de Expansión Inspección √ √ √Termostato Inspección √ √ √Filtro deshidratador Inspección √ √ √
126
Tabla 18. – Continuación.
PLAN DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
General Electric, Samsung
Descripción del Equipo Tipo: VentanaCapacidad:15K, 18K, 24K BTU
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Urbano
Partes del Equipo Actividad Fecha
29/1
1/08
29/1
2/08
28/0
1/09
27/0
2/09
29/0
3/09
28/0
4/09
28/0
5/09
27/0
6/09
27/0
7/09
26/0
8/09
25/0
9/09
Filtro de Aire Limpieza /Lavado √ √ √ √ √Evaporador Limpieza / Lavado químico √ √Condensador Limpieza / Lavado químico √ √Motor Limpieza / Lubricación √ √Compresor Limpieza √ √Relé de encendido Inspección √Tarjeta de Control Aplicar Limpacontactos √Ventilador Condensador Inspección / Limpieza √ √Impulsor Limpieza √ √Tuberías de cobre (Capilar) Inspección / Limpieza √ √Gas Refrigerante Medición de nivel √ √ √ √ √Válvula de Expansión Inspección √ √Termostato Inspección √ √Filtro deshidratador Inspección √ √
127
Tabla 18. – Continuación.
PLAN DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
General Electric, Samsung
Descripción del Equipo Tipo: VentanaCapacidad:15K, 18K, 24K BTU
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Rural
Partes del Equipo Actividad Fecha
10/1
2/06
09/0
1/07
08/0
2/07
10/0
3/07
09/0
4/07
09/0
5/07
08/0
6/07
08/0
7/07
07/0
8/07
06/0
9/07
06/1
0/07
05/1
1/07
Filtro de Aire Limpieza /Lavado √ √ √ √ √ √ √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √ √Condensador Limpieza / Lavado químico √ √ √ √Motor Limpieza / Lubricación √ √ √ √Compresor Limpieza √ √ √ √Relé de encendido Inspección √ √Tarjeta de Control Aplicar Limpacontactos √ √Ventilador Condensador Inspección / Limpieza √ √ √ √Impulsor Limpieza √ √ √ √Tuberías de cobre (Capilar) Inspección / Limpieza √ √ √ √Gas Refrigerante Medición de nivel √ √ √ √Válvula de Expansión Inspección √ √ √ √Termostato Inspección √ √ √ √Filtro deshidratador Inspección √ √
128
Tabla 18. – Continuación.
PLAN DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
General Electric, Samsung
Descripción del Equipo Tipo: VentanaCapacidad:15K, 18K, 24K BTU
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Rural
Partes del Equipo Actividad Fecha
05/1
2/07
04/0
1/08
03/0
2/08
04/0
3/08
03/0
4/08
03/0
5/08
02/0
6/08
02/0
7/08
01/0
8/08
31/0
8/08
30/0
9/08
30/1
0/08
Filtro de Aire Limpieza /Lavado √ √ √ √ √ √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √ √Condensador Limpieza / Lavado químico √ √ √ √Motor Limpieza / Lubricación √ √ √ √Compresor Limpieza √ √ √ √Relé de encendido Inspección √ √Tarjeta de Control Aplicar Limpacontactos √ √Ventilador Condensador Inspección / Limpieza √ √ √ √Impulsor Limpieza √ √ √ √Tuberías de cobre (Capilar) Inspección / Limpieza √ √ √ √Gas Refrigerante Medición de nivel √ √ √ √Válvula de Expansión Inspección √ √ √ √Termostato Inspección √ √ √ √Filtro deshidratador Inspección √ √
129
Tabla 18. – Continuación.
PLAN DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
General Electric, Samsung
Descripción del Equipo Tipo: VentanaCapacidad:15K, 18K, 24K BTU
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Rural
Partes del Equipo Actividad Fecha
29/1
1/08
29/1
2/08
28/0
1/09
27/0
2/09
29/0
3/09
28/0
4/09
28/0
5/09
27/0
6/09
27/0
7/09
26/0
8/09
25/0
9/09
Filtro de Aire Limpieza /Lavado √ √ √ √ √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √Condensador Limpieza / Lavado químico √ √ √Motor Limpieza / Lubricación √ √ √Compresor Limpieza √ √ √Relé de encendido Inspección √Tarjeta de Control Aplicar Limpacontactos √Ventilador Condensador Inspección / Limpieza √ √ √Impulsor Limpieza √ √ √Tuberías de cobre (Capilar) Inspección / Limpieza √ √ √Gas Refrigerante Medición de nivel √ √ √Válvula de Expansión Inspección √ √ √Termostato Inspección √ √ √Filtro deshidratador Inspección √
130
Tabla 19. – Programa de mantenimiento para aire acondicionado tipo split 3 a 5 toneladas.
PLAN DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
YORK
Descripción del Equipo Tipo: SplitCapacidad:3, 5 Ton.
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Urbano
Partes del Equipo Actividad Fecha
10/1
2/06
09/0
1/07
08/0
2/07
10/0
3/07
09/0
4/07
09/0
5/07
08/0
6/07
08/0
7/07
07/0
8/07
06/0
9/07
06/1
0/07
05/1
1/07
Filtro de Aire Limpieza /Lavado √ √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √ √Condensador Limpieza / Lavado químico √ √ √ √Motor Limpieza / Lubricación √ √ √ √Compresor Limpieza √ √ √ √Interruptor Inspección √ √ √Contactor Aplicar Limpacontactos √ √ √Capacitor Inspección / Prueba √ √ √Ventilador Helicoidal Inspección / Limpieza √ √ √ √Ventilador Centrífugo Limpieza √ √ √ √Tuberías de cobre Inspección / Limpieza √ √ √ √Gas Refrigerante Medición de nivel √ √ √ √Válvula de Expansión Inspección √ √ √ √Termostato Inspección √ √Filtro deshidratador Inspección √ √Drenaje Inspección / Limpieza √ √ √ √ √ √
131
Tabla 19. – Continuación.
PLAN DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
YORK
Descripción del Equipo Tipo: SplitCapacidad:3, 5 Ton.
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Urbano
Partes del Equipo Actividad Fecha
05/1
2/07
04/0
1/08
03/0
2/08
04/0
3/08
03/0
4/08
03/0
5/08
02/0
6/08
02/0
7/08
01/0
8/08
31/0
8/08
30/0
9/08
30/1
0/08
Filtro de Aire Limpieza /Lavado √ √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √ √Condensador Limpieza / Lavado químico √ √ √ √Motor Limpieza / Lubricación √ √ √ √Compresor Limpieza √ √ √ √Interruptor Inspección √ √ √Contactor Aplicar Limpacontactos √ √ √Capacitor Inspección / Prueba √ √ √Ventilador Helicoidal Inspección / Limpieza √ √ √ √Ventilador Centrífugo Limpieza √ √ √ √Tuberías de cobre Inspección / Limpieza √ √ √ √Gas Refrigerante Medición de nivel √ √ √ √Válvula de Expansión Inspección √ √ √ √Termostato Inspección √ √Filtro deshidratador Inspección √ √Drenaje Inspección / Limpieza √ √ √ √ √ √
132
Tabla 19. – Continuación.
PLAN DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
YORK
Descripción del Equipo Tipo: SplitCapacidad:3, 5 Ton.
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Urbano
Partes del Equipo Actividad Fecha
29/1
1/08
29/1
2/08
28/0
1/09
27/0
2/09
29/0
3/09
28/0
4/09
28/0
5/09
27/0
6/09
27/0
7/09
26/0
8/09
25/0
9/09
Filtro de Aire Limpieza /Lavado √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √Condensador Limpieza / Lavado químico √ √ √Motor Limpieza / Lubricación √ √ √Compresor Limpieza √ √ √Interruptor Inspección √ √ √Contactor Aplicar Limpacontactos √ √ √Capacitor Inspección / Prueba √ √ √Ventilador Helicoidal Inspección / Limpieza √ √ √Ventilador Centrífugo Limpieza √ √ √Tuberías de cobre Inspección / Limpieza √ √ √Gas Refrigerante Medición de nivel √ √ √Válvula de Expansión Inspección √ √ √Termostato Inspección √Filtro deshidratador Inspección √Drenaje Inspección / Limpieza √ √ √ √ √
133
Tabla 19. – Continuación.
PLAN DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
YORK
Descripción del Equipo Tipo: SplitCapacidad:3, 5 Ton.
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Rural - Amb salino
Partes del Equipo Actividad Fecha
10/1
2/06
09/0
1/07
08/0
2/07
10/0
3/07
09/0
4/07
09/0
5/07
08/0
6/07
08/0
7/07
07/0
8/07
06/0
9/07
06/1
0/07
05/1
1/07
Filtro de Aire Limpieza /Lavado √ √ √ √ √ √ √ √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √ √ √ √Condensador Limpieza / Lavado químico √ √ √ √ √ √Motor Limpieza / Lubricación √ √ √ √ √ √Compresor Limpieza √ √ √ √ √ √Interruptor Inspección √ √ √ √ √ √Contactor Aplicar Limpacontactos √ √ √ √ √ √Capacitor Inspección / Prueba √ √ √ √ √ √Ventilador Helicoidal Inspección / Limpieza √ √ √ √ √ √Ventilador Centrífugo Limpieza √ √ √ √ √ √Tuberías de cobre Inspección / Limpieza √ √ √ √ √ √Gas Refrigerante Medición de nivel √ √ √ √ √ √Válvula de Expansión Inspección √ √ √ √ √ √Termostato Inspección √ √ √Filtro deshidratador Inspección √ √Drenaje Inspección / Limpieza √ √ √ √ √ √ √ √ √ √ √ √
134
Tabla 19. – Continuación.
PLAN DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
YORK
Descripción del Equipo Tipo: SplitCapacidad:3, 5 Ton.
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Rural - Amb salino
Partes del Equipo Actividad Fecha
05/1
2/07
04/0
1/08
03/0
2/08
04/0
3/08
03/0
4/08
03/0
5/08
02/0
6/08
02/0
7/08
01/0
8/08
31/0
8/08
30/0
9/08
30/1
0/08
Filtro de Aire Limpieza /Lavado √ √ √ √ √ √ √ √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √ √ √ √Condensador Limpieza / Lavado químico √ √ √ √ √ √Motor Limpieza / Lubricación √ √ √ √ √ √Compresor Limpieza √ √ √ √ √ √Interruptor Inspección √ √ √ √ √ √Contactor Aplicar Limpacontactos √ √ √ √ √ √Capacitor Inspección / Prueba √ √ √ √ √ √Ventilador Helicoidal Inspección / Limpieza √ √ √ √ √ √Ventilador Centrífugo Limpieza √ √ √ √ √ √Tuberías de cobre Inspección / Limpieza √ √ √ √ √ √Gas Refrigerante Medición de nivel √ √ √ √ √ √Válvula de Expansión Inspección √ √ √ √ √ √Termostato Inspección √ √ √Filtro deshidratador Inspección √ √Drenaje Inspección / Limpieza √ √ √ √ √ √ √ √ √ √ √ √
135
Tabla 19. – Continuación.
PLAN DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
YORK
Descripción del Equipo Tipo: SplitCapacidad:3, 5 Ton.
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Rural - Amb salino
Partes del Equipo Actividad Fecha
29/1
1/08
29/1
2/08
28/0
1/09
27/0
2/09
29/0
3/09
28/0
4/09
28/0
5/09
27/0
6/09
27/0
7/09
26/0
8/09
25/0
9/09
Filtro de Aire Limpieza /Lavado √ √ √ √ √ √ √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √ √ √Condensador Limpieza / Lavado químico √ √ √ √ √Motor Limpieza / Lubricación √ √ √ √ √Compresor Limpieza √ √ √ √ √Interruptor Inspección √ √ √ √ √Contactor Aplicar Limpacontactos √ √ √ √ √Capacitor Inspección / Prueba √ √ √ √ √Ventilador Helicoidal Inspección / Limpieza √ √ √ √ √Ventilador Centrífugo Limpieza √ √ √ √ √Tuberías de cobre Inspección / Limpieza √ √ √ √ √Gas Refrigerante Medición de nivel √ √ √ √ √Válvula de Expansión Inspección √ √ √ √ √Termostato Inspección √ √Filtro deshidratador Inspección √Drenaje Inspección / Limpieza √ √ √ √ √ √ √ √ √ √ √
136
Tabla 20. – Programa de mantenimiento para aire acondicionada tipo Multi-split 5 toneladas.
PROGRAMA DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
LG
Descripción del Equipo Tipo: Multi-SplitCapacidad: 5 Ton.
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Urbano
Partes del Equipo Actividad Fecha
10/1
2/06
09/0
1/07
08/0
2/07
10/0
3/07
09/0
4/07
09/0
5/07
08/0
6/07
08/0
7/07
07/0
8/07
06/0
9/07
06/1
0/07
05/1
1/07
Filtros de Aire de unidades interiores Limpieza /Lavado √ √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √ √ √ √Condensador Limpieza / Lavado químico √ √ √ √ √ √Motor Limpieza / Lubricación √ √ √ √ √ √Compresor Limpieza √ √ √ √ √ √Interruptor Inspección √ √ √ √ √ √Contactor Aplicar Limpacontactos √ √ √ √ √ √Capacitor Inspección / Prueba √ √ √ √ √ √Ventilador Helicoidal Inspección / Limpieza √ √ √ √ √ √Impulsores de unidades internas Limpieza √ √ √ √Tarjetas de control de unidades internas Aplicar Limpacontactos √ √ √Tuberías de cobre Inspección / Limpieza √ √ √ √ √ √Gas Refrigerante Medición de nivel √ √ √ √ √ √Válvula de Expansión Inspección √ √ √ √ √ √Termostato Inspección √ √ √Filtro deshidratador Inspección √ √Drenaje Inspección / Limpieza √ √ √ √ √ √
137
Tabla 20. – Continuación.
PROGRAMA DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
LG
Descripción del Equipo Tipo: Multi-SplitCapacidad: 5 Ton.
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Urbano
Partes del Equipo Actividad Fecha
05/1
2/07
04/0
1/08
03/0
2/08
04/0
3/08
03/0
4/08
03/0
5/08
02/0
6/08
02/0
7/08
01/0
8/08
31/0
8/08
30/0
9/08
30/1
0/08
Filtros de Aire de unidades interiores Limpieza /Lavado √ √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √ √ √ √Condensador Limpieza / Lavado químico √ √ √ √ √ √Motor Limpieza / Lubricación √ √ √ √ √ √Compresor Limpieza √ √ √ √ √ √Interruptor Inspección √ √ √ √ √ √Contactor Aplicar Limpacontactos √ √ √ √ √ √Capacitor Inspección / Prueba √ √ √ √ √ √Ventilador Helicoidal Inspección / Limpieza √ √ √ √ √ √Impulsores de unidades internas Limpieza √ √ √ √Tarjetas de control de unidades internas Aplicar Limpacontactos √ √ √Tuberías de cobre Inspección / Limpieza √ √ √ √ √ √Gas Refrigerante Medición de nivel √ √ √ √ √ √Válvula de Expansión Inspección √ √ √ √ √ √Termostato Inspección √ √ √Filtro deshidratador Inspección √ √Drenaje Inspección / Limpieza √ √ √ √ √ √
138
Tabla 20. – Continuación.
PROGRAMA DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
LG
Descripción del Equipo Tipo: Multi-SplitCapacidad: 5 Ton.
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Urbano
Partes del Equipo Actividad Fecha
29/1
1/08
29/1
2/08
28/0
1/09
27/0
2/09
29/0
3/09
28/0
4/09
28/0
5/09
27/0
6/09
27/0
7/09
26/0
8/09
25/0
9/09
Filtros de Aire de unidades interiores Limpieza /Lavado √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √ √ √Condensador Limpieza / Lavado químico √ √ √ √ √Motor Limpieza / Lubricación √ √ √ √ √Compresor Limpieza √ √ √ √ √Interruptor Inspección √ √ √ √ √Contactor Aplicar Limpacontactos √ √ √ √ √Capacitor Inspección / Prueba √ √ √ √ √Ventilador Helicoidal Inspección / Limpieza √ √ √ √ √Impulsores de unidades internas Limpieza √ √ √Tarjetas de control de unidades internas Aplicar Limpacontactos √ √Tuberías de cobre Inspección / Limpieza √ √ √ √ √Gas Refrigerante Medición de nivel √ √ √ √ √Válvula de Expansión Inspección √ √ √ √ √Termostato Inspección √ √Filtro deshidratador Inspección √Drenaje Inspección / Limpieza √ √ √ √ √
139
Tabla 21. – Programa de mantenimiento para aire acondicionada tipo split 30K BTU.
PROGRAMA DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
LG
Descripción del Equipo Tipo: SplitCapacidad: 30K BTU
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Urbano
Partes del Equipo Actividad Fecha
10/1
2/06
09/0
1/07
08/0
2/07
10/0
3/07
09/0
4/07
09/0
5/07
08/0
6/07
08/0
7/07
07/0
8/07
06/0
9/07
06/1
0/07
05/1
1/07
Filtro de Aire Limpieza /Lavado √ √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √ √Condensador Limpieza / Lavado químico √ √ √ √Motor Limpieza / Lubricación √ √ √ √Compresor Limpieza √ √ √ √Interruptor Inspección √ √ √Capacitor Inspección / Prueba √ √ √Ventilador de Condensador Inspección / Limpieza √ √ √ √Impulsor Limpieza √ √ √ √Tuberías de cobre Inspección / Limpieza √ √ √ √Gas Refrigerante Medición de nivel √ √ √ √Válvula de Expansión Inspección √ √ √ √Termostato Inspección √ √Filtro deshidratador Inspección √ √Drenaje Inspección / Limpieza √ √ √ √ √ √
140
Tabla 21. – Continuación.
PROGRAMA DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
LG
Descripción del Equipo Tipo: SplitCapacidad: 30K BTU
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Urbano
Partes del Equipo Actividad Fecha
05/1
2/07
04/0
1/08
03/0
2/08
04/0
3/08
03/0
4/08
03/0
5/08
02/0
6/08
02/0
7/08
01/0
8/08
31/0
8/08
30/0
9/08
30/1
0/08
Filtro de Aire Limpieza /Lavado √ √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √ √Condensador Limpieza / Lavado químico √ √ √ √Motor Limpieza / Lubricación √ √ √ √Compresor Limpieza √ √ √ √Interruptor Inspección √ √ √Capacitor Inspección / Prueba √ √ √Ventilador de Condensador Inspección / Limpieza √ √ √ √Impulsor Limpieza √ √ √ √Tuberías de cobre Inspección / Limpieza √ √ √ √Gas Refrigerante Medición de nivel √ √ √ √Válvula de Expansión Inspección √ √ √ √Termostato Inspección √ √Filtro deshidratador Inspección √ √Drenaje Inspección / Limpieza √ √ √ √ √ √
141
Tabla 21. – Continuación.
PROGRAMA DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
LG
Descripción del Equipo Tipo: SplitCapacidad: 30K BTU
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Urbano
Partes del Equipo Actividad Fecha
29/1
1/08
29/1
2/08
28/0
1/09
27/0
2/09
29/0
3/09
28/0
4/09
28/0
5/09
27/0
6/09
27/0
7/09
26/0
8/09
25/0
9/09
Filtro de Aire Limpieza /Lavado √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √Condensador Limpieza / Lavado químico √ √ √Motor Limpieza / Lubricación √ √ √Compresor Limpieza √ √ √Interruptor Inspección √ √ √Capacitor Inspección / Prueba √ √ √Ventilador de Condensador Inspección / Limpieza √ √ √Impulsor Limpieza √ √ √Tuberías de cobre Inspección / Limpieza √ √ √Gas Refrigerante Medición de nivel √ √ √Válvula de Expansión Inspección √ √ √Termostato Inspección √Filtro deshidratador Inspección √Drenaje Inspección / Limpieza √ √ √ √ √
142
Tabla 22. – Programa de mantenimiento para aire acondicionada tipo compacto 5 a 20 toneladas.
PROGRAMA DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
CARRIER
Descripción del Equipo Tipo: CompactoCapacidad: 5 a 20 Ton.
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Urbano
Partes del Equipo Actividad Fecha
10/1
2/06
09/0
1/07
08/0
2/07
10/0
3/07
09/0
4/07
09/0
5/07
08/0
6/07
08/0
7/07
07/0
8/07
06/0
9/07
06/1
0/07
05/1
1/07
Filtro de Aire Limpieza /Lavado √ √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √ √Condensador Limpieza / Lavado químico √ √ √ √Motor Limpieza / Lubricación √ √ √ √Compresor Limpieza √ √ √Interruptor Inspección √ √ √Contactor Aplicar Limpacontactos √ √ √Capacitor Inspección / Prueba √ √ √Ventilador Helicoidal Inspección / Limpieza √ √ √ √Impulsor Limpieza √ √ √ √Tarjeta de circuito eléctrico Aplicar Limpacontactos √ √Tuberías de cobre Inspección / Limpieza √ √Gas Refrigerante Medición de nivel √ √Válvula de Expansión Inspección √ √Termostato Inspección √ √Filtro deshidratador Inspección √ √Drenaje Inspección / Limpieza √ √ √ √ √ √
143
Tabla 22. – Continuación.
PROGRAMA DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
CARRIER
Descripción del Equipo Tipo: CompactoCapacidad: 5 a 20 Ton.
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Urbano
Partes del Equipo Actividad Fecha
05/1
2/07
04/0
1/08
03/0
2/08
04/0
3/08
03/0
4/08
03/0
5/08
02/0
6/08
02/0
7/08
01/0
8/08
31/0
8/08
30/0
9/08
30/1
0/08
Filtro de Aire Limpieza /Lavado √ √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √ √Condensador Limpieza / Lavado químico √ √ √ √Motor Limpieza / Lubricación √ √ √ √Compresor Limpieza √ √ √Interruptor Inspección √ √ √Contactor Aplicar Limpacontactos √ √ √Capacitor Inspección / Prueba √ √ √Ventilador Helicoidal Inspección / Limpieza √ √ √ √Impulsor Limpieza √ √ √ √Tarjeta de circuito eléctrico Aplicar Limpacontactos √ √Tuberías de cobre Inspección / Limpieza √ √Gas Refrigerante Medición de nivel √ √Válvula de Expansión Inspección √ √Termostato Inspección √ √Filtro deshidratador Inspección √ √Drenaje Inspección / Limpieza √ √ √ √ √ √
144
Tabla 22. – Continuación.
PROGRAMA DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
CARRIER
Descripción del Equipo Tipo: CompactoCapacidad: 5 a 20 Ton.
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Urbano
Partes del Equipo Actividad Fecha
29/1
1/08
29/1
2/08
28/0
1/09
27/0
2/09
29/0
3/09
28/0
4/09
28/0
5/09
27/0
6/09
27/0
7/09
26/0
8/09
25/0
9/09
Filtro de Aire Limpieza /Lavado √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √Condensador Limpieza / Lavado químico √ √ √Motor Limpieza / Lubricación √ √ √Compresor Limpieza √ √Interruptor Inspección √ √Contactor Aplicar Limpacontactos √ √Capacitor Inspección / Prueba √ √Ventilador Helicoidal Inspección / Limpieza √ √ √Impulsor Limpieza √ √ √Tarjeta de circuito eléctrico Aplicar Limpacontactos √Tuberías de cobre Inspección / Limpieza √Gas Refrigerante Medición de nivel √Válvula de Expansión Inspección √Termostato Inspección √Filtro deshidratador Inspección √Drenaje Inspección / Limpieza √ √ √ √ √
145
Tabla 23. – Programa de mantenimiento para aire acondicionada tipo split 5 a 15 toneladas.
PROGRAMA DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
CARRIER
Descripción del Equipo Tipo: SplitCapacidad: 5 a 15 Ton.
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Rural
Partes del Equipo Actividad Fecha
10/1
2/06
09/0
1/07
08/0
2/07
10/0
3/07
09/0
4/07
09/0
5/07
08/0
6/07
08/0
7/07
07/0
8/07
06/0
9/07
06/1
0/07
05/1
1/07
Filtro de Aire Limpieza /Lavado √ √ √ √ √ √ √ √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √ √Condensador Limpieza / Lavado químico √ √ √ √Motor Limpieza / Lubricación √ √ √ √Compresor Limpieza √ √ √ √Interruptor Inspección √ √ √ √Contactor Aplicar Limpacontactos √ √ √ √Capacitor Inspección / Prueba √ √ √ √Ventilador Helicoidal Inspección / Limpieza √ √ √ √Impulsor Limpieza √ √ √ √Tarjeta de circuito eléctrico Aplicar Limpacontactos √ √Tuberías de cobre Inspección / Limpieza √ √Gas Refrigerante Medición de nivel √ √Válvula de Expansión Inspección √ √Termostato Inspección √ √Filtro deshidratador Inspección √ √Drenaje Inspección / Limpieza √ √ √ √ √ √ √ √ √ √ √ √
146
Tabla 23. – Continuación.
PROGRAMA DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
CARRIER
Descripción del Equipo Tipo: SplitCapacidad: 5 a 15 Ton.
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Rural
Partes del Equipo Actividad Fecha
05/1
2/07
04/0
1/08
03/0
2/08
04/0
3/08
03/0
4/08
03/0
5/08
02/0
6/08
02/0
7/08
01/0
8/08
31/0
8/08
30/0
9/08
30/1
0/08
Filtro de Aire Limpieza /Lavado √ √ √ √ √ √ √ √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √ √Condensador Limpieza / Lavado químico √ √ √ √Motor Limpieza / Lubricación √ √ √ √Compresor Limpieza √ √ √ √Interruptor Inspección √ √ √ √Contactor Aplicar Limpacontactos √ √ √ √Capacitor Inspección / Prueba √ √ √ √Ventilador Helicoidal Inspección / Limpieza √ √ √ √Impulsor Limpieza √ √ √ √Tarjeta de circuito eléctrico Aplicar Limpacontactos √ √Tuberías de cobre Inspección / Limpieza √ √Gas Refrigerante Medición de nivel √ √Válvula de Expansión Inspección √ √Termostato Inspección √ √Filtro deshidratador Inspección √ √Drenaje Inspección / Limpieza √ √ √ √ √ √ √ √ √ √ √ √
147
Tabla 23. – Continuación.
PROGRAMA DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
CARRIER
Descripción del Equipo Tipo: SplitCapacidad: 5 a 15 Ton.
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Rural
Partes del Equipo Actividad Fecha
29/1
1/08
29/1
2/08
28/0
1/09
27/0
2/09
29/0
3/09
28/0
4/09
28/0
5/09
27/0
6/09
27/0
7/09
26/0
8/09
25/0
9/09
Filtro de Aire Limpieza /Lavado √ √ √ √ √ √ √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √Condensador Limpieza / Lavado químico √ √ √Motor Limpieza / Lubricación √ √ √Compresor Limpieza √ √ √Interruptor Inspección √ √ √Contactor Aplicar Limpacontactos √ √ √Capacitor Inspección / Prueba √ √ √Ventilador Helicoidal Inspección / Limpieza √ √ √Impulsor Limpieza √ √ √Tarjeta de circuito eléctrico Aplicar Limpacontactos √Tuberías de cobre Inspección / Limpieza √Gas Refrigerante Medición de nivel √Válvula de Expansión Inspección √Termostato Inspección √Filtro deshidratador Inspección √Drenaje Inspección / Limpieza √ √ √ √ √ √ √ √ √ √ √
148
Tabla 24. – Programa de mantenimiento para aire acondicionada tipo mini-split 15 a 24K BTU.
PROGRAMA DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
CARRIER, LG
Descripción del Equipo Tipo: Mini SplitCapacidad: 15K a 24K BTU
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Normal
Partes del Equipo Actividad Fecha
10/1
2/06
09/0
1/07
08/0
2/07
10/0
3/07
09/0
4/07
09/0
5/07
08/0
6/07
08/0
7/07
07/0
8/07
06/0
9/07
06/1
0/07
05/1
1/07
Filtro de Aire Limpieza /Lavado √ √ √ √ √ √ √ √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √ √ √ √Condensador Limpieza / Lavado químico √ √ √ √ √ √Motor Limpieza / Lubricación √ √ √ √ √ √Compresor Limpieza √ √ √ √ √ √Capacitor Inspección / Prueba √ √ √Ventilador de Condensador Inspección / Limpieza √ √ √ √Impulsor Limpieza √ √ √ √Tuberías de cobre Inspección / Limpieza √ √ √ √Gas Refrigerante Medición de nivel √ √ √ √Válvula de Expansión Inspección √ √ √ √Termostato Inspección √ √Filtro deshidratador Inspección √ √Drenaje Inspección / Limpieza √ √ √ √ √ √ √ √ √ √ √ √
149
Tabla 24. – Continuación.
PROGRAMA DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
CARRIER, LG
Descripción del Equipo Tipo: Mini SplitCapacidad: 15K a 24K BTU
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Normal
Partes del Equipo Actividad Fecha
05/1
2/07
04/0
1/08
03/0
2/08
04/0
3/08
03/0
4/08
03/0
5/08
02/0
6/08
02/0
7/08
01/0
8/08
31/0
8/08
30/0
9/08
30/1
0/08
Filtro de Aire Limpieza /Lavado √ √ √ √ √ √ √ √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √ √ √ √Condensador Limpieza / Lavado químico √ √ √ √ √ √Motor Limpieza / Lubricación √ √ √ √ √ √Compresor Limpieza √ √ √ √ √ √Capacitor Inspección / Prueba √ √ √Ventilador de Condensador Inspección / Limpieza √ √ √ √Impulsor Limpieza √ √ √ √Tuberías de cobre Inspección / Limpieza √ √ √ √Gas Refrigerante Medición de nivel √ √ √ √Válvula de Expansión Inspección √ √ √ √Termostato Inspección √ √Filtro deshidratador Inspección √ √Drenaje Inspección / Limpieza √ √ √ √ √ √ √ √ √ √ √ √
150
PROGRAMA DE MANTENIMIENTO PARA AIRE ACONDICIONADO Marca
CARRIER, LG
Descripción del Equipo Tipo: Mini SplitCapacidad: 15K a 24K BTU
Fecha Inicial: 10/11/2006Condición de uso: Continuo - Rural
Partes del Equipo Actividad Fecha
29/1
1/08
29/1
2/08
28/0
1/09
27/0
2/09
29/0
3/09
28/0
4/09
28/0
5/09
27/0
6/09
27/0
7/09
26/0
8/09
25/0
9/09
Filtro de Aire Limpieza /Lavado √ √ √ √ √ √ √ √ √ √ √Evaporador Limpieza / Lavado químico √ √ √ √ √Condensador Limpieza / Lavado químico √ √ √ √ √Motor Limpieza / Lubricación √ √ √ √ √Compresor Limpieza √ √ √ √ √Capacitor Inspección / Prueba √ √ √Ventilador de Condensador Inspección / Limpieza √ √ √Impulsor Limpieza √ √ √Tuberías de cobre Inspección / Limpieza √ √ √Gas Refrigerante Medición de nivel √ √ √Válvula de Expansión Inspección √ √ √Termostato Inspección √Filtro deshidratador Inspección √Drenaje Inspección / Limpieza √ √ √ √ √ √ √ √ √ √ √
Tabla 24. – Continuación.
151
Tabla 25. – Programa de mantenimiento para equipos de telecomunicaciones.
PLAN DE MANTENIMIENTO PARA EQUIPOS DE TELECOMUNICACIONES
Fecha Inicial: 10/11/2006Condición de uso: Continuo
Descripción del Equipo Actividad Fecha
05/1
1/07
30/1
0/08
25/1
0/09
20/1
0/10
15/1
0/11
09/1
0/12
04/1
0/13
29/0
9/14
24/0
9/15
18/0
9/16
13/0
9/17
Repetidor modelo Quantar Ajuste de Oscilador √ √ √ √ √ √ √ √ √ √ √Repetidor modelo Quantar Verificación de Potencia Reflejada √ √ √ √ √ √ √ √ √ √ √Repetidor modelo Quantar Verificación de Potencia de Salida √ √ √ √ √ √ √ √ √ √ √Repetidor modelo Quantar Verificación y Ajuste de desviación √ √ √ √ √ √Conectores de antenas de Tx y Rx Inspección y cambio de teipes √ √ √ √ √ √Soporte de antenas de Tx y Rx Limpieza y pintura √ √ √ √ √ √Pernos de soporte de antenas Inspección √ √ √ √ √ √Banco de baterías Limpieza de terminales √ √ √ √ √ √ √ √ √ √ √Rectificador - Cargador de baterías Verificación y ajuste voltaje de salida √ √ √ √ √ √ √ √ √ √ √Radio portátil modelo LTS 2000 o Serie PRO Ajuste de Oscilador √ √ √ √ √ √Radio portátil modelo LTS 2000 o Serie PRO Inspección de pulsadores √ √ √ √ √ √Radio portátil modelo LTS 2000 o Serie PRO Inspección de base de antena √ √ √ √ √ √Radio portátil modelo LTS 2000 o Serie PRO Prueba de selectores √ √ √ √ √ √Radio portátil modelo LTS 2000 o Serie PRO Verificación de Potencia de Salida √ √ √ √ √ √Radio portátil modelo LTS 2000 o Serie PRO Verificación y Ajuste de desviación √ √ √ √ √ √Radio móvil MCS 2000 o LCS 2000 Ajuste de Oscilador √ √ √ √ √ √Radio móvil MCS 2000 o LCS 2000 Verificación de Potencia Reflejada √ √ √ √ √ √Radio móvil MCS 2000 o LCS 2000 Verificación de Potencia de salida √ √ √ √ √ √Radio móvil MCS 2000 o LCS 2000 Inspección de conectores √ √ √ √ √ √Radio móvil MCS 2000 o LCS 2000 Verificación y Ajuste de desviación √ √ √ √ √ √UPS marca APC Verificación de baterías √ √ √ √ √ √ √ √ √ √ √
152
4.4.4. - Formatos a utilizar en labores de mantenimiento.
Los siguientes son los formatos diseñados para utilizar en las labores de mantenimiento.
Estos formatos servirán para introducir la información en ellos recopilada en la base de datos
del sistema automatizado. A continuación se muestra el formato de solicitud de trabajo.
Nombre y Apellido del Solicitante:
Seleccione el tipo de equipo/maquinaria:
Crown Victoria Yamaha Computadora CarrierImpala Suzuki Calculadora YorkFour Runner BMW Teléfono LGD-Max Kawasaki Impresora General ElectricB-2600 Filtro SamsungCherokee MicroondasAutana NeveraPeugeot
Número o Identificación del equipo/maquinaria:
Ubicación del Equipo/Maquinaria;
Describa avería o motivo de la solicitud:
SOLICITUD DE SERVICIO / REPARACION
Firma del SolicitanteC.I.
VEHICULO MOTOCICLETA EQUIPO DE OFICINA AIRE ACONDICIONADO
Logotipo Aqui
Figura 2. – Formato para solicitud de trabajo.
153
Formato de mantenimiento preventivo de vehículos:
Número o Identificación de Vehículo: Fecha de Inicio:
CambiarReemplazarInspecciónInspección y ajusteInspección y limpieza
Mangueras y tuberías de sistema de frenos Inspección y ajusteInspecciónRotarInspecciónInspección y lubricaciónInspección/CompletarCambiarCambiarInspección / LubricaciónInspección / LubricaciónLimpiezaInspecciónInspecciónReemplazarReemplazarInspección / reemplazarInspecciónInspección / LimpiezaReemplazarCambioInspección / ajusteInspecciónReemplazar
Cantidad Descripción
MANTENIMIENTO DE VEHICULOS
Cadena del Tiempo
SUMINISTROS UTILIZADOSOrigen
Filtro de gasolinaLíquido de Caja de TransferenciaApertura de válvulasDispositivo de Control de emisiones
BujíasCorrea del MotorTapa de GasolinaSistema de Gasolina (Tanque, mangueras, bomba, inyectores)
Sistema de enfriamientoSistema de escapeRolineras de ruedasRefrigerante
Fluido de Diferencial delanteroFluido de Diferencial traseroDiferencialDiferencial Trasero
Rines + CauchosFiltro de AireSistema de Dirección y SuspensiónLíquido de Transmisión automática
Terminales y muñonesPernos y tuercas de chasisSistema de Frenos (Tacos, bandas, protectores)
Tripoides
ActividadComponenteAceite de MotorFiltro de Aceite
Logotipo Aqui
Figura 3. – Formato para mantenimiento preventivo de vehículos.
154
Fecha de Culminación:
Jefe Mantenimiento:
Supervisor General:
REVISADO POR FIRMA
Supervisor Cuadrilla:
Nombre de Técnicos mecánicos Especialidad
Figura 3. – Continuación.
155
Formato de mantenimiento preventivo de aires acondicionados:
Número o Identificación del Equipo: Fecha de Inicio:
Limpieza /Lavado
Limpieza / Lavado químico
Limpieza / Lavado químico
Limpieza / Lubricación
Limpieza
Inspección
Aplicar Limpacontactos
Inspección / Prueba
Inspección / Limpieza
Limpieza
Aplicar Limpacontactos
Inspección / Limpieza
Medición de nivel
Inspección
Inspección
Inspección
Inspección / Limpieza
Aplicar Limpacontactos
Inspección / Limpieza
Limpieza
Cantidad Descripción
ActividadComponente
Compresor
Interruptor
Filtro de Aire
Evaporador
Condensador
Motor
Gas Refrigerante
Válvula de Expansión
Contactor
Capacitor
Ventilador Helicoidal
Impulsor
Ventilador Condensador
Ventilador Centrífugo
MANTENIMIENTO DE AIRES ACONDICIONADOS
Termostato
Filtro deshidratador
Drenaje
Tarjeta de Control
Tarjeta de circuito eléctrico
Tuberías de cobre
SUMINISTROS UTILIZADOS
Origen
Logotipo Aqui
Figura 4. – Formato para mantenimiento preventivo de aires acondicionados.
156
Fecha de Culminación:
Nombre de Técnicos mecánicos Especialidad
REVISADO POR FIRMA
Supervisor Cuadrilla::
Supervisor General:
Jefe Mantenimiento:
Figura 4. – Continuación.
157
Formato para Reparación de vehículos (mantenimiento correctivo):
Número o Identificación de Vehículo: Fecha de Inicio:
CambioCambioCambioCambioCambioCambioReparaciónReparación / CambioReparación / CambioCambioCambioCambioReparaciónReparación / CambioReparaciónReparación / CambioCambioCambioReparación / CambioCambio
Motor Limpiavidrios Reparación / Cambio
Motivo de la Reparación:
Cantidad Descripción
Componente
Terminales y muñonesSistema de Frenos (Disco o Tambor)
REPARACION DE VEHICULOS
CompresorEvaporadorCondensador
Tripoides
Motor de Arranque
Actividad
Sistema de Dirección (Bomba dirección, ejes)
CauchosSistema de Suspensión (Amortiguadores)
Batería
Transmisión automáticaDiferencial delanteroDiferencial TraseroSistema de enfriamiento (Radiador)Rolineras de ruedasBomba de GasolinaMotor
Caja de Transferencia
Alternador
SUMINISTROS UTILIZADOS
Origen
Logotipo Aqui
Figura 5. – Formato para reparación de vehículos.
158
Cantidad Descripción
Fecha de Culminación:
SUMINISTROS UTILIZADOS
Origen
Nombre de Técnicos mecánicos Especialidad
REVISADO POR FIRMA
Supervisor Cuadrilla:
Supervisor General:
Jefe Mantenimiento:
Figura 5 – Continuación.
159
Formato para reparación de airea acondicionados (mantenimiento correctivo):
Número o Identificación del Equipo: Fecha de Inicio:
Cambio
Cambio
Reparación / Cambio
Reparación / Cambio
Cambio
Cambio
Cambio
Reparación / Cambio
Reparación / Cambio
Reparación / CambioCambio
Cambio
Cambio
CambioReparación / Cambio
Reparación / Cambio
Reparación / Cambio
Motivo de la Reparación:
Cantidad Descripción
REPARACION DE AIRES ACONDICIONADOS
Origen
SUMINISTROS UTILIZADOS
Ventilador Condensador
Ventilador Centrífugo
Termostato
Filtro deshidratadorTarjeta de Control
Tarjeta de circuito eléctricoTuberías de cobre
Válvula de Expansión
Contactor
Capacitor
Ventilador Helicoidal
Impulsor
ActividadComponente
Compresor
Interruptor
Evaporador
Condensador
Motor
Logotipo Aqui
Figura 6. – Formato para reparación de aires acondicionados.
160
161
Cantidad Descripción
Fecha de Culminación:
Jefe Mantenimiento:
Supervisor General:
REVISADO POR FIRMA
Supervisor Cuadrilla::
SUMINISTROS UTILIZADOS
Nombre de Técnicos mecánicos Especialidad
Origen
Figura 6. – Continuación.
4.5. – Índices de control para medir efectividad del sistema
Se realizaron reuniones con el personal de mantenimiento de las instituciones policiales
para proponer y concertar la modalidad para evaluar el ejercicio de los procesos de
mantenimiento en forma contínua. Esto se logra a través de los llamados índices o indicadores
de control. Un índice de control es una expresión numérica que nos permite monitorear un
proceso o función de gestión dada. Los índices de control permiten tomar decisiones a través
de la información que suministran para mejorar y corregir el proceso que se está evaluando.
Tradicionalmente los indicadores se han visto reactivamente, o sea, utilizándolos para
mirar hacia atrás con vistas a planear el futuro, sin embargo se ha venido provocando un
cambio en este sentido encaminado a utilizar los indicadores con una visión proactiva, o sea,
para tomar decisiones hacia el futuro, manejándolos. Las características fundamentales que
deben cumplir los indicadores de mantenimiento, siempre con la mirada puesta en lo qué se
desea alcanzar con el mantenimiento, son las siguientes:
Pocos, pero suficientes para analizar la gestión.
Claros de entender y calcular.
Útiles para conocer rápidamente como van las cosas y por qué.
Por esta razón los índices deben:
Identificar los factores claves del mantenimiento.
Dar los elementos necesarios que permiten realizar una evaluación profunda de la
actividad en cuestión.
Establecer un registro de datos que permita su cálculo periódico.
Controlar los objetivos propuestos comparando los valores reales con los valores
planificados.
Facilitar la toma de decisiones y acciones oportunas ante las desviaciones que se
puedan presentar.
Puesto que en las instituciones policiales estudiadas no se encontró ningún tipo de
indicadores de gestión de mantenimiento, se seleccionaron los siguientes índices de clase
mundial que pueden ser aplicados en estos organismos:
162
A continuación se muestran los índices de control seleccionados:
Tabla No. 25 – Indices de control
Indice Objetivo Fórmula Descripción
Tiempo promedio entre fallas
Indica el intervalo de tiempo más probable entre un arranque y la aparición de un fallo; es decir, es el tiempo medio transcurrido hasta la llegada del evento "fallo". Mientras mayor sea su valor, mayor es la confiabilidad del componente o equipo.
NoIT = Número de itemsTOP = Tiempo de OperaciónNTF = Número total de fallas observadas en los items en el período
Tiempo promedio para la falla
Mide el tiempo promedio que es capaz de operar el equipo a capacidad sin interrupciones dentro del período considerado; este constituye un indicador indirecto de la confiabilidad del equipo o sistema. El Tiempo Promedio para Fallar también es llamado "Tie
TOP =Tiempo total de operación de un conjunto de ítemsNTF =Número total de fallas observadas en esos ítems en el período
Tiempo promedio para reparar
Mide la distribución del tiempo de reparación de un equipo. Este indicador mide la efectividad en restituir la unidad a condiciones óptimas de operación una vez que la unidad se encuentra fuera de servicio por una falla, dentro de un período de tiempo det
TMC =Tiempo total en mantenimiento correctivo en un conjunto de ítems.NTF =Número total de fallas detectadas en esos ítems en el período
DisponibilidadEstimar en forma global el porcentaje de tiempo total en que se puede esperar que un equipo esté disponible para cumplir la función para la cual fue destinado.
TOP =Tiempo total de operación de un equipo en un período.TMN =Tiempo total en mantenimiento (preventivo, correctivo y otros) de ese equipo en el período.
NTFNoITxTOPTMEF
NTFTOP
TPPF
NTFTMC
TPPF
100xTMNTOP
TOPDisp
163
164
Tabla 25. – Continuación.
Indice Objetivo Fórmula Descripción
Trabajo en mantenimiento programado
Mide la distribución del tiempo empleado por el personal en mantenimientos preventivos en relación con el tiempo total de disponibilidad del personal
TMP =Tiempo total empleado por el personal en mantenimientos preventivos en un período.TTD =Tiempo total de disponibilidad del pesonal en el período.
Trabajo en mantenimiento correctivo
Mide la distribución del tiempo empleado por el personal en mantenimientos correctivos o no programados en relación con el tiempo total de disponibilidad del personal
TMC =Tiempo total empleado por el personal en mantenimientos preventivos en un período.TTD =Tiempo total de disponibilidad del pesonal en el período.
Trabajo en otras actividades
Mide la distribución del tiempo empleado por el personal en actividades no ligadas al mantenimiento en relación con el tiempo total de disponibilidad del personal
TOA =Tiempo total empleado por el personal en actividades no ligadas a mantenimiento en un período.TTD =Tiempo total de disponibilidad del pesonal en el período.
Tiempo en espera de repuestos
Mide el tiempo promedio en que los equipos se encuentran en espera de repuestos en un período dado.
TER =Tiempo total en que los equipos se encuentran esperando repuestos en un período.TT =Tiempo total del período.
Tasa de frecuencia Accidentes
Mide la frecuencia de accidentes ocurridos al personal de mantenimiento en un período dado.
NoAcc =Número de accidentes ocurridos al personal de mantenimiento en un período de trabajo dado.HHTB =Tiempo total del período de horas hombre trabajadas.
100xTTDTMP
TMPt
100xTTDTMC
TMCt
100xTTD
TOATOAt
100xTTTER
TERt
HHTBAccNoTacc .
4.6. Parámetros a ser considerados por el sistema automatizado para la programación y
seguimiento de las actividades de mantenimiento.
Se efectuaron reuniones con el presonal encargado del mantenimiento de las instituciones
policiales para determinaron cuales son los parámetros y campos de información que deben
considerarse en el desarrollo del sistema automatizado. Los parámetros servirán de base para
crear los campos de datos de la base de datos general del sistema. Cada parámetro puede dar
a lugar la creación de un campo o conjunto de campos de datos que guardan relación directa
con ese parámetro. Los campos de datos serán definidos en el siguiente objetivo mediante el
desarrollo del sistema automatizado. Como resultado de estas reuniones se definieron los
siguientes parámetros a considerar por el sistema automatizado:
Número o código de equipo o maquinaria.
Descripción de equipo o maquinaria.
Categoría de equipo o maquinaria.
Modelo de equipo o maquinaria.
Estatus de equipo o maquinaria.
Garantía de equipos o maquinarias.
Fabricante del equipo o maquinaria.
Criticidad de equipo o maquinaria
Número o código de locación o ubicación.
Descripción de la locación o ubicación.
Número o código de departamento.
Descripción de departamento.
Número o código de empleado.
Información del empleado.
Área de trabajo del empleado.
Tipo de acceso al sistema del empleado.
Número o código de parte.
Descripción de parte.
Ubicación de parte.
Nivel máximo en inventario de parte.
Nivel mínimo en inventario de parte.
Punto de reorden.
Recepción de partes.
Entrega de partes.
165
166
Órdenes de compra de partes.
Número o código de proveedor.
Número o código de solicitud de trabajo.
Descripción de solicitud de trabajo.
Estatus de solicitud de trabajo.
Número o código de órden de trabajo.
Descripción de órden de trabajo.
Estatus de órden de trabajo.
Número o código de mantenimiento preventivo por fecha.
Descripción de mantenimiento preventivo por fecha.
Fecha de ejecución y próximo mantenimiento preventivo.
Número o código de mantenimiento preventivo por medidor.
Descripción de mantenimiento preventivo por medidor.
Medida de ejecución y próximo mantenimiento preventivo.
Número o código de actividad de mantenimiento preventivo.
Descripción de actividad de mantenimiento preventivo.
4.7. Desarrollar el programa para computadoras con interfaz hombre-maquina amigable
con el objeto de hacer facil su operabilidad
Para desarrollar el código de programa del sistema automatizado es necesario establecer
una codificación para algunas variables que se manejarán en la aplicación. A continuación se
describe la codificación seleccionada y descripción para las variables indicadas.
Código para solicitudes de trabajo y órdenes de trabajo.
Para la identificación de las solicitudes y órdenes de trabajo se seleccionó un código de
diez cifras numéricas. Se utilizó el mismo código para estas dos variables para brindar facilidad
al usuario haciendo coincidir el número de solicitud con el número de la orden de trabajo,
aclarando que puede crearse una solicitud de trabajo sin generarse la orden de trabajo
correspondiente hasta que el usuario decida hacerlo.
Formato del código: XXXXXXXXXX = Número de solicitud u orden de trabajo.
Código para Empleados.
Para la identificación de los empleados se seleccionó un código de cuatro caracteres
alfanuméricos.
Formato del Código: XYYY, donde
X = Tipo de empleado
YYY = Número de empleado.
Código para Instrucciones.
Las instrucciones son listas de procedimientos que el personal debe seguir cuando
ejecuta las labores de mantenimiento de los equipos y maquinarias. Cada lista de instrucciones
presenta el procedimiento a seguir en forma secuencial de forma que el personal pueda verificar
que cada paso se vaya ejecutando y no permitir que se pase por alto alguno de ellos. Para la
identificación de las listas de instrucciones en el sistema se seleccionó un código de siete
caracteres alfanuméricos,
167
Formato del código: XXXXYYY, donde
XXXX = Identificador de tipo de instrucciones.
YYY = Número de actividad.
4.7.1. - Selección de lenguaje de programación
Para la selección de un lenguaje de programación uno de los puntos mas importantes a
considerar es el equilibrio de las características funcionales del lenguaje con aspectos como
costo, complejidad y soporte. También es importante considerar el tipo de aplicación que se
quiere desarrollar ya que dependiento de ésta existen lenguajes mas apropiados que otros. Los
lenguajes de programación han evolucionado desde los conocidos como “lenguajes de bajo
nivel” o “lenguajes de máquina” que se caracterízan por ser complicados en la programación. A
partir de éstos se inventaron nuevos lenguajes menos complicados y se creó una clasificación
llamada “generación del lenguaje”. Actualmente los lenguajes de programación se clasifican
como lenguajes de primera a quinta generación, lenguajes de programación orientada a objetos
y lenguajes de programación visual. Se realizó una investigación de los lenguajes de
programación actuales tomando en cuenta aspectos como facilidad, interactividad,
compatibilidad y soporte documental. Entre los lenguajes evaluados se encuentran FoxPro,
Clarion, Ms-Access, Sql, MySql, Delphi, Visual Basic, PowerBuilder y Php. Para la
programación de la aplicación a desarrollar en esta investigación se seleccionó un lenguaje de
consulta de bases de datos ya que el programa maneja gran cantidad de datos y a su vez un
lenguaje de programación orientado a objetos ya que permite dividir el programa en sub-
módulos o sub-aplicaciones cada una con programación independiente y con acceso a la
misma base de datos, lo que representa una gran ventaja y facilidad en la programación. Como
lenguaje de programación para el manejo de la base de datos se seleccionó el lenguaje SQL
(Structured Query Language) que es un lenguaje estándar de comunicación con bases de datos
y que por ser un lenguaje normalizado tiene la ventaja de trabajar con cualquier otro tipo de
lenguaje. Aparte de esta universalidad, el SQL posee otras dos características muy apreciadas:
por una parte, presenta una potencia y versatilidad notables que contrasta, por otra, con su
accesibilidad de aprendizaje. Por otra parte se seleccionó la aplicación Ms-Access para el
desarrollo de la interfaz de usuario del programa. El Ms-Access es un sistema de gestión de
datos, complatible con SQL, de fácil programación y cuyo lenguaje es orientado a objetos. Entre
las funcionalidades del Access se encuentran:
168
Crear tablas de datos indexadas.
Modificar tablas de datos.
Relacionar tablas (creación de bases de datos relacionales).
Creación de consultas y vistas.
Consultas de acción (crear, insertar, borrar y actualizar bases de datos).
Crear formularios.
Crear Informes en pantalla y reportes.
Para el desarrollo de la aplicación de computadoras para la programación y seguimiento
de las actividades de mantenimiento, objetivo de esta investigación, se seleccionó el Ms-Access
para la presentación en pantalla de los diferentes formatos que interactúan con el usuario para
llevar a cabo las funciones del programa. Estos formatos o formularios se utilizarán para realizar
los menús de opciones del programa, introducción de nuevos datos, modificación de datos,
consultas de datos, informes en pantalla y reportes por impresora.
4.7.2. - Método de programación para la aplicación
Se realizaron reuniones con el personal de informática de las instituciones y con
profesionales en el área de sistemas para determinar el método más apropiado para el manejo
de la base de datos del programa. Actualmente existen dos metodologías principales para el
desarrollo de aplicaciones para computadoras: la programación estructurada y la programación
orientada a objetos, ésta última muy ligada a la programación visual donde se le dá gran uso al
dispositivo apuntador de la computadora (conocido como “ratón” o “Mouse”). Aprovechando las
características de utilizar un lenguaje de programación orientada a objetos, el programa se
dividirá en varios módulos cada uno con código de programa propio y con una función propia
dependiendo de la acción que el usuario quiera realizar con el programa. Esta metodología es
común en las aplicaciones desarrolladas con lenguajes de programación orientada a objetos, en
las cuales se crea un menú principal con todas las opciones que ofrece el programa y el usuario
selecciona una de las opciones; también tiene la ventaja de permitir una mejor organización del
programa y una depuración mas rápida al momento de corregir errores de código. Se utilizará
entonces la programación orientada a objetos para el desarrollo de la aplicación del sistema
automatizado para la programación y seguimiento de las actividades de mantenimiento en
instituciones policiales y se dividirá en varios módulos de programa. La cantidad de módulos de
sub-aplicaciones que integrarán el sistema automatizado completo se definirán en el siguiente
punto.
169
4.7.3. - Subprogramas que conforman la aplicación
En base a la revisión y evaluación de aplicaciones para computadoras existentes en el
mercado diseñadas para el mantenimiento y los requerimientos de las instituciones policiales se
realizaron reuniones de trabajo con el personal de mantenimiento de estas instituciones para
definir como estará conformado el programa a desarrollar. Como resultdo se acordó que el
sistema automatizado estará conformado por los siguientes módulos de programa:
Módulo de equipos.
Módulo de sitios o ubicaciones.
Módulo de personal.
Módulo de solicitudes de trabajo.
Módulo de órdenes de trabajo.
Módulo de mantenimiento preventivo (Fechas).
Módulo de mantenimiento preventivo (Medidores).
Módulo de seguridad de acceso.
Módulo de actividades.
Módulo de informes.
Módulo de inventario.
A continuación se describe el funcionamiento que tendrá cada uno de estos módulos:
Módulo de equipos: se utilizará para el manejo de la información de los bienes de cada
institución. Entre sus funciones estará la creación, modificación y consulta de datos
referente a los equipos.
Módulo de sitios o ubicaciones: se utilizará para el manejo de la información de los
lugares o sitios donde se encuentren instalados o asignados los equipos de cada
institución. Permitirá crear, modificar, borrar y modificar los datos referentes a las
locaciones.
Módulo de personal: se utilizará para el manejo de la información del personal de
mantenimiento o empleados de los departamentos responsables de algún equipo en
cada institución. Permitirá crear, modificar, consultar y borrar los datos referentes a los
empleados.
170
Módulo de solicitudes de trabajo: se utilizará para el manejo de la información de las
solicitudes de trabajo creadas por algún usuario que requiera una labor de
mantenimiento o reparación para un equipo. Permitirá crear, modificar y consultar los
datos referentes a las siolicitudes de trabajo.
Módulo de órdenes de trabajo: se utilizará para el manejo de la información de las
órdenes de trabajo creadas por solicitud de algún usuario o generadas automáticamente
por el sistema. Permitirá crear, modificar y consultar los datos referentes a las órdenes
de trabajo.
Módulo de mantenimiento preventivo (por fechas): se utilizará para el manejo de la
información de las actividades de mantenimiento preventivo que se ejecutan a intervalos
regulares de tiempo establecidos por cada institución. Permitirá crear, modificar,
consultar y eliminar datos referentes al mantenimiento preventivo por fechas.
Módulo de mantenimiento preventivo (por medidores): se utilizará para el manejo de
la información de las actividades de mantenimiento preventivo que se ejecutan de
acuerdo a la lectura de un medidor de alguna variable que genera el equipo. Ejemplo de
estas variables son el kilometraje de un vehículo, la cantidad de litros de un surtidor de
gasolina, etc. Permitirá crear, modificar, consultar y eliminar datos referentes al
mantenimiento preventivo por medidores.
Módulo de seguridad de acceso: se utilizará para el manejo de la información de los
usuarios que tienen acceso al programa y a crear, modificar, borrar o consultar datos en
el mismo. De acuerdo a un nivel de acceso que se creará cada usuario del sistema
tendrá diferentes facultades o permisos para utilizar cada módulo del programa.
Módulo de actividades: se utilizará para el manejo de la información de las actividades
de mantenimiento preventivo que se ejecuten a los equipos y maquinarias de las
instituciones policiales. Permitirá crear, modificar, borrar y consultar los datos referentes
a las actividades de mantenimiento del sistema.
Módulo de informes: se utilizará para la creación de informes en pantalla y reportes en
impresora solicitados por un usuario y donde la información puede ser filtrada por alguna
variable dada por sistema como por ejemplo, fecha, número de equipo, historial, órden
de trabajo, etc.
171
172
Módulo de inventario: se utilizará para el manejo de la información de las partes
componentes del inventario de cada institución. Manejará los conceptos y técnicas
básicas empleadas en el manejo de inventarios asi como la posibilidad de filtrar la
información según variables como número de parte, ubicación, partes entregadas y
otras.
Para seleccionar cada uno de los módulos mencionados se utilizará un menú de opciones
que consiste en un despliegue en pantalla de varios botones de opciones que pueden ser
seleccionados utilizando el dispositivo puntero del computador, conocido comúnmente como
“ratón” o “mouse” y oprimiendo el botón de selección del mismo, generalmente el botón
izquierdo. Cada uno de los módulos abrirá a su vez otros despliegues, llamados también
“formularios” que ofrecerán al usuario otras opciones de selección o realizar algún tipo de
consulta de información. Cada vez que se cierra un formulario, el programa abrirá el formulario
anterior al que se cerró. De esta manera, el usuario tendrá la posibilidad de volver mas
rápidamente a un formulario cerrado por error, en vez de volver al menú principal y realizar toda
la operación nuevamente.
El programa a desarrollar tendrá también la posibilidad de ser interrumpido en cualquier
momento y en cualquier módulo de programa para revisar o modificar el código fuente del
mismo. Esto permite a un usuario, con cierta experiencia en programación, agregar o mejorar el
sistema creando nuevas características funcionales que puedan ser requeridas en un futuro
dado, modificar el comportamiento del programa o cambiar la presentación de los formularios
generando asi actualizaciones al programa original.
Se desarrollará entonces, una aplicación conformada por módulos individuales con
programación propia, con acceso a la misma base de datos y con código de programación
abierto para permitir mejoras y actualizaciones del mismo.
173
4.7.4. – Desarrollo del sistema automatizado.
En este punto se desarrolla el sistema automatizado para la programación y seguimiento
de las actividades de mantenimiento. El sistema automatizado consiste en un programa para
computadoras organizado en módulos de programa con código propios que tienen acceso a
una misma base de datos. Una base de datos es un conjunto de elementos diseñados para
combinar datos procedentes de varias fuentes en una o varias tablas. Los elementos de una
base de datos pueden ser tablas de información, formularios, consultas y reportes, y son
representados cada uno como un objeto. Las tablas son objetos que contienen información de
un tópico o tema determinado. Cada tabla contiene uno o varios campos que contienen la
información específica de una variable determinada realacionada con la tabla. El bloque básico
del diseño de una base de datos es la tabla. Las tablas están formadas por columnas (también
denominadas campos), y por filas (también denominadas registros). Un campo alberga un
determinado tipo de datos, como por ejemplo un nombre o número de equipo; mientras que un
registro posee un conjunto completo de campos relativos a una entidad, como por ejemplo el
nombre, ubicación y número de un equipo. Así mismo, las tablas pueden o no relacionarse
entre sí según se especifique en la creación de la base de datos.
4.7.4.1. - Tablas utilizadas para almacenamiento de información
A continuación se describen las tablas utilizadas por el sistema desarrollado en las cuales
se almacena toda la información y datos que requiere el usuario para el manejo oportuno de las
actividades de mantenimiento de cada equipo. Se indican los campos que posee cada una de
las tablas y en el siguiente punto, referente a los formularios del sistema, se indicara el uso que
tienen los campos.
Tabla de ajustes: esta tabla se utiliza para realizar ajustes de inventario siempre y
cuando el usuario este autorizado por el sistema. Los campos de esta tabla son los
siguientes: número de ajuste, número de stock, fecha, persona que realiza el ajuste,
cantidad a ajustar, observaciones, precio, y código de sitio.
Tabla de asignaciones: esta tabla se utiliza para asignar al personal correspondiente
las órdenes de trabajo que hayan sido generadas y mantener la información pertinente a
la orden de trabajo y el solicitante de la misma. Los campos de esta tabla son los
siguientes: número de orden de trabajo, tipo de trabajo, estatus del trabajo, descripción
del problema, fecha de recepción, fecha requerida, solicitante, teléfono de trabajo,
174
teléfono de habitación, teléfono celular y asignación.
Tabla de categoría de equipos: esta tabla se utiliza para almacenar el tipo de equipo
existente en la institución. La categoría de equipos es una clasificación genérica que
indica al usuario información sencilla acerca del equipo. La categoría de equipos puede
ser: aire acondicionado, motor, vehiculo normal, vehículo rústico, compresor, etc.,
campos que no proporcionan detalle del equipo. Los campos de esta tabla son: código
de categoría y nombre de categoría.
Tabla de Equipos: esta tabla almacena toda la información de los equipos o activos que
posee la institución. Como es una tabla con información bastante detallada los campos
de la misma son los siguientes: número de equipo, descripción del equipo, empleado
responsable, número de ubicación, código de categoría, estatus del equipo, modelo,
serial, fecha de adquisición, fecha de venta, precio de compra, valor de salvamento,
valor actual, observaciones, información adicional, fecha de próximo mantenimiento,
número de garantía, fecha de expiración de contrato, observaciones sobre garantía,
empresa que cubre la garantía, vendedor, número de lista de partes, número de
departamento, número de causa de falla, criticidad, fecha de desincorporación,
observaciones, número de equipo mayor al que pertenece (si aplica), número de equipo
equivalente, archivos externos, descripción de archivos externos, tiempo de vida
estimado y fabricante.
Tabla estatus del equipo: esta tabla almacena la información del estado en que se
encuentra el equipo o activo. Los campos de esta tabla son: número de estatus y
descripción del estatus. Los valores de este último pueden ser: activo, inactivo,
desincorporado, extraviado y en almacén.
Tabla área de atención: esta tabla guarda los valores del área general de atención de
los equipos y nos expresa el tipo de personal debe asistir al equipo en caso de cualquier
tipo de mantenimiento. Solo contiene un campo y este puede tener los siguientes
valores: A/A (aire acondicionado), carpintería, civil, computación, electricidad y
mecánica.
Tabla de criticidad: esta tabla se utiliza para almacenar los valores de criticidad que
puedan tener cada uno de los equipos. Solo tiene un campo y éste puede asumir
cualquiera de los siguientes valores: critica, mediana o normal dependiendo de la
criticidad que se asuma para el equipo.
175
Tabla de departamentos: esta tabla se utiliza para guardar los nombres de los
diferentes departamentos que tiene la empresa. Los campos de esta tabla son: número
de departamento y descripción del departamento. Los departamentos asignados a esta
tabla son: administración, operaciones, comunicaciones, informática, servicios
generales, taller y depósito.
Tabla de entregas: esta tabla se utiliza para guardar la información referente a las
partes que han sido entregadas por el depósito o almacén donde se tienen todos los
repuestos y suministros de taller. Los campos para esta tabla son los siguientes: número
de entrega, descripción de stock, fecha, número de orden de compra, número de orden
de trabajo, cantidad, precio y código del sitio.
Tabla de empleados: esta tabla se utiliza para almacenar la información detallada de
las personas que tengan algún tipo de relación con la institución o empresa. Estas
personas son categorizadas en dos grandes grupos: empleados o clientes. Los campos
para esta tabla son los siguientes: número de empleado, nombre, cargo, departamento,
número telefónico de trabajo, extensión, número telefónico celular, número de fax,
número telefónico de habitación, dirección, ubicación de oficina, salario, sobretiempos,
categoría (empleado o cliente), acceso (a los módulos de programas del sistema),
identificación, contraseña, acceso a ajustes(si o no) y área de trabajo.
Tabla de causas de falla: esta tabla se utiliza para almacenar la información de la
descripción de las fallas que vayan ocurriendo a medida que se utilice cada equipo a
través de su vida útil. Es una tabla acumulativa de manera que la información en ella
crece constantemente según sea alimentada por el usuario con datos de nuevas fallas
detectadas. Los campos de esta tabla son los siguientes: código de falla y descripción
de falla.
Tabla de ubicaciones de sitios: esta tabla almacena la información sobre las
locaciones o sitios donde puedan ser ubicados los equipos o activos de la empresa.
Estas locaciones pueden ser oficinas, áreas externas, áreas de taller, depósitos,
corredores, etc. Los campos para esta tabla son los siguientes: número de ubicación,
descripción, observaciones, departamento y criticidad.
Tabla de lista de partes: esta tabla se utiliza para almacenar las listas de repuestos o
partes de los equipos. Cada lista de partes puede contener uno o varios componentes,
176
lo que significa que puede ser un kit de repuestos o un solo componente. Los campos de
esta tabla son los siguientes: número de lista de partes y descripción de lista de partes.
Tabla de detalles de lista de partes: esta tabla complementa la tabla “lista de partes”.
Se utiliza para guardar la información de los componentes de cada lista de partes. En el
caso de un kit de repuestos en esta tabla se detallan cada uno de los componentes del
kit. Los campos para esta tabla son los siguientes: número de detalle de lista, número de
factura, número de lista de partes, descripción de la parte y cantidad de partes.
Tabla de lista de tareas de mantenimiento preventivo: esta tabla sirve para
almacenar la información referente a cada una de las listas que contienen las
actividades a desarrollar durante la ejecución de un mantenimiento preventivo de un
equipo. Los campos para esta tabla son los siguientes: número de lista, nombre de lista,
tareas o actividades, horas estimadas de labor, nombre de archivo externo (si existe).
Tabla de proyecciones de mantenimiento preventivo: esta tabla contiene los
mantenimientos preventivos proyectados por el sistema a petición del usuario para un
equipo en particular. Contiene las fechas de inicio y de fin del mantenimiento preventivo
de acuerdo a la duración de las tareas o actividades que se han de ejecutar en un
período dado por el usuario. Los campos de esta tabla son los siguientes: descripción
del equipo, número de mantenimiento preventivo, número de lista de tareas, frecuencia
de mantenimiento preventivo, fecha de inicio, fecha de fin y próxima fecha.
Tabla de medidores de mantenimiento preventivo: esta tabla se utiliza para guardar
la información necesaria para realizar mantenimientos preventivos basados en
mediciones, es decir, en las lecturas tomadas en instrumentos de medición de una
variable. Por ejemplo, se puede generar una orden de mantenimiento preventivo basado
en la lectura del medidor de kilometraje de un vehiculo, o del medidor de litros surtidos
de una bomba de gasolina o del medidor de copias sacadas de una máquina
fotocopiadora. Esta tabla también sirve para generar órdenes de mantenimiento
preventivo según si las lecturas de un medidor de un equipo estén por debajo o por
encima de un valor predeterminado, como por ejemplo en el caso de un compresor de
aire o la bomba de aceite de un vehículo. Los campos para esta tabla son los siguientes:
número de medidor, descripción, equipo al que pertenece, ubicación, tipo de medidor,
límite inferior, límite superior, última lectura, tarea si valor esta debajo de límite inferior,
tarea si valor esta por encima de límite superior, tarea en condiciones normales,
unidades de medición, lectura inicial, incremento, lectura para próximo mantenimiento
177
preventivo, período, frecuencia, unidad de frecuencia, fecha inicial de toma de lectura,
fecha de inicio de mantenimiento preventivo, fecha de fin de mantenimiento preventivo,
próxima fecha, contador de mantenimientos preventivos y área de trabajo.
Tabla de programación o calendario de mantenimiento preventivo: esta tabla se
utiliza para llevar el control de la ejecución de los mantenimientos preventivos según la
fecha programada. Los campos de esta tabla son los siguientes: número de
mantenimiento preventivo, nombre del mantenimiento preventivo, número de equipo,
ubicación, número de lista de tareas, período, tipo de trabajo, frecuencia, unidades de
frecuencia, fecha de inicio de mantenimiento, fecha de fin de mantenimiento, próxima
fecha de mantenimiento, tipo de mantenimiento preventivo, área de trabajo, semana de
mes y día de la semana.
Tabla de evaluación: esta tabla almacena los datos referentes a la evaluación que
puede ser dada a un trabajo cuando éste es finalizado. Esta tabla tiene los campos:
valor y descripción de la evaluación. El primer campo puede tomar valores desde 1
hasta 6 y el segundo campo puede ser: pobre, regular, bueno, muy bueno, excelente y
sin evaluar.
Tabla de recepción de partes: esta tabla se utiliza para llevar la información de las
partes que se reciben en almacén y son introducidas al inventario. Los campos para esta
tabla son: número de recepción, código de stock, descripción de stock, fecha de
recepción, vendedor, cantidad recibida, número de orden de compra y precio.
Tabla de nombres de reportes: esta tabla lleva la lista de todos los reportes o informes
que puede generar el sistema. Los campos de esta tabla son los siguientes: número de
reporte, nombre del reporte y grupo de reporte.
Tabla de devoluciones: esta tabla se utiliza para guardar la información que se genera
cuando un equipo o parte es devuelta por la empresa o institución. Los campos de esta
tabla son los siguientes: número de devolución, número de stock, cantidad, fecha,
persona, departamento, observaciones, número de orden de compra y precio de
devolución (puede ser diferente al de compra).
Tabla de códigos de stock: esta tabla se utiliza en el manejo de inventarios para llevar
la información de la existencia de las partes en almacén incluyendo los niveles máximo,
mínimo y precios de las mismas. Los campos para esta tabla son los siguientes: número
178
de stock, descripción, unidad de medida, área de atención, estatus, ubicación, nivel
máximo, nivel mínimo, precio, observaciones, tiempo de espera, precio promedio,
balance de stock e información sobre la orden.
Tabla de proveedores: esta tabla almacena la información detallada sobre los
proveedores de la empresa. Los campos de la misma son los siguientes: número de
proveedor, nombre de proveedor, persona contacto, cargo de persona contacto,
dirección, ciudad, código postal, estado, país, número telefónico, número de fax,
servicios que presta y correo electrónico.
4.7.4.2. – Formularios
Los formularios son objetos de una base de datos que facilitan la visualización de los
datos y la interacción del usuario con la misma. En lugar de presentar los datos en forma de
cuadrícula, la creación de formularios para la visualización de los datos de las tablas y consultas
permite organizar los campos en el formulario y añadir texto descriptivo para una mayor
comprensión del contenido del formulario. También es posible utilizar un formulario para
introducir nuevos registros en una tabla. A continuación se muestran los formularios utilizados
en el sistema automatizado indicando su utilización, los campos que poseen y el código de
programa para cada uno de ellos.
Formulario Menu Principal
Figura 7. – Formulario Menú Principal.
179
El Formulario Menu Principal muestra todas las opciones de módulos de programa a los
cuales el usuario puede acceder si esta autorizado para ello. Este menú muestra las opciones:
Equipos, Personal, Ubicaciones, Acceso, Reportes, Órdenes de Trabajo, Solicitud, Inventario,
Listados, Mantenimiento preventivo y Salir del Sistema. Cada una de estas opciones pueden
ser seleccionadas mediante la acción del botón izquierdo del ratón y cada una de ellas abre el
módulo de programa que corresponda. Dependiendo del nivel de autorización que tenga cada
usuario del programa éste tendrá acceso a más o menos módulos del sistema. El código
perteneciente a este módulo o formulario de Menú principal es el siguiente:
'*********************** ' ' MENU PRINCIPAL ' '*********************** Option Compare Database Private Sub Admin1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) HighlightMe Admin1.Name End Sub Private Sub Mas1_Click() End Sub Private Sub WR1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) HighlightMe WR1.Name End Sub Private Sub Asset1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) HighlightMe Asset1.Name End Sub Private Sub Detail_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) HighlightMe Detail.Name End Sub Private Sub Emp1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) HighlightMe Emp1.Name End Sub Private Sub Exit_Click() DoCmd.Close DoCmd.OpenForm "CierreForm" End Sub Private Sub Exit_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) HighlightMe "Exit" End Sub
180
Private Sub Form_Activate() DoCmd.Restore ReCheckMe End Sub Private Sub Form_Deactivate() DoCmd.Minimize End Sub Private Sub ReCheckMe() AssLevel = DLookup("Accessibility", "employees", "EmployeeNo='" & StaffNo & "'") If InStr(1, AssLevel, 1) > 0 Then Me.WO1.Visible = True Me.WO1.HyperlinkSubAddress = "Form OTListaForm" Else Me.WO1.Visible = False Me.WO1.HyperlinkSubAddress = "" End If If InStr(1, AssLevel, 2) > 0 Then Me.Asset1.Visible = True Me.Asset1.HyperlinkSubAddress = "Form ListaEqForm" Else Me.Asset1.Visible = False Me.Asset1.HyperlinkSubAddress = "" End If If InStr(1, AssLevel, 3) > 0 Then Me.Loc1.Visible = True Me.Loc1.HyperlinkSubAddress = "Form ListaUbicacForm" Else Me.Loc1.Visible = False Me.Loc1.HyperlinkSubAddress = "" End If If InStr(1, AssLevel, 4) > 0 Then Me.Pre1.Visible = True Me.Pre1.HyperlinkSubAddress = "Form MPMenuPrincipal" Else Me.Pre1.Visible = False Me.Pre1.HyperlinkSubAddress = "" End If If InStr(1, AssLevel, 5) > 0 Then Me.Emp1.Visible = True Me.Emp1.HyperlinkSubAddress = "Form ListaEmpleadosForm" Else Me.Emp1.Visible = False Me.Emp1.HyperlinkSubAddress = "" End If If InStr(1, AssLevel, 6) > 0 Then Me.Inv1.Visible = True Me.Inv1.HyperlinkSubAddress = "Form InventarioForm" Else Me.Inv1.Visible = False Me.Inv1.HyperlinkSubAddress = "" End If If InStr(1, AssLevel, 7) > 0 Then Me.Mas1.Visible = True
181
Me.Mas1.HyperlinkSubAddress = "Form Lista General" Else Me.Mas1.Visible = False Me.Mas1.HyperlinkSubAddress = "" End If If InStr(1, AssLevel, 8) > 0 Then Me.Rep1.Visible = True Me.Rep1.HyperlinkSubAddress = "Form MenuReportes" Else Me.Rep1.Visible = False Me.Rep1.HyperlinkSubAddress = "" End If If InStr(1, AssLevel, 9) > 0 Then Me.Admin1.Visible = True Me.Admin1.HyperlinkSubAddress = "Form AdminPerm" Else Me.Admin1.Visible = False Me.Admin1.HyperlinkSubAddress = "" End If If InStr(1, AssLevel, 0) > 0 Then Me.WR1.Visible = True Me.WR1.HyperlinkSubAddress = "Form OTListaSolicForm" Else Me.WR1.Visible = False Me.WR1.HyperlinkSubAddress = "" End If End Sub Private Sub Form_Open(Cancel As Integer) Me.Caption = DLookup("[compname]", "userinfo", "") & " [Usuario: " & PWuser & "]" AssLevel = DLookup("Accessibility", "employees", "EmployeeNo='" & StaffNo & "'") If InStr(1, AssLevel, 1) > 0 Then Me.WO1.Visible = True Me.WO1.HyperlinkSubAddress = "Form OTListaForm" End If If InStr(1, AssLevel, 2) > 0 Then Me.Asset1.Visible = True Me.Asset1.HyperlinkSubAddress = "Form ListaEqForm" End If If InStr(1, AssLevel, 3) > 0 Then Me.Loc1.Visible = True Me.Loc1.HyperlinkSubAddress = "Form ListaUbicacForm" End If If InStr(1, AssLevel, 4) > 0 Then Me.Pre1.Visible = True Me.Pre1.HyperlinkSubAddress = "Form MPMenuPrincipal" End If If InStr(1, AssLevel, 5) > 0 Then Me.Emp1.Visible = True Me.Emp1.HyperlinkSubAddress = "Form ListaEmpleadosForm" End If If InStr(1, AssLevel, 6) > 0 Then Me.Inv1.Visible = True
182
Me.Inv1.HyperlinkSubAddress = "Form InventarioForm" End If If InStr(1, AssLevel, 7) > 0 Then Me.Mas1.Visible = True Me.Mas1.HyperlinkSubAddress = "Form Lista General" End If If InStr(1, AssLevel, 8) > 0 Then Me.Rep1.Visible = True Me.Rep1.HyperlinkSubAddress = "Form MenuReportes" End If If InStr(1, AssLevel, 9) > 0 Then Me.Admin1.Visible = True Me.Admin1.HyperlinkSubAddress = "Form AdminPerm" End If If InStr(1, AssLevel, 0) > 0 Then Me.WR1.Visible = True Me.WR1.HyperlinkSubAddress = "Form OTListaSolicForm" End If Dim rs As DAO.Recordset Set dbSICAM = CurrentDb Set rs = dbSICAM.OpenRecordset("SELECT Count(MeterNo) FROM PmMetersToGenerate") If rs.EOF = False Then If rs.Fields(0) > 0 Then DoCmd.OpenForm "MPMedidEmergForm" Forms("MPMedidEmergForm").Label0.Caption = "Hay " + CStr(rs.Fields(0)) + " OT's preventiva (s) basada en medidores que ha cumplido con los criterios de generación del día. Desea proceder a generarla (s)?" End If End If rs.Close Set rs = Nothing Set dbSICAM = Nothing End Sub Private Sub Img1_Click() End Sub Private Sub Inv1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) HighlightMe Inv1.Name End Sub Private Sub Label286_Click() DoCmd.Quit End Sub Private Sub HighlightMe(CN As String) Me.WO1.SpecialEffect = IIf(UCase(CN) = UCase(Me.WO1.Name), 4, 0) Me.Asset1.SpecialEffect = IIf(UCase(CN) = UCase(Me.Asset1.Name), 4, 0) Me.Loc1.SpecialEffect = IIf(UCase(CN) = UCase(Me.Loc1.Name), 4, 0) Me.Pre1.SpecialEffect = IIf(UCase(CN) = UCase(Me.Pre1.Name), 4, 0) Me.Emp1.SpecialEffect = IIf(UCase(CN) = UCase(Me.Emp1.Name), 4, 0) Me.Inv1.SpecialEffect = IIf(UCase(CN) = UCase(Me.Inv1.Name), 4, 0) Me.PO1.SpecialEffect = IIf(UCase(CN) = UCase(Me.PO1.Name), 4, 0)
183
Me.Mas1.SpecialEffect = IIf(UCase(CN) = UCase(Me.Mas1.Name), 4, 0) Me.Rep1.SpecialEffect = IIf(UCase(CN) = UCase(Me.Rep1.Name), 4, 0) Me.Admin1.SpecialEffect = IIf(UCase(CN) = UCase(Me.Admin1.Name), 4, 0) Me.Exit.SpecialEffect = IIf(UCase(CN) = UCase(Me.Exit.Name), 4, 0) Me.WR1.SpecialEffect = IIf(UCase(CN) = UCase(Me.WR1.Name), 4, 0) Me.WR1.BorderStyle = IIf(UCase(CN) = UCase(Me.WR1.Name), 1, 0) Me.WO1.BorderStyle = IIf(UCase(CN) = UCase(Me.WO1.Name), 1, 0) Me.Asset1.BorderStyle = IIf(UCase(CN) = UCase(Me.Asset1.Name), 1, 0) Me.Loc1.BorderStyle = IIf(UCase(CN) = UCase(Me.Loc1.Name), 1, 0) Me.Pre1.BorderStyle = IIf(UCase(CN) = UCase(Me.Pre1.Name), 1, 0) Me.Emp1.BorderStyle = IIf(UCase(CN) = UCase(Me.Emp1.Name), 1, 0) Me.Inv1.BorderStyle = IIf(UCase(CN) = UCase(Me.Inv1.Name), 1, 0) Me.PO1.BorderStyle = IIf(UCase(CN) = UCase(Me.PO1.Name), 1, 0) Me.Mas1.BorderStyle = IIf(UCase(CN) = UCase(Me.Mas1.Name), 1, 0) Me.Rep1.BorderStyle = IIf(UCase(CN) = UCase(Me.Rep1.Name), 1, 0) Me.Admin1.BorderStyle = IIf(UCase(CN) = UCase(Me.Admin1.Name), 1, 0) Me.Exit.BorderStyle = IIf(UCase(CN) = UCase(Me.Exit.Name), 1, 0) End Sub Private Sub Loc1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) HighlightMe Loc1.Name End Sub Private Sub Mas1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) HighlightMe Mas1.Name End Sub Private Sub PO1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) HighlightMe PO1.Name End Sub Private Sub Pre1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) HighlightMe Pre1.Name End Sub Private Sub Rep1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) HighlightMe Rep1.Name End Sub Private Sub WO1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) HighlightMe WO1.Name End Sub
184
Formulario Lista de Equipos Figura 8. – Formulario Lista de Equipos. El Formulario Lista de Equipos muestra todos los equipos o activos de la empresa y lleva
un registro detallado de cada uno de ellos. Este formulario permite clasificar y buscar los
equipos según el criterio que se seleccione los cuales son: número de equipo, descripción,
ubicación, departamento, tipo, persona responsable, modelo, fabricante, garantía y fecha de
compra. Seleccionando uno de los equipos de la lista y haciendo “doble click” sobre él, se abrirá
un formulario mas detallado sobre el equipo. Este último formulario es el mismo que se utiliza
para introducir un equipo nuevo, como se muestra en el punto 4.3, solo que todos los campos
contienen información.
Los botones de la parte inferior del formulario “Lista de equipos” permiten ingresar un
nuevo equipo al sistema, ver todos los equipos, exportar el listado a una hoja de cálculo Excel,
ver el historial de las órdenes de trabajo y cerrar el formulario. En la parte inferior izquierda se
muestra la cantidad de registros o de equipos existentes en el sistema. El código de este
formulario se muestra a continuación:
'******************* ' ' Lista de Equipos ' '******************* Option Explicit Dim sel, Sortby, sqlline As String
185
Dim fld As Integer Private Sub asgn_Click() fld = 5 Me.DataList.RowSource = "SELECT assetstatus.AssetStatusDesc FROM assetstatus ORDER BY assetstatus.AssetStatusDesc;" End Sub Private Sub Command103_Click() On Error GoTo Err_Command103_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "ListaEqServ" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_Command103_Click: Exit Sub Err_Command103_Click: MsgBox err.Description Resume Exit_Command103_Click End Sub Private Sub Command104_Click() fld = 13 Me.DataList.RowSource = "SELECT LocationNo FROM Location Order By LocationNo" End Sub Private Sub Command105_Click() On Error GoTo Err_Command105_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "RelacEqForm" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_Command105_Click: Exit Sub Err_Command105_Click: MsgBox err.Description Resume Exit_Command105_Click End Sub Private Sub Command115_Click() Me.AssTo = Null End Sub Private Sub Command116_Click() fld = 14 Me.DataList.RowSource = "SELECT suppliers.SupplierNo FROM suppliers ORDER BY suppliers.SupplierNo;" End Sub Private Sub Command117_Click() Me.Text115 = Null End Sub Private Sub Command119_Click() If Not IsNull(Me.WType) Then sqlline = sqlline & "Assets.AssetNumber like '" & Me.WType & "*' " End If
186
If Not IsNull(Me.WStatus) Then If Not IsNull(Me.WType) Then sqlline = sqlline & "And " sqlline = sqlline & "Assets.AssetDescription like '" & Me.WStatus & "*' " End If If Not IsNull(Me.WNO) Then If Not IsNull(Me.WType) Or Not IsNull(Me.WStatus) _ Then sqlline = sqlline & "And " sqlline = sqlline & "Assets.LocationNo IN (" & Left(Me.WNO, Len(Me.WNO) - 1) & ")" End If If Not IsNull(Me.Reqtr) Then If Not IsNull(Me.WType) Or Not IsNull(Me.WStatus) Or Not IsNull(Me.WNO) _ Then sqlline = sqlline & "And " sqlline = sqlline & "Location.LocationDescription like '" & Me.Reqtr & "*' " End If If Not IsNull(Me.AssTo) Then If Not IsNull(Me.WType) Or Not IsNull(Me.WStatus) Or Not IsNull(Me.WNO) _ Or Not IsNull(Me.Reqtr) Then sqlline = sqlline & "And " sqlline = sqlline & "AssetStatus.AssetStatusDesc IN (" & Left(Me.AssTo, Len(Me.AssTo) - 1) & ")" End If If Not IsNull(Me.DeptNo) Then If Not IsNull(Me.WType) Or Not IsNull(Me.WStatus) Or Not IsNull(Me.WNO) _ Or Not IsNull(Me.Reqtr) Or Not IsNull(Me.AssTo) _ Then sqlline = sqlline & "And " sqlline = sqlline & "Assets.DepartmentNo IN (" & Left(Me.DeptNo, Len(Me.DeptNo) - 1) & ")" End If If Not IsNull(Me.AssCat) Then If Not IsNull(Me.WType) Or Not IsNull(Me.WStatus) Or Not IsNull(Me.WNO) _ Or Not IsNull(Me.Reqtr) Or Not IsNull(Me.AssTo) Or Not IsNull(Me.DeptNo) _ Then sqlline = sqlline & "And " sqlline = sqlline & "Assets.AssetCatCode IN (" & Left(Me.AssCat, Len(Me.AssCat) - 1) & ")" End If If Not IsNull(Me.AuthE) Then If Not IsNull(Me.WType) Or Not IsNull(Me.WStatus) Or Not IsNull(Me.WNO) _ Or Not IsNull(Me.Reqtr) Or Not IsNull(Me.AssTo) _ Or Not IsNull(Me.DeptNo) Or Not IsNull(Me.AssCat) _ Then sqlline = sqlline & "And " sqlline = sqlline & "Assets.EmployeeNo IN (" & Left(Me.AuthE, Len(Me.AuthE) - 1) & ")" End If If Not IsNull(Me.ModalNo) Then If Not IsNull(Me.WType) Or Not IsNull(Me.WStatus) Or Not IsNull(Me.WNO) _ Or Not IsNull(Me.Reqtr) Or Not IsNull(Me.AssTo) _ Or Not IsNull(Me.DeptNo) Or Not IsNull(Me.AssCat) Or Not IsNull(Me.AuthE) _ Then sqlline = sqlline & "And " sqlline = sqlline & "Assets.ModelNumber like '" & Me.ModalNo & "*' " End If If Not IsNull(Me.MFac) Then If Not IsNull(Me.WType) Or Not IsNull(Me.WStatus) Or Not IsNull(Me.WNO) _ Or Not IsNull(Me.Reqtr) Or Not IsNull(Me.AssTo) _
187
Or Not IsNull(Me.DeptNo) Or Not IsNull(Me.AssCat) Or Not IsNull(Me.AuthE) _ Or Not IsNull(Me.ModalNo) _ Then sqlline = sqlline & "And " sqlline = sqlline & "Assets.Manufacturer IN (" & Left(Me.MFac, Len(Me.MFac) - 1) & ")" End If If Not IsNull(Me.Supp) Then If Not IsNull(Me.WType) Or Not IsNull(Me.WStatus) Or Not IsNull(Me.WNO) _ Or Not IsNull(Me.Reqtr) Or Not IsNull(Me.AssTo) _ Or Not IsNull(Me.DeptNo) Or Not IsNull(Me.AssCat) Or Not IsNull(Me.AuthE) _ Or Not IsNull(Me.ModalNo) Or Not IsNull(Me.MFac) _ Then sqlline = sqlline & "And " sqlline = sqlline & "Assets.Contractor IN (" & Left(Me.Supp, Len(Me.Supp) - 1) & ")" End If If Not IsNull(Me.Text115) Then If Not IsNull(Me.WType) Or Not IsNull(Me.WStatus) Or Not IsNull(Me.WNO) _ Or Not IsNull(Me.Reqtr) Or Not IsNull(Me.AssTo) _ Or Not IsNull(Me.DeptNo) Or Not IsNull(Me.AssCat) Or Not IsNull(Me.AuthE) _ Or Not IsNull(Me.ModalNo) Or Not IsNull(Me.MFac) Or Not IsNull(Me.Supp) _ Then sqlline = sqlline & "And " sqlline = sqlline & "Assets.Vendor IN (" & Left(Me.Text115, Len(Me.Text115) - 1) & ")" End If If Not IsNull(Me.WDate2) Then If Not IsNull(Me.WType) Or Not IsNull(Me.WStatus) Or Not IsNull(Me.WNO) _ Or Not IsNull(Me.Reqtr) Or Not IsNull(Me.AssTo) _ Or Not IsNull(Me.DeptNo) Or Not IsNull(Me.AssCat) Or Not IsNull(Me.AuthE) _ Or Not IsNull(Me.ModalNo) Or Not IsNull(Me.MFac) Or Not IsNull(Me.Supp) Or Not IsNull(Me.Text115) _ Then sqlline = sqlline & "And " sqlline = sqlline & "Assets.Warranty_ContractExpiry Between #" & _ Format(Me.WDate1, "m/d/yyyy") & "# AND #" & _ Format(Me.WDate2, "m/d/yyyy") & "#" End If If Not IsNull(Me.DateAcq2) Then If Not IsNull(Me.WType) Or Not IsNull(Me.WStatus) Or Not IsNull(Me.WNO) _ Or Not IsNull(Me.Reqtr) Or Not IsNull(Me.AssTo) _ Or Not IsNull(Me.DeptNo) Or Not IsNull(Me.AssCat) Or Not IsNull(Me.AuthE) _ Or Not IsNull(Me.ModalNo) Or Not IsNull(Me.MFac) Or Not IsNull(Me.Supp) Or Not IsNull(Me.Text115) _ Or Not IsNull(Me.WDate2) _ Then sqlline = sqlline & "And " sqlline = sqlline & "Assets.DateAcquired Between #" & _ Format(Me.DateAcq1, "m/d/yyyy") & "# AND #" & _ Format(Me.DateAcq2, "m/d/yyyy") & "#" End If If Not IsNull(Me.DDisp2) Then If Not IsNull(Me.WType) Or Not IsNull(Me.WStatus) Or Not IsNull(Me.WNO) _ Or Not IsNull(Me.Reqtr) Or Not IsNull(Me.AssTo) _ Or Not IsNull(Me.DeptNo) Or Not IsNull(Me.AssCat) Or Not IsNull(Me.AuthE) _ Or Not IsNull(Me.ModalNo) Or Not IsNull(Me.MFac) Or Not IsNull(Me.Supp) Or Not IsNull(Me.Text115) _ Or Not IsNull(Me.WDate2) _ Then sqlline = sqlline & "And " sqlline = sqlline & "Assets.DataDisposed Between #" & _
188
Format(Me.DDisp1, "m/d/yyyy") & "# AND #" & _ Format(Me.DDisp2, "m/d/yyyy") & "#" End If sel = sqlline Call AdvSearch Call contarreg sqlline = "" End Sub Private Sub Command149_Click() On Error GoTo Err_Command149_Click Dim MyDB As DAO.Database Dim qdf As QueryDef Set MyDB = CurrentDb() Dim temp As QueryDef Dim foundQuery As Boolean foundQuery = False For Each temp In MyDB.QueryDefs If temp.Name = "SICReport" Then foundQuery = True Exit For End If Next temp Set temp = Nothing If foundQuery = True Then MyDB.QueryDefs.Delete "SICReport" Set qdf = MyDB.CreateQueryDef("SICReport", Me.List.RowSource) DoCmd.OutputTo acOutputQuery, "SICReport", acFormatXLS, , True Exit_Command149_Click: Exit Sub Err_Command149_Click: MsgBox err.Description Resume Exit_Command149_Click End Sub Private Sub Command23_Click() Call vertodo End Sub Private Sub Command42_Click() fld = 7 Me.DataList.RowSource = "SELECT Department.DepartmentNo FROM Department ORDER BY Department.DepartmentNo;" End Sub Private Sub Command43_Click() Me.DeptNo = Null End Sub Private Sub Command46_Click() fld = 8 Me.DataList.RowSource = "SELECT assetcategories.AssetCatCode FROM assetcategories ORDER BY assetcategories.AssetCatCode;" End Sub
189
Private Sub Command47_Click() Me.AssCat = Null End Sub Private Sub Command55_Click() fld = 9 Me.DataList.RowSource = "SELECT employees.EmployeeNO FROM employees ORDER BY employees.EmployeeNO;" End Sub Private Sub Command56_Click() Me.AuthE = Null End Sub Private Sub Command64_Click() Me.ModalNo = Null End Sub Private Sub Command67_Click() fld = 11 Me.DataList.RowSource = "SELECT distinct(assets.Manufacturer) FROM assets where assets.Manufacturer<>'' ORDER BY assets.Manufacturer;" End Sub Private Sub Command68_Click() Me.MFac = Null End Sub Private Sub Command71_Click() fld = 12 Me.DataList.RowSource = "SELECT suppliers.SupplierNo FROM suppliers ORDER BY suppliers.SupplierNo;" End Sub Private Sub Command72_Click() Me.Supp = Null End Sub Private Sub Command74_Click() Me.WStatus = Null End Sub Private Sub Command76_Click() Me.DateAcq1 = Null Me.DateAcq2 = Null End Sub Private Sub Command78_Click() Me.WNO = Null End Sub Private Sub Command79_Click() Me.Reqtr = Null End Sub Private Sub Command80_Click() Me.WType = Null End Sub Private Sub Command81_Click()
190
Me.DDisp1 = Null Me.DDisp2 = Null End Sub Private Sub Command83_Click() Me.WDate1 = Null Me.WDate2 = Null End Sub Private Sub Command88_Click() sqlline = "" Me.WType = Null Me.WStatus = Null Me.WNO = Null Me.Reqtr = Null Me.AssTo = Null Me.DeptNo = Null Me.AssCat = Null Me.AuthE = Null Me.ModalNo = Null Me.MFac = Null Me.Supp = Null Me.WDate1 = Null Me.WDate2 = Null Me.DateAcq1 = Null Me.DateAcq2 = Null Me.DDisp1 = Null Me.DDisp2 = Null Me.Text115 = Null Me.DataList.RowSource = "" End Sub Private Sub DataList_Click() Dim strWhere, strWhereIN, a As String strWhereIN = strWhereIN & "'" & Me.DataList & "'," If fld = 5 Then Me.AssTo = Me.AssTo & strWhereIN ElseIf fld = 7 Then Me.DeptNo = Me.DeptNo & strWhereIN ElseIf fld = 8 Then Me.AssCat = Me.AssCat & strWhereIN ElseIf fld = 9 Then Me.AuthE = Me.AuthE & strWhereIN ElseIf fld = 11 Then Me.MFac = Me.MFac & strWhereIN ElseIf fld = 12 Then Me.Supp = Me.Supp & strWhereIN ElseIf fld = 13 Then Me.WNO = Me.WNO & strWhereIN ElseIf fld = 14 Then Me.Text115 = Me.Text115 & strWhereIN End If End Sub Private Sub Form_Activate() Call contarreg Refresh DoCmd.Restore End Sub Private Sub Form_Deactivate() DoCmd.Minimize End Sub
191
Private Sub Form_Open(Cancel As Integer) Call vertodo End Sub Private Sub Command6_Click() On Error GoTo Err_Command6_Click Dim stLinkCriteria As String DoCmd.OpenForm "EquipoNuevoForm", , , stLinkCriteria Exit_Command6_Click: Exit Sub Err_Command6_Click: MsgBox err.Description Resume Exit_Command6_Click End Sub Private Sub List_DblClick(Cancel As Integer) If IsNull(Me.List.Column(0)) Then MsgBox "Seleccione un registro", vbInformation, "SICAM" Else DoCmd.OpenForm "ActEqForm", , , "[AssetNumber]=" & "'" & Me.List.Column(0) & "'" End If End Sub Private Sub vertodo() Dim AssetList As String AssetList = "SELECT Assets.AssetNumber AS [No de equipo], Assets.AssetDescription AS [Descripción equipo], AssetStatus.AssetStatusDesc AS Status, Assets.LocationNo AS [No de localización], " & _ "Location.LocationDescription AS [Descripción localización], department.DepartmentDescription AS [Descripción del departamento], assetcategories.AssetCategory AS [Tipo de equipo], " & _ "employees.FirstName AS [Persona responsable], Assets.ModelNumber AS [No de modelo], Assets.Manufacturer AS Fabricante, Assets.Warranty_ContractExpiry AS [Fecha de vencimiento de garantía], " & _ "suppliers.SupplierName AS [Proveedor de garantía], suppliers_1.SupplierName AS [Nombre de proveedor], Assets.DateAcquired AS [Fecha de compra], Assets.DataDisposed AS [Desde fecha] " & _ "FROM ((((((Assets LEFT JOIN Location ON Assets.LocationNo = Location.LocationNo) LEFT JOIN AssetStatus ON Assets.Status = AssetStatus.AssetStatusID) LEFT JOIN assetcategories ON Assets.AssetCatCode = assetcategories.AssetCatCode) " & _ "LEFT JOIN department ON Assets.DepartmentNo = department.DepartmentNo) LEFT JOIN employees ON Assets.EmployeeNo = employees.EmployeeNO) LEFT JOIN suppliers ON Assets.Contractor = suppliers.SupplierNo) LEFT JOIN suppliers AS suppliers_1 ON Assets.Vendor = suppliers_1.SupplierNo " & _ "ORDER BY Assets.AssetNumber;" Me.List.RowSource = AssetList Me.List.ColumnCount = 15 Me.List.ColumnHeads = True Me.List.ColumnWidths = "4 cm; 8 cm; 3 cm; 3 cm; 5 cm; 5 cm; 5 cm; 5 cm; 5 cm; 5 cm; 6 cm; 5 cm; 5 cm; 4 cm; 3cm" Call contarreg End Sub Private Sub AdvSearch() Dim AssetList As String
192
AssetList = "SELECT Assets.AssetNumber AS [No de equipo], Assets.AssetDescription AS [Descripción equipo], AssetStatus.AssetStatusDesc AS Status, Assets.LocationNo AS [No de localización], " & _ "Location.LocationDescription AS [Descripción localización], department.DepartmentDescription AS [Descripción del departamento], assetcategories.AssetCategory AS [Tipo de equipo], " & _ "employees.FirstName AS [Persona responsable], Assets.ModelNumber AS [No de modelo], Assets.Manufacturer AS Fabricante, Assets.Warranty_ContractExpiry AS [Fecha de vencimiento de garantía], " & _ "suppliers.SupplierName AS [Proveedor de garantía], suppliers_1.SupplierName AS [Nombre de proveedor], Assets.DateAcquired AS [Fecha de compra], Assets.DataDisposed AS [Desde fecha] " & _ "FROM ((((((Assets LEFT JOIN Location ON Assets.LocationNo = Location.LocationNo) LEFT JOIN AssetStatus ON Assets.Status = AssetStatus.AssetStatusID) LEFT JOIN assetcategories ON Assets.AssetCatCode = assetcategories.AssetCatCode) " & _ "LEFT JOIN department ON Assets.DepartmentNo = department.DepartmentNo) LEFT JOIN employees ON Assets.EmployeeNo = employees.EmployeeNO) LEFT JOIN suppliers ON Assets.Contractor = suppliers.SupplierNo) LEFT JOIN suppliers AS suppliers_1 ON Assets.Vendor = suppliers_1.SupplierNo " & _ "WHERE " & sel & " ORDER BY Assets.AssetNumber;" Me.List.RowSource = AssetList Me.List.ColumnCount = 15 Me.List.ColumnHeads = True Me.List.ColumnWidths = "4 cm; 8 cm; 3 cm; 3 cm; 5 cm; 5 cm; 5 cm; 5 cm; 5 cm; 5 cm; 6 cm; 5 cm; 5 cm;4 cm; 3 cm" End Sub Private Sub Command24_Click() On Error GoTo Err_Command24_Click DoCmd.Close acForm, Me.Name Exit_Command24_Click: Exit Sub Err_Command24_Click: MsgBox err.Description Resume Exit_Command24_Click End Sub Public Sub Sort() Dim AssetList As String AssetList = "SELECT Assets.AssetNumber AS [No de equipo], Assets.AssetDescription AS [Descripción equipo], AssetStatus.AssetStatusDesc AS Status, Assets.LocationNo AS [No de localización], " & _ "Location.LocationDescription AS [Descripción localización], department.DepartmentDescription AS [Descripción del departamento], assetcategories.AssetCategory AS [Tipo de equipo], " & _ "employees.FirstName AS [Persona responsable], Assets.ModelNumber AS [No de modelo], Assets.Manufacturer AS Fabricante, Assets.Warranty_ContractExpiry AS [Fecha de vencimiento de garantía], " & _ "suppliers.SupplierName AS [Proveedor de garantía], suppliers_1.SupplierName AS [Nombre de proveedor], Assets.DateAcquired AS [Fecha de compra], Assets.DataDisposed AS [Desde fecha] " & _ "FROM ((((((Assets LEFT JOIN Location ON Assets.LocationNo = Location.LocationNo) LEFT JOIN AssetStatus ON Assets.Status = AssetStatus.AssetStatusID) LEFT JOIN assetcategories ON Assets.AssetCatCode = assetcategories.AssetCatCode) " & _ "LEFT JOIN department ON Assets.DepartmentNo = department.DepartmentNo) LEFT JOIN employees ON Assets.EmployeeNo = employees.EmployeeNO) LEFT JOIN suppliers ON Assets.Contractor = suppliers.SupplierNo) LEFT JOIN suppliers AS suppliers_1 ON Assets.Vendor = suppliers_1.SupplierNo " & _ Sortby Me.List.RowSource = AssetList
193
Me.List.ColumnCount = 15 Me.List.ColumnHeads = True Me.List.ColumnWidths = "4 cm; 8 cm; 3 cm; 3 cm; 5 cm; 5 cm; 5 cm; 5 cm; 5 cm; 5 cm; 6 cm; 5 cm; 5 cm;4 cm; 3 cm" Call contarreg End Sub Private Sub contarreg() Call CountRecord(Me.ListRec, List) End Sub Private Sub SortB1_Click() If Me.SortB1.Caption = "Ordenar A->Z" Then If Me.Select = 1 Then Sortby = "ORDER BY AssetNumber ASC" ElseIf Me.Select = 2 Then Sortby = "ORDER BY AssetDescription ASC" ElseIf Me.Select = 3 Then Sortby = "ORDER BY AssetStatus.AssetStatusDesc ASC" ElseIf Me.Select = 4 Then Sortby = "ORDER BY Assets.LocationNo ASC" ElseIf Me.Select = 5 Then Sortby = "ORDER BY Location.LocationDescription ASC" ElseIf Me.Select = 7 Then Sortby = "ORDER BY Department.DepartmentDescription ASC" ElseIf Me.Select = 8 Then Sortby = "ORDER BY assetcategories.AssetCategory ASC" ElseIf Me.Select = 9 Then Sortby = "ORDER BY employees.FirstName ASC" ElseIf Me.Select = 10 Then Sortby = "ORDER BY Assets.ModelNumber ASC" ElseIf Me.Select = 11 Then Sortby = "ORDER BY Assets.Manufacturer ASC" ElseIf Me.Select = 12 Then Sortby = "ORDER BY Suppliers.SupplierName ASC" ElseIf Me.Select = 13 Then Sortby = "ORDER BY Assets.Warranty_ContractExpiry ASC" ElseIf Me.Select = 14 Then Sortby = "ORDER BY Assets.DateAcquired ASC" ElseIf Me.Select = 15 Then Sortby = "ORDER BY Assets.DataDisposed ASC" ElseIf Me.Select = 16 Then Sortby = "ORDER BY suppliers_1.SupplierName ASC" End If Me.SortB1.Caption = "Ordenar Z->A" Else If Me.Select = 1 Then Sortby = "ORDER BY AssetNumber DESC" ElseIf Me.Select = 2 Then Sortby = "ORDER BY AssetDescription DESC" ElseIf Me.Select = 3 Then Sortby = "ORDER BY AssetStatus.AssetStatusDesc DESC" ElseIf Me.Select = 4 Then Sortby = "ORDER BY Assets.LocationNo DESC" ElseIf Me.Select = 5 Then Sortby = "Order by Location.LocationDescription DESC" ElseIf Me.Select = 7 Then Sortby = "ORDER BY Department.DepartmentDescription DESC" ElseIf Me.Select = 8 Then Sortby = "ORDER BY assetcategories.AssetCategory DESC"
194
ElseIf Me.Select = 9 Then Sortby = "ORDER BY employees.FirstName DESC" ElseIf Me.Select = 10 Then Sortby = "ORDER BY Assets.ModelNumber DESC" ElseIf Me.Select = 11 Then Sortby = "ORDER BY Assets.Manufacturer DESC" ElseIf Me.Select = 12 Then Sortby = "ORDER BY Suppliers.SupplierName DESC" ElseIf Me.Select = 13 Then Sortby = "ORDER BY Assets.Warranty_ContractExpiry DESC" ElseIf Me.Select = 14 Then Sortby = "ORDER BY Assets.DateAcquired DESC" ElseIf Me.Select = 15 Then Sortby = "ORDER BY Assets.DataDisposed DESC" ElseIf Me.Select = 16 Then Sortby = "Order BY suppliers_1.SupplierName DESC" End If Me.SortB1.Caption = "Ordenar A->Z" End If Call Sort End Sub Private Sub txtFind_Change() Dim sel As String If fld = 5 Then sel = "SELECT assetstatus.AssetStatusDesc FROM assetstatus WHERE assetstatus.AssetStatusDesc LIKE '*" + Me.txtFind.Text + "*' ORDER BY assetstatus.AssetStatusDesc;" ElseIf fld = 7 Then sel = "SELECT Department.DepartmentNo FROM Department WHERE Department.DepartmentNo Like '*" + Me.txtFind.Text + "*' ORDER BY Department.DepartmentNo;" ElseIf fld = 8 Then sel = "SELECT assetcategories.AssetCatCode FROM assetcategories WHERE AssetCatCode Like '*" + Me.txtFind.Text + "*' ORDER BY assetcategories.AssetCatCode;" ElseIf fld = 9 Then sel = "SELECT employees.EmployeeNO FROM employees WHERE EmployeeNo Like '*" + Me.txtFind.Text + "*' ORDER BY employees.EmployeeNO;" ElseIf fld = 11 Then sel = "SELECT distinct(assets.Manufacturer) FROM assets where assets.Manufacturer Like '*" + Me.txtFind.Text + "*' ORDER BY assets.Manufacturer;" ElseIf fld = 12 Then sel = "SELECT suppliers.SupplierNo FROM suppliers where SupplierNo Like '*" + Me.txtFind.Text + "*' ORDER BY suppliers.SupplierNo;" ElseIf fld = 13 Then sel = "SELECT LocationNo FROM Location WHERE LocationNo Like '*" + Me.txtFind.Text + "*' Order By LocationNo" ElseIf fld = 14 Then sel = "SELECT suppliers.SupplierNo FROM suppliers where SupplierNo Like '*" + Me.txtFind.Text + "*' ORDER BY suppliers.SupplierNo;" End If Me.DataList.RowSource = sel End Sub
195
Formulario Equipo Actual
Figura 9. – Formulario Equipo actual.
Este formulario despliega toda la información del Equipo que se tiene seleccionado al momento. Como se puede observar en la figura el formulario muestra todos los campos de información acerca del equipo y para ello utiliza varias pestañas que agrupan los campos según el tipo de datos. Estas pestañas están identificadas como: equipo, repuestos, equipos asociados, información adicional, historial orden de trabajo y archivos auxiliares. Los campos que se muestran en este formulario son los siguientes: “ID de equipo”, “Descripción”, “Modelo”, “Serial”, “Fabricante”, “Ubicación”, “Departamento”, Tipo”, “Status”, “Prioridad”, “Responsable”, “Notas técnicas”, “Vendedor”, “Precio de compra”, “Fecha de compra”, “Tiempo de vida estimado”, “Valor actual”, “Desde”, “Garantía por”, “Tipo de garantía”, “Fecha de vencimiento”, “Status de garantía”, “Notas garantía”, “Observaciones”, “Código de piezas”, “Equipos secundarios”, “Información adicional”, “Número de OT”, “Status de OT”, ”Descripción trabajo”, “Fecha solicitud”, “Fecha de inicio”, “Fecha de término”, “Archivo asociado”, “Descripción archivo asociado”. Los campos de información en este formulario pueden ser modificados y guardados en la base de datos del sistema. El código de programa asociado a este formulario es el siguiente: '***************************** ' ' Registro Actual de Equipo ' '***************************** Option Compare Database Dim selectedfile As String Dim typ As Integer Dim OldStatus As Integer Private Sub cboSibling_AfterUpdate() If Not IsNull(Me.cboSibling) Then Dim rsSib, rsAss As DAO.Recordset Dim sqlq, sqla As String Set dbSICAM = CurrentDb sqlq = "Select * FROM Sibling Where Sibling ='" + Me.cboSibling + "'"
196
Set rsSib = dbSICAM.OpenRecordset(sqlq) If rsSib.RecordCount <> 0 Then MsgBox "El Equipo seleccionado es componente del Equipo: " & rsSib.Fields("AssetNo"), vbInformation Me.cboSibling = Null Me.cboSibling.SetFocus rsSib.Close Exit Sub End If rsSib.Close sqla = "Select * FROM Sibling Where AssetNo ='" + Me.cboSibling + "'" Set rsAss = dbSICAM.OpenRecordset(sqla) If rsAss.RecordCount <> 0 Then MsgBox "El Equipo seleccionado ya existe como principal.", vbInformation Me.cboSibling = Null Me.cboSibling.SetFocus End If rsAss.Close Else Me.cboSibling.SetFocus End If End Sub Private Sub cmdSiblingSave_Click() If IsNull(Me.AssetNo) Or Me.AssetNo = "" Then MsgBox "Indique el ID del Equipo antes de grabarlo como componente", vbInformation Exit Sub ElseIf IsNull(Me.cboSibling) Or Me.cboSibling = "" Then MsgBox "Ninguna fecha a grabar.", vbInformation Me.cboSibling.SetFocus Exit Sub Else If Me.Per = Me.cboSibling Then MsgBox "Equipo ya seleccionado como principal", vbInformation Exit Sub Else Dim rsSibling, rsAssets As DAO.Recordset Dim sqlq, sqla As String sqlq = "Select * FROM Sibling Where AssetNo ='" + Me.AssetNo + "' AND Sibling = '" + Me.cboSibling + "'" Set dbSICAM = CurrentDb Set rsSibling = dbSICAM.OpenRecordset(sqlq) If rsSibling.EOF = False Then MsgBox "Componente ya agregado", vbInformation Else rsSibling.AddNew rsSibling.Fields("AssetNo") = Me.AssetNo rsSibling.Fields("Sibling") = cboSibling.Column(0) rsSibling.Update rsSibling.Close Me.Sibling_subform.Requery sqla = "Select * FROM Assets Where AssetNumber ='" + Me.cboSibling + "'" Set rsAssets = dbSICAM.OpenRecordset(sqla) rsAssets.Edit rsAssets.Fields("Parent") = Me.AssetNo rsAssets.Update rsAssets.Close Me.cboSibling = Null End If End If End If End Sub
197
Private Sub Command140_Click() Call SelectFile Me.Extfile1 = selectedfile Me.View1.HyperlinkAddress = Me.Extfile1 End Sub Private Sub Command147_Click() Call SelectFile Me.Extfile2 = selectedfile Me.View2.HyperlinkAddress = Me.Extfile2 End Sub Private Sub Command149_Click() Call SelectFile Me.Extfile3 = selectedfile Me.view3.HyperlinkAddress = Me.Extfile3 End Sub Private Sub Command150_Click() Call SelectFile Me.Extfile4 = selectedfile Me.view4.HyperlinkAddress = Me.Extfile4 End Sub Private Sub Command151_Click() Call SelectFile Me.Extfile5 = selectedfile Me.view5.HyperlinkAddress = Me.Extfile5 End Sub Private Sub Command169_Click() Me.calCtl2.Visible = True Me.calCtl2.Value = Date End Sub Private Sub Command170_Click() Call Klendario typ = 1 End Sub Private Sub Command171_Click() Call Klendario typ = 2 End Sub Private Sub DateAcquired_AfterUpdate() Call CalDepValue End Sub Private Sub EstLife_AfterUpdate() Call CalDepValue End Sub Private Sub Form_Activate() DoCmd.Restore Refresh End Sub Private Sub Command3_Click() On Error GoTo Err_Command3_Click If IsNull(Me.AssetDescription) Or Trim(Me.AssetDescription) = "" Then MsgBox "Indique la Descripción del Equipo ", vbOKOnly + vbExclamation
198
Me.AssetDescription.SetFocus Exit Sub End If If IsNull(Me.LocationNo) Then MsgBox "Introduzca los datos al campo", vbInformation Me.LocationNo.SetFocus Exit Sub End If If Me.Dirty Then If Not IsNull(Me.Warranty_ContractExpiry) And IsNull(Me.Warranty_Contract) Then MsgBox "Introduzca los datos al campo", vbInformation DoCmd.GoToControl "Warranty/Contract" Exit Sub ElseIf MsgBox("Desea grabar el registro ?", vbInformation + vbYesNo, "Grabar") = vbNo Then DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70 End If End If DoCmd.Close acForm, Me.Name Exit_Command3_Click: Exit Sub Err_Command3_Click: MsgBox err.Description Resume Exit_Command3_Click End Sub Public Sub SubForm() DoCmd.OpenForm Subdocname, , , stLinkCriteria End Sub Private Sub Command128_Click() On Error GoTo Err_Command128_Click Dim stLinkCriteria As String DoCmd.OpenForm "EmpNuevoForm", , , stLinkCriteria Exit_Command128_Click: Exit Sub Err_Command128_Click: MsgBox err.Description Resume Exit_Command128_Click End Sub Private Sub Command129_Click() On Error GoTo Err_Command129_Click Dim stLinkCriteria As String DoCmd.OpenForm "ProveedorNuevoForm", , , stLinkCriteria Exit_Command129_Click: Exit Sub Err_Command129_Click: MsgBox err.Description Resume Exit_Command129_Click End Sub Private Sub Command134_Click() On Error GoTo Err_Command134_Click
199
DoCmd.OpenForm "ProveedorNuevoForm", , , "[SupplierNo]=" & "'" & Me![Vendor] & "'" Exit_Command134_Click: Exit Sub Err_Command134_Click: MsgBox err.Description Resume Exit_Command134_Click End Sub Private Function SelectFile() Dim f As Integer Dim lngFlags As Long Dim gfni As adh_accOfficeGetFileNameInfo On Error GoTo HandleErrors With gfni .lngFlags = lngFlags .strFilter = "All Files (*.*)" .lngFilterIndex = CInt("1") .strFile = "" .strDlgTitle = "Select a file" .strOpenTitle = "Select" .strFile = "" .strInitialDir = "" End With If adhOfficeGetFileName(gfni, True) = adhcAccErrSuccess Then selectedfile = Trim(gfni.strFile) End If ExitHere: Exit Function HandleErrors: MsgBox "Error: " & err.Description & " (" & err.Number & ")" Resume ExitHere End Function Private Sub Form_Load() If Not IsNull(Me.Extfile1) Then Me.View1.HyperlinkAddress = Me.Extfile1 End If If Not IsNull(Me.Extfile2) Then Me.View2.HyperlinkAddress = Me.Extfile2 End If If Not IsNull(Me.Extfile3) Then Me.view3.HyperlinkAddress = Me.Extfile3 End If Call CalDepValue End Sub Private Sub Form_Open(Cancel As Integer) OldStatus = IIf(IsNull(Me.Status.Column(0)), 0, Me.Status.Column(0)) CheckWarrantyStatus If Not IsNull(Me.Warranty_ContractExpiry) Then If CDate(Me.Warranty_ContractExpiry) < ServerdateQuery() Then Me.warrantystatus.Caption = "Expired" End If End Sub
200
Private Sub Page1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Error GoTo ErrorHandler If Me.calCtl1.Visible = True Then Me.calCtl1.Visible = False If Me.calCtl2.Visible = True Then Me.calCtl2.Visible = False ErrorHandler: If err.Number <> 0 Then Me.DateAcquired.SetFocus If Me.calCtl1.Visible = True Then Me.calCtl1.Visible = False Me.Warranty_ContractExpiry.SetFocus If Me.calCtl2.Visible = True Then Me.calCtl2.Visible = False End If End Sub Private Sub PurchasePrice_AfterUpdate() Call CalDepValue End Sub Private Sub calCtl1_Click() Select Case typ Case 1 Me.DateAcquired = Me.calCtl1.Value Call CalDepValue Me.DateAcquired.SetFocus Case 2 Me.DataDisposed = Me.calCtl1.Value Me.DataDisposed.SetFocus End Select Me.calCtl1.Visible = False End Sub Private Sub Klendario() Me.calCtl1.Visible = True Me.calCtl1.Value = Date End Sub Private Sub calCtl2_Click() Me.Warranty_ContractExpiry = Me.calCtl2.Value Me.Warranty_ContractExpiry.SetFocus Me.calCtl2.Visible = False CheckWarrantyStatus CheckExpiry End Sub Private Sub Status_AfterUpdate() If Me.Status.Column(0) >= 2 Then If PMExist(Me.AssetNumber) = True Then If MsgBox("Hay Ordenes de trabajo activas para este Equipo. Desea proceder?", vbYesNo + vbQuestion, "SICAM") = vbNo Then Me.Status = OldStatus End If Exit Sub End If If WOExist(Me.AssetNumber) = True Then If MsgBox("Hay Ordenes de Trabajo activas para este Equipo. Desea proceder?", vbYesNo + vbQuestion, "SICAM") = vbNo Then Me.Status = OldStatus End If Exit Sub End If End If
201
End Sub Private Function PMExist(MyAssNo As String) As Boolean Dim rc As DAO.Recordset Set dbSICAM = CurrentDb Set rc = dbSICAM.OpenRecordset("select PMNo from pmschedule where AssetNo='" & Trim(Replace(MyAssNo, "'", "''")) & "' and PMActive=-1") PMExist = IIf(rc.EOF, False, True) rc.Close Set rc = Nothing End Function Private Function WOExist(MyAssNo As String) As Boolean Dim rc As DAO.Recordset Set dbSICAM = CurrentDb Set rc = dbSICAM.OpenRecordset("select WorkorderNo from WorkOrders where AssetNo='" & Trim(Replace(MyAssNo, "'", "''")) & "' and WorkStatus=1 or AssetNo='" & Trim(Replace(MyAssNo, "'", "''")) & "' and WorkStatus>=4") WOExist = IIf(rc.EOF, False, True) rc.Close Set rc = Nothing End Function Private Sub CalDepValue() On Error GoTo err If IsNull(Me.EstLife) Then Me.EstLife.Value = 0 Me.CurrentValue.Value = 0 Exit Sub End If Dim TotalVal, curval As Double If Not IsNull(Me.DateAcquired) And Not IsNull(Me.PurchasePrice) And Me.PurchasePrice <> 0 And Me.EstLife <> 0 Then TotalVal = Me.PurchasePrice * DateDiff("d", Me.DateAcquired, Date) / (Me.EstLife * 365) curval = Me.PurchasePrice - TotalVal If curval <= 0 Then Me.CurrentValue = 1 Else Me.CurrentValue = curval End If Else Me.CurrentValue = 0 End If Exit Sub err: Exit Sub End Sub Private Sub Warranty_Contract_Enter() CheckWarrantyStatus CheckExpiry End Sub Private Sub CheckWarrantyStatus() If Warranty_Contract.Column(1) = "Garantía" Or Warranty_Contract.Column(1) = "Contrato" Then Me.warrantystatus.Caption = "Active" Else Me.warrantystatus.Caption = ""
202
End If End Sub Private Sub CheckExpiry() If Me.Warranty_Contract.Column(1) = "Garantía" And Me.Warranty_ContractExpiry < ServerdateQuery() Then MsgBox "La Fecha de Vencimiento de garantía debe ser mayor a la fecha actal", vbInformation, "SICAM" Me.Warranty_ContractExpiry = Null Me.warrantystatus.Caption = "" DoCmd.GoToControl "Warranty/ContractExpiry" ElseIf Me.Warranty_Contract.Column(1) = "Contrato" And Me.Warranty_ContractExpiry < ServerdateQuery() Then MsgBox "La Fecha de Vencimiento de garantía debe ser mayor a la Fecha actual", vbInformation, "SICAM" Me.Warranty_ContractExpiry = Null Me.warrantystatus.Caption = "" DoCmd.GoToControl "Warranty/ContractExpiry" ElseIf Me.Warranty_Contract.Column(1) = "Sin Contrato" And Me.Warranty_ContractExpiry > ServerdateQuery() Then MsgBox "Fecha de Vencimiento de garantía debe ser menor a Fecha actual", vbInformation, "SICAM" Me.Warranty_ContractExpiry = Null Me.warrantystatus.Caption = "" DoCmd.GoToControl "Warranty/ContractExpiry" End If End Sub Private Sub Warranty_ContractExpiry_AfterUpdate() CheckWarrantyStatus CheckExpiry End Sub
Formulario Equipo nuevo. Figura 10. - Formulario Equipo nuevo.
203
Este formulario permite ingresar un equipo o activo nuevo a la base de datos del sistema. El
mismo cuenta con varias pestañas dentro del mismo formulario y que sirven para organizar de
una mejor manera la información asociada al equipo. La pestaña “Equipo” solicita la mayoría de
la información de éste y sus campos son: número de equipo (ID equipo), Descripción, Modelo,
Serial, Fabricante, Ubicación, Departamento, Tipo de Equipo, Status, Prioridad, Persona
responsable, Observaciones, Vendedor, Precio de compra, Fecha de compra, Tiempo de vida
estimado, Valor actual, Fecha de ingreso al sistema, Tipo de garantía, Fecha de vencimiento de
garantía, Observaciones sobre la garantía y Otras observaciones. La pestaña “Repuestos”
permite introducir los códigos de las piezas de repuestos asociadas al equipo. La pestaña
“Equipos asociados” permite introducir algún otro equipo asociado o que trabaje en conjunto
con el equipo que se está creando en el sistema en caso de que fuera necesario. (Un ejemplo
de este caso seria un Computador que esta asociado a una unidad de suministro de energía
ininterrumpida o Ups o un equipo que forme parte de uno mas grande y que para efectos del
programa de mantenimiento debe ser considerado como un componente). La pestaña
“Información adicional” se utiliza para agregar algún comentario o información de interés para el
usuario o personal operador o de mantenimiento del equipo. La pestaña “Archivos auxiliares”
permite asociar hasta tres archivos externos que contengan alguna información sobre el equipo
y que se ejecuten con otra aplicación de computadoras como hojas de cálculo, archivos de
texto, presentaciones, gráficos, archivos pdf, etc. El botón “Guardar” permite almacenar en la
base de datos del sistema toda la información suministrada al formulario sobre el equipo y el
botón “Cerrar” permite salir del formulario sin guardar la información.
Formulario Lista de Empleados
Figura 11. – Formulario Lista de Empleados.
204
Este formulario muestra la lista de los empleados o clientes del sistema con los campos
de información que pueden ser de interés para el usuario. Estos campos son los siguientes:
número de empleado, nombre, cargo, categoría, teléfono de trabajo, teléfono de habitación,
teléfono celular y departamento. Estos campos pueden ser vistos utilizando las barras de
desplazamiento. El formulario permite filtrar la información seleccionando una de las casillas de
opciones ubicadas en la parte inferior del mismo y luego pulsando el botón “Buscar”. El botón
“Nuevo Empleado” abre otro formulario que permite introducir un nuevo empleado al sistema y
el botón “Ordenar A->Z” permite ordenar en orden ascendente o descendente la presentación
de los datos de acuerdo al filtro seleccionado en las casillas inferiores. Seleccionando un
empleado de la lista y haciendo “doble click” sobre él se abrirá el formulario “Empleado actual”
que muestra toda la información del mismo. El código de programa para el formulario “Lista de
empleados” es el siguiente:
'************************ ' ' Lista de Empleados ' '************************ Option Explicit Dim sel, Sortby As String Private Sub Command16_Click() Dim EmployeeList As String If Me.Select = 1 Then sel = "EmployeeNo ='" & Me.Input & "'" ElseIf Me.Select = 2 Then sel = "FirstName like '" & Me.Input & "*'" ElseIf Me.Select = 3 Then sel = "Positions like '" & Me.Input & "*'" ElseIf Me.Select = 4 Then If UCase(Me.Input) = "EMPLEADO" Then sel = "category = '1'" ElseIf UCase(Me.Input) = "CLIENTE" Then sel = "category = '2'" End If ElseIf Me.Select = 5 Then sel = "Department.[DepartmentDescription] like '" & Me.Input & "*'" End If EmployeeList = "SELECT Employees.EmployeeNO as [No de empleado], Employees.FirstName as [Nombre], " & _ "Employees.Positions as [Cargo],iif(Employees.category='1','Empleado','Cliente') as [Categoría] ,Employees.WorkPhone as [Teléfono oficina], " & _ "Employees.Housephone as [Teléfono Hab], Employees.Handphone as [Teléfono celular],Department.[DepartmentDescription] as [Departamento] " & _ "FROM Employees LEFT JOIN Department ON Employees.DepartmentNo = Department.[DepartmentNo] " & _ "WHERE " & sel & " ;" Debug.Print EmployeeList Me.List.RowSource = EmployeeList Me.List.ColumnCount = 8
205
Me.List.ColumnHeads = True Me.List.ColumnWidths = "3 cm; 5 cm; 4 cm; 3 cm; 3 cm; 3 cm; 3 cm; 4 cm" Call contarreg End Sub Private Sub Command17_Click() Call vertodo End Sub Private Sub Form_Activate() DoCmd.Restore Call contarreg Refresh End Sub Private Sub Form_Deactivate() DoCmd.Minimize End Sub Private Sub Form_Open(Cancel As Integer) Call vertodo End Sub Private Sub Command6_Click() On Error GoTo Err_Command6_Click Dim stLinkCriteria As String DoCmd.OpenForm "EmpNuevoForm", , , stLinkCriteria Exit_Command6_Click: Exit Sub Err_Command6_Click: MsgBox err.Description Resume Exit_Command6_Click End Sub Private Sub List_DblClick(Cancel As Integer) If IsNull(Me.List.Column(0)) Then MsgBox "Seleccione un registro", vbInformation, "SICAM" Else DoCmd.OpenForm "ActEmpForm", , , "[EmployeeNo]=" & "'" & Me.List.Column(0) & "'" End If End Sub Public Sub vertodo() Dim EmployeeList As String EmployeeList = "SELECT Employees.EmployeeNO as [No de empleado], Employees.FirstName as [Nombre], " & _ "Employees.Positions as [Cargo],iif(Employees.category='1','Empleado','Cliente') as [Categoría] ,Employees.WorkPhone as [Teléfono oficina], " & _ "Employees.Housephone as [Teléfono Hab], Employees.Handphone as [Teléfono celular],Department.[DepartmentDescription] as [Departamento] " & _ "FROM Employees LEFT JOIN Department ON Employees.DepartmentNo = Department.[DepartmentNo];" Me.List.RowSource = EmployeeList Me.List.ColumnCount = 8 Me.List.ColumnHeads = True Me.List.ColumnWidths = "3 cm; 5 cm; 4 cm; 3 cm; 3 cm; 3 cm; 3 cm; 4 cm" Call contarreg End Sub Private Sub Command19_Click()
206
On Error GoTo Err_Command19_Click DoCmd.Close acForm, Me.Name Exit_Command19_Click: Exit Sub Err_Command19_Click: MsgBox err.Description Resume Exit_Command19_Click End Sub Private Sub SortB1_Click() If Me.SortB1.Caption = "Ordenar A->Z" Then If Me.Select = 1 Then Sortby = "ORDER BY EmployeeNO ASC" ElseIf Me.Select = 2 Then Sortby = "ORDER BY FirstName ASC" ElseIf Me.Select = 3 Then Sortby = "ORDER BY Positions ASC" ElseIf Me.Select = 4 Then Sortby = "ORDER BY Category ASC" ElseIf Me.Select = 5 Then Sortby = "ORDER BY Department.[DepartmentDescription] ASC" End If Me.SortB1.Caption = "Ordenar Z->A" Else If Me.Select = 1 Then Sortby = "ORDER BY EmployeeNO DESC" ElseIf Me.Select = 2 Then Sortby = "ORDER BY FirstName DESC" ElseIf Me.Select = 3 Then Sortby = "ORDER BY Positions DESC" ElseIf Me.Select = 4 Then Sortby = "ORDER BY Category DESC" ElseIf Me.Select = 5 Then Sortby = "ORDER BY Department.[DepartmentDescription] DESC" End If Me.SortB1.Caption = "Ordenar A->Z" End If Call Sort End Sub Public Sub Sort() Dim EmployeeList As String EmployeeList = "SELECT Employees.EmployeeNO as [No de empleado], Employees.FirstName as [Nombre], " & _ "Employees.Positions as [Posición],iif(Employees.category='1','Empleado','Cliente') as [Categoría] ,Employees.WorkPhone as [Teléfono oficina], " & _ "Employees.Housephone as [Teléfono casa], Employees.Handphone as [Teléfono celular],Department.[DepartmentDescription] as [Departamento] " & _ "FROM Employees LEFT JOIN Department ON Employees.DepartmentNo = Department.[DepartmentNo] " & Sortby & ";" Me.List.RowSource = EmployeeList Me.List.ColumnCount = 8 Me.List.ColumnHeads = True Me.List.ColumnWidths = "3 cm; 5 cm; 4 cm; 3 cm; 3 cm; 3 cm; 3 cm; 4 cm" Call contarreg End Sub Private Sub contarreg()
207
Call CountRecord(Me.ListRec, List) End Sub
Formulario Empleado actual
Figura 12. – Formulario Empleado actual. Este formulario muestra toda la información de un empleado en particular que ha sido
seleccionado de la lista general de empleados. Muestra la información sobre los datos
personales del empleado: número de empleado, dirección, cargo, teléfonos, área de trabajo,
departamento, ubicación y correo electrónico. Además muestra la información sobre los equipos
que tiene asignado o de los cuales es responsable y el salario, horas extras y categoría. Los
campos de la información general de la persona son editables y pueden ser cambiados a
excepción del número de empleado (ID Empleado). También pueden modificarse los campos de
salario, tiempo extra y categoría. El código de programa asociado a este formulario es el
siguiente:
'**************************** ' ' Registro Actual Empleados ' '***************************** Option Compare Database Dim MyUserId As String Private Sub AccessLevel_AfterUpdate() If Len(Me.AccessLevel) > 9 Then
208
MsgBox "Usted no puede seleccionar más de 9 módulos", vbInformation Me.AccessLevel.SetFocus Me.AccessLevel = Null End If End Sub Private Sub Command38_Click() On Error GoTo Err_Command38_Click If AccessLevelEmpty = True Then MsgBox "Especifique módulos de acceso.", vbInformation Exit Sub End If If Me.Dirty Then If MsgBox("Desea grabar el registro?", vbInformation + vbYesNo, "Grabar") = vbNo Then DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70 End If End If DoCmd.Close acForm, Me.Name Exit_Command38_Click: Exit Sub Err_Command38_Click: MsgBox err.Description Resume Exit_Command38_Click End Sub Private Function AccessLevelEmpty() As Boolean AccessLevelEmpty = False If Not IsNull(Me.UserID) And Not Me.UserID = "" Then If IsNull(Me.AccessLevel) Or Me.AccessLevel = "" Then AccessLevelEmpty = True Else AccessLevelEmpty = False End If End If End Function Private Sub Form_Open(Cancel As Integer) If AdminAccess = "Admin" Then Me.UserID.Visible = True Me.UserPW.Visible = True Me.AccessLevel.Visible = True Me.ModList.Visible = True Me.Adjustment.Visible = True End If MyUserId = IIf(IsNull(UserID.Value), "", UserID.Value) End Sub Private Sub ModList_Click() If Len(Me.AccessLevel) > 9 Then MsgBox "Usted no puede seleccionar más de 9 módulos", vbInformation Exit Sub End If Me.AccessLevel.SetFocus If InStr(1, IIf(IsNull(Me.AccessLevel.Text), "", Me.AccessLevel.Text), Me.ModList.Column(0), vbTextCompare) = 0 Then Me.AccessLevel = Me.AccessLevel & Me.ModList.Column(0) End If End Sub
209
Private Sub UserID_AfterUpdate() If IsNull(Me.UserID) Or Trim(Me.UserID) = "" Then Exit Sub Dim rsEmp As DAO.Recordset Set dbSICAM = CurrentDb() Set rsEmp = dbSICAM.OpenRecordset("Select UserId from Employees where UserID='" & Me.UserID & "' and EmployeeNo<>'" & Me.EmployeeNo & "'") If Not rsEmp.EOF Then MsgBox "Usuario ya existe" Me.UserID = MyUserId End If rsEmp.Close Set rsEmp = Nothing End Sub Private Sub UserID_BeforeUpdate(Cancel As Integer) End Sub
Formulario Empleado Nuevo Figura 13 – Formulario Empleado nuevo.
Este formulario se usa para introducir un empleado o cliente nuevo a la base de datos del
sistema. El formulario pide al usuario introducir los datos de la persona comenzando con el
número del empleado (ID empleado), siendo éste el más importante ya que es el campo clave
para identificar a la persona en el sistema. Como muestra la figura 4.6 los campos de
información de este formulario son los siguientes: ID empleado, Nombre, Dirección, Cargo,
Teléfono de Trabajo y extensión, Fax, Teléfono de habitación, Departamento, Ubicación, Correo
electrónico, salario por hora, tasa de tiempo extra y Categoría. El botón “Guardar” permite
almacenar el registro en la base de datos; el botón “Cerrar” permite salir del formulario sin
almacenar la información. El código de programa correspondiente a este formulario es el
210
siguiente:
'**************************** ' ' Nuevo Registro Empleados ' '**************************** Option Explicit Dim stLinkCriteria As String Private Sub AccessLevel_AfterUpdate() If Len(Me.AccessLevel) > 9 Then MsgBox "Usted no puede seleccionar más de 9 módulos.", vbInformation Me.AccessLevel.SetFocus Me.AccessLevel = Null End If End Sub Private Sub EmpNo_AfterUpdate() Dim rsEmp As DAO.Recordset Set dbSICAM = CurrentDb() Set rsEmp = dbSICAM.OpenRecordset("Employees") Do While Not rsEmp.EOF If UCase(rsEmp!EmployeeNo) = UCase(Me.EmpNo) Then MsgBox "Empleado o Solicitante ya existe", vbInformation Me.EmpNo = Null DoCmd.GoToControl "EmpNo" End If rsEmp.MoveNext Loop rsEmp.Close End Sub Private Sub Form_Open(Cancel As Integer) If AdminAccess = "Admin" Then Me.UserID.Visible = True Me.UserPW.Visible = True Me.AccessLevel.Visible = True Me.ModList.Visible = True Me.Adjustment.Visible = True End If End Sub Private Sub ModList_Click() If Len(Me.AccessLevel) > 9 Then MsgBox "Usted no puede seleccionar más de 9 módulos.", vbInformation Exit Sub End If Me.AccessLevel.SetFocus If InStr(1, IIf(IsNull(Me.AccessLevel.Text), "", Me.AccessLevel.Text), Me.ModList.Column(0), vbTextCompare) = 0 Then Me.AccessLevel = Me.AccessLevel & Me.ModList.Column(0) End If End Sub Private Sub Save_Click() Dim response Dim rsEmp As DAO.Recordset If IsNull(Me.EmpNo) Or Me.EmpNo = "" Then MsgBox "Indique el ID del Empleado.", vbInformation DoCmd.GoToControl "Empno" ElseIf IsNull(Me.FirstName) Or Me.FirstName = "" Then MsgBox "Indique el Nombre del Empleado.", vbInformation DoCmd.GoToControl "Firstname" ElseIf ((Not IsNull(Me.UserPW) Or Not Trim(Me.UserPW) = "") And IsNull(Me.UserID) Or Trim(Me.UserID) = "") Then
211
MsgBox "Indique El ID de Ususario" DoCmd.GoToControl "UserId" ElseIf AccessLevelEmpty = True Then MsgBox "Indique módulos de acceso.", vbInformation Else response = MsgBox("Desea grabar el registro ?", vbYesNo + vbInformation + vbDefaultButton2, "Grabar") If response = vbYes Then Set dbSICAM = CurrentDb() Set rsEmp = dbSICAM.OpenRecordset("Employees") With rsEmp .AddNew ![EmployeeNo] = Me.EmpNo ![FirstName] = Me.FirstName ![Positions] = Me.Positions ![DepartmentNo] = Me.Depart.Column(0) ![WorkTrade] = Me.WorkTrade.Column(0) ![Extension] = Me.Ext ![WorkPhone] = Me.WorkPhone ![HandPhone] = Me.HandPhone ![Email] = Me.Eml ![OfficeLocation] = Me.OfficeLocation.Column(0) ![HourlySalary] = Me.HS ![OverTime1] = Me.OTV1 ![OverTime2] = Me.OTV2 ![OverTime3] = Me.OTV3 ![HousePhone] = Me.HP ![Address] = Me.ADRES ![Fax] = Me.fx ![category] = Me.category ![UserID] = Me.UserID ![Password] = Me.UserPW ![Accessibility] = Me.AccessLevel ![Adjustment] = Me.Adjustment .Update .Close End With DoCmd.Close acForm, Me.Name DoCmd.OpenForm "EmpNuevoForm", , , stLinkCriteria Else DoCmd.GoToControl "EmpNo" End If End If End Sub Private Function AccessLevelEmpty() As Boolean AccessLevelEmpty = False If Not IsNull(Me.UserID) And Not Me.UserID = "" Then If IsNull(Me.AccessLevel) Or Me.AccessLevel = "" Then AccessLevelEmpty = True Else AccessLevelEmpty = False End If End If End Function Private Sub Command104_Click() On Error GoTo Err_Command104_Click DoCmd.Close acForm, Me.Name Exit_Command104_Click: Exit Sub Err_Command104_Click: MsgBox err.Description
212
Resume Exit_Command104_Click End Sub Private Sub UserID_LostFocus() If IsNull(Me.UserID) Or Trim(Me.UserID) = "" Then Exit Sub Dim rsEmp As DAO.Recordset Set dbSICAM = CurrentDb() Set rsEmp = dbSICAM.OpenRecordset("Select EmployeeNO from Employees where UserID='" & Me.UserID & "'") If Not rsEmp.EOF Then MsgBox "Usuario ya existe" Me.UserID = "" End If rsEmp.Close Set rsEmp = Nothing End Sub
Formulario Lista de Ubicaciones Figura 14. - Formulario Lista de ubicaciones. Este formulario muestra las ubicaciones o locaciones que se encuentran en la base de
datos del sistema. Una locación puede ser el lugar donde se encuentre instalado uno o varios
equipos o donde este asignada o trabajando una(s) maquinaria(s), una oficina, área o donde
sea el lugar de aparcamiento de un vehiculo. En resumen, una ubicación o locación es el sitio
donde pueda ser localizado un equipo o activo de la empresa. Este formulario muestra el
número de ubicación, la descripción y el departamento al que pertenece cada locación. Los
datos pueden ser filtrados seleccionando alguna de las casillas de la parte inferior del formulario
de manera que se muestren organizadas por número, descripción o departamento al presionar
el botón “Buscar”. Así mismo, una vez que se seleccione una de estas casillas los datos pueden
ser ordenados de manera ascendente o descendente seleccionando el botón “Ordenar A->Z”.
213
Para ver todos las locaciones una vez que han sido filtradas se selecciona el botón “Ver Todo”.
El botón “Nueva Ubicación” abre otro formulario que sirve para introducir una nueva locación a
la base de datos del sistema. Al seleccionar un registro de la lista y hacer “doble click” se abre
el formulario “Ubicación actual”. El código de programa para el formulario “Lista de ubicaciones”
es el siguiente:
'*********************** ' ' Lista de Ubicaciones ' '*********************** Option Explicit Dim sel, Sortby As String Private Sub Command13_Click() Dim LocationList As String If Me.Select = 1 Then sel = "LocationNo ='" & Me.Input & "'" ElseIf Me.Select = 2 Then sel = "LocationDescription like '" & Me.Input & "*'" ElseIf Me.Select = 3 Then sel = " Department.[DepartmentDescription] like '" & Me.Input & "*'" End If LocationList = "SELECT Location.LocationNo as [No de Ubicación], Location.LocationDescription as [Descripción], Department.[DepartmentDescription] as [Departamento]" & _ "FROM Location LEFT JOIN Department ON Location.DeptNo = Department.[DepartmentNo] " & _ "WHERE " & sel & " ;" Me.List.RowSource = LocationList Me.List.ColumnCount = 3 Me.List.ColumnHeads = True Me.List.ColumnWidths = "3 cm; 9 cm; 3 cm" Call contarreg End Sub Private Sub Command14_Click() Call vertodo End Sub Private Sub Form_Activate() DoCmd.Restore Call contarreg Refresh End Sub Private Sub Form_Deactivate() DoCmd.Minimize End Sub Private Sub Form_Open(Cancel As Integer) Call vertodo End Sub Private Sub Command3_Click() On Error GoTo Err_Command3_Click
214
Dim stLinkCriteria As String DoCmd.OpenForm "UbicNuevaForm", , , stLinkCriteria Exit_Command3_Click: Exit Sub Err_Command3_Click: MsgBox err.Description Resume Exit_Command3_Click End Sub Private Sub List_DblClick(Cancel As Integer) If IsNull(Me.List.Column(0)) Then MsgBox "Seleccione un registro", vbInformation, "SICAM" Else DoCmd.OpenForm "ActUbicForm", , , "[LocationNo]=" & "'" & Me.List.Column(0) & "'" End If End Sub Public Sub vertodo() Dim LocationList As String LocationList = "SELECT Location.LocationNo as [No de Ubicación], Location.LocationDescription as [Descripción], Department.[DepartmentDescription] as [Departamento]" & _ "FROM Location LEFT JOIN Department ON Location.DeptNo = Department.[DepartmentNo];" Me.List.RowSource = LocationList Me.List.ColumnCount = 3 Me.List.ColumnHeads = True Me.List.ColumnWidths = "3 cm; 9 cm; 3 cm" Call contarreg End Sub Private Sub Command15_Click() On Error GoTo Err_Command15_Click DoCmd.Close acForm, Me.Name Exit_Command15_Click: Exit Sub Err_Command15_Click: MsgBox err.Description Resume Exit_Command15_Click End Sub Private Sub SortB1_Click() If Me.SortB1.Caption = "Ordenar A->Z" Then If Me.Select = 1 Then Sortby = "ORDER BY LocationNo ASC" ElseIf Me.Select = 2 Then Sortby = "ORDER BY LocationDescription ASC" ElseIf Me.Select = 3 Then Sortby = "ORDER BY Department.[DepartmentDescription] ASC" End If Me.SortB1.Caption = "Ordenar Z->A" Else
215
If Me.Select = 1 Then Sortby = "ORDER BY LocationNo DESC" ElseIf Me.Select = 2 Then Sortby = "ORDER BY LocationDescription DESC" ElseIf Me.Select = 3 Then Sortby = "ORDER BY Department.[DepartmentDescription] DESC" End If Me.SortB1.Caption = "Ordenar A->Z" End If Call Sort End Sub Public Sub Sort() Dim LocationList As String LocationList = "SELECT Location.LocationNo as [No de Ubicación], Location.LocationDescription as [Descripción], Department.[DepartmentDescription] as [Departamento]" & _ "FROM Location LEFT JOIN Department ON Location.DeptNo = Department.[DepartmentNo] " & Sortby & ";" Me.List.RowSource = LocationList Me.List.ColumnCount = 3 Me.List.ColumnHeads = True Me.List.ColumnWidths = "3 cm; 9 cm; 3 cm" Call contarreg End Sub Private Sub contarreg() Call CountRecord(Me.ListRec, List) End Sub
Formulario Ubicación actual Figura 15. – Formulario Ubicación actual.
216
Este formulario muestra la información sobre una locación en particular que ha sido
seleccionada desde la lista de ubicaciones. Se muestra el código del lugar, la descripción,
departamento, prioridad, observaciones y el historial de las órdenes de trabajo que se han
realizado o están por ejecutarse en el sitio y la información resumida sobre cada orden de
trabajo. Seleccionando el botón que esta a la izquierda del número de cada orden de trabajo se
abrirá el formulario “Orden de trabajo” que muestra toda la información detallada sobre esa
orden. El botón “Cerrar” permite salir de este formulario. El código de programa asociado a este
formulario es el siguiente:
'********************************* ' ' Registro Actual de Ubicación ' '********************************* Option Explicit Private Sub Command19_Click() On Error GoTo Err_Command19_Click If Me.Dirty Then If MsgBox("Desea grabar el registro?", vbInformation + vbYesNo, "Grabar") = vbNo Then DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70 End If End If DoCmd.Close acForm, Me.Name Exit_Command19_Click: Exit Sub Err_Command19_Click: MsgBox err.Description Resume Exit_Command19_Click End Sub
Formulario Ubicación nueva Figura 16. – Formulario Ubicación nueva.
217
Este formulario se utiliza para introducir una nueva locación a la base de datos del
sistema. El mismo pide información sobre el número de la locación, descripción, departamento,
prioridad y observaciones. El campo más importante es el número de ubicación ya que este es
el campo clave de la tabla de ubicaciones. Si el valor introducido ya existe el programa da un
mensaje alertando al usuario sobre el error y no permite el valor duplicado solicitando un nuevo
valor. El botón “Guardar” permite almacenar el registro en la base de datos del sistema y el
botón “Cerrar” permite salir del formulario dando la opción de guardar o no los datos
introducidos en los campos del formulario.
Formulario Información de Empresa
Figura 17. – Formulario Información de empresa. Este formulario almacena y muestra la información de la empresa y de los empleados que
utilizan el sistema. Tiene dos pestañas identificadas como “Empresa” y “Empleados”. La primera
de ellas despliega los datos de la empresa en seis campos, a saber: nombre de la compañía,
dirección, ciudad, estado, país y código postal; todos estos campos pueden ser modificados.
Esta pestaña tiene un botón para cerrar el formulario. En caso de que al menos alguno de los
campos haya sido modificado se presenta un aviso que pregunta al usuario si las
modificaciones hechas van a ser almacenadas o no. La pestaña “Empleados” presenta dos
opciones para seleccionar la forma cómo se van a mostrar la lista de empleados. Estas
opciones son: “por número de empleado” o “por nombre de empleado”. También presenta tres
botones los cuales permiten crear un nuevo empleado (botón Nuevo empleado), editar la
información del empleado seleccionado (botón Editar empleado) y o cerrar el formulario. El
código de programa para este formulario es el siguiente:
'********************************* ' Empresa y Acceso de Empleados '*********************************
218
Option Explicit Private Sub Command49_Click() If IsNull(Me.By_Search_Type) Then MsgBox "Especifique información a buscar ...", vbInformation Exit Sub End If AdminAccess = "Admin" If [Type of Search].Value = 1 Then DoCmd.OpenForm "ActEmpForm", , , "[EmployeeNo]=" & "'" & Me.By_Search_Type.Column(0) & "'" ElseIf [Type of Search].Value = 2 Then DoCmd.OpenForm "ActEmpForm", , , "[FirstName]=" & "'" & Me.By_Search_Type.Column(0) & "'" End If End Sub Private Sub Command45_Click() On Error GoTo Err_Command45_Click If Me.Dirty Then If MsgBox("Desea grabar el registro ?", vbInformation + vbYesNo, "Grabar") = vbNo Then DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70 End If End If DoCmd.Close acForm, Me.Name Exit_Command45_Click: Exit Sub Err_Command45_Click: MsgBox err.Description Resume Exit_Command45_Click End Sub Private Sub Form_Activate() DoCmd.Restore End Sub Private Sub Form_Deactivate() DoCmd.Minimize End Sub Private Sub Type_of_Search_AfterUpdate() On Error GoTo Search_Type_Err Me.By_Search_Type.Enabled = True If [Type of Search].Value = 1 Then [By Search Type].RowSource = "" [Search Text].Caption = "Seleccione ID del Empleado a buscar" [By Search Type].ColumnCount = 2 [By Search Type].ColumnWidths = "3 cm;5 cm" [By Search Type].BoundColumn = 2 [By Search Type].RowSource = "SELECT Employees.EmployeeNo, Employees.FirstName FROM Employees ORDER BY Employees.EmployeeNo" ElseIf [Type of Search].Value = 2 Then [By Search Type].RowSource = "" [Search Text].Caption = "Seleccione Nombre del Empleado a buscar" [By Search Type].ColumnCount = 2 [By Search Type].ColumnWidths = "5 cm;3 cm" [By Search Type].BoundColumn = 2 [By Search Type].RowSource = "SELECT FirstName, EmployeeNo FROM Employees ORDER BY FirstName" ElseIf [Type of Search].Value = 3 Then End If DoCmd.GoToControl "By Search Type" SendKeys ("{F4}")
219
Exit Sub Search_Type_Err: MsgBox "Error is " & Error$, 16 Exit Sub End Sub Private Sub Command51_Click() On Error GoTo Err_Command51_Click AdminAccess = "" DoCmd.Close acForm, Me.Name Exit_Command51_Click: Exit Sub Err_Command51_Click: MsgBox err.Description Resume Exit_Command51_Click End Sub Private Sub Command53_Click() On Error GoTo Err_Command53_Click Dim stDocName As String Dim stLinkCriteria As String AdminAccess = "Admin" stDocName = "EmpNuevoForm" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_Command53_Click: Exit Sub Err_Command53_Click: MsgBox err.Description Resume Exit_Command53_Click End Sub
Formulario Reportes Figura 17. – Formulario Reportes
220
Este formulario no almacena ninguna información sino que muestra una lista de los
posibles reportes que puede generar el sistema. Tiene un campo etiquetado como “Grupo de
reporte” para filtrar la información que se muestra en la lista de manera de que se desplieguen
en grupos que tengan información en común. Dependiendo del reporte seleccionado el
formulario solicitará la información que necesite el programa para mostrar la información en
pantalla o imprimir el informe. Esta información es solicitada en la parte inferior del formulario y
puede ser de variadas índoles como intervalo de fechas, número de equipos, partes, ubicación,
etc. El formulario posee un botón identificado como “Vista Preliminar” para desplegar el informe
en pantalla para su revisión antes de imprimirlo y otro botón para cerrar el formulario. El código
de programa asignado a este formulario es el siguiente:
'******************** ' ' Lista de Informes ' '******************** Option Explicit Dim repName As String Dim repno As Integer Private Sub calCtl11_Click() Me.txtMtbfStart = Me.calCtl11.Value Me.txtMtbfEnd.SetFocus Me.calCtl11.Visible = False End Sub Private Sub calCtl12_Click() Me.txtMtbfEnd = Me.calCtl12.Value Me.txtMtbfEnd.SetFocus Me.calCtl12.Visible = False Me.lstMtbfWorkType.Visible = True End Sub Private Sub calCtl13_Click() Me.TxtFrom = Me.calCtl13.Value Me.TxtFrom.SetFocus Me.calCtl13.Visible = False End Sub Private Sub calCtl14_Click() Me.TxtTo = Me.calCtl14.Value Me.TxtTo.SetFocus Me.calCtl14.Visible = False End Sub Private Sub Calendar2_Click() Me.txtFailureStDate = Me.Calendar2.Value Me.txtFailureStDate.SetFocus Me.Calendar2.Visible = False End Sub Private Sub Calendar3_Click()
221
Me.txtFailureEdDate = Me.Calendar3.Value Me.txtFailureEdDate.SetFocus Me.Calendar3.Visible = False Me.lstFailureWorkType.Visible = True End Sub Private Sub CmbAssetCtg_AfterUpdate() Me.CmbAsset.RowSource = "SELECT assets.AssetNumber AS [No de equipo] , assets.AssetDescription AS [Descripción de equipo], assets.AssetCatCode FROM assets WHERE (((assets.AssetCatCode)='" & Me.CmbAssetCtg.Column(0) & "')) Order By AssetNumber;" End Sub Private Sub CmbCtg_AfterUpdate() Dim List As String If Me.CmbCtg.Column(0) = "<ALL>" Then List = "SELECT ReportNo as [No Reporto], ReportDesc as [Grupo de Reporte], " & _ "ReportName as [Nombre del Reporte],repvalue FROM ReportDB Order by reportdesc,reportname;" Else List = "SELECT ReportNo as [No Reporto], ReportDesc as [Grupo de Reporte], " & _ "ReportName as [Nombre del Reporte],repvalue FROM ReportDB where ReportDesc='" & Me.CmbCtg.Column(0) & "' Order by reportdesc,reportname;" End If Me.List.RowSource = List Me.List.ColumnCount = 4 Me.List.ColumnHeads = True Me.List.ColumnWidths = "0 cm;4.5 cm; 8 cm; 0 cm" End Sub Private Sub cmdDelWorkType_Click() Me.txtMtbfWorkType = "'Breakdown'" End Sub Private Sub ExportWOManHours() Dim i As Long Dim rc As DAO.Recordset Dim SQL As String Dim x1 As Object On Error GoTo err Set dbSICAM = CurrentDb SQL = "SELECT workorderlabor.EmployeeNo, Sum(workorderlabor.TotHour) AS SumOfTotHour, worktype.WorkTypeDescription " & _ "FROM (workorderlabor INNER JOIN workorders ON workorderlabor.WorkorderNo = workorders.WorkorderNo) LEFT JOIN worktype ON workorders.WorkType = worktype.WorkTypeID " & _ "WHERE (((workorderlabor.StartDate) Between #" & Format(Me.txtStartDate.Value, "m/d/yyyy") & "# And #" & Format(DateAdd("d", 1, Me.txtEndDate.Value), "m/d/yyyy") & "#)) " & _ "GROUP BY workorderlabor.EmployeeNo, worktype.WorkTypeDescription, workorders.WorkStatus HAVING (((workorders.WorkStatus)=2));" Set rc = dbSICAM.OpenRecordset(SQL) If rc.EOF = True Then MsgBox "No hay Archivos para este rango de fechas", vbInformation rc.Close Set rc = Nothing Exit Sub
222
End If i = 2 Set x1 = CreateObject("Excel.Application") x1.Workbooks.Open (Application.CurrentProject.Path + "\WorkOrderManHours.xls") x1.sheets("Sheet1").Select x1.Rows("2:65536").Select x1.Selection.Delete Shift:=-4162 'x1.Range("A1").Value = "No de empleado" 'x1.Range("B1").Value = "Tipo de OT" 'x1.Range("C1").Value = "TOTALHOURS" While Not rc.EOF x1.Range("A" & i).Value = rc(0) x1.Range("B" & i).Value = rc(2) x1.Range("C" & i).Value = rc(1) i = i + 1 rc.MoveNext Wend rc.Close Set rc = Nothing x1.sheets("Sheet4").Select x1.ActiveWorkbook.RefreshAll x1.ActiveWorkbook.Save x1.Visible = True Set x1 = Nothing Exit Sub err: MsgBox err.Description, vbExclamation x1.Quit End Sub Private Sub cmdExport_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Dim rsTemp As DAO.Recordset Dim sqlq As String Dim x1 As Object Dim title As String Dim newDate As String Dim excelFilename As String On Error GoTo ExcelError If repno = 78 Then Call ExportWOManHours Exit Sub End If Set x1 = CreateObject("Excel.Application") excelFilename = Application.CurrentProject.Path + "\WorkOrderStatusChart.xls" Set db = CurrentDb repno = Me.List.Column(0) If repno = 48 Then sqlq = "SELECT [WorkStatus] FROM [WorkOrderStatusChart] WHERE DateReceived Between #" & _ Format(CStr(Me.txtStartDate), "m/d/yyyy") + "# AND #" + Format(CStr(DateAdd("d", 1, CDate(Me.txtEndDate))), "m/d/yyyy") + "#" title = "Grafico Status de OT de " + CStr(Format(Me.txtStartDate, "dd/mm/yyyy")) + " to " + CStr(Format(Me.txtEndDate, "dd/mm/yyyy"))
223
Else sqlq = "SELECT [WorkStatus] FROM [PMWorkOrderStatusChart] WHERE DateReceived Between #" & _ Format(CStr(Me.txtStartDate), "m/d/yyyy") + "# AND #" + Format(CStr(DateAdd("d", 1, CDate(Me.txtEndDate))), "m/d/yyyy") + "#" title = "PMWork Order Status Chart From " + CStr(Format(Me.txtStartDate, "dd/mm/yyyy")) + " to " + CStr(Format(Me.txtEndDate, "dd/mm/yyyy")) End If Set rs = db.OpenRecordset(sqlq) x1.Workbooks.Open (excelFilename) x1.Worksheets("Sheet1").Activate Dim i As Integer Dim a As String i = 1 a = "A1" While (x1.Range(a).Value <> "") x1.Range(a).Value = "" i = i + 1 a = "A" + CStr(i) Wend i = 2 x1.Range("A1").Value = "WorkStatus" rs.MoveFirst While rs.EOF = False a = "A" + CStr(i) x1.Range(a).Value = rs.Fields(0) rs.MoveNext i = i + 1 Wend x1.Charts(1).Activate x1.ActiveChart.ApplyDataLabels 3 'xlDataLabelsShowLabelAndPercent x1.ActiveChart.HasLegend = True x1.ActiveChart.ChartTitle.Caption = title x1.ActiveWorkbook.RefreshAll x1.ActiveWorkbook.Save x1.Visible = True Set x1 = Nothing Exit Sub ExcelError: MsgBox err.Description, vbExclamation x1.Quit End Sub Private Sub CmdExport4_Click() If repno = 79 Then Call ExportWODistribution ElseIf repno = 80 Then Call ExportWODistributionManHours ElseIf repno = 81 Then Call ExportWOPMComp End If End Sub Private Sub ExportWOPMComp() Dim db As DAO.Database Dim rs As DAO.Recordset Dim rsTemp As DAO.Recordset Dim x1 As Object Dim TotalPM As Long Dim TotalLateCompleteSch As Long Dim TotalCompleteSch As Long
224
Dim TotalPMOpen As Long Dim TotalPMOverdue As Long Dim TotalPMCancelled As Long On Error GoTo ExcelError If IsNull(Me.TxtFrom) Or Trim(Me.TxtTo) = "" Then MsgBox "Introduzca rango de fechas", vbInformation, "SICAM" Exit Sub End If Set x1 = CreateObject("Excel.Application") Set db = CurrentDb repno = Me.List.Column(0) Set rs = db.OpenRecordset("SELECT Count(workorders.WorkorderNo) AS TotalWOPM FROM workorders WHERE workorders.WorkType In (2)" & _ " AND workorders.PMTarCompDate Between # " + Format(Me.TxtFrom, "m/d/yyyy") + "# AND #" + Format(Me.TxtTo, "m/d/yyyy") + "#") If Not rs.EOF Then TotalPM = rs(0) End If rs.Close Set rs = Nothing Set rs = db.OpenRecordset("SELECT Count(WOCompSch.WorkorderNo) AS CountOfWorkorderNo FROM WOCompSch WHERE (((WOCompSch.result) = 'Y'))HAVING (((WOCompSch.pm2) Between #" & Format(Me.TxtFrom, "m/d/yyyy") & "# And #" & Format(DateAdd("d", 1, CDate(Me.TxtTo)), "m/d/yyyy") & "#));") If Not rs.EOF Then TotalLateCompleteSch = rs(0) End If rs.Close Set rs = Nothing Set rs = db.OpenRecordset("SELECT Count(WOCompSch.WorkorderNo) AS CountOfWorkorderNo FROM WOCompSch WHERE (((WOCompSch.result) = 'N'))HAVING (((WOCompSch.pm2) Between #" & Format(Me.TxtFrom, "m/d/yyyy") & "# And #" & Format(DateAdd("d", 1, CDate(Me.TxtTo)), "m/d/yyyy") & "#));") If Not rs.EOF Then TotalCompleteSch = rs(0) End If rs.Close Set rs = Nothing Set rs = db.OpenRecordset("SELECT Count(workorders.WorkorderNo) AS CountOfWorkorderNo FROM workorders WHERE (((workorders.PMTarCompDate)> ServerdateQuery()) AND (workorders.PMTarCompDate) Between #" & Format(Me.TxtFrom, "m/d/yyyy") & "# And #" & Format(DateAdd("d", 1, CDate(Me.TxtTo)), "m/d/yyyy") & "# AND ((workorders.WorkStatus)<>2 And (workorders.WorkStatus)<>3 AND (workorders.WorkStatus) <>7) AND ((workorders.WorkType) In (2)));") If Not rs.EOF Then TotalPMOpen = rs(0) End If rs.Close Set rs = Nothing Set rs = db.OpenRecordset("SELECT Count(workorders.WorkorderNo) AS CountOfWorkorderNo FROM workorders WHERE (((workorders.PMTarCompDate)<=ServerdateQuery()) AND (workorders.PMTarCompDate) Between #" & Format(Me.TxtFrom, "m/d/yyyy") & "# And #" & Format(DateAdd("d", 1, CDate(Me.TxtTo)), "m/d/yyyy") & "# AND ((workorders.WorkStatus)<>2 And (workorders.WorkStatus)<>3 AND (workorders.WorkStatus) <>7) AND ((workorders.WorkType) In (2)));") If Not rs.EOF Then TotalPMOverdue = rs(0) End If
225
rs.Close Set rs = Nothing Set rs = db.OpenRecordset("SELECT Count(workorders.WorkorderNo) AS CountOfWorkorderNo FROM workorders WHERE (workorders.PMTarCompDate) Between #" & Format(Me.TxtFrom, "m/d/yyyy") & "# And #" & Format(DateAdd("d", 1, CDate(Me.TxtTo)), "m/d/yyyy") & "# AND (workorders.WorkStatus = 3 ) AND ((workorders.WorkType) In (2));") If Not rs.EOF Then TotalPMCancelled = rs(0) End If rs.Close Set rs = Nothing x1.Workbooks.Open (Application.CurrentProject.Path + "\PMComplianceReportChart.xls") x1.sheets("Sheet1").Activate x1.Range("B2").Value = TotalCompleteSch + TotalLateCompleteSch + TotalPMOverdue + TotalPMOpen + TotalPMCancelled x1.Range("B3").Value = TotalCompleteSch x1.Range("B4").Value = TotalLateCompleteSch x1.Range("B5").Value = TotalPMOpen x1.Range("B6").Value = TotalPMOverdue x1.Range("B7").Value = TotalPMCancelled x1.Columns("A:A").EntireColumn.AutoFit x1.sheets("Chart1").Activate x1.ActiveChart.ChartTitle.Caption = "PM Compliance Report, Target Complete Date Range From " & Me.TxtFrom.Value & " to " & Me.TxtTo.Value x1.ActiveChart.HasLegend = True x1.ActiveWorkbook.RefreshAll x1.ActiveWorkbook.Save x1.Visible = True Set x1 = Nothing Exit Sub ExcelError: MsgBox err.Description, vbExclamation x1.Quit End Sub Private Sub ExportWODistribution() Dim db As DAO.Database Dim rs As DAO.Recordset Dim rsTemp As DAO.Recordset Dim sqlq As String, sqlq1 As String Dim x1 As Object Dim title As String Dim newDate As String Dim excelFilename As String On Error GoTo ExcelError Set x1 = CreateObject("Excel.Application") excelFilename = Application.CurrentProject.Path + "\WorkOrderDistribution.xls" Set db = CurrentDb sqlq = "SELECT worktype.WorkTypeDescription FROM workorders LEFT JOIN worktype ON workorders.WorkType = worktype.WorkTypeID " & _ "WHERE workorders.WorkStatus not in(3) and (((workorders.DateReceived) Between #" & Format(Me.TxtFrom, "m/d/yyyy") & "# And #" & Format(DateAdd("d", 1, Me.TxtTo), "m/d/yyyy") & "#) AND ((worktype.WorkTypeID) Not In (2)));"
226
sqlq1 = "SELECT worktype.WorkTypeDescription FROM workorders LEFT JOIN worktype ON workorders.WorkType = worktype.WorkTypeID " & _ "WHERE workorders.WorkStatus not in(3) and (((workorders.PMTarStartDate) Between #" & Format(Me.TxtFrom, "m/d/yyyy") & "# And #" & Format(DateAdd("d", 1, Me.TxtTo), "m/d/yyyy") & "#) AND ((worktype.WorkTypeID) In (2)));" title = "Gráfica de OT´s por Tipo de Orden de " + CStr(Format(Me.TxtFrom, "dd/mm/yyyy")) + " a " + CStr(Format(Me.TxtTo, "dd/mm/yyyy")) Set rs = db.OpenRecordset(sqlq) x1.Workbooks.Open (excelFilename) x1.Worksheets("Sheet1").Activate x1.sheets("Sheet1").Select x1.Rows("2:65536").Select x1.Selection.Delete Shift:=-4162 Dim row As Long Dim a As String row = 2 While Not rs.EOF x1.Range("A" & row).Value = rs(0) row = row + 1 rs.MoveNext Wend rs.Close Set rs = Nothing Set rs = db.OpenRecordset(sqlq1) While Not rs.EOF x1.Range("A" & row).Value = rs(0) row = row + 1 rs.MoveNext Wend rs.Close Set rs = Nothing x1.Charts(1).Activate x1.ActiveChart.ApplyDataLabels 3 'xlDataLabelsShowLabelAndPercent x1.ActiveChart.HasLegend = True x1.ActiveChart.ChartTitle.Caption = title x1.ActiveWorkbook.RefreshAll x1.ActiveWorkbook.Save x1.Visible = True Set x1 = Nothing Exit Sub ExcelError: MsgBox err.Description, vbExclamation x1.Quit End Sub Private Sub ExportWODistributionManHours() Dim db As DAO.Database Dim rs As DAO.Recordset Dim rsTemp As DAO.Recordset Dim sqlq As String, sqlq1 As String Dim x1 As Object Dim title As String Dim newDate As String Dim excelFilename As String On Error GoTo ExcelError Set x1 = CreateObject("Excel.Application")
227
excelFilename = Application.CurrentProject.Path + "\WorkOrderDistributionManHours.xls" Set db = CurrentDb sqlq = "SELECT worktype.WorkTypeDescription, IIf(IsNull([TotHour]),0,[TotHour]) AS TotalHours FROM (workorders LEFT JOIN worktype ON workorders.WorkType = worktype.WorkTypeID) LEFT JOIN workorderlabor ON workorders.WorkorderNo = workorderlabor.WorkorderNo " & _ "WHERE (((workorders.DateReceived) Between #" & Format(Me.TxtFrom, "m/d/yyyy") & "# And #" & Format(Me.TxtTo, "m/d/yyyy") & "#) AND ((worktype.WorkTypeID) Not In (2)));" sqlq1 = "SELECT worktype.WorkTypeDescription, IIf(IsNull([TotHour]),0,[TotHour]) AS TotalHours FROM (workorders LEFT JOIN worktype ON workorders.WorkType = worktype.WorkTypeID) LEFT JOIN workorderlabor ON workorders.WorkorderNo = workorderlabor.WorkorderNo " & _ "WHERE (((workorders.PMTarStartDate) Between #" & Format(Me.TxtFrom, "m/d/yyyy") & "# And #" & Format(Me.TxtTo, "m/d/yyyy") & "#) AND ((worktype.WorkTypeID) In (2)));" title = "Gráfica de Total de Hrs. de MO por Tipo de Orden de " + CStr(Format(Me.TxtFrom, "dd/mm/yyyy")) + " a " + CStr(Format(Me.TxtTo, "dd/mm/yyyy")) Set rs = db.OpenRecordset(sqlq) x1.Workbooks.Open (excelFilename) x1.Worksheets("Sheet1").Activate x1.sheets("Sheet1").Select x1.Rows("2:65536").Select x1.Selection.Delete Shift:=-4162 Dim row As Long Dim a As String row = 2 While Not rs.EOF x1.Range("A" & row).Value = rs(0) x1.Range("B" & row).Value = rs(1) row = row + 1 rs.MoveNext Wend rs.Close Set rs = Nothing Set rs = db.OpenRecordset(sqlq1) While Not rs.EOF x1.Range("A" & row).Value = rs(0) x1.Range("B" & row).Value = rs(1) row = row + 1 rs.MoveNext Wend rs.Close Set rs = Nothing x1.Charts(1).Activate x1.ActiveChart.ApplyDataLabels 3 'xlDataLabelsShowLabelAndPercent x1.ActiveChart.HasLegend = True x1.ActiveChart.ChartTitle.Caption = title x1.ActiveWorkbook.RefreshAll x1.ActiveWorkbook.Save x1.Visible = True Set x1 = Nothing Exit Sub ExcelError: MsgBox err.Description, vbExclamation x1.Quit
228
End Sub Private Sub cmdExportMtbf_Click() If IsNull(Me.txtMtbfStart) Or Me.txtMtbfStart = "" Then MsgBox "Indique la fecha del inicio", vbInformation Me.txtMtbfStart.SetFocus Exit Sub End If If IsNull(Me.txtMtbfEnd) Or Me.txtMtbfEnd = "" Then MsgBox "Indique la fecha final", vbInformation Me.txtMtbfEnd.SetFocus Exit Sub End If If Me.txtMtbfStart.Value > Me.txtMtbfEnd.Value Then MsgBox "Fecha final debe ser mayor que fecha de inicio", vbInformation Me.txtMtbfEnd.SetFocus Exit Sub End If If Me.List.Column(0) = 75 Then MtbfReport "MTBF(days)", "mtbf.xls" Else MttrReport "MTTR(mins)", "mttr.xls" End If End Sub Private Sub cmdFailureExport_Click() If IsNull(Me.txtFailureStDate) Or Trim(Me.txtFailureStDate) = "" Then MsgBox "Indique la fecha de Inicio", vbInformation Me.txtFailureStDate.SetFocus Exit Sub End If If IsNull(Me.txtFailureEdDate) Or Trim(Me.txtFailureEdDate) = "" Then MsgBox "Indique la fecha de Fin", vbInformation Me.txtFailureEdDate.SetFocus Exit Sub End If If Me.txtFailureEdDate < Me.txtFailureStDate Then MsgBox "La fecha de Fin debe ser mayor que la fecha de inicio", vbInformation Me.txtFailureEdDate.SetFocus Exit Sub End If FailureAnalysis "Failure Analysis", "FailureTypeAnalysis.xls", IIf(IsNull(Me.CmbAsset) Or Trim(Me.CmbAsset.Column(0)), False, True) End Sub Private Sub FailureAnalysis(ByVal title As String, ByVal filname As String, ByVal GotAss As Boolean) Dim db As DAO.Database Dim rs As DAO.Recordset Dim sqlq As String Dim x1 As Object Dim i As Integer Dim a As String filname = Application.CurrentProject.Path + "\" + filname On Error GoTo ExcelError Set db = CurrentDb Set x1 = CreateObject("Excel.Application") x1.Workbooks.Open (filname) x1.Worksheets("Sheet1").Activate 'Eliminar los registros existenstes de excel x1.Rows("2:65535").Select x1.Selection.Delete Shift:=-4162
229
'x1.Visible = True If GotAss = False Then sqlq = " SELECT Left([FailureCauseDescription],1000) AS FailureDesc, Count(workorders.WorkorderNo) AS CountOfWorkorderNo, failurecause.FailureCauseCode,Sum(workorders.DownTime) AS SumOfDownTime " & _ " FROM (workorders INNER JOIN failurecause ON workorders.FailureCauseCode = failurecause.FailureCauseCode) INNER JOIN worktype ON workorders.WorkType = worktype.WorkTypeID" & _ " WHERE DateSerial(Year(DateReceived),Month(DateReceived),Day(DateReceived)) " & _ " BETWEEN DateSerial(" + CStr(Year(Me.txtFailureStDate)) + "," + CStr(Month(Me.txtFailureStDate)) + "," + CStr(Day(Me.txtFailureStDate)) + ")" & _ " AND DateSerial(" + CStr(Year(Me.txtFailureEdDate)) + "," + CStr(Month(Me.txtFailureEdDate)) + "," + CStr(Day(Me.txtFailureEdDate)) + ")" Else sqlq = " SELECT Left([FailureCauseDescription],1000) AS FailureDesc, Count(workorders.WorkorderNo) AS CountOfWorkorderNo, failurecause.FailureCauseCode,Sum(workorders.DownTime) AS SumOfDownTime " & _ " FROM (workorders INNER JOIN failurecause ON workorders.FailureCauseCode = failurecause.FailureCauseCode) INNER JOIN worktype ON workorders.WorkType = worktype.WorkTypeID" & _ " WHERE workorders.AssetNo='" & Replace(Me.CmbAsset.Column(0), "'", "''") & "' and DateSerial(Year(DateReceived),Month(DateReceived),Day(DateReceived)) " & _ " BETWEEN DateSerial(" + CStr(Year(Me.txtFailureStDate)) + "," + CStr(Month(Me.txtFailureStDate)) + "," + CStr(Day(Me.txtFailureStDate)) + ")" & _ " AND DateSerial(" + CStr(Year(Me.txtFailureEdDate)) + "," + CStr(Month(Me.txtFailureEdDate)) + "," + CStr(Day(Me.txtFailureEdDate)) + ")" End If sqlq = sqlq + " AND workorders.WorkStatus = 2" sqlq = sqlq + " AND WorkTypeDescription IN(" + Me.txtFailureWorkType + ") GROUP BY Left([FailureCauseDescription],1000), failurecause.FailureCauseCode" Debug.Print sqlq Set rs = db.OpenRecordset(sqlq) If rs.EOF = False Then rs.MoveFirst i = 2 While rs.EOF = False a = "A" + CStr(i) x1.Range(a).Value = rs.Fields("FailureCauseCode") + " " + IIf(IsNull(rs.Fields("FailureDesc")), "", rs.Fields("FailureDesc")) a = "B" + CStr(i) x1.Range(a).Value = rs.Fields("SumOfDownTime") a = "C" + CStr(i) x1.Range(a).Value = rs.Fields("CountOfWorkorderNo") rs.MoveNext i = i + 1 Wend rs.Close Set rs = Nothing db.Close Set db = Nothing x1.Charts(1).Activate x1.ActiveChart.ChartTitle.Caption = "Failure Analysis (Downtime) From " + CStr(Me.txtFailureStDate) + " to " + CStr(Me.txtFailureEdDate) x1.Charts(2).Activate x1.ActiveChart.ChartTitle.Caption = "Failure Analysis (Frequency) From " + CStr(Me.txtFailureStDate) + " to " + CStr(Me.txtFailureEdDate) x1.Charts(1).Activate x1.ActiveWorkbook.RefreshAll x1.ActiveWorkbook.Save
230
x1.Visible = True Exit Sub ExcelError: MsgBox err.Description, vbExclamation x1.Quit End Sub Private Sub Command108_Click() On Error GoTo Err_Command108_Click Me.calCtl1.Visible = True Me.calCtl1.Value = Date Exit_Command108_Click: Exit Sub Err_Command108_Click: MsgBox err.Description Resume Exit_Command108_Click End Sub Private Sub Command109_Click() Me.calCtl2.Visible = True Me.calCtl2.Value = Date End Sub Private Sub Command110_Click() Me.calCtl5.Visible = True Me.calCtl5.Value = Date End Sub Private Sub Command111_Click() Me.calCtl6.Visible = True Me.calCtl6.Value = Date End Sub Private Sub Command174_Click() Me.calCtl3.Visible = True Me.calCtl3.Value = Date End Sub Private Sub Command175_Click() Me.calCtl4.Visible = True Me.calCtl4.Value = Date End Sub Private Sub Command187_Click() Me.calCtl7.Visible = True Me.calCtl7.Value = Date End Sub Private Sub Command188_Click() Me.calCtl8.Visible = True Me.calCtl8.Value = Date End Sub Private Sub Command196_Click() Me.calCtl9.Visible = True Me.calCtl9.Value = Date End Sub Private Sub Command197_Click() Me.calCtl10.Visible = True Me.calCtl10.Value = Date End Sub
231
Private Sub Command221_Click() Me.calCtl11.Visible = True Me.calCtl11.Value = Date End Sub Private Sub Command224_Click() Me.calCtl12.Visible = True Me.calCtl12.Value = Date Me.lstMtbfWorkType.Visible = False End Sub Private Sub Command230_Click() Me.calCtl13.Visible = True Me.calCtl13.Value = Date End Sub Private Sub Command233_Click() Me.calCtl14.Visible = True Me.calCtl14.Value = Date End Sub Private Sub Command273_Click() Me.Calendar2.Visible = True Me.Calendar2.Value = Date End Sub Private Sub Command274_Click() Me.txtFailureEdDate.SetFocus Me.lstFailureWorkType.Visible = False Me.Calendar3.Visible = True Me.Calendar3.Value = Date End Sub Private Sub Command287_Click() Me.txtFailureWorkType = "'Reparación (sin garantía)'" End Sub Private Sub Ctl11_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Error GoTo ErrorHandler If Me.calCtl7.Visible = True Then Me.calCtl7.Visible = False If Me.calCtl8.Visible = True Then Me.calCtl8.Visible = False ErrorHandler: If err.Number <> 0 Then Me.txtStartDate.SetFocus If Me.calCtl7.Visible = True Then Me.calCtl7.Visible = False If Me.calCtl8.Visible = True Then Me.calCtl8.Visible = False End If End Sub Private Sub Ctl12_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Error GoTo ErrorHandler If Me.calCtl9.Visible = True Then Me.calCtl9.Visible = False If Me.calCtl10.Visible = True Then Me.calCtl10.Visible = False ErrorHandler: If err.Number <> 0 Then Me.tar1.SetFocus If Me.calCtl9.Visible = True Then Me.calCtl9.Visible = False If Me.calCtl10.Visible = True Then Me.calCtl10.Visible = False End If End Sub Private Sub Ctl13_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If Me.calCtl11.Visible = True Then
232
Me.txtMtbfStart.SetFocus Me.calCtl11.Visible = False End If If Me.calCtl12.Visible = True Then Me.txtMtbfEnd.SetFocus Me.calCtl12.Visible = False Me.lstMtbfWorkType.Visible = True End If End Sub Private Sub Ctl14_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Error GoTo ErrorHandler If Me.calCtl13.Visible = True Then Me.calCtl13.Visible = False If Me.calCtl14.Visible = True Then Me.calCtl14.Visible = False ErrorHandler: If err.Number <> 0 Then Me.TxtFrom.SetFocus If Me.calCtl13.Visible = True Then Me.calCtl13.Visible = False If Me.calCtl14.Visible = True Then Me.calCtl14.Visible = False End If End Sub Private Sub Ctl15_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Error GoTo ErrorHandler If Me.Calendar2.Visible = True Then Me.Calendar2.Visible = False If Me.Calendar3.Visible = True Then Me.Calendar3.Visible = False ErrorHandler: If err.Number <> 0 Then Me.txtFailureStDate.SetFocus If Me.Calendar2.Visible = True Then Me.Calendar2.Visible = False If Me.Calendar3.Visible = True Then Me.Calendar3.Visible = False End If End Sub Private Sub Ctl2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Error GoTo ErrorHandler If Me.calCtl1.Visible = True Then Me.calCtl1.Visible = False If Me.calCtl2.Visible = True Then Me.calCtl2.Visible = False ErrorHandler: If err.Number <> 0 Then Me.WODate1.SetFocus If Me.calCtl1.Visible = True Then Me.calCtl1.Visible = False If Me.calCtl2.Visible = True Then Me.calCtl2.Visible = False End If End Sub Private Sub Ctl3_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Error GoTo ErrorHandler If Me.calCtl3.Visible = True Then Me.calCtl3.Visible = False If Me.calCtl4.Visible = True Then Me.calCtl4.Visible = False ErrorHandler: If err.Number <> 0 Then Me.TargetDate1.SetFocus If Me.calCtl3.Visible = True Then Me.calCtl3.Visible = False If Me.calCtl4.Visible = True Then Me.calCtl4.Visible = False End If End Sub Private Sub Ctl6_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Error GoTo ErrorHandler
233
If Me.calCtl5.Visible = True Then Me.calCtl5.Visible = False If Me.calCtl6.Visible = True Then Me.calCtl6.Visible = False ErrorHandler: If err.Number <> 0 Then Me.Trans1.SetFocus If Me.calCtl5.Visible = True Then Me.calCtl5.Visible = False If Me.calCtl6.Visible = True Then Me.calCtl6.Visible = False End If End Sub Private Sub Department_AfterUpdate() Dim deptlist As String deptlist = "Select AssetNumber AS [No de equipo],AssetDescription AS [Descripción de equipo] " & _ "FROM Assets Where DepartmentNo='" & Me.Department.Column(0) & "' ORDER BY Assets.AssetNumber;" Me.AssetNo1.RowSource = deptlist Me.AssetNo2.RowSource = deptlist End Sub Private Sub Form_Load() Me.RepParam.Style = 2 End Sub Private Sub Form_Open(Cancel As Integer) Dim List, SQL, MyList As String Set dbSICAM = CurrentDb() Dim rc As DAO.Recordset SQL = "SELECT Distinct ReportDesc as [Reporto] FROM ReportDB Order by reportdesc;" Set rc = dbSICAM.OpenRecordset(SQL) MyList = "<ALL>" Do While Not rc.EOF MyList = MyList & ";" & rc(0) rc.MoveNext Loop CmbCtg.RowSource = MyList rc.Close Set rc = Nothing List = "SELECT ReportNo as [No Reporto], ReportDesc as [Grupo de Reporte], " & _ "ReportName as [Nombre del Reporte], repvalue FROM ReportDB Order by reportdesc,reportname;" Me.List.RowSource = List Me.List.ColumnCount = 4 Me.List.ColumnHeads = True Me.List.ColumnWidths = "0 cm;4.5 cm; 8 cm; 0 cm" Me.txtMtbfWorkType = "'Breakdown'" End Sub Private Sub Command2_Click() On Error GoTo Err_Command2_Click DoCmd.Close acForm, Me.Name Exit_Command2_Click: Exit Sub Err_Command2_Click: MsgBox err.Description Resume Exit_Command2_Click End Sub Private Sub List_Click() On Error GoTo Err_List_Click
234
Me.LblRemarks.Caption = "" Me.Label189.Visible = True Me.CmdExport4.Visible = True Dim val As Integer repno = Me.List.Column(0) repName = Me.List.Column(2) val = Me.List.Column(3) Me.RepParam.Pages(val).SetFocus Select Case repno Case 1, 2, 3, 4, 5, 72 Me.AssetNo1 = Null Me.AssetNo2 = Null Me.Department = Null Me.AssetNo1.RowSource = "" Me.AssetNo2.RowSource = "" If repno = 1 Or repno = 3 Or repno = 72 Then Dim AssList As String AssList = "SELECT AssetNumber AS [No de equipo], AssetDescription AS [Descripción de equipo] FROM assets " & _ "ORDER BY Assets.AssetNumber;" Me.AssetNo1.RowSource = AssList Me.AssetNo2.RowSource = AssList Me.AssetNo2.Enabled = True Me.Department.Enabled = False ElseIf repno = 2 Or repno = 4 Then Me.AssetNo2.Enabled = True Me.Department.Enabled = True Me.Department.SetFocus Else AssList = "SELECT AssetNumber AS [No de equipo], AssetDescription AS [Descripción de equipo] FROM assets " & _ "ORDER BY Assets.AssetNumber;" Me.AssetNo1.RowSource = AssList Me.AssetNo2.Enabled = False Me.Department.Enabled = False End If Case 71 Me.ass1.Enabled = True Me.ass2.Enabled = True Case 73 Me.ass1.Enabled = False Me.ass2.Enabled = False Case 11, 13, 14, 16, 18, 20, 22, 32, 33, 48 Me.Trade.Enabled = False Case 12, 15, 17, 19, 21, 23, 25, 27, 29, 31 Me.Trade.Enabled = True Case 34, 36, 38, 40, 42, 44, 46 Me.PMWOTrade.Enabled = False Case 35, 37, 39, 41, 43, 45, 47 Me.PMWOTrade.Enabled = True Case 50, 52, 54, 56 Me.partno.Enabled = False Case 51, 53, 55, 57, 65 Me.partno.Enabled = True Case 77 Me.Trade.Enabled = False Case 78 Me.Label189.Visible = False Case 79, 80 Me.LblRemarks.Caption = "(Para las Ot´s Preventivas se toma la fecha programada de Inicio de MP, para las demás la Fecha de Solicitud. Se excluyen las OT´s canceladas)" Case 81 Me.LblRemarks.Caption = "(Basadas en Ordenes de Trabajo de MP Terminadas)" Case 83
235
Me.LblRemarks.Caption = "(Basadas en la fecha de Fin real de OT´s. Este informe solo usa las Ordenes de Trabajo Cerradas para su cálculo)" Me.CmdExport4.Visible = False Case 84 Me.CmdExport4.Visible = False End Select Exit_List_Click: Exit Sub Err_List_Click: MsgBox err.Description Resume Exit_List_Click End Sub Private Sub Command48_Click() On Error GoTo Err_Command48_Click If Me.List.Column(0) = 75 Or Me.List.Column(0) = 76 Or Me.List.Column(0) = 78 Or Me.List.Column(0) = 79 Or Me.List.Column(0) = 80 Or Me.List.Column(0) = 82 Then MsgBox "Informe solo disponible para exportar a Excel", vbInformation Exit Sub End If Me.wodt1 = Me.WODate1 Me.wodt2 = Me.WODate2 Me.ast1 = Me.AssetNo1 Me.ast2 = Me.AssetNo2 Me.tardt1 = Me.TargetDate1 Me.tardt2 = Me.TargetDate2 Me.trn1 = Me.Trans1 Me.trn2 = Me.Trans2 Me.wotar1 = Me.tar1 Me.wotar2 = Me.Tar2 Dim stDocName As String If repno = 61 And IsNull(Me.Loc) Then MsgBox "Seleccione Ubicación para ver este informe", vbInformation, "SICAM" Exit Sub End If If repno = 59 Or repno = 62 Then If IsNull(Me.Attr) Then MsgBox "Seleccione grupo para ver este informe!", vbInformation, "SICAM" Exit Sub End If End If If repName = "Detalles del Empleado" Then repName = "Detalles Empleados" ElseIf repName = "Lista de Empleados" Then repName = "Lista Empleados" ElseIf repName = "Lista de Departamentos" Then repName = "Lista Departamentos" ElseIf repName = "Detalle de Proveedores" Then repName = "Detalles Proveedores" ElseIf repName = "Lista de Proveedores" Then repName = "Lista Proveedores" ElseIf repName = "Listado de OT’s por Ubicación" Then repName = "Historico OT Ubicac" ElseIf repName = "Listado de Ubicaciones" Then repName = "Lista de Ubicaciones" ElseIf repName = "Entrega de Inventario" Then repName = "Entrega de Partes" ElseIf repName = "Recibos de Inventarios por No de Artículo" Then repName = "Ingreso de Partes por No Parte" ElseIf repName = "Entrega de Inventario por No de Artículo" Then
236
repName = "Entrega de Partes por No Parte" ElseIf repName = "Ajustes de Inventario" Then repName = "Ajuste Partes" ElseIf repName = "Ajustes de Inventario por No de Artículo" Then repName = "Ajuste Partes por No de Parte" ElseIf repName = "Devoluciones de Inventario" Then repName = "Devolucion de Partes" ElseIf repName = "Valor y especificaciones de Inventario" Then repName = "Balance de Stock" ElseIf repName = "Valor y especificaciones de Inventario por Tipo" Then repName = "Balance de Stock por Tipo" ElseIf repName = "Hojas para Conteos Físicos" Then repName = "Lista Conteo Stock" ElseIf repName = "Hojas para Conteos Físicos por Ubicación" Then repName = "Lista Conteo Stock por Ubicacion" ElseIf repName = "Devoluciones de Inventario por No de Artículo" Then repName = "Devolucion de Partes por No Parte No" ElseIf repName = "Recibos de Inventarios" Then repName = "Ingreso de Partes" ElseIf repName = "Hojas para Conteos Físicos por Tipo" Then repName = "Lista Conteo Stock por Tipo" ElseIf repName = "Requisiciones Sugeridas" Then repName = "Compras Propuestas" ElseIf repName = "Lista simple de Equipos por Departamentos" Then repName = "Lista Equipos por Departamento" ElseIf repName = "Lista simple de Equipos" Then repName = "Lista Equipos" ElseIf repName = "Historial de Mantenimiento por Equipo" Then repName = "Asset Maintenance History" ElseIf repName = "Detalles de Equipos por Departamentos" Then repName = "Detalles Equipos por Departamento" ElseIf repName = "Detalles de Equipos" Then repName = "Detalles Equipos" ElseIf repName = "Tiempo de Paro por Fecha y Equipos" Then repName = "Tiempo Inactivo Equipo por Fecha y Equipo" ElseIf repName = "Tiempo de Paro por Equipos" Then repName = "Tiempo Inactivo Equipo por Equipo" ElseIf repName = "Tiempo de Paro por Fecha" Then repName = "Tiempo Inactivo Equipo por Fecha" ElseIf repName = "Historial de Mantenimiento de Equipos" Then repName = "Historico Mant Equipos" ElseIf repName = "Reporte de MTTR (Tiempo Medio entre reparaciones)" Then repName = "Reporte MTTR" ElseIf repName = "Reporte de MTBF (Tiempo Medio entre Fallas)" Then repName = "Reporte MTBF" ElseIf repName = "Programación Anual de Preventivos" Then repName = "MP Anual Prog" ElseIf repName = "Procedimiento de Instrucciones" Then repName = "MP Instrucciones" ElseIf repName = "Lista de Instrucciones" Then repName = "MP Lista Actividades" ElseIf repName = "OT´s con 15 días de antiguedad" Then repName = "OT con 15 dias antiguedad" ElseIf repName = "OT´s con 10 días de antiguedad por Area" Then repName = "OT con 10 dias antiguedad por Area" ElseIf repName = "OT´s con 10 días de antiguedad" Then repName = "OT con 10 dias antiguedad" ElseIf repName = "OT´s con 5 días de antiguedad por Area" Then repName = "OT con 5 dias antiguedad por Area" ElseIf repName = "OT´s con 5 días de antiguedad" Then repName = "OT con 5 dias antiguedad" ElseIf repName = "Lista de OT’s en espera de Partes por Area" Then repName = "Lista OT espera Partes por Area" ElseIf repName = "Lista de OT’s Pendientes por Area" Then repName = "Lista OT Pendientes por Area" ElseIf repName = "Lista de OT’s en espera de ser Aprobadas por Area" Then repName = "Lista OT por aprobacion por Area"
237
ElseIf repName = "Lista de OT’s Cerradas por Area" Then repName = "Lista OT Cerradas por Area" ElseIf repName = "Lista de OT’s en espera de ser Aprobadas" Then repName = "Lista OT por aprobacion" ElseIf repName = "Lista de OT’s Cerradas" Then repName = "Lista OT Cerradas" ElseIf repName = "OT´s con 15 días de antiguedad por Area" Then repName = "OT con 15 dias antiguedad por Area" ElseIf repName = "Lista de OT’s Pendientes" Then repName = "Lista OT Pendientes" ElseIf repName = "Lista de OT’s en espera de Partes" Then repName = "Lista OT espera Partes" ElseIf repName = "Lista de las Ordenes de Trabajo" Then repName = "Lista OT" ElseIf repName = "Lista de OT’s Canceladas por Area" Then repName = "Lista de OT Canceladas por Area" ElseIf repName = "Gráfica del Status de las OT’s" Then repName = "Grafico Status de OT" ElseIf repName = "OT´s con 30 días de antiguedad" Then repName = "OT con 30 dias antiguedad" ElseIf repName = "Ordenes de Trabajo Por Area" Then repName = "Lista OT por Area" ElseIf repName = "Detalles de la Orden de Trabajo" Then repName = "Detalles OT" ElseIf repName = "Lista de OT’s Canceladas" Then repName = "Lista OT Canceladas" ElseIf repName = "Ordenes de Trabajo por Solicitante" Then repName = "OT por Solicitante" ElseIf repName = "Ordenes de Trabajo por Asignado A" Then repName = "OT por Empleados" ElseIf repName = "OT´s con 30 días de antiguedad por Area" Then repName = "OT con 30 dias antiguedad por Area" ElseIf repName = "Costo de la Orden de Trabajo por Area" Then repName = "Costo OT" ElseIf repName = "Gráfica de OT´s por Tipo de Orden" Then repName = "Work Order Distribution" ElseIf repName = "Gráfica de Total de Hrs. de MO por Tipo de Orden" Then repName = "Work Order Distribution by Man Hours" ElseIf repName = "Detalle de Hrs. del empleado por Tipo Orden" Then repName = "Work Order Man Hours" ElseIf repName = "Estadística del Status de las OT´s" Then repName = "Estadistica Status OT" ElseIf repName = "Lista de OT’s Pendientes MP" Then repName = "Lista OT de MP Pendientes" ElseIf repName = "Lista de OT’s MP" Then repName = "Lista OT de MP" ElseIf repName = "Lista de OT’s MP por Area" Then repName = "Lista OT de MP por Area" ElseIf repName = "Lista de OT’s MP con Fecha Programada de Inicio Vencida" Then repName = "Lista OT de MP con Fecha Prog Inicio Vencida" ElseIf repName = "Lista de OT’s MP con Fecha Programada de Inicio Vencida por Area" Then repName = "Lista OT de MP con Fecha Prog Inicio Vencida por Area" ElseIf repName = "Lista de OT’s MP Canceladas" Then repName = "Lista OT de MP Canceladas" ElseIf repName = "Lista de OT’s MP Canceladas por Area" Then repName = "Lista OT de MP Canceladas por Area" ElseIf repName = "Lista de OT’s MP Cerradas por Area" Then repName = "Lista OT de MP Cerradas por Area" ElseIf repName = "Lista de OT’s Pendientes MP por Area" Then repName = "Lista OT de MP Pendientes por Area" ElseIf repName = "Lista de OT’s MP en Espera de Ser Aprobadas" Then repName = "Lista OT de MP por aprobacion" ElseIf repName = "Lista de OT’s MP en Espera de Ser Aprobadas por Area" Then repName = "Lista OT de MP por aprobacion por Area"
238
ElseIf repName = "Lista de OT’s MP en Espera de Partes" Then repName = "Lista OT de MP espera Partes" ElseIf repName = "Lista de OT’s MP en Espera de Partes por Area" Then repName = "Lista OT de MP espera Partes por Area" ElseIf repName = "Gráfica del Status de las OT’s MP" Then repName = "Grafico Status OT de MP" ElseIf repName = "Lista de OT’s MP Cerradas" Then repName = "Lista OT de MP Cerradas" ElseIf repName = "Estadísticas de Inventario" Then repName = "Estadistica de Partes" End If stDocName = repName DoCmd.OpenReport stDocName, acPreview Me.AssetNo1 = Null Me.AssetNo2 = Null Me.Department = Null Me.LocationNo = Null Me.WODate1 = Null Me.WODate2 = Null Me.Trade = Null Me.TargetDate1 = Null Me.TargetDate2 = Null Me.PMWOTrade = Null Me.trade1 = Null Me.Text67 = Null Me.Trans1 = Null Me.Trans2 = Null Me.partno = Null Me.Text60 = Null Me.Attr = Null Me.Loc = Null Me.TaskNo = Null Me.Warr = Null Me.ass1 = Null Me.ass2 = Null Me.tar1 = Null Me.Tar2 = Null Exit_Command48_Click: Exit Sub Err_Command48_Click: MsgBox err.Description Resume Exit_Command48_Click End Sub Private Sub LocationNo_AfterUpdate() Me.Text67 = Me.LocationNo.Column(1) End Sub Private Sub calCtl1_Click() Me.WODate1 = Me.calCtl1.Value Me.WODate1.SetFocus Me.calCtl1.Visible = False End Sub Private Sub calCtl2_Click() Me.WODate2 = Me.calCtl2.Value Me.WODate2.SetFocus Me.calCtl2.Visible = False End Sub
239
Private Sub calCtl3_Click() Me.TargetDate1 = Me.calCtl3.Value Me.TargetDate1.SetFocus Me.calCtl3.Visible = False End Sub Private Sub calCtl4_Click() Me.TargetDate2 = Me.calCtl4.Value Me.TargetDate2.SetFocus Me.calCtl4.Visible = False End Sub Private Sub calCtl5_Click() Me.Trans1 = Me.calCtl5.Value Me.Trans1.SetFocus Me.calCtl5.Visible = False End Sub Private Sub calCtl6_Click() Me.Trans2 = Me.calCtl6.Value Me.Trans2.SetFocus Me.calCtl6.Visible = False End Sub Private Sub calCtl7_Click() Me.txtStartDate = Me.calCtl7.Value Me.txtStartDate.SetFocus Me.calCtl7.Visible = False End Sub Private Sub calCtl8_Click() Me.txtEndDate = Me.calCtl8.Value Me.txtEndDate.SetFocus Me.calCtl8.Visible = False End Sub Private Sub calCtl9_Click() Me.tar1 = Me.calCtl9.Value Me.tar1.SetFocus Me.calCtl9.Visible = False End Sub Private Sub calCtl10_Click() Me.Tar2 = Me.calCtl10.Value Me.Tar2.SetFocus Me.calCtl10.Visible = False End Sub Private Sub lstFailureWorkType_Click() If Not IsNull(Me.lstFailureWorkType.Value) And Me.lstFailureWorkType.Value <> "" Then If Not IsNull(Me.txtFailureWorkType) And Me.txtFailureWorkType <> "" Then Me.txtFailureWorkType = Me.txtFailureWorkType + ",'" + Me.lstFailureWorkType + "'" Else Me.txtFailureWorkType = "'" + Me.lstFailureWorkType + "'" End If End If End Sub
240
Private Sub lstMtbfWorkType_Click() If Not IsNull(Me.lstMtbfWorkType.Value) And Me.lstMtbfWorkType.Value <> "" Then Me.txtMtbfWorkType = Me.txtMtbfWorkType + ",'" + Me.lstMtbfWorkType.Value + "'" End If End Sub Private Sub MtbfReport(ByVal title As String, ByVal filname As String) Dim db As DAO.Database Dim rs As DAO.Recordset Dim rs1 As DAO.Recordset Dim x1 As Object Dim i As Integer Dim USEACDATE As Boolean Dim MySQL As String Dim MySQL1 As String Dim sqlq As String filname = Application.CurrentProject.Path + "\" + filname On Error GoTo ExcelError Set db = CurrentDb Set x1 = CreateObject("Excel.Application") x1.Workbooks.Open (filname) x1.Worksheets("Sheet1").Activate 'Eliminar registros existentes de Excel x1.Rows("1:65535").Select x1.Selection.Delete Shift:=-4162 x1.Range("A1").Value = "Asset No" x1.Range("B1").Value = title i = 2 If Not IsNull(Me.cboMtbfLocation) And Me.cboMtbfLocation <> "" And Me.cboMtbfLocation <> "<ALL>" Then sqlq = " AND assetCategories.AssetCatCode = '" + Me.cboMtbfLocation.Column(0) + "'" End If If Not IsNull(Me.cboLocationMtbf) And Me.cboLocationMtbf <> "" And Me.cboLocationMtbf <> "<ALL>" Then sqlq = sqlq + " AND assets.LocationNo = '" + Me.cboLocationMtbf + "'" End If MySQL = "SELECT Distinct workorders.AssetNo, assets.DateAcquired " & _ "FROM ((workorders INNER JOIN assets ON workorders.AssetNo = assets.AssetNumber) INNER JOIN worktype ON workorders.WorkType = worktype.WorkTypeID) left JOIN assetcategories ON assets.AssetCatCode = assetcategories.AssetCatCode " & _ "WHERE (((workorders.WorkStatus) Not In (3))) and (((worktype.WorkTypeDescription) In (" & Me.txtFailureWorkType & "))" & sqlq & ");" Set rs = db.OpenRecordset(MySQL) While Not rs.EOF If IsDate(rs("DateAcquired")) Then If CDate(rs("DateAcquired")) > CDate(Me.txtMtbfStart) Then MySQL1 = "SELECT workorders.AssetNo, Left([AssetDescription],1000) AS AssetDesc, Count(workorders.AssetNo) AS CountFailures, Sum(DateDiff('n',workorders.ActDateStart,workorders.ActDateEnd)) AS TotalRepairTime, Sum(workorders.DownTime) AS TotalDowntime " & _ "FROM ((workorders INNER JOIN assets ON workorders.AssetNo = assets.AssetNumber) INNER JOIN worktype ON workorders.WorkType = worktype.WorkTypeID) LEFT JOIN assetcategories ON assets.AssetCatCode = assetcategories.AssetCatCode " & _ "WHERE
241
(((DateSerial(Year([DateReceived]),Month([DateReceived]),Day([DateReceived]))) Between DateSerial(" & CStr(Year(rs("DateAcquired"))) & "," & CStr(Month(rs("DateAcquired"))) & "," & CStr(Day(rs("DateAcquired"))) & ") And DateSerial(" & CStr(Year(Me.txtMtbfEnd)) & "," & CStr(Month(Me.txtMtbfEnd)) & "," & CStr(Day(Me.txtMtbfEnd)) & ")) AND ((worktype.WorkTypeDescription) In (" & Me.txtFailureWorkType & "))) " & _ "GROUP BY workorders.AssetNo, Left([AssetDescription],1000) HAVING (((workorders.AssetNo)='" & rs("AssetNo") & "'));" USEACDATE = True Else MySQL1 = "SELECT workorders.AssetNo, Left([AssetDescription],1000) AS AssetDesc, Count(workorders.AssetNo) AS CountFailures, Sum(DateDiff('n',workorders.ActDateStart,workorders.ActDateEnd)) AS TotalRepairTime, Sum(workorders.DownTime) AS TotalDowntime " & _ "FROM ((workorders INNER JOIN assets ON workorders.AssetNo = assets.AssetNumber) INNER JOIN worktype ON workorders.WorkType = worktype.WorkTypeID) LEFT JOIN assetcategories ON assets.AssetCatCode = assetcategories.AssetCatCode " & _ "WHERE (((DateSerial(Year([DateReceived]),Month([DateReceived]),Day([DateReceived]))) Between DateSerial(" & CStr(Year(Me.txtMtbfStart)) & "," & CStr(Month(Me.txtMtbfStart)) & "," & CStr(Day(Me.txtMtbfStart)) & ") And DateSerial(" & CStr(Year(Me.txtMtbfEnd)) & "," & CStr(Month(Me.txtMtbfEnd)) & "," & CStr(Day(Me.txtMtbfEnd)) & ")) AND ((worktype.WorkTypeDescription) In (" & Me.txtFailureWorkType & "))) " & _ "GROUP BY workorders.AssetNo, Left([AssetDescription],1000) HAVING (((workorders.AssetNo)='" & rs("AssetNo") & "'));" USEACDATE = False End If Else MySQL1 = "SELECT workorders.AssetNo, Left([AssetDescription],1000) AS AssetDesc, Count(workorders.AssetNo) AS CountFailures, Sum(DateDiff('n',workorders.ActDateStart,workorders.ActDateEnd)) AS TotalRepairTime, Sum(workorders.DownTime) AS TotalDowntime " & _ "FROM ((workorders INNER JOIN assets ON workorders.AssetNo = assets.AssetNumber) INNER JOIN worktype ON workorders.WorkType = worktype.WorkTypeID) LEFT JOIN assetcategories ON assets.AssetCatCode = assetcategories.AssetCatCode " & _ "WHERE (((DateSerial(Year([DateReceived]),Month([DateReceived]),Day([DateReceived]))) Between DateSerial(" & CStr(Year(Me.txtMtbfStart)) & "," & CStr(Month(Me.txtMtbfStart)) & "," & CStr(Day(Me.txtMtbfStart)) & ") And DateSerial(" & CStr(Year(Me.txtMtbfEnd)) & "," & CStr(Month(Me.txtMtbfEnd)) & "," & CStr(Day(Me.txtMtbfEnd)) & ")) AND ((worktype.WorkTypeDescription) In (" & Me.txtFailureWorkType & "))) " & _ "GROUP BY workorders.AssetNo, Left([AssetDescription],1000) HAVING (((workorders.AssetNo)='" & rs("AssetNo") & "'));" USEACDATE = False End If Set rs1 = db.OpenRecordset(MySQL1) While Not rs1.EOF x1.Range("A" & CStr(i)).Value = rs1.Fields("AssetNo") + " " + IIf(IsNull(rs1.Fields("AssetDesc")), "", rs1.Fields("AssetDesc")) x1.Range("B" & CStr(i)).Value = DateDiff("d", IIf(USEACDATE = True, rs("DateAcquired"), Me.txtMtbfStart), Me.txtMtbfEnd) / IIf(IsNull(rs1.Fields("CountFailures")), 1, rs1.Fields("CountFailures")) rs1.MoveNext i = i + 1 Wend rs1.Close Set rs1 = Nothing rs.MoveNext Wend rs.Close
242
Set rs = Nothing db.Close Set db = Nothing x1.Charts(1).Activate 'x1.ActiveChart.ApplyDataLabels xlDataLabelsShowLabelAndPercent 'x1.ActiveChart.HasLegend = True If Not IsNull(Me.cboMtbfLocation) And Me.cboMtbfLocation <> "" Then title = title + " for Asset Category " + Me.cboMtbfLocation.Column(1) End If If Not IsNull(Me.cboLocationMtbf) And Me.cboLocationMtbf <> "" Then title = title + " by Location " + Me.cboLocationMtbf.Column(1) End If title = title + " From " + CStr(Me.txtMtbfStart) + " to " + CStr(Me.txtMtbfEnd) x1.ActiveChart.ChartTitle.Caption = title x1.ActiveWorkbook.RefreshAll x1.ActiveWorkbook.Save x1.Visible = True Exit Sub ExcelError: MsgBox err.Description, vbExclamation x1.Quit End Sub Private Sub MttrReport(ByVal title As String, ByVal filname As String) Dim db As DAO.Database Dim rs As DAO.Recordset Dim sqlq As String Dim x1 As Object Dim i As Integer Dim a As String Dim MySQL As String Dim IncCom As String filname = Application.CurrentProject.Path + "\" + filname On Error GoTo ExcelError Set db = CurrentDb Set x1 = CreateObject("Excel.Application") x1.Workbooks.Open (filname) x1.Worksheets("Sheet1").Activate 'Eliminar registros existentes de Excel x1.Rows("1:65535").Select x1.Selection.Delete Shift:=-4162 'x1.Visible = True i = 1 x1.Range("A1").Value = "Asset No" x1.Range("B1").Value = title If Not IsNull(Me.cboMtbfLocation) And Me.cboMtbfLocation <> "" And Me.cboMtbfLocation <> "<ALL>" Then sqlq = " AND assetCategories.AssetCatCode = '" + Me.cboMtbfLocation.Column(0) + "'" End If If Not IsNull(Me.cboLocationMtbf) And Me.cboLocationMtbf <> "" And Me.cboLocationMtbf <> "<ALL>" Then sqlq = sqlq + " AND assets.LocationNo = '" + Me.cboLocationMtbf + "'" End If sqlq = sqlq + " AND (DateSerial(Year(DateReceived),Month(DateReceived),Day(DateReceived)) BETWEEN " & _ " DateSerial(" + CStr(Year(Me.txtMtbfStart)) + "," +
243
CStr(Month(Me.txtMtbfStart)) + "," + CStr(Day(Me.txtMtbfStart)) & _ " ) AND DateSerial(" + CStr(Year(Me.txtMtbfEnd)) + "," + CStr(Month(Me.txtMtbfEnd)) + "," + CStr(Day(Me.txtMtbfEnd)) & _ " )) " sqlq = sqlq + " AND WorkTypeDescription IN (" + Me.txtMtbfWorkType + ")" sqlq = "SELECT workorders.AssetNo, Left([AssetDescription],1000) AS AssetDesc, Count(workorders.AssetNo) AS CountFailures, Sum(DateDiff('n',workorders.ActDateStart,workorders.ActDateEnd)) AS TotalRepairTime, Sum(workorders.DownTime) AS TotalDowntime" & _ " FROM ((workorders INNER JOIN assets ON workorders.AssetNo = assets.AssetNumber) INNER JOIN worktype ON workorders.WorkType = worktype.WorkTypeID) LEFT JOIN assetcategories ON assets.AssetCatCode = assetcategories.AssetCatCode " & _ " WHERE (((workorders.WorkStatus) = 2)) " + sqlq & _ " GROUP BY workorders.AssetNo, Left([AssetDescription],1000)" Set rs = db.OpenRecordset(sqlq) If rs.EOF = False Then rs.MoveFirst i = 2 While rs.EOF = False a = "A" + CStr(i) x1.Range(a).Value = rs.Fields("AssetNo") + " " + IIf(IsNull(rs.Fields("AssetDesc")), "", rs.Fields("AssetDesc")) a = "B" + CStr(i) x1.Range(a).Value = IIf(IsNull(rs.Fields("TotalRepairTime")), 1, rs.Fields("TotalRepairTime")) / IIf(IsNull(rs.Fields("CountFailures")), 1, rs.Fields("CountFailures")) rs.MoveNext i = i + 1 Wend rs.Close Set rs = Nothing db.Close Set db = Nothing x1.Charts(1).Activate 'x1.ActiveChart.ApplyDataLabels xlDataLabelsShowLabelAndPercent 'x1.ActiveChart.HasLegend = True If Not IsNull(Me.cboMtbfLocation) And Me.cboMtbfLocation <> "" Then title = title + " for Asset Category " + Me.cboMtbfLocation.Column(1) End If If Not IsNull(Me.cboLocationMtbf) And Me.cboLocationMtbf <> "" Then title = title + " by Location " + Me.cboLocationMtbf.Column(1) End If title = title + " From " + CStr(Me.txtMtbfStart) + " to " + CStr(Me.txtMtbfEnd) x1.ActiveChart.ChartTitle.Caption = title x1.ActiveWorkbook.RefreshAll x1.ActiveWorkbook.Save x1.Visible = True Exit Sub ExcelError: MsgBox err.Description, vbExclamation x1.Quit End Sub Private Sub TxtFrom_BeforeUpdate(Cancel As Integer) End Sub
244
Formulario Solicitudes de trabajo Figura 19. - Formulario Solicitudes de Trabajo Este formulario se utiliza para mostrar una, varias o todas las solicitudes de trabajo
existentes en el sistema en un momento dado. Seleccionando una de las solicitudes que
aparecen en la lista y haciendo “doble clic” sobre ella se abrira un formulario más detallado
sobre la solicitud. La lista de las solicitudes existentes muestra los siguientes campos: número
de solicitud, status de la solicitud, número de orden de trabajo, status de la orden de trabajo,
descripción del trabajo, fecha de la solicitud, tipo de orden de trabajo y persona que solicito el
trabajo. La información que se muestra en la lista puede ser filtrada según el criterio que se
escoja en las casillas de la parte inferior del formulario identificadas como “No solicitud”,
“descripción”, “status de OT”, “fecha de solicitud” y “status de solicitud”. Seleccionando alguna
de estas casillas y colocando el criterio de búsqueda en el campo ubicado debajo de las casillas
se mostrará la información solicitada al pulsar sobre el botón “buscar”. Una vez que se ha
realizado una búsqueda según un criterio dado se pueden mostrar todas las solicitudes
seleccionando el botón “Mostrar todo”. El botón “Ordenar A->Z” permite ordenar en forma
ascendente o descendente la información. El botón “Nueva solicitud” permite abrir un formulario
para introducir una nueva solicitud al sistema El botón “cerrar” permite salir del formulario. El
código de programa para este formulario es el siguiente:
'********************************* ' ' Lista Solicitudes de Trabajo ' '*********************************
245
Dim sel, Sortby As String Private Sub Command22_Click() Dim WOlist As String If Me.Select = 1 Then sel = "WORequest.RequestNo ='" & Me.Input & "'" ElseIf Me.Select = 2 Then sel = "WORequest.ReceivedDate Between #" & Me.date1 & "# And #" & Me.date2 & "#" ElseIf Me.Select = 3 Then sel = "WORequest.ProblemDesc Like '" & Me.Input & "*'" ElseIf Me.Select = 4 Then sel = "WorkStatus.WorkStatus Like '" & Me.Input & "*'" ElseIf Me.Select = 5 Then sel = "workstatus_1.WorkStatus Like '" & Me.Input & "*'" End If WOlist = "SELECT WORequest.RequestNo AS [No de solicitud], WorkStatus.WorkStatus AS [Status de solicitud], WORequest.WorkOrderNo AS [No de OT], workstatus_1.WorkStatus AS [Status de OT], WORequest.ProblemDesc AS [Descripción del trabajo], WORequest.ReceivedDate AS [Fecha/Hora de solicitud], WorkType.WorkTypeDescription AS [Tipo de OT], Employees.FirstName AS [Nombre empleado] " & _ "FROM ((((WORequest LEFT JOIN Employees ON WORequest.RequesterNo = Employees.EmployeeNO) LEFT JOIN WorkType ON WORequest.WorkType = WorkType.WorkTypeID) LEFT JOIN WorkStatus ON WORequest.RequestStatus = WorkStatus.WorkStatusID) LEFT JOIN workorders ON WORequest.WorkOrderNo = workorders.WorkorderNo) LEFT JOIN workstatus AS workstatus_1 ON workorders.WorkStatus = workstatus_1.WorkStatusID " & _ "WHERE " & sel & " ORDER BY WORequest.RequestNo DESC;" Debug.Print WOlist Me.List.RowSource = WOlist Me.List.ColumnCount = 8 Me.List.ColumnHeads = True Me.List.ColumnWidths = "3 cm;3 cm; 3 cm; 3 cm; 8 cm; 4 cm; 3 cm; 3 cm" Call contarreg End Sub Private Sub Command23_Click() Call vertodo1 End Sub Private Sub Form_Activate() DoCmd.Restore Call contarreg Refresh End Sub Private Sub Form_Deactivate() DoCmd.Minimize End Sub Private Sub Select_AfterUpdate() If Me.Select = 2 Then Me.date1.Visible = True Me.date2.Visible = True Me.Input.Visible = False Else Me.date1.Visible = False Me.date2.Visible = False Me.Input.Visible = True
246
End If End Sub Private Sub SortB1_Click() If Me.SortB1.Caption = "Ordenar A->Z" Then If Me.Select = 1 Then Sortby = "ORDER BY WORequest.RequestNo ASC" ElseIf Me.Select = 2 Then Sortby = "ORDER BY WORequest.ReceivedDate ASC" ElseIf Me.Select = 3 Then Sortby = "ORDER BY WORequest.ProblemDesc ASC" ElseIf Me.Select = 4 Then Sortby = "ORDER BY WorkStatus.WorkStatus ASC" ElseIf Me.Select = 5 Then Sortby = "ORDER BY WorkStatus_1.WorkStatus ASC" End If Me.SortB1.Caption = "Ordenar Z->A" Else If Me.Select = 1 Then Sortby = "ORDER BY WORequest.RequestNo DESC" ElseIf Me.Select = 2 Then Sortby = "ORDER BY WORequest.ReceivedDate DESC" ElseIf Me.Select = 3 Then Sortby = "ORDER BY WORequest.ProblemDesc DESC" ElseIf Me.Select = 4 Then Sortby = "ORDER BY WorkStatus.WorkStatus DESC" ElseIf Me.Select = 5 Then Sortby = "ORDER BY WorkStatus_1.WorkStatus DESC" End If Me.SortB1.Caption = "Ordenar A->Z" End If Call Sort End Sub Private Sub Form_Open(Cancel As Integer) Call vertodo End Sub Private Sub List_DblClick(Cancel As Integer) If IsNull(Me.List.Column(0)) Then MsgBox "Seleccione un item de la lista", vbInformation, "SICAM" Else typeWO = "WO" WOStatus = Me.List.Column(2) DoCmd.OpenForm "ActReqOTForm", , , "[requestno]=" & "'" & Me.List.Column(0) & "'" End If End Sub Private Sub vertodo() Dim WOlist As String WOlist = "SELECT WORequest.RequestNo AS [No de solicitud], WorkStatus.WorkStatus AS [Status de solicitud], WORequest.WorkOrderNo AS [No de OT], workstatus_1.WorkStatus AS [Status de OT], WORequest.ProblemDesc AS [Descripción del trabajo], WORequest.ReceivedDate AS [Fecha/Hora de solicitud], WorkType.WorkTypeDescription AS [Tipo de OT], Employees.FirstName AS [Nombre empleado], WORequest.RequesterNo " & _ "FROM ((((WORequest LEFT JOIN Employees ON WORequest.RequesterNo = Employees.EmployeeNO) LEFT JOIN WorkType ON WORequest.WorkType = WorkType.WorkTypeID) LEFT JOIN WorkStatus ON WORequest.RequestStatus = WorkStatus.WorkStatusID) LEFT JOIN workorders ON WORequest.WorkOrderNo =
247
workorders.WorkorderNo) LEFT JOIN workstatus AS workstatus_1 ON workorders.WorkStatus = workstatus_1.WorkStatusID " & _ "WHERE (((WorkStatus.WorkStatusID) In (1,8)) AND ((workstatus_1.WorkStatusID) Not In (2,3))) OR (((WorkStatus.WorkStatusID) Not In (3)) AND ((workstatus_1.WorkStatusID) Is Null)) " & _ "ORDER BY WORequest.RequestNo DESC;" Me.List.RowSource = WOlist Me.List.ColumnCount = 8 Me.List.ColumnHeads = True Me.List.ColumnWidths = "3 cm;3 cm; 3 cm; 3 cm; 8 cm; 4 cm; 3 cm; 3 cm" Call contarreg End Sub Private Sub vertodo1() Dim WOlist As String WOlist = "SELECT WORequest.RequestNo AS [No de solicitud], WorkStatus.WorkStatus AS [Status de solicitud], WORequest.WorkOrderNo AS [No de OT], workstatus_1.WorkStatus AS [Status de OT], WORequest.ProblemDesc AS [Descripción del trabajo], WORequest.ReceivedDate AS [Fecha/Hora de solicitud], WorkType.WorkTypeDescription AS [Tipo de OT], Employees.FirstName AS [Nombre empleado] " & _ "FROM ((((WORequest LEFT JOIN Employees ON WORequest.RequesterNo = Employees.EmployeeNO) LEFT JOIN WorkType ON WORequest.WorkType = WorkType.WorkTypeID) LEFT JOIN WorkStatus ON WORequest.RequestStatus = WorkStatus.WorkStatusID) LEFT JOIN workorders ON WORequest.WorkOrderNo = workorders.WorkorderNo) LEFT JOIN workstatus AS workstatus_1 ON workorders.WorkStatus = workstatus_1.WorkStatusID " & _ "ORDER BY WORequest.RequestNo DESC;" Me.List.RowSource = WOlist Me.List.ColumnCount = 8 Me.List.ColumnHeads = True Me.List.ColumnWidths = "3 cm;3 cm; 3 cm; 3 cm; 8 cm; 4 cm; 3 cm; 3 cm" Call contarreg End Sub Private Sub Command25_Click() On Error GoTo Err_Command25_Click DoCmd.Close Exit_Command25_Click: Exit Sub Err_Command25_Click: MsgBox err.Description Resume Exit_Command25_Click End Sub Private Sub Sort() Dim WOlist As String WOlist = "SELECT WORequest.RequestNo AS [No de solicitud], WorkStatus.WorkStatus AS [Status de solicitud], WORequest.WorkOrderNo AS [No de OT], workstatus_1.WorkStatus AS [Status de OT], WORequest.ProblemDesc AS [Descripción del trabajo], WORequest.ReceivedDate AS [Fecha/Hora de solicitud], WorkType.WorkTypeDescription AS [Tipo de OT], Employees.FirstName AS [Nombre empleado] " & _ "FROM ((((WORequest LEFT JOIN Employees ON WORequest.RequesterNo = Employees.EmployeeNO) LEFT JOIN WorkType ON WORequest.WorkType =
248
WorkType.WorkTypeID) LEFT JOIN WorkStatus ON WORequest.RequestStatus = WorkStatus.WorkStatusID) LEFT JOIN workorders ON WORequest.WorkOrderNo = workorders.WorkorderNo) LEFT JOIN workstatus AS workstatus_1 ON workorders.WorkStatus = workstatus_1.WorkStatusID " & _ Sortby & ";" Me.List.RowSource = WOlist Me.List.ColumnCount = 8 Me.List.ColumnHeads = True Me.List.ColumnWidths = "3 cm; 3 cm;3 cm; 3 cm; 8 cm; 4 cm; 3 cm; 3 cm" Call contarreg End Sub Private Sub Command38_Click() On Error GoTo Err_Command38_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "OTSolicForm" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_Command38_Click: Exit Sub Err_Command38_Click: MsgBox err.Description Resume Exit_Command38_Click End Sub Private Sub contarreg() Call CountRecord(ListRec, List) End Sub
Formulario Solicitud de Orden de Trabajo Figura 20. - Formulario Solicitud de Orden de Trabajo Este formulario se utiliza para crear una solicitud de trabajo, es decir, para solicitar una
orden de trabajo. El formulario genera automáticamente los campos: “número de solicitud”,
“fecha de solicitud” y “status de solicitud”. Adicionalmente solicita otros campos para completar
los datos de la solicitud. Estos campos son: “Empleado solicitante”, “tipo de orden de trabajo”,
249
“prioridad”, “número de equipo”, “número de ubicación”, “fecha requerida” y “descripción del
trabajo”. El botón “Guardar” permite almacenar la información en la base de datos del sistema y
el botón “Cerrar” permite salir del formulario sin guardar los datos suministrados. El código para
este formulario es el siguiente:
'*************************************** ' ' Nuevo Registro de Solicitud de OT ' '*************************************** Option Explicit Dim ty, typ, MyStat As Integer Private Sub AssetNo_AfterUpdate() Me.LocationNo = Me.AssetNo.Column(6) End Sub Private Sub Command361_Click() Me.calCtl6.Visible = True Me.calCtl6.Value = Format(CDate(Date), "Short Date") & " " & "00:00:00" End Sub Private Sub Detail_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Error GoTo err If Me.calCtl6.Visible = True Then Me.calCtl6.Visible = False Exit Sub err: Exit Sub End Sub Private Sub Form_Activate() Refresh End Sub Private Sub Form_Open(Cancel As Integer) Me.RequestNo = "0000000000" Me.DateRec = ServerdateQuery() Me.WorkType = 3 Me.WorkPriority = 1 End Sub Private Sub Command73_Click() On Error GoTo Err_Command73_Click DoCmd.Close Exit_Command73_Click: Exit Sub Err_Command73_Click: MsgBox err.Description Resume Exit_Command73_Click End Sub Private Sub PlantCode_AfterUpdate() SendKeys "{F9}", True End Sub Private Sub ReqTime_LostFocus()
250
On Error GoTo ErrorHandler Me.DateReq = Format(CDate(Me.DateReq), "Short Date") & " " & Format(CDate(Me.ReqTime), "Short Time") ErrorHandler: If err.Number <> 0 Then ' MsgBox "Error : " & err.Description & "", vbInformation Me.ReqTime = Null Me.ReqTime.SetFocus End If End Sub Private Sub Workorder_Click() Dim response If Me.DateRec = "" Or IsNull(Me.DateRec) Then MsgBox "Indique fecha de solicitud.", vbOKOnly + vbExclamation Me.DateRec.SetFocus Else response = MsgBox("Desea guardar el registro?", vbYesNo + vbInformation + vbDefaultButton2, "Confirmar grabar") If response = vbYes Then Call saveRecord Else Me.ProbDesc.SetFocus End If End If End Sub Private Sub saveRecord() Dim rsreqno As DAO.Recordset Set dbSICAM = CurrentDb() Set rsreqno = dbSICAM.OpenRecordset("SELECT * From WORequest ORDER By RequestNo ASC") If rsreqno.RecordCount = 0 Then Me.RequestNo = "0000000001" Else rsreqno.MoveLast Me.RequestNo = Right("0000000000" & CStr(val(Right(rsreqno!RequestNo, 10) + 1)), 10) End If rsreqno.Close Dim rsworeq As DAO.Recordset Set rsworeq = dbSICAM.OpenRecordset("WORequest") With rsworeq .AddNew ![RequestNo] = Me.RequestNo ![RequestStatus] = 1 ![ReceivedDate] = Me.DateRec ![ProblemDesc] = Me.ProbDesc ![RequireDateTime] = Me.DateReq ![WorkType] = Me.WorkType.Column(0) ![WorkPriority] = Me.WorkPriority.Column(0) ![RequesterNo] = Me.reqid.Column(0) ![AssetNo] = Me.AssetNo ![LocationNo] = Me.LocationNo .Update .Close End With Set rsworeq = Nothing
251
DoCmd.OpenForm "ActReqOTForm", acNormal, , "[RequestNo]=" & "'" & Me.RequestNo & "'" DoCmd.Close acForm, "OTSolicForm" End Sub Private Sub calCtl6_Click() Me.DateReq = Me.calCtl6.Value Me.ReqTime.SetFocus Me.calCtl6.Visible = False End Sub Private Sub worktype_AfterUpdate() If Me.WorkType = 2 Then MsgBox "Este tipo de OT es solo para generación automática de MPs", vbInformation Me.WorkType = Null Me.WorkType.SetFocus End If End Sub
Formulario Listados generales del sistema: Figura 21. - Listados generales del sistema. Este formulario se utiliza para como un formulario principal, comúnmente conocido como
“menú”, para mostrar los listados generales de las principales tablas de datos que existen en el
sistema. El formulario muestra el nombre de los listados disponibles en la parte superior del
mismo. Éstos son: Equipos, tipos de equipos, empleados, ubicaciones, proveedores, repuestos,
códigos de falla, departamentos y otros. Seleccionando con el puntero o “ratón” y haciéndo clic
cobre cada uno de estos nombres el programa abrirá un subformulario correspondiente a la lista
de datos que se solicita. A continuación se muestran estos subformularios
252
Subformulario Listados Generales del sistema – Equipos
Figura 22. - Listados generales de Sistema – Equipos
Este subformulario despliega la lista de todos los equipos de la base de datos del sistema.
Seleccionando un equipo de la lista y haciendo “doble click” sobre él se abrirá un formulario mas
detallado con toda la información sobre el mismo. Seleccionando el botón “Equipo nuevo” se
abre un formulario para introducir los datos de un equipo nuevo al sistema.
Subformulario Listados generales del Sistema – Tipos de equipos
Figura 23. – Subformulario Listados generales del sistema – Tipos de equipos.
253
Este subformulario muestra los tipos de equipos existentes en el sistema y su descripción.
Tiene la opción de crear un nuevo tipo de equipo presentando dos campos en la parte superior
de la lista y almacenar la información presionando el botón “Guardar”.
Subformulario Listados generales del Sistema – Empleados
Figura 24 – Subformulario Listados generales del Sistema – Empleados
Este subformulario muestra la lista de los empleados del sistema en dos campos: el
número o identificador del empleado y su nombre. Seleccionando un registro de la lista se abre
un formulario más detallado con toda la información de la persona. El botón “Nuevo empleado”
sirve para abrir otro formulario que solicita al usuario todos los datos que requiere el sistema
para crear un nuevo empleado.
254
Subformulario Listados generales del sistema – Ubicaciones.
Figura 25. - Subformulario Listados generales del sistema – Ubicaciones.
Este subformulario despliega la lista de las ubicaciones del sistema en dos campos:
número o identificador de ubicación y descripción. Seleccionando un registro de la lista y
haciendo “doble click” sobre el mismo se abre otro formulario con la información mas detallada
de la ubicación seleccionada. El botón “Nueva ubicación” abre un formulario que permite
introducir la información de una nueva ubicación que se quiera crear y almacenar en la base de
datos.
255
Subformulario Listados generales del sistema – Proveedores
Figura 26. – Subformulario Listados generales del sistema – Proveedores.
Este subformulario despliega la lista de las proveedores del sistema en dos campos:
número o identificador de proveedor y descripción del proveedor. Seleccionando un registro de
la lista y haciendo “doble click” sobre el mismo se abre otro formulario con la información mas
detallada del proveedor seleccionado. El botón “Nuevo proveedor” abre un formulario que
permite crear un nuevo proveedor y almacenar la información en la base de datos del sistema.
256
Subformulario Listados generales del sistema – Repuestos
Figura 27. – Subformulario Listados generales del sistema – Repuestos
Este subformulario muestra la listas de repuestos y códigos de piezas existentes en el
inventario de partes del sistema. Seleccionando un registro de la lista se abre un formulario con
la información mas detallada del mismo. El subfromulario también tiene la opción de crear un
nuevo código de partes y su descripción si se desea y almacenarlo en la base de datos
oprimiendo el botón “Guardar”. Así mismo, se puede agregar una o varias partes a una lista de
partes o piezas, oprimiendo el botón “Agregar”.
257
Subformulario Listados generales del sistema – Códigos de falla.
Figura 28. – Subformulario listados generales del sistema – Códigos de falla.
Este subformulario despliega los códigos y fallas y la descripción de cada uno de ellos en
los campos “Código falla” y “Descripción”. Seleccionando la opción “Nuevo” se abre otro
formulario que permite crear otro código de falla con su respectiva descripción. También tiene la
opción de crear un nuevo código de falla y almacenarlo en la base de datos del sistema
oprimiendo el botón “Guardar”.
258
Subformulario Listados generales del sistema – Otros
Figura 29. – Subformulario Listados generales del sistema – Otros
Este subformulario muestra el contenido de varias tablas que utiliza el sistema en sus
diferentes formularios. Estas tablas son: “Status de Orden de trabajo”, “Tipos de órdenes de
trabajo”, “Tipos garantía”, “Status de Equipos”, “Prioridad de órdenes de trabajo”, “Area de
trabajo” y “Prioridad de Equipos”. Para cada una de estas tablas, este formulario despliega el
contenido de cada registro.
259
Subformulario Listados generales del sistema – Departamentos
Figura No. 30 - Subformulario Listados generales del sistema - Departamentos
Este subformulario despliega en pantalla la lista de los departamentos actuales del
sistema, mostrando el número y la descripción del departamento. También tiene la opción de
crear un nuevo departamento, suministrando los datos requeridos y seleccionando la tecla
“Guardar”. El código de programa del formulario “Listados generales del sistema” es el
siguiente:
'************************ ' ' LISTADO GENERAL ' '************************ Option Explicit Private Sub ac_Click() Me.MyTab.Value = 2 HighlightMe ac.Name End Sub Private Sub as_Click() Me.MyTab.Value = 5
260
HighlightMe "as" End Sub Private Sub AstCatCode_AfterUpdate() Set dbSICAM = CurrentDb() Dim rsasctq As DAO.Recordset Set rsasctq = dbSICAM.OpenRecordset("AssetCategories") Do While Not rsasctq.EOF If UCase(rsasctq![AssetCatCode]) = UCase(Me.AstCatCode) Then MsgBox "Categoría de Equipo ya existente", vbInformation Me.AstCatCode = Null DoCmd.GoToControl "astcatcode" End If rsasctq.MoveNext Loop rsasctq.Close End Sub Private Sub b_Click() Me.MyTab.Value = 3 HighlightMe b.Name End Sub Private Sub BOMNo_AfterUpdate() Dim rsboml As DAO.Recordset Set dbSICAM = CurrentDb() Set rsboml = dbSICAM.OpenRecordset("PartsList") Do While Not rsboml.EOF If UCase(rsboml![PartsListNo]) = UCase(Me.BOMNo) Then MsgBox "Lista ya existe", vbInformation Me.BOMNo = Null DoCmd.GoToControl "BOMNo" End If rsboml.MoveNext Loop rsboml.Close End Sub Private Sub Close_Click() HighlightMe "Close" DoCmd.Close acForm, Me.Name End Sub Private Sub CmdPartList_Click() Dim i As Integer If IsNull(Me.BOMNo) Or Trim(Me.BOMNo.Value) = "" Then MsgBox "Indique en No. de lista.!", vbInformation, " " Exit Sub End If If IsNull(Me.partno) Or Trim(Me.partno.Column(0)) = "" Then MsgBox "Indique el No. de Parte.!", vbInformation, " " Exit Sub End If If IsNull(Me.TxtPartQty) Or Trim(Me.TxtPartQty.Value) = "" Or Me.TxtPartQty.Value = 0 Then MsgBox "Indique la cantidad", vbInformation, " " Exit Sub End If For i = 1 To lstPartList.ListItems.Count If Me.partno.Column(0) = lstPartList.ListItems(i).Text Then
261
MsgBox " No existen partes en la lista", vbInformation, " " Exit Sub End If Next lstPartList.ListItems.Add , , Me.partno.Column(0) lstPartList.ListItems(lstPartList.ListItems.Count).SubItems(1) = Me.partno.Column(1) lstPartList.ListItems(lstPartList.ListItems.Count).SubItems(2) = Me.TxtPartQty.Value Me.partno = Null Me.TxtPartQty = Null End Sub Private Sub Command151_Click() Dim i As Integer Dim response Dim rsbom As DAO.Recordset If IsNull(Me.BOMNo) Or IsNull(Me.BOMDesc) Then MsgBox "Llene todos los campos para grabar el registro", vbInformation DoCmd.GoToControl "BOMNo" ElseIf lstPartList.ListItems.Count = 0 Then MsgBox "Indique al menos una cantidad para crear una lista de Materiales", vbInformation Else response = MsgBox(" Desea grabar el Registro ?", vbYesNo + vbInformation + vbDefaultButton2, "Grabar") If response = vbYes Then Set dbSICAM = CurrentDb() Set rsbom = dbSICAM.OpenRecordset("PartsList") With rsbom .AddNew ![PartsListNo] = Me.BOMNo ![PartsListDescription] = Me.BOMDesc .Update End With Refresh rsbom.Close Set rsbom = dbSICAM.OpenRecordset("Partslistdetails") For i = 1 To lstPartList.ListItems.Count With rsbom .AddNew rsbom("BOMNo") = Me.BOMNo.Value rsbom("PartsNo") = lstPartList.ListItems(i).Text rsbom("PartsDescription") = lstPartList.ListItems(i).SubItems(1) rsbom("PartsQty") = lstPartList.ListItems(i).SubItems(2) .Update End With Next rsbom.Close Me.BOMNo = Null Me.BOMDesc = Null Me.partno = Null Me.TxtPartQty = Null lstPartList.ListItems.Clear Else DoCmd.GoToControl "bomno" End If End If End Sub Private Sub Command210_Click() On Error GoTo Err_Command210_Click Dim stLinkCriteria As String
262
DoCmd.OpenForm "ProveedorNuevoForm", , , stLinkCriteria Exit_Command210_Click: Exit Sub Err_Command210_Click: MsgBox err.Description Resume Exit_Command210_Click End Sub Private Sub Command27_Click() On Error GoTo Err_Command27_Click Dim stLinkCriteria As String DoCmd.OpenForm "EquipoNuevoForm", , , stLinkCriteria Exit_Command27_Click: Exit Sub Err_Command27_Click: MsgBox err.Description Resume Exit_Command27_Click End Sub Private Sub Command28_Click() On Error GoTo Err_Command28_Click Dim stLinkCriteria As String DoCmd.OpenForm "UbicNuevaForm", , , stLinkCriteria Exit_Command28_Click: Exit Sub Err_Command28_Click: MsgBox err.Description Resume Exit_Command28_Click End Sub Private Sub Command29_Click() On Error GoTo Err_Command29_Click Dim stLinkCriteria As String DoCmd.OpenForm "EmpNuevoForm", , , stLinkCriteria Exit_Command29_Click: Exit Sub Err_Command29_Click: MsgBox err.Description Resume Exit_Command29_Click End Sub Private Sub Command40_Click() Dim response Dim rsdpt As DAO.Recordset If IsNull(Me.DeptNo) Or IsNull(Me.DeptDesc) Then MsgBox "Llene todos los campos para grabar el registro", vbInformation DoCmd.GoToControl "deptno" Else response = MsgBox(" Desea grabar el registro?", vbYesNo + vbInformation + vbDefaultButton2, "Grabar") If response = vbYes Then Set dbSICAM = CurrentDb() Set rsdpt = dbSICAM.OpenRecordset("Department") With rsdpt .AddNew ![DepartmentNo] = Me.DeptNo ![DepartmentDescription] = Me.DeptDesc .Update End With Refresh Me.DeptNo = Null Me.DeptDesc = Null rsdpt.Close Else DoCmd.GoToControl "deptno"
263
End If End If End Sub Private Sub Command54_Click() Dim response Dim rsfc As DAO.Recordset If IsNull(Me.FCcode) Or IsNull(Me.FCDesc) Then MsgBox "Llene todos los campos para grabar el registro", vbInformation DoCmd.GoToControl "fccode" Else response = MsgBox(" Desea grabar el registro?", vbYesNo + vbInformation + vbDefaultButton2, "Grabar") If response = vbYes Then Set dbSICAM = CurrentDb() Set rsfc = dbSICAM.OpenRecordset("FailureCause") With rsfc .AddNew ![FailureCauseCode] = Me.FCcode ![FailureCauseDescription] = Me.FCDesc .Update End With Refresh Me.FCcode = Null Me.FCDesc = Null rsfc.Close Else DoCmd.GoToControl "fccode" End If End If End Sub Private Sub Command60_Click() Dim response Dim rsassct As DAO.Recordset If IsNull(Me.assetctq) Or IsNull(Me.AstCatCode) Then MsgBox "Llene todos los campos para grabar el registro", vbInformation DoCmd.GoToControl "AstCatCode" Else response = MsgBox(" Desea grabar el registro?", vbYesNo + vbInformation + vbDefaultButton2, "Grabar") If response = vbYes Then Set dbSICAM = CurrentDb() Set rsassct = dbSICAM.OpenRecordset("AssetCategories") With rsassct .AddNew ![AssetCatCode] = Me.AstCatCode ![AssetCategory] = Me.assetctq .Update End With Refresh Me.assetctq = Null Me.AstCatCode = Null rsassct.Close Else DoCmd.GoToControl "astcatcode" End If End If End Sub Private Sub d_Click() Me.MyTab.Value = 0
264
HighlightMe d.Name End Sub Private Sub DeptNo_AfterUpdate() Dim rsdept As DAO.Recordset Set dbSICAM = CurrentDb() Set rsdept = dbSICAM.OpenRecordset("Department") Do While Not rsdept.EOF If UCase(rsdept![DepartmentNo]) = UCase(Me.DeptNo) Then MsgBox "No de Departamento ya existe", vbInformation Me.DeptNo = Null DoCmd.GoToControl "DeptNo" End If rsdept.MoveNext Loop rsdept.Close End Sub Private Sub e_Click() Me.MyTab.Value = 7 HighlightMe e.Name End Sub Private Sub f_Click() Me.MyTab.Value = 1 HighlightMe f.Name End Sub Private Sub fccode_AfterUpdate() Dim rsfcc As DAO.Recordset Set dbSICAM = CurrentDb() Set rsfcc = dbSICAM.OpenRecordset("FailureCause") Do While Not rsfcc.EOF If UCase(rsfcc![FailureCauseCode]) = UCase(Me.FCcode) Then MsgBox "Código de Falla ya existe", vbInformation Me.FCcode = Null DoCmd.GoToControl "fccode" End If rsfcc.MoveNext Loop rsfcc.Close End Sub Private Sub Form_Activate() DoCmd.Restore Refresh End Sub Private Sub Form_Deactivate() DoCmd.Minimize End Sub Private Sub Form_Open(Cancel As Integer) Me.MyTab.Value = 9 End Sub Private Sub l_Click() Me.MyTab.Value = 6 HighlightMe l.Name End Sub Private Sub ListAsset_DblClick(Cancel As Integer) If IsNull(Me.ListAsset.Column(0)) Then
265
MsgBox "Seleccione un registro de la lista", vbInformation, " " Else DoCmd.OpenForm "ActEqForm", , , "[AssetNumber]=" & "'" & Me.ListAsset.Column(0) & "'" End If End Sub Private Sub ListBOM_DblClick(Cancel As Integer) If IsNull(Me.ListBOM.Column(0)) Then MsgBox "Seleccione un registro de la lista", vbInformation, " " Else DoCmd.OpenForm "ActBomForm", , , "[PartsListNo]=" & "'" & Me.ListBOM.Column(0) & "'" End If End Sub Private Sub ListEmp_DblClick(Cancel As Integer) If IsNull(Me.ListEmp.Column(0)) Then MsgBox "Seleccione un registro de la lista", vbInformation, " " Else DoCmd.OpenForm "ActEmpForm", , , "[EmployeeNo]=" & "'" & Me.ListEmp.Column(0) & "'" End If End Sub Private Sub ListLocation_DblClick(Cancel As Integer) If IsNull(Me.ListLocation.Column(0)) Then MsgBox "Seleccione un registro de la lista", vbInformation, " " Else DoCmd.OpenForm "ActUbicForm", , , "[LocationNo]=" & "'" & Me.ListLocation.Column(0) & "'" End If End Sub Private Sub ListSupp_DblClick(Cancel As Integer) If IsNull(Me.ListSupp.Column(0)) Then MsgBox "Seleccione un registro de la lista", vbInformation, " " Else DoCmd.OpenForm "ActProveedForm", , , "[SupplierNo]=" & "'" & Me.ListSupp.Column(0) & "'" End If End Sub Private Sub lstPartList_KeyPress(KeyAscii As Integer) If Not lstPartList.ListItems.Count = 0 Then lstPartList.ListItems.Remove lstPartList.SelectedItem.Index End If End Sub Private Sub m_Click() Me.MyTab.Value = 9 HighlightMe m.Name End Sub Private Sub mi_Click() Me.MyTab.Value = 8 HighlightMe mi.Name End Sub Private Sub HighlightMe(CN As String) Me.m.ForeColor = IIf(UCase(CN) = UCase(Me.m.Name), 13209, 0) Me.d.ForeColor = IIf(UCase(CN) = UCase(Me.d.Name), 13209, 0) Me.f.ForeColor = IIf(UCase(CN) = UCase(Me.f.Name), 13209, 0) Me.ac.ForeColor = IIf(UCase(CN) = UCase(Me.ac.Name), 13209, 0) Me.b.ForeColor = IIf(UCase(CN) = UCase(Me.b.Name), 13209, 0)
266
Me.s.ForeColor = IIf(UCase(CN) = UCase(Me.s.Name), 13209, 0) Me.As.ForeColor = IIf(UCase(CN) = UCase(Me.As.Name), 13209, 0) Me.l.ForeColor = IIf(UCase(CN) = UCase(Me.l.Name), 13209, 0) Me.e.ForeColor = IIf(UCase(CN) = UCase(Me.e.Name), 13209, 0) Me.mi.ForeColor = IIf(UCase(CN) = UCase(Me.mi.Name), 13209, 0) Me.Close.ForeColor = IIf(UCase(CN) = UCase(Me.Close.Name), 13209, 0) Me.m.BorderStyle = IIf(UCase(CN) = UCase(Me.m.Name), 1, 0) Me.d.BorderStyle = IIf(UCase(CN) = UCase(Me.d.Name), 1, 0) Me.f.BorderStyle = IIf(UCase(CN) = UCase(Me.f.Name), 1, 0) Me.ac.BorderStyle = IIf(UCase(CN) = UCase(Me.ac.Name), 1, 0) Me.b.BorderStyle = IIf(UCase(CN) = UCase(Me.b.Name), 1, 0) Me.s.BorderStyle = IIf(UCase(CN) = UCase(Me.s.Name), 1, 0) Me.As.BorderStyle = IIf(UCase(CN) = UCase(Me.As.Name), 1, 0) Me.l.BorderStyle = IIf(UCase(CN) = UCase(Me.l.Name), 1, 0) Me.e.BorderStyle = IIf(UCase(CN) = UCase(Me.e.Name), 1, 0) Me.mi.BorderStyle = IIf(UCase(CN) = UCase(Me.mi.Name), 1, 0) Me.Close.BorderStyle = IIf(UCase(CN) = UCase(Me.Close.Name), 1, 0) Me.m.BackStyle = IIf(UCase(CN) = UCase(Me.m.Name), 1, 0) Me.d.BackStyle = IIf(UCase(CN) = UCase(Me.d.Name), 1, 0) Me.f.BackStyle = IIf(UCase(CN) = UCase(Me.f.Name), 1, 0) Me.ac.BackStyle = IIf(UCase(CN) = UCase(Me.ac.Name), 1, 0) Me.b.BackStyle = IIf(UCase(CN) = UCase(Me.b.Name), 1, 0) Me.s.BackStyle = IIf(UCase(CN) = UCase(Me.s.Name), 1, 0) Me.As.BackStyle = IIf(UCase(CN) = UCase(Me.As.Name), 1, 0) Me.l.BackStyle = IIf(UCase(CN) = UCase(Me.l.Name), 1, 0) Me.e.BackStyle = IIf(UCase(CN) = UCase(Me.e.Name), 1, 0) Me.mi.BackStyle = IIf(UCase(CN) = UCase(Me.mi.Name), 1, 0) Me.Close.BackStyle = IIf(UCase(CN) = UCase(Me.Close.Name), 1, 0) ' Si UCase(CN) = UCase("d") entonces Me.MyTab.Value = 0 ' Si UCase(CN) = UCase("f") entonces Me.MyTab.Value = 1 ' Si UCase(CN) = UCase("ac") entonces Me.MyTab.Value = 2 ' Si UCase(CN) = UCase("b") entonces Me.MyTab.Value = 3 ' Si UCase(CN) = UCase("s") entonces Me.MyTab.Value = 4 ' Si UCase(CN) = UCase("as") entonces Me.MyTab.Value = 5 ' Si UCase(CN) = UCase("l") entonces Me.MyTab.Value = 6 ' Si UCase(CN) = UCase("e") entonces Me.MyTab.Value = 7 ' Si UCase(CN) = UCase("mi") entonces Me.MyTab.Value = 8 End Sub Private Sub partno_AfterUpdate() Me.TxtPartQty.Value = Me.partno.Column(3) End Sub Private Sub s_Click() Me.MyTab.Value = 4 HighlightMe s.Name End Sub Private Sub TxtPartQty_KeyPress(KeyAscii As Integer) If InStr(1, TxtPartQty.Text, ".", vbTextCompare) And KeyAscii = Asc(".") Then KeyAscii = 0 Exit Sub End If If Not KeyAscii = vbKeyBack And Not IsNumeric(Chr(KeyAscii)) And Not Chr(KeyAscii) = "." Then KeyAscii = 0 End If End Sub
267
Formulario Mantenimiento preventivo.
Figura 31.– Formulario Mantenimiento preventivo
Este formulario despliega el menú principal de los módulos de programa del sistema
referentes al mantenimiento preventivo. De muestran seis opciones correspondientes a los
formularios que se ejecutan al seleccionar cada una de laas opciones. Estas opciones son las
siguientes: actividades de mantenimiento preventivo por fechas, actividades de mantenimiento
preventivo por medidores, instrucciones de actividades, horas de mano de obra, generar
ordenes de mantenimiento preventivo y cerrar el menú. A continuación se muestra el código de
programa de este formulario:
'************************ ' ' Menu Principal de MP ' '************************ Option Explicit Private Sub Command10_Click() On Error GoTo Err_Command10_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "MPListaChForm" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_Command10_Click: Exit Sub Err_Command10_Click:
268
MsgBox err.Description Resume Exit_Command10_Click End Sub Private Sub Command11_Click() On Error GoTo Err_Command11_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "MPListaProgramForm" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_Command11_Click: Exit Sub Err_Command11_Click: MsgBox err.Description Resume Exit_Command11_Click End Sub Private Sub Command12_Click() On Error GoTo Err_Command12_Click Dim stLinkCriteria As String DoCmd.OpenForm "MPGenForm", , , stLinkCriteria Exit_Command12_Click: Exit Sub Err_Command12_Click: MsgBox err.Description Resume Exit_Command12_Click End Sub Private Sub Command13_Click() On Error GoTo Err_Command13_Click DoCmd.Close acForm, Me.Name Exit_Command13_Click: Exit Sub Err_Command13_Click: MsgBox err.Description Resume Exit_Command13_Click End Sub Private Sub Command16_Click() On Error GoTo Err_Command16_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "MPListaMed" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_Command16_Click: Exit Sub Err_Command16_Click: MsgBox err.Description Resume Exit_Command16_Click End Sub Private Sub Command17_Click() On Error GoTo Err_Command17_Click Dim stLinkCriteria As String
269
DoCmd.OpenForm "MPHorasHombre", , , stLinkCriteria Exit_Command17_Click: Exit Sub Err_Command17_Click: MsgBox err.Description Resume Exit_Command17_Click End Sub Private Sub Form_Activate() DoCmd.Restore End Sub Private Sub Form_Deactivate() DoCmd.Minimize End Sub
Formulario Lista de tareas de MP por fecha
Figura 32. – Formulario Lista de tareas de MP por fecha
Este formulario muestra la lista de las actividades de mantenimiento preventivo que lleva
el sistema controladas por fecha. La lista muestra los campos “número de tarea”, “descripción
de la tarea”, “tarea en servicio”, “código de instrucción” y “número de ubicación”. Seleccionando
una tarea de la lista y haciéndo “doble click” sobre ésta se abrirá un formulario que muestra los
detalles de la actividad la información de todos sus campos asociados. El formulario permite
filtrar la información que se despliega seleccionando una de las casillas que aparecen en la
270
parte inferior de la lista, colocando la palabra o número a buscar en la casilla en blanco y
pulsando el botón “Buscar”. Las opciones de filtrado posible son: por “ID de equipo”, por
“Código de instrucción”, por “Número de tarea” y por “ descripción de tarea”. El botón “Ordenar
A->Z” permite ordenar la información de la lista de forma ascendente o descendente. El botón
“Nueva tarea” permite crear una nueva actividad y almacenarla en la base de datos del sistema.
El botón “Ver todo” permite desplegar nuevamente todos los datos de la lista cuando se ha
hecho una consulta previamente utilizando alguno de los filtros indicados anteriormente. El
botón “Cerrar” permite cerrar y salir del formulario. El código de programa de este formulario es
el siguiente:
'******************************* ' ' Lista de Programación de MP´s ' '******************************* Option Explicit Dim sel, Sortby As String Private Sub Command17_Click() Dim PMSList As String If Me.Select = 1 Then sel = "PMNo ='" & Me.Input & "'" ElseIf Me.Select = 2 Then sel = "PMName like '" & Me.Input & "*'" ElseIf Me.Select = 3 Then sel = "AssetNo like '" & Me.Input & "*'" ElseIf Me.Select = 4 Then sel = "ChecklistNo like '" & Me.Input & "*'" End If PMSList = "SELECT PMNo AS [No de tarea], PMName AS [Descripción de tarea], YesNo.Description AS [Tarea en servicio], ChecklistNo AS [Código de instrucción], AssetNo AS [No de equipo], PhyLocationNo AS [No de Ubicación], [TypePMGEN] as [Tipo MP] FROM PMSchedule INNER JOIN [YesNo] ON PMSchedule.PMActive = YesNo.Num " & _ "WHERE " & sel & " ;" Debug.Print PMSList Me.List.RowSource = PMSList Me.List.ColumnCount = 7 Me.List.ColumnHeads = True Me.List.ColumnWidths = "3 cm; 9 cm; 3 cm; 5 cm; 3 cm;3 cm; 0 cm" Call contarreg End Sub Private Sub Command18_Click() Call vertodo End Sub Private Sub Form_Activate() DoCmd.Restore Call contarreg Refresh
271
End Sub Private Sub Form_Deactivate() DoCmd.Minimize End Sub Private Sub Form_Open(Cancel As Integer) Call vertodo End Sub Private Sub Command3_Click() On Error GoTo Err_Command3_Click Dim stLinkCriteria As String DoCmd.OpenForm "MPProgSelec", , , stLinkCriteria Exit_Command3_Click: Exit Sub Err_Command3_Click: MsgBox err.Description Resume Exit_Command3_Click End Sub Private Sub List_DblClick(Cancel As Integer) If IsNull(Me.List.Column(0)) Then MsgBox "Seleccione un registro", vbInformation, "SICAM" Else If Me.List.Column(6) = "3" Then DoCmd.OpenForm "ActMPProgramEspecificForm", , , "[PMNo]=" & "'" & Me.List.Column(0) & "'" ElseIf Me.List.Column(6) = "4" Or Me.List.Column(6) = "5" Then DoCmd.OpenForm "ActMPProgramMensForm", , , "[PMNo]=" & "'" & Me.List.Column(0) & "'" Else DoCmd.OpenForm "ActMPProgramForm", , , "[PMNo]=" & "'" & Me.List.Column(0) & "'" End If End If End Sub Public Sub vertodo() Dim PMSList As String PMSList = "SELECT PMNo AS [No de tarea], PMName AS [Descripción de tarea], YesNo.Description AS [Tarea en servicio], ChecklistNo AS [Código de instrucción], AssetNo AS [No de equipo], PhyLocationNo AS [No de Ubicación], [TypePMGEN] as [Tipo MP] FROM PMSchedule INNER JOIN [YesNo] ON PMSchedule.PMActive = YesNo.Num " Me.List.RowSource = PMSList Me.List.ColumnCount = 7 Me.List.ColumnHeads = True Me.List.ColumnWidths = "3 cm; 9 cm; 3 cm; 5 cm; 3 cm; 3 cm; 0 cm" Call contarreg End Sub Private Sub Command19_Click()
272
On Error GoTo Err_Command19_Click DoCmd.Close acForm, Me.Name Exit_Command19_Click: Exit Sub Err_Command19_Click: MsgBox err.Description Resume Exit_Command19_Click End Sub Private Sub SortB1_Click() If Me.SortB1.Caption = "Ordenar A->Z" Then If Me.Select = 1 Then Sortby = "ORDER BY PMNo ASC" ElseIf Me.Select = 2 Then Sortby = "ORDER BY PMName ASC" ElseIf Me.Select = 3 Then Sortby = "ORDER BY AssetNo ASC" ElseIf Me.Select = 4 Then Sortby = "ORDER BY ChecklistNo ASC" End If Me.SortB1.Caption = "Ordenar Z->A" Else If Me.Select = 1 Then Sortby = "ORDER BY PMNo DESC" ElseIf Me.Select = 2 Then Sortby = "ORDER BY PMName DESC" ElseIf Me.Select = 3 Then Sortby = "ORDER BY AssetNo DESC" ElseIf Me.Select = 4 Then Sortby = "ORDER BY ChecklistNo DESC" End If Me.SortB1.Caption = "Ordenar A->Z" End If Call Sort End Sub Public Sub Sort() Dim PMSList As String PMSList = "SELECT PMNo AS [No de tarea], PMName AS [Descripción de tarea], YesNo.Description AS [Tarea en servicio], ChecklistNo AS [Código de instrucción], AssetNo AS [No de equipo], PhyLocationNo AS [No de Ubicación], [TypePMGEN] as [Tipo MP] FROM PMSchedule INNER JOIN [YesNo] ON PMSchedule.PMActive = YesNo.Num " & Sortby & ";" Me.List.RowSource = PMSList Me.List.ColumnCount = 7 Me.List.ColumnHeads = True Me.List.ColumnWidths = "3 cm; 9 cm; 3 cm; 5 cm; 3 cm; 3 cm;0 cm" Call contarreg End Sub Private Sub contarreg() Call CountRecord(Me.ListRec, List) End Sub
273
Formulario Tarea MP actual por fecha
Figura 33. – Formulario Tarea MP actual por fecha Este formulario muestra los campos de información referentes a la actividad de
mantenimiento preventivo (por fecha) que se ha seleccionado previamente. Los campos que se
muestran son los siguientes: “Número de tarea”, “Descripción de tarea”, “Tipo de OT”, “Area de
trabajo”, “Número de equipo”, “ID de ubicación”, “Código de instrucción”, “Unidad de frecuencia”,
“Frecuencia”, “Días”, “Duración de Tarea”, “Fecha de inicio”, “Fecha programada de inicio”,
“Fecha programada de Fin” y “Fecha próxima ejecución”. El botón “Ver programación” permite
desplegar una tabla que muestra la programación proyectada a futuro para la actividad
indicando la fecha de ejecución. El código de programa de este formulario es el siguiente:
'************************************* ' ' Registro actual del Programa de MP ' '************************************* Option Explicit Dim ty As Integer Dim dateval, assetnoval, phylocnoval As String Private Sub AssetNo_AfterUpdate() Set dbSICAM = CurrentDb()
274
Dim rsCheck As DAO.Recordset If IsNull(Me.AssetNo) Then MsgBox "Se requiere información en este campo.", vbCritical Me.AssetNo = assetnoval Me.AssetNo.SetFocus Exit Sub End If Set rsCheck = dbSICAM.OpenRecordset("SELECT PMNo,AssetNo From [PMSchedule] WHERE AssetNo = '" & Me.AssetNo & "'") If rsCheck.RecordCount <> 0 Then If MsgBox("Este Equipo tiene Tareas programadas, desea proceder?", vbYesNo + vbInformation, "SICAM") = vbNo Then Exit Sub End If End If rsCheck.Close Me.AssetDesc = Me.AssetNo.Column(1) Me.LocNo = Me.AssetNo.Column(2) Me.LocDesc = Me.AssetNo.Column(3) End Sub Private Sub Command101_Click() ' Salvar MP Múltiple en la Tabla Dim response If IsNull(Me.TaskNo) Or IsNull(Me.MSeq) Or Me.MSeq = 0 Or IsNull(Me.MTSdate) Or Me.MTSdate = "" Then MsgBox "Se requiere información en este campo para grabar el registro", vbInformation DoCmd.GoToControl "TaskNo" Else response = MsgBox("Desea grabar el registro?", vbYesNo + vbInformation + vbDefaultButton2, "Grabar") If response = vbYes Then Set dbSICAM = CurrentDb() Dim rswolb As DAO.Recordset Set rswolb = dbSICAM.OpenRecordset("MultiplePM") With rswolb .AddNew ![MPMNo] = Me.PMNo ![MTaskNo] = Me.TaskNo ![MSeq] = Me.MSeq ![MCount] = Me.MSeq ![MPMCounter] = 1 ![MStartDate] = Me.MTSdate ![MStartDateCount] = Me.MSDcount ![MDescription] = Me.MDesc If Me.biltaskno < Me.txtMseq Then ![MtaskSeq] = Me.txtMseq Else ![MtaskSeq] = Me.biltaskno End If .Update .Close End With Refresh Me.txtMseq = Me.txtMseq + 1 Me.TaskNo = Null Me.TaskDesc = Null Me.MSeq = 0 Me.MTSdate = Null Me.MSDcount = 0 Me.MDesc = Null Me.MultiplePMsubform.Requery Else
275
Me.TaskNo.SetFocus End If End If End Sub Private Sub Command115_Click() On Error GoTo Err_Command115_Click ' Para ver el Programa de MP en la lista de Proyecciones If IsNull(Me.PMName) Or Me.PMName = "" Or IsNull(Me.PMWOTrade) Or Me.PMWOTrade = "" Then MsgBox "Se requiere información en todos los campos para grabar el registro ", vbOKOnly + vbExclamation Me.PMName.SetFocus Exit Sub ElseIf Me.PMType = 1 And IsNull(Me.AssetNo) Or Me.AssetNo = "" Then MsgBox "Se requiere información en todos los campos para grabar el registro ", vbOKOnly + vbExclamation Me.AssetNo.SetFocus Exit Sub ElseIf Me.PMType = 2 And IsNull(Me.PhyLocNo) Or Me.PhyLocNo = "" Then MsgBox "Se requiere información en todos los campos para grabar el registro ", vbOKOnly + vbExclamation Me.PhyLocNo.SetFocus Exit Sub ElseIf IsNull(Me.PMChNo) Or Me.PMChNo = "" Or IsNull(Me.FU) Or Me.FU = "" Or IsNull(Me.Frequency) Or Me.Frequency = "" Or IsNull(Me.WorkPeriodDays) Or Me.WorkPeriodDays = "" Or IsNull(Me.TargetStartDate) Or Me.TargetStartDate = "" Then MsgBox "Se requiere información en todos los campos para grabar el registro ", vbOKOnly + vbExclamation Me.PMChNo.SetFocus Exit Sub End If If IsNull(Me.TaskNo) Or Me.TaskNo = "" Then MsgBox "Seleccione el # de Tarea para ver la Proyección ", vbOKOnly, "SICAM" Me.TaskNo.SetFocus ElseIf Me.MSeq = 0 Or IsNull(Me.MSeq) Or Me.MSeq = "" Then MsgBox "Verifique que la Secuencia de la Tarea no es nula o igual a 0", vbOKOnly, "SICAM" Me.MSeq.SetFocus ElseIf IsNull(Me.MTSdate) Or Me.MTSdate = "" Then MsgBox "Verifique que la fecha programada de inicio no sea nula y vuela a ingresar la secuencia de la Tarea. ", vbOKOnly, "SICAM" Me.MSeq.SetFocus Else Dim stLinkCriteria As String If Me.TypePMgen = 1 Then PMTSdate = Me.TargetStartDate Else If IsNull(Me.NextDateAct) Then PMTSdate = Me.TargetStartDate Else PMTSdate = Me.NextDateAct End If End If PMBilTSKNo = Me.biltaskno PMJbSeq = Me.MSeq PMmsdseq = Me.MSDcount PMFNo = Me.PMNo PMFDesc = Me.PMName PMFFreq = Me.FreqDays PMFTask = Me.PMChNo
276
PMNextTask = Me.TaskNo PMCounterNo = Me.PMCounter PMTypeGn = Me.TypePMgen ViewPMFore = 2 DoCmd.OpenForm "MPListaProyecc", , , stLinkCriteria End If Exit_Command115_Click: Exit Sub Err_Command115_Click: MsgBox err.Description Resume Exit_Command115_Click End Sub Private Sub Command129_Click() ' Para ver el Programa de MP en la lista de proyecciones If IsNull(Me.PMName) Or Me.PMName = "" Or IsNull(Me.PMWOTrade) Or Me.PMWOTrade = "" Then MsgBox "Se requiere información en todos los campos para grabar el registro ", vbOKOnly + vbExclamation Me.PMName.SetFocus Exit Sub ElseIf Me.PMType = 1 And IsNull(Me.AssetNo) Or Me.AssetNo = "" Then MsgBox "Se requiere información en todos los campos para grabar el registro ", vbOKOnly + vbExclamation Me.AssetNo.SetFocus Exit Sub ElseIf Me.PMType = 2 And IsNull(Me.PhyLocNo) Or Me.PhyLocNo = "" Then MsgBox "Se requiere información en todos los campos para grabar el registro ", vbOKOnly + vbExclamation Me.PhyLocNo.SetFocus Exit Sub ElseIf IsNull(Me.PMChNo) Or Me.PMChNo = "" Or IsNull(Me.FU) Or Me.FU = "" Or IsNull(Me.Frequency) Or Me.Frequency = "" Or IsNull(Me.WorkPeriodDays) Or Me.WorkPeriodDays = "" Or IsNull(Me.TargetStartDate) Or Me.TargetStartDate = "" Then MsgBox "Se requiere información en todos los campos para grabar el registro ", vbOKOnly + vbExclamation Me.PMChNo.SetFocus Exit Sub End If Dim stLinkCriteria As String If Me.TypePMgen = 1 Then PMTSdate = Me.TargetStartDate Else If IsNull(Me.NextDateAct) Then PMTSdate = Me.TargetStartDate Else PMTSdate = Me.NextDateAct End If End If PMBilTSKNo = Me.biltaskno PMJbSeq = Me.MSeq PMmsdseq = Me.MSDcount PMFNo = Me.PMNo PMFDesc = Me.PMName PMFFreq = Me.FreqDays PMFTask = Me.PMChNo PMNextTask = Me.TaskNo
277
PMCounterNo = Me.PMCounter PMTypeGn = Me.TypePMgen ViewPMFore = 1 DoCmd.OpenForm "MPListaProyecc", , , stLinkCriteria End Sub Private Sub Command130_Click() If IsNull(Me.TargetStartDate) Then dateval = CDate(Format(ServerdateQuery(), "short date")) Else dateval = Me.TargetStartDate End If Me.calCtl1.Visible = True Me.calCtl1.Value = Date ty = 1 End Sub Private Sub Command131_Click() dateval = Me.NextDateAct Me.calCtl1.Visible = True Me.calCtl1.Value = Date ty = 2 End Sub Private Sub Detail_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Error GoTo ErrorHandler If Me.calCtl1.Visible = True Then Me.calCtl1.Visible = False ErrorHandler: If err.Number <> 0 Then Me.TargetStartDate.SetFocus If Me.calCtl1.Visible = True Then Me.calCtl1.Visible = False End If End Sub Private Sub Form_Activate() Me.biltaskno = PMBilTSKNo Me.MSDcount = PMmsdseq Me.MTSdate = PMMTSdate End Sub Private Sub Form_Close() ' Salvar la nueva fecha de inicio objetivo, fecha de fin objetivo y próxima fecha Set dbSICAM = CurrentDb() Dim rspmsh As DAO.Recordset Set rspmsh = dbSICAM.OpenRecordset("PMSchedule") Do While Not rspmsh.EOF If rspmsh![PMNo] = Me.PMNo Then rspmsh.Edit rspmsh![TargetCompDate] = Me.TarCompDate If Me.TypePMgen = 1 Then rspmsh![NextDate] = Me.NextDate Else rspmsh![NextDate] = Me.NextDateAct End If rspmsh.Update End If rspmsh.MoveNext Loop rspmsh.Close
278
End Sub Private Sub Form_Open(Cancel As Integer) PMForm = "2" PMBilTSKNo = 2 PMmsdseq = 0 PMMTSdate = "" Me.TypePMgen.Locked = True If Me.PMActive.Value = 0 Then LockAllFields True Me.AssetDesc = Me.AssetNo.Column(1) Me.LocNo = Me.AssetNo.Column(2) Me.LocDesc = Me.AssetNo.Column(3) Me.PhyLocDesc = Me.PhyLocNo.Column(1) Me.PMChListName = Me.PMChNo.Column(1) If Me.FreqUnits = 1 Then Me.FU = "Dias" ElseIf Me.FreqUnits = 7 Then Me.FU = "Semanas" ElseIf Me.FreqUnits = 28 Then Me.FU = "Meses" ElseIf Me.FreqUnits = 365 Then Me.FU = "Años" End If Me.FreqDays = Me.FU.Column(1) * Me.Frequency If Me.PMType = 1 Then assetnoval = Me.AssetNo Me.AssetNo.Enabled = True Me.AssetDesc.Enabled = True Me.LocNo.Enabled = True Me.LocDesc.Enabled = True Me.AssetDesc.Locked = True Me.LocNo.Locked = True Me.LocDesc.Locked = True Me.PhyLocNo.Enabled = False Me.PhyLocDesc.Enabled = False Me.PhyLocDesc.Locked = False Else phylocnoval = Me.PhyLocNo Me.PhyLocNo.Enabled = True Me.PhyLocDesc.Enabled = True Me.AssetNo.Enabled = False Me.AssetDesc.Enabled = False Me.AssetDesc.Locked = False Me.LocNo.Locked = False Me.LocDesc.Locked = False Me.LocNo.Enabled = False Me.LocDesc.Enabled = False Me.PhyLocDesc.Locked = True End If If Me.PMMultiple = True Then Me.MultiTask.Enabled = True Else Me.MultiTask.Enabled = False End If If Me.TypePMgen = 1 Then Me.NextDateAct.Visible = False Me.ActualCompDate.Visible = False Me.TarCompDate = Me.TargetStartDate + Me.WorkPeriodDays - 1
279
Me.NextDate = Me.TargetStartDate + Me.FreqDays Me.Command131.Visible = False Else Me.Command130.Enabled = False Me.TargetStartDate.Locked = True Me.NextDate.Visible = False Me.TarCompDate = Me.TargetStartDate + Me.WorkPeriodDays - 1 If IsNull(Me.TargetStartDate) Or IsNull(Me.ActualCompDate) Then Me.NextDate.Locked = True Me.Command131.Enabled = False End If End If Dim rsCal As DAO.Recordset If Me.TypePMgen = 2 Then Set rsCal = CurrentDb.OpenRecordset("Select PMNO from WorkOrders where PMNo='" & Me.PMNo.Value & "'") If rsCal.RecordCount = 0 Then Me.Command130.Enabled = True Else Me.Command130.Enabled = False End If rsCal.Close End If End Sub Private Sub Frequency_AfterUpdate() If Me.Frequency <= 0 Then Me.Frequency = 1 End If Me.FreqDays = Me.FU.Column(1) * Me.Frequency If Me.TypePMgen = 1 Then Me.NextDate = Me.TargetStartDate + Me.FreqDays End If End Sub Private Sub Frequency_KeyPress(KeyAscii As Integer) If Not KeyAscii = vbKeyBack And Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0 End If End Sub Private Sub FU_AfterUpdate() Me.FreqDays = Me.FU.Column(1) * Me.Frequency Me.FreqUnits = Me.FU.Column(1) If Me.TypePMgen = 1 Then Me.NextDate = Me.TargetStartDate + Me.FreqDays End If End Sub Private Sub MSeq_AfterUpdate() If IsNull(Me.TargetStartDate) Or IsNull(Me.FreqDays) Then MsgBox "La Programación de las Tareas no puede ser realizada sin la Fecha de Inicio.", vbOKOnly, "SICAM" Exit Sub End If If Me.TypePMgen = 1 Then Me.MTSdate = (Me.FreqDays * (Me.MSeq - 1)) + Me.TargetStartDate Else If IsNull(Me.NextDateAct) Then Me.MTSdate = (Me.FreqDays * (Me.MSeq - 1)) + Me.TargetStartDate
280
Else Me.MTSdate = (Me.FreqDays * (Me.MSeq - 1)) + Me.NextDateAct End If End If PMMTSdate = Me.MTSdate If Me.PMCounter = 1 Then Me.MSDcount = Me.MSeq Else Me.MSDcount = Me.PMCounter + (Me.MSeq - 1) End If End Sub Private Sub MSeq_LostFocus() Dim Seq As Integer If Me.MSeq.Locked = True Then Exit Sub If Me.MSeq.Value = "" Or IsNull(Me.MSeq) Then Me.MSeq = 0 Exit Sub End If Set dbSICAM = CurrentDb() Dim rsseq As DAO.Recordset Set rsseq = dbSICAM.OpenRecordset("Select MAX(MSeq) from MultiplePM where MPMNo='" & Me.Text108.Value & "'") If Not IsNull(rsseq(0)) Then Seq = rsseq(0) Else Seq = 0 End If rsseq.Close Set rsseq = Nothing If Not IsNull(Seq) Then If Int(Seq) >= Int(Me.MSeq.Value) Then MsgBox "Secuencia de Tareas no valida, debe ser mas larga que la última secuencia.", vbOKOnly, "SICAM" Me.MSeq = 0 Exit Sub End If End If End Sub Private Sub NextDateAct_AfterUpdate() 'Verificar que la fecha de inicio objetivo del MP no este por debajo de la fecha actual de generación Call verifydate End Sub Private Sub PhyLocNo_AfterUpdate() Set dbSICAM = CurrentDb() Dim rsCheck As DAO.Recordset If IsNull(Me.PhyLocNo) Then MsgBox "Se requiere información en este campo.", vbCritical Me.PhyLocNo = phylocnoval Me.PhyLocNo.SetFocus Exit Sub End If Set rsCheck = dbSICAM.OpenRecordset("SELECT PMNo,PhyLocationNo From [PMSchedule] WHERE PhyLocationNo = '" & Me.PhyLocNo & "'") If rsCheck.RecordCount <> 0 Then If MsgBox("Esta Ubicación ya tiene una tarea preventiva, Desea continuar?", vbYesNo + vbInformation, "SICAM") = vbNo Then Exit Sub
281
End If End If rsCheck.Close Me.PhyLocDesc = Me.PhyLocNo.Column(1) End Sub Private Sub PMActive_Click() If PMActive.Value = 0 Then DoCmd.GoToControl "page39" LockAllFields True Else DoCmd.GoToControl "page39" LockAllFields False End If End Sub Private Sub LockAllFields(Opt As Boolean) If Opt = True Then PMName.Locked = True PMWOTrade.Locked = True Check56.Locked = True Check58.Locked = True AssetNo.Locked = True LocNo.Locked = True PhyLocNo.Locked = True Check71.Locked = True Check73.Locked = True PMMultiple.Locked = True PMChNo.Locked = True FU.Locked = True Frequency.Locked = True WorkPeriodDays.Locked = True Command129.Enabled = False Command130.Enabled = False Command131.Enabled = False Command115.Enabled = False Command101.Enabled = False Else PMName.Locked = False PMWOTrade.Locked = False Check56.Locked = False Check58.Locked = False AssetNo.Locked = False LocNo.Locked = False PhyLocNo.Locked = False Check71.Locked = False Check73.Locked = False PMMultiple.Locked = False PMChNo.Locked = False FU.Locked = False Frequency.Locked = False WorkPeriodDays.Locked = False Command129.Enabled = True Command130.Enabled = True Command131.Enabled = True Command115.Enabled = True Command101.Enabled = True End If End Sub Private Sub PMChNo_AfterUpdate()
282
Me.PMChListName = Me.PMChNo.Column(1) End Sub Private Sub Command32_Click() On Error GoTo Err_Command32_Click If IsNull(Me.PMName) Or Me.PMName = "" Or IsNull(Me.PMWOTrade) Or Me.PMWOTrade = "" Then MsgBox "Se requiere información en todos los campos para grabar el registro ", vbOKOnly + vbExclamation Me.PMName.SetFocus Exit Sub ElseIf Me.PMType = 1 And IsNull(Me.AssetNo) And Me.AssetNo = "" Then MsgBox "Se requiere información en todos los campos para grabar el registro ", vbOKOnly + vbExclamation Me.AssetNo.SetFocus Exit Sub ElseIf Me.PMType = 2 And IsNull(Me.PhyLocNo) And Me.PhyLocNo = "" Then MsgBox "Se requiere información en todos los campos para grabar el registro ", vbOKOnly + vbExclamation Me.PhyLocNo.SetFocus Exit Sub ElseIf IsNull(Me.PMChNo) Or IsNull(Me.FU) Or Me.FU = "" Or IsNull(Me.Frequency) Or Me.Frequency = "" Or IsNull(Me.WorkPeriodDays) Or Me.WorkPeriodDays = "" Or IsNull(Me.TargetStartDate) Or Me.TargetStartDate = "" Then MsgBox "Se requiere información en todos los campos para grabar el registro ", vbOKOnly + vbExclamation Me.PMChNo.SetFocus Exit Sub End If Dim temp As Boolean If PMActive.Value = -1 Then temp = verifydate Else temp = True End If If temp = True Then If Me.Dirty Then If MsgBox("Desea grabar el registro?", vbInformation + vbYesNo, "Grabar") = vbNo Then DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70 End If End If DoCmd.Close acForm, Me.Name End If Exit_Command32_Click: Exit Sub Err_Command32_Click: MsgBox err.Description Resume Exit_Command32_Click End Sub Private Sub PMMultiple_AfterUpdate() If Me.PMMultiple = True Then Me.MultiTask.Enabled = True Else Me.MultiTask.Enabled = False End If End Sub
283
Private Sub PMNo_AfterUpdate() Dim rspm As DAO.Recordset Set dbSICAM = CurrentDb() Set rspm = dbSICAM.OpenRecordset("PMSchedule") Do While Not rspm.EOF If UCase(rspm!PMNo) = UCase(Me.PMNo) Then MsgBox "Tarea ya existe", vbInformation Me.PMNo = Null DoCmd.GoToControl "PMNo" End If rspm.MoveNext Loop rspm.Close End Sub Private Sub PMType_AfterUpdate() If Me.PMType = 1 Then Me.AssetNo.Enabled = True Me.AssetDesc.Enabled = True Me.LocNo.Enabled = True Me.LocDesc.Enabled = True Me.AssetDesc.Locked = True Me.LocNo.Locked = True Me.LocDesc.Locked = True Me.PhyLocNo.Enabled = False Me.PhyLocDesc.Enabled = False Me.PhyLocDesc.Locked = False Me.PhyLocNo = Null Me.PhyLocDesc = Null Else Me.PhyLocNo.Enabled = True Me.PhyLocDesc.Enabled = True Me.AssetNo.Enabled = False Me.AssetDesc.Enabled = False Me.AssetDesc.Locked = False Me.LocNo.Locked = False Me.LocDesc.Locked = False Me.LocNo.Enabled = False Me.LocDesc.Enabled = False Me.PhyLocDesc.Locked = True Me.AssetNo = Null Me.AssetDesc = Null Me.LocNo = Null Me.LocDesc = Null End If End Sub Private Sub TargetStartDate_AfterUpdate() 'Verificar que la fecha de inicio objetivo del MP no este por debajo de la fecha actual de generación Call verifydate Me.TarCompDate = Me.TargetStartDate + Me.WorkPeriodDays - 1 Me.NextDate = [TargetStartDate] + [FreqDays] End Sub Private Sub TaskNo_AfterUpdate() Me.TaskDesc = Me.TaskNo.Column(1) End Sub
284
Private Sub WorkPeriodDays_AfterUpdate() If Me.WorkPeriodDays > Me.FreqDays Then MsgBox "El periodo de Trabajo no puede ser mayor que la Frecuencia", vbInformation Me.WorkPeriodDays.SetFocus Else Me.TarCompDate = Me.TargetStartDate + Me.WorkPeriodDays - 1 End If End Sub Private Sub calCtl1_Click() If ty = 1 Then Me.TargetStartDate = Me.calCtl1.Value Me.TargetStartDate.SetFocus Call verifydate Me.TarCompDate = Me.TargetStartDate + Me.WorkPeriodDays - 1 Me.NextDate = [TargetStartDate] + [FreqDays] Else Me.NextDateAct = Me.calCtl1.Value Me.NextDateAct.SetFocus Call verifydate End If Me.calCtl1.Visible = False End Sub Function verifydate() As Boolean Set dbSICAM = CurrentDb() Dim rsPMGenDate As DAO.Recordset Set rsPMGenDate = dbSICAM.OpenRecordset("SELECT * From PMGenDates") If rsPMGenDate.RecordCount <> 0 Then rsPMGenDate.MoveLast 'Fecha actual de Fin del MP If Me.TypePMgen = 1 Then 'Tipo de MP = Programado If rsPMGenDate![ToDate] >= Me.TargetStartDate Then MsgBox "La Fecha programada de Inicio de las Tareas es menor al rango (" & rsPMGenDate![ToDate] & ")", vbInformation Me.TargetStartDate = Null Me.TargetStartDate.SetFocus verifydate = False Exit Function End If 'ElseIf Me.TypePMgen = 2 Then ' If rsPMGenDate![ToDate] >= Me.NextDateAct Then ' MsgBox "Su próxima fecha de realización de las tareas es menor al rango seleccionado de generación", vbInformation ' Me.NextDateAct = Null ' Me.NextDateAct.SetFocus ' verifydate = False ' Exit Function ' End If End If End If rsPMGenDate.Close verifydate = True End Function Private Sub WorkPeriodDays_KeyPress(KeyAscii As Integer) If Not KeyAscii = vbKeyBack And Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0 End If End Sub
285
Formulario Lista de Tareas MP (Medidores).
Figura 34 – Formulario Lista de Tareas - Medidores Este formulario muestra el listado de las actividades de mantenimiento preventivo del
sistema que se ejecutan según la lectura de un medidor determinado. La lista muestra los
campos “Número de medidor”, “Descripción del medidor”, “Número de equipo”, “Descripción del
equipo”, “Número de ubicación”, “Descripción de ubicación” y “Tarea en servicio”.
Seleccionando una tarea de la lista y haciéndo “doble click” sobre ésta se abrirá un formulario
que muestra los detalles de la actividad la información de todos sus campos asociados. El
formulario permite filtrar la información que se despliega seleccionando una de las casillas que
aparecen en la parte inferior de la lista, colocando la palabra o número a buscar en la casilla en
blanco y pulsando el botón “Buscar”. Las opciones de filtrado posible son: por “Número de
medidor”, por “Descripción de medidor”, por “ID de equipo” ,“Descripción de equipo”, por “ID de
ubicación” y por “Descripción de ubicación”. El botón “Ordenar A->Z” permite ordenar la
información de la lista de forma ascendente o descendente. El botón “Nueva tarea” permite
crear una nueva actividad y almacenarla en la base de datos del sistema. El botón “Ver todo”
permite desplegar nuevamente todos los datos de la lista cuando se ha hecho una consulta
previamente utilizando alguno de los filtros indicados anteriormente. El botón “Lectura” permite
abrir un formulario que muestra los valores de los medidores del sistema con todos los detalles
referentes a los mismos. El botón “Cerrar” permite cerrar y salir del formulario. El código de
programa de este formulario es el siguiente:
286
Option Explicit Dim sel, Sortby As String Private Sub Command22_Click() Dim WOlist As String If Me.Select = 1 Then sel = "Meterno ='" & Me.Input & "'" ElseIf Me.Select = 2 Then sel = "MeterDescription like '" & Me.Input & "*'" ElseIf Me.Select = 3 Then sel = "Assets.AssetNumber Like '" & Me.Input & "*'" ElseIf Me.Select = 4 Then sel = "Assets.AssetDescription like '" & Me.Input & "*'" ElseIf Me.Select = 5 Then sel = "Location.LocationNo like '" & Me.Input & "*'" ElseIf Me.Select = 6 Then sel = "Location.LocationDescription like '" & Me.Input & "*'" End If WOlist = "SELECT PMMeters.MeterNo as [No de medidor], PMMeters.MeterDescription as [Descripción de medidor], " & _ "Assets.AssetNumber as [No de equipo], Assets.AssetDescription as [Descripción de equipo], " & _ "Location.LocationNo as [No de Ubicación ], Location.LocationDescription as [Descripción de Ubicación], yesno.Description as [Tarea en servicio] " & _ "FROM ((PMMeters LEFT JOIN Assets ON PMMeters.AssetNo = Assets.AssetNumber) LEFT JOIN Location ON Assets.LocationNo = Location.LocationNo) " & _ "INNER JOIN [yesno] ON pmmeters.PMActive = yesno.Num WHERE " & sel & " ;" Me.List.RowSource = WOlist Me.List.ColumnCount = 7 Me.List.ColumnHeads = True Me.List.ColumnWidths = "3 cm; 5 cm; 3 cm; 5 cm; 3 cm; 5 cm; 3 cm" Call contarreg End Sub Private Sub Command23_Click() Call vertodo End Sub Private Sub Command25_Click() DoCmd.Close acForm, Me.Name End Sub Private Sub Command38_Click() Dim stLinkCriteria As String DoCmd.OpenForm "MPMedidNuevoForm", , , stLinkCriteria End Sub Private Sub Form_Activate() DoCmd.Restore Call contarreg Refresh
287
End Sub Private Sub Form_Deactivate() DoCmd.Minimize End Sub Private Sub Form_Open(Cancel As Integer) DoCmd.Restore Call vertodo End Sub Public Sub vertodo() Dim WOlist As String WOlist = "SELECT PMMeters.MeterNo as [No de medidor], PMMeters.MeterDescription as [Descripción de medidor], " & _ "Assets.AssetNumber as [No de equipo], Assets.AssetDescription as [Descripción de equipo], " & _ "Location.LocationNo as [No de Ubicación ], Location.LocationDescription as [Descripción de Ubicación], yesno.Description as [Tarea en servicio] " & _ "FROM ((PMMeters LEFT JOIN Assets ON PMMeters.AssetNo = Assets.AssetNumber) LEFT JOIN Location ON Assets.LocationNo = Location.LocationNo) " & _ "INNER JOIN [yesno] ON pmmeters.PMActive = yesno.Num;" Me.List.RowSource = WOlist Me.List.ColumnCount = 7 Me.List.ColumnHeads = True Me.List.ColumnWidths = "3 cm; 5 cm; 3 cm; 5 cm; 3 cm; 5 cm; 3 cm" Call contarreg End Sub Private Sub Command24_Click() On Error GoTo Err_Command24_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "NewMeters" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_Command24_Click: Exit Sub Err_Command24_Click: MsgBox err.Description Resume Exit_Command24_Click End Sub Private Sub List_DblClick(Cancel As Integer) DoCmd.OpenForm "ActMPMedForm", , , "[MeterNo]=" & "'" & Me.List.Column(0) & "'" End Sub Private Sub SortB1_Click() If Me.SortB1.Caption = "Ordenar A->Z" Then If Me.Select = 1 Then Sortby = "ORDER BY PMMeters.MeterNo ASC" ElseIf Me.Select = 2 Then Sortby = "ORDER BY PMMeters.MeterDescription ASC"
288
ElseIf Me.Select = 3 Then Sortby = "ORDER BY Assets.AssetNumber ASC" ElseIf Me.Select = 4 Then Sortby = "ORDER BY Assets.AssetDescription ASC" ElseIf Me.Select = 5 Then Sortby = "ORDER BY Location.LocationNo ASC" ElseIf Me.Select = 6 Then Sortby = "ORDER BY Location.LocationDescription ASC" End If Me.SortB1.Caption = "Ordenar Z->A" Else If Me.Select = 1 Then Sortby = "ORDER BY PMMeters.MeterNo DESC" ElseIf Me.Select = 2 Then Sortby = "ORDER BY PMMeters.MeterDescription DESC" ElseIf Me.Select = 3 Then Sortby = "ORDER BY Assets.AssetNumber DESC" ElseIf Me.Select = 4 Then Sortby = "ORDER BY Assets.AssetDescription DESC" ElseIf Me.Select = 5 Then Sortby = "ORDER BY Location.LocationNo DESC" ElseIf Me.Select = 6 Then Sortby = "ORDER BY Location.LocationDescription DESC" End If Me.SortB1.Caption = "Ordenar A->Z" End If Call Sort End Sub Public Sub Sort() Dim WOlist As String WOlist = "SELECT PMMeters.MeterNo as [No de medidor], PMMeters.MeterDescription as [Descripción de medidor], " & _ "Assets.AssetNumber as [No de equipo], Assets.AssetDescription as [Descripción de equipo], " & _ "Location.LocationNo as [No de Ubicación ], Location.LocationDescription as [Descripción de Ubicación], yesno.Description as [Tarea en servicio] " & _ "FROM ((PMMeters LEFT JOIN Assets ON PMMeters.AssetNo = Assets.AssetNumber) LEFT JOIN Location ON Assets.LocationNo = Location.LocationNo) " & _ "INNER JOIN [yesno] ON pmmeters.PMActive = yesno.Num " + Sortby & ";" Me.List.RowSource = WOlist Me.List.ColumnCount = 7 Me.List.ColumnHeads = True Me.List.ColumnWidths = "3 cm; 5 cm; 3 cm; 5 cm; 3 cm; 5 cm; 3 cm" Call contarreg End Sub Private Sub Command26_Click() On Error GoTo Err_Command26_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "MPLecturasMed" DoCmd.OpenForm stDocName, , , stLinkCriteria
289
Exit_Command26_Click: Exit Sub Err_Command26_Click: MsgBox err.Description Resume Exit_Command26_Click End Sub Private Sub contarreg() Call CountRecord(Me.ListRec, List) End Sub
Formulario Tarea MP por medidor actual. Figura 35. – Formulario Tarea MP por medidor actual.
Este formulario muestra los campos de información referentes a la actividad de
mantenimiento preventivo (por medidores) que se ha seleccionado previamente. Los campos
que se muestran son los siguientes: “Número de medidor”, “Descripción de medidor”, “Número
de equipo”, ”Número de ubicación”, “Area de trabajo”, “Unidades de medidor”, efectuar cada” y
“Próximo MP en:” El código de programa de este formulario es el siguiente:
Option Explicit 'Medidor Actual (MP)
290
Dim AssetVal, PMWOTradeVal, lowtaskVal, upptaskVal, IncPMTaskVal As String Dim lowlimVal, upplimVal, IncFreqVal, IncPMDueVal As Double Private Sub AssetNo_AfterUpdate() Set dbSICAM = CurrentDb() Dim rsCheck As DAO.Recordset If IsNull(Me.AssetNo) Then MsgBox "Fecha requerida en este campo.", vbCritical Me.AssetNo = AssetVal Me.AssetNo.SetFocus Exit Sub End If Set rsCheck = dbSICAM.OpenRecordset("SELECT PMNo,AssetNo From [PMSchedule] WHERE AssetNo = '" & Me.AssetNo & "'") If rsCheck.RecordCount <> 0 Then If MsgBox("Este Equipo tiene Tareas programadas, desea proceder?", vbYesNo + vbInformation, "SICAM") = vbNo Then Exit Sub End If End If rsCheck.Close End Sub Private Sub calCtl1_Click() If Me.calCtl1.Value < ServerdateQuery() Then MsgBox "Indique una fecha mayor a la fecha actual", vbInformation Exit Sub End If Me.TarStartDate = Me.calCtl1.Value Me.TarStartDate.SetFocus Me.calCtl1.Visible = False TarStartDate_AfterUpdate End Sub Private Sub Command403_Click() Me.calCtl1.Visible = True Me.calCtl1.Value = Format(CDate(Date), "Short Date") End Sub Private Sub Form_Open(Cancel As Integer) AssetVal = Me.AssetNo PMWOTradeVal = Me.PMWOTrade.Column(0) Me.MeterType.Locked = True If Me.MeterType = 1 Then lowlimVal = Me.Lowerlimit lowtaskVal = Me.PMLowTaskNo upplimVal = Me.UpperLimit upptaskVal = Me.PMUppTaskNo Me.Lowerlimit.Enabled = True Me.UpperLimit.Enabled = True Me.PMLowTaskNo.Enabled = True Me.PMLowTaskDesc.Enabled = True Me.PMLowTaskDesc.Locked = True Me.PMUppTaskNo.Enabled = True Me.PMUppTaskDesc.Enabled = True Me.PMUppTaskDesc.Locked = True
291
Me.StartMeterReading.Enabled = False Me.IncFreq.Enabled = False Me.LastPMreading.Enabled = False Me.IncPMDue.Enabled = False Me.PMIncTaskNo.Enabled = False Me.PMIncTaskDesc.Enabled = False Me.Time.Visible = False Else Me.Time.Visible = True IncFreqVal = Me.IncFreq IncPMDueVal = Me.IncPMDue IncPMTaskVal = IIf(IsNull(Me.PMIncTaskNo), "", Me.PMIncTaskNo) Me.StartMeterReading.Enabled = False Me.IncFreq.Enabled = True Me.LastPMreading.Enabled = False Me.IncPMDue.Enabled = True Me.PMIncTaskNo.Enabled = True Me.PMIncTaskDesc.Enabled = True Me.PMIncTaskDesc.Locked = True Me.Lowerlimit.Enabled = False Me.UpperLimit.Enabled = False Me.PMLowTaskNo.Enabled = False Me.PMLowTaskDesc.Enabled = False Me.PMUppTaskNo.Enabled = False Me.PMUppTaskDesc.Enabled = False End If If Me.FreqUnits = 1 Then Me.FU = "Dias" ElseIf Me.FreqUnits = 7 Then Me.FU = "Semanas" ElseIf Me.FreqUnits = 28 Then Me.FU = "Meses" ElseIf Me.FreqUnits = 365 Then Me.FU = "Años" End If Me.FreqDays = Me.FU.Column(1) * Me.Frequency If Me.MeterType = 1 Then Me.TimeBased.Enabled = False Else If Me.TimeBased = -1 Then Me.Time.Enabled = True End If End If End Sub Private Sub Command37_Click() On Error GoTo Err_Command37_Click If Me.Dirty Then If IsNull(Me.MeterNo) Or Trim(Me.MeterNo) = "" Then MsgBox " Indique el nombre del Medidor.", vbExclamation DoCmd.GoToControl "MeterNo" Exit Sub End If If IsNull(Me.MeterDesc) Or Trim(Me.MeterDesc) = "" Then MsgBox " Indique la Descripción del Medidor.", vbExclamation DoCmd.GoToControl "MeterDesc" Exit Sub
292
End If If IsNull(Me.AssetNo) Or Trim(Me.AssetNo.Value) = "" Then MsgBox "Indique el ID del Equipo.", vbExclamation DoCmd.GoToControl "AssetNo" Exit Sub End If If IsNull(Me.MeterType) Then MsgBox "Seleccione el Tipo de Medidor antes de grabar.", vbExclamation DoCmd.GoToControl "metertype" Exit Sub End If If Me.MeterType.Value = 1 And Me.UpperLimit < Me.Lowerlimit Then MsgBox " Limites superiores inferiores al nivel mas bajo . Favor reingrese los valores", vbExclamation DoCmd.GoToControl "UpperLimit" Exit Sub End If If Me.MeterType.Value = 1 And Me.UpperLimit = Me.Lowerlimit Then MsgBox " Limite Max. no puede ser igual o menor que Limite Min. Introduzca datos válidos.", vbExclamation DoCmd.GoToControl "UpperLimit" Exit Sub End If If Me.MeterType = 1 And (Trim(Me.Lowerlimit.Value) = "" Or IsNull(Me.Lowerlimit) Or Trim(Me.PMLowTaskNo) = "" Or IsNull(Me.PMLowTaskNo)) Then MsgBox "Se requieren datos en todos los campos.", vbExclamation DoCmd.GoToControl "lowerlimit" Exit Sub End If If Me.MeterType = 1 And (Trim(Me.UpperLimit.Value) = "" Or IsNull(Me.UpperLimit) Or Trim(Me.PMUppTaskNo) = "" Or IsNull(Me.PMUppTaskNo)) Then MsgBox "Se requieren datos en todos los campos.", vbExclamation UpperLimit.SetFocus Exit Sub End If If Me.MeterType = 2 And (Me.IncFreq = 0 Or Trim(Me.IncFreq.Value) = "" Or IsNull(Me.IncFreq.Value) Or Trim(Me.PMIncTaskNo) = "") Then MsgBox "Se requieren datos en todos los campos.", vbExclamation DoCmd.GoToControl "incfreq" Exit Sub End If If Me.TimeBased.Value = -1 Then If IsNull(Me.FU) Or Me.FU = "" Then MsgBox "Indique la unidad de frecuencia", vbInformation Me.FU.SetFocus Exit Sub End If If IsNull(Me.Frequency) Or Me.Frequency = "" Then MsgBox "Indique la frecuencia", vbInformation Me.Frequency.SetFocus Exit Sub End If
293
If IsNull(WorkPeriodDays) Or Me.WorkPeriodDays = "" Then MsgBox "Indique los días del período del trabajo ", vbInformation Me.WorkPeriodDays.SetFocus Exit Sub End If 'If IsNull(StartDate) Or StartDate = "" Then ' ' MsgBox "Introduzca la fecha de inicio", vbInformation ' ' Me.StartDate.SetFocus ' ' Exit Sub 'End If If IsNull(TarStartDate) Or TarStartDate = "" Then MsgBox "Indique le Fecha de inicio", vbInformation Me.TarStartDate.SetFocus Exit Sub End If If IsNull(TarCompDate) Or TarCompDate = "" Then MsgBox "Indique le Fecha de Fin", vbInformation Me.TarCompDate.SetFocus Exit Sub End If If IsNull(NextDate) Or NextDate = "" Then MsgBox "Indique la fecha próxima", vbInformation Me.NextDate.SetFocus Exit Sub End If If Me.TarStartDate.Value < ServerdateQuery() Then MsgBox "La Fecha de Inicio debe ser mayor que la Fecha actual", vbInformation Me.TarStartDate.SetFocus Exit Sub End If End If If MsgBox("Desea grabar el registro ?", vbInformation + vbYesNo, "Grabar") = vbNo Then DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70 End If End If DoCmd.Close acForm, Me.Name Exit_Command37_Click: Exit Sub Err_Command37_Click: MsgBox err.Description Resume Exit_Command37_Click End Sub Private Sub Frequency_AfterUpdate() Me.FreqDays = Me.FU.Column(1) * Me.Frequency If Trim(TarStartDate) <> "" Or Not IsNull(TarStartDate) Then ' If IsNull(Me.StartDate) Then ' Me.TarStartDate = Me.TarStartDate + [FreqDays] ' Else ' Me.TarStartDate = [StartDate] + [FreqDays] ' End If ' Me.TarCompDate = [TarStartDate] + [WorkPeriodDays] - 1 Me.NextDate = [TarCompDate] + [FreqDays]
294
End If End Sub Private Sub FU_AfterUpdate() Me.FreqDays = Me.FU.Column(1) * Me.Frequency Me.FreqUnits = Me.FU.Column(1) If Trim(TarStartDate) <> "" Or Not IsNull(TarStartDate) Then ' If IsNull(Me.StartDate) Then ' Me.TarStartDate = Me.TarStartDate + [FreqDays] ' Else ' Me.TarStartDate = [StartDate] + [FreqDays] ' End If 'Me.TarCompDate = [TarStartDate] + [WorkPeriodDays] - 1 Me.NextDate = [TarCompDate] + [FreqDays] End If End Sub Private Sub IncFreq_AfterUpdate() If IsNull(Me.IncFreq) Or Me.IncFreq <= 0 Then MsgBox "El valor no puede ser nulo o menor a 0.", vbCritical Me.IncFreq = IncFreqVal Me.IncFreq.SetFocus Exit Sub End If End Sub Private Sub IncPMDue_AfterUpdate() Set dbSICAM = CurrentDb() Dim rsCheck As DAO.Recordset If IsNull(Me.IncPMDue) Then MsgBox "Fecha requerida en este campo.", vbCritical Me.IncPMDue = IncPMDueVal Me.IncPMDue.SetFocus Exit Sub End If Set rsCheck = dbSICAM.OpenRecordset("SELECT reading From readings WHERE MeterNo = '" & Me.MeterNo & "'") If rsCheck.RecordCount <> 0 Then rsCheck.MoveLast If Me.IncPMDue < rsCheck!Reading Then MsgBox "Lectura anterior del medidor:próxima fecha de realización, no puede ser menor a la ultima lectura de medidor .", vbInformation Me.IncPMDue = IncPMDueVal End If End If rsCheck.Close End Sub Private Sub Lowerlimit_AfterUpdate() If IsNull(Me.Lowerlimit) Then MsgBox "Fecha requerida en este campo.", vbCritical Me.Lowerlimit = lowlimVal Me.Lowerlimit.SetFocus Exit Sub End If End Sub Private Sub MeterType_AfterUpdate()
295
If Me.MeterType = 1 Then Me.Lowerlimit.Enabled = True Me.UpperLimit.Enabled = True Me.PMLowTaskNo.Enabled = True Me.PMLowTaskDesc.Enabled = True Me.PMLowTaskDesc.Locked = True Me.PMUppTaskNo.Enabled = True Me.PMUppTaskDesc.Enabled = True Me.PMUppTaskDesc.Locked = True Me.StartMeterReading.Enabled = False Me.IncFreq.Enabled = False Me.LastPMreading.Enabled = False Me.IncPMDue.Enabled = False Me.PMIncTaskNo.Enabled = False Me.PMIncTaskDesc.Enabled = False Me.Time.Enabled = False Me.TimeBased.Enabled = False Else Me.IncFreq.Enabled = True Me.IncPMDue.Enabled = True Me.PMIncTaskNo.Enabled = True Me.PMIncTaskDesc.Enabled = True Me.PMIncTaskDesc.Locked = True Me.Lowerlimit.Enabled = False Me.UpperLimit.Enabled = False Me.PMLowTaskNo.Enabled = False Me.PMLowTaskDesc.Enabled = False Me.PMUppTaskNo.Enabled = False Me.PMUppTaskDesc.Enabled = False Me.TimeBased.Enabled = True If Me.TimeBased = -1 Then Me.Time.Enabled = True End If End If End Sub Private Sub PMIncTaskNo_AfterUpdate() If IsNull(Me.PMIncTaskNo) Then Me.PMIncTaskNo = IncPMTaskVal Exit Sub End If End Sub Private Sub PMLowTaskNo_AfterUpdate() If IsNull(Me.PMLowTaskNo) Then MsgBox "Fecha requerida en este Campo.", vbCritical Me.PMLowTaskNo = lowtaskVal Me.PMLowTaskNo.SetFocus Exit Sub End If End Sub Private Sub PMUppTaskNo_AfterUpdate() If IsNull(Me.PMUppTaskNo) Then MsgBox "Fecha requerida en este Campo.", vbCritical Me.PMUppTaskNo = upptaskVal Me.PMUppTaskNo.SetFocus Exit Sub
296
End If End Sub Private Sub PMWOTrade_AfterUpdate() If IsNull(Me.PMWOTrade) Then MsgBox "Fecha requerida en este Campo.", vbCritical Me.PMWOTrade = PMWOTradeVal Me.PMWOTrade.SetFocus End If End Sub Private Sub StartMeterReading_AfterUpdate() Me.LastPMreading = Me.StartMeterReading End Sub Private Sub TarStartDate_AfterUpdate() If Trim(TarStartDate) <> "" Or Not IsNull(TarStartDate) Then Me.TarCompDate = [TarStartDate] + [WorkPeriodDays] - 1 Me.NextDate = [TarCompDate] + [FreqDays] End If End Sub Private Sub Time_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Error GoTo ErrorHandler If Me.calCtl1.Visible = True Then Me.calCtl1.Visible = False ErrorHandler: If err.Number <> 0 Then Me.TarStartDate.SetFocus If Me.calCtl1.Visible = True Then Me.calCtl1.Visible = False End If End Sub Private Sub TimeBased_AfterUpdate() If Me.TimeBased = True Then Me.Time.Enabled = True If IsNull(Me.StartDate) Then Me.StartDate.Value = ServerdateQuery() Else Me.Time.Enabled = False End If End Sub Private Sub UpperLimit_AfterUpdate() If IsNull(Me.UpperLimit) Then MsgBox "Fecha requerida en este Campo.", vbCritical Me.UpperLimit = upplimVal Me.UpperLimit.SetFocus Exit Sub End If End Sub Private Sub WorkPeriodDays_AfterUpdate() If Trim(TarStartDate) <> "" Or Not IsNull(TarStartDate) Then 'If Not IsNull(Me.StartDate) Then ' Me.TarStartDate = [StartDate] + [FreqDays] 'End If Me.TarCompDate = [TarStartDate] + [WorkPeriodDays] - 1 Me.NextDate = [TarCompDate] + [FreqDays] End If End Sub
297
Formulario Lecturas de Medidores
Figura 36. – Formulario Lecturas de medidores. Este formulario muestra los valores de los medidores del sistema. Seleccionando el
Número de medidor en la casilla identificada como “No. De medidor”, ubicada en la parte
superior izquierda del formulario, se muestran todos los demas campos de información
correspondientes al medidor seleccionado. Estos campos son: “Descripción del medidor”,
“Fecha de lectura”, “Lectura actual”, “ID de equipo”, “Valor mínimo”, “Valor máximo”, “Lectura
inicial”, “Efectuar cada”, “Última lectura”, “ Próximo MP en”, “Fecha próximo MP” y “Frecuencia”.
El campo “Lectura actual” se utiliza para introducir un nuevo valor de la lectura que se tiene del
medidor para actualizar los datos del mismo al presionar el botón “Guardar”. El formulario tiene
dos áreas adicionales para mostrar la información de los medidores. La primera de ellas
muestra el historial de los registros de todos los medidores del sistema mientras que la
segunda, ubicada en la parte inferior del formulario, muestra el historial del medidor
seleccionado. El botón “Ver MP a crear” abre un formulario que muestra la lista de ordenes de
mantenimiento preventivo que se pueden generar, dando la opción al usuario de crearlas o no.
El código de programa para este formulario es el siguiente:
298
Option Explicit '******************************* ' Lectura de Medidores '******************************* Private Sub Command10_Click() On Error GoTo Err_Command10_Click DoCmd.Close acForm, Me.Name Exit_Command10_Click: Exit Sub Err_Command10_Click: MsgBox err.Description Resume Exit_Command10_Click End Sub Private Sub Command11_Click() Dim response Dim rsdup As DAO.Recordset Dim rsreading As DAO.Recordset If IsNull(Me.MeterNo) Then MsgBox "No de Medidor no puede ser nulo", vbInformation DoCmd.GoToControl "meterno" ElseIf IsNull(Me.DateReading) Then MsgBox "Fecha de lectura no puede ser nula", vbInformation DoCmd.GoToControl "Date" ElseIf ((Me.MeterType = 2) And (IsNull(Me.Reading) Or Me.Reading = 0)) Then MsgBox "Lectura actual no puede ser nula o cero", vbInformation DoCmd.GoToControl "Reading" ElseIf Me.MeterType = 2 And CDbl(Me.Reading.Value) < CDbl(Me.StartMeter.Value) Then MsgBox "Lectura Actual no puede ser menor a la Última lectura", vbInformation DoCmd.GoToControl "Reading" ElseIf CDate(Me.DateReading) > ServerdateQuery() Then MsgBox "Fecha de Lectura no puede ser mayor a la fecha actual", vbInformation DoCmd.GoToControl "DateReading" Else Set dbSICAM = CurrentDb() 'Verificación de lecturas duplicadas que necesitan generar un número mas alto Set rsdup = dbSICAM.OpenRecordset("Readings") Do While Not rsdup.EOF If rsdup![MeterNo] = Me.MeterNo And rsdup![genstatus] = "Yes" And rsdup![Reading] < val(Me.Reading) Then rsdup.Edit rsdup![genstatus] = "No" rsdup.Update End If rsdup.MoveNext Loop rsdup.Close If MsgBox("Desea grabar el registro ?", vbYesNo + vbInformation + vbDefaultButton2, "Grabar") = vbYes Then Set rsreading = dbSICAM.OpenRecordset("Readings") With rsreading .AddNew ![MeterNo] = Me.MeterNo ![Reading] = Me.Reading
299
![LastReading] = Me.LastReading ![LastPMDue] = Me.PMIncDue ![PMActive] = Me.MeterNo.Column(17) ![Date] = Me.DateReading ![Enterdate] = CDate(Format(ServerdateQuery(), "short date")) 'Format(Date, "dd-mm-yyyy") If Me.MeterType = "1" Then If (Me.Reading < val(Me.LowLimit) Or Me.Reading > val(Me.UppLimit)) And Me.MeterNo.Column(17) = -1 Then ![genstatus] = "Yes" ![MeterDescription] = Me.MeterDescription & " (Last Reading : " & Me.Reading.Value & " )" Else ![genstatus] = "No" End If End If If Me.MeterType = "2" Then If Me.MeterNo.Column(15) = "Yes" Then Call upTSD ![MeterDescription] = Me.MeterDescription & " (Time Based : " & Me.DateReading.Value & " )" 'MtrRead = "Time Based : " & Me.DateReading.Value If Me.MeterNo.Column(17) = -1 Then ![genstatus] = "Yes" Else ![genstatus] = "No" End If ElseIf Me.Reading >= val(Me.PMIncDue) And Me.MeterNo.Column(17) = -1 Then 'Si Reading > PM debido a time based activo, el sistema editara el TSD actual ![MeterDescription] = Me.MeterDescription & " (Last Reading : " & Me.Reading.Value & " )" If Me.MeterNo.Column(18) = -1 Then 'MtrRead = "Last Reading : " & Me.LastReading.Value Call upTSD End If ![genstatus] = "Yes" Else ![genstatus] = "No" End If dbSICAM.Execute "UPDATE PMMeters SET PMMeters.LastPMreading = " & Me.Reading & " " & _ "WHERE PMMeters.MeterNo='" & Me.MeterNo & "';" End If .Update .Close End With 'Call MeterReading Refresh Me.MeterNo = Null Me.MeterDescription = Null Me.Reading = 0 Me.DateReading = Null Me.AssetNo = Null Me.AssDesc = Null Me.MeterType = Null Me.MeterTypeDesc = Null Me.LowLimit = 0 Me.UppLimit = 0 Me.StartMeter = 0 Me.Frequency = 0 Me.LastReading = 0 Me.PMIncDue = 0
300
Me.nxdate = Null Me.Freq = 0 Else DoCmd.GoToControl "MeterNo" End If End If End Sub Private Sub Command60_Click() Me.calCtl1.Visible = True Me.calCtl1.Value = Date End Sub Private Sub DateReading_AfterUpdate() Dim nowdate As Date nowdate = ServerdateQuery() If CDate(Me.DateReading) > nowdate Then MsgBox "Fecha de Lectura no puede ser mayor a la fecha actual", vbInformation Me.DateReading.SetFocus Me.DateReading = Null End If End Sub Private Sub Detail_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Error GoTo ErrorHandler If Me.calCtl1.Visible = True Then Me.calCtl1.Visible = False ErrorHandler: If err.Number <> 0 Then Me.DateReading.SetFocus If Me.calCtl1.Visible = True Then Me.calCtl1.Visible = False End If End Sub Private Sub Form_Activate() DoCmd.Restore End Sub Private Sub Form_Deactivate() DoCmd.Minimize End Sub Private Sub Form_Load() contarreg Me.List.ListCount, Me.List1.ListCount End Sub Private Sub MeterNo_AfterUpdate() Call MeterReading Me.MeterDescription = Me.MeterNo.Column(1) Me.MeterType = Me.MeterNo.Column(8) Me.AssetNo = Me.MeterNo.Column(2) Me.AssDesc = Me.MeterNo.Column(12) Me.DateReading = CDate(Format(ServerdateQuery(), "short date")) Me.Reading.SetFocus If Me.MeterType = 1 Then Me.LowLimit.Locked = True Me.UppLimit.Locked = True Me.LowLimit = Me.MeterNo.Column(3) Me.UppLimit = Me.MeterNo.Column(4)
301
Me.StartMeter = 0 Me.Frequency = 0 Me.LastReading = 0 Me.PMIncDue = 0 Else Me.StartMeter.Locked = True Me.Frequency.Locked = True Me.LastReading.Locked = True Me.PMIncDue.Locked = True Me.StartMeter = Me.MeterNo.Column(5) Me.Frequency = Me.MeterNo.Column(6) Me.LastReading = Me.MeterNo.Column(10) Me.PMIncDue = Me.MeterNo.Column(11) Me.nxdate = Me.MeterNo.Column(13) Me.Freq = Me.MeterNo.Column(14) Me.LowLimit = 0 Me.UppLimit = 0 End If Me.MeterTypeDesc = Me.MeterNo.Column(9) Call MeterReading End Sub Private Sub MeterReading() Dim ReadingList ReadingList = "SELECT Date AS [Fecha / hora de lectura],MeterNo as [No de medidor], Reading as [Lectura Actual], " & _ "LastReading as [Lectura anterior], GenStatus as [Genera MP], yesno.Description as [Tarea en servicio],GenDate as [Fecha de generación] " & _ "FROM Readings INNER JOIN [yesno] ON Readings.PMActive = yesno.Num WHERE MeterNo='" & Me.MeterNo & "' ORDER BY Date DESC , Reading DESC;" Me.List1.RowSource = ReadingList Me.List1.ColumnCount = 7 Me.List1.ColumnHeads = True Me.List1.ColumnWidths = "4 cm; 3 cm; 3 cm; 3 cm; 3 cm; 3 cm; 3 cm" contarreg Me.List.ListCount, Me.List1.ListCount 'ORDER BY Readings.MeterNo; End Sub Private Sub Command42_Click() On Error GoTo Err_Command42_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "MPMGenForm" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_Command42_Click: Exit Sub Err_Command42_Click: MsgBox err.Description Resume Exit_Command42_Click End Sub Function contarreg(aa As Integer, bb As Integer)
302
Call CountRecord(Me.ListRec, List) Call CountRecord(Me.ListRec1, List1) End Function Private Sub calCtl1_Click() Me.DateReading = Me.calCtl1.Value Me.DateReading.SetFocus Me.calCtl1.Visible = False End Sub Private Sub upTSD() Dim rsMet As DAO.Recordset Dim freqcy As Integer Set rsMet = dbSICAM.OpenRecordset("SELECT * FROM PMMeters WHERE MeterNo='" & Me.MeterNo & "'") With rsMet .Edit freqcy = ![FreqUnits] * ![Frequency] ![TargetStartDate] = DateAdd("d", freqcy, ![TargetStartDate]) ![TargetCompDate] = ![TargetStartDate] + ![PeriodDays] - 1 ![NextDate] = ![TargetCompDate] + freqcy .Update .Close End With End Sub
Formulario Lista de Instrucciones Figura 37 – Formulario Lista de instrucciones Este formulario muestra la lista de los códigos de instrucción del sistema. Seleccionando
uno de los registros de la lista y haciendo “doble click” se abrirá el formulario “Instrucción
actual” que muestra el procedimiento detallado del código de instrucción. El botón “Ordenar A-
303
>Z” permite ordenar la lista de registro de manera ascendente o descendente. La información
que se despliega en pantalla se puede filtrar seleccionando una de las casillas ubicadas en la
parte inferior del formulario identificadas como “Código de instrucción”, “Horas estimadas” y
“Descripción de instrucción”, colocando la información solicitada en la casilla en blanco y
presionando el botón “Buscar”. El botón “Ver todo” se utiliza para mostrar nuevamente todos los
registros de la lista si antes se ha hecho una búsqueda de información utilizando uno de los
filtros mencionados. El botón “Nueva instrucción” abre el formulario “Instrucción nueva” que
permite al usuario crear un nuevo código de instrucción con sus respectivo procedimiento y
tiempo estimado.
Figura No. 38 – Formulario Instrucción actual. Figura 39. – Formulario Instrucción nueva.
304
Los códigos de programa de estos formularios son los siguientes: '******************************* ' ' Lista de Instrucciones de MP ' '******************************* Option Explicit Dim sel, Sortby As String Private Sub Command16_Click() If Me.Select = 1 Then sel = "[ChecklistNo] ='" & Me.Input & "'" ElseIf Me.Select = 2 Then sel = "[ChecklistName] like '" & Me.Input & "*'" ElseIf Me.Select = 3 Then sel = "EstimatedLaborHours like '" & Me.Input & "*'" End If Dim PMCListForm As String PMCListForm = "SELECT ChecklistNo as [Código de instrucción], ChecklistName as [Descripción de instrucción], EstimatedLaborHours as [Horas estimadas] " & _ "FROM [PMChecklist] WHERE " & sel & " ;" Me.List.RowSource = PMCListForm Me.List.ColumnCount = 3 Me.List.ColumnHeads = True Me.List.ColumnWidths = "5 cm; 9 cm; 3 cm" Call contarreg End Sub Private Sub Command17_Click() Call vertodo End Sub Private Sub Form_Activate() DoCmd.Restore Call contarreg Refresh End Sub Private Sub Form_Deactivate() DoCmd.Minimize End Sub Private Sub Form_Open(Cancel As Integer) Call vertodo End Sub Private Sub vertodo() Dim PMCListForm As String PMCListForm = "SELECT ChecklistNo as [Código de instrucción], ChecklistName as [Descripción de instrucción], EstimatedLaborHours as [Horas estimadas] " & _ "FROM [PMChecklist];" Me.List.RowSource = PMCListForm Me.List.ColumnCount = 3 Me.List.ColumnHeads = True Me.List.ColumnWidths = "5 cm; 9 cm; 3 cm" Call contarreg
305
End Sub Private Sub Command2_Click() On Error GoTo Err_Command2_Click Dim stLinkCriteria As String DoCmd.OpenForm "MPListaVerifNuevaForm", , , stLinkCriteria Exit_Command2_Click: Exit Sub Err_Command2_Click: MsgBox err.Description Resume Exit_Command2_Click End Sub Private Sub Command3_Click() On Error GoTo Err_Command3_Click DoCmd.Close acForm, Me.Name Exit_Command3_Click: Exit Sub Err_Command3_Click: MsgBox err.Description Resume Exit_Command3_Click End Sub Private Sub List_DblClick(Cancel As Integer) If IsNull(Me.List.Column(0)) Then MsgBox "Seleccione un registro", vbInformation, "SICAM" Else DoCmd.OpenForm "ActMPListaverifForm", , , "[ChecklistNo]=" & "'" & Me.List.Column(0) & "'" End If End Sub Private Sub SortB1_Click() If Me.SortB1.Caption = "Ordenar A->Z" Then If Me.Select = 1 Then Sortby = "ORDER BY ChecklistNo ASC" ElseIf Me.Select = 2 Then Sortby = "ORDER BY ChecklistName ASC" ElseIf Me.Select = 3 Then Sortby = "ORDER BY EstimatedLaborHours ASC" End If Me.SortB1.Caption = "Ordenar Z->A" Else If Me.Select = 1 Then Sortby = "ORDER BY ChecklistNo DESC" ElseIf Me.Select = 2 Then Sortby = "ORDER BY ChecklistName DESC" ElseIf Me.Select = 3 Then Sortby = "ORDER BY EstimatedLaborHours DESC" End If Me.SortB1.Caption = "Ordenar A->Z" End If Call Sort End Sub Public Sub Sort() Dim PMCListForm As String PMCListForm = "SELECT ChecklistNo as [Código de instrucción],
306
ChecklistName as [Descripción de instrucción], EstimatedLaborHours as [Horas estimadas] " & _ "FROM [PMChecklist] " & Sortby & ";" Me.List.RowSource = PMCListForm Me.List.ColumnCount = 3 Me.List.ColumnHeads = True Me.List.ColumnWidths = "5 cm; 9 cm; 3 cm" Call contarreg End Sub Private Sub contarreg() Call CountRecord(Me.ListRec, List) End Sub '*************************************************** ' ' Registro Actual de Lista de Instrucciones de MP ' '*************************************************** Option Compare Database Private Sub Command17_Click() On Error GoTo Err_Command17_Click If IsNull(Me.EstimatedLaborHours) Or Trim(Me.EstimatedLaborHours.Value) = "" Then MsgBox "Introduzca datos al campo", vbInformation Me.EstimatedLaborHours.SetFocus Exit Sub End If If Me.Dirty Then If MsgBox("Desea grabar el registro?", vbInformation + vbYesNo, "Grabar") = vbNo Then DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70 End If End If DoCmd.Close acForm, Me.Name Exit_Command17_Click: Exit Sub Err_Command17_Click: MsgBox err.Description Resume Exit_Command17_Click End Sub '************************************************ ' ' Lista de Instrucciones MP / Nueva Instrucción ' '************************************************ Option Explicit Private Sub cheklistNo_AfterUpdate() Dim rstask As DAO.Recordset Set dbSICAM = CurrentDb() Set rstask = dbSICAM.OpenRecordset("PMChecklist") Do While Not rstask.EOF If UCase(rstask!ChecklistNo) = UCase(Me.cheklistNo) Then
307
MsgBox "No de Tarea ya existente", vbInformation Me.cheklistNo = Null Me.cheklistNo.SetFocus End If rstask.MoveNext Loop rstask.Close End Sub Private Sub Save_Click() Dim response Dim rsPMC As DAO.Recordset Dim stLinkCriteria As String If IsNull(Me.cheklistNo) Then MsgBox "Introduzca los datos al campo", vbInformation DoCmd.GoToControl "cheklistNo" ElseIf IsNull(Me.ChecklistName) Then MsgBox "Introduzca los datos al campo", vbInformation DoCmd.GoToControl "CheckListName" ElseIf IsNull(Me.EstimatedLaborHours) Or Trim(Me.EstimatedLaborHours.Value) = "" Then MsgBox "Introduzca los datos al campo", vbInformation Me.EstimatedLaborHours.SetFocus Else response = MsgBox("Desea grabar el registro?", vbYesNo + vbInformation + vbDefaultButton2, "Grabar") If response = vbYes Then Set dbSICAM = CurrentDb() Set rsPMC = dbSICAM.OpenRecordset("PMChecklist") With rsPMC .AddNew ![ChecklistNo] = Me.cheklistNo ![ChecklistName] = Me.ChecklistName ![Tasks] = Me.Task ![EstimatedLaborHours] = Me.EstimatedLaborHours .Update .Close End With DoCmd.Close acForm, Me.Name DoCmd.OpenForm "MPListaVerifNuevaForm", , , stLinkCriteria Else Me.cheklistNo.SetFocus End If End If End Sub Private Sub Command17_Click() On Error GoTo Err_Command17_Click DoCmd.Close acForm, Me.Name Exit_Command17_Click: Exit Sub Err_Command17_Click: MsgBox err.Description Resume Exit_Command17_Click End Sub
308
Formulario Generación de OT de MP Figura 40. – Formulario Generación de OT de MP. Este formulario se utiliza para generar las ordenes de trabajo de mantenimiento
preventivo. El mismo muestra la última fecha de generación de las ordenes de mantenimiento y
el último rango de fechas de la generación. El formulario tiene dos casillas para colocar un
nuevo intervalo para generar nuevas ordenes de trabajo de mantenimiento preventivo. La
primera casilla coloca la fecha inmediata posterior a la última fecha del último rango de
generación; la segunda casilla premite colocar una nueva fecha para asi poder acceder a la
proyección de los mantenimientos preventivos en ese rango por medio del botón “Proyección de
MP”. En la parte central del formulario se muestran los mantenimientos preventivos proyectados
con sus correspondientes fechas de inicio y fin de las actividades. En el área inferior del
formulario se muestran los mantenimientos preventivos proyectados si éstos estan basados en
una programación flotante. El botón “Generar OT’s” se utiliza para crear las nuevas ordenes de
trabajo de mantenimiento preventivo en el último rango seleccionado que ya han sido
inspeccionadas en las áreas central e inferior del formulario. El código de programa de este
formulario es el siguiente:
309
'******************* ' ' Generación de MP ' '******************* Option Compare Database Dim sel, WONo As String Dim Totrec As Integer Dim firstDay As Date Dim tempDay As Date Dim lastDay As Date Dim PMDate As Date Dim zMonth As Integer Dim zYear As Integer Dim targetYear As Integer Dim targetMonth As Integer Dim Dayno As Integer Dim zDay As Integer Private Sub Command40_Click() ' Para Ver MP antes de generarlo If IsNull(Me.date1) Or IsNull(Me.date2) Then MsgBox "Indique el rango de fechas para ver las Ordenes Preventivas", vbInformation Me.date2.SetFocus Exit Sub End If If Me.date2 < Me.date1 Then MsgBox "Segunda Fecha debe ser mayor a la Fecha inicial", vbInformation, "SICAM" Me.date2 = Null DoCmd.GoToControl "date2" Exit Sub End If Dim show Set dbSICAM = CurrentDb() dbSICAM.Execute "DELETE * FROM [PMSchTemp];" dbSICAM.Execute "DELETE * FROM [PMGenTemp];" dbSICAM.Execute "DELETE * FROM [MultiplePMTemp];" Dim sqlqSch As String Dim sqlqMulti As String sqlqSch = "SELECT PMNo,PMName,AssetNo,PhyLocationNo,ChecklistNo,PeriodDays,NextSchComp,WorkTypeID,FreqUnits,Frequency,FrqNo, " & _ "StartDate,TargetStartDate,TargetCompDate,ActualCompDate,NextDate,TypePMgen,TypePM,PMCounter,PMMultiple,PMActive,PMWOTrade,WeekofMonth,DayofWeek " & _ "FROM pmschedule;" sqlqMulti = "SELECT MPmID,MPMNo,MDescription,MTaskNo,MSeq,MCount,MStartDate,MStartDateCount,MTaskSeq,MScount,MPMCounter,WeekofMonth,DayofWeek " & _ " FROM multiplepm;" dbSICAM.Execute "INSERT INTO [PMSchTemp] " + sqlqSch dbSICAM.Execute "INSERT INTO [MultiplePMTemp] " + sqlqMulti Dim Task As String Dim rsPMGenTemp As DAO.Recordset Dim rsPMMschTemp As DAO.Recordset Set rsPMGenTemp = dbSICAM.OpenRecordset("PMGenTemp")
310
Set rsPMschTemp = dbSICAM.OpenRecordset("PMSchTemp") Me.lblProgress.Visible = True DoEvents Do While Not rsPMschTemp.EOF ' loop#1 Me.PmProgress.Visible = True Me.BoxPBar.Visible = True DoEvents Me.PmProgress.Value = rsPMschTemp.PercentPosition If rsPMschTemp![TypePMgen] = "1" And rsPMschTemp![PMActive] = -1 Then 'type of PM (schedule) if#1 Do While rsPMschTemp![TargetStartDate] >= Me.date1 And rsPMschTemp![TargetStartDate] <= Me.date2 Task = rsPMschTemp![ChecklistNo] Set rsPMMulti = dbSICAM.OpenRecordset("MultiplePMTemp") If rsPMschTemp![PMMultiple] = True Then Do While Not rsPMMulti.EOF If rsPMMulti![MPMNo] = rsPMschTemp![PMNo] Then If rsPMschTemp![PMCounter] = 1 Or rsPMMulti![MPMCounter] = 1 Then rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MStartDateCount] rsPMMulti.Update End If If rsPMMulti![MSCount] = rsPMschTemp![PMCounter] Then Task = rsPMMulti![MTaskNo] rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MSCount] + rsPMMulti![MSeq] rsPMMulti![MPMCounter] = rsPMMulti![MPMCounter] + 1 rsPMMulti.Update End If End If rsPMMulti.MoveNext Loop rsPMMulti.Close End If With rsPMGenTemp .AddNew ![PMNo] = rsPMschTemp![PMNo] ![PMName] = rsPMschTemp![PMName] ![TypePMgen] = rsPMschTemp![TypePMgen] ![AssetNo] = rsPMschTemp![AssetNo] ![PhyLocationNo] = rsPMschTemp![PhyLocationNo] ![ChecklistNo] = Task ![StartDate] = rsPMschTemp![StartDate] ![PMCounter] = rsPMschTemp![PMCounter] ![PeriodDays] = rsPMschTemp![PeriodDays] ![Frequency] = rsPMschTemp![Frequency] ![TargetStartDate] = rsPMschTemp![TargetStartDate] ![TargetCompDate] = rsPMschTemp![TargetCompDate] ![NextDate] = rsPMschTemp![NextDate] ![PMWOTrade] = rsPMschTemp![PMWOTrade] .Update End With
311
With rsPMschTemp .Edit ![PMCounter] = rsPMschTemp![PMCounter] + 1 ![TargetStartDate] = rsPMschTemp![NextDate] ![TargetCompDate] = rsPMschTemp![TargetStartDate] + rsPMschTemp![PeriodDays] - 1 ![NextDate] = rsPMschTemp![TargetStartDate] + (rsPMschTemp![Frequency] * rsPMschTemp![FreqUnits]) .Update End With 'rsPMschTemp.MoveNext Loop ElseIf rsPMschTemp![TypePMgen] = "2" And rsPMschTemp![PMActive] = -1 Then ' View PM based on Actual Comp Date if#1 Dim ActualCond ActualCond = IIf(rsPMschTemp![PMCounter] = 1, rsPMschTemp![TargetStartDate] <= Me.date2, rsPMschTemp![ActualCompDate] <> "" And rsPMschTemp![NextDate] <= Me.date2) If ActualCond Then Task = rsPMschTemp![ChecklistNo] 'Copy from PM Schedule to PMSchTemp Set rsPMMulti = dbSICAM.OpenRecordset("MultiplePMTemp") If rsPMschTemp![PMMultiple] = True Then Do While Not rsPMMulti.EOF If rsPMMulti![MPMNo] = rsPMschTemp![PMNo] Then If rsPMschTemp![PMCounter] = 1 Or rsPMMulti![MPMCounter] = 1 Then rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MStartDateCount] rsPMMulti.Update End If If rsPMMulti![MSCount] = rsPMschTemp![PMCounter] Then Task = rsPMMulti![MTaskNo] rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MSCount] + rsPMMulti![MSeq] rsPMMulti![MPMCounter] = rsPMMulti![MPMCounter] + 1 rsPMMulti.Update End If End If rsPMMulti.MoveNext Loop rsPMMulti.Close End If If IsNull(rsPMschTemp![ActualCompDate]) Then If rsPMschTemp![PMCounter] = 1 Then ' Orden de Trabajo de Mantenimiento Preven tivo por primera vez With rsPMGenTemp .AddNew ![PMNo] = rsPMschTemp![PMNo] ![PMName] = rsPMschTemp![PMName] ![TypePMgen] = rsPMschTemp![TypePMgen] ![AssetNo] = rsPMschTemp![AssetNo] ![PhyLocationNo] = rsPMschTemp![PhyLocationNo] ![ChecklistNo] = Task ![StartDate] = rsPMschTemp![StartDate] ![PMCounter] = rsPMschTemp![PMCounter]
312
![PeriodDays] = rsPMschTemp![PeriodDays] ![Frequency] = rsPMschTemp![Frequency] ![TargetStartDate] = rsPMschTemp![TargetStartDate] ![TargetCompDate] = rsPMschTemp![TargetCompDate] ![PMWOTrade] = rsPMschTemp![PMWOTrade] .Update End With With rsPMschTemp .Edit ![PMCounter] = rsPMschTemp![PMCounter] + 1 .Update End With End If Else 'Se generará el MP cuando se indique la fecha de Fin With rsPMschTemp .Edit ![TargetStartDate] = rsPMschTemp![NextDate] ![TargetCompDate] = rsPMschTemp![TargetStartDate] + rsPMschTemp![PeriodDays] - 1 .Update End With With rsPMGenTemp .AddNew ![PMNo] = rsPMschTemp![PMNo] ![PMName] = rsPMschTemp![PMName] ![TypePMgen] = rsPMschTemp![TypePMgen] ![AssetNo] = rsPMschTemp![AssetNo] ![PhyLocationNo] = rsPMschTemp![PhyLocationNo] ![ChecklistNo] = Task ![StartDate] = rsPMschTemp![StartDate] ![PMCounter] = rsPMschTemp![PMCounter] ![PeriodDays] = rsPMschTemp![PeriodDays] ![Frequency] = rsPMschTemp![Frequency] ![TargetStartDate] = rsPMschTemp![TargetStartDate] ![TargetCompDate] = rsPMschTemp![TargetCompDate] ![PMWOTrade] = rsPMschTemp![PMWOTrade] .Update End With With rsPMschTemp .Edit ![PMCounter] = rsPMschTemp![PMCounter] + 1 .Update End With End If End If ElseIf rsPMschTemp![TypePMgen] = "3" And rsPMschTemp![PMActive] = -1 Then Do While rsPMschTemp![TargetStartDate] >= Me.date1 And rsPMschTemp![TargetStartDate] <= Me.date2 Task = rsPMschTemp![ChecklistNo] Set rsPMMulti = dbSICAM.OpenRecordset("MultiplePMTemp") If rsPMschTemp![PMMultiple] = True Then Do While Not rsPMMulti.EOF If rsPMMulti![MPMNo] = rsPMschTemp![PMNo] Then
313
If rsPMschTemp![PMCounter] = 1 Or rsPMMulti![MPMCounter] = 1 Then rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MStartDateCount] rsPMMulti.Update End If If rsPMMulti![MSCount] = rsPMschTemp![PMCounter] Then Task = rsPMMulti![MTaskNo] rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MSCount] + rsPMMulti![MSeq] rsPMMulti![MPMCounter] = rsPMMulti![MPMCounter] + 1 rsPMMulti.Update End If End If rsPMMulti.MoveNext Loop rsPMMulti.Close End If With rsPMGenTemp .AddNew ![PMNo] = rsPMschTemp![PMNo] ![PMName] = rsPMschTemp![PMName] ![TypePMgen] = rsPMschTemp![TypePMgen] ![AssetNo] = rsPMschTemp![AssetNo] ![PhyLocationNo] = rsPMschTemp![PhyLocationNo] ![ChecklistNo] = Task ![StartDate] = rsPMschTemp![StartDate] ![PMCounter] = rsPMschTemp![PMCounter] ![PeriodDays] = rsPMschTemp![PeriodDays] ![Frequency] = rsPMschTemp![Frequency] ![TargetStartDate] = rsPMschTemp![TargetStartDate] ![TargetCompDate] = rsPMschTemp![TargetCompDate] ![NextDate] = rsPMschTemp![NextDate] ![PMWOTrade] = rsPMschTemp![PMWOTrade] ![WeekofMonth] = rsPMschTemp![WeekofMonth] ![DayofWeek] = rsPMschTemp![DayofWeek] .Update End With 'change here' With rsPMschTemp .Edit ![PMCounter] = rsPMschTemp![PMCounter] + 1 ![TargetStartDate] = rsPMschTemp![NextDate] ![TargetCompDate] = rsPMschTemp![TargetStartDate] + rsPMschTemp![PeriodDays] - 1 zMonth = Month(rsPMschTemp![NextDate]) + rsPMschTemp![Frequency] zYear = Year(rsPMschTemp![NextDate]) Dayno = rsPMschTemp![DayofWeek] getNextDate (rsPMschTemp![WeekofMonth]) ![NextDate] = PMDate .Update End With 'rsPMschTemp.MoveNext Loop ElseIf rsPMschTemp![TypePMgen] = "4" And rsPMschTemp![PMActive] = -1 Then zDay = Day(rsPMschTemp![TargetStartDate]) Do While rsPMschTemp![TargetStartDate] >= Me.date1 And rsPMschTemp![TargetStartDate] <= Me.date2 Task = rsPMschTemp![ChecklistNo]
314
Set rsPMMulti = dbSICAM.OpenRecordset("MultiplePMTemp") If rsPMschTemp![PMMultiple] = True Then Do While Not rsPMMulti.EOF If rsPMMulti![MPMNo] = rsPMschTemp![PMNo] Then If rsPMschTemp![PMCounter] = 1 Or rsPMMulti![MPMCounter] = 1 Then rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MStartDateCount] rsPMMulti.Update End If If rsPMMulti![MSCount] = rsPMschTemp![PMCounter] Then Task = rsPMMulti![MTaskNo] rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MSCount] + rsPMMulti![MSeq] rsPMMulti![MPMCounter] = rsPMMulti![MPMCounter] + 1 rsPMMulti.Update End If End If rsPMMulti.MoveNext Loop rsPMMulti.Close End If With rsPMGenTemp .AddNew ![PMNo] = rsPMschTemp![PMNo] ![PMName] = rsPMschTemp![PMName] ![TypePMgen] = rsPMschTemp![TypePMgen] ![AssetNo] = rsPMschTemp![AssetNo] ![PhyLocationNo] = rsPMschTemp![PhyLocationNo] ![ChecklistNo] = Task ![StartDate] = rsPMschTemp![StartDate] ![PMCounter] = rsPMschTemp![PMCounter] ![PeriodDays] = rsPMschTemp![PeriodDays] ![Frequency] = rsPMschTemp![Frequency] ![TargetStartDate] = rsPMschTemp![TargetStartDate] ![TargetCompDate] = rsPMschTemp![TargetCompDate] ![NextDate] = rsPMschTemp![NextDate] ![PMWOTrade] = rsPMschTemp![PMWOTrade] ![WeekofMonth] = rsPMschTemp![WeekofMonth] ![DayofWeek] = rsPMschTemp![DayofWeek] .Update End With 'Modificar aqui With rsPMschTemp .Edit ![PMCounter] = rsPMschTemp![PMCounter] + 1 ![TargetStartDate] = rsPMschTemp![NextDate] ![TargetCompDate] = rsPMschTemp![TargetStartDate] + rsPMschTemp![PeriodDays] - 1 PMDate = DateAdd("m", CDbl(rsPMschTemp![Frequency]), rsPMschTemp![TargetStartDate]) ![NextDate] = PMDate .Update End With Loop ElseIf rsPMschTemp![TypePMgen] = "5" And rsPMschTemp![PMActive] = -1 Then 'has been added after the changes to monthly schedule zDay = Day(rsPMschTemp![TargetStartDate]) Do While rsPMschTemp![TargetStartDate] >= Me.date1 And
315
rsPMschTemp![TargetStartDate] <= Me.date2 Task = rsPMschTemp![ChecklistNo] Set rsPMMulti = dbSICAM.OpenRecordset("MultiplePMTemp") If rsPMschTemp![PMMultiple] = True Then Do While Not rsPMMulti.EOF If rsPMMulti![MPMNo] = rsPMschTemp![PMNo] Then If rsPMschTemp![PMCounter] = 1 Or rsPMMulti![MPMCounter] = 1 Then rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MStartDateCount] rsPMMulti.Update End If If rsPMMulti![MSCount] = rsPMschTemp![PMCounter] Then Task = rsPMMulti![MTaskNo] rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MSCount] + rsPMMulti![MSeq] rsPMMulti![MPMCounter] = rsPMMulti![MPMCounter] + 1 rsPMMulti.Update End If End If rsPMMulti.MoveNext Loop rsPMMulti.Close End If With rsPMGenTemp .AddNew ![PMNo] = rsPMschTemp![PMNo] ![PMName] = rsPMschTemp![PMName] ![TypePMgen] = rsPMschTemp![TypePMgen] ![AssetNo] = rsPMschTemp![AssetNo] ![PhyLocationNo] = rsPMschTemp![PhyLocationNo] ![ChecklistNo] = Task ![StartDate] = rsPMschTemp![StartDate] ![PMCounter] = rsPMschTemp![PMCounter] ![PeriodDays] = rsPMschTemp![PeriodDays] ![Frequency] = rsPMschTemp![Frequency] ![TargetStartDate] = rsPMschTemp![TargetStartDate] ![TargetCompDate] = rsPMschTemp![TargetCompDate] ![NextDate] = rsPMschTemp![NextDate] ![PMWOTrade] = rsPMschTemp![PMWOTrade] ![WeekofMonth] = rsPMschTemp![WeekofMonth] ![DayofWeek] = rsPMschTemp![DayofWeek] .Update End With 'Modificar aqui' With rsPMschTemp .Edit ![PMCounter] = rsPMschTemp![PMCounter] + 1 ![TargetStartDate] = rsPMschTemp![NextDate] ![TargetCompDate] = DateAdd("m", 1, rsPMschTemp![TargetStartDate]) - 1 PMDate = DateAdd("m", CDbl(rsPMschTemp![Frequency]), rsPMschTemp![TargetStartDate]) ![NextDate] = PMDate .Update End With Loop End If 'if No.1
316
rsPMschTemp.MoveNext Loop 'Loop No.1 Me.PmProgress.Value = 100 rsPMGenTemp.Close rsPMschTemp.Close ' A continuación los script que muestran el Programa de MP Dim PMSList1, PMSList2 As String 'Ver MP TipoGen =1 PMSList = "SELECT PMNo as [No de tarea], PMName as [Descripción de tarea], ChecklistNo as [Código de instrucción], " & _ "AssetNo as [No de equipo], PhyLocationNo as [Ubicación],StartDate as [Fecha de inicio], " & _ "TargetStartdate as [Fecha programada de inicio], TargetCompDate as [Fecha programada de término], NextDate as [Próxima fecha / Ejecución] " & _ "FROM PMGenTemp WHERE TypePMGen In('1','3','4','5');" Me.List.RowSource = PMSList Me.List.ColumnCount = 10 Me.List.ColumnHeads = True Me.List.ColumnWidths = "3 cm; 8 cm; 4 cm; 3 cm; 3 cm; 3 cm; 5 cm; 5 cm; 5 cm" 'Ver MP TipoGen=2 (por Fecha de Fin Actual) PMSList2 = "SELECT PMNo as [No de tarea], PMName as [Descripción de tarea], ChecklistNo as [Código de instrucción], " & _ "AssetNo as [No de equipo], PhyLocationNo as [Ubicación],StartDate as [Fecha de Inicio], " & _ "TargetStartdate as [Fecha Programada de Inicio], TargetCompDate as [Fecha programada de término], NextDate as [Próxima fecha / Ejecución] " & _ "FROM PMGenTemp WHERE TypePMGen = '2';" Me.List1.RowSource = PMSList2 Me.List1.ColumnCount = 10 Me.List1.ColumnHeads = True Me.List1.ColumnWidths = "3 cm; 8 cm; 4 cm; 3 cm; 3 cm; 3 cm; 5 cm; 6 cm; 5 cm" contarreg Me.List.ListCount, Me.List1.ListCount Dim pmview As DAO.Recordset Set pmview = dbSICAM.OpenRecordset("SELECT * From PMGenTemp") If pmview.RecordCount <> 0 Then Me.Command47.Enabled = True Me.Command70.Enabled = True End If Me.lblProgress.Visible = False Me.PmProgress.Visible = False Me.BoxPBar.Visible = False End Sub Private Sub Command47_Click() ' Siguiente procedimiento se usa para generar el MP y la OT de MP Set dbSICAM = CurrentDb() dbSICAM.Execute "DELETE * FROM [PMGenerate];" 'Comprobar que la OT no sea nula Set rswono = dbSICAM.OpenRecordset("SELECT * From workorders") If rswono.RecordCount <> 0 Then
317
rswono.MoveLast If IsNull(rswono![WorkorderNo]) Then MsgBox "Error durante la generación de Ots," & Chr(13) _ & "Ultimo registro de la tabla Ordenes de Trabajo esta vacío.", vbInformation Exit Sub End If End If rswono.Close Me.Label78.Visible = True Me.PBar.Value = 0 Me.PBar.Max = 100 Me.PBar.Visible = True Me.BoxPBar.Visible = True DoEvents 'Verificar si el Equipo y Ubicación existen Set rsassgen = dbSICAM.OpenRecordset("PMGenTemp") Do While Not rsassgen.EOF If Not IsNull(rsassgen!AssetNo) Then Set rsAssNo = dbSICAM.OpenRecordset("Select * FROM Assets WHERE AssetNumber='" & rsassgen!AssetNo & "'") If rsAssNo.RecordCount = 0 Then MsgBox "Error durante la generación de Ots, " & Chr(13) _ & "No de equipo : " & rsassgen!AssetNo & " no existe en la tabla de Equipos. ", vbInformation Me.Label78.Visible = False Me.PBar.Value = 0 Me.PBar.Visible = False Me.BoxPBar.Visible = False rsAssNo.Close Exit Sub End If ElseIf Not IsNull(rsassgen!PhyLocationNo) Then Set rsLocNo = dbSICAM.OpenRecordset("Select * FROM Location WHERE LocationNo='" & rsassgen!PhyLocationNo & "'") If rsLocNo.RecordCount = 0 Then MsgBox "Error durante la generación de Ots, " & Chr(13) _ & "No de Ubicación : " & rsassgen!PhyLocationNo & " no existe en la tabla Maestra de Ubicaciones. ", vbInformation Me.Label78.Visible = False Me.PBar.Value = 0 Me.PBar.Visible = False Me.BoxPBar.Visible = False rsLocNo.Close Exit Sub End If Else MsgBox "Error durante la generación de Ots, " & Chr(13) _ & "No de Equipo y No de Ubicación no existen.", vbInformation Me.Label78.Visible = False Me.PBar.Value = 0 Me.PBar.Visible = False Me.BoxPBar.Visible = False Exit Sub End If Me.PBar.Value = rsassgen.PercentPosition rsassgen.MoveNext Loop rsassgen.Close Me.Label78.Visible = False
318
Me.PBar.Value = 0 Me.BoxPBar.Visible = False Me.PBar.Visible = False Dim ActCompDate, disp If Not MsgBox("No se podrán generar OT´s anteriores a " & Me.date2.Value & " después de la generación. Esta seguro que desea proceder?", vbQuestion + vbYesNo, "SICAM") = vbYes Then Exit Sub Set rspmgen = dbSICAM.OpenRecordset("PMGenerate") Set rspmsch = dbSICAM.OpenRecordset("PMSchedule") Me.lblProgress.Visible = True Me.PmProgress.Visible = True Me.BoxPBar.Visible = True DoEvents 'identificación el tipo de generación de MP, 1 - por programación; 2 - por Fecha actual de Fin Do While Not rspmsch.EOF Me.PmProgress.Value = rspmsch.PercentPosition If rspmsch![TypePMgen] = "1" And rspmsch![PMActive] = -1 Then Do While rspmsch![TargetStartDate] >= Me.date1 And rspmsch![TargetStartDate] <= Me.date2 Task = rspmsch![ChecklistNo] Set rsPMMulti = dbSICAM.OpenRecordset("MultiplePM") If rspmsch![PMMultiple] = True Then ' Check for Multiple Task Do While Not rsPMMulti.EOF If rsPMMulti![MPMNo] = rspmsch![PMNo] Then If rspmsch![PMCounter] = 1 Or rsPMMulti![MPMCounter] = 1 Then rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MStartDateCount] rsPMMulti.Update End If If rsPMMulti![MSCount] = rspmsch![PMCounter] Then Task = rsPMMulti![MTaskNo] rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MSCount] + rsPMMulti![MSeq] rsPMMulti![MPMCounter] = rsPMMulti![MPMCounter] + 1 rsPMMulti.Update End If End If rsPMMulti.MoveNext Loop rsPMMulti.Close End If With rspmgen .AddNew ![PMNo] = rspmsch![PMNo] ![PMName] = rspmsch![PMName] ![TypePMgen] = rspmsch![TypePMgen] ![TypePM] = rspmsch![TypePM] ![PhyLocationNo] = rspmsch![PhyLocationNo] ![AssetNo] = rspmsch![AssetNo]
319
![ChecklistNo] = Task ![StartDate] = rspmsch![StartDate] ![PMCounter] = rspmsch![PMCounter] ![PeriodDays] = rspmsch![PeriodDays] ![Frequency] = rspmsch![Frequency] ![TargetStartDate] = rspmsch![TargetStartDate] ![TargetCompDate] = rspmsch![TargetCompDate] ![NextDate] = rspmsch![NextDate] ![PMWOTrade] = rspmsch![PMWOTrade] .Update End With With rspmsch .Edit ![PMCounter] = rspmsch![PMCounter] + 1 ![TargetStartDate] = rspmsch![NextDate] ![TargetCompDate] = rspmsch![TargetStartDate] + rspmsch![PeriodDays] - 1 ![NextDate] = rspmsch![TargetStartDate] + (rspmsch![Frequency] * rspmsch![FreqUnits]) .Update End With Loop ElseIf rspmsch![TypePMgen] = "2" And rspmsch![PMActive] = -1 Then 'Generación de MP basada en la fecha de Fin Dim ActualCond ActualCond = IIf(rspmsch![PMCounter] = 1, rspmsch![TargetStartDate] <= Me.date2, rspmsch![ActualCompDate] <> "" And rspmsch![NextDate] <= Me.date2) If ActualCond Then Task = rspmsch![ChecklistNo] 'Generación de Multiple MP Set rsPMMulti = dbSICAM.OpenRecordset("MultiplePM") If rspmsch![PMMultiple] = True Then ' Check for Multiple Task Do While Not rsPMMulti.EOF If rsPMMulti![MPMNo] = rspmsch![PMNo] Then If rspmsch![PMCounter] = 1 Or rsPMMulti![MPMCounter] = 1 Then rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MStartDateCount] rsPMMulti.Update End If If rsPMMulti![MSCount] = rspmsch![PMCounter] Then Task = rsPMMulti![MTaskNo] rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MSCount] + rsPMMulti![MSeq] rsPMMulti![MPMCounter] = rsPMMulti![MPMCounter] + 1 rsPMMulti.Update End If End If rsPMMulti.MoveNext Loop rsPMMulti.Close End If
320
'Actualizar la el Programa de MP con la fecha actual If IsNull(rspmsch![ActualCompDate]) Then If rspmsch![PMCounter] = 1 Then With rspmgen .AddNew ![PMNo] = rspmsch![PMNo] ![PMName] = rspmsch![PMName] ![ChecklistNo] = Task ![TypePMgen] = rspmsch![TypePMgen] ![AssetNo] = rspmsch![AssetNo] ![PhyLocationNo] = rspmsch![PhyLocationNo] ![StartDate] = rspmsch![StartDate] ![PMCounter] = rspmsch![PMCounter] ![PeriodDays] = rspmsch![PeriodDays] ![Frequency] = rspmsch![Frequency] ![TargetStartDate] = rspmsch![TargetStartDate] ![TargetCompDate] = rspmsch![TargetCompDate] ![ActualCompDate] = rspmsch![ActualCompDate] ![TypePM] = rspmsch![TypePM] ![PMWOTrade] = rspmsch![PMWOTrade] .Update End With With rspmsch .Edit ![PMCounter] = rspmsch![PMCounter] + 1 .Update End With End If Else With rspmsch .Edit ![TargetStartDate] = rspmsch![NextDate] ![TargetCompDate] = rspmsch![TargetStartDate] + rspmsch![PeriodDays] - 1 ![ActualCompDate] = Null .Update End With With rspmgen .AddNew ![PMNo] = rspmsch![PMNo] ![PMName] = rspmsch![PMName] ![ChecklistNo] = Task ![TypePMgen] = rspmsch![TypePMgen] ![AssetNo] = rspmsch![AssetNo] ![PhyLocationNo] = rspmsch![PhyLocationNo] ![StartDate] = rspmsch![StartDate] ![PMCounter] = rspmsch![PMCounter] ![PeriodDays] = rspmsch![PeriodDays] ![Frequency] = rspmsch![Frequency] ![TargetStartDate] = rspmsch![TargetStartDate] ![TargetCompDate] = rspmsch![TargetCompDate] ![ActualCompDate] = rspmsch![ActualCompDate] ![TypePM] = rspmsch![TypePM] ![PMWOTrade] = rspmsch![PMWOTrade] .Update End With With rspmsch .Edit ![PMCounter] = rspmsch![PMCounter] + 1 .Update End With
321
End If End If ElseIf rspmsch![TypePMgen] = "3" And rspmsch![PMActive] = -1 Then Do While rspmsch![TargetStartDate] >= Me.date1 And rspmsch![TargetStartDate] <= Me.date2 Task = rspmsch![ChecklistNo] Set rsPMMulti = dbSICAM.OpenRecordset("MultiplePM") If rspmsch![PMMultiple] = True Then ' Verificar Tareas Multiples Do While Not rsPMMulti.EOF If rsPMMulti![MPMNo] = rspmsch![PMNo] Then If rspmsch![PMCounter] = 1 Or rsPMMulti![MPMCounter] = 1 Then rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MStartDateCount] rsPMMulti.Update End If If rsPMMulti![MSCount] = rspmsch![PMCounter] Then Task = rsPMMulti![MTaskNo] rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MSCount] + rsPMMulti![MSeq] rsPMMulti![MPMCounter] = rsPMMulti![MPMCounter] + 1 rsPMMulti.Update End If End If rsPMMulti.MoveNext Loop rsPMMulti.Close End If With rspmgen .AddNew ![PMNo] = rspmsch![PMNo] ![PMName] = rspmsch![PMName] ![TypePMgen] = rspmsch![TypePMgen] ![TypePM] = rspmsch![TypePM] ![PhyLocationNo] = rspmsch![PhyLocationNo] ![AssetNo] = rspmsch![AssetNo] ![ChecklistNo] = Task ![StartDate] = rspmsch![StartDate] ![PMCounter] = rspmsch![PMCounter] ![PeriodDays] = rspmsch![PeriodDays] ![Frequency] = rspmsch![Frequency] ![TargetStartDate] = rspmsch![TargetStartDate] ![TargetCompDate] = rspmsch![TargetCompDate] ![NextDate] = rspmsch![NextDate] ![PMWOTrade] = rspmsch![PMWOTrade] ![TargetStartDate] = rspmsch![TargetStartDate] ![TargetCompDate] = rspmsch![TargetCompDate] .Update End With With rspmsch .Edit ![PMCounter] = rspmsch![PMCounter] + 1 ![TargetStartDate] = rspmsch![NextDate] ![TargetCompDate] = rspmsch![TargetStartDate] + rspmsch![PeriodDays] - 1 zMonth = Month(rspmsch![NextDate]) + rspmsch![Frequency]
322
zYear = Year(rspmsch![NextDate]) Dayno = rspmsch![DayofWeek] getNextDate (rspmsch![WeekofMonth]) ![NextDate] = PMDate .Update End With Loop ElseIf rspmsch![TypePMgen] = "4" And rspmsch![PMActive] = -1 Then zDay = Day(rspmsch![TargetStartDate]) Do While rspmsch![TargetStartDate] >= Me.date1 And rspmsch![TargetStartDate] <= Me.date2 Task = rspmsch![ChecklistNo] Set rsPMMulti = dbSICAM.OpenRecordset("MultiplePM") If rspmsch![PMMultiple] = True Then ' Verificar Multiples Tareas Do While Not rsPMMulti.EOF If rsPMMulti![MPMNo] = rspmsch![PMNo] Then If rspmsch![PMCounter] = 1 Or rsPMMulti![MPMCounter] = 1 Then rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MStartDateCount] rsPMMulti.Update End If If rsPMMulti![MSCount] = rspmsch![PMCounter] Then Task = rsPMMulti![MTaskNo] rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MSCount] + rsPMMulti![MSeq] rsPMMulti![MPMCounter] = rsPMMulti![MPMCounter] + 1 rsPMMulti.Update End If End If rsPMMulti.MoveNext Loop rsPMMulti.Close End If With rspmgen .AddNew ![PMNo] = rspmsch![PMNo] ![PMName] = rspmsch![PMName] ![TypePMgen] = rspmsch![TypePMgen] ![TypePM] = rspmsch![TypePM] ![PhyLocationNo] = rspmsch![PhyLocationNo] ![AssetNo] = rspmsch![AssetNo] ![ChecklistNo] = Task ![StartDate] = rspmsch![StartDate] ![PMCounter] = rspmsch![PMCounter] ![PeriodDays] = rspmsch![PeriodDays] ![Frequency] = rspmsch![Frequency] ![TargetStartDate] = rspmsch![TargetStartDate] ![TargetCompDate] = rspmsch![TargetCompDate] ![NextDate] = rspmsch![NextDate] ![PMWOTrade] = rspmsch![PMWOTrade] ![TargetStartDate] = rspmsch![TargetStartDate] ![TargetCompDate] = rspmsch![TargetCompDate] ![PMWOraise] = -1 .Update End With
323
With rspmsch .Edit ![PMCounter] = rspmsch![PMCounter] + 1 ![TargetStartDate] = rspmsch![NextDate] ![TargetCompDate] = rspmsch![TargetStartDate] + rspmsch![PeriodDays] - 1 PMDate = DateAdd("m", CDbl(rspmsch![Frequency]), rspmsch![TargetStartDate]) ![NextDate] = PMDate .Update End With Loop ElseIf rspmsch![TypePMgen] = "5" And rspmsch![PMActive] = -1 Then 'has been added after the changes to monthly schedule zDay = Day(rspmsch![TargetStartDate]) Do While rspmsch![TargetStartDate] >= Me.date1 And rspmsch![TargetStartDate] <= Me.date2 Task = rspmsch![ChecklistNo] Set rsPMMulti = dbSICAM.OpenRecordset("MultiplePM") If rspmsch![PMMultiple] = True Then ' Check for Multiple Task Do While Not rsPMMulti.EOF If rsPMMulti![MPMNo] = rspmsch![PMNo] Then If rspmsch![PMCounter] = 1 Or rsPMMulti![MPMCounter] = 1 Then rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MStartDateCount] rsPMMulti.Update End If If rsPMMulti![MSCount] = rspmsch![PMCounter] Then Task = rsPMMulti![MTaskNo] rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MSCount] + rsPMMulti![MSeq] rsPMMulti![MPMCounter] = rsPMMulti![MPMCounter] + 1 rsPMMulti.Update End If End If rsPMMulti.MoveNext Loop rsPMMulti.Close End If With rspmgen .AddNew ![PMNo] = rspmsch![PMNo] ![PMName] = rspmsch![PMName] ![TypePMgen] = rspmsch![TypePMgen] ![TypePM] = rspmsch![TypePM] ![PhyLocationNo] = rspmsch![PhyLocationNo] ![AssetNo] = rspmsch![AssetNo] ![ChecklistNo] = Task ![StartDate] = rspmsch![StartDate] ![PMCounter] = rspmsch![PMCounter] ![PeriodDays] = rspmsch![PeriodDays] ![Frequency] = rspmsch![Frequency] ![TargetStartDate] = rspmsch![TargetStartDate] ![TargetCompDate] = rspmsch![TargetCompDate] ![NextDate] = rspmsch![NextDate]
324
![PMWOTrade] = rspmsch![PMWOTrade] ![TargetStartDate] = rspmsch![TargetStartDate] ![TargetCompDate] = rspmsch![TargetCompDate] ![PMWOraise] = -1 .Update End With With rspmsch .Edit ![PMCounter] = rspmsch![PMCounter] + 1 ![TargetStartDate] = rspmsch![NextDate] ![TargetCompDate] = DateAdd("m", 1, rspmsch![TargetStartDate]) - 1 PMDate = DateAdd("m", CDbl(rspmsch![Frequency]), rspmsch![TargetStartDate]) ![NextDate] = PMDate .Update End With Loop End If rspmsch.MoveNext Loop Me.PmProgress.Value = 100 rspmgen.Close rspmsch.Close 'Generar la OT de MP 'Call WOPM 'Ver todas las OT de MP que ya han sido generadas Dim PMSList1, PMSList2 As String PMSList1 = "SELECT PMNo as [No de tarea], PMName as [Descripción de tarea], PMWONo as [No de OT], PMWOraise as [OT generada], ChecklistNo as [Código de instrucción], " & _ "AssetNo as [No de equipo], PhyLocationNo as [Ubicación],StartDate as [Fecha de Inicio], " & _ "TargetStartdate as [Fecha Programada de Inicio], TargetCompDate as [Fecha programada de término], NextDate as [Próxima fecha / Ejecución] " & _ "FROM PMGenerate WHERE TypePMGen In('1','3','4','5');" Me.List.RowSource = PMSList1 Me.List.ColumnCount = 12 Me.List.ColumnHeads = True Me.List.ColumnWidths = "3 cm; 8 cm; 4 cm; 3 cm; 5 cm; 3 cm; 3 cm; 3 cm; 5 cm; 5 cm; 5 cm" PMSList2 = "SELECT PMNo as [No de tarea], PMName as [Descripción de tarea], PMWONo as [No de OT ], PMWOraise as [OT generada], " & _ "ChecklistNo as [Código de instrucción], AssetNo as [No de equipo], PhyLocationNo as [Ubicación], StartDate as [Fecha de Inicio], " & _ "TargetStartdate as [Fecha Programada de Inicio], TargetCompDate as [Fecha programada de término], NextDate as [Próxima fecha / Ejecución] " & _ "FROM PMGenerate WHERE TypePMGen = '2';" Me.List1.RowSource = PMSList2 Me.List1.ColumnCount = 12 Me.List1.ColumnHeads = True Me.List1.ColumnWidths = "3 cm; 8 cm; 4 cm; 3 cm; 5 cm; 3 cm; 3 cm; 3 cm; 5 cm; 6 cm; 5 cm" contarreg Me.List.ListCount, Me.List1.ListCount
325
' Generar OT de MP Call WOPM 'Copiar fecha del rango a la tabla PMGenDate para bloquear la fecha de generación Set rsPMGenDate = dbSICAM.OpenRecordset("PMGenDates") With rsPMGenDate .AddNew ![FromDate] = Me.date1 ![ToDate] = Me.date2 ![DateGenerate] = Date .Update End With rsPMGenDate.Close DoCmd.GoToControl "Command19" Me.Command47.Enabled = False Me.Command63.Enabled = True Me.lblProgress.Visible = False Me.PmProgress.Visible = False Me.BoxPBar.Visible = False End Sub Private Sub Command63_Click() Dim stDocName, pmwono1, pmwono2 As String Dim stLinkCriteria As String Set dbSICAM = CurrentDb() Set rspmgent = dbSICAM.OpenRecordset("SELECT * From PMGenerate") If rspmgent.RecordCount <> 0 Then rspmgent.MoveFirst pmwono1 = rspmgent![PMWONo] rspmgent.MoveLast pmwono2 = rspmgent![PMWONo] stDocName = "ImpOT1" stLinkCriteria = "[workorderno] between " & "'" & pmwono1 & "'" & " and " & "'" & pmwono2 & "'" DoCmd.OpenReport stDocName, acViewPreview, , stLinkCriteria Else MsgBox "No existen Ordenes de Trabajo preventivas a imprimir", vbInformation End If rspmgent.Close End Sub Private Sub Command70_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Dim rsTemp As DAO.Recordset Dim sqlq As String Dim x1 As Object Dim result Dim strFileName As String On Error GoTo ExcelError Set x1 = CreateObject("Excel.Application") strFileName = Application.CurrentProject.Path + "\MPListaProyecc.xls"
326
Set db = CurrentDb Set rs = db.OpenRecordset("PMForecastTbl") db.Execute "Delete * From PMForecastTbl;" db.Execute "INSERT INTO PMForecastTbl ( Asset, PMNo, TaskNo, PMFrequency, TargetStartDate, TargetCompDate, NextDate ) " & _ "SELECT IIf(IsNull([pmgentemp].[assetno]),[pmgentemp].[PhyLocationNo] & ' (' & [location].[LocationDescription] & ')', " & _ "[pmgentemp].[AssetNo] & ' (' & [assets].[assetDescription] & ')') AS AssLoc, [PMGenTemp].[PMNo] & ' (' & [PMGenTemp].[PMName] & ')' AS PMNo, " & _ "PMGenTemp.ChecklistNo AS TaskNo, [PMSchTemp].[FreqUnits]*[PMSchTemp].[Frequency] AS PMFrequency, PMGenTemp.TargetStartDate, PMGenTemp.TargetCompDate, " & _ "PMGenTemp.NextDate " & _ "FROM (((PMGenTemp LEFT JOIN PMSchTemp ON PMGenTemp.PMNo = PMSchTemp.PMNo) LEFT JOIN Assets ON PMGenTemp.AssetNo = Assets.AssetNumber) LEFT JOIN PMChecklist ON PMGenTemp.ChecklistNo = PMChecklist.ChecklistNo) LEFT JOIN location ON PMGenTemp.PhyLocationNo = location.LocationNo;" DoCmd.TransferSpreadsheet acExport, 8, "PMForecastTbl", strFileName, True x1.Workbooks.Open strFileName x1.ActiveWorkbook.RefreshAll x1.ActiveWorkbook.Save x1.Worksheets("Sheet1").Activate x1.Visible = True Set x1 = Nothing Exit Sub ExcelError: MsgBox err.Description, vbExclamation End Sub Private Sub Command71_Click() Me.calCtl1.Visible = True Me.calCtl1.Value = Me.date1 End Sub Private Sub Date2_AfterUpdate() If Me.date2 < Me.date1 Then MsgBox "Segunda Fecha debe ser mayor a Fecha inicial", vbInformation, "SICAM" Me.date2 = Null DoCmd.GoToControl "date2" End If End Sub Private Sub Detail_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Error GoTo ErrorHandler If Me.calCtl1.Visible = True Then Me.calCtl1.Visible = False ErrorHandler: If err.Number <> 0 Then Me.date2.SetFocus If Me.calCtl1.Visible = True Then Me.calCtl1.Visible = False End If End Sub
327
Private Sub Form_Open(Cancel As Integer) Me.Command47.Enabled = False Me.Command70.Enabled = False Set dbSICAM = CurrentDb() Set rsPMGenDate = dbSICAM.OpenRecordset("SELECT * From PMGenDates") If rsPMGenDate.RecordCount <> 0 Then rsPMGenDate.MoveLast Me.LastPmGenDate = rsPMGenDate![DateGenerate] Me.LastPMDate1 = rsPMGenDate![FromDate] Me.LastPMDate2 = rsPMGenDate![ToDate] Me.date1 = rsPMGenDate![ToDate] + 1 End If rsPMGenDate.Close If IsNull(Me.LastPMDate2) Then Me.date1.Locked = False End If End Sub Private Sub Command19_Click() On Error GoTo Err_Command19_Click DoCmd.Close acForm, Me.Name Exit_Command19_Click: Exit Sub Err_Command19_Click: MsgBox err.Description Resume Exit_Command19_Click End Sub Private Sub GenWOno() Set dbSICAM = CurrentDb() Set rsworder = dbSICAM.OpenRecordset("SELECT * From Workorders Order By WorkorderNo ASC") If rsworder.RecordCount = 0 Then WONo = "0000000001" Else rsworder.MoveLast WONo = Right("0000000000" & CStr(val(Right(rsworder!WorkorderNo, 10) + 1)), 10) End If rsworder.Close End Sub Private Sub WOPM() Set dbSICAM = CurrentDb() Set rsWopm = dbSICAM.OpenRecordset("Workorders") Set rspmgen = dbSICAM.OpenRecordset("PMGenerate") Me.PBar.Value = 0 Me.PBar.Max = 100 Do While Not rspmgen.EOF Call GenWOno With rsWopm .AddNew ![WorkorderNo] = WONo ![DateReceived] = CDate(Format(ServerdateQuery(), "short date")) ![ProblemDescription] = rspmgen![PMName] ![PMTarStartDate] = rspmgen![TargetStartDate] ![PMTarCompDate] = rspmgen![TargetCompDate] ![PMType] = "1"
328
![WorkType] = 2 ![WorkStatus] = 1 ![WorkPriority] = 1 ![WOTrade] = rspmgen![PMWOTrade] ![PMNo] = rspmgen![PMNo] ![TaskNo] = rspmgen![ChecklistNo] If rspmgen![TypePM] = 1 Then Set rsAssetLoc = dbSICAM.OpenRecordset("SELECT LocationNo From Assets Where AssetNumber = '" & rspmgen![AssetNo] & "'") ![AssetNo] = rspmgen![AssetNo] ![LocationNo] = rsAssetLoc![LocationNo] rsAssetLoc.Close Else ![LocationNo] = rspmgen![PhyLocationNo] End If .Update End With rspmgen.Edit rspmgen![PMWONo] = WONo rspmgen![PMWOraise] = True rspmgen.Update Me.PmProgress = rspmgen.PercentPosition rspmgen.MoveNext Loop rspmgen.Close rsWopm.Close End Sub Function contarreg(aa As Integer, bb As Integer) Call CountRecord(Me.ListRec, List) Call CountRecord(Me.ListRec1, List1) End Function Sub GetDayofPM(weeksDay) If weeksDay > Dayno Then PMDate = tempDay - weeksDay + Dayno - _ IIf(weeksDay > Dayno, 0, 7) Else If weeksDay < Dayno Then PMDate = tempDay - weeksDay + Dayno + _ IIf(weeksDay < Dayno, 0, 7) Else PMDate = tempDay End If End If End Sub Sub GetPMDayLast(weeksDay) If weeksDay <> Dayno Then PMDate = tempDay - weeksDay + Dayno - _ IIf(weeksDay > Dayno, 0, 7) Else PMDate = tempDay End If End Sub Sub GetPMDayStart(weeksDay) If weeksDay <> Dayno Then PMDate = tempDay - weeksDay + Dayno + _ IIf(weeksDay < Dayno, 0, 7) Else PMDate = tempDay
329
End If End Sub Sub getNextDate(cboWeeks) If zMonth > 12 Then zYear = zYear + 1 zMonth = zMonth - 12 End If Select Case cboWeeks Case 0 firstDay = DateSerial(zYear, zMonth, 1) tempDay = firstDay GetPMDayStart (Weekday(firstDay)) Case 1, 2, 3 firstDay = DateSerial(zYear, zMonth, 1) tempDay = DateAdd("ww", cboWeeks, firstDay) GetDayofPM (Weekday(tempDay)) Case 4 lastDay = DateSerial(zYear, zMonth + 1, 0) tempDay = lastDay GetPMDayLast (Weekday(lastDay)) End Select End Sub Private Sub calCtl1_Click() Me.date2 = Me.calCtl1.Value Me.date2.SetFocus Me.calCtl1.Visible = False End Sub
Formulario Horas de mano de obra distribuidas en mantenimientos preventivos. Figura 41. – Formulario Horas de mano de obra distribuidas en mantenimiento preventivo. Este formularios muestra como se distribuyen las actividades de mantenimiento
330
preventivo semanalmente durante un año específico que el usuario puede introducir en la casilla
superior identificada como “Año” y luego presionando la tecla “Vista Preliminar”. Este formulario
puede ayudar a redistribuir mejor las actividades de mantenimiento en caso de que sea
necesario, por ejemplo, en el caso de que existan semanas cuya carga de trabajo sea alta y
existan actividades que no sean críticas. El formulario muestra la carga de trabajo en horas por
semana. Cada columna del formulario representa la semana del año y el número dentro de
cada casilla representa las horas planificadas para labores de mantenimiento preventivo. El
código de programa para este formulario es el siguiente:
'*********************** ' ' Horas de MP semanales ' '************************ Option Explicit Dim firstDay As Date Dim tempDay As Date Dim lastDay As Date Dim PMDate As Date Dim zMonth As Integer Dim zYear As Integer Dim targetYear As Integer Dim targetMonth As Integer Dim Dayno As Integer Dim zDay As Integer Dim MyYear As String Private Sub Command13_Click() On Error GoTo Err_Command13_Click DoCmd.Close acForm, Me.Name Exit_Command13_Click: Exit Sub Err_Command13_Click: MsgBox err.Description Resume Exit_Command13_Click End Sub Private Sub Command19_Click() Dim i As Integer If IsNull(Me.TxtYear) Or Trim(Me.TxtYear) = "" Then MsgBox "Indique el año", vbInformation, "SICAM" Me.TxtYear.SetFocus Exit Sub End If MyYear = Me.TxtYear.Value Set dbSICAM = CurrentDb() dbSICAM.Execute "DELETE * FROM [PMScheduleTable];" dbSICAM.Execute "INSERT INTO PMScheduleTable ( PMTask,Month1,Month2,Description,AssetDesc, PhyLoc, Status, Color, StartDate, EndDate, [Year], PMFreq, PMFrequency, AstNo, LocNo )" & _ "SELECT pmchecklist.ChecklistNo, Format([PMTarStartDate],'ww'),pmchecklist.EstimatedLaborHours, IIf([AssetDesc]='-',[PhyLocDesc],[AssetDesc]) AS Description,IIf(IsNull([workorders].[assetno]),'-',[AssetDescription] & ' (' &
331
[AssetNumber] & ') ' & '(PM No:' & [PMSchedule].[PMNo] & ') ' & '(Task No:' & [workorders].[taskNo] & ')') AS AssetDesc, " & _ "IIf(IsNull([workorders].[assetno]),[location].[locationDescription] & ' (' & [location].[LocationNo] & ')' & ' (PM No:' & [workorders].[PMNo] & ') ' & '(Task No:' & [workorders].[TaskNo] & ')','-') AS PhyLocDesc, " & _ "WorkStatus.WorkStatus AS Status, tblWOStatusLegend.Color, Workorders.PMTarStartDate AS [Start Date], Workorders.PMTarCompDate AS [End Date], Format([PMTarStartDate],'yyyy') AS Expr1, [frequnits]*[frequency] AS Freq, " & _ "IIf([Freq]=7,'W',IIf([freq]=28,'M',IIf([freq]=84,'Q',IIf([freq]=168,'H',IIf([freq]=336,'Y',[frequency]))))) AS PMFrequency, Assets.AssetNumber, Assets.LocationNo " & _ "FROM ((((Workorders INNER JOIN (WorkStatus INNER JOIN tblWOStatusLegend ON WorkStatus.WorkStatusID = tblWOStatusLegend.WOStatusID) ON Workorders.WorkStatus = tblWOStatusLegend.WOStatusID) " & _ "LEFT JOIN Assets ON Workorders.AssetNo = Assets.AssetNumber) " & _ "LEFT JOIN pmchecklist ON Workorders.TaskNo = pmchecklist.ChecklistNo) " & _ "LEFT JOIN pmschedule ON Workorders.PMNo = pmschedule.PMNo) " & _ "LEFT JOIN location ON Workorders.LocationNo = location.LocationNo " & _ "WHERE (((Format([PMTarStartDate],'yyyy'))='" & MyYear & "'));" Call GenSchedule dbSICAM.Execute "INSERT INTO PMScheduleTable ( PMTask,Month1,Month2,Description,AssetDesc, PhyLoc, WorkStatus, Color, [StartDate], [EndDate], [Year], PMFreq, PMFrequency, AstNo, LocNo, PhyLocationNo ) " & _ "SELECT pmchecklist.ChecklistNo, Format([start date],'ww'),pmchecklist.EstimatedLaborHours, IIf([AssetDesc]='-',[PhyLocDesc],[AssetDesc]) AS Description,IIf(IsNull([assetNo]),'-',[AssetDescription] & ' (' & [AssetNumber] & ')' & ' (PM No:' & PMgentemp.PMNo & ') ' & '(Task No:' & PMgentemp.ChecklistNo & ')') AS AssetDesc, " & _ "IIf(IsNull([PhylocationNo]),'-',[locationDescription] & ' (' & [PhyLocationNo] & ')' & ' (PM No:' & [PMgentemp].[PMNo] & ') ' & '(Task No:' & [PMgentemp].[ChecklistNo] & ')') AS PhyLocDesc, " & _ "'Schedule' AS Workstatus, 65535 AS Color, PMGenTemp.TargetStartDate AS [Start Date], PMGenTemp.TargetCompDate AS [End Date], Format([start date],'yyyy') AS [Year], [frequnits]*[frequency] AS Freq, " & _ "IIf([Freq]=7,'W',IIf([freq]=28,'M',IIf([freq]=84,'Q',IIf([freq]=168,'H',IIf([freq]=336,'Y',[FREQUENCY]& 'M'))))) AS PMFrequency, Assets.AssetNumber, Assets.LocationNo, PMGenTemp.PhyLocationNo " & _ "FROM ((PMGenTemp LEFT JOIN Assets ON PMGenTemp.AssetNo = Assets.AssetNumber) " & _ "LEFT JOIN pmchecklist ON PMGenTemp.ChecklistNo = pmchecklist.ChecklistNo) " & _ "LEFT JOIN location ON PMGenTemp.PhyLocationNo = location.LocationNo " & _ "WHERE year(PMGenTemp.TargetStartDate) = " + MyYear MyList.ListItems.Clear Dim rc As DAO.Recordset Set rc = dbSICAM.OpenRecordset("SELECT PMScheduleTable.Month1 as Week, Sum(PMScheduleTable.Month2) AS ManHours FROM PMScheduleTable GROUP BY PMScheduleTable.Month1 ORDER BY PMScheduleTable.Month1;") While Not rc.EOF If rc(0) = 1 Then MyList.ListItems.Add , , rc(1) ElseIf MyList.ListItems.Count = 0 Then MyList.ListItems.Add , , "" MyList.ListItems(MyList.ListItems.Count).SubItems(CInt(rc(0)) - 1) = rc(1) ' MyList.ListItems(MyList.ListItems.Count).SubItems(CInt(rc(0)) - 1) = rc(1) Else MyList.ListItems(MyList.ListItems.Count).SubItems(CInt(rc(0)) - 1) =
332
rc(1) ' MyList.ListItems(MyList.ListItems.Count).SubItems(CInt(rc(0)) - 1) = rc(1) End If Me.PBar = rc.PercentPosition rc.MoveNext If MyList.ListItems(MyList.ListItems.Count) = "" Then MyList.ListItems(MyList.ListItems.Count) = 0 For i = 2 To 53 If MyList.ListItems(MyList.ListItems.Count).SubItems(i - 1) = "" Then MyList.ListItems(MyList.ListItems.Count).SubItems(i - 1) = 0 Next Wend Me.PBar = 0 rc.Close Set rc = Nothing MyList.SetFocus End Sub Private Sub GenSchedule() Dim rsPMschTemp As DAO.Recordset, rsPMGenDate, rsPMGenTemp, rsPMMulti As DAO.Recordset Dim daterange1, daterange2 As Date Dim Task, MFrequency, dt1 As String Dim FUnit As Integer Set dbSICAM = CurrentDb() Set rsPMGenDate = dbSICAM.OpenRecordset("SELECT * From PMGenDates") If rsPMGenDate.RecordCount <> 0 Then rsPMGenDate.MoveLast daterange1 = rsPMGenDate![ToDate] + 1 Else daterange1 = DateSerial(2002, 1, 1) End If daterange2 = DateSerial(CInt(MyYear), 12, 31) rsPMGenDate.Close dbSICAM.Execute "DELETE * FROM [PMSchTemp];" dbSICAM.Execute "DELETE * FROM [PMGenTemp];" dbSICAM.Execute "DELETE * FROM [MultiplePMTemp];" dbSICAM.Execute "INSERT INTO [PMSchTemp] SELECT * FROM [PMSchedule];" dbSICAM.Execute "INSERT INTO [MultiplePMTemp] SELECT * FROM [MultiplePM];" Set rsPMGenTemp = dbSICAM.OpenRecordset("PMGenTemp") Set rsPMschTemp = dbSICAM.OpenRecordset("PMSchTemp") Do While Not rsPMschTemp.EOF ' loop#1 If rsPMschTemp![TypePMgen] = "1" And rsPMschTemp![PMActive] = -1 Then 'tipo de MP (programado) si #1 Do While rsPMschTemp![TargetStartDate] >= daterange1 And rsPMschTemp![TargetStartDate] <= daterange2 Task = rsPMschTemp![ChecklistNo] MFrequency = rsPMschTemp![Frequency] FUnit = rsPMschTemp![FreqUnits] Set rsPMMulti = dbSICAM.OpenRecordset("MultiplePMTemp") If rsPMschTemp![PMMultiple] = True Then Do While Not rsPMMulti.EOF If rsPMMulti![MPMNo] = rsPMschTemp![PMNo] Then
333
If rsPMschTemp![PMCounter] = 1 Or rsPMMulti![MPMCounter] = 1 Then rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MStartDateCount] rsPMMulti.Update End If If rsPMMulti![MSCount] = rsPMschTemp![PMCounter] Then Task = rsPMMulti![MTaskNo] FUnit = rsPMschTemp![FreqUnits] * rsPMschTemp![Frequency] MFrequency = rsPMMulti![MSeq] rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MSCount] + rsPMMulti![MSeq] rsPMMulti![MPMCounter] = rsPMMulti![MPMCounter] + 1 rsPMMulti.Update End If End If rsPMMulti.MoveNext Loop rsPMMulti.Close End If With rsPMGenTemp .AddNew ![PMNo] = rsPMschTemp![PMNo] ![PMName] = rsPMschTemp![PMName] ![TypePMgen] = rsPMschTemp![TypePMgen] ![AssetNo] = rsPMschTemp![AssetNo] ![PhyLocationNo] = rsPMschTemp![PhyLocationNo] ![ChecklistNo] = Task ![StartDate] = rsPMschTemp![StartDate] ![PMCounter] = rsPMschTemp![PMCounter] ![PeriodDays] = rsPMschTemp![PeriodDays] ![FreqUnits] = FUnit ![Frequency] = MFrequency ![TargetStartDate] = rsPMschTemp![TargetStartDate] ![TargetCompDate] = rsPMschTemp![TargetCompDate] ![NextDate] = rsPMschTemp![NextDate] ![PMWOTrade] = rsPMschTemp![PMWOTrade] .Update End With With rsPMschTemp .Edit ![PMCounter] = rsPMschTemp![PMCounter] + 1 ![TargetStartDate] = rsPMschTemp![NextDate] ![TargetCompDate] = rsPMschTemp![TargetStartDate] + rsPMschTemp![PeriodDays] - 1 ![NextDate] = rsPMschTemp![TargetStartDate] + (rsPMschTemp![Frequency] * rsPMschTemp![FreqUnits]) .Update End With Loop ElseIf rsPMschTemp![TypePMgen] = "2" And rsPMschTemp![PMActive] = -1 Then ' Ver MP basado en Fecha de termino actual (if#1) Dim ActualCond ActualCond = IIf(rsPMschTemp![PMCounter] = 1, rsPMschTemp![TargetStartDate] <= daterange2, rsPMschTemp![ActualCompDate] <> "" And rsPMschTemp![NextDate] <= daterange2) If ActualCond Then
334
Task = rsPMschTemp![ChecklistNo] 'Copiar desde PM Schedule a PMSchTemp Set rsPMMulti = dbSICAM.OpenRecordset("MultiplePMTemp") If rsPMschTemp![PMMultiple] = True Then Do While Not rsPMMulti.EOF If rsPMMulti![MPMNo] = rsPMschTemp![PMNo] Then If rsPMschTemp![PMCounter] = 1 Or rsPMMulti![MPMCounter] = 1 Then rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MStartDateCount] rsPMMulti.Update End If If rsPMMulti![MSCount] = rsPMschTemp![PMCounter] Then Task = rsPMMulti![MTaskNo] rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MSCount] + rsPMMulti![MSeq] rsPMMulti![MPMCounter] = rsPMMulti![MPMCounter] + 1 rsPMMulti.Update End If End If rsPMMulti.MoveNext Loop rsPMMulti.Close End If If IsNull(rsPMschTemp![ActualCompDate]) Then If rsPMschTemp![PMCounter] = 1 Then ' Orden de trabajo de MP se generara por primera vez With rsPMGenTemp .AddNew ![PMNo] = rsPMschTemp![PMNo] ![PMName] = rsPMschTemp![PMName] ![TypePMgen] = rsPMschTemp![TypePMgen] ![AssetNo] = rsPMschTemp![AssetNo] ![PhyLocationNo] = rsPMschTemp![PhyLocationNo] ![ChecklistNo] = Task ![StartDate] = rsPMschTemp![StartDate] ![PMCounter] = rsPMschTemp![PMCounter] ![PeriodDays] = rsPMschTemp![PeriodDays] ![FreqUnits] = rsPMschTemp![FreqUnits] ![Frequency] = rsPMschTemp![Frequency] ![TargetStartDate] = rsPMschTemp![TargetStartDate] ![TargetCompDate] = rsPMschTemp![TargetCompDate] ![PMWOTrade] = rsPMschTemp![PMWOTrade] .Update End With With rsPMschTemp .Edit ![PMCounter] = rsPMschTemp![PMCounter] + 1 .Update End With End If Else 'Generación de MP se hará cuando se de la fecha de Fin Actual With rsPMschTemp
335
.Edit ![TargetStartDate] = rsPMschTemp![NextDate] ![TargetCompDate] = rsPMschTemp![TargetStartDate] + rsPMschTemp![PeriodDays] - 1 .Update End With With rsPMGenTemp .AddNew ![PMNo] = rsPMschTemp![PMNo] ![PMName] = rsPMschTemp![PMName] ![TypePMgen] = rsPMschTemp![TypePMgen] ![AssetNo] = rsPMschTemp![AssetNo] ![PhyLocationNo] = rsPMschTemp![PhyLocationNo] ![ChecklistNo] = Task ![StartDate] = rsPMschTemp![StartDate] ![PMCounter] = rsPMschTemp![PMCounter] ![PeriodDays] = rsPMschTemp![PeriodDays] ![FreqUnits] = rsPMschTemp![FreqUnits] ![Frequency] = rsPMschTemp![Frequency] ![TargetStartDate] = rsPMschTemp![TargetStartDate] ![TargetCompDate] = rsPMschTemp![TargetCompDate] ![PMWOTrade] = rsPMschTemp![PMWOTrade] .Update End With With rsPMschTemp .Edit ![PMCounter] = rsPMschTemp![PMCounter] + 1 .Update End With End If End If ElseIf rsPMschTemp![TypePMgen] = "3" And rsPMschTemp![PMActive] = -1 Then Do While rsPMschTemp![TargetStartDate] >= daterange1 And rsPMschTemp![TargetStartDate] <= daterange2 Task = rsPMschTemp![ChecklistNo] 'MFrequency = rsPMschTemp![Frequency] 'MFrequency = rsPMschTemp![Frequency] 'FUnit = rsPMschTemp![FreqUnits] 'FUnit = rsPMschTemp![FreqUnits] Set rsPMMulti = dbSICAM.OpenRecordset("MultiplePMTemp") If rsPMschTemp![PMMultiple] = True Then Do While Not rsPMMulti.EOF If rsPMMulti![MPMNo] = rsPMschTemp![PMNo] Then If rsPMschTemp![PMCounter] = 1 Or rsPMMulti![MPMCounter] = 1 Then rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MStartDateCount] rsPMMulti.Update End If If rsPMMulti![MSCount] = rsPMschTemp![PMCounter] Then Task = rsPMMulti![MTaskNo] rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MSCount] + rsPMMulti![MSeq] rsPMMulti![MPMCounter] = rsPMMulti![MPMCounter] + 1 rsPMMulti.Update
336
End If End If rsPMMulti.MoveNext Loop rsPMMulti.Close End If With rsPMGenTemp .AddNew ![PMNo] = rsPMschTemp![PMNo] ![PMName] = rsPMschTemp![PMName] ![TypePMgen] = rsPMschTemp![TypePMgen] ![AssetNo] = rsPMschTemp![AssetNo] ![PhyLocationNo] = rsPMschTemp![PhyLocationNo] ![ChecklistNo] = Task ![StartDate] = rsPMschTemp![StartDate] ![PMCounter] = rsPMschTemp![PMCounter] ![PeriodDays] = rsPMschTemp![PeriodDays] ![Frequency] = rsPMschTemp![Frequency] ![TargetStartDate] = rsPMschTemp![TargetStartDate] ![TargetCompDate] = rsPMschTemp![TargetCompDate] ![NextDate] = rsPMschTemp![NextDate] ![PMWOTrade] = rsPMschTemp![PMWOTrade] ![WeekofMonth] = rsPMschTemp![WeekofMonth] ![DayofWeek] = rsPMschTemp![DayofWeek] .Update End With 'cambiar aqui' With rsPMschTemp .Edit ![PMCounter] = rsPMschTemp![PMCounter] + 1 ![TargetStartDate] = rsPMschTemp![NextDate] ![TargetCompDate] = rsPMschTemp![TargetStartDate] + rsPMschTemp![PeriodDays] - 1 zMonth = Month(rsPMschTemp![NextDate]) + rsPMschTemp![Frequency] zYear = Format(CDate(rsPMschTemp![NextDate]), "yyyy") Dayno = rsPMschTemp![DayofWeek] getNextDate (rsPMschTemp![WeekofMonth]) ![NextDate] = PMDate .Update End With 'rsPMschTemp.MoveNext Loop ElseIf rsPMschTemp![TypePMgen] = "4" And rsPMschTemp![PMActive] = -1 Then zDay = Day(rsPMschTemp![TargetStartDate]) Do While rsPMschTemp![TargetStartDate] >= daterange1 And rsPMschTemp![TargetStartDate] <= daterange2 Task = rsPMschTemp![ChecklistNo] Set rsPMMulti = dbSICAM.OpenRecordset("MultiplePMTemp") If rsPMschTemp![PMMultiple] = True Then Do While Not rsPMMulti.EOF If rsPMMulti![MPMNo] = rsPMschTemp![PMNo] Then If rsPMschTemp![PMCounter] = 1 Or rsPMMulti![MPMCounter] = 1 Then rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MStartDateCount] rsPMMulti.Update End If If rsPMMulti![MSCount] = rsPMschTemp![PMCounter] Then
337
Task = rsPMMulti![MTaskNo] rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MSCount] + rsPMMulti![MSeq] rsPMMulti![MPMCounter] = rsPMMulti![MPMCounter] + 1 rsPMMulti.Update End If End If rsPMMulti.MoveNext Loop rsPMMulti.Close End If With rsPMGenTemp .AddNew ![PMNo] = rsPMschTemp![PMNo] ![PMName] = rsPMschTemp![PMName] ![TypePMgen] = rsPMschTemp![TypePMgen] ![AssetNo] = rsPMschTemp![AssetNo] ![PhyLocationNo] = rsPMschTemp![PhyLocationNo] ![ChecklistNo] = Task ![StartDate] = rsPMschTemp![StartDate] ![PMCounter] = rsPMschTemp![PMCounter] ![PeriodDays] = rsPMschTemp![PeriodDays] ![Frequency] = rsPMschTemp![Frequency] ![TargetStartDate] = rsPMschTemp![TargetStartDate] ![TargetCompDate] = rsPMschTemp![TargetCompDate] ![NextDate] = rsPMschTemp![NextDate] ![PMWOTrade] = rsPMschTemp![PMWOTrade] ![WeekofMonth] = rsPMschTemp![WeekofMonth] ![DayofWeek] = rsPMschTemp![DayofWeek] .Update End With 'cambiar aqui' With rsPMschTemp .Edit ![PMCounter] = rsPMschTemp![PMCounter] + 1 ![TargetStartDate] = rsPMschTemp![NextDate] ![TargetCompDate] = rsPMschTemp![TargetStartDate] + rsPMschTemp![PeriodDays] - 1 PMDate = DateAdd("m", CDbl(rsPMschTemp![Frequency]), CDate(rsPMschTemp![NextDate])) ![NextDate] = PMDate .Update End With Loop ElseIf rsPMschTemp![TypePMgen] = "5" And rsPMschTemp![PMActive] = -1 Then 'has been added after the changes to monthly schedule zDay = Day(rsPMschTemp![TargetStartDate]) Do While rsPMschTemp![TargetStartDate] >= daterange1 And rsPMschTemp![TargetStartDate] <= daterange2 Task = rsPMschTemp![ChecklistNo] Set rsPMMulti = dbSICAM.OpenRecordset("MultiplePM") If rsPMschTemp![PMMultiple] = True Then ' Verificar para Tareas Múltiples Do While Not rsPMMulti.EOF If rsPMMulti![MPMNo] = rsPMschTemp![PMNo] Then If rsPMschTemp![PMCounter] = 1 Or rsPMMulti![MPMCounter] = 1 Then rsPMMulti.Edit rsPMMulti![MSCount] =
338
rsPMMulti![MStartDateCount] rsPMMulti.Update End If If rsPMMulti![MSCount] = rsPMschTemp![PMCounter] Then Task = rsPMMulti![MTaskNo] rsPMMulti.Edit rsPMMulti![MSCount] = rsPMMulti![MSCount] + rsPMMulti![MSeq] rsPMMulti![MPMCounter] = rsPMMulti![MPMCounter] + 1 rsPMMulti.Update End If End If rsPMMulti.MoveNext Loop rsPMMulti.Close End If With rsPMGenTemp .AddNew ![PMNo] = rsPMschTemp![PMNo] ![PMName] = rsPMschTemp![PMName] ![TypePMgen] = rsPMschTemp![TypePMgen] ![TypePM] = rsPMschTemp![TypePM] ![PhyLocationNo] = rsPMschTemp![PhyLocationNo] ![AssetNo] = rsPMschTemp![AssetNo] ![ChecklistNo] = Task ![StartDate] = rsPMschTemp![StartDate] ![PMCounter] = rsPMschTemp![PMCounter] ![PeriodDays] = rsPMschTemp![PeriodDays] ![Frequency] = rsPMschTemp![Frequency] ![TargetStartDate] = rsPMschTemp![TargetStartDate] ![TargetCompDate] = rsPMschTemp![TargetCompDate] ![NextDate] = rsPMschTemp![NextDate] ![PMWOTrade] = rsPMschTemp![PMWOTrade] ![TargetStartDate] = rsPMschTemp![TargetStartDate] ![TargetCompDate] = rsPMschTemp![TargetCompDate] ![PMWOraise] = -1 .Update End With With rsPMschTemp .Edit ![PMCounter] = rsPMschTemp![PMCounter] + 1 ![TargetStartDate] = rsPMschTemp![NextDate] ![TargetCompDate] = DateAdd("m", 1, rsPMschTemp![TargetStartDate]) - 1 PMDate = DateAdd("m", CDbl(rsPMschTemp![Frequency]), rsPMschTemp![TargetStartDate]) ![NextDate] = PMDate .Update End With Loop End If 'If No.1 Me.PBar = rsPMschTemp.PercentPosition rsPMschTemp.MoveNext Loop 'Loop No.1 Me.PBar = 0 rsPMGenTemp.Close rsPMschTemp.Close End Sub Sub GetDayofPM(weeksDay)
339
If weeksDay > Dayno Then PMDate = tempDay - weeksDay + Dayno - _ IIf(weeksDay > Dayno, 0, 7) Else If weeksDay < Dayno Then PMDate = tempDay - weeksDay + Dayno + _ IIf(weeksDay < Dayno, 0, 7) Else PMDate = tempDay End If End If End Sub Sub GetPMDayLast(weeksDay) If weeksDay <> Dayno Then PMDate = tempDay - weeksDay + Dayno - _ IIf(weeksDay > Dayno, 0, 7) Else PMDate = tempDay End If End Sub Sub GetPMDayStart(weeksDay) If weeksDay <> Dayno Then PMDate = tempDay - weeksDay + Dayno + _ IIf(weeksDay < Dayno, 0, 7) Else PMDate = tempDay End If End Sub Sub getNextDate(cboWeeks) If zMonth > 12 Then zYear = zYear + 1 zMonth = zMonth - 12 End If Select Case cboWeeks Case 0 firstDay = DateSerial(zYear, zMonth, 1) tempDay = firstDay GetPMDayStart (Weekday(firstDay)) Case 1, 2, 3 firstDay = DateSerial(zYear, zMonth, 1) tempDay = DateAdd("ww", cboWeeks, firstDay) GetDayofPM (Weekday(tempDay)) Case 4 lastDay = DateSerial(zYear, zMonth + 1, 0) tempDay = lastDay GetPMDayLast (Weekday(lastDay)) End Select End Sub Private Sub Form_Activate() DoCmd.Restore End Sub Private Sub Form_Deactivate() DoCmd.Minimize End Sub Private Sub Form_Load() Dim i As Integer For i = 1 To 53 MyList.ColumnHeaders.Add , , i, 1000 Next Command19_Click
340
End Sub
4.7.4.3. – Programación adicional. El código de programa restante desarrollado como parte del sistema automatizado se
entrega en un disco compacto adjunto en la sección de anexos debido a que el listado del
mismo es muy extenso.
CONCLUSIONES
Del proyecto de investigación desarrollado se puede afirmar que según la percepción del
personal de mantenimiento de las instituciones policiales con el que se estuvo trabajando, el
diseño de la aplicación para computadoras, como parte fundamental para el mejoramiento de
las actividades de mantenimiento que se lleva a cabo en estos organismos, representa un
avance importante en la búsqueda de la optimización de la gestión del mantenimiento. El hecho
de contar con un sistema de información automatizado permite controlar en todo momento
todas las actividades relacionadas con mantenimiento de los equipos y maquinarias y, a la vez,
llevar registros históricos de las labores realizadas a cada uno de los equipos. Al poder obtener
estos registros se pueden realizar también predicciones, gráficos y estimaciones acerca de la
vida útil restante de cada equipo o de sus partes según su historial. Así mismo, con utilización
del sistema automatizado se ahorra considerablemente tiempo en las labores de oficina que se
realizan a mano como la generación de órdenes de trabajo, reportes, órdenes de compra y
listados ya que el sistema permite hacer todas estas tareas en muy breve tiempo y realizar una
gran variedad de consultas de información.
Por otra parte, se determinó que para llevar un control adecuado de los inventarios de
almacén es indispensable utilizar una aplicación para computadoras diseñada exclusivamente
para el manejo de inventarios. El sistema automatizado desarrollado cuenta con un módulo de
programa que cumple las funciones principales que se llevan a cabo en un almacén de partes y
repuestos. Realizadas las pruebas de este módulo se verificó que el mismo realiza todas las
funciones esperadas por el personal de almacén y otras adicionales como el control de stocks
que optimizan y automatizan sus labores.
Así mismo, mediante la aplicación de los indicadores o índices de control propuestos los
departamentos de mantenimiento de las instituciones policiales podrán monitorear
constantemente el desempeño de sus procesos de mantenimiento, con la ventaja de poder
seleccionar sus períodos de estudio, sacar estadísticas y tomar decisiones que permitan
mejorar su gestión.
341
342
RECOMENDACIONES
Se presentan a continuación algunas recomendaciones para el mejor aprovechamiento y
utilidad de la aplicación desarrollada.
Para el mayor entendimiento de las ventajas que ofrece el uso de la tecnología en la
gestión del mantenimiento es recomendable que los departamentos encargados
presenten a la directiva de las instituciones policiales la filosofía de las nuevas técnicas
de mantenimiento, como el mantenimiento clase mundial, donde un sistema de
información y registros juega un papel importante para la optimización de los procesos,
reducción de costos y mayor disponibilidad de los equipos y maquinarias.
Es importante que los departamentos de mantenimiento de estas instituciones sean los
pioneros en proponer cambios en la manera en la cual normalmente se ve el
mantenimiento en este tipo de instituciones, los cuales lo consideran como un costo y no
como una inversión. Si estos departamentos logran cambiar esta visión errada de las
gerencias se obtendrán sin ninguna duda resultados en el mediano y largo plazo.
Es recomendable que para implementar los cambios propuestos se comience con el
mejoramiento en los procedimientos de los almacenes en el manejo de inventarios y en
la dotación adecuada de los mismos. Luego proceder con la instrucción al personal de
mantenimiento en los nuevos procedimientos y en materia de seguridad.
Para el manejo del sistema automatizado se recomienda seleccionar un personal que se
entrene en el uso del mismo y que se destine un período de prueba en el cual se
verifique que los operadores del mismo conocen el uso de todos los módulos de
programa que conforman la aplicación. Luego de este período de entrenamiento se
puede proceder a implantar el sistema automatizado.
BIBLIOGRAFIA
Abarca, Patricio. (2003). Sistemas de Control Automático. AIE Asociación de la Industria
Eléctrica Electrónica. http://www.aie.cl/comites/automat/glosario/Sistemas _Control_Automatico.
htm
Abdellah FG, Levine E. (1994). Preparing Nursing Research forn the 21st Century.
Methodologies, Challenges. New York. Usa.
Aiello Mazzari, C. (2004). Manual de Procedimientos y Guía para la elaboración del trabajo
especial de grado, trabajo de grado y tesis doctoral. Primera edición, Universidad del Zulia.
Facultad de ingeniería. División de Postgrado. Maracaibo, Venezuela.
Bavaresco de Prieto, A. Proceso metodológico en la investigación. 2da edición. Academia
Nacional de Ciencias Económicas y Sociales. Universidad del Zulia. Maracaibo, Venezuela.
Cegarra Sanchez, José. (2005). Metodología de la investigación científica y tecnológica.
Ediciones Díaz de Santos. Barcelona, España.
Comisión Venezolana de Normas Industriales. (1993). Norma Covenin 3049-93. Ministerio
de Fomento. Diciembre 1, 1993.
Computerized Maintenance Management System. (2007). [On-line]. Disponible en
http://en.wikipedia.org/wiki/CMMS.
Cox Joyce, Lambert Steve, Nelson Gale, Preppernau Joan. (2004). Microsoft Office Access
2003 Step by Step. 1era edición. Microsoft Press. Redmond, Washington, Estados Unidos de
America.
Erol Isaac Zabiski Duardo. Los sistemas GMAC (CMMS) y la toma de decisiones en el
mantenimiento. Articulo publicado en revista Con Gestión, número 5. La Habana, Cuba.
Finol, Joseline. (2002). Diseño de un Sistema de Mantenimiento Preventivo de los equipos
para empresas de servicios. Trabajo de grado. Facultad de Ingeniería. División de Postgrado.
Universidad del Zulia. Maracaibo, Venezuela.
343
García Garrido, Santiago. (2003). Organización y gestión integral de mantenimiento. Ediciones
Díaz de Santos.
http://www.gmao.es/gmao.htm
Herrera, Amilcar. (1994). Las nuevas tecnologías y el futuro de América Latina: riesgo y
oportunidad, Editorial Siglo veintiuno.
Knezevic, Jezdimir. (1996). Mantenimiento. Isdefe. Publicaciones de ingeniería de sistemas.
Primera edición. Madrid, España.
Levine E, Abdellah FG (1994). Preparing Nursing Research for the 21st Century. Evolution.
Methodologies, Changes. Springer: New York.
MaintSmart. (2005). [On-line]. Disponible en http://www.maintsmart.com/.
Minboss. (2006). Why CMMS?. [On-line]. Disponible en http://mainboss.com
/spanish/resources/whycmms.shtml.
Montilva Calderón, J., Besembel Carrera, I., Pérez de Ovalles, M. y Losavio, F. (2004).
Sistemas de información e ingeniería de software. 1era edición. Centro de estudios en
informática. Mérida, Venezuela.
Muller, Max. (2005). Fundamentos de administración de inventarios. Grupo editorial Norma.
Bogotá, Colombia.
Muñoz Razo, Carlos. (1998). Cómo elaborar y asesorar una investigación de tesis. Prentice
Hall. México, México.
Nava, José Domingo. (1992).Teoría de mantenimiento. Fiabilidad. Editado por el consejo de
publicaciones de la Universidad de los Andes.
Newbrough E.T. (1967). Effective maintenance management. Mc Graw Hill. Usa.
Ortiz Frida, García María P. (2003). Metodología de la investigación: el proceso y sus técnicas,
Ed. Limusa. México, México.
Perspective CMMS. The Benefits of Maintenance Software. (2006) [On-line]. Disponible en
344
345
http://www.pemms.co.uk/Assets/images/qube1.jpg y http://www.pemms.co.uk/ Assets/images
/qube2.jpg.
Rosaler, Robert C. (1997). HVAC Maintenance and operations handbook. McGraw-Hill
Professional.
Sethi, R. (1992). Lenguajes de programación: conceptos y constructores, Addison-Wesley
Iberoamericana.
Sexto, Luis Felipe. (2006). Clase Mundial, excelencia y mejora continua. Nota técnica No. 123.
Centro de estudios en ingeniería de mantenimiento. Coordinación editorial Ceim-Cujae. La
Habana, Cuba.
Stair, Ralph y Walter, George. (2000). Principios de sistemas de información: enfoque
administrativo. Thomson Learning Ibero.
Tamayo y Tamayo, Mario. (1990). El proceso de la investigación científica. Limusa Noriega
Editores. Segunda edición. México, México.
Tavares Lourival, A. (2004). Administración moderna del mantenimiento. 1era Edición, Novo
Polo Publicaciones. Brasil.
Wildman, Claudia. (2003). Desarrollo de un Sistema Computacional para el control de equipos
y trabajos en empresas productoras de vinos. Trabajo de grado. Facultad de Ingeniería.
Universidad del Zulia. Maracaibo, Venezuela.
Top Related