Funcion DMin y DMax

Imagino que esto que te planteo es de ínfimo nivel, pero a mi me esta volviendo loco y no saco nada en claro, por lo que ruego me ayudes si te es posible.
Tengo una base de datos con un campo en el que el control de fichajes de la empresa genera un registro cada vez que se ficha; es decir cada vez que un trabajador pasa su tarjeta por un punto de control se genera un registro.
Hay trabajadores que pasan su tarjeta varias veces al día, no solo al entrar o al salir y mi objetivo es poder saber cuanto tiempo ha permanecido el trabajador en la empresa hallando la diferencia entre la hora a la que ficho por primera vez y la hora de su ultimo fichaje.
Creo que estas funciones DMin y Dmax me hallan el primer y ultimo registro, una vez que hago la consulta de cuantas veces ha fichado una tarjeta en un día determinado, pero no se cómo hacer para que me aparezca en un campo el primer fichaje y en otro el último, y como restar uno de otro.
Si no fueran estas las funciones, te ruego me indiques cuales he de utilizar
No se si te lo he planteado correctamente pero si tienes dudas

1 Respuesta

Respuesta
1
Supongamos que tienes una tabla con los campos Código y Fecha.
Creas una consulta de totales, bajas el campo código y le pones agrupar por, bajas dos veces el campo fecha y pones en uno Mín y en otro Máx (todo esto en la linea Total), después, en la linea campos pones Horas: DifFecha("h";Mín([Fecha]);Máx([Fecha])) y en la linea Total elijes expresión, en otra columna, si quieres los minutos pones: Minutos: DifFecha("n";Mín([Fecha]);Máx([Fecha])) e i igualmente en la linea total pones expresión.
Lo que hemos hecho es agrupar por el campo código (idenificador del trabajador), luego calculamos el primer fichaje (Mín) y el último (Máx) por último calculamos el tiempo transcurrido desde el primer fichaje hasta el último con la función DifFecha("intervaloquequeremos";FechaPrimera;FechaUltima)
Para los intervalos utilizamos "h" para la hora y "n" para los minutos, si quisieras los días sería "d", los meses "m", los años "a"...
Muchas gracias por tu pronta y precisa respuesta.
Algo debo estar haciendo mal, porque si bien ya tengo el primer y último fichaje, la diferencia entre ambos siempre me da como resultado 12:00 y no se porqué es así.
He cambiado formatos de fechas, de horas y de todo, pero o me da 12:00 o me da 0:00.
Lo curioso del caso es que si utilizo segundos, me da la diferencia correcta.
Quizás puedas seguir ayudándome, gracias.
Pepe
Yo puse las fechas como campo tipo Fecha/Hora y no me dio problemas, tengo el access 2003.
Puedes probar a poner el intervalo como "hh" en vez de "h", no se si será esto.
Tampoco entiendo porque en segundos si te da correcto. Podrías dividir la fórmula entre 3600.
Gracias, gracias, gracias.
El error era mio.
Tema solucionado.
Muy amable y rápida, un placer.
Pepe
Me alegro de que se haya solucionado, y ahora, por favor ¿podrías cerrar la pregunta?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas