Access - Horas fines de semana

 
Vista:

Horas fines de semana

Publicado por Jose (8 intervenciones) el 13/02/2020 09:38:54
Buenos días,

Antes de todo gracias por las posibles respuestas a mí problema (estoy empezando en el mundo de la programación).

Tengo un programa de fichajes echo en Access, las horas teóricas son 8:30h diarias hasta aquí todo bien, el problema es que algunas veces se pueden echar algunas horas los sábados y esas horas son extras por lo cual no debe haber horas teóricas ese día de la semana ¿Como puedo distinguir en la consulta ese día de la semana para que las horas teóricas sean 00:00?.

Intente hacerlo de la siguiente manera en la consulta sin mucho resultado:

IIf(Weekday([Movimientos.Fecha_movimiento],7),"00:00",Format(([HORA_FINT_1]-[HORA_INICIOT_1])+([HORA_FIN_2]-[HORA_INICIOT_2]),"Short Time")) AS [Horas Teoricas].

En el informe los sábados pone horas teoricas 8:30 y debería pusiera 00:00.

Un saludo.
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

Horas fines de semana

Publicado por Anonimo (3314 intervenciones) el 13/02/2020 16:25:13
Si este calculo da un resultado correcto:
1
([HORA_FINT_1]-[HORA_INICIOT_1])+([HORA_FIN_2]-[HORA_INICIOT_2])

Este devolverá un cero si el día es el séptimo (en formato americano: sábado = 7)
1
([HORA_FINT_1]-[HORA_INICIOT_1])+([HORA_FIN_2]-[HORA_INICIOT_2]) * ABS (Weekday([Movimientos.Fecha_movimiento])<>7)
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

Horas fines de semana

Publicado por Jose (8 intervenciones) el 14/02/2020 09:27:47
Buenos días,

Antes de nada gracias por tu respuesta. Me arroja el siguiente resultado: 6:00, desconozco porque.

Un saludo.
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

Horas fines de semana

Publicado por Anonimo (3314 intervenciones) el 14/02/2020 11:40:17
He partido de dos supuestos:

.- El calculo de tiempos es correcto
.- la condición es correcta y cumple:
1
Weekday([Movimientos.Fecha_movimiento],7)


El resto es una simple operación matemática básica que cumple la regla:
'todo numero multiplicado por cero devuelve como resultado cero'
'Todo numero multiplicado por la unidad, devuelve el mismo numero'

Las condiciones se cumplen o no se cumplen:
.- si se cumplen (True, Sí, Cierto …) para Access y por defecto = -1
.- si NO se cumplen (False, No, Incierto...…) para Access = 0

La función ABS devuelve el mismo valor sin signo:
Abs(-1) = 1
Abs(0) = 0
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

Horas fines de semana

Publicado por Jose (8 intervenciones) el 20/02/2020 18:10:50
Hola,

Como siempre gracias por la ayuda, estoy con la consulta y en los sábados me sigue arrojando 6:00h cuando debería mostrarme 0:00h ya que los sábado no hay horas teóricas, los demás días bien me muestra 8:30h que es lo correcto. ¿alguna idea?. La instrucción que utilizó es la siguiente.

([HORA_FINT_1]-[HORA_INICIOT_1])+([HORA_FINT_2]-[HORA_INICIOT_2])*ABS(Weekday([Movimientos.Fecha_movimiento])<>7) AS [Horas Teoricas]

Un saludo.
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

Horas fines de semana

Publicado por Anonimo (3314 intervenciones) el 20/02/2020 22:19:20
Una consulta basada en la tabla con datos ofrecería la luz que parece apagada.

Nueva consulta basada en la tabla real,con este único campo:

DSemana: ABS(Weekday([Movimientos.Fecha_movimiento])<>7) )

Se puede añadir un campo mas asi:

El_Dia: Format ([Fecha_movimiento]; "w")


Debería devolver para cada fecha -en función del día de la semana- un cero los sábados o un uno el resto de días

Simulación en la ventana de inmediato:

For aa = date to date +10: debug.Print aa, Format (aa,"dddd"),Format (aa,"w"), ABS(Weekday(aa)<>7): next aa

20/02/2020 jueves 5 1
21/02/2020 viernes 6 1
22/02/2020 s?bado 7 0
23/02/2020 domingo 1 1
24/02/2020 lunes 2 1
25/02/2020 martes 3 1
26/02/2020 mi?rcoles 4 1
27/02/2020 jueves 5 1
28/02/2020 viernes 6 1
29/02/2020 s?bado 7 0
01/03/2020 domingo 1 1
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

Horas fines de semana

Publicado por Jose (8 intervenciones) el 21/02/2020 09:25:17
Buenos días,

¿Enormemente agradecido por tu ayuda, simplemente una pregunta la "W" que significa?

Un saludo.
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

Horas fines de semana

Publicado por Anonimo (3314 intervenciones) el 21/02/2020 20:24:18
La función FORMAT es muy poderosa y esta muy bien explicada en la ayuda de Access, si le das un vistazo es muy probable que se te abran nuevos caminos para llegar mas rápido a los mismos sitios.

En particular la 'w' en ese contexto implica al día (en numero del uno al siete) de la semana, al igual que 'dddd' implica al nombre del día de la semana.


29/02/2020 s?bado 7 0

29/02/2020....la fecha (en la variable 'aa')
s?bado……...Format (aa,"dddd")
7......………...Format (aa,"w")
0...………….ABS(Weekday(aa)<>7)
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

Horas fines de semana

Publicado por Jose (8 intervenciones) el 24/02/2020 09:08:59
Gracias por tú ayuda. :)
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