19

Ich versuche einen Preis pro Kilo ($/Kg) basierend auf dem Verkauf eines Produkts zu bewerten. Dies funktioniert, wenn das Produkt während des angegebenen Zeitraums tatsächlich verkauft wurde. Wenn das Produkt jedoch nicht verkauft wird, endet die Kg (der Nenner) als 0 (Null) und es tritt ein Fehler auf. - Fehler durch Division durch Null.Berechnet die Funktion iif beide Pfade in SSRS oder ist sie kurzgeschlossen?

Ich habe versucht, diese

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

Es scheint, dass die iif Funktion sowohl die wahren und falschen Ergebnissen rechnet. Wie komme ich dazu?

Sollte ich stattdessen die switch Funktion verwenden?

=switch(KgSold=0,0 
     KgSold<>0,Revenue/KgSold) 

Antwort

16

Sie haben Recht, es gibt keinen Kurzschluss. Das ist Scheiße.

Sie werden so etwas zu tun haben:

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

Die Funktionsschalter auch funktionieren sollte.

+0

nennen Dann werde ich es zu gehen und lassen Sie wissen .. –

+0

Dank Robert . Das funktioniert. Ich bekomme immer noch die Division durch Null Fehler, also ist es jetzt nur noch eine Frage des Fehlers. –

+0

Ich habe gefunden, wo der Fehler passiert ist. es war in der SQL und nicht im Bericht. –

4

Dies geschieht, weil in VBScript alle Bedingungen innerhalb eines IIF zuerst ausgewertet werden, bevor eine Funktionalität auftritt.

+0

Danke Brian. Ich nahm an, dass das der Fall war. Ich vermute, dass dies für alle Arten von VB der Fall ist. –

0

folgendes Code hinzufügen:

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 

=Code.SafeDiv(Revenue,KgSold) 

im Textfeld epression