Suma Horas |
Responder |
Autor | |
Nomada
Colaborador Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1719 |
Tema: Suma Horas Enviado: 05/Junio/2019 a las 10:56 |
Perfecto. Muchas gracias. Este hilo se puede cerrar satisfactoriamente |
|
Nomada
Colaborador Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1719 |
Enviado: 04/Junio/2019 a las 18:44 |
Gracias. Voy a probarlo y te cuento.
|
|
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
Enviado: 04/Junio/2019 a las 18:34 |
Un Saludo.
|
|
Nomada
Colaborador Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1719 |
Enviado: 04/Junio/2019 a las 17:32 |
Perdón por no explicarme bien. En un formulario continuo tengo 10 campos Fecha/Hora para cada día de la semana (5 para "EntradaX" y 5 para "SalidaX"). Ahora mediante el siguiente código obtengo el tiempo de cada día en el campo correspondiente (vL, vM, etc.), lo sumo y el resultado lo paso a un campo de texto de nombre TotalHoras: Este es el código: Dim vL, vM, vX, vJ, vV As Variant Dim vTotal As Single, vMinutosRealizados As Double 'Calculo Lunes vL = Nz(Round(DateDiff("n", [EntradaL], [SalidaL]) / 60, 2), 0) 'Calculo Martes vM = Nz(Round(DateDiff("n", [EntradaM], [SalidaM]) / 60, 2), 0) 'Calculo Miercoles vX = Nz(Round(DateDiff("n", [EntradaX], [JSalidaX]) / 60, 2), 0) 'Calculo Jueves vJ = Nz(Round(DateDiff("n", [EntradaJ], [SalidaJ]) / 60, 2), 0) 'Calculo Viernes vV = Nz(Round(DateDiff("n", [EntradaV], [SalidaV]) / 60, 2), 0) vTotal = vL + vM + vX + vJ + vV vMinutosRealizados = Round((vTotal - Int(vTotal)) * 60, 0) Me.TotalHoras.Value = Int(vTotal) & ":" & Format((vMinutosRealizados), "00") Con este código, si por ejemplo los 3 primeros días ha trabajado de 7:00 a 7:35, cada día ha trabajado 35 minutos, lo que da como resultado 1:45 minutos. Pues el campo "TotalHoras" me muestra 1:44. Qué es lo que está mal? Espero haberme explicado un poquito mejor. Gracias y saludos.
Editado por Nomada - 04/Junio/2019 a las 17:51 |
|
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
Enviado: 04/Junio/2019 a las 14:54 |
Hola!
Sí nos dijeras, ¿que es lo que quires hacer? y los campos y algun dato ficticio, a lo mejor podríamos intentar ayudarte. |
|
Un Saludo.
|
|
Nomada
Colaborador Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1719 |
Enviado: 04/Junio/2019 a las 13:26 |
Gracias Xavi. Realmente el campo vSumaTotalHoras, viene del código: vHorasRealizadas = Round(DateDiff("n", (HEntrada], [HSalida]) / 60, 2) con lo cual no tiene exactamente horas y minutos, sino como ves la diferencia de entrada salida con el redondeo y 2 decimales. Probe también con este otro código, con la diferencia de que no suma las horas de los registros, sino en un mismo registro las horas de los distintos días de la semana, pero hace lo mismo: Dim vHorasRealizadasL, vHorasRealizadasM As Variant, vTotal As Single, vMinutosRealizados As Double 'Calculo Lunes vHorasRealizadasL = Nz(Round(DateDiff("n", [EntradaL], [SalidaL]) / 60, 2), 0) 'Calculo Martes vHorasRealizadasM = Nz(Round(DateDiff("n", [EntradaM], [SalidaM]) / 60, 2), 0) vTotal = vHorasRealizadasL + vHorasRealizadasM vMinutosRealizados = Round((TOTAL - Int(TOTAL)) * 60, 0) Me.Horas.Value = Int(TOTAL) & ":" & Format((vMinutosRealizados), "00") Me.J_TotHoras.Value = Me.Horas.Value Sinceramente me gusta más este último código, pero como digo tampoco funcionada correctamente. Editado por Nomada - 04/Junio/2019 a las 13:48 |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14720 |
Enviado: 04/Junio/2019 a las 12:54 |
Se supone que el control vSumaTotalHoras contiene horas y minutos. Se supone que el control vMinutos es para mostrar solo los minutos (sospecho que el redondeo es la causa de que no te cuadre) No entiendo la necesidad de crear un tercer campo para mostrar la parte entera de horas y los minutos de forma formateada. ¿No es lo mismo que aparece en vSumaTotalHoras? En cualquier caso, para mostrar una hora:minutos disponemos de TimeSerial |
|
Nomada
Colaborador Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1719 |
Enviado: 04/Junio/2019 a las 10:51 |
Buenas. Tengo un formulario continuo con un campo de Fecha/Hora (C_Horas). En el pie del formulario un campo independiente con Origen de control: =Suma([C_Horas]) cuyo nombre es vSumaTotalHoras otra campo también independiente con Origen de control: =Redondear(([vSumaTotalHoras]-Int([vSumaTotalHoras]))*60;0) de nombre vMInutos por último el campo donde muestro la suma de horas de todos los registros: =Int([vSumaTotalHoras]) & ":" & Format(([vMinutos]);"00") Pues la suma de tres registros donde el campo C_Horas tenga 5 minutos cada registro me da 14. Alguna sugerencia? Gracias y un saludo. |
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |