Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gilberto Jr

Calculo de Hora

Recommended Posts

Bom dia;

 

Eu fiz um sisteminha de relógio de ponto aqui.

 

O Funcionário chega de manha e bipa a matricula dela e na hora de ir embora também faz o mesmo processo.

 

Só que no relatório eu tenho que passar mostrar a quantidade de horas trabalhada no dia.

 

Tentei fazer a hora de saída menos a hora de chegada e não funcionou.

 

Poderia me ajudar?

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu faço assim, com o DateDiff, olha este exemplo:

 

DATA1 = Cdate(Now()) 'DATA ATUAL
DATA2 = Cdate(FINALIZA) 'DATA FINALIZAÇÃO
DIAS = DateDiff("d",DATA1,DATA2)
If DateDiff("h",DATA1,DATA2) <> 0 Then
HORA = DateDiff("h",DATA1,DATA2) - Cint(DIAS) * 24
Else
HORA = 0
End If
If DateDiff("n",DATA1,DATA2) <> 0 Then
MINUTO = DateDiff("n",DATA1,DATA2) - DateDiff("h",DATA1,DATA2) * 60
Else
MINUTO = 0
End If
If DateDiff("s",DATA1,DATA2) <> 0 Then
SEGUNDO = DateDiff("s",DATA1,DATA2) - DateDiff("n",DATA1,DATA2) * 60
Else
SEGUNDO = 0
End If
If SEGUNDO < 0 Then
MINUTO = MINUTO - 1
SEGUNDO = 60 - SEGUNDO + SEGUNDO * 2
End If
If MINUTO < 0 Then
HORA = HORA - 1
MINUTO = 60 - MINUTO + MINUTO * 2
End If
If HORA < 0 Then
DIAS = DIAS - 1
HORA = 24 - HORA + HORA * 2
End If
If DIAS > 1 Then
Response.Write "<font color=#003366 class=fontsize>" & DIAS & "d " & HORA & "h </font>"
ElseIf DIAS = 1 Then
Response.Write "<font color=#FF0000 class=fontsize>" & DIAS & "d " & HORA & "h </font>"
ElseIf DIAS = 0 AND HORA > 0 Then
Response.Write "<font color=#FF0000 class=fontsize>" & HORA & "h " & MINUTO & "m </font>"
ElseIf DIAS = 0 AND HORA = 0 AND SEGUNDO > 1 Then
Response.Write "<font color=#FF0000 class=fontsize>" & MINUTO & "m " & SEGUNDO & "s </font>"
End If
%>

 





			
		

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse código deu certo...

 

Só que eu estou com a seguinte duvida...

 

No meu select que vou fazer ele vai trazer todos os registros que tem no banco de dados. Eu queria fazer o calculo de linha por linha.

 

No meu relatório eu vou usar o famoso WHILE RS.EOF = FALSE - RS.MOVENEXT WEND para listar os dados que esta no meu banco de dados e vai ter uma coluna onde eu quero mostrar a hora trabalhada para cada dia.

 

Nesse script como eu faço ele fazer o que eu quero?

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

joga ele dentro de um loop

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ótimo XAN, deu certinho colocando dentro do loop.

 

Só que agora vem a seguinte questão. O funcionário tem que trabalhar 8 horas por dia sendo 1 hora de almoço vai para 9 horas.

 

Agora eu quero pegar o total de horas trabalhada no dia e diminuir por 9 horas e mostrar o resultado.

 

Vamos supor que trabalhei 11:00:00 no dia menos 09:00:00. 11:00:00-09:00: = 02:00:00 dai eu quero mostrar o resultado na tela.

 

E se eu trabalhei 08:00:00 no dia e o correto seria 09:00:00 fico devendo 01:00:00. Ou seja, colocar o resultado negativo -01:00:00.

 

E possível?

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido...

Parece ser complicado e no final você acaba vendo que era simples.

 

Segue o código

 

<table>
<%
while ultimoponto.eof = false
 
DATA1 = Cdate(right(ultimoponto("horario_chegada"),8)) 'DATA ATUAL
DATA2 = Cdate(right(ultimoponto("horario_saida"),8)) 'DATA FINALIZAÇÃO
DIAS = DateDiff("d",DATA1,DATA2)
If DateDiff("h",DATA1,DATA2) <> 0 Then
HORA = DateDiff("h",DATA1,DATA2) - Cint(DIAS) * 24
Else
HORA = 0
End If
If DateDiff("n",DATA1,DATA2) <> 0 Then
MINUTO = DateDiff("n",DATA1,DATA2) - DateDiff("h",DATA1,DATA2) * 60
Else
MINUTO = 0
End If
If DateDiff("s",DATA1,DATA2) <> 0 Then
SEGUNDO = DateDiff("s",DATA1,DATA2) - DateDiff("n",DATA1,DATA2) * 60
Else
SEGUNDO = 0
End If
If SEGUNDO < 0 Then
MINUTO = MINUTO - 1
SEGUNDO = 60 - SEGUNDO + SEGUNDO * 2
End If
If MINUTO < 0 Then
HORA = HORA - 1
MINUTO = 60 - MINUTO + MINUTO * 2
End If
If HORA < 0 Then
DIAS = DIAS - 1
HORA = 24 - HORA + HORA * 2
End If
 
if HORA<9 then
HORA = "0"&HORA
end if
 
if MINUTO<9 then
MINUTO = "0"&MINUTO
end if
 
if SEGUNDO<9 then
SEGUNDO = "0"&SEGUNDO
end if
 
If DIAS = 0 AND HORA > 0 Then
HORAEXTRA = HORA & ":" & MINUTO & ":" & SEGUNDO
ElseIf DIAS = 0 AND HORA = 0 AND SEGUNDO > 1 Then
HORAEXTRA = HORA & ":" & MINUTO & ": " & SEGUNDO
End If
 
JORNADA = CDate("09:00:00")            
TRABALHADA = CDate(HORAEXTRA)
 
 
%>
  <tr>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td>
<%=HORAEXTRA%>
    </td>
    <td>
<%=response.Write(CDate(CDate(JORNADA) - CDate(TRABALHADA)))%>
</td>
  </tr>
<%
ultimoponto.movenext
wend
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

simples e funcional

 

1947456_685866301457169_495201679_n.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.