Ir para conteúdo

POWERED BY:

Arquivado

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

roachdcl

Somar horas

Recommended Posts

Fala galera,

 

To fazendo um sistema de ponto eletrônico. No relatório eu preciso somar as horas q o funcionário trabalhou no período selecionado no banco. COmo se faz operações com hora no asp? Existe alguma função específica pra isso? Eu somei como se somam valores inteiros, ele concatena as horas... :wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu faço um select no banco

 

pe a hora de entrada, saída pro almoço, volta do almoço, e saída

 

eu consegui, pegar a saída do almoço menos a entrada pra pegar esse intervalo de horas, e tb com a saída menos a volta do almoço, daí eu somo esses intervalos, e conigo o total de horas trabalhadas no dia

 

 

if not isnull(rsponto("saida_alm")) then
				saida_alm = cdate(rsponto("saida_alm"))
			else
				saida_alm = 0
				na = true
			end if
			if not isnull(rsponto("chegada")) then
				chegada = cdate(rsponto("chegada"))
			else
				chegada = 0
				na = true
			end if
			if not isnull(rsponto("saida")) then
				saida = cdate(rsponto("saida"))
			else
				saida = 0
				na = true
			end if
			if not isnull(rsponto("volta_alm")) then
				volta_alm = cdate(rsponto("volta_alm"))
			else
				volta_alm = 0
				na = true
			end if
			
			horas_am = (saida_alm - chegada) 
			horas_dm = (saida - volta_alm) 
			horas_dia = cdate(horas_am) + cdate(horas_dm)
			if instr(horas_dia,"/") then
				hrd = split(horas_dia," ")
				horas_dia = hrd(1)
			end if

 

 

mas na hora de somar os dias, pra pegar o total do período selecionado do banco, eu não consigo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

tudo depende de como esta a sua estrutura de armazenamento mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá

 

Então... Eu ja trabalhei com horas, num campo data...

Eu fazia soma normalmente, usando campo + campo ou campo-campo....

 

Por exemplo, eu tinha em rs("Entrada"):

25/11/2007 19:40:00

E um rs("Saida")

25/11/2007 20:25:00

 

Eu fazia rs("Saida")-rs("Entrada")

 

O sistema retorna um número confuso... =P

Daí eu criei duas funçõezinhas que resolvem esse problema:

 

function PoeZero(numero)

if len(numero) = 1 then

PoeZero = "0" & numero

else

PoeZero = numero

end if

end function

 

function ViraHora(numero)

if numero <> "" then

ViraHora = PoeZero(int(numero/60)) & ":" & PoeZero(numero-(int(numero/60)*60))

end if

 

=======

 

Então, no movimento fazia:

 

ViraHora(rs("Saida")-rs("Entrada"))

 

Nesse caso, ele apresentaria na tela 00:45

 

Não sei se existe forma mais fácil de resolver o problema... Mas eu fiz assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

alguém sabe uma função para transformar uma quantidade de segundos em hora : minuto : segundo? Eu fiz uma, mas a única coisa q sai errado são os minutos

 

 

 

Function seghora(segs)

Horas = segs \ 3600

Minutos = (segs mod 3600) / 60

Segundos = (segs mod 3600) mod 60

Seghora = Horas & ":" & Minutos & ":" & Segundos

End Function

Compartilhar este post


Link para o post
Compartilhar em outros sites

não está 100%, mas vejam se dá pra fazer algo

 

function tempo(t)
		t = replace(t,"-","")
		if t < 61 then
			retorno = "00:00:"&right("00"&t,2)
		elseif t < 3601 then
			s = t mod 60
			m = t \60
			retorno = "00:"&right("00"&m,2)	&":"&right("00"&s,2)
		else
			s = t mod 60
			m = t \60
			if m > 61 then m = m mod 60
			h	=	t \3600
			if h > 99 then
				retorno = h&":"&right("00"&m,2)	&":"&right("00"&s,2)	
			else
				retorno = right("00"&h,2)&":"&right("00"&m,2)	&":"&right("00"&s,2)	
			end if
		end if
		tempo = retorno
	end function

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.