Ready to watch this entire course?
Become a member and get unlimited access to the entire skills library of over 4,900 courses, including more Developer and personalized recommendations.Start Your Free Trial Now
- View Offline
Note: These tutorials are applicable to both the 2008 and 2012 versions of SQL Server.
- Understanding the elements of a report
- Grouping table regions
- Joining data from multiple tables
- Displaying data in a matrix
- Customizing report parameters
- Filtering and sorting data
- Creating charts
- Adding sparklines and data bars
- Creating at-a-glance reports with indicators
- Using Maps in Reporting Services
- Configuring report security
- Printing and exporting reports
Skill Level Advanced
When you start to add parameters to your report you can actually have multiple parameters and they will all show up in this parameter area at the top. But most of the time you want something more than just an open text box to type into, and we can change the appearance of this based on the parameter definition in our Report Builder. Now, if you added the parameter through the Query Designer, it will automatically show up in that section, but you can also create your own parameters. I can see here that if I right-click on the folder we can actually choose to add a new parameter, give it a name, set its values.
But I don't need to do that right now. Either way, when I have a parameter, I can actually double-click it in the Report Data section and I'll open up the Property pages for this parameter. For example, it's telling me this is ProductCategoryID. It's a data type of an integer. I have options here to change it to a Date/Time. If I changed it to that, we'd see it show up as a date picker in that top section of the report. If I selected Boolean, it would show up as a checkbox in that top section. But it actually is an integer. It is a numeric value. I just don't want to look at that.
And I have other options for what actually shows up. In the Available Values section here, we've currently set it to None, which means we don't provide any values; the actual user must type them directly in. I can choose to manually specify them and create different values for both the label--meaning what the user will actually--see and the value--what will actually be represented behind the scenes. What's even better is this option, that I could get values from a query. I could create another query and get all the category names and all the category IDs from a different part of the database.
In fact, that's what I'm going to do. I don't have that data set right now, so what I am first going to do is cancel out of this and add a new dataset to this report. So I'll right-click my Dataset folder/ Add Dataset, and I want to create a new one called CategoryNamesAndNumbers. It will be embedded in the report. I can just use the same data source I already have defined. We are talking to the same database. That's just fine. Then I jump into the Query Designer. And all I need to do here is drop down into my ProductCategory table, which is right here, and all I am interested in is the number of the ProductCategoryID and the name.
That's pretty much it. To test this I can run the query, and yup, that looks about right. Click OK, click OK. That dataset is now defined, and I can use it in my parameter. So back into the parameter definition, double-click on this guy. I am going to jump over into the Available Values section and tell it to get its values from a query. It asks which dataset. Well, the one we just created, the CategoryNamesAndNumbers. And then I simply have two choices. What are the actual values you're interested in? What am I going to feed to the product table so I can filter that data? Well, that actually needs to be the number, the ProductCategoryID number.
But being more friendly to the end user, what the user sees can be the name of this category. I'm not going to go ahead and change the default values. If I clicked here, it says specify values as 35. That's because I defined in the dataset. That's fine. I will just leave it alone. In the Advanced section are some options for, do I always refresh automatically when this value is changed? I'm going to leave all of that as is and just click OK. It doesn't look any different here. Well, that's not surprising. I can just go ahead and click Run to preview this, and what I have up at the top has completely changed. We no longer have a text field to type into.
We have a dropdown list with all the friendly names of the categories here. So I can select Jerseys, click View Report to refresh that data, and see the Jerseys here. I can come down and click Mountain Bikes and either click the button to View Report or press Enter to refresh that data again. It looks like what I could do with now is starting to apply a little bit of formatting here: Product ID doesn't need to be as wide, Name could be a bit wider, and List Price should be formatted as Currency. Again, doing that kind of thing is pretty easy stuff.
When you're resizing columns, it's best to grab the gray bar at the top. If I want to change this Sum(List Price), then what I do is actually click on the text itself until it's highlighted. I can see now here the Number formatting section is showing up. Change that to Currency and run it, and that's a bit more presentable. If you want to provide parameters in your report but not always show them to the end user, that is possible to do as well. Jumping back into Design view and editing that parameter, I will see that on the first page there are some options for whether this parameter is always visible or whether it's hidden or internal.
One of the reasons you might want to do this is that you as a report designer may occasionally want to change the default value of this or the parameter of this every week or every month, but you don't want to give that option to every single user, every single person who views that report. And there are even ways to make these parameters conditionally appear depending on who's looking at it or on other data on the page. But this is how we begin to parameterize our reports.