For those of you who experience this error for reasons not listed by the original poster...
Here is a similar scenario.
You have a report which uses a multi-select report parameter.
This parameter is populated by a datasource, which bases its values off some table query.
When you use the 'Select All' option for this report parameter and press the 'View Report' button, the parameter is reset to blank and your report is not generated.
I believe this problem occurs because something invalidates your dataset while the query is being performed, but I cannot be 100% certain.
What I do know, is that by using a table variable as the dataset's query source, you make this problem go away.
For example, your CityDataSource could be populated by the query:
SELECT DISTINCT city, city as SortOrder from accounts
UNION
SELECT 'All' as city, '0' as SortOrder
ORDER BY SortOrder
If you've been making SQL Reporting Services reports, you may have stumbled upon this solution once or twice.
Now, we change the CityDataSource query to look like the following:
DECLARE @citytable TABLE (city varchar(255), sortorder varchar(255))
INSERT INTO @citytable (city, sortorder) VALUES
(
SELECT DISTINCT city, city as SortOrder from accounts
)
SELECT city, sortorder FROM @citytable ORDER BY sortorder
And by doing that your report's parameters won't reset anymore.
A stored procedure would also work, I suspect.