I was searching for a way to do this today, and there are a lot of suggestions which require building a Stored Procedure to handle this, but I found this solution to be a bit of a mess. I finally came up with my own, really simple solution.
So, lets say you want the user to be able to enter multiple sales orders in a single text box, separated by commas, eg: 61JF073, 61SW073, 61SW074
My first report parameter is named "OrderNo", description "Order Nos (Separated by comma)". Data type="Text", and nothing is checked.
My second parameter is going to take the list from the first parameter and make a "Multiple Values" list which you will be able to use in your SQL query.
Second Parameter: Name = "OrderNos", type = "Text". "Allow Multiple Values" is Checked. Parameter visibility = "Internal" (the user does not need to see this).
Available Values = None
Default Values = Specify Values
Add a value of:
=Split(Replace(Parameters!OrderNo.Value," ",""),",")
I am using a "Replace" function to remove all the spaces as users may enter spaces after the commas which will affect the output.
Now your SQL query can contain your "IN" clause to filter the results.
SELECT OrderNo, SalesID, SalesName
FROM SalesOrders
WHERE OrderNo IN (@OrderNos)
The data will be filtered at the SQL server instead of in the SSRS report which is the preferred method to save the SSRS report from retrieving the entire table before applying a filter. You only want to retrieve the data required for reporting.
I hope this helps as it was a lifesaver for me as my sales order table has many thousands of rows.