Mostrar por cada trabajador los turnos que se le han asignado en una determinada semana(Access 2000)

Estoy desarrollando una aplicación para un vecino. Quiere poder elaborar el calendario de turnos de trabajo semanal para así imprimirlo y entregarlo a los trabajadores. Lo tengo ya desarrollado, pero me he quedado estancado en una cosita, que es la siguiente: Cada vez que él asigna un turno, le gustaría que le apareciese una lista con todos los trabajadores y junto a cada nombre el numero de turnos que les ha asignado ésa semana, para ir así controlando los turnos que va poniendo cada semana, que la cosa sea bastante equitativa y ningun trabajador tenga menos turnos que otros.

Imaginemos que a Paco le ha asignado 3 turnos (lunes, miércoles y sábado), a María le ha asignado 2 turnos (viernes y sábado), a Mario 4 turnos (lunes, martes, miércoles y viernes) y a Pedro 0 turnos. A él le gustaría que le saliese una lista así:

Paco 3 turnos

María 2 turnos

Mario 4 turnos

Pedro 0 turnos

Y que esta lista se fuese actualizando en tiempo real.

Lo he intentado mediante una consulta pero no se como hacerlo, y con un formulario tampoco. Si se pudiese hacer mediante consulta o formulario yo lo introduciría como un subformulario en el formulario que he diseñado y así asunto solucionado.

A ver, te explico como está el esquema de Tablas y campos de cada una de ellas:

Trabajadores: (Nombre)

Turnos: (nombre), (día),(mes),(año),(hora),(reserva si/no)

Te mando la foto del formulario que he diseñado para que veas dónde quiero colocar lo que me ha pedido.

http://v1.iimmgg.com/images/is13gr/f706ce4010ede8af507e4a53b2f4778d.jpg

Como ves, en la parte inferior derecha y en naranja, pone: 'Turnos por trabajador'. Ahi debajo es donde tengo previsto poner el listado.

1 respuesta

Respuesta
1

Debes utilizar una consulta de referencias cruzadas, filtrando por un rango de fechas, agrupando por count(). Encabezado de fila el id o nombre del trabajador, el encabezdo de las columnas son las fechas, (elige semanal), Para que esto cambie dinámicamente debes hacerlo utilizando SQL mediante una función o desde un procedimiento del formulario. Te recomiendo actualizarte a una versión más reciente de Access.

Hola! Gracias por responder tan rápidamente. Verás, estoy haciendo lo que tu me has dicho, he creado otra consulta con los campos de las 2 tablas que tengo para después crear la consulta de referencias cruzadas, el problema es que cuando llego a la pregunta 'En que intervalo desea agrupar la información de la columna fecha/hora?' tan sólo me salen las siguientes opciones: "Año, trimestres,mes,fecha,fecha/hora". Y a partir de ahí ya no puedo continuar.

El tema de la actualización en tiempo real la suelo hacer con un: [objeto].requery

Que me recomiendas para solucionar lo de la consulta de referencias cruzadas?

Muchas gracias.

Debes crear un campo semana en la tabla en donde fijas los turnos para almacenar el número de la semana. ¿Cómo se obtiene el número de la semanas?.

Como debes llevar en algún campo la fecha del turno, puedes actualizar el campo semana con la siguiente función:

Public Function NumeroSemana(Optional ByVal mFecha As Date) As Integer
Dim sFecha As String
If CLng(mFecha) = 0 Then
mFecha = Date
End If
sFecha = "01/" & Month(mFecha) & "/" & Year(mFecha)
NumeroSemana = DatePart("ww", mFecha) - DatePart("ww", DateValue(sFecha)) + 1
End Function

En donde mFecha es la fecha del turno pasada como parámetro, ahora debes hacer la consulta filtrando el mes y año, agrupando por idEmpleado, semana.

Te agradezco me informes de que país haces la consulta.

Hola eperezfer!! Te escribo desde Valencia (España), soy experto en ésta web, como tu, pero en el sector de 'Rehabilitación de viviendas'.

La verdad es que yo ya estaba almacenando el numero de la semana en un campo que muestro bajo el calendario que aparece en el formulario (ver en la foto anterior), y no había caído en que se podía hacer así! ;-)

Te agradezco que me ayudes en este tema, porque la verdad es que me había quedado sin recursos para solucionarlo.

Voy a intentarlo de la manera que me estás recomendando a ver si al final podemos entre los dos solucionar el problema!

Un saludo desde España. Gracias.

Espero te funcione.

Un saludo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas