Access - restar horas

 
Vista:

restar horas

Publicado por Tomeu (1 intervención) el 27/06/2004 10:04:22
Tengo dos campos "Horacomença" y "horacaba". En un formulario, mediante un campo independiente, he puesto la formula :=[horacaba]-[horacomença] con el formato hh( para las horas); otro campo independiente con la misma formula pero esta vez con el formato nn (para los minutos). Parece que de momento funciona, pero, la cosa cambia, cuando quiero sumar. Tras hacer reglas de tres y ecuaciones de primer grado llegué a hacer la suma de esta manera. Otro campo independiente =(suma([horacaba]-[horacomença]))*23,5 (para horas;
y otro campo independiente con la formula =suma([horacaba]-[horacomença] , para los minutos.
Seguro que esto es una chapuceria; y además lo que seria el colmo de la felicidad es que cuando los minutos pasasen de 50 se sumaria una hora mas.
Soy principiante en esto; y me meto en estos berenjenales yo solito, para mas tarde no saber salir. Podriais decirme una solucion (comprensible) para este cacao en el que me he metido?
Gracias de verdad.
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

RE:restar horas

Publicado por Jesus (861 intervenciones) el 27/06/2004 11:27:47
Prueba esto:
Este cáculo trabaja incluso después de medianoche.
Format([horacomença] -1 -[horacaba], "Short Time")

Para mas detalles me encuentras en:
http://www.atpsoftware.net/atpindex.php

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

RE:restar horas

Publicado por Skakeo (99 intervenciones) el 27/06/2004 15:00:21
La verdad creo que os complicais mucho con cosas un poco raras, si en vez de todo eso utilizas la funcion DateDiff de access, puedes saber los minutos, las horas .... el unico problema es cuando pasa de medianoche, pero eso se soluciona con un simple if, diciendole que si la hora de inicio es mayor que la hora final le sume 24 horas a la hora inicial.
Yo lo estoy utilizando asi para calcular turnos de trabajo y funciona perfectamente.
Un saludo
Skakeo®
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

RE:restar horas

Publicado por hvillalobos (1 intervención) el 30/06/2006 08:08:07
Hola...
prodrìas escribir la formula que utilizas, creo que lo que tu haces es lo que he estado buscando por semanas...

yo utilizo
Horas_por_Ejecutivos: DifFecha("h",[horario_entrada],[horario_salida])

y el resultado de 17:00 a 02:00 me da 15 quiero que me de 9
osea la cosa cuenta para atras en vez de contar para adelante como debiera ser.

saludos
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

RE:restar horas

Publicado por cristian (6 intervenciones) el 17/03/2016 22:08:30
puedes indicar como lo hiciste?
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

RE:restar horas

Publicado por Enrique Heliodoro (1662 intervenciones) el 18/03/2016 09:20:07
Posiblemente lo haría con sumo placer si aun visitase el foro (su respuesta es del año 2006 .....)

En fin, solo hay que 'decirle' a Access que el periodo abarca desde las cinco de la tarde de un día, hasta las dos de la mañana DEL SIGUIENTE DIA.

¿Cómo lo podrá deducir Access? ... en base a que el ciclo máximo es de 24 horas (si es de varios días aparecerá un dato mas: el dia) lo sabra si comparamos la hora de entrada con la de salida si la de entrada es SUPERIOR a la de salida, la de salida sera DEL DIA SIGUIENTE.

'El' utiliza: Horas_por_Ejecutivos: DifFecha("h",[horario_entrada],[horario_salida])

Si corregimos la formula :
Horas_por_Ejecutivos: DifFecha("h",[horario_entrada],[horario_salida] + ABS([horario_entrada] > [horario_salida]))

Lo que hace el añadido es sumarle una unidad si la hora final es inferior a la hora inicial (lo que le indica a Access que la salida es 'del dia siguiente), la igualdad devolverá un cero si no se cumple o un (-1) si se cumple (por eso se utiliza la función ABS), pero matemáticamente también se podría escribir así:

Horas_por_Ejecutivos: DifFecha("h",[horario_entrada],[horario_salida] - ([horario_entrada] > [horario_salida]))

Lo único que aprecio en esa formula es que toma como referente la hora y ello lo hace redondear, por ejemplo (en la ventana de inmediato):

HEnt=#16:30#
Hsal=#2:59#
?datediff("h",hent,hsal + abs(hsal<hent) )
10
HEnt=#17:00#
Hsal=#2:59#
?datediff("h",hent,hsal + abs(hsal<hent) )
9
HEnt=#17:59#
Hsal=#2:59#
?datediff("h",hent,hsal + abs(hsal<hent) )
9
HEnt=#17:59#
Hsal=#2:00#
?datediff("h",hent,hsal + abs(hsal<hent) )
9


Lo mismo en minutos:
HEnt=#16:30#
Hsal=#2:59#
?datediff("n",hent,hsal + abs(hsal<hent) )
629
?692\60 & format(692 mod 60,":00")
11:32

HEnt=#17:00#
Hsal=#2:59#
?datediff("n",hent,hsal + abs(hsal<hent) )
599
?599\60 & Format(599 mod 60,":00")
9:00

HEnt=#17:59#
Hsal=#2:59#
?datediff("n",hent,hsal + abs(hsal<hent) )
540
?540\60 & format(540 mod 60 ,":00")
9:00

HEnt=#17:59#
Hsal=#2:00#
?datediff("n",hent,hsal + abs(hsal<hent) )
481
?481\60 & format(481 mod 60,":00")
8:00
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

RE:restar horas

Publicado por Enrique Heliodoro (1662 intervenciones) el 18/03/2016 09:47:01
Una correcion a lo anterior, el calculo en minutos (no respetaba el formato por tener la mascara inadecuada)

HEnt=#16:30#
Hsal=#2:59#
?datediff("n",hent,hsal + abs(hsal<hent) )
629
?692\60 & format(692 mod 60,"\:00")
11:32

HEnt=#17:00#
Hsal=#2:59#
?datediff("n",hent,hsal + abs(hsal<hent) )
599
?599\60 & Format(599 mod 60,"\:00")
9:59

HEnt=#17:59#
Hsal=#2:59#
?datediff("n",hent,hsal + abs(hsal<hent) )
540
?540\60 & format(540 mod 60 ,"\:00")
9:00

HEnt=#17:59#
Hsal=#2:00#
?datediff("n",hent,hsal + abs(hsal<hent) )
481
?481\60 & format(481 mod 60,"\:00")
8:01
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

restar horas

Publicado por Ferran (2 intervenciones) el 14/10/2015 20:03:26
Hola, yo también soy principiante y me vi con un problema similar, pero buscando y haciendo pruebas he sacado algo de mi propia cosecha que es lo siguiente:

DifFecha("n";[HoraInicio];[HoraFin])/60)


Lo hice para un estadillo de horas trabajadas en una consulta que me interesa que el valor de la resta estuviera en formato numérico para poder luego operar con él.
La misma consulta ya me suma las horas y me pone el total con este añadido:

HorasTotales: Suma(Abs(DifFecha("n";[HoraInicio];[HoraFin])/60))

Claro que posiblemente no tenga en cuenta cuando pasa de las 12 de la noche, pero eso a mí no me importa porque el cálculo se hace diario, y nunca hay un interbalo de trabajo de entre las 21,00 y las 06,00.

Saludos
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

restar horas

Publicado por cristian (6 intervenciones) el 17/03/2016 21:41:48
estimados,

necesito sacar las horas extras de los trabajadores.... y despues de eso que solo me muestre las que superan las 2 horas extras por dia.

ejemplo.
tengo un turno A que:
Hora_Entrada_Turno: 09:00
Hora_Salida_Turno: 19:00

y tengo una hora de entrada y salida real, es decir:
Hora_Entrada_Real: 09:03
Hora_Salida_Real: 21:34

lo que estoy haciendo en una columna de la tabla hago la resta de las horas que "deberia trabajar" para saber cuantas horas es su turno (tenemos varios turnos, puse uno de ejemplo)
HoraDeberiaTrabajar: DifFecha("n",[HE_Turno],[HS_Turno])/60 y me retorna un numero 10, pero necesito el formato 00:00, por lo cambio el formato del campo a "fecha corta" y ahi me aparece...

y para calcular las horas trabajadas hago lo mismo pero con Hora_Entrada_Real y Hora_Salida_Real.
pero no hayo como mostrar las que me superan las dos horas ya que en el campo criterios, pongo que me muestra horasExtras > 02:00 pero me sale error...

como lo hago?
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