Calendario de turnos rotativos en access
Tras volverme tarumba con un código que traté de hacer yo y que no funcionaba ni para atrás, ahora estoy tratando de hacerlo con el ejemplo de Chea: https://geeks.ms/access/gestin-de-turnos-de-trabajo-con-access/ El problema es que en mi caso cada trabajador entra en la cadencia 7 días más tarde ¿Cómo lo tengo que reflejar en el código o en la consulta? Me rompí la cabeza pero nada … no soy capaz. La secuencia sería de este tipo: MMMMMMMTTTTTTTNNNNNNNLLLLLLL
Trabajador1 de 01/01/01 a 07/01/01: MMMMMMM
Trabajador2 de 01/01/01 a 07/01/01: TTTTTTT
…. ….
Según el código me sale así:
Trabajador1: MMMMMM (correcto)
Trabajador2: LMMMMMM (atrasa un día, tendría que adelantar 7)
El código es este:
Public Function fColumna(item As Long, Columnas As Long) As Long
fColumna = 1 + ((item + Columnas - 1) Mod (Columnas))
End Function
Public Function fTurnoFecha(FechaCalculo As Date, sCadencia As String, PrimerDiaTurno As Date, Optional lDesplazamiento As Long) As String
Dim v As Variant 'OJO: ESTOS DATOS SE METEN DESDE LA CONSULTA
Dim lColumnas As Long
Dim lCompensacion As Long
v = Split(sCadencia, ",")
lColumnas = 1 + UBound(v)
lCompensacion = fColumna(Int(PrimerDiaTurno + lDesplazamiento), lColumnas) - 1
fTurnoFecha = v(fColumna(Int(FechaCalculo) - lCompensacion, lColumnas) - 1)
End Function
Y en la Consulta en turno tengo:
Turno: fturnofecha([fechavirtual];"M,M,M,M,M,M,M,T,T,T,T,T,T,T,N,N,N,N,N,N,N,L,L,L,L,L,L,L";CFecha("03-09-2018");[grupo]-1)
Imaginé que sería poner … [turno]+7 pero eso lo único que hace es adelantar 7 días los turnos de todos los trabajadores