2009-05-18 10 views
6

J'ai un rapport avec un ensemble de données qui a une colonne avec des booléens. Dans le pied de tableau je veux afficher x/yx est combien de lignes qui étaient true et y est combien de lignes il y avait total.SSRS: comment compter les lignes vraies

Actuellement, j'ai ceci:

=Count(Fields!Transfered.Value).ToString() + "/" + CountRows().ToString() 

Mais le premier devient même que la dernière partie. J'ai alors essayé ceci:

=Sum(Fields!Transfered.Value).ToString() + "/" + CountRows().ToString() 

Mais cela génère une erreur, que je suppose que je peux comprendre. Je pensais que si je convertis les booléens en nombres où vrai est 1 et faux est 0, alors cela pourrait bien fonctionner. Mais comment puis-je faire ça? Ou est-ce une façon plus intelligente de le faire tous ensemble?

Mise à jour: ont maintenant aussi essayé

=Sum(CInt(Fields!Transfered.Value)).ToString() + "/" + CountRows().ToString() 

et a obtenu un résultat négatif ... o.o

aussi trouvé une manière qui a travaillé, que je posté comme réponse. Mais je ne l'accepte pas comme une réponse encore Incase quelqu'un a une meilleure façon de le faire =)

Répondre

9

Je peux vous dire pourquoi les choses ont mal tourné ...

  • Count (Fields! Transfered.Value) est tout simplement le nombre de lignes. alias CountRows()
  • Somme (Fields! Transfered.Value) tente d'agréger "true" ou "false" = erreur
  • Somme (CInt (Fields! Transfered.Value)) résumera -1 et 0 parce que VB .NET true = -1
  • somme (IIF (Fields! Transfered.Value, 1, 0)) résout le problème de signe = votre solution

Pour éviter l'IIF supplémentaire, vous pouvez utiliser nier la somme de tous les -1s

= -Sum(CInt(Fields!Transfered.Value)).ToString() + "/" + CountRows().ToString() 

En fin de compte, une solution serait OK et les deux sont également kludgy

+2

Merci! Les choses sont plus claires maintenant: D (Pourquoi est-ce que quelqu'un déciderait de faire vrai = -1 ??) – Svish

+3

Dunno. Pour que les gens détestent VB.Net? ;-) – gbn

+1

Eh bien, ils ont fait un bon travail de toute façon: p C# FTW! – Svish

1

a trouvé un moyen de le faire, bien qu'il y ait probablement une meilleure façon plus claire et logique ...

=Sum(IIF(Fields!Transfered.Value, 1, 0)).ToString() + "/" + CountRows().ToString() 
1

Je suis tombé sur ceci aujourd'hui et au moins vérifié que je n'étais pas le seul qui a eu une valeur de somme négative pour bools hors de SSRS. Merci.

Ma solution était d'utiliser ABS pour la valeur absolue. J'aime mieux que nier l'expression uniquement parce qu'il est plus facile de voir visuellement où le '-' pourrait être manqué si vous ne faites pas attention à la lecture de l'expression.

mais il est essentiellement exactement la même chose

0

Voici une façon où vous comptez sur une valeur groupée

=CountDistinct(IIF(Fields!TrueOrFalseField.Value, 
        Fields!GroupedField.Value, 
        "BadValueToBeRemovedFromCount")) 
       -IIF(CountDistinct(Fields!TrueOrFalseField.Value)=1 
           and First(Fields!TrueOrFalseField.Value) 
        , 0, 1) 

La deuxième partie

-IIF(CountDistinct(Fields!TrueOrFalseField.Value)=1 
            and First(Fields!TrueOrFalseField.Value) 
         , 0, 1) 

supprimer 1 du compte si elle a True et False valeur ou s'il n'y a qu'une seule valeur distincte false.

Questions connexes