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

Somando hora no DataGridView.


Cláudio Duarte

Pergunta

Bom dia.

Tenho um DataGridView que busca no bancos os dados após consulta.

No DataGrid possui uma coluna chamada horas trabalhadas e ao realizar o filtro gostaria de colocar um textbox com a soma dessa coluna.

Estou utilizando o Visual basic 2010. Tentei o seguinte código no click do botão soma:

For Each Linha As DataGridViewRow In Me.DgvProjeto.Rows

Dim valor As Date

If Not Linha.IsNewRow Then

'Executa a soma dos valores da coluna 9

valor += Linha.Cells(9).Value

Me.TxtTotal.Text = valor

End If

Next

O erro foi: "A conversão da cadeia de caracteres '00:00:0001/01/1900' no tipo 'Date' não é válida."

No banco o tipo do dado é DateTime

------------------------------------------------------------------------------------------------------

Recebi outro código como ajuda porém ocorre o mesmo erro:

Segue o código com as modificações:

Private Function Total() As Date

'Dim tot As Double = 0

Dim tot As Date

Dim i As Integer = 0

For i = 0 To DgvProjeto.Rows.Count - 1

tot = tot + Convert.ToDateTime(DgvProjeto.Rows(i).Cells("HorasTrabalhadas").Value)

Next i

Return Date.FromOADate(tot.ToOADate())

End Function

Private Sub PcxTotalHoras_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PcxTotalHoras.Click

If DgvProjeto.Rows.Count > 0 Then

TxtTotal.Text = Total().ToString("H:mm")

End If

End Sub

Poderiam me ajudar?

Grato.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Cara dá uma modificada nisso e ve se resolve teu problema:

Dim Total As DateTime = DateTime.Now;

           For (i = 0 To dgvProjeto.Rows.Count - 1)

                '# Aqui você deve fazer a conversão das suas horas para double, no parâmetro do AddHours
                Total = Total.AddHours(dgvProjeto.Rows(i)("HorasTrabalhadas").ToString());

           Next

            Dim ts As TimeSpan = new TimeSpan.FromHours(Total.ToOADate());
            MessageBox.Show(string.Format("{0} {1}",ts.Hours, ts.Minutes));

Existem algumas maneiras de você fazer essa conversão. Basta dar uma olhada no Google. Eu particularmente alimentaria a grid fazendo duas colunas: uma com o dia e outra com a hora, usando o DatePart() do SQL.

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,3k
    • Posts
      652,5k
×
×
  • Criar Novo...