Access - Análisis de turnos...

 
Vista:

Análisis de turnos...

Publicado por Quim (14 intervenciones) el 23/06/2017 16:20:36
Buenas!!
Tengo una BBDD con datos almacenados en una tabla DATA que uno de sus campos es FECHA y otro es HORA. Automáticamente cuando el usuario guarda un registro se guarda la fecha y la hora del sistema en esos campos.
Ahora bien, para el posterior análisis, necesito poder asignar el turno, es decir, turno 1 (horario de mañana), turno 2 (horario de tarde), turno 3 (horario de noche).
¿Cómo puedo hacer que automáticamente me detecte que turno es en función de la HORA registrada?

¿Existe alguna función para ello?

La idea es que crearé otro campo nuevo dentro de la tabla que se llame TURNO y que, al entrar un registro, ese campo ya almacene el turno que es, 1 2 o 3.

¿Qué pensáis? ¿Cómo lo véis?

Mil gracias por adelantado!!!

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Análisis de turnos...

Publicado por Anonimo (1 intervención) el 24/06/2017 09:13:18
Para llegar a un final adecuado, hay que planificar con anterioridad así como consensuar las reglas que mas tarde se le planificaran a Access (y no porque sea Access, sino porque las reglas han de ser claras y concretas).

Si es un control de entradas, se asume que comenzara / finalizara en momentos concretos (de momento sin definir)

Supongamos que un ciclo (teórico) sea de ocho horas continuas y que comience a las 8:00 finalizando a las 16:00

.- Si se marca el inicio 'real' a las 8:01 ¿comenzó retrasado?
.- Si se marca ese inicio 'real' a las 7:59 ¿Qué turno se le asignaría?
.- Los 'ciclos' y sus divergencias (retrasos/adelantos) ¿se contabilizaran en horas, fracciones de hora, en minutos o en segundos?

Esos casos (y muchos mas que surgen) han de consensuase para crear reglas, una vez que se alcance el consenso .... queda la segunda parte y es transmitírselo a la aplicación (pero mientras todo 'sea humo' para que perder el preciado tiempo en divagaciones).

Particularmente no considero indispensable el guardar un dato que puede ser fácilmente calculable (y en base a horarios definidos y reglas claras, es calculable en cualquier momento basándose en el dato 'hora' almacenado), innegablemente si se necesita para otros cálculos o 'sí porque sí', nada impide su existencia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Análisis de turnos...

Publicado por Quim (14 intervenciones) el 26/06/2017 08:33:04
Buenos días!

Los turnos siempre serían turno 1: 07:00 - 14:59 / turno 2: 15:00 - 22:59 y turno 3: 23:00-26:59

Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Análisis de turnos...

Publicado por Anonimo (3303 intervenciones) el 26/06/2017 09:19:05
Pues con esos datos recién publicados, ya tienes el punto de partida para crear las reglas indispensables para automatizar el proceso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Análisis de turnos...

Publicado por Quim (14 intervenciones) el 26/06/2017 09:24:58
Pero ahí está mi duda... ¿Creo una regla de validación directamente sobre un campo "turno" en la misma tabla que posee el campo "hora" de cada registro?
¿Es esa la mejor opción?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Análisis de turnos...

Publicado por Quim (14 intervenciones) el 26/06/2017 13:06:06
Ya lo he apañado!!!

Por si es de interés... he creado un textbox (TextoTurno) no visible en el formulario que usan para entrar datos que recibirá el valor 1,2,3 dependiendo del turno. De momento me vale con coger el valor solo de la hora.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim Elturno As Integer
Dim ddate As Variant
Dim dhour As Integer
ddate = Now()
dhour = Hour(ddate)
If dhour > 7 And dhour < 15 Then
Elturno = 1
ElseIf dhour > 15 And dhour < 23 Then
Elturno = 2
ElseIf dhour > 23 And dhour < 7 Then
Elturno = 3
Else
Elturno = 4
End If
Me.TextoTurno.Value = Elturno
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 756
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Análisis de turnos...

Publicado por Jesús Manuel (375 intervenciones) el 27/06/2017 08:37:53
No entiendo porque creas un turno 4 en el código cuando has definido tres turnos de horas??

Puede ser porque el código no contempla a que turno asignar las 07:00, las 15:00 y las 23:00?

Te recomiendo que incluyas un = para hacer >= (mayor o igual) que 7, que 15 y que 23



Por otra parte puedes ahorrarte mucho código y variables:

1
2
3
4
5
6
7
8
9
10
Dim dhour as Integer
dhour= hour(Now())
 
If dhour >=7 And dhour < 15 Then
Me.TextoTurno.Value=1
ElseIf dhour >= 15 And dhour < 23 Then
Me.TextoTurno.Value=2
ElseIf dhour >= 23 And dhour < 7 Then
Me.TextoTurno.Value=3
End If
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Análisis de turnos...

Publicado por Anonimo (3303 intervenciones) el 27/06/2017 09:26:45
Parece sencillo, pero no lo es, la solución adoptada tiene lagunas .....

Lo primer es que si tenemos tres turnos y uno de ellos comienza hoy y acaba mañana ..... no se debería interpretar que comienza hoy (y ahora) y 'acaba ayer' en lugar de mañana.

Simplificar por simplificar .... podemos hacerlo así:

.- entre las siete y las 15 = turno uno
.- entre las 15 y las 23 = turno dos
.- el resto ==> turno tres

Y ahora la pregunta:

Si uno de esos registros (el trabajador es del turno DOS) se crea a las 14:59 ¿Qué turno se le asigna y que turno le corresponde? ....
Si se le asigna el turno uno, en un minuto ya finaliza su jornada (un dulce muy goloso) o se le asignan los tres(pues se supone que saldría después de las veintitrés y ya 'es otro turno mas').

En fin, que unas reglas tan simples en mi opinión no son eficaces.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar