Control horario. Suma a Horas de Presencia las Salidas a tomar café y otras.... Sintaxis correcta.

Dudas sobre código
pitxiku
VIP
Reto02
Mensajes: 313
Registrado: Sab Sep 30, 2017 6:23 pm

Re: Control horario. Suma a Horas de Presencia las Salidas a tomar café y otras.... Sintaxis correcta.

Mensajepor pitxiku » Mié Ago 14, 2019 10:35 am

En la imagen donde te falla el control de la pausa del café, tienes 2 salidas y una entrada. Es posible que para la segunda salida te esté tomando la primera entrada, u otro fichaje que no vemos. Puedes probar a usar Nz en los 2 fichajes, para ver qué sucede:


=Suma(SiInm([TipoEntrada]="Regreso del café ";Nz([HoraEntrada];[HoraSalida]);0)-SiInm([TipoSalida]="Tomar café ";Nz([HoraSalida];[HoraEntrada];0);0))

Es decir, que si no encuentra uno de los 2 datos, que tome el otro.

Si con esto tampoco sirve, tal vez tengamos que hacer una suma continua sobre los registros. Pero para eso, hace falta saber si los 2 fichajes, entrada y salida, están guardados en un mismo registro de la tabla; o si en cada registro de la tabla hay un único fichaje, entrada o salida.

Para los fichajes omitidos de un día a otro, recuerda que en algunos sitios se trabaja de noche, con lo que una persona empieza a trabajar un día y sale al día siguiente.

Y no hay que pedir perdón por ser torpe, todos lo somos en más de un momento de la vida.

P.D.: cuanto está parte vaya bien, pasaremos a ver en ese informe que va a ocurrir cuando hagas un resumen de más de 1 día, cuando la suma de las horas supere las 24.

Rafael
Nivel 5
Mensajes: 192
Registrado: Dom Dic 27, 2015 10:33 am

Re: Control horario. Suma a Horas de Presencia las Salidas a tomar café y otras.... Sintaxis correcta.

Mensajepor Rafael » Mié Ago 14, 2019 5:02 pm

Pitxiku: he copiado lo que me dices como origen del control 'Pausa café' y, error :| : "La expresión que ha especificado contiene una función con un número incorrecto de argumentos".

Edito para añadir: No tengo ningún inconveniente en subir a la nube en el Front Back y el Back End de la base de datos dando explicaciones de donde se produce el error y a la vez comprobarás que no hay ningún registro perdido por ahí que esté jorobando la marrana... Como me digas...

Edito nuevamente: Intuyendo que la segunda parte de la resta (el sustraendo) debía seguir el patrón de sintaxis de la primera (minuendo), he escrito: =Suma(SiInm([TipoEntrada]="Regreso del café ";Nz([HoraEntrada];[HoraSalida]);0)-SiInm([TipoSalida]="Tomar café ";Nz([HoraSalida];[HoraEntrada]);0)) , pero nada: la resta indicada me presenta idéntico valor al Total de la Horas Netas de Trabajo...

pitxiku
VIP
Reto02
Mensajes: 313
Registrado: Sab Sep 30, 2017 6:23 pm

Re: Control horario. Suma a Horas de Presencia las Salidas a tomar café y otras.... Sintaxis correcta.

Mensajepor pitxiku » Mié Ago 14, 2019 11:36 pm

Si quieres, sube una copia e intentaré echarle un vistazo, pero eso será la próxima semana; está la tengo bastante ocupada.

Eso sí, si subes algo, que sean todos datos ficticios, por eso de la protección de datos.

Rafael
Nivel 5
Mensajes: 192
Registrado: Dom Dic 27, 2015 10:33 am

Re: Control horario. Suma a Horas de Presencia las Salidas a tomar café y otras.... Sintaxis correcta.

Mensajepor Rafael » Jue Ago 15, 2019 11:02 am

