It's an interesting one. I replicated your results:
For the last column I used the following expression in the TextBox:
=Switch(Fields!val.Value = 0.0, "---"
, Fields!val.Value > 0.0, Format(Fields!val.Value, "#,0.00")
, Fields!val.Value < 0.0, Format(Fields!val.Value, "(#,0.00);(#,0.00)"))
This gives the results you require.
Looks good, right? Maybe... For displaying on a web page or exporting to PDF I think this is fine, if annoying, but for exporting to Excel, since you're using Format
, a string is explicitly returned in the report and hence will be a string in the Excel export, as opposed to be exported as a number as it would be in the first three columns.
Only you can say if this will be a problem in your environment.
I don't think there is a way to get around SSRS treating small numbers as zero, so handling it in the Textbox itself might be your only option.