Olá galera, voltei para deixar uma dica vocês!
Eu estava quebrando a cabeça com um erro costumeiro, “Divide by zero”, mas não importava o IIF que eu montasse, ele acabava tentando realizar a divisão.
Depois de muito tentar, resolvi apelar para o google e achei uma forma muiiiito fácil de fazer a divisão, e logo após resolver o problema consegui montar o IIF novamente Humpfff.
Vamos lá!
Montei uma query simples para esse exemplo:
Select *
FROM (VALUES (0,0),(0,6),(6,0),(23,234)
,(647,435),(645,874),(354,422),(9,11)
,(32,22),(45,46),(76,2) ) as Tabela (Valor1, Valor2)

E o resultado da divisão entre o primeiro valor pelo segundo, retornado a percentagem, junto com o bendito erro!!!

Warning 1 [rsRuntimeErrorInExpression] The Value expression for the textrun ‘Textbox5.Paragraphs[0].TextRuns[0]’ contains an error: Attempted to divide by zero.
O jeito mais fácil foi criar um código em VB, mas não precisa se assustar, é bem simples!
- No toolbar, clique em report, depois em report properties.
- Na aba “code”, cole o código abaixo:

Public Function Divisao(ByVal dividendo As Double, ByVal divisor As Double) As Double
If divisor = 0 Then
Return 0
Else
Return dividendo / divisor
End If
End Function
Se o valor for um número inteiro irá retornar NAN ou Infinity, nesse caso está como decimal, então retorna #Error
Googlando, eu achei uma maneira de evitar o erro usando um truque de matemática, bem fácil também.
Agora, veja como ficou o código de cada campo:
%
=Fields!Valor1.Value/Fields!Valor2.Value
IIF
=IIf(Fields!Valor2.Value = 0
,0
,Fields!Valor1.Value / IIf( Fields!Valor2.Value = 0
,1
,Fields!Valor2.Value))
Code
=Code.Divisao(Fields!Valor1.Value,Fields!Valor2.Value)
Truque de matematica
=IIf(Fields!Valor2.Value = 0
,0
,Fields!Valor1.Value * (Fields!Valor2.Value ^ -1))
E o resultado é o seguinte:

Pronto, tudo resolvido!
Até a próxima!