2009-05-18 18 views
6

Tengo un informe con un conjunto de datos que tiene una columna con booleanos. En el pie de tabla de la tabla quiero mostrar x/y donde x es cuántas filas fueron true y y es cuántas filas había total.SSRS: Cómo contar filas verdaderas

Actualmente tengo unas pocas cosas:

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

Pero se convierte en el primer mismo que la última parte. Luego intenté esto:

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

Pero eso genera un error, que creo que puedo entender. Pensé que si convertía los booleanos en números donde verdadero es 1 y falso es 0, podría funcionar bien. ¿Pero cómo puedo hacer eso? ¿O es una forma más inteligente de hacer esto todos juntos?

Actualización: ahora también han intentado

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

y consiguió un resultado negativo ... O.o

encontró también una forma que trabajaba, que he publicado como respuesta. Pero no voy a aceptarlo como una respuesta aún en caso de que alguien tenga una mejor manera de hacer esto =)

Respuesta

9

te puedo decir por qué las cosas salieron mal ...

  • Count (Fields! Transfered.Value) es simplemente el número de filas. aka CountRows()
  • Sum (Fields! Transfered.Value) está tratando de agregar "verdadero" o "falso" = error
  • Sum (CInt (Fields! Transfered.Value)) se resumen -1 y 0 porque VB .NET cierto = -1
  • sum (IIF (Fields! Transfered.Value, 1, 0)) corrige el problema de signo = su solución

Para evitar el IIF adicional, se puede usar negar la suma de todos los -1s

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

Al final, cualquiera de las soluciones estaría bien y ambos son igualmente kludgy

+2

Gracias! Las cosas son más claras ahora: D (¿Por qué alguien decidir hacer verdadero = -1?) – Svish

+3

Dunno. Para hacer que la gente odie a VB.Net? ;-) – gbn

+1

Bueno, han hecho un buen trabajo de todos modos: p C# FTW! – Svish

1

Encontré una manera de hacerlo, aunque es probable que haya una manera más clara y lógica ...

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

Me encontré con esto hoy y al menos verifiqué que no era el único que obtenía un valor de suma negativa para los bools de SSRS. Gracias.

Mi solución fue utilizar ABS por valor absoluto. Me gusta más que simplemente negar la expresión únicamente porque es más fácil ver visualmente donde podría perderse el '-' si no tienes cuidado al leer la expresión.

pero es esencialmente la misma cosa

0

Esta es una manera en la que contar con un valor agrupado

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

La segunda parte

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

Eliminar 1 de la cuenta si tiene True y False valor o si solo hay un valor distinto de false.

Cuestiones relacionadas