Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas com calculo


alexandremanowar

Pergunta

Fiz um código que calcula horas dirária baseado em um tópico que aprendi aqui no fórum, esta funcionando normalmente, porém quando eu mando calcular o total de horas de todos os dias ele me exibe um valor errado, fiz uns testes quando eu mando calcular a hora do dia ela não passa de 23:59:59, quando eu mando calcular o total de horas de todos os dias daria aproximadamente 180:00:00 ou mais porém precebi que o método que estou usando para somar se limita em 23:59:59.

Como posso fazer para calcular o total de horas de todos os dias?

Olha a parte do código que faz esse processo:

Dim TotalGeral as TimeSpan

TotalGeral = New TimeSpan(0, 0, 0)

Dim TotalFinal As TimeSpan

TotalFinal = New TimeSpan(0, 0, 0)



dsPonto = ExecutarStringSQL.BuscarDados("select * from tabela  order by cont ")

For Each RegistroHoras In dsPonto.Tables(0).Rows

HoraEntrada = RegistroHoras("hora_entrada").ToString.Split(":")

HoraSaida = RegistroHoras("hora_saida").ToString.Split(":")

TotalHoras.Add(New TimeSpan() {New TimeSpan(HoraEntrada(0), HoraEntrada(1), 0), New TimeSpan(HoraSaida(0), HoraSaida(1), 0)})

ContadorBanco = RegistroHoras("cont")

Next


For Each AnalisaHora As TimeSpan() In TotalHoras

SomaHoraEntrada = AnalisaHora(0)

SomaHoraSaida = AnalisaHora(1)

Subtotal = SomaHoraSaida.Subtract(SomaHoraEntrada)

TotalGeral = TotalGeral.Add(Subtotal)



TotalFinal = TotalFinal.Add(TotalGeral)



Next

Onde TotalGeral mostra o total de horas do dia, como não passa de 23:59:59 então exibie o resultado ok

Onde TotalFinal mostra a soma de horas de todos os dias onde passa de 180:00:00, preciso de uma solução para esse resultado final.

Alguém sabe como fazer essa soma?

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Cara, fiz um teste aqui e soma sim igual a 180 horas ou mais:

Dim t As New TimeSpan(60, 0, 0)
Dim t2 As New TimeSpan(60, 0, 0)
Dim t3 As New TimeSpan(60, 0, 0)

t = t.Add(t2)
t = t.Add(t3)

MessageBox.Show(t.ToString)

Note que o método Add() te retorna o objeto somado, ele não acrescenta àquela instância. Note também que o excedente ao período de 1 dia é retornado em dias, então o código acima vai te mostrar 7.12:00:00, ou seja, 7 dias e mais 12 horas (o quê corresponde a 180 horas).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

E a e beleza!

Então é isso mesmo que esta acontecendo ele esta jogando em dias eu não tinha percebido! Cara abri o post hoje 8 horas vi sua resposta e comecei a procurar um jeito de converter isso em horas pura novamente mas não consegui, procurei em fóruns e tutorias mas não achei nada, tentei usar algumas coisas com timespan mas não rolou, você sabe como conver isso para horas ou seja exibir os 180:00:00?

Valeu pela força

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, multiplica o total de dias por 24 e soma com as horas e você vai ter os 180 (7*24 + 12 = 180). Dá pra fazer uma classe que te retorne isso no método ToString() ou se você estiver usando o VS2008 pode usar um Extension Method para ter um método assim no próprio objeto TimeSpan.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

E ae beleza!

então cara consegu fazer um esquema aqui muito legal! Achei em um fórum o cara colocou a idéia bacana, ficou assim:

Dim t As New TimeSpan(60, 0, 0)
Dim t2 As New TimeSpan(60, 0, 0)
Dim t3 As New TimeSpan(60, 0, 0)

t = t.Add(t2)
t = t.Add(t3)


Dim totalgeral As String
 totalgeral  = String.Format("{0}:{1}:{2}", Int(t.TotalHours), (t.Minutes), (t.Seconds))

MessageBox.Show(totalgeral.ToString)

Valeu pela força!

Editado por alexandremanowar
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...