SSRS Passing in Expression without using Placeholder Properties - reporting-services

I am using SSRs to generate letters. The body of my letters is stored in my SQL server 2012 database. Is it possible to specify an expression in my body column in sql and recognize it in SSRS as an expression?
Example. SQL column contains. The name of the business is =first(Fields!Fieldname.Value, "DataSet").
In my textbox I have a placeholder [Body] which corresponds to my dataset. When I run the report I want it to show: The name of the business is Boen Shop but I get whatever is listed in SQL.

Related

SSRS parameter with #

How I can pass SSRS parameter with #? When I am trying to choose email from parameter list, I get:
An error has occurred during report processing. (rsProcessingAborted)
Query execution failed for dataset 'DataSet1'. (rsErrorExecutingCommand)
Parser: The syntax for '#xx' is incorrect. (ASF#xx.com).
I need it to filter my MDX dataset.
The values in cubes uses are not simply text, they are members of a dimension with attributes. In order to make the comparison, it needs to be converted to the proper syntax. A good way to add a parameter is to use the SSRS Query Designer.
Go to your Dataset properties.
Click on Query Designer.
Drag the attribute to the top-right corner.
Check the box in the Parameters column.
Click OK.
This will create a hidden dataset along with the parameter. It also formats the dropdown list for you.
If you look in the MDX it creates, there is a StrToSet function that it uses to interpret the string.
Another option that is simpler, but less efficient is to simply apply the filter to your dataset within SSRS.
Go to the Dataset properties.
Go to the Filters tab.
Add a filter that ensures the Email column equals your Parameters!Email.Value

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

Pentaho Report Designer shows Year as comma separated value

I am using Pentaho Report Designer to show user logs. I created a data connection in MySQL :
MySQL field name: activity_date
MySQL field type: timestamp
value: 2013-01-01 00:00:00
Query: "SELECT YEAR(activity_date) AS year....."
gives me an output of 2013.
But in the report template it shows 2,013. So I tried to change my SQL query to
SELECT CAST(YEAR(activity_date ) AS CHAR) AS year
but on changing this, Report Designer shows empty value in that column.
Click on the field in the report designer and check its format in the attributes tab (usually on the bottom right side). Just use # if you don't need a comma.
I had the same problem. I solved the problem by creating the report again, by using the Report Design Wizard. In the last step of the wizard (which is called Format step), fill the Data format input with the string #.

Reporting Services - translating labels into different languages

I'm finishing up my reports in my SQL Server 2008 Reporting Services project, and as one of the last steps, I need to make things translateable.
Since I have a bunch of reports, and they all share some identical labels, I decided to put all those labels I need to show into a SQL Server table, and I am surfacing that contents as a DataSet dsReportLabels in my reports.
This DataSet basically contains two fields: LabelName is the name of the label (e.g. "Count of items"), and Caption contains the text in the chosen language to be shown on the report.
But now here comes my mental block: how do I assign the dsReportLabels.Caption value to a e.g. textbox, based on the dsReportLabels.LabelName ?
So I need something like (pseudo-LINQ statement):
Textbox1.Value = from dsReportLabels
where LabelName = "some value"
select Caption;
but how do I express that in a Reporting Services code snippet?
I know how to reference things like Parameters!MyParameterName.Value and so on - but that doesn't really work here when I'm trying to extract a value from one column of the DataSet, given the value of the other column in that DataSet.
I bet this is totally easy to do in the end.... just can't seem to wrap my head around this right now.... anyone out there know how to do this?
This MSDN blog post describes one way of doing it. Essentially:
Create a lookup table with the LabelID, Language, and Caption.
Create a Stored Proc that gets all of the labelIDs and captions for a specified language.
Store the results of the SP in a dataset.
Store the dataset in a multi-value parameter.
Use the multi-value parameter in a custom lookup function.
So, the expression in your label textbox would call the custom function with the labelID, which would get the appropriate caption for the appropriate language.
Report Server 2008 also has a built-in Lookup function that may allow you to skip steps 4 and 5. If this is the case, your expression would call the built-in lookup function, which would go directly to the dataset. I don't have RS 2008, so I can't test this.

Parameter missing a value

I am new to reporting services and have a reporting services 2005 report that I am working on to use as a base report template for our organization. I am trying to place the date that the report was last modified on the report server into the page header of the report. However, I keep getting a 'ParamX' parameter is missing a value error when I try to This is what I have done:
Set up a Parameter ReportName with a default value of Globals!ReportName. It is also hidden and internal.
Set up a Dataset ReportHeader that calls a stored procedure that returns the date the report was last updated or another date, if the report is not on the report server. It has a parameter #ReportName assigned to the Parameter!ReportName.Value. The Dataset returns values when run on the dataset tab in the BI tool.
Set up a Parameter ReportVersion that has a default value Query From based on the dataset ReportHeader and picking the ModDate column. It is the last parameter in the report parameters list.
I assign a textbox to the parameter.
When I preview, I get "The 'ReportVersion' parameter is missing a value whether I place it in the report body or page header (which is where I want it). I have deleted and added the parameter again, toyed with the hidden and internal settings on it.
What does this error really mean, what I am missing, and can I even do this with parameters?
Thanks In Advance
Jim
If I understand what you're doing, it sounds like you want to be using a field where you're implementing a parameter...
You are returning the ModDate from the data source, correct? If you're doing this, you can simply throw a text box in there, and use something like this: =Fields!modDate.Value to display it.
Parameters are values that go in to the query, fields are what it returns.
Hope this helps...
EDIT:: OK so are you trying to retrieve the mod-date column value from the reportserver db? If that's what we're talking about, you'll need to add a few things to the report. Add a datasource to report db, a dataset containing the date (query below), a list object in the report linked to the dataset, and a textbox in said list object to display the field. If you hit the report server with a query like this:
SELECT MAX(ModifiedDate) AS ModDate FROM catalog WHERE name='myReportName'
That will return your modifieddate from the ReportSErvices Database as a field that you can use.