Question

J'ai un rapport et une source de données où l'une des colonnes sont de type TimeSpan. La valeur TimeSpan semble afficher correctement dans le rapport lorsque j'utilise Fields!TheTime.Value, pas de problème.

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

Mais je voudrais faire une somme sur ces valeurs pour obtenir le temps total d'un groupe. En C # et comme je peux bien sûr faire un TimeSpan + une autre TimeSpan, donc je sais qu'ils peuvent être ajoutés. J'ai essayé

=Sum(Fields!TheTime.Value)

Mais il finit par imprimer un nombre long de quelque sorte. Par exemple, pour les temps ci-dessus, je 457800000000 obtenir comme en sortie la somme. Et ce qui est que même censé être?

De toute façon, comment puis-je résumer les valeurs TimeSpan dans un rapport? Pour les plages temporelles ci-dessus, je voudrais finir avec 12:43:00 comme la somme. À moins que ma tête me échoué une fois de plus en maths ... mais vous voyez l'idée: p

Était-ce utile?

La solution

soupir La solution fâcheusement simple, ... Pourquoi ne pas aurais-je pu simplement essayé en premier lieu? Eh bien ... peut-être parce que je ne savais pas que j'ai eu accès à la classe TimeSpan ... peut-être parce que je me croyais aveugle ... Mais de toute façon, voici:

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

D'oh!

Autres conseils

@Svish - J'ai supprimé mon post précédent parce que j'avais une crise d'incertitude au sujet de ma réponse, mais je suis d'accord avec @pfunk.

J'ai finalement obtenu SSRS en arrière et avait un jeu autour et il ressemble certainement votre grand nombre est le nombre de tiques de sorte qu'il ressemble un peu de mise en forme du résultat pour vous.

assez ma réponse alambiquée précédente était intéressant de noter une solution de contournement pour sommer les valeurs DateTime (en utilisant SQL Server DATETIME dans ma requête type de données) que vous ne pouvez pas faire dans SSRS (SQL et) parce que vous ne pouvez pas résumer un DATETIME. Je rajouterais ici encore pour référence future mais je pense étais un peu d'une tangente plus tôt:)

Le code ci-dessous convertit un champ DateTime en double, résume le résultat et convertit ensuite revenir à DateTime et formate pour hh: mm: ss

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

Ce qui est probablement se produire est que lorsque vous affichez les champs! TheTime.Value, SSRS est assez intelligent pour savoir pour afficher que comme un champ de type DateTime

lorsque vous ajoutez la somme là, il pense qu'il est un champ de type numérique et affiche en tant que tel (par exemple, il est additionnant le nombre de « tiques » dans chaque champ timespan)

essayer de formater spécifiquement la valeur additionnée comme datetime dans les propriétés du champ et il montrera probablement à juste titre

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top