Después de un buen rato de estar buscando información sobre mi error sumando valores de un campo y estar cambiando de formatos los números, encontré una solución que ayuda en la mayoría de los casos (hasta ahora en todos los que he probado), así que me animo a escribir por si alguien más está estancado con esto :)
Para simular un contador de las filas que cumplen una condición (nuestro filtro), valor que queremos en un cuadro de texto, la fórmula sería así:
=SUM( iif(Fields!Campo1.Value = "Algo", 1, 0), "Dataset1" )
Eso contará todas las filas de DataSet1 donde el campo llamado Campo1 es igual al texto "Algo". Fácil no? Y qué pasa si quiero sumar un valor de la misma fila? También se puede, sólo hay que indicar el campo a sumar:
=SUM( iif(Fields!Campo1.Value = "Algo", Fields!Campo2.Value, 0), "Dataset1" )
Donde Campo2 contiene números.
Pero acá es donde nos podemos topar con el error:
[rsAggregateOfMixedDataTypes] The Value expression for the textrun ‘Textbox201.Paragraphs[0].TextRuns[0]’ uses an aggregate function on data of varying data types. Aggregate functions other than First, Last, Previous, Count, and CountDistinct can only aggregate data of a single data type.
¿Por qué? Porque depende del formato del número del campo que estamos sumando, si es un entero/doble/etc es como debemos dar formato al número 0 que pusimos en la condición del iif. Acá es donde se usa el truco para evitar tener que revisar cuál es el formato y luego ver cuál es la conversión correcta desde ssrs, se puede usar la siguiente forma:
=SUM( iif(Fields!Campo1.Value = "Algo", Fields!Campo2.Value, NOTHING), "Dataset1" )
Poner nothing en vez de 0 es como considerar que el valor es nulo y como los nulos no cuentan en las sumas... taraaaan... el error de formato desaparece y tenemos el resultado esperado para la suma ;)
Referencias:
Suma condicional de valores (inglés)
No hay comentarios:
Publicar un comentario