SSRS 2008 R2 doesn’t have an inbuilt “not in” operator when working with filters.
Stacia Misner has a great trick to work around this over here .
In Dataset properties
Value: = Iif(InStr(Join(Parameters!FilterList.Value,”,”), Fields!Category.Value)=0,True,False)
Parameters!FilterList.Value is a multi-value parameter. It’s basically a big array of values that uses a dataset for it’s available values.
The values are joined ( join() ) together into one long string separated by commas. It’s important to separate by commas (or some other character that is not present in the data) so that when you search in the string (InStr) in the next step, you are not going to accidentally find false positives that consist of the end of one value and the start of another.
If these were your values
If you were looking for townsville for example, if you didn’t have the commas then it would find townsville as part of “newtownsvillenieuliverpool”, where it would not find it in “newtowns,villenieu,liverpool”
So the InStr part is looking within the long string (newtowns,villenieu,liverpool) and seeing if any of the values for each row of Fields!Category.Value have a match. If ( iif() ) there is at least one match then the count will be greater than 0 and the expression will evaluate to FALSE, if it is equal to 0 it will be TRUE.
When the expression is FALSE then the row will be skipped.