Access - La coincidencia se basa en uno solo porque ????

 
Vista:
sin imagen de perfil
Val: 42
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

La coincidencia se basa en uno solo porque ????

Publicado por Luis (34 intervenciones) el 06/08/2019 19:44:10
Hola expertos tengo mas de un mes buscando este detalle espero su apreciable opinión. Tengo tres tablas un es EmpleadoDatos, la segunda Horarios y la tercera ListaSitios dentro de esta lista tengo sitio y de acuerdo al numero de dia sus horas de trabajo del personal que labora al momento que le pongo la condición de:
Si el Lugar de la tabla de Horarios es igual Sitio de la tabla ListaSitios y el Numero de día de la semana es igual (en este ejemplo día 7) el procedimiento lo realiza pero solamente con un solo sitio especifico.
Este es mi procedimiento

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
stSql = stSql & " SELECT Horarios.IdEmpl, EmpleadosDatos.Trabajador, "
stSql = stSql & "    Horarios.HoraInicio, Horarios.FechaInicio, "
stSql = stSql & "    Horarios.HoraFinal, Horarios.FechaFinal, "
stSql = stSql & "    ListaSitios.Sitios, Horarios.Lugar, "
stSql = stSql & "    Round(DateDiff(" & Chr(34) & "n" & Chr(34) & ",[Horainicio],IIf([Horafinal]<[Horainicio],DateAdd(" & Chr(34) & "h" & Chr(34) & ",24,[Horafinal]),[Horafinal]))/60,2) "
stSql = stSql & "    AS TotalHorasTrab, ListaSitios.Horas, "
stSql = stSql & "    Horarios.HExtras,  Weekday([FechaInicio]) "
stSql = stSql & "    AS NoDia"
stSql = stSql & " FROM EmpleadosDatos"
stSql = stSql & " INNER JOIN (Horarios"
stSql = stSql & " INNER JOIN ListaSitios"
stSql = stSql & " ON Horarios.[Lugar] = ListaSitios.Sitios)"
stSql = stSql & " ON EmpleadosDatos.Id = Horarios.IdEmpl; "
 
With Me.SubTotalHorasTrab.Form.RecordsetClone
.MoveFirst
Do
Set rs = CurrentDb.OpenRecordset(stSql)
StrDiaSem = rs!NoDia
strHT = rs!TotalHorasTrab
StrTotalHE = Nz(rs!Horas) - strHT
If !Lugar = rs!Sitios And StrDiaSem = 7 Then   """AQUI ES DONDE TENGO EL PROBLEMA""
.Edit
!HExtras = StrTotalHE
.Update
End If
If .AbsolutePosition = .RecordCount - 1 Then Exit Do
.MoveNext
rs.MoveNext
Loop
End With
rs.Close
Set rs = Nothing

Agradezco su ayuda
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

La coincidencia se basa en uno solo porque ????

Publicado por Anonimo (3316 intervenciones) el 06/08/2019 20:48:54
Se supone que se desea calcular en minutos un periodo de tiempo, el periodo puede estar comprendido entre dos fechas consecutivas (comenzar un día y al ser turno nocturno, finalizar el siguiente).

original:
Round(DateDiff(" & Chr(34) & "n" & Chr(34) & ",[Horainicio],IIf([Horafinal]<[Horainicio],DateAdd(" & Chr(34) & "h" & Chr(34) & ",24,[Horafinal]),[Horafinal]))/60,2) "

versión reducida:
DateDiff('n',[Horainicio], [Horafinal] - ([Horafinal] <[Horainicio]))

Aclaración del método:
.- la comilla simple evita el problema que supone la demarcación de un dato como texto si el conjunto de la oración esta utilizando como marcador la doble comilla, utilizar la definición como carácter suele ser útil cuando el texto contiene comillas simples yo dobles
.- una comparación -en Access- devuelve un valor True (-1) si se cumple o un False (0) si no se cumple
.- si hora final es menor que hora de inicio (se cumple la condición) se le resta un (-1) y en la practica se le suma una unidad y una unidad en datos de tipo de fecha es un día (24 horas), Access calculara de forma correcta el intervalo

No me parece correcto convertir el dato calculado en minutos a horas en formato decimal:
Round(DateDiff(" ….....final]))/60,2) "

, en la practica se le esta sustrayendo el 40%de la fracción de hora en decimal y eso todos los días ….. y a todos los operarios, puede dar lugar a problemas serios (conmigo seria bastante serio).

Lo aclaro para evitar interpretaciones:
.- en formato normalizado de tiempo, de 59 minutos a una hora se precisaría un solo minuto
.- en formato decimal para pasar de 59 minutos (el resto que no llega a la hora) a la hora se precisarían 41 minutos

El problema con la referencia al día siete de la semana puede venir de que interprete Access cual es el día uno (algo que dependerá de cada zona), pero quizás se normalizase si en lugar de calcular en la SQL el día de la semana, se calculase en la propia comparación ya que se dispone del dato original (…. Horarios.FechaInicio, " ===> rs!NoDia )

original:
1
If !Lugar = rs!Sitios And StrDiaSem = 7 Then """AQUI ES DONDE TENGO EL PROBLEMA""

