Conditional DataElementName in SSRS RDL - reporting-services

Dear friends at stackoverflow,
I have a strange issue where I need to change DataElementName property of a textbox in RDL conditionally based on report parameter. This is important for CSV export. As far as my knowledge goes, I assume DataElementName property turns into a header when report is rendered in CSV format. But I cannot have a static value for this property. it is unfortunate that Report designer does not allow an expression for DataElementName. What are my options?
Thank you in advance.

Related

SSRS report: unrelated list of values appears when empty date/time parameter is clicked

I have SSRS reports with date/time parameters which work fine.
Strange thing happens when I click date/time parameter's box while it's empty: dropdown list of unrelated text lines appears below the clicked box. Here's how it looks:
It appears in all reports with date/time parameters. In each report the values that appear are different.
In the Development Studio while previewing a report it doesn't happen at all.
The parameters are defined as usual in very simple manner.
Google search didn't help. :(
Can anyone give me a hint, please, what is it and how to get rid of it? SSRS version: 14.0.1016.232, MVS version 2015.
I looks to me like it could be the contents of your browsers 'type-ahead' or 'auto-complete' history.
The field name probably has the same name as another field that you've input data into, in the past.
Try using another browser and if that's OK trying clearing your browser history. If you are using Chrome it's part of the "Autofill" data.
You could follow this guide to removing specific entries if that's better in your scenario.
https://osxdaily.com/2018/07/20/how-delete-chrome-autofill-suggetsions

Don't produce report if there is no data - PDF

I have a report for which there is sometimes no data to output. This report is run along with several other reports and all are then output to PDF. However, this report still produces the header and footer with a blank page even tho there is no data.
I can move the header and footer into the report and have tried to hide those elements with =if(rownumber("PersonalProfile")=0, True, False) in the Hidden property of those elements. It hides everything so now the page is blank, but it will will output a blank PDF. Is there a way to completely suppress the report?
I'm using 2008 and I don't see a Report Visibility property. All the data for the report is inside a single Tablix which is inside a rectangle.
There are 3 datasets: PersonalProfile which contains the meat of the data; BoardNames which just produces the name of the board for the report; BoardMeetings which allows the user to pick a date parameter.
If you are distributing your report using subscriptions and you have Enterprise Edition, then you can look at using Data Driven Subscriptions which will give you control over how and when reports are distributed based on whatever logic you need. Otherwise, there is no way to do what you are asking - as trubs says, Reporting Services must first render the report before it has any knowledge of whether there is any data to display.
You haven't explained how you are "running the reports" (e.g. manually in Report Manager, report subscription, third party app using URL access) - if you do perhaps someone can suggest a workaround.
There is no way to do what you want. ssrs has to produce the report in order to determine there is nothing to display.

Excel Function within SSRS 2012