Pitxiku, aquí tienes el Front y el End comprimidos. Si descomprimes en una carpeta que creases en C:\CONTROL HORARIO no tendrías ni que revincular tablas -que por supuesto solo contienen datos ficticios-.

Haz clic en 'Listados individualizados de datos', contraseña 'a' -sin las comillas claro-, no filtres datos. En el listado que te sale -se llama: Inf_Entradas_y_Salidas_I- es donde se está produciendo el problema. Observa que en el momento actual el control 'SumaPausaCafé' toma el valor del 'SumaHPresencia' y que a su vez el que he llamado 'Total' -no sé si es una pista...- presenta 00:00.

Vete a 'Utilidades Administración' del Menú Principal --> Modificación de datos de control --> Contraseña 'a' --> Filtra por el Tranajador 'Rafael' --> En el registro que se te presenta, el 3 y último, modifica simplemente el Tipo de Salida y pon por ejemplo 'Salida Ordinaria'.

Cierra todo y abre de nuevo el Listado Individualizado de Datos. Repara en que ahora todo es correcto...

El .rar:

https://mega.nz/#!vV8mAazL!bZZiGbJ18WajY5_fde-Io1lVd17w-oWDNy_HD-wft1w

P.S.- En el evento 'Al dar formato' de la sección Pie del Informe del Inf_Entradas_y_Salidas_I, había empezado a hacer pruebas con el MsgBox VbYesNo... las líneas de código las he comentado al no tener éxito en estos primeros momentos.

Rafael
Nivel 5
Mensajes: 192
Registrado: Dom Dic 27, 2015 10:33 am

Re: Control horario. Suma a Horas de Presencia las Salidas a tomar café y otras.... Sintaxis correcta.

Mensajepor Rafael » Vie Ago 16, 2019 2:09 pm

Yo diría que una vez resuelto el problema de la SiInm renuente el programa quedaría listo.

La aplicación presentaría para un período previamente indicado y para cada trabajador, dos informes, uno con indicación de las horas (decimales) de presencia física en el trabajo, el total de pausas para el café, el total de horas de visitas médicas, el dedicado a la atención de asuntos particulares... (no se me ocurre qué más... ¿a alguien ahí fuera sí? :mrgreen: )... y otro casi exactamente con el mismo formato pero totalizando horas de trabajo (siempre decimales) de acuerdo a las respuestas afirmativas o negativas a los MsgBox YesNo que, de acuerdo a las convenciones que rijan en la organización de que se trate, se contesten a si se suman como jornada efectiva de trabajo las 'pausas de café', visitas médicas, asuntos particulares (puntuales claro)... y... Finalmente este segundo informe se cerraría con las firmas del trabajador y gerente/jefe de personal/encargado del control/administrador... ¿¿??

Pero bueno, esperaré a la solución del problema pendiente...

Edito para compartir (17-08-2019) un truco/descubrimiento que hice ayer.- Lo esquematizo así: conversión a número de horas decimales Sumas acumuladas de Horas Cortas. Quien esté leyendo esto es que ha leído aunque sea deprisa y corriendo parte del contenido de este hilo. Si es así sabrá que el informe de Control de Jornada Laboral al que se dedica gran parte del contenido del mismo, tiene en la Sección del Pie de aquél varios controles de campos calculados que sumarían Horas Netas de Presencia Laboral, Horas de Pausa para el café, Horas de Salida del Centro para Consulta Médica, Horas de Atención de Asuntos Particulares fuera del centro de trabajo... etc etc etc... y todos ellos con el formato de Hora Corta, por lo que sabía que tarde o temprano tendría que reconvertir este formato a número de horas pues cuando tales sumas superasen el total de 24:00 horas: plaf! Pues bien de un modo casual, experimentando, cambié el formato de uno de estos controles -el de que me calculaba las horas netas de trabajo presencial: =Suma([HoraSalida]-[HoraEntrada])- de Hora Corta a número Estándar. Eso hizo que al lanzar el informe ese control me presentase un valor numérico que no me decía absolutamente nada. Siguiendo experimentando me dio por crear al lado de dicho control -al que finalmente asigné un ancho 0- otro que simplemente multiplicase su fórmula de cálculo por 24... y .... bingo! El nuevo control me presentaba el total de horas decimales de presencia en el trabajo... por supuesto que no creo haber inventado la pólvora pero bueno comparto con todos aquellos a los que este método simplérrimo de cálculo les puede ser útil y no conocían... :)

