A function iif computa os dois caminhos no SSRS ou está em curto-circuito?

Eu estou tentando avaliar um preço por quilo ($ / Kg) com base nas vendas de um produto. Isso funciona bem se o produto foi vendido de forma ativa durante o período especificado. No entanto, se o produto não for vendido, o Kg (o denominador) acaba sendo 0 (zero) e resulta em um erro. – Divida por erro zero.

Eu tentei isso

=iif(KgSold=0,0,Revenue/KgSold) 

Parece que a function iif está calculando os resultados verdadeiro e falso. Como eu consigo contornar isso?

Devo estar usando a function de switch ?

 =switch(KgSold=0,0 KgSold0,Revenue/KgSold) 

Você está certo, isso não causa um curto circuito. Isso é uma merda.

Você terá que fazer algo assim:

 = Iif(KgSold = 0, 0, Revenue) / Iif(KgSold = 0, 1, KgSold ) 

A function de chave também deve funcionar.

Isso acontece porque no VBScript todas as condições dentro de um IIF serão avaliadas antes de qualquer funcionalidade ocorrer.

Adicione o seguinte ao seu código:

 Public Function SafeDiv(byval num as double, byval den as double) as object If den = nothing then return nothing If den = 0 then return nothing return num / den End Function 

Em seguida, ligue

 =Code.SafeDiv(Revenue,KgSold) 

na ejeção da checkbox de texto

Intereting Posts