Ir para conteúdo

POWERED BY:

Arquivado

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

rafaelguedes

Calculo envolvendo hora

Recommended Posts

Olá amigos, recorro a vossa ajuda pois estou com um problema para calcular o tempo total em um determinado projeto. O Cenário é o seguinte: Possuo no banco de dados uma tabela que contem um campo chamado duração do tipo smalldate (SQL Server), e eu estou precisando saber o total de horas que um determinado usuário ficou alocado em um projeto.

 

O que na verdade eu queria era acumular o tempo total, em um contador de horas ou algo assim. Tentei um SELECT SUM(CampoDuracao) AS TempoTotal FROM Tabela WHERE Bla bla bla mas ele me disse que a operação SUM() não é compatível com dados do tipo SmallDate. :(

 

Eu queria saber como posso fazer no ASP ou SQL Server mesmo, como posso acumular essas horas.

 

SQL = "SELECT Duracao FROM Tabela WHERE ProjetoID = 1 AND UsuarioID =12"Set rs = Conexao.Execute( SQL )While Not rs.EOF TempoTotal = TempoTotal + rs(Duracao) rs.MoveNextWend

Bom eu gostaria que meu acumulador, calculasse as horas no formato correto por exemplo 2:30 e não 2,5 ou coisas do tipo.

 

Espero ter sido claro, e espero receber dicas para solucionar isto.

 

Agradeço a atenção, Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta ver se com a função DateAdd do vbScript você consegue DateAdd ( )Descrição:Devolve uma data, onde um determinado intervalo foi submetido.NovaData = DateAdd("m", 1, "31-Jan-95")' é devolvido "28-Fev-95"As adições possíveis são determinadas pelas seguintes hipóteses :yyyy -> Anoq -> Quartom -> Mêsy -> Dia do Anod -> Diaw -> Dia da semanaww -> Semana do anoh -> Horan -> Minutos -> SegundoTalvez você tenha q usar antes alguma função FormatDataType, da uma testada ai.Trabalhar com data e hora é chato demais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente amigos trabalhar com calculo de hora é um saco, é um sistema de timesheet que estou implantando para a empresa onde trabalho.

 

Bom, fiz alguns progressos desde as ultimas dicas e acabei criando a seguinte função:

 

Function retCargaHoraria()		Dim vDuracao		Dim vTempoTotal		Dim Hora		Dim Minuto		SQLDuracao = "SELECT Duracao"		SQLDuracao = SQLDuracao &" "& retCosulta( Session("SQL") )		Set rsDuracao = Conn.Execute ( SQLDuracao )				While Not rsDuracao.EOF			If rsDuracao(0) <> "" Then				vDuracao = Right(rsDuracao(0),9)				vDuracao = Left(vDuracao,6)				'response.Write(vDuracao)				vDuracao = Split(vDuracao,":",-1,1)				If( vDuracao(0) <> "" )Then					Hora = CInt( vDuracao(0) )					vTempoTotal = DateAdd("h",Hora, vTempoTotal)				End If				If( vDuracao(1) <> "" )Then					Minuto = CInt( vDuracao(1) )					vTempoTotal = DateAdd("n",Minuto, vTempoTotal)				End If			End If			rsDuracao.MoveNext		Wend		Set rsDuracao = Nothing								retCargaHoraria = vTempoTotal	End Function

Ela vai no banco e vai acumulando a hora a cada interação do bloco while. Notem que eu estou tratando a hora que banco de dados retorna (smalldate) '2005-10-01 15:00' Por exemplo para '15:00', em seguida ele splita (neologismo :) ) criando um vetor com a Hora e outro com os Minutos e adiciona ambos ao tempo Total. Show isso esta funcionando legal. O Problema é que quando o cara trabalha mais de um dia (mais de 24 horas) por exemplo se você trabalha 25 horas (1 dia e 1 hora) ele mostra 1/1/1900 (representando em dias) e 1:00 -> '1/1/1900 1:00' e na verdade eu gostaria que ele me mostrasse 25 horas. Bom ainda aguardo dicas para resolver esse problema. Grato pela atenção. Abraços.

 

Putz faltou matar (fechar) o rs no fim da função hehehe mas deu pra entender a idéia né... Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites
ow será q você poderia postar um sistema ai de time sheet????
Eita! ressucitou um tópico de 2005!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ahhh vai saber derepende até agora o kra já deve ter montado um sistemão de TimeSheet... E se eu tiver sorte o kra ta loco pra montar um artigo e so tava pensando no q fazer..rsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dois dos envolvidos não postam desde o início de 2006!

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.