Today I wanted to use my Multi-value parameter function within a SSRS dataset (Command type: text).
Guess what…it didn’t work!
After literally an hour, I found the answer….it’s not possible at all.
Instead SSRS basically ‘chops’ the multi value string into something like: ‘aa’,’ab’,’…’
My function requires a single string instead of many small ones, for example: ‘aa,ab,…’
Now you’re thinking, what about the Join-function? As in:
Which returns a single string like aa,ab (no quotes!)
Or if you wish:
Which returns a single string like ‘aa,ab’ (with quotes using dynamic string-manipulation)
Too bad….the JOIN-function isn’t available within the Dataset (nor is EXEC() btw)
The answer is actually quite simple, don’t use statements like
‘X IN (SELECT * FROM dbo.fn_MultiValue(@MultiValue,’,’))’
Instead use the dataset Filter (or List if you use cascading parameters in your report):
In addition to my previous post, an ‘All’-entity is very handy when it comes to some reports.
In my example, I’ll continue using the Sales example from my previous post.
Normally when you have a parameter with just one value, it’s easy: just use a NULL-value (click).
But when it comes to Multi-value parameters, it’s a bit more tricky.
I’ve added an ‘(All)’-entity to my selection of the SalesTerritory table:
In combination with my MultiValue function, these SQL statements will do it:
SQL code: TotalSales example.doc
SET @TerritoryList = ‘-1’ will return:
Note: The ‘(All)’-entity cannot be used in combination with other entities.
‘-1,2,4’ will not work, because TerritoryID ‘-1’ is not an existing ID.
Some reports use Multi-value parameters in combination with the Report Item ‘List’.
For example, in order to print a sales overview per location/territory.
If you’re using a parameter called TerritoryID and you wish to use a Multi-value list, you need some function that splits the parameter value (for example: ‘2,4,6,8’) into separate ID’s.
Well, there is an easy function for it:
SQL code: fn_MultiValue.doc
A simple example: