2009-05-18 14 views
6

Ho un report con un set di dati che ha una colonna con valori booleani. Nel footer tabella desidero visualizzare x/y dove x è il numero di righe che erano true e indica quante righe erano totali.SSRS: Come contare le righe vere

Attualmente ho questo:

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

Ma il primo diviene stesso come l'ultima parte. Ho quindi provato questo:

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

Ma questo genera un errore, che credo di poter capire. Ho pensato che se avessi convertito i booleani in numeri dove true fosse 1 e che false fosse 0, allora avrebbe funzionato bene. Ma come posso farlo? O è un modo più intelligente per fare tutto questo insieme?

Aggiornamento: ora hanno anche cercato

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

e ottenuto un risultato negativo ... ò.ò

Trovato anche un modo che ha funzionato, che ho postato come risposta. Ma non lo accetterò come risposta, ma qualcuno ha un modo migliore per farlo =)

risposta

9

vi posso dire perché le cose sono andate male ...

  • Conte (Fields! Transfered.Value) è semplicemente il numero di righe. aka CountRows()
  • Sum (Fields! Transfered.Value) sta cercando di aggregare "vero" o "falso" = errore
  • Sum (CInt (Fields! Transfered.Value)) si somma -1 e 0 perché VB .NET vero = -1
  • sum (IIF (Fields! Transfered.Value, 1, 0)) corregge il problema segno = la soluzione

Per evitare il più IIF, è possibile utilizzare negare la somma di tutti i -1s

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

Alla fine, entrambe le soluzioni sarebbero OK e entrambi sono ugualmente kludgy

+2

Grazie! Le cose ora sono più chiare: D (Perché qualcuno dovrebbe decidere di rendere true = -1 ??) – Svish

+3

Dunno. Rendere le persone odiate VB.Net? ;-) – gbn

+1

Beh, hanno comunque fatto un buon lavoro: p C# FTW! – Svish

1

Calcolato un modo per farlo, anche se c'è probabilmente un modo migliore più chiaro e logico ...

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

Mi sono imbattuto in questo oggi e ho verificato almeno che non ero l'unico ad aver ottenuto un valore di somma negativo per bool di SSRS. Grazie.

La mia soluzione era usare ABS per il valore assoluto. Mi piace meglio che negare l'espressione solo perché è più facile vedere visivamente dove il "-" potrebbe mancare se non stai attento a leggere l'espressione.

ma è essenzialmente la stessa cosa

0

Ecco un modo in cui si contano su un valore raggruppato

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

La seconda parte

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

Rimuovi 1 dal conteggio se ha il valore True e False o se esiste un solo valore distinto false.

Problemi correlati