Multi Tab Reports and No Data - reporting-services

No Data - Next Tab
Render Error When Tab Selected
SQL Server: 2008
Report Builder 3.0
A multi-tab (8 tabs) report was created. Each tab displays summarized data by specific types based on a date range. All of the data sets utilize the same stored procedure and the various results are based on the parameters passed. There appears to be two issues I have encountered.
1.) When there are some empty data sets returned, the "NoRowsMessage" does not appear to be functioning correctly. It works on the first empty data set it encounters, but if the user clicks on another tab that has an empty data set, the report throws a rendering error; even though the next table has the "NoRowsMessage" set.
2.) The second issue is that if the data set is empty and a message is displayed, The tab control for that section along with the message and the tab control / result table for the next section appear together.
Attempted Solutions:
1.) I set the NoRowMessage property with an IIF(First(Fields!LabID.Value,"DataSet Name") IS NOTHING,"No Data Found","") - Did not work
2.) I set the Hidden field for each table with an IIF(First(Fields!LabID.Value,"DataSet Name") IS NOTHING, True,False). I then had a hidden text box with the No Data Found message appear. - Works but the tab controls for other tabs appear along with their data
The expected out put would be that when a tab is selected that it will display with the data shown or the No data found message. The other tabs would not show until selected.
The actual results are as I described earlier.

Related

How to make MS Access display carriage returns (in a single text field) properly on a report

