I'm new to SSRS, so I apologize if this question is too simple:
I have a report which accepts a parameter called "Amount". I want to constrain valid inputs to currency values >= 0, and pop open an error message if the user enters improper values.
I don't want to validate inputs in my stored procedure and throw exceptions, because SSRS displays a very generic "Query execution failed for 'someTable'" message to users who access the report from another machine, and my business does not want to turn on the "Enable Remote Errors" flag.
How do I add input validation to report parameters and notify users of bad input?
Yes, I've googled around, but haven't had much luck. Thanks in advance :)
Okay, how about this?
All you have in SSRS, really, is the SQL query and expressions in report fields.
Perhaps you could add a big, red text box at the top of the report for your error message, and give it an expression like '=IIf(Parameters!Amount.Value < 0, "Error: Invalid Amount", "")'.
Then go to your table's "Hidden" property and give it the expression "=Parameters!Amount.Value < 0"
You could also add into your query's where clause and add "AND #Amount >= 0" so you aren't fetching from the database when there's an error.
It's possible to make report parameters in SSRS that are based on a particular list or a lookup query but I don't think you can apply a regex or something like that.
Instead you might consider separating your report into two panels, one which displays your report and one which displays an error and then you create an assembly with a function in it that validates the parameters for the report before it is run. If the validate parameters function is successful you hide the error panel and show the report panel, if not you do the opposite.
I don't think there's a whole lot you can do in the reporting tool itself. It's pretty rudimentary.
However, you can provide an ASP.net web interface or a form that you can use to ask the users for the parameter values in any format .NET allows, and use the ReportViewer control to display the report. It sounds daunting, but it's actually pretty straight-forward, particularly if you already have a project you can build on.
Microsoft gives tutorials for using the ReportViewer controls.
Related
I experienced the following validation error today using my Infopath form via a SharePoint 2013 list:
'The form cannot be submitted because it contains validation errors. Errors are marked with either a red asterisk (required fields) or a red, dashed border (invalid values). Field or group: my:group1 Error: Cannot be blank
Click OK to resume filling out the form. You may want to check your form data for errors.'
I have no idea where to locate this 'group1' because I am pretty sure it doesn't exist!
I have gone through all the fields - never experienced this before. I did look over the web and found someone mentioning lookup tables via another list - but I do not have any look up tables.
Any suggestions greatly received.
Andy
I had the same issue. It is one of two things.
You have a required field and are using a rule to hide the section. Infopath is not intelligent enough to realize the rule should not error on the field that is hidden. The way to fix this is to remove the required rule and then instead add a validation rule on the field that you are trying to hide. For example if "Field 1" is Yes and Field 2 (the hidden one) is blank, then show error message.
The second one is a bug that occurs after changing a fields type. You may need to delete the field Group 1 and then recreate it.
I'm trying to create an analysis based on errors, so I hope I have little to no value in this analysis but I need a column selector to switch between different measures which can have an error.
When I switch to a measure which doesn't contain any errors, I get a nice 'no results' message but also my column selector disappears. How do you keep this even when the analysis results in 'no results' or maybe another way to work around this.
Thanks!
a) "Back" in the browser :-)
b) "Clear My Customization" in a dashboard context
c) Instead of a column selector, you can move that logic to a dashboard prompt which switches out the measure in the analysis itself. Since the prompt isn't in-line with the analysis code but a stand-alone object it will stay unaffected by "No results".
You'd say '"Measure"."#{vMeasureSelection}{Count}" in the analysis column formula and then have the presentation variable value from a prompt passed in there.
We have a weird reporting inconsistency between two Report Suites in Omniture's SiteCatalyst. Currently we have a conversion variable that is tracking keyword values that are coming from search engines using crossVisitParticipation and channelManager plugins.
When we run the Traffic Source" report that shows "Search Keyword - All" broken down by the conversion variable one report always shows "N/A" values and the the other doesn't. Somehow one report suite is not relating the search engines report to my conversion variable and the other is. Any idea why?
Here are some screenshots:
Report with "N/A"
Link http://i48.tinypic.com/1zwi4b9.png
Report with Actual Values
Link http://i46.tinypic.com/egbnmh.png
I've seen this before too. I really suggest you just call Omniture client care. So many things in SiteCatalyst are configurable by Omniture, I am sure that it is the way your setup is configured to give this kind of result in your reports.
I have been searching the web, this site and obviously the developers section on reports from OpenERP and I can not find any explanation as what the Openwriter properties/User defined are used for.
Spending some time on developing a first report, I came to some conclusion but can't work it all out:
There are three columns: Name, Type and Value. In all the predefined OpenERP reports I have opened using Openwriter, the schema seems to be always the same. Four rows, "Info 1" to "Info 4", all with the type "text", and then the server location, the user login id, a number and a table name.
I understand that the server location and user login id will be used when connecting to the server.
I understand that the table name will be used when creating a loop object.
Question 1: But what is the number for, the one usually corresponding to Info 3? I thought it might be the res_model id from the ir_act_window table but I found a report that doesn't match (Crossovered analytic). Any idea what the number is for and how it is defined?
EDIT Answer 1: It is linked to the binding action. When creating a new report for an existing model, then an existing binding action value on this model should be incremented by one (well, that's the theory as I haven't tried yet).
Question 2: Why is the type "text" when Info 3 is a number? I guess it is the interpretation from python and that it is the way it is and this is the only way to configure the properties to operate with OpenERP. Can someone confirm?
Question 3: Why when I add Info 5 and Info 6, pointing out to another table, hoping to create a loop on a different table, it gets totally ignored?
Question 4: Why when binding to the server it doesn't ask me anything and doesn't add the report anywhere?
EDIT Answer 4: See Answer 1 as when changing the binding action index in "Info 3" to an existing binding action index in OpenERP then it pops the binding window up.
Thanks for reading this far! I am sure answers to these questions will help a lot of people understanding at least the basic connection between Openwriter and OpenERP.
EDIT: Thanks Amit for the formatting, it is much more readable this way and I will apply it to my next messages.
Not sure what Openwriter is - I suggest you try a different reporting engine. The easiest imo is the webkit html reports, you can use normal html and "mako" templating code to iterate through the objects.
Seems like once you set the Testers field on a Test Case in MTM, it will not allow you to clear it. You are only allowed to change it to a different value. Has anyone found a way to clear this field?
It is important to not get the "Assigned" Tester field confused with the Assigned To field. They are distinct fields on a Test Case work item. One reason why someone might want the Tester field to be blank is if a team all pitches in to help with testing during an iteration and leaving the assigned tester blank allows the team to know that no one has "picked up" this test to execute. The team member could then assign the test to his or herself and execute it.
The template pulls the Assigned Tester Values from a list using the 'AllowedValues' tag. Instead, simply change this to 'SuggestedValues'. That will allow for empty values - easy as that.
If you'd rather not allow free entry, you can also add a default value such as 'None' and use that rather than blank.
Unless you've customized your work item type, this field should never be blank after being saved. It defaults to the person who created the bug in all Microsoft supported process templates, and a value is required by default.
That being said, why would you want to change it to blank?
If you really, really want to be able to blank it out (which I don't think is a good idea at all), you'll need to customize your template. See the below guidance:
http://msdn.microsoft.com/en-us/library/ms243849(v=vs.110).aspx