Multi-Value Paramters in SSRS

Hello,
I'm having an annoying problem here..
My query looks like       " where Month(ADM_Date) in (@MONTH)"
The Param @Month type is  Integer - setup to allow multiple values!

when I pass 1 or 2 indvidually , it works fine...
when I pass 1, 2 ,3 ,4 etc...  it fails " error: The Value provided for the report paramter 'Month' is not valid for its type"

when I change its type to TEXT, of course I get an error !

Any thoughts?

Thanks
LVL 21
Jason YousefSr. BI DeveloperAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

raulggonzalezCommented:
Hi,

Looks like '1,2,3' is a string ...

Is there any chance for you to pass '''1'',''2'',''3''' instead?

If you you just have to say there CAST(Month(ADM_Date) AS VARCHAR(2)) in (@Month)


That's my first impression....

Good luck
0
raulggonzalezCommented:
Note that I set 2 single quotes surrounding 1, 2, 3 to have a proper string in single quotes...

0
Jason YousefSr. BI  DeveloperAuthor Commented:
Hi Raul,
Thanks for stepping in, it didn't work and didn't give any errors.

just blank results as there's no such month numbers !

any other ideas?
0
Big Business Goals? Which KPIs Will Help You

The most successful MSPs rely on metrics – known as key performance indicators (KPIs) – for making informed decisions that help their businesses thrive, rather than just survive. This eBook provides an overview of the most important KPIs used by top MSPs.

raulggonzalezCommented:
Hi,

Please verify that the query you're executing after replacing the param looks like

WHERE CAST(Month(ADM_Date) AS VARCHAR(2)) in ( '1', '2', '3' )

If looks like this and doesn't return anything, I'll try to figure out some (if possible)


Cheers.
0
raulggonzalezCommented:
Sorry,


Use this


WHERE CONVERT(varchar(2), Month(ADM_Date), 126) in ( @Month )

Open in new window

0
raulggonzalezCommented:
CAST and dates are tricky...

Use CONVERT and 126 to convert it to ISO-8901

Ref.

http://msdn.microsoft.com/es-es/library/ms187928.aspx


Hope this works
0
HadushCommented:
If your query comes from store proc you have to use like split function to work for multivalue paramenter (that is the work around I know for reporting services).  refer to the link
http://stackoverflow.com/questions/512105/passing-multiple-values-for-a-single-parameter-in-reporting-services
0
raulggonzalezCommented:
Hi,

I know what happens,

I was preparing the query like it was for dynamic SQL, but it's not going to work like this I'm afraid...

Let me think plan b.


Cheers.
0
itcoupleCommented:
Hi

There are several things that are unclear to me in your post.

You seem to be using T-SQL in SSRS IN(@Month) and that normally works very well but could you clarify how you supply the values?
1) Do you type them in? If yes then remember to type value hit enter and type another value (no commas, single quotes etc!)
2) If you provide values using dataset then make sure value is set correctly in the parameter.

I don't understand the bit about dynamic SQL :) So far I can see you try to use standard SSRS parameter filtering.

Hope that helps
Emil

0
raulggonzalezCommented:
Hi,

I think @Hadush solution is a valid one, but if for any reason you cannot create another function to return the values in the list, you can try with dynamic SQL as I told you.

In this case, using you don't need to convert anything to string.

I don't like much this solution because of the dynamic SQL, but it works.


Cheers.
DECLARE @sql VARCHAR(MAX)
-- DECLARE @Month VARCHAR(50) SET @Month = '1,2,3'

SET @sql = 'SELECT  ... ' -- Your Query
SET @sql = @sql + ' WHERE Month(ADM_Date) in ( ' + @Month + ' )'

EXEC (@sql)

Open in new window

0
itcoupleCommented:
Hi

The subject is "Multi-Value Paramters in SSRS" why Dynamic T-SQL???? :)

Regards
Emil
0
Jason YousefSr. BI  DeveloperAuthor Commented:
itcouple:
Thank you for stepping in...yes true..I'm not intending to use any dynamic SQL
and I'm not getting the values out of a query.

I've another report that when you click on a field, takes you to another report and passes the value that I already assigned.

see attached screen shot..

can;t use the enter, or without commas...
screenshot.jpg
0
itcoupleCommented:
Hi

That is much clearer now. How do you provide values for month? In the screenshot you have static value?
If you use expressions in there Iand want to join values into multi-value parameter array try using join function. I will have a go with that and let you know my findings.

Regards
Emil

0
itcoupleCommented:
Did I use Join? Hmmm I should have said Split

Here is the expression I used to pass 10, 20 into subreport
=Split("10|20","|")

Hope that points you in the right direction
Regards
Emil
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Jason YousefSr. BI  DeveloperAuthor Commented:
Thanks, Worked fine the split function, God bless for sharing the knowledge and helping.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft SQL Server

From novice to tech pro — start learning today.