Let’s say you have a report, like a sales report that shows sales orders, and some people who run that report need it to show only the one sales order that they specify while others need to see all sales orders. In this article, I’ll show you how to create an optional parameter that allows you to implement this type of flexibility.
To accomplish this, two things need to be done. The first is to create an optional parameter, or a parameter that does not stop SSRS from running the report if no value for it is supplied. The second is to tell the report to select all the data when a value for the parameter is not supplied and to select only some of the data when a value is supplied.
Create an Optional Parameter
- With the report open and the Design tab selected, right-click the Parameters folder in the Report Data pane and select Add Parameter…
- In the Report Parameter Properties window, make the following entries and selections. Notice that Allow null value is checked.
When the parameter does not allow nulls, SSRS will not run the report if a value for the parameter is not supplied. By telling the report to allow nulls, SSRS will run the report regardless.
- Click OK when done.
The next step is to wire up the parameter to the data selection process of the report and to tell the report what to do if no value is supplied.
Configure the Report for the Optional Parameter
Our parameter will be used in the WHERE clause of the query in the dataset, though the same approach applies if you use it in a filter. (I’m putting the query directly in the dataset of the report to simplify this article, but you should always consider using stored procedures when developing reports; among the many benefits that stored procedures offer are that they are faster and keep data access organized and manageable. The same strategy shown in this article can be applied in a stored procedure.)
- Right-click the dataset in the Report Data pane and select Dataset Properties.
- Add a WHERE clause to the query that restricts the data in the report to the value of the parameter. Include an OR clause that returns True if the parameter is null; that way, the WHERE clause will be True for every row of the query when the parameter is not used.
Now, when you run your report, you can either supply a value for the parameter or just ignore it and the report will know what to do in each case.