values tutorial total tablix sumar ssrs services columnas column reporting-services ssrs-tablix ssrs-expression

reporting-services - tutorial - sumar columnas en reporting services



División de expresión de SSRS por error cero (2)

Sospecho que te estás encontrando con el problema de que el SSRS en realidad no cortocircuita una declaración IIF ; a pesar de que está buscando 0 , todavía va a alcanzar un error de división por cero.

Pruebe algo como:

=IIf(Sum(Fields!PY_Dollars.Value) = 0, 0, Sum(Fields!CY_Dollars.Value) - Sum(Fields!PY_Dollars.Value)) / IIf(Sum(Fields!PY_Dollars.Value) = 0, 1, Sum(Fields!PY_Dollars.Value))

El uso de dos sentencias IIf significa que usted evita el error al usar la ecuación 0/1 cuando Sum(Fields!PY_Dollars.Value) = 0, por lo tanto, simplemente devuelve 0 .

También tenga en cuenta que la expresión anterior está marcando Sum(Fields!PY_Dollars.Value) = 0 , pero la suya está marcando Sum(Fields!CY_Dollars.Value) = 0 - el denominador necesita la verificación de cero aquí.

Tengo una caja tablix que tiene una expresión de división. Al dividir por cero o nulos, obtengo #Error en mi informe. Traté de crear una declaración IIF y probé con valores estáticos. Esto verificó que mi sintaxis era correcta, pero aún veo el error en mis informes.

=IIF(Sum(Fields!CY_Dollars.Value)=0, 0, (Sum(Fields!CY_Dollars.Value) - Sum(Fields!PY_Dollars.Value))/(Sum(Fields!PY_Dollars.Value)))

Así que estoy tomando dólares del año actual, restando dólares del año anterior y dividiendo ese total por dólares del año anterior para obtener el cambio porcentual. ¿Hay un truco en esto que no estoy obteniendo?


Puede agregar una función a su código de informe que maneja la división por cero, esto hace que sea un poco más fácil de implementar en múltiples celdas, por ejemplo

Public Function Divider (ByVal Dividend As Double, ByVal Divisor As Double) If IsNothing(Divisor) Or Divisor = 0 Return 0 Else Return Dividend/Divisor End If End Function

A continuación, puede llamar esto en una celda como esta:

=Code.Divider(Fields!FieldA.Value, Fields!FieldB.Value)