Calculo en access para mantencion programada

De esta gran comunidad

Tengo una duda para sacar un calculo en access y les explico un poco el tema

Resulta que estoy realizando una aplicación acces para el control de mantenciones de equipos (no importa el tipo de equipo) y bueno ya esta casi en su fase final pero se me ocurrió implementar un formulario que el usuario ingresa la ultima mantencion realizada en un campo "fecha"(ejemplo 07/08/2019), luego ingresa el periodo de la mantencion le siguen un campo "Periodo", lo cual es cada ciertas horas (ejemplo 250 horas trabajadas), también ingresa en otro campo "Horas" las horas trabajadas por día (Ejemplo 6 diarias), finalmente en otro campo "semana" nos indica cuantos días trabaja en la semana(ejemplo 5 días) . Con esto yo he logrado calcular lo siguiente:

Fecha=07/08/2019

Periodo=250 Horas

Horas Día= 6Horas

Días Semana =5 Días

Horas Día *Días Semana= 30 Horas Resultado (semana de 5 días)

Periodo/Horas Resultado =8,3333333333 "Semanas"

semanas*Días Semana=41.666 Días Resultado

Finalmente Días Resultado+1 =Próxima mantencion

Pero si calculo el total de dias semana* Horas dia= 249,996 (perfecto me da el periodo)

Aquí es donde tengo varias dudas , ya que intuyo por lógica que esto esta mal 

Primero porque me faltan los días no trabajados en la semana y no se si debería agregarlos de esta manera con otros calculo independientes

Semana= 7dias

Semana-Dias Semana(5)=2 dias R

 Semanas * dias R=16, 666 Dias no considerados

Finalmente 

Dias no considerados+Dias Resultados+1=58 para  proxima mantencion (5 de octubre 2019)

Quiero saber si esto seria lo correcto

Ademas una ultima pregunta quiero que en un msgbox cuando se llegue a la fecha indicada(5 de octubre 2019) me muestre la información como alerta de esta mantencion mostrando los siguientes campos que también estarán en esta tabla :

Id Equipo (muestra el equipo)

Descripcion (Muestra la descripcion del equipo)

Periodo (muestra el periodo de mantencion)

Fecha (muestra la fecha de la ultima mantencion)

Mantencion( aqui va el resultado de la proxima mantencion)

Y por su puesto con el mensaje donde se llame a los campos con la siguiente estructura.

Hoy "Mantencion" el "Id Equipo", "Descripcion" que tiene mantenciones de "Periodo" ya debe realizar la mantencion. Ultima mantencion fue realizada "Fecha"

Respuesta
1

La primera parte del cálculo la veo bien.

La única cosa es que yo calcularia el número de semanas despreciando la fracción y, a parte, el número de días adicionales (resto de la fracción).

A partir de ahí, tendrías el número de días que faltan hasta el siguiente mantenimiento (semanas x 7 + Días del resto)

A la fecha del último mentenimiento le sumas este total de días y tendrás la fecha del próximo mantenimiento.

Ahora deberías inspeccionar en que día de la semana cae esta fecha y si es sábado o domingo sumarle uno o dos días.

No se si lo vemos igual.

Respecto al MsgBox se trataría de que al abrir la base de datos, supongo que debes lanzar un formulario. En este formulario, en el evento "Al abrir" podrías poner código VBA que inspecionara las fechas de los nuevos mantenimientos que coincidan con el día y construir un MsgBox con los campos que desees.

No se como andas de VBA

De todas formas, el problema de los MsgBox es que si los cierras sin querer tienes un problema para volver a visualizar la información.

Yo hago algo parecido en una aplicación y lo que hago es generar la previsualización de un informe que si quieren lo pueden imprimir.

Hola y gracias por la pronta respuesta, con respecto a bva ando mal no sabría como hacerlo, pero la idea es que este mensaje se muestra al abrir el formulario "primcipal" que tengo y lo otro de un informe activo que muestra las manteciones por realizar ya lo tengo considerado.

Me gustaría si pudieras darme el código vba para el mensaje, de ante mano muchas gracias

Primero deberías crear una consulta que te mostrara los registros cuya fecha de mantenimiento fuera igual al día de hoy.

Después en el evento "Al abrir" el formulario con el que inicies la sesión, pones el siguiente código:

Dim Datos as Recordset

Set Datos=CurrentDb.OpenRecordset("NombreDeLaConsulta")

Do Until Datos.EOF

MsgBox  "Hoy mantencion del equipo " & Datos!Id Equipo & ", " & Datos! Descripcion & " que tiene mantenciones de " & Datos!Periodo & " ya debe realizar la mantencion. Ultima mantencion fue realizada en " & Datos!Fecha & ".", vbInformation, "Aviso de mantenimiento"

Datos.MoveNext

Loop

Esto genera un bucle que recorre todos los registros de la consulta y lanza un MsgBox para cada registro.

¡Gracias! 

por tu gran ayuda

Hola

Sabes me nuestra error sintaxis

Te falla la instrucción MsgBox

Revisa que los nombres de los campos de la consulta coincidan con los de la instrucción. Yo te he puesto los nombres a título de ejemplo y en base a los que indicabas en tu pregunta.

Veo, por ejemplo, que "Datos!Id Equipo" tiene un espacio entre Id i Equipo.

Si los nombres de los campos contienen espacios, deberá ponerlos entre corchetes.

por lo tanto debería ser Datos!IdEquipo o Datos!d Equipo]

Según los nombres de los campos de la consulta

Me sigue el mismo error y verifique los nombres [Id Equipo]

Me dice se esperaba fin de la instrucción

Ya lo resolví (había un espacio antes de & Datos!Descripcion &)

Pero ahora me asalta una duda, que lo único que realiza es mostrar los registros que se encuentran en la consulta. Pero bueno logre ejecutar filtrando con la función Fecha() en el campo de la próxima mantecion

Muchas gracias por tu tiempo

No me ha quedado clara tu duda.

Si puedo ayudarte...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas