Ir para conteúdo

POWERED BY:

Arquivado

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

bgssilva

Subtração entre horas

Recommended Posts

Olá pessoal tenho um sistema que controla os horários dos usuários que o acessam levando em consideração o tempo dos itens que são lançados num banco em Access.Consegui fazer praticamente todas as contas de que necessito restando apenas uma que está me dando dor de cabeça. Por isso peço a ajuda de vocês...tenho uma tabela com os seguintes campos, data / item / horaini / horafim / tempoitem, veja:25/05/2007 - A - 09:30:00 - 09:45:00 - 00:15:0025/05/2007 - B - 09:50:00 - 10:10:00 - 00:20:00Agora preciso saber o tempo entre os itens e pensando rapidamente preciso subtrair a horaini de B pela horafim de A.Só que como faço isso uma vez que os valores estão em registros diferentes. Exibo essas informações em um relatório usando a estruturaWhile not rs.eof ... ...rs.movenextwend

Compartilhar este post


Link para o post
Compartilhar em outros sites

utilize a função datediff

 

segundos = DateDiff ("s", horaini , horafim) minuto = segundos/60

Compartilhar este post


Link para o post
Compartilhar em outros sites

utilize a função datediff

segundos = DateDiff ("s", horaini , horafim) minuto = segundos/60
Oi.. Jonathandj acredito que você não tenha entendido meu problema... a utilização das funções eu tenho conhecimento.... o problema é dentro do WHILE pegar a HORAINICIAL do registro postarior e subtrair da HORAFINAL do registro atual. e continuar minha estrutura de repetição sem pular registros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ah sim, ficou mais claro

 

bom, você não pode jogar em uma variavel dentro do while?

do while not rs.eofif horaIniAnt <>"" thensegundos = DateDiff ("s", horaIniAnt , rs("horafim")) end ifhoraIniAnt = rs("horaini")rs.movenextloop

Compartilhar este post


Link para o post
Compartilhar em outros sites

ah sim, ficou mais clarobom, você não pode jogar em uma variavel dentro do while?

do while not rs.eofif horaIniAnt <>"" thensegundos = DateDiff ("s", horaIniAnt , rs("horafim")) end ifhoraIniAnt = rs("horaini")rs.movenextloop
Olá jonathandj meu problema é que tenho que efetuar uma subtração entre registros. Veja:tenho uma tabela com os seguintes campos, data / item / horaini / horafim / tempoitemregistro 1 - 25/05/2007 - A - 09:30:00 - 09:45:00 - 00:15:00registro 2 - 25/05/2007 - B - 09:50:00 - 10:10:00 - 00:20:00dai tenho que subtrair a horafini do registro 2 pela horafim do registro 1 e pra isso tenho que usar o movenext e moveprevious mas tenho que retornar para o registro atual pois não posso pular registro nenhum.

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo, creioque entendi o propósito e pelo exemplo acima daria pra fazer pois aramazenando na variavel você terá o registro anterior e compararia com o registro atual, após comparar atualiza a variavel e ela agora será o registro anterior.

O que faltou no exemplo que passei foi mostrar como mostrar os dados pois se não fizer nada a variavel segundos vai ficar apenas com ultimo registro...veja como ficaria

 

i=1do while not rs.eofif horaIniAnt <>"" thensegundos = DateDiff ("s", horaIniAnt , rs("horafim")) response.write("Tempo do registro "&i&" = "&segundos &"<br>")end ifhoraIniAnt = rs("horaini")i=i+1rs.movenextloop

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo, creioque entendi o propósito e pelo exemplo acima daria pra fazer pois aramazenando na variavel você terá o registro anterior e compararia com o registro atual, após comparar atualiza a variavel e ela agora será o registro anterior.O que faltou no exemplo que passei foi mostrar como mostrar os dados pois se não fizer nada a variavel segundos vai ficar apenas com ultimo registro...veja como ficaria

i=1do while not rs.eofif horaIniAnt <>"" thensegundos = DateDiff ("s", horaIniAnt , rs("horafim")) response.write("Tempo do registro "&i&" = "&segundos &"<br>")end ifhoraIniAnt = rs("horaini")i=i+1rs.movenextloop
Não havia percebido a estrutura IF com o teste da variável.... meu problema é que tenho que armazenar numa suposta variável a hora final do registro anterior. pois a conta é horaini - horafim(anterior) e eu utiliza a função abaixo para fazer o cálculo de horas seja ele qual for. veja:
<%Function CalculaIntervaloHoras(intervaloH)Dim Hora, Minuto,  Segundo	if not isnull(intervaloH) then		Hora = Int(CSng(intervaloH * 24))		Minuto = Int(CSng(intervaloH * 1440)) Mod 60		Segundo = Int(CSng(intervaloH * 86400)) mod 60			if len(Hora) = 1 then 			Hora = "0" & Hora		end if				if len(Minuto) = 1 then 			Minuto = "0" & Minuto		end if				if len(Segundo) = 1 then 			Segundo = "0" & Segundo		end if	 		CalculaIntervaloHoras = Hora & ":" & minuto  & ":" & segundo		else		CalculaIntervaloHoras = #00:00:00#	end ifEnd Function%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

não serve montar em um array e manipular onde desejar?você pode utilizar essa função dentro do laço while pra exibir o resultado

Compartilhar este post


Link para o post
Compartilhar em outros sites

não serve montar em um array e manipular onde desejar?você pode utilizar essa função dentro do laço while pra exibir o resultado

A sua dica deu certo... tive que fazer algumas modificações para adequar ao meu código... mas a lógica é exatamente aquela citada por você. Valeu jonathandj! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza cara....precisando faz o post ae que a gente queima a cuca pra tentar resolver heheheabraço

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.