Ist dieser RS-Ausdruck Standard oder ein Hack

Ich bin mit Switch und es scheint nicht zu einem offensichtlichen ELSE Abschnitt zu dem Ausdruck, so dass ich am Ende mit dem folgenden, aber es fühlt sich ein bisschen wie ein Hack – ist es?

Es funktioniert – in dem es die characterfolge ändert, wenn es entweder foo oder bar aber jede andere Produktkette ist allein gelassen:

 =Switch(Fields!Product.Value = "foo" , "foo (incl sad)", Fields!Product.Value = "bar", "bar (incl sick)", Cdbl(1)=Cdbl(1), Fields!Product.Value) 

Da hat es jemand angefordert:

 =Switch(Fields!Product.Value = "foo" , "foo (incl sad)", Fields!Product.Value = "bar", "bar (incl sick)", Cdbl(1)=Cdbl(1), Fields!Product.Value) 

Würde werden

 =Switch(Fields!Product.Value = "foo" , "foo (incl sad)", Fields!Product.Value = "bar", "bar (incl sick)", true, Fields!Product.Value) 

Was ich denke, ist besser lesbar – ich kann verstehen, 1 = 1 aber kann jemand mich aufklären, was die Besetzung zu einem Doppel ist für in den ursprünglichen Code?

Soweit ich weiß, ist dies der einzige path, um ein 'else' aus einer switch-statement zurückzugeben. Andernfalls wird null / Nichts zurückgegeben (für c # / VB gurus).

Wenn es funktioniert, funktioniert es. Du könntest auch IIF verwenden (Fields! Product.Value = "foo", "foo2", IIF (Fields! Product.Value = "bar", "bar2", Fields! Product.Value)

Du kannst den Schalter benutzen, das andere, was du getan hast, ist Gebrauch =IIF(...) von MSDN:

Die Iif-function gibt einen von zwei Werten zurück, je nachdem, ob der Ausdruck wahr ist oder nicht. Der folgende Ausdruck verwendet die Iif-function, um einen booleschen Wert von True zurückzugeben, wenn der Wert von LineTotal 100 überschreitet. Andernfalls gibt es False zurück:

Der andere Ausdruck kann einen anderen IIF einschließen, also sind Sie nicht auf eine einzelne IIF . Alle RS Ausdrücke finden Sie hier:

http://msdn.microsoft.com/en-us/library/ms157328.aspx