I have an MS Access table with field named "Instructions" that uses Long Text as field type. When editing the field on a form I designed, I enter "enter"/ carriage returns so it looks the way I want it to.
Example:
Steps:
1. Open Program
2. Open File Menu
3. Click Open Recent File
4. Select Desired File
It looks fine while the field is displayed in the text box on my form however when I generate a report which I intend to print. The data instead is displayed as follows:
Steps: 1. Open Program 2. Open File Menu 3. Click Open Recent File 4. Select Desired File
I have tried using the following script (triggered on button click:
Me.[Instructions] = Replace(Me.Instructions, Chr(10), Chr(13) & Chr(10))
however it either doesn't work (when the button is in the form where I edit the text box) or returns me with Run-time error 2448 - You cant Assign a value to this object
Any help would be appreciated.
It looks like you are trying to update the value of a field in the select query that's powering your report. And that's probably why you get the runtime error.
Could could always create a hidden textbox (Visible = No) on the report, put the updated value in there and then base the textbox that is displaying me.instructions off of on that other hidden textbox instead.
It might be "cleaner" to use a little function call on the report to populate the visible textbox instead of using the hidden one.

Use expression in access report textbox

I have a MS access report that I want to run using a linked excel table (so i cannot make any changes to the table in access).
The report has a text box which takes each row in the table and displays it in the text box and later prints it. I want to add a "*" at the beginning and end of the string and then display it in the text box.
I have done this so far:
- Choose data source (excel linked table) from report view
- In design view, press alt+F8 and drag and drop the column header I want into the report.
When I run the report it shows the report on each page, one page for every row of data which I will print later.
Now in design view after clicking on the text box, I go to property sheet and then the "Data" tab, if I try to change the expression to:
="" & [tablename].[headername] & ""
EDIT: There is an "asterisk" sign between the " " above, i don't know why they don't show.
When I run the report it asks me the parameter for the row number I want and displays the report only for that row. How can I use an expression and still be able to get all rows in the report in different pages?
Thanks!
I did what I didn't want to in order to get the problem solved. I used a query to add an additional column (using an expression) and used the query as my data source. Doesn't look like there is a good way to use the report to directly make changes to the table data and show it in a textbox.

Show a message to the user instead of blank report [duplicate]

I am building an SSRS 2005 report using BIDS. My report filters on date. When the selected date returns no data rows the report is blank, just the title is displayed, no table or column heading.
How can I change this to display a message like No data available. or Report is empty.?
You could set the property NoRowsMessage available on the report's table control like this:
Select the Tablix control and press F4 to view the Properties pane.
Find the NoRowsMessage property and set the value to whatever message you'd like.
You can also to format the message using the Font and TextAlign properties.
Here are some examples of what the report will look like under various settings:
Further Reading: Here is a Technet article on how to Set a No Data Message for a Data Region
Avoid NoRowsMessage and build your own conditional empty row
One problem (or feature if that's what you want) with NoRowsMessage is that it'll literally replace the entire table with just a plain old message string.
Which provides a relatively counter-intuitive end user experience in my opinion. Normally when no data is found by a system, we'd like to know something about what data was being looked for and what it would have looked like.
Instead, based off how to keep the structure of the Tablix when there is no data to show, you can do the following:
Insert New Header Row, outside the group and above the details record.
Right click on the side of the new row and Set Row Visibility
Set Visibility to the following expression which will count the rows inside the current Tablix and only set Visibility to True if there is no data.
=CountRows() > 0
Optionally, merge the cells and add your own message or just display an empty row
Here's a comparison of how the various options will render: (pick whichever look you think best fits your data and use case)
Right-click on whatever databound element(s) you are using in the report and there should be a property NoDataMessage There are a host of options there but the Caption is the first element I would look at.

Access displaying first record when using combo box to switch records

I have an Access database that uses linked tables residing on a SQL Server. For one of these tables I created a simple form showing several fields of the underlying table.
I want to switch records using a combo box, so I added one using the Combo Box Wizard, where I selected the option "Find a record on my form based on the value I selected in my combo box".
The combo box works, but I noticed that whenever a new value is selected, Access will briefly return to the first record before displaying the selected record. I can verify this by both noticing a screen flicker (e.g., bound fields briefly display data from the first record), as well as profiling the calls to SQL Server, where I can see one query for the first record, and another query for the selected record.
This problem does not occur if I use the next/previous Navigation Buttons at the bottom of the form.
How can I avoid this unnecessary query?
What using the Wizard did was create a Macro behind the Event of your combobox click. It probably looks something like .. , , First, ="[SomeField] = " & Str(Nz(Screen.ActiveControl,0)) .. What you can actually do, instead of using the Macro, is follow something like this
If we look at what that Macro does (or what arguments it accepts), it is a little more clear on why you may be experiencing that behavior.
The first argument is Object Type then Object Name, then Record, then Offset.
Object Type - The type of object that contains the record you want
to make current. Click Table, Query, Form, Server View, Stored
Procedure, or Function in the Object Type box in the Action
Arguments section of the Macro Builder pane. Leave this argument
blank to select the active object. <- Yours would be left blank because you're referring to the combobox on the form
Object Name - The name of the object that contains the record you
want to make the current record. The Object Name box shows all
objects in the current database of the type selected by the Object
Type argument. If you leave the Object Type argument blank, leave
this argument blank also. <- Because the first was left blank
Record - The record to make the current
record. Click Previous, Next, First, Last, Go To, or New in the
Record box. The default is Next. <- This defaulted to First for me and possibly for you too, probably why you were seeing this 'odd' behavior
Offset - An integer or expression that evaluates to an integer. An
expression must be preceded by an equal sign (=). This argument
specifies the record to make the current record. You can use the
Offset argument in two ways: When the Record argument is Next or
Previous, Microsoft Office Access 2007 moves the number of records
forward or backward specified in the Offset argument. When the
Record argument is Go To, Access moves to the record with the number
equal to the Offset argument. The record number is shown in the
record number box at the bottom of the window. Note If you use
the First, Last, or New setting for the Record argument, Access
ignores the Offset argument. If you enter an Offset argument that is
too large, Access displays an error message. You can't enter
negative numbers for the Offset argument.
I wish I could give you more details, but I have not used Access in conjunction with SQL Server, so if that plays into account I would not have any insight.

How do I display 'No data available.' when there are no rows to show on the report?

I am building an SSRS 2005 report using BIDS. My report filters on date. When the selected date returns no data rows the report is blank, just the title is displayed, no table or column heading.
How can I change this to display a message like No data available. or Report is empty.?
You could set the property NoRowsMessage available on the report's table control like this:
Select the Tablix control and press F4 to view the Properties pane.
Find the NoRowsMessage property and set the value to whatever message you'd like.
You can also to format the message using the Font and TextAlign properties.
Here are some examples of what the report will look like under various settings:
Further Reading: Here is a Technet article on how to Set a No Data Message for a Data Region
Avoid NoRowsMessage and build your own conditional empty row
One problem (or feature if that's what you want) with NoRowsMessage is that it'll literally replace the entire table with just a plain old message string.
Which provides a relatively counter-intuitive end user experience in my opinion. Normally when no data is found by a system, we'd like to know something about what data was being looked for and what it would have looked like.
Instead, based off how to keep the structure of the Tablix when there is no data to show, you can do the following:
Insert New Header Row, outside the group and above the details record.
Right click on the side of the new row and Set Row Visibility
Set Visibility to the following expression which will count the rows inside the current Tablix and only set Visibility to True if there is no data.
=CountRows() > 0
Optionally, merge the cells and add your own message or just display an empty row
Here's a comparison of how the various options will render: (pick whichever look you think best fits your data and use case)
Right-click on whatever databound element(s) you are using in the report and there should be a property NoDataMessage There are a host of options there but the Caption is the first element I would look at.