I'm looking to merge vertical rows for only a single column of my report, so that when that column has lots of data, it doesn't force the left rows to expand.
The answer appears to be using a matrix (e.g. SSRS tablix Merging cells vertically problem), but I'm not clear how it would work in this case.
For example, in the screen-shot below, I'd like to spread the confirmation footer text through the following 4 rows, so that the first row (Sales Contact, Angela Thomson, Confirmation Footer, The credit card used...) is the same width as the others and that the Sales Contact info on the left is not pushed down (i.e. the Title row should be just below Sales Contact, and not have all that space in between.
Any thoughts on this?
You could use a series of nested tablixes. Create each tablix in your report then drag and drop into the main tablix until you get the effect you're after. (nested data regions reference).
Here's the design of 3 nested tablixes
Here's the preview of the report
I currently have two tables in a database "customer" and "pricelist" where a customer can have multiple pricelist items linked to their ID.
I'm trying to build a report in VS2013 where it lists all customers [alphabetically], then all of their pricelist items [alphabetically], then page break between each customer.
I've tried setting it up to use a dataset of each table, which doesn't let me group them together, and I've also tried joining the two tables into one view which was the closest I had gotten. The problem was that for each item, it printed the customer name and a page break, because of the inner join i was doing where each record has the customer name on it.
Please help me figure this out! I just want to be able to display the data as such;
CUSTOMER NAME
.........ITEM 1.....PRICE
.........ITEM 2.....PRICE
.........ETC
PAGE BREAK
CUSTOMER NAME
.........ITEM 1.....PRICE
.........ETC.
To group data in a report:
Click the Design tab.
If you do not see the Row Groups pane , right-click the design surface and click view and then click Grouping.
From the Report Data pane, drag the Date field to the Row Groups pane. Place it above the row called (Details). Note that the row handle now has a bracket in it, to show a group. The table now also has two Date columns -- one on either side of a vertical dotted line.
From the Report Data pane, drag the Order field to the Row Groups pane. Place it below Date and above (Details).
Note that the row handle now has two brackets in it, to show two groups. The table now has two Order columns, too.
Delete the original Date and Order columns to the right of the double line. This removes this individual record values so that only the group value is displayed. Select the column handles for the two columns, right-click and click Delete Columns.
Switch to the Preview tab to preview the report. It should look similar to the following illustration:
The answer was retrieved from this MSDN page
I am new to SSRS Reporting.
I want to group items by "ChallanNumber", but I also want to show all details of that challan and it's child challan.
You would create a table with your detail records showing all the records from all groups, then right click on the row selector (or click the drop down under Row Groups) and Add Group-->Parent Group. For the Group By, select your challan field and check the Add Group Header box to add the extra line for the group.
The group will be created but with a new left column that you may not want. You can delete the new column. Add the fields you want to your new group header line.
In visual-Studio 2010, I am trying to create an SSRS graph to display sales in order of totalsold.
The graph came out with the right information, but not the right order.
This is the code I inserted into "DataSets"
SELECT SUM(TotalSold) Total, st.Name Territory
FROM SalesOrder so
LEFT OUTER JOIN SalesTerritory st
ON so.TerritoryID=st.TerritoryID
GROUP BY [Name]
ORDER BY Total desc
The end result should look like the first graph (A-01). The current
graph looks like the second graph (B-01)
Do I need to change the code?
go to series group properties and change the sorting by total "Z to A" see screen shot for your reference ...
Open 'Category Group Properties' window, then change the sorting order by total to "Z to A" as depicted in the screenshot. Select 'OK' and go to 'Preview' to ascertain that it worked.
I often run into a situation where I need to come up with a GUI to edit data that has a n:m relationship. I'm looking for user friendly GUI ideas.
[table1]
|
/|\
[table2]
\|/
|
[table3]
Usually the GUI resembles something like this:
Grid that shows all items from table1
Add table3 item... (shows modal window with table3 items)
Grid that shows all items from table3
After the user picked a table3 item, I add a new row to table2 and refresh the grids.
Disadvantages:
You can only add table3 items to table1, and not the other way around;
You can only browse table1 items and see related table3 items;
I need to have one filtered grid of table3 items, and a similar one to pick new items;
My question:
Does anyone know a better way to visually browse and edit data that has a n:m relationship?
Or any nice patterns that I could "steal" from existing software packages?
Solution 1
If the data sets are not too big, use a table and allow users to place checks in cells (table 1 is X axis and table3 is Y axis).
You can probably do this for larger table1/3 data sets as long as you allow users to filter or otherwise limit which values are displayed on x and y axis.
Solution 2
To quote from this page, "A many-to-many relationship is really two one-to-many relationships with a junction/link table".
As such, you can, as one solution, simply take your own solution and resolve your first 2 dis-advantages by having screens/dialogs to go table 1=>3 as well as 3=>1.
Not a perfect solution but at least provides all the needed functionality
Solution 3
Somewhat similar to your own solution:
Show a table based on table1, with:
B. col1 containing table1 elements
C. col2 containing a list of all elements from table3 already associated with this element from table1.
The list can be either horizontal if there are usually few elements associated, or vertical (scrollable) if horizontal to too wide.
The important part is that every displayed element from table3 has a "delete" icon (x) next to it to allow removal quickly.
Allow choosing which element from table1 you want to add mappings to.
There are 2 ways of doing this - either add a checkbox to every row in your table, and have one button labeled "add relationships to selected rows" (wording needs improvement),
or simply have a 3-rd column in the table, containing button/link for adding relationships to that individual row.
The former is a good idea if the user is likely to often add exactly the same set of element from table3 to several rows from table1.
When "Add" button/link is clicked, you display a filterable multi-select list of elements from table3, with "add selected" button.
As in your solution (see my #2), this is a-symmetrical so you should implement a mirror UI for mapping from table3 to table1 if needed.
This is an old question, but as I faced the same problem again just now, I came up with this:
2 grids, side by side, showing table1 and table3 items, with paging, if necessary.
Both grids have a top toolbar which allows filtering by a value from the opposite table. Depending on your data and your gui framework, it can be a drop-down combo grid, or an auto-complete text input.
Both grids have checkboxes (last or first column)
Both grids contain an inline button/action on each row, to automatically filter the other grid on that item.
Only one grid is shown/marked as "active" or "master" at any given time (to make it clear to the user, which side of the relationship they are viewing/controlling).
When you select an item in grid1, grid1 becomes active and all items in the other grid have checkboxes ticked if they are associated with the selected item.
Vice versa, when you select an item in grid2 (table3), grid2 becomes active, all checkboxes in grid2 are blank (or dimmed-out) and checkboxes in grid1 indicate an association with the selected item.
The filtering part is made easier based on the inline button described in step 4.
I believe this solution would satisfy all your requirements.
Here's a possible solution, given in the form of an employees-to-projects m:m relationship. Each employee can work on many projects, each project can involve many employees.
From left to right, you show the following:
A panel showing the details of the currently selected employee.
A list of all employees, where each item in the list shows the employee's name as a clickable link or button (to display details in the detail panel). At the head of the list is a toggle button which filters the projects list to only those associated with the currently selected employee. At the foot of the list is a button to add a new employee, which display an empty details panel ready to accept input.
A vertical space in the middle with a single "Link" button allowing the user to link the currently selected employee with the currently selected project. Clicking this button would open a dialog allowing the user to enter details of the link (i.e. how long the employee is assigned, what role the eployee will play, etc).
A list of all projects, where each item in the list shows the project's name as a clickable link or button (to display details in the detail panel). At the head of the list is a toggle button which filters the employees list to only those associated with the currently selected projet. At the foot of the list is a button to add a new project, which display an empty details panel ready to accept input.
A panel showing the details of the currently selected project.
Obviously, you'd have to limit the size of the details panels, maybe by only showing the details relevant to the m:m relationship. You might even add a button on the details panel to open a more detailed pop-up window, or you might do away with the details panel altogether, if you're mainly interested in managing the links. This UI would work really well on wide-aspect screens.
HTH! Klay
Let me use the One Customer Has 0 or many Orders relationship example. If user wants to see the Orders of particular form I would suggest the following Use Case:
The User clicks the Search Customer link:
The System presents the Search Customer Form having the search criteria to filter on
The User fills the Search Criteria and hits the Search button
The System presents a list of the Customer ... by the matched criteria
The User hits the Open button in front of A Customer
The System presents the Customer ( in totally new page with "Back to Search Button ")
The new Page has 3 panels - 1 panel for Customer Details , second Panel for the list of Orders and 3 panel which gets populated when a Order is clicked. If the number of Orders is greater than 20 I would put a Search Orders link which guides to entirely new Search form for Orders with a predefined CustomerId fixed with the current CustomerId selected.