modificado:
1
If !Lugar = rs!Sitios And Weekday (rs!FechaInicio) = 7 Then """espero que sea la solución'"
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
Val: 42
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

La coincidencia se basa en uno solo porque ????

Publicado por Luis (34 intervenciones) el 06/08/2019 23:50:39
agradezco muchísimo tu atención y gran explicación lo voy poner en practica de aviso
gracias
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
Val: 42
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

La coincidencia se basa en uno solo porque ????

Publicado por Luis (34 intervenciones) el 07/08/2019 01:44:47
Nuevamente agradezco tu atención pero lo acabo de realizar y sigue respetando la condición del Lugar que sean iguales al sitio pero no la del Numero de día lo hice de dos formas tal como lo siguieres y esta otra
1
If !Lugar = rs!Sitios And Weekday(CDate(rs!FechaInicio), vbMonday) = 7 Then
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

La coincidencia se basa en uno solo porque ????

Publicado por Anonimo (3316 intervenciones) el 07/08/2019 03:19:29
No tengo claro lo que se pretende lograr .

Aclarando conceptos:
La función WeekDay (día de la semana) se puede utilizar con o sin el parámetro opcional y en función de este parámetro obtendremos en las comparaciones resultados diferentes.

WeekDay sin parámetros asume por defecto que comienza en domingo
domingo = 1, lunes = 2, martes = 3, miércoles =4, jueves = 5, viernes = 6, sábado = 7

Si se le especifica que comience en lunes (vbMonday) lo que se obtendrá es esto:
Lunes = 1, martes = 2, miércoles = 3, jueves = 4, viernes = 5, sábado = 6, domingo = 7

En el primer caso se pregunta si el día que se pasa como parámetro coincide en sábado, en el otro si la coincidencia es con el domingo

¿Exactamente que se pretende obtener?

Quizás asi se vea mas claro (7 = sábado):
1
If !Lugar = rs!Sitios And Weekday (rs!FechaInicio) = vbSaturday Then
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 42
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

La coincidencia se basa en uno solo porque ????

Publicado por Luis (34 intervenciones) el 08/08/2019 00:30:59
espero explicarme lo que quiero hacer es la horas extras y laboradas de mis trabajadores en la tabla Listasitios tengo los siguientes campos

ListaSitios

en otra tabla Horarios tengo lo siguiente datos

Horarios.

al poner la condición Lugar (tabla Horarios) es igual Sitios(tabla Listasitios) y Numero de dia (fechaInicio tabla Horarios) es igual a 7 entonces graba la diferencia en Hextras (tabla Horarios).


agradezco tu paciencia
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

La coincidencia se basa en uno solo porque ????

Publicado por Anonimo (3316 intervenciones) el 08/08/2019 01:20:52
Solo se pueden apartar soluciones validas cuando se conoce completamente el entorno a evaluar.

Quizás deberías definir que condiciones han de cumplirse para considerar extras unas horas y no otras (y lo del siete creo que perdió su significado con el post anterior)

En los entornos laborables que conozco:
.- se definen como horas extra a aquellas que sobrepasan la jornada habitual
.- como nocturnas a las que se trabajan en un determinado intervalo (por ejemplo a partir de las 22 horas)
.- hay mas variaciones pero esto no va de regulaciones laborables

Si en ese entorno se considera como 'no laborable' el fin de semana (normalmente sábado + domingo) y se las trata como extras, en que punto interviene el sitio, porque salvo que se cambie de meridiano, en todas las ubicaciones el sábado será sábado y el domingo será domingo.

A la vista de los datos mostrados me surgen dudas de que el calculo se este haciendo de forma correcta.
El calculo utilizado será correcto siempre y cuando el intervalo entre la entrada y la salida no supere (o iguale) a un día (24 horas)

Si el intervalo supera las 24 horas, el dato 'fecha final' tendrá sentido y las horas trabajadas se deberían calcular así:
DateDiff('n',[Horainicio] + [fecha inicio], [Horafinal] + [fecha final])

Si el intervalo no supera las 24 horas, el dato 'fecha final' es redundante

Al respecto del calculo de horas extra, esta a la espera de definir de forma clara ese concepto y su interrelación con el concepto 'lugar' en principio lo considero innecesario, el sábado será sábado cuando corresponda (incluidos cambios de meridiano o zona horaria).

Por cierto si el sábado es ¿extra?, el domingo también debería serlo, es en este momento cuando lo de modificar el día de inicio de la función 'día de la semana' tiene sentido practico ya que permite definir a los dos días (sábado y domingo) como extras:

1
Es_extra = Weekday( [una fecha], 2) > 5

Si se le fuerza a iniciar la semana en lunes (vbMonday =2), el sábado seria = 6 y domingo = 7, la expresión anterior considera como ¿especiales? a los que sean posteriores al viernes.
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
Val: 42
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

La coincidencia se basa en uno solo porque ????

Publicado por Luis (34 intervenciones) el 08/08/2019 21:08:03
El convenio que tengo con mis trabajadores es lo siguiente les doy una compensación por ir al sitio, después si te encuentras por ejemplo Nuevo Laredo después de 12 horas de trabajo las demás las considero como horas extras de ahí viene que de lunes a viernes después de 12 horas (tabla ListaSitios) empiezo a considerar horas extras por eso quiero distinguir primero hago el tiempo total de horas trabajadas (horainicio menos horafinal) después digo si estas dentro del lunes a viernes al total de horas le resto las 12 horas convenidas y si el sitio es igual a donde trabajo pero si es sábado al total de horas le resto 5 horas las demás son horas extras y si es domingo, dia especial totas las horas echas se consideran como horas extras.
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

La coincidencia se basa en uno solo porque ????

Publicado por Anonimo (3316 intervenciones) el 11/08/2019 12:06:02
Creo que una subfunción resuelve el calculo
Los referentes utilizados:
La jornada de trabajo la define la ubicación (Tuxpan 12h, oficina 10h)
Horas extra, las que superen a la jornada de trabajo

Excepciones:
Los sábados (independiente de la ubicación) la jornada será de cinco horas (alternativa: se pueden descontar de la ubicación ….)
los domingos todas las horas serán extra

Esta subfunción esta diseñada para ser utilizada en el modulo de un formulario, o informe, devuelve el calculo de horas extra y horas de la jornada en variables privadas predefinidas.
Requiere como parámetros los siguientes:
La fecha para el calculo ==> FechaInicio
La hora de inicio ==> HoraInicio
La hora de finalización ==> HoraFinal
El centro de trabajo ==> Lugar

Devuelve en la variable HoraH las horas de la jornada, en HoraX las horas extra pero EN MINUTOS, para ser fiel en los sumatorios, las conversiones se hacen siempre al final de todos los cálculos.
-------------
Al principio del modulo (añadir lo que falte)
---------------
1
2
3
Option Compare Database
Option Explicit
Private horaH As Long, horaX As Long

------------------
la subfunción
------------------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Calc_Horas(DiaJ As Date, inicioJ As Date, finJ As Date, LugarJ As String)
Dim H_Bruto As Long, H_Jorn As Long, D_Sem As Long
H_Bruto = DateDiff("n",inicioJ, finJ - (finJ < inicioJ))
D_Sem = Weekday(DiaJ)
H_Jorn = DLookup("horas", "Listasitios", "sitios= '" & LugarJ & "'") * 60
If H_Bruto > H_Jorn Then
 horaH = H_Jorn * Abs(D_Sem > 1 And D_Sem < 7) + 300 * Abs(D_Sem = 7)
 horaX = (H_Bruto - horaH * Abs(horaH > 0)) * Abs(H_Bruto - horaH > 0)
 Else
 horaH = H_Bruto * Abs(D_Sem > 1)
 horaX = H_Bruto * Abs(D_Sem = 1)
 End If
' la linea de codigo que sigue se puede comentar/borrar, muestra el resultado del calculo en un MsgBox
' También sirve como una forma mas de mostrar como se convierten minutos a horas
 
 MsgBox "normales: " & horaH \ 60 & Format(horaH Mod 60, "\:00") & vbCrLf & "extras: " & horaX \ 60 & Format(horaX Mod 60, "\:00") & vbCrLf & "Total horas: " & H_Bruto \ 60 & Format(H_Bruto Mod 60, "\:00")
 
End Sub

Un ejemplo de como se llamaría (tras la llamada en las variables horaH y horaX están los resultados para el uso que se les quiera dar (ojo, en minutos)

1
Calc_Horas Me.FechaInicio, Me.HoraInicio, Me.HoraFinal, Me.Lugar


He procurado ceñirme al máximo a los datos posteados así como a las condiciones, un entorno mas optimizado permitiría un calculo mas rápido, por ejemplo una llamada previa al pago de los jornales para cálculos globales, en el ejemplo se visualizaría el resultado (registro a registro) para cualquier operario en cualquier centro de trabajo.

Es un borrador y será con datos reales como se podrá verificar si cumple las expectativas o necesita reajustes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 42
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

La coincidencia se basa en uno solo porque ????

Publicado por Luis (34 intervenciones) el 14/08/2019 21:09:36
Primero déjame agradecerte el gran apoyo y segundo no te había contestado porque lo estaba adaptando al formulario veiendo como funcionaba.

El siguiente detalle que tengo es cuanto a estas dos formulas

horaH = H_Jorn * Abs(D_Sem > 1 And D_Sem < 7) + 300 * Abs(D_Sem = 7)

horaX = (H_Bruto - horaH * Abs(horaH > 0)) * Abs(H_Bruto - horaH > 0)

no le entiendo y las dentro del msgbox sale las horas trabajadas perno no las extras.
sigo viendo, gracias
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

La coincidencia se basa en uno solo porque ????

Publicado por Anonimo (3316 intervenciones) el 15/08/2019 00:23:11
Se obtiene con el DLookup las horas del lugar (Tuxpan =12, oficina = 10 ....) se supone que es la duración pactada de la jornada ( variable H_Jorn(ada)

Aplicando las matemáticas y la lógica de Access:
.- Access almacena como un LONG los valores TRUE/FALSE cero (0) para el false (y por diseño caprichoso/concertado) menos uno (-1) para el true ….

.- ABS es una funcion que devuelve el valor absoluto por lo que se cumple:
……. Abs(TRUE) = Abs(-1) = 1
……. Abs(FALSE) = Abs(0) = 0
pero siempre se cumplirá que False = 0, True = <> 0

Asumo que se conoce la regla matemática:
" cualquier numero multiplicado por la unidad devuelve el mismo numero " 5 x 1 = 1, 1000 x 1 = 1000 etc.
" cualquier numero multiplicado por cero, devuelve siempre cero " 5 x0 = 0, 1000 x 0 = 0 etc.

De lunes a viernes esta comparación:
D_Sem > 1 And D_Sem < 7 ===> TRUE

Si es domingo (dia 1 de la semana) o es sábado (dia 7 de la semana) la comparación anterior dará como resultado un False (0)

Ahora viene lo de sumarle 300:
trescientos minutos son cinco horas (la supuesta jornada del sábado en cualquier ubicación) y como esta condicionado con que sea sábado: el sábado será 300 y de domingo a viernes … cero

Los domingos … en horaH tendremos cero dados los condicionantes impuestos (no es lunes - viernes, no es sábado) y como el domingo todas las horas son extra …

Si es domingo se multiplican todas las horas (H_Bruto) por la unidad (por cero si no es domingo)
por otra parte a H_Bruto se le restan las horasH (se obtienen las horas que superan la jornada) y se condicionan a que no sea domingo

Hay lagunas a tener en cuenta, casos como que se trabaje media jornada en dos ubicaciones diferentes y que se superen en conjunto las horas de la jornada (6 en oficina y otras 6 en laboratorio)
Se cumple que ha trabajado una hora extra en cada ubicación (total dos horas extra) y no cobrara ninguna …..

Si se calculan las extra en base a las horas normales y se aplica una regla de proporcionalidad, se resolvería ese problema, pero ¿se puede dar la circunstancia? ….. hay muchas posibles y teóricas posibilidades a contemplar antes de considerar optimo el automatismo y … sin datos no se puede avanzar.


Espero que esta disección del calculo sea útil para poder adaptarlo al entorno real y nunca se debería perder de vista que a Access -como programa informático que es- le encantan las matematicas ....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 42
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

La coincidencia se basa en uno solo porque ????

Publicado por Luis (34 intervenciones) el 17/08/2019 01:28:50
Agradezco infinitamente tu apoyo ya lo hice y quedo perfectamente el único detalle que tengo es que uno de los trabajadores hizo mas de 24 horas como puedo solucionarlos
Saludos y nuevamente gracias
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

La coincidencia se basa en uno solo porque ????

Publicado por Anonimo (3316 intervenciones) el 17/08/2019 03:34:09
Lo primero: cuidar a ese operario, es una maquina …..

Personalmente lo modificaría en dos puntos, uno el calculo actual (lo simplificaría)

Antes:
1
2
H_Bruto = DateDiff("n",inicioJ, finJ - (finJ < inicioJ))
 D_Sem = Weekday(DiaJ)

Después:
1
2
H_Bruto = DateDiff("n",inicioJ, finJ)
D_Sem = Weekday(inicioJ)

Esto nos lleva a que los datos de inicio y final se le han de pasar así:

Antes:
1
Private Sub Calc_Horas(DiaJ As Date, inicioJ As Date, finJ As Date, LugarJ As String)

Después:
1
Private Sub Calc_Horas( inicioJ As Date, finJ As Date, LugarJ As String)

Su aplicación en la practica:

1
Calc_Horas Me.FechaInicio + Me.HoraInicio, Me.FechaFinal + Me.HoraFinal, Me.Lugar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 42
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

La coincidencia se basa en uno solo porque ????

Publicado por Luis (34 intervenciones) el 20/08/2019 17:25:27
hola quiero entender que esto que me dices:
Su aplicación en la practica:
1 Calc_Horas Me.FechaInicio + Me.HoraInicio, Me.FechaFinal + Me.HoraFinal, Me.Lugar
se pondría asi
H_Bruto = DateDiff("n", FchaInicial + inicioJ, FchaFinal + finJ)

pero lo que si realmente me quede mas desconcertado es en eso
D_Sem = Weekday(inicioJ) porque con la hora de inicio ??? y no con la fecha que tenia, lo aplico asi y me da cálculos diferentes
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

La coincidencia se basa en uno solo porque ????

Publicado por Anonimo (3316 intervenciones) el 20/08/2019 19:42:29
No te habrás tomado el tiempo suficiente para analizar de forma pormenorizado el código.

Es tan sencillo como poner un punto de interrupción y verificar los valores que toman las variables (en un caso y en el otro)

Siempre he tenido la sospecha de que no se están utilizando datos adecuados (por ejemplo: guardar las fechas como texto) y que ello es la causa de resultados erráticos, dado que Access (en sus intentos de hacer algo con los datos) los interpreta con libertad y no siempre acierta en que sean en formato local (fuera de VBA) o en formato americano (VBA).

En fin, antes se tomaba el día (con las horas a cero) y por otra parte las horas (con el día a cero)

Se aplicaba la 'lógica' de que una jornada de trabajo no superaba el día (la unidad), por ello se le sumaba una unidad a la 'hora final' para que Access pudiera calcular correctamente el intervalo si había cambio de día entre la entrada y la salida.

Se supera el día … no es valido ese calculo, como se dispone del dato 'día final' (con la hora a cero) se pueden hacer cálculos de tiempo que superen la unidad (el día, esto es: mas de 24 horas).

En la versión actualizada se le pasan tres datos (Inicio, final, lugar) en lugar de cuatro (día_inicio, hora_inicio, hora_final, lugar) y sin embargo y en la practica se le pasan CINCO:
-- Dia inicio y hora inicio en INICIOJ
-- Dia final y hora final en FINALJ

No debería haber diferencia en los datos y la forma de verificarlo es tan sencilla como hacer el calculo (sin trampas o travesuras) de forma manual y ver donde se queda lo que sobre o falte.
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
Val: 42
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

La coincidencia se basa en uno solo porque ????

Publicado por Luis (34 intervenciones) el 21/08/2019 01:10:45
aquí es donde tengo el detalle poniendo el punto de de interrupción

If H_Bruto > H_Jorn Then

horaH = H_Jorn * Abs(D_Sem > 1 And D_Sem < 7) + 300 * Abs(D_Sem = 7)
horaX = (H_Bruto - horaH * Abs(horaH > 0)) * Abs(H_Bruto - horaH > 0)

porque si cae en dia 7 (sábado) H_Bruto simpre va ser menor que H_Jorn y se pasa a la siguiente instruccion
cual seria tu punto de vista
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

La coincidencia se basa en uno solo porque ????

Publicado por Anonimo (3316 intervenciones) el 21/08/2019 02:58:42
Ese planteamiento rompe la premisa de que la jornada la define la ubicación.


El planteamiento inicial expuesto partía de la premisa que se trabaja todos los días en turnos rotatorios y que por contrato los días laborables eran todos los días de la semana, la rotación de turnos -u otras variantes por definir- reubicarían los días de descanso semana a semana.

Otra cosa es que 'para calcular las horas extra' se asuma que el sábado -independiente de cualquier ubicación- solo se tengan en cuenta como horas laborables los 300 minutos (cinco horas) y el resto sea extra.

Si la jornada es variable (y por la duda planteada así es) la jornada se ha de calcular de forma previa a cualquier otro calculo y se tendrían que tener en cuenta las excepciones (serian excepciones el sábado con solo 5 horas sea cual sea la ubicación y los domingos con cero horas e idénticas condiciones)

Copio aquí la línea que encabeza mi tercera intervención en este hilo:

Solo se pueden apartar soluciones validas cuando se conoce completamente el entorno a evaluar.

Hay diferentes tipos de jornada cada una se acopla a la necesidad del servicio a prestar, los que conozco y algunos por referencias son:
.- los 'normales' -jornada de ocho horas si es jornada partida o siete si es jornada continua
.- los que dan servicios de 24x7 (veinticuatro horas o menos pero todos los días de la semana) en la que sus descansos son rotacionales
.- como excepciones los turnos médicos -desconozco peculiaridades especificas-
.- los de los bomberos -creo que son de 24 horas continuas y 48h de descanso además de otros de descanso cada ciertos ciclos-
.- y asumo que hay muchas mas excepciones.
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
Val: 42
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

La coincidencia se basa en uno solo porque ????

Publicado por Luis (34 intervenciones) el 21/08/2019 19:36:36
Agradezco muchos tus comentarios en lo laboral (eso déjalo para mi que soy contador) para tu conocimiento nosotros trabajamos para las constructoras y cuando una obra esta demasiada atrasada no queda mas que trabajar a marchas forzadas (somos de control de calidad y tenemos que esperar hasta que lleguen los materiales para revisarlos mis trabajadores realmente no trabajan las 24 horas (veo que hicieron 24 h reviso y les corrijo) lo ponen porque les pido que me llenen un formulario (maña de ellos) mi pregunta que te hice era porque no saca las horas extras del sábado en unos de tus comentarios lo pusiste asi

De lunes a viernes esta comparación:
D_Sem > 1 And D_Sem < 7 ===> TRUE

Si es domingo (dia 1 de la semana) o es sábado (dia 7 de la semana) la comparación anterior dará como resultado un False (0)

Ahora viene lo de sumarle 300:
trescientos minutos son cinco horas (la supuesta jornada del sábado en cualquier ubicación) y como esta condicionado con que sea sábado: el sábado será 300 y de domingo a viernes … cero


porque no las calcula
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

La coincidencia se basa en uno solo porque ????

Publicado por Anonimo (3316 intervenciones) el 22/08/2019 02:29:41
Se han modificado las condiciones, se modifica el calculo

Las condiciones ahora son:
.- la duración de la jornada la define el centro de trabajo (se utiliza una tabla de referencia)
.- el sábado la jornada dura cinco horas en cualquier centro de trabajo (antes se la suponía completa, pero lo que superaba 5 horas tenia diferente valoración) ¿extra?
.- el domingo la jornada será de cero horas, por lo que todo lo que se trabaje será considerado ¿extra?.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
'Inicio, el dia y hora del inicio de la jornada
'Final el dia y hora del final de esa jornada
'Lugar, la ubicacion del centro de trabajo
'variables para facilitar el calculo
Dim H_Bruto As Long, H_Jorn As Long
'En base a la ubicacion,obtenemos la duracion de la jornada, se calcula en minutos
H_Jorn = DLookup("horas", "Listasitios", "sitios= '" & Lugar & "'") * 60
'Se obtiene el dia de la semana con: Weekday(Inicio)
'Se recalcula la duracion de la jornada para aplicar las excepciones (sabado 5 horas, domingos cero)
H_Jorn = H_Jorn * Abs(Weekday(Inicio) > vbSunday And Weekday(Inicio) < vbSaturday) + 300 * Abs(Weekday(Inicio) = vbSaturday)
'calculamos las horas reales trabajadas, en minutos
H_Bruto = DateDiff("n", Inicio, Final)
' en H_Bruto esta (en minutos) las horas reales trabajadas
' en H_jorn -tambien en minutos- los necesarios para cumplir la jornada
' cuidado con las matematicas creativas: las horas tienen 60 minutos
' (y 60 'visto en decimal' es poco mas de media unidad, no la unidad completa)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 42
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

La coincidencia se basa en uno solo porque ????

Publicado por Luis (34 intervenciones) el 22/08/2019 18:40:52
Agradezco enormemente tu paciencia y apoyo quedo perfectamente como yo lo quería
SALUDOS
con esto cierro el tema
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