Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia pessoal,
estou criando relatórios e agora eu preciso somar o tempo total gasto,
Porém na minha coluna os valores aparecem assim por exemplo (hh:mm:ss): 10:32:44 ou seja 10 horas, 32 minutos e 44 segundos.
ai se eu tenho por exemplo 3 linhas:
00:23:00
00:15:00
01:20:00
Preciso que some esses valores e mostro no final: 01:58:00
Alguém sabe me ajudar?
Já tentei utilizar o SUM, porém quando eu executo o programa, onde deveria aparecer o total aparece "#Error".
Um colega meu me mandou um código para realizar essa operação,
porém não sei onde eu posso utilizar fórmulas no report viewer,
Alguém teria uma idéia?
Obrigadooo.
Consegui aqui,
Via banco de dados eu já sabia como fazer,
é que eu não queria deixar tanto código pra uma coisinha assim,
mas deixei assim mesmo.
Poste a solução ae.
Abraços...
Desculpe pela demora,
tive outras coisas para acelerar aqui,
O que eu fiz foi criar uma variável global int no form que contém o repoertviewer,
então peguei a string no formato 00:00:00 e mandei para um método que criei para realizar a soma das horas,
segue código:
int armz_hora = 0;
int armz_minuto = 0;
int armz_segundo = 0;
private string somaValores(int hora, int minuto, int segundo)
{
armz_hora = hora + armz_hora;
armz_minuto = minuto + armz_minuto;
armz_segundo = segundo + armz_segundo;
while (armz_segundo > 59)
{
armz_minuto++;
armz_segundo = armz_segundo - 60;
}
while (armz_minuto > 59)
{
armz_hora++;
armz_minuto = armz_minuto - 60;
}
if (armz_segundo < 10)
{
if (armz_minuto < 10)
{
if (armz_hora < 10)
{
string total = "0" + armz_hora.ToString() + ":0" + armz_minuto.ToString() + ":0" + armz_segundo.ToString();
return total;
}
else
{
string total = armz_hora.ToString() + ":0" + armz_minuto.ToString() + ":0" + armz_segundo.ToString();
return total;
}
}
else
{
if (armz_hora < 10)
{
string total = "0" + armz_hora.ToString() + ":" + armz_minuto.ToString() + ":0" + armz_segundo.ToString();
return total;
}
else
{
string total = armz_hora.ToString() + ":" + armz_minuto.ToString() + ":0" + armz_segundo.ToString();
return total;
}
}
}
else
{
if (armz_minuto < 10)
{
if (armz_hora < 10)
{
string total = "0" + armz_hora.ToString() + ":0" + armz_minuto.ToString() + ":" + armz_segundo.ToString();
return total;
}
else
{
string total = armz_hora.ToString() + ":0" + armz_minuto.ToString() + ":" + armz_segundo.ToString();
return total;
}
}
else
{
if (armz_hora < 10)
{
string total = "0" + armz_hora.ToString() + ":" + armz_minuto.ToString() + ":" + armz_segundo.ToString();
return total;
}
else
{
string total = armz_hora.ToString() + ":" + armz_minuto.ToString() + ":" + armz_segundo.ToString();
return total;
}
}
}
//return total;
}
Como você podem ver eu separo a string antes de mandar para o método,
depois disso eu tenho o valor total, ai criei um parâmetro no dataSet no arquivo de report para receber esse valor,
Ai adicionei um textbox no relatório que ficou com esse código:
=Parameters!tempo_total.Value
Cara somar datas ou horas as vezes é meio chato, tente fazer isso via banco de dados. Talvez seja mais fácil.
Abraços...