pitxiku
VIP
Reto02
Mensajes: 313
Registrado: Sab Sep 30, 2017 6:23 pm

Re: Control horario. Suma a Horas de Presencia las Salidas a tomar café y otras.... Sintaxis correcta.

Mensajepor pitxiku » Mar Ago 20, 2019 4:15 pm

Te he hecho unas pequeñas modificaciones en el informe:

- https://1drv.ms/u/s!AsYMk9OS3HACiQCSxuD ... h?e=TeGPjy

Como puedes tener una salida sin entrada (que es el problema que tenías), lo que he hecho es colocar un poco de código para que almacene la última salida al café, para que cuando haya un regreso del café, tomar ese dato para calcular la pausa y el total de tiempo en el café.

¿Se puede hacer sin código? Seguramente sí, pero estoy un poco espeso para pensar en las posibilidades y hacer una expresión o consulta que funcione bien.

¿Y qué pasa si hay una entrada sin salida? Que habrá un resultado erróneo. Pero así como la salida sin entrada si que es posible (hoy he salido a tomar café y has generado el informe antes de que yo haya vuelto), entiendo que no se puede volver del café si todavía no te has ido, y tendrás por otro lado contemplada la posibilidad para evitar el fichaje.

Ahora, algún apunte más:

- Ya has visto qué ocurre cuando multiplicas x24 una fecha. Esto es porque Access guarda todas las fechas y horas como un número, donde la parte entera son el número de días que han pasado desde una fecha específica (creo que para Access es el 1 de enero de 1900), mientras que la parte decimal son las horas, minutos y segundos que han transcurrido desde medianoche. Si al valor que tienes después de multiplicar x24, le quitas la parte entera, y lo multiplicas x60, tendrás los minutos.

- Access sólo tiene un tipo de datos Fecha/Hora, y siempre guarda la fecha y hora, aunque sólo le pasemos una parte. Lo digo porque tener 2 campos para el fichaje de entrada y otros 2 para la salida, es un poco duplicar datos. Y si tienes un campo para la fecha y hora de entrada, y otro para la fecha y hora de salida, podrás calcular más fácil el tiempo de trabajo cuando la persona entre a trabajar hoy y salga mañana (turno de noche). Vale que puedes sumar la fecha a la hora de entrada, pero si los puedes tener juntos, para qué separarlos y volverlos a unir.

- Usa Option Explicit: te lo puede poner Access por defecto, y te ahorrará quebraderos de cabeza, sobre todo si eres como yo, que cometo errores de escritura: no es lo mismo PEPE que EPPE. Pero si no lo ves, y Access no tiene el Option Explicit, no se va a quejar y puedes tener resultados inesperados.

Rafael
Nivel 5
Mensajes: 192
Registrado: Dom Dic 27, 2015 10:33 am

Re: Control horario. Suma a Horas de Presencia las Salidas a tomar café y otras.... Sintaxis correcta.

Mensajepor Rafael » Mar Ago 20, 2019 6:32 pm

Gracias Pitxiku, esperaba tu respuesta como agua de mayo!!! :) , pero en este momento estoy a 500 kms del ordenador :) ... hasta el domingo no podré destripar lo que me dices: de hecho estoy escribiendo esto desde el móvil, así que perdón por posibles errores ortográficos :) :)


Volver a “Código VBA”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado