ssrs parameter values case sensitive - reporting-services

I have a link to a report (SSRS 2008 R2):
http://reportserver/pages/reportviewer.aspx?/folder1/report1&hostname=SERVER2
This report has a (drop-down list) parameter which contains hostnames.
The drop-down list has these entries:
server1
server2
server3
Problem is that sometimes the hostname is passed in uppercase (i.e. SERVER2) and thus the hostname is not selected in the drop-down list does not match the URL parameter. This is because SSRS is case-sensitive with regards to parameter passing.
I do not want the case-sensitivity.
I tried the setting on the Dataset (Dataset Properties - Options - Case sensitivity), but
that did not work.
Is it possible ?
The values in the drop-down box or the URL, I cannot modify.
Best solution would be case-insensitive parameter VALUE passing.

Use the LOWER() function in your SQL or the LCASE() function in SSRS. This function converts the string to all lowercase and if you do it to both sides then effectively case doesn't matter.
So either:
WHERE LOWER(fieldName) = LOWER(#parameter)
or
=LCASE(Fields!fieldName.Value) = LCASE(Parameters!selection.Value)
More info:
LOWER (Transact-SQL)
Useful Built-in functions of SSRS
Update
I slightly misunderstood your question. So you're accessing the report by manually generating the URL with the parameter value in it? This value needs to be passed in a consistent manner or this isn't going to work. SSRS is case sensitive and you can ensure that the available values in the report parameter are formatted consistently using the functions above.
But the generated URL also needs to be consistent. By doing it this way you are explicitly setting the value of the parameter and if it isn't a valid, available value it isn't going to work. The issue here isn't really SSRS it is the fact that the source of the URL does not generate the parameter value in a consistent way.
Fix your URL construction.

Related

MySQL + SSRS (SQL Server Report Builder) Dataset/Query Parameters not working

I am currently using SQL Server Report Builder 2012 and is connected to my MySQL Database via an ODBC Connector and as far as base report goes, all is well.
However, i can't seem to make the Query/Dataset Parameters to work the way its supposed to be. I have multiple parameters to my query as you can see below (obviously table and column names are removed):
Now the problem is, if i leave the parameters as is (#OfMonth, #OfDay, #OfYear) - SSRS does not seem to bind the actual values passed from the Report Builder's Parameter Object which i am confident to day that i have associated properly. Not even on the preview/query designer.
However, if i change all #XXXX parameters to simple ? placeholders, it magically works. This poses as issue specially with queries that have multiple parameters.
This is the Report Builder's screenshot of my Work in Progress:
i have no issues defining the 3 Parameter object under the Parameter Node. However, if i try to bind them under Dataset Properties with specific #XXXXX placeholders, it doesn't work, and the report fails to generate data. But if i replace all #XXXXX with ? (all of them are just ?, therefore duplicates), the parameter gets passed and the report loads.
For ODBC connections, you do need to use a ? instead of named variables.
dba.stackexchange | Pass Parameter - SSRS to MySQL
The Parameter Name field on the Dataset Properties should auto-fill with Parameter1, Parameter2,... to match your query but doesn't always seem to work. You can try adding them manually. Since it worked without the name for you, I assume the name doesn't actually matter.
When I would have a parameter used multiple times, I would declare a new one in the query and reuse the new one as #Bacon mentioned:
DECLARE #OfMonth INT
SET #OfMonth = ?
This way you only have to match them once at the beginning of your query.
Use ? as variable in your script, then remember specific order of '?' then using specific order/arrangement of '?' parameters, setup them in the parameter tab after you add the MySQL script.
Ex. Script.
Select * from table1
where column1 = ?
and column2 = ?
When you paste this on the dataset, each '?' will be mapped in the parameter tab.
? Parameter1
? Parameter2
Change this to your own parameters then you're good to go.

Read query string parameter value in SSRS Report

I have passed one parameter to report server url.
http://<your server>/ReportServer?/<folder>/<reportname>&UserID=Name
How can I read UserID value in report.
Or
How can I print this value in any of the textbox to check what is passed to it?
For example: Above url should show 'Name'.
Based on your comments I think you've figured this out already, but all you should need is the parameter UserId to exist on the report and it will get its value from the query string.
A couple other problems that can crop up when trying to pass a parameter:
Report parameters are case sensitive
Report parameters with visibility set to Internal can't be passed a value through URL
See also: Pass a report parameter within a URL on MSDN
You can try with the Built-In SSRS fields ...
Try using Expression -> Built-In-Fields -> UserId should work in this case, if I understood your question correctly...
OR
Try manipulating the report server URL. Provided below one for example ...
=mid(Globals!ReportServerUrl , InStr(Globals!ReportServerUrl,"&UserID=")+8)
Issue was with my parameter UserId.
I have set it as Internal that's why it was set to default value blank space instead of passed parameter UserId value. (Now I am using hidden)
Note: Report parameters are case sensitive so in my case it must be UserId

Call SSRS by URL pass parameter by label

There is a SSRS report, with one parameter, I only know its label not the values. So how can I get the report by URL? I know how to render a report with all the parameters set by defaults to Excel. But this report has the parameter not set to default, so I have to manually select a value then run in report manager. And important thing is I don't know the available values for this parameter as I have only browser permission. So can't download rdl, can see the parameters etc as you can imagine. The url method seems only allow you to pass parameter value not parameter label. So is there anyway?
No, there is no way to do that. You must use the parameter value in the URL, you cannot use the label (unless value and label happen to be the same).
If you don't have access to the report definition then you will need to find someone who does, who can then find where the parameter values are defined and tell you what they are.

How to passing date parameter using pentaho designer?

I have problem how to passing parameter date field database in report.
I have set the parameter like this :- X.createDate= ${datetim} in MySql.
I have also put the parameter setting in pentaho designer. When i run the report. the result not appear.
Below is Screenshot for parameter setting in report:-
Anybody know about this?.
You set a query on the parameter. If a parameter has a query, the query's results will be used as validation source. Any provided parameter value will be checked and only accepted if it is found in that result-set.
First: Mark the parameter as mandatory, so that you get informed if the reporting engine considers your parameter invalid.
Second: the date-picker does not actually indicate which values are valid or not. So if you indeed only want to select parameters based on the available dates in the database, I would recommend to NOT use the date-picker. Use a drop-down menu instead.

Reporting Services problem. Forward dependencies are not valid

I have a problem with a Reporting Services report. My report has two datasets, one that fetches the actual report data and one that fetches translated resource strings for displaying wherever literal text is used on the report. This dataset requires three parameters, a language set id, a language code and a string to match against resource names.
Following an example I found here (the reply by Miguel Catalão) I have created a multivalue parameter #Resources that will be populated from the resource dataset and a code function that looks up specific values from the multivalue query. This function will then be called from expressions wherever literal strings are used.
I think that this should work but I have run into a problem that I can't quite figure out a workaround for. There is a dependency problem in the #Resources parameter being dependent on the Resources dataset which in turn is dependent on three parameters; #LanguageSetID, #LanguageCode and #ResourceNameLookup. I have read that the order of declaring parameters is important so I have made sure that the last three parameters appear above the #Resources one and that all three of them have default values that will result in data being retrieved by the dataset.
Yet I am still getting the following errors when previewing the report; any advice or guidance would be most appreciated.
The report parameter ‘Resources’ has a DefaultValue or a ValidValue that depends on the report parameter “LanguageCode”. Forward dependencies are not valid.
The report parameter ‘Resources’ has a DefaultValue or a ValidValue that depends on the report parameter “ResourceNameLookup”. Forward dependencies are not valid.
I had the same error but it was due to something else. What I had done was created a Parameter in my report, then linked the Default Values to a Dataset.
This in turn added the parameters needed in the Dataset. Somehow, the order of the parameters in my list were changed. This is when I stared getting the 'Forward Dependencies are not Valid' error.
I then looked at another report that used the same process to link a Parameter to a Dataset. I noticed that the order of my Parameters were different. I simply went back to my new report, and used the up and down arrows until my Parameters were in the same order as the working report. This seemed to fix the error and work fine. Apparently the the Parameter that was using the Dataset needs to be below the Parameters that are used in the SPROC.
I this helps someone in the long run.
C/N: Parameter was being filled by a Dataset(Stored Procedure). The Parameter that was being filled was above some of the Parameters that it was expecting for the SPROC.
This was all caused by a stupid error I made. I copied and modified the code function from the post I mention but neglected to change the data type of the argument from integer to string, which mine is.
It seems rather odd that the error manifested in the way it did but I have gotten past that problem now, only to run into another that I ask about in another question.