Visual Basic - Calcular horas trabajadas

Life is soft - evento anual de software empresarial
 
Vista:

Calcular horas trabajadas

Publicado por Gonza (2 intervenciones) el 11/09/2013 20:24:48
Buenas, estoy trabajando con VB 6.0 y Base de datos Access

Tengo un tabla que se llama registro:

Reloj Mov S Fecha Hora Usuario
1 N 0 11/09/2013 08:30:00 a.m. 7393224
1 S 0 11/09/2013 01:00:00 p.m. 7393224
1 N 0 11/09/2013 02:00:00 p.m. 7393224
1 S 0 11/09/2013 05:00:00 p.m. 7393224

Donde N es entrada y S salida.

Entonces lo que quiero saber es cuanto tiempo transucrrio entre entrada y salida para saber cuanto trabajó.

- Un usuario tiene varias entradas y salidas en un dia como se puede ver en la tabla de ejemplo

Como puedo hacer esto?? Lo necesito y no encuentro la forma de hacerlo..

LO AGRADECERIA MUCHO!
SALUDOS Y GRACIAS DESDE YAAAAAA
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
sin imagen de perfil
Val: 7
Ha aumentado su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Calcular horas trabajadas

Publicado por El Viejo Charles (262 intervenciones) el 16/09/2013 00:43:39
Hola
Bueno... analizando un poco el problema tengamos en cuenta que no pueden existir dos entradas "N" o dos salidas "S" seguidas.
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
Dim cn As New ADODB.Connection, rs As New ADODB.Recordset
cn.ConnectionString = "cadena de conexión con base de datos"
cn.Open
rs.ActiveConnection = cn
Dim Fec_Hora_N As String, Fec_Hora_S As String, TiempoTrans As Double
rs.Open "select Mov, (convert(varchar(12), Fecha) + ' ' + convert(varchar(5), Hora)) as FecHor from registro where usuario = '7393224' order by Fecha, Hora"
 
'NOTA: LA CONSULTA ANTERIOR LO MAS PROBABLE ES QUE NO TE FUNCIONE PARA  ACCESS, POR TANTO PRUEBA GUARDANDO LA FECHA Y HORA EN UN SOLO CAMPO Y REALIZA LA CONSULTA DE ESTA MANERA:
'rs.Open "select Mov, Fecha_Hora as FecHor from registro where usuario = '7393224' order by Fecha_Hora"
 
Do While Not rs.EOF
 'buscamos la fecha y hora de entrada
 If rs("Mov") = "N" Then
   Fec_Hora_N = CDate(rs("FecHor"))
 End If
 
 'buscamos la fecha y hora de salida siempre y cuando tenga la de entrada, ya que no puede existir una salida sin entrada.
 If rs("Mov") = "S" And Len(Fec_Hora_N) > 0 Then
   Fec_Hora_S = CDate(rs("FecHor"))
 End If
 
 'realizamos el calculo siempre y cuando tenga las fecha y hora de entrada y la de salida
 If Len(Fec_Hora_N) > 0 And Len(Fec_Hora_S) > 0 Then
   TiempoTrans = DateDiff("n", CDate(Fec_Hora_N), CDate(Fec_Hora_S))
   MsgBox "Tiempos transcurrido " & (TiempoTrans / 60) & " Horas"
 
 'blanqueamos los datos
   Fec_Hora_N = ""
   Fec_Hora_S = ""
 End If
 rs.movenext
Loop
rs.Close

Espero te sirva de algo amigo, cualquier cosa me escribes y miramos como te ayudo, suerte.
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