From what I have read this may not be possible but thought it was worth asking, I am trying to Export a SSRS 2012 report but maintain an Excel Function at the same time.
I have a Text Box in my SSRS report which when export always appears in Row/Column D33 I have a figure of 20. I have coded in to a Cell on my report =D33* "a figure that is returned in the report, the Expression I have used is ="=DD3*"&Cint(Fields!LABC_Hours.Value), when exported this comes out as =D33*5 but what is should be doing is the calculation =20*5. Is there a way of doing this?
Thanks in advance.
Short answer is no.
As you've probably seen in your research, there was limited support for this in SSRS 2005 but not in subsequent versions.
See Breaking Changes in SSRS 2008.
In earlier versions of Reporting Services, there was limited support
for translating expressions in RDL to Microsoft Excel formulas. In
this release, when you export a report to Excel, RDL expressions are
not translated to Excel formulas.
Needless to say, this is a popular request, see this Connect item:
SSRS 2008 export formulas to Excel.
While refreshing my memory about all of this, I did see a few notes that suggested if you use expressions which directly reference the ReportItems collection like:
=ReportItems!val1.Value + ReportItems!val2.Value
Then this would work, but I ran a simple test now in SSRS 2008 and it made no difference.
I think the general consensus is that you're just out of luck on this one, sadly.
If someone is still interested with this, I developed solution for that, it can be considered ugly but it let me escape many pain in my experience with SSRS.
For those who wants detailed description of ideas (I think its needed anyway because the solution is not so obvious): https://github.com/GrafGenerator/ssrs-formularize.
In short: this is custom rendering extension, which intended to hide ExcelRE from SSRS (Formularizer uses ExcelRE under the hood), and trigger formulas processing when needed. The idea is to mark some report items with "anchors", and then in other report items write textual formulas in special simple DSL that will link to cells with anchors after excel doc is generated.
Important: anchor and formulas added to report item's Action URL, as it seems the only report item field that can be accessed when rendering extension is working without breaking functionality (we can send almost anything here is cook it right way).
So, words report items "has anchor" or "has formula" means that report item action set to URL and expression =code.EncodeFormula("current item identitier (anchor)", "current item formula")
Sample steps are (with table):
Did once per SSRS instance: compile binaries and install to SSRS per instructions in repository.
Strict: Add custom function to your report: https://github.com/GrafGenerator/ssrs-formularize/blob/master/encode-function.vb
Strict: Add custom property to report - key is "formularize", value can be any
table row has report items (textboxes) txtA, txtB and txtC.
4.1 txtA has anchor comp_value
4.2 txtB has anchor output_value
4.3 txtC has formula IF({cell 'comp_value' row} > 0, {cell 'output_value' row}, "N/A").
Result in excel file is formula IF(A1 > 0, B1, "N/A") for first row, row numbers 2 for second row, 3 for third and so on.
The same is for column and all scopes. More examples are on project github page.
I hope this helps someone, feel free to ask question and post issues to the github repo.

I want to display a report on a web page The report needs a single parameter (prompt, possibly)

I want to display a Microstrategy report on a web page The report needs a single parameter
I have a report that has a (local) filter which I'd like to able to parameterize. Not the whole filter string but just the numeric value that the report filters on.
I know that I can use a prompt to put a value into a report, but I need to do this from an HTML document which, I understand, can't be done with a prompt.
Is there another way to do pass a parameter from an HTML document into the filter of report in the HTML document?
Kind Regards,
Barrie
If you're using a URL to the report, you can pass a prompt answer in as a parameter, specifically valuePromptAnswers.
TN15734 on the MicroStrategy Knowledgebase gives a full example, if that isn't clear enough.

ReportViewer Web Control and Dynamic Connection Strings

So I have a report in Reporting Services 2005. In it is one parameter (ConnectionString) which determines which data source the report will use. It also has several other parameters which are dropdown lists derived from the data source chosen in the ConnectionString parameter.
In Report Manager, this works great. All of the dropdowns are greyed out at the beginning. When you choose your data source, the page requeries/repaints and all of the available parameter values for the other parameters are filled in based on the queries for those fields.
However ...
In the ReportViewer web control, when the report is first loaded up, instead of dropdown boxes all of the other parameter fields are just empty textboxes. Choosing a different data source for the ConnectionString parameter doesn't requery/repaint the other parameters.
I've been flipping through the ReportViewer programming reference to see if there's some way to replicate the Report Manager's way of reloading the webpage with the report viewer upon certain parameter changes, but I can't find anything there that isn't over my poor little .NET head.
Any ideas?
Not sure if this is any help but I do have a suggestion. I would try pulling the logic for dropdown boxes out of the report and put them in an ASP.net page. Then pass the parameters to the report and control the rendering/refreshing.
HTH
UPDATE: So it turns out you must provide a default value for any parameters which in turn affect other parameters in your report in order to get the dropdown box to load properly on initialization. Also note this is recursive - so if you have a parameter which affects another parameter which affects another parameter, both the first and second parameter must have default values.