I have a report that requires a start and end date and I've set these as dates and on initial load the date picker is displayed. However I have added criteria so that the end date starts after the start date and is less than today's date and as soon as it does this the date picker disappears and a list box replaces it.
Is this expected behaviour, which I'm expecting to be the answer, or is there any way at all that I can have filtering on a date and keep the date picker?
Below is the image showing before and after:
Interesting..... In doing a test, SSRS does perform as you describe.
What you are evidently doing is giving End_Date its "Available values" using "Get values from a query". Using a dataset to assign values to a filter, you must agree, is a typical practice of single-select and multi-select filters. By specifying values, you are telling SSRS some date values are legal, while others are illegal. The only way it can forbid illegal values be entered by the user is by taking away the anything-your-heart-desires-to-choose date picker. The behavior makes sense.
Furthermore, you are using Start_date as an input parameter to your End_Date dataset. So you have a cascading filter. Notice, even if your filters weren't linked to each other, you'd still get the turn. What I am pointing out here is, the reason your date picker is "turning" into a single-select has nothing to do with the fact that the filters are linked. The reason it is turning is because you are using "Get values from a query". The date picker will still turn if the filters weren't linked.
How can you avoid this?
Three things you can do....
One - Get rid of the validation and get rid of "Get values from a Query". If the user gives you an illegal range, give them a report with no data.
Two - Get rid of "Get values from a query" and take your validation to the main PROC as opposed to the parameter dataset. That is, on your main proc, choose which is the your start_date and which is your end_date. Something along the lines of:
Three - Leave it as it is. Validate on the End_Date dataset and have the date picker turn to a single-select. I would only suggest testing how the report behaves if the user selects the End_date first.