Pergunta

Eu tenho um relatório e uma fonte de dados onde uma das colunas são do tipo TimeSpan. O valor TimeSpan aparece para exibir corretamente no relatório quando eu uso Fields!TheTime.Value, não há problema nenhum.

  • 07:02:00
  • 05:41:00

Mas eu gostaria de fazer uma soma desses valores para obter o tempo total de um grupo. Em C # e como eu pode, naturalmente, fazer um TimeSpan + outra TimeSpan, então eu sei que eles podem ser adicionados. Tentei

=Sum(Fields!TheTime.Value)

Mas ele acaba imprimindo como um número longo de algum tipo. Por exemplo, para os tempos outputted acima, gostaria de obter 457800000000 como a soma. E o que é que mesmo deveria ser?

De qualquer forma, como posso resumir TimeSpan valores em um relatório? Para os intervalos de tempo acima gostaria de acabar com 12:43:00 como a soma. A menos que minha cabeça me falhou em matemática, mais uma vez ... mas você começa a idéia: p

Foi útil?

Solução

suspiro A solução irritantemente simples ... Por que não poderia eu apenas tentei isso em primeiro lugar? Oh, bem ... talvez porque eu não sabia que eu tinha acesso a classe TimeSpan ... talvez porque eu tinha pensado me cegar ... Mas de qualquer maneira, aqui está:

=TimeSpan.FromTicks(Sum(Fields!TheTime.Value))

D'oh!

Outras dicas

@Svish - Eu apaguei meu post anterior, porque eu tinha uma incerteza ajuste sobre a minha resposta, mas concordo com @pfunk.

Eu finalmente consegui SSRS backup e tinha um jogo ao redor e certamente parece o seu número grande é o número de tiques de modo que parece um pouco de formatação do resultado irá trabalhar para você.

Curiosamente a minha resposta complicada anterior era uma solução alternativa para somar DateTime valores (usando SQL Server DATETIME tipo de dados na minha consulta) que você não pode fazer no SSRS (e SQL) porque você não pode somar uma DATETIME. Vou incluí-lo aqui novamente para referência futura, mas eu acho que foi um pouco de uma tangente antes:)

O código abaixo converte um campo DateTime em um casal, resume o resultado e, em seguida, converte-lo de volta para DateTime e formata para hh: mm: ss

=Date.FromOADate(Sum(Fields!TheTime.Value.ToOADate())).ToString("hh:mm:ss")

O que é provavelmente a acontecer é que quando você exibir Fields! TheTime.Value, SSRS é inteligente o suficiente para saber para mostrar que, como um campo de tipo DateTime

quando você adiciona a soma lá ele pensa que é um campo de tipo numérico e exibe-lo como tal (ou seja, é somar o número de "carrapatos" em cada campo timespan)

tentar especificamente formatar o valor somado como uma data e hora nas propriedades do campo e provavelmente vai mostrar corretamente

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top