Passing parameters to a Dataset from an expression in SSRS - reporting-services

In a report I would like to have the individual static text fields internationalised.
The idea is to have a default word or phrase like "Date and Time" and pass this string to a dataset with static parameters such as Culture_Code.
My question is how do I set the value of the parameter to pass to the dataset BEFORE calling the dataset within each individual expression of each text box?
Example expression;
Parameter!Text_To_Translate.Value = "Date and Time"
=First(Fields!Translated_Text.Value, "Language_Text")
I am using SSRS 2008R2.

if you want to pass the parameter before calling the dataset then you have to pass the parameter in the url of reportserver
http://localhost/reportserver
url format:
http://<localhost/servername>/reportserver/Pages/ReportViewer.aspx?<report_name>&rs:Command=Render&parameter_name=value
here the way you have to pass the value.

If your report layout is such that all of the text fields to be internationalized are in one or two regions, it may be better to set those regions up as data regions and use a separate query (or queries) to populate them, based on your Culture_Code parameter value.
This assumes you are pulling the localized values out of a data source you can connect to - which may be updated or extended over time.

Related

Passing parameter values

I have two parameters that give a date From and To.
I have two datasets that have the dates in the same format, but use two different dimensions. They both provide, Calendar Year, Calendar Month and Period.
I am trying to pass the value of the two parameters to two hidden parameters for the second dataset. I am not getting the expected data.
For example, I am passing 2017 and 2018 as From and To, but when this is passed to the hidden parameters, I am getting back the value for previous years as well.
Can someone post how they would pass a parameter value to a hidden parameter as I am clearly doing it wrong.
When setting up the hidden parameters, I am choosing to get default and available values from the visible parameters that appear in the dataset drop down list. Value field is ParameterValue. Label field is ParameterCaptionIndented but I am unsure what this is actually doing.
Following suggestion, have tried this
value will not update when parameters are changed
If both datasets are to use the same parameter values, there is no need to create two sets of parameters and awkwardly try to pass the value from one parameter to another.
If the parameters of your second dataset have different names, no problem, the Dataset Properties window contains a Parameters page that allows you to map the dataset parameters to your existing parameters, so you can re-use the visible parameters created for the first dataset and remove the other 2 parameters that were probably created automatically.

Issues with Passing Multi-value Parameters to a Drill through Report

I have two reports were I pass multi-valued parameters to it's underlining data and both reports work very well independently. The parameter strings are being split using the function dbo.UTILfn_Split. When trying to drill from the main or Summary report into the sub or Detailed report all other parameters field in the report are populated except the multivalued parameter field. The parameter lists or value are listed in the detailed report but not selected and therefore cannot run the report even though the detailed report parameter property is set to allow multiple values. In both reports, the where clause is set "IN" not "=." How do I fix this?
In your Summary Report, when you pass the parameter to the sub or detailled report, the passed value parameter should be like this expression:
=join(parameters!yourMultivaluedParameter.Value,",")
after that, you pass the name of the parameter to the corresponding parameter in the dataset Detailled report.
In your SQL (SP), get the multivalues of the parameter by spliting it with your function
like following, depending of the result of your function, for exemple:
INNER JOIN dbo.SplitFunction( #yourMultivaluedParameter,',') tmp on tmp.yourColumn = ...etc...
Hope it helps...

3rd party application passing url parameters to SSRS report

The 3rd party application is passing the parameter values as follows: Parameters=Collapsed&Priority=P1%7cP2. It is using a %7c (which is a pipe) instead of passing the parameters the way SSRS is looking for them as follows: Parameters=Collapsed&Priority=P1&Priority=P2. The parameter is multi select in SSRS and works in Report Builder just fine. My where clause is using IN (#priority).
How can I get SSRS to use the parameter values that are being passed in the URL?
If you can't change the application to provide the correct multi-value parameter syntax (...&Priority=Value1&Priority=Value2&Priority=Value3...) you can set the value that is passed to your dataset in the Parameters section of the dataset properties to be the following expression:
=split(Parameters!Priority.Value,"|")
This will take the pipe delimited list and separate it into a list of items that can be passed to your SQL query and used with the IN function.
I have created a dummy report to demonstrate this:
Parameter
Dataset
Dataset Properties
Report Result

Unable to add SSRS Parameters/Filters

I have created a ssrs report which requires a drop down filter to select values.
The steps I have taken in report:
Created the Dataset
SELECT * FROM Voluntary_CCC_Split
Then applied where statement in dataset - where [WORK ORDER OPERATIONS TYPE] in (#WorkOrderOperationType)
The parameters now appears but when changing to available values and selecting dataset, value field and label field i get error below when generating report:
the report parameter has a default value or a valid value that depends on the report parameter. forward dependencies are not valid
I only have one parameter
Your parameter was configured to have its available values populated from a dataset that referenced the same parameter. Instead of this circular reference, create an additional dataset that simply returns the labels and values for the data you need, and use that to populate your parameters available values.

How to loop rows of dataset in Reporting services rdl custom code

How can I loop through the rows of a dataset in the custom code?
I have a report containing a dataset. I pass the dataset as a parameter to the custom code function. But what then? Where is a reference about the available members etc.?
Here is my dummy sample code so far:
Public Function ShowParameterValues(ByVal ds as DataSet) as object()
Dim codes() As Object
Array.Resize(codes,dc.???.Count)
codes(0)=ds??(field???)(row??)
return codes
End Function
Please note: this will be a very simple script (if it'll work), so I don't want to go into custom assemblies etc.
I think you got your answer at:
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/a7d59224-0ee5-491e-883b-2e5fcb3edeab/iterate-through-rows-of-dataset-in-reports-custom-code?forum=sqlreportingservices
There were two important pieces of information I was able to grasp from the above link:
First, A dataset in Reporting Services is not the same type of object as an ADO.Net dataset. A report dataset is an internal object managed by the SSRS runtime (it's actually derived from a DataReader object) and not an XML structure containing datatables, etc. and cannot be passed into the report's custom code.
Second, There was a solution posted as to how one can Iterate through rows of dataset in report's custom code by "transforming" the data set into a multivalued parameter (or if several fields are needed, transforming it in multiple multivalued parameters):
The multivalued Report Parameter must have the following characteristics:
Hidden = True, Allow Multiple Values = True
Available Values tab: Choose the desired dataset. Select the searchable id as Value id, and the field you want to expose as Label Field.
Default Values Tab: Get Values from a Query.
Choose the same Dataset as choosen in the available Values Tab.
Value Field the same you choose for value id.
Set the parameter to never refresh (or it will be loading the data from each iteraction of another parameter).
Now, the idea is make this Parameter "searchable". From this point you exposed the Dataset as an array in the Multi valued Parameter.
Now in a custom code insert the following code:
function GetDataSetLabelFromValue( id as integer) as String
dim i as integer
i = 0
for i = 1 to Report.Parameters!YourParameter.Count()
if Report.Parameters!YourParameter.Value(i) = id then
GetDataSetLabelFromValue = Report.YourParameter!ReportParameter1.Label(i)
Exit For
End if
next i
End Function
Were you able to do what you wanted?