none
Calculo de horas RRS feed

  • Pergunta

  • Ola pessoal,

    tenho uma tabela no access que armazena umas ordens de  transporte, e essas ordens tem um campo data,  um campo hora da emissão, um campo hora de retorno e um campo total. E eu quero calcular esses campos sendo que as vezes o caminhão demora 2 dias para voltar, como faço para calcular esse intervalo para ver quanto tempo ele demorou na viagem???

    Tipo assim:

    10:00 hrs

    30:00 hrs

    24:00 hrs

    obrigado Edi Carlos

    segunda-feira, 21 de novembro de 2011 22:14

Respostas

  • Veja esse teste que eu fiz:

    Label1.Text = "23/11/2011 11:55:03"
    Label2.Text = Now
    Dim Data As String
    Data = TimeOfDay
    
    Dim myHora1 As DateTime
    Dim myHora2 As DateTime
    Dim myDiferenca As TimeSpan
    
    myHora1 = Label1.Text
    myHora2 = Label2.Text
    myDiferenca = myHora2.Subtract(myHora1)
    Label3.Text = myDiferenca.ToString("c") & "  -  " & Math.Floor(myDiferenca.TotalHours) & ":" & Completar(myDiferenca.Minutes, 2) & ":" & Completar(myDiferenca.Seconds, 2)
    

     

    O método completar é esse:

    Private Function Completar(ByVal Texto As String, ByVal Tamanho As Integer) As String
            Try
                For I As Integer = Texto.Length To Tamanho - 1
                    Texto = "0" & Texto
                Next
                Return Texto
            Catch ex As Exception
                Return Texto
            End Try
    End Function
    

    Att. Osni
    • Sugerido como Resposta Eder CostaModerator segunda-feira, 28 de novembro de 2011 14:13
    • Marcado como Resposta Edi Carlos_MA segunda-feira, 28 de novembro de 2011 22:22
    • Marcado como Resposta Edi Carlos_MA segunda-feira, 28 de novembro de 2011 23:44
    quinta-feira, 24 de novembro de 2011 16:04
  • Fiz igual e não deu certo aqui, mais eu fiz umas alterações depois nos outros códigos aqui, e funcionou. É isso ai mesmo que eu precisava, obrigado. Att, Edi Carlos
    • Marcado como Resposta Edi Carlos_MA segunda-feira, 28 de novembro de 2011 22:21
    segunda-feira, 28 de novembro de 2011 22:20

Todas as Respostas

  • Pesca aqui a solucao com TimeSpan :

    http://social.msdn.microsoft.com/forums/pt-br/aspnetpt/thread/F135F1CE-D711-4C33-9152-EDFC2DDBE3A7

    ou leia no http://msdn.microsoft.com/en-us/library/system.timespan.aspx


    One word frees us of all the weight and pain of life: that word is love.
    segunda-feira, 21 de novembro de 2011 22:40
    Moderador
  • Não deu certo,

    sera que é o jeito que estou salvando no banco de dados???

     

    quarta-feira, 23 de novembro de 2011 21:56
  • Não deve ser...

    Poste ai como você ffaz para salvar e depois pra tentar fazer o calculo


    Att. Osni
    quinta-feira, 24 de novembro de 2011 10:13
  •  PARA INSERIR OS DADOS:
    Private Sub incluir()
            Dim Con As New OleDbConnection
            Con.ConnectionString = My.Settings.CNS1
            Try
                Con.Open()
            Catch ex As Exception
                MessageBox.Show("Erro ao tentar acessar conexão com o Banco de Dados." & ex.Message)
                Return
            End Try
    
    
    
    
            Dim Comando As New OleDbCommand
    
    
            Comando.CommandText = "INSERT INTO Movimento ( NumeroFrota, Frente, Data, Saida) " & _
                                                " VALUES ( @NumeroFrota , @Frente, @Data, @Saida  )"
    
    
            Comando.Parameters.Clear()
            Comando.Parameters.Add("@NumeroFrota", OleDbType.Numeric, 6).Value = txtCaminhao.Text
            Comando.Parameters.Add("@Frente", OleDbType.VarChar, 14).Value = cmbFrente.Text
            Comando.Parameters.Add("@Data", OleDbType.VarChar, 12).Value = lblData.Text
            Comando.Parameters.Add("@Saida", OleDbType.VarChar, 5).Value = Format(Now, "HH:mm")
    
            Comando.CommandType = CommandType.Text
    
            Comando.Connection = Con
            Dim c As Integer
            Try
                c = Comando.ExecuteNonQuery
    
            Catch ex As Exception
                MessageBox.Show("Erro ao inserir dados no Banco de Dados : " & ex.Message)
    
                Return
            End Try
    
            MessageBox.Show(String.Format("Registro inserido com Sucesso. Tecle ENTER pra imprimir a ordem de carregamento. - {0} registros ", c))
    PARA CALCULAR:
      Private Sub Label5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblCheUsina.Click   'Clico na Label e le calcula a diferença e inseri o resultado no banco de dados
            data = TimeOfDay
            lblChegada.Text = data.Remove(5, 3)
    
            Dim myHora1 As DateTime
    
            Dim myHora2 As DateTime
    
            Dim myDiferenca As TimeSpan
    
    
    
            myHora1 = lblSaida.Text
            myHora2 = lblChegada.Text
            myDiferenca = myHora2 - myHora1
            lblTotal.Text = myDiferenca.ToString.Remove(5, 3)
            AtualizaHoraChegada()
    
            carrega_Movimento()
            txtOrdem.Enabled = True
    
        End Sub
    ABRAÇO, EDI



    • Editado Edi Carlos_MA quinta-feira, 24 de novembro de 2011 12:17
    quinta-feira, 24 de novembro de 2011 12:16
  • Veja esse teste que eu fiz:

    Label1.Text = "23/11/2011 11:55:03"
    Label2.Text = Now
    Dim Data As String
    Data = TimeOfDay
    
    Dim myHora1 As DateTime
    Dim myHora2 As DateTime
    Dim myDiferenca As TimeSpan
    
    myHora1 = Label1.Text
    myHora2 = Label2.Text
    myDiferenca = myHora2.Subtract(myHora1)
    Label3.Text = myDiferenca.ToString("c") & "  -  " & Math.Floor(myDiferenca.TotalHours) & ":" & Completar(myDiferenca.Minutes, 2) & ":" & Completar(myDiferenca.Seconds, 2)
    

     

    O método completar é esse:

    Private Function Completar(ByVal Texto As String, ByVal Tamanho As Integer) As String
            Try
                For I As Integer = Texto.Length To Tamanho - 1
                    Texto = "0" & Texto
                Next
                Return Texto
            Catch ex As Exception
                Return Texto
            End Try
    End Function
    

    Att. Osni
    • Sugerido como Resposta Eder CostaModerator segunda-feira, 28 de novembro de 2011 14:13
    • Marcado como Resposta Edi Carlos_MA segunda-feira, 28 de novembro de 2011 22:22
    • Marcado como Resposta Edi Carlos_MA segunda-feira, 28 de novembro de 2011 23:44
    quinta-feira, 24 de novembro de 2011 16:04
  • Ola Osni,

    esta dando ese erro aqui,

    "A conversão da seqüência de caracteres 'c' no tipo 'Integer' não é válida."

     

    segunda-feira, 28 de novembro de 2011 12:50
  • Você colocou o mesmo código acima?
    Att. Osni
    segunda-feira, 28 de novembro de 2011 16:35
  • Fiz igual e não deu certo aqui, mais eu fiz umas alterações depois nos outros códigos aqui, e funcionou. É isso ai mesmo que eu precisava, obrigado. Att, Edi Carlos
    • Marcado como Resposta Edi Carlos_MA segunda-feira, 28 de novembro de 2011 22:21
    segunda-feira, 28 de novembro de 2011 22:20