Calculo y cambio de valor al marcar checkbox

Tengo una base de datos en modo lista que me calcula las horas que estuvo trabajando los empleados cada día. Tiene un campo de hora de inicio (Hinicio) y hora de fin (Fin) y otro campo llamado "Horas" que posteriormente es sumada (TotalHoras) con todos los registros de ese empleado y me da todas las horas que trabajo durante un mes . El problema es cuando necesito calcular las horas extras que trabajo el empleado. Hay 2 casos. La primera es multiplicado el campo horas por 1,75 y el segundo caso hay que incrementar al resultado de la primera operación un 25%.

Poniendo un ejemplo

Si un día entro a las 12 (hinicio) y salio a la 2 (fin) el campo horas daría 2 horas de trabajo si ese campo entra en el primer caso su tendría que ser multiplicado por 1,75 = 3.5 horas y si tuviera que aplicar el segundo se aplicaría el 25% más.

El problema es que el mismo trabajador puede tener un día horas extras o no, con lo que necesito que diferencie en la suma entre las horas normales y las extras.

Me explico mejor:

El usuario tiene 3 entradas

Una con 2 horas normales

Una con 2 horas extras con la fórmula de arriba (3,5 horas)

Y otra con 2 horas extras (3,5) más el 25%

Quiero que cuando vaya a sumar sume 2+ 3,5 + 4,37 en vez de 2 + 2 + 2

Resumiendo. Cuando tenga horas especiales que las ignores las normales y sume las especiales.

1 respuesta

Respuesta
1

En principio no tienes problemas salvo que ¿cómo sabe el formulario que son horas normales o horas normales, o a quien le debe multiplicar las horas por 1.75 o por( h*1.75)+25%?

Me explico, supongamos que vas a anotar las horas trabajadas por Pepe tal día como hoy. ¿Hay algún control que diga que son extraordinarias?. ¿A Pepe, se le bonifica además con un 25% y a Juan que le jo...?

Supongamos que en la tabla Empleados tienes un campo Mejora tipo Si/no y supongamos que en el formulario tienes un campo Empleado y una casilla de verificación Extraordinaria tipo si/no. En el evento después de actualizar de la casilla puedes poner

If extraordinaria=true then and dlookup("mejora","empleados","empleado='" & me.empleado & "'")=true then

horas=((horafin-horainicio)*1.75)*1.25

elseif extraordinaria=true then and dlookup("mejora","empleados","empleado='" & me.empleado & "'")=false then

horas=(horafin-horainicio)*1.75

elseif extraordinaria=false

horas=horafin-horainicio

End if

Muchas Gracias.  Al final simplifique mucho el problema creando un apartado donde puedes meter las horas de inicio175 y de fin175 para extras (hace la operación (horafin-horainicio)*1.75) donde lo deja en un campo llamado "horas175" y otro donde esta inicio25 y fin25  donde lo guarda en un campo horas25 (realiza esta formula "suma(horafin-horainicio)*1.75)+(horafin-horainicio)*1.75)*0,25) Hasta ahí todo perfecto. El problema es cuando lo quiero sumar. Tengo un campo que se llama totalhoras donde el origen del contro es : Suma([Horas175]+[Horas25]), pero no lo realiza. Anteriormente también hice algunas pruebas porque anteriormente cuando solo tenia Suma([Horas175]) funcionaba correctamente pero no me sumaba mas de 24 horas. Medio lo solucione con TimeToString pero ya no funciona ni con uno ni con el otro.

Adrián, los ordenadores no trabajan ni con fechas ni con horas. Trabajan con días, al 01/01/1900 le pusieron un 1, al 02/01/1900 el 2 así hasta ahora que estamos, más o menos

Como puedes ver, las horas en realidad son decimales de día, es decir que si trabajaras con esa hora entrada realmente estarías trabajando con 43060,808 si empiezas a sumar horas, una vez que pase de 24 horas que correspondería a un 1, es decir, un día más con sus decimales, pero tu sólo verías 0,435, lo que hace es sumarle un día más a la fecha, por tanto, para hacer la suma de horas tienes que trabajar con los decimales y luego traducirlo a horas y minutos. Si quieres, repito, si quieres, mándame un mensaje(sólo el mensaje a [email protected] y te mando un ejemplo. Si lo haces, en el asunto del mensaje pon tu alias Adrián, ya que si no sé quien me escribe ni los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas