Access Actualizar datos entrada salida en tabla

Tengo una tabla de fichajes en la que los campos entrada y salida están en columna. He intentado transponerlos a otra tabla creando una consulta de referencias cruzadas sin éxito ya que las horas se ponen como dato y no quiero que se sumen sino que queden como hora.

Tengo otra tabla Horas en la que quiero actualizar las entradas y las salidas de los trabajadores.

He creado una consulta de actualización, pero el resultado es siempre la última salida, no la siguiente en la tabla fichaje.

Básicamente estoy intentado crear una base de fichajes importados de una aplicación.

1 respuesta

Respuesta
2

No sé como tienes ese control porque me despista un poco lo de >> "... una base de fichajes importados de una..."

Mira éste ejemplo que adapté por si te proporciona alguna idea que puedas hacer servir.

http://www.mediafire.com/file/9rko2rdk5ypp51q/ControlHorario_00.rar/file 

Verás que tiene las opciones de Informe individual y general. Un saludo >> Jacinto

Hola Jacinto,

mil gracias por tu ayuda. Mi problema es que los datos vienen en columnas, ej

idTrabajador, fecha,hora,modo

9, 04/04/2019, 18:00:00, Entrada

9, 04/04/2019, 18:30:00, Pausa

9,04/04/2019, 19:00:00, Regreso

9,04/04/2019, 21:00:00, Salida

la pausa y el regreso los puedo tratar como salida y entrada respectivamente, pero igualmente me quedan 4 columnas que no se como manejar para hallar el intervalo horario

Si pudiera colocarlas así:

idTrabajador,fecha,entrada,salida

9, 04/04/2019, 18:00:00 , 18:30:00

9,04/04/2019, 19:00:00, 21:00:00

Espero haberme explicado....

Muchas gracias una vez más

Aclarando un poco el tema, no es necesario que conviertas esos datos para hallar las diferencias de las Horas. Hay algunos ejemplos en la red y si quieres indagar un poco, con que pongas >>"Diferencia Registros consecutivos Access", verás algunos.

Te cito uno de Sveinbjorn (Un saludo Maestro), que es muy ilustrativo a mi modo de ver.

Calculo serie temporal en access

No obstante si quieres transformar la Tabla, tal como era tu idea inicial, te adjunto un ejemplo que he preparado, porque la Explicación se hubiera hecho un poco larga.

http://www.mediafire.com/file/io7o2f1aad17tud/ConvierteHorasEntSalida.rar/file 

Un saludo >> Jacinto

¡Gracias!  Un millón!!! es justo lo que necesito.

Llevo dos semanas dando vueltas a esto y he sido incapaz de hacerlo.

No sabia que se podían sumar registros consecutivos. Voy a revisar el tema y ya te contaré, pero con lo que me has enviado tengo de sobra.

Muchas gracias por la ayuda.

Hola Jacinto,

He probado lo que me mandaste y me da un error. Cuando encuentra una entrada sin salida se para.

Tampoco empieza por el primer registro de la tabla...

"Se ha producido el error 3021" "No hay registro activo" y al depurar...

RstES.Edit
RstES!HSalida = RstOrig!HoraFicha
'RstES!ActivFin = RstOrig!Modo
'Y ahora calculo los Segundos de uso. Condicionando a que haya HSalida
If IsNull(RstES!HSalida) Then
RstES!SegdosTotales = 0
'Horas, Minutos y Segundos, serán = 0
RstES!Horas = 0
RstES!Minu = 0
RstES!Segu = 0
Else
RstES!SegdosTotales = DateDiff("s", RstES!HEntrada, RstES!HSalida)
'Calculo las Horas, Minutos y Segundos
RstES!Horas = Fix(RstES!SegdosTotales / 3600)
RstES!Minu = Fix((RstES!SegdosTotales Mod 3600) / 60)
RstES!Segu = ((RstES!SegdosTotales Mod 3600) Mod 60)
End If

Como veo que en caso que no haya salida ponga h,m,sg a 0... no encuentro el error

Si me lo puedes indicar , te lo agradecería mucho.

Un saludo, 

Es dificil precisar el resultado final, cuando no se conoce todo el entorno, pero he añadido algunos apuntes en la Tabla Origen, entre ellos uno de Entrada sin salida, y uno de Salida sin Entrada.

He cambiado el código y he hecho pruebas, y con esos datos, me funciona. El nuevo enlace >>

http://www.mediafire.com/file/v4yq5fm56z297mm/ConvierteHorasEntSalida_00.rar/file 

No obstante si no tienes datos confidenciales en el Fichero que recibes y me lo quieres enviar a [email protected] veré mejor la casuistica y obrar en consecuencia.

De otro lado, y como ejercicio la BD que he puesto de ejemplo, "Borra", cada vez la Tabla de destino, y si lo que se trata es de ir "añadiendo" registros, la operativa cambiaría. Un saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas