TL;DR: Is there a way to see all (visibility) expressions at work on a report?
I'm quite new to SSRS. I'm working on a report which will contain 2 tables, as below:
The 2 tables, simplified
I have one data set, which contains one row for each YearMonth for each KPI.
I wanted to create 2 tables containing KPIs. One would show only the data relating to the KPIs in KPICat1, the other KPICat2.
That seemed straight forward.
- Create one big table with all the KPIs and hide some rows in the middle to give the illusion of 2 tables.
Or
- Create 2 separate tables, and use the show/hide based on expression tool.
I chose to do it the latter way.
My problem now is that both tables are exhibiting conditional visibility behaviour, but when I try to change the behaviour, all of the visibility menus (for every cell, row, column, and tablix) appear to be set to show all by default (and not based on expression).
I know I could start again and likely manage the whole task without any problems. However, is there a way to see all (visibility) expressions at work on a report?, and if not, what would you recommend for troubleshooting this problem?
The .RDL is just an XML encoded file. Perhaps you could use this in something like Notepad++ to search for all of the occurrences of the Visibility tag. If a Hidden expression besides False has been placed, then it will appear there, even if it is simply 'true'.
To display the data as shown in the example, I would consider ensuring that the KPI Cat is a value in the result set. Then you could use only 1 Tablix, and use a Group for the Categories and their respective details.
Related
When writing expressions for a row in Power BI Report Builder, things line up just fine until you get data that is a lot of text.
This is a prime example
I have 'cangrow' to true on all of my individual cells as well as the row group / row itself. Nothing seems to fix this. Is there any way to do this so the rows expand accordingly?
Ideally, I'd something like this.
EDIT:
I believe the real problem is that I wasn't using a subtables because subtables look really bad when there are column groupings that block the merging of cells.
I'm now trying to find a way to basically add a completely separate table beneath the top table but still connected to be reported each match. First step would be find a way to have a separate data source in the subtable. Step two would be to allow the formatting of the subtable without the structure of the first.
I can't extend the subtable to the final column because of a required column group. And my expressions can't really do what I need them to without changing the dataset to something other than the main table.
Thanks for the help!
FINAL EDIT 2:
1) To resolve the separate dataset problem, I had to write a disgusting query to join the two sets I was using into one. I'm not sure there is a way to do that with Power BI Report Builder, although there should be.
2) I had to put the two separate tables into a list so they would be okay with formatting.
Got my problem solved, but in a round about way.
1) To resolve the separate dataset problem, I had to write a disgusting query to join the two sets I was using into one. I'm not sure there is a way to do that with Power BI Report Builder, although there should be.
2) I had to put the two separate tables into a list so they would be okay with formatting.
Got my problem solved, but in a round about way.
Hi I am new to SSRS and I created a form. I also added a couple of column based on expressions. I was trying to sort the table on the basis of an expression column but the option is not available in cell properties - interactive sorting. Can anyone please guide me on how to achieve it. Thanks.
You have two ways of solving this that I can think of. You can either:
Move your calculated columns to your Dataset
When you add a dataset to a report, on the Fields tab you have the option to add Calculated Fields. If you add your expression column here, you will be able to use it in the Sort tab of your Tablix just as you would a normal column.
OR
Repeat the expression in the Sort property.
If you are not able to create your calculated field on your dataset (perhaps if you reference other datasets or do something out of scope), then you will need to duplicate your expression in the Sort tab of your Tablix. (To access this, click anywhere on your table and then right-click on the small grey square in the top left-hand corner of your table).
If you click Add for a new Sort condition and hit the fx button, you can paste the same expression you used for your column into here and use it to sort your dataset.
The downside of this is that you're replicating your logic and potentially duplicating work.
To enable the interactive shorting in a table you need to have a row group. So by this you can sort the whole table or only a portion of the table.
Say in your case you need to sort the table basis of some expression. For an example you need have an interactive sort based on the values. In the below screenshot I have 2 groups i.e. Customer and Project and I want to have an interactive sort based on the revenue.
Now right click on the Revenue and go to the 'Textbox' properties and select the group and sort by. Here in the screenshot I will sorting based on the total revenue for different Customers.
Now after running the report if you click on the Revenue column it will sort accordingly.
Let me know if this is what you are looking for.
I am designing a form at work where I need to be able to set "Properties" for a large number of (accounting) "structures". I have a "Value" field where the user enters the value that property must take and then I have 1 column for every structure where the user must be able to check / uncheck each property for each structure. Also, I need to be able to suggest checkbox values (aka mapping of properties to structures) to the user so that he/she doesn't have to manually click all the checkboxes that will always need to be ticked. Finally, the number of properties (rows) and the number of structures (columns) should not be assumed to be fixed though I don't want the user to be able to modify it himself. I just want it so that a dev (probably me) doesn't have a hard time adding or removing structures.
For now I have used a local table where each structure is a column and I have hardcoded my properties (which is good). However, I am not sure that using a local table is good design. We normally avoid having forms and tables in the same Access DB to separate forms and data. Also, I'm wondering if there is an elegant solution that I am missing. There will be at least 10-15 structures and 11 properties, that would make 110 (11*10) checkboxes to handle so I cannot do it manually (i.e. create 110 checkboxes and check 110 values everytime...).
Here you can see what that part of the form looks like for now.
I know this will be a chattier question but I really need a design check on this so here are a few questions that I try to make as general and objective as possible:
In Access, how is it possible to create a matrix of controls where 1 column contains a fixed (but changeable by a dev) number of properties, a "value" field that can take text and then 10+ columns with Yes/No values ?
Is it possible to do it without a local table ?
VBA is perfectly admissible.
Thanks.
In Access, how is it possible to create a matrix of controls where 1 column contains a fixed (but changeable by a dev) number of properties, a "value" field that can take text and then 10+ columns with Yes/No values ?
I've never seen any VBA code that does what you describe. VB6 allowed the creation of "control arrays" to logically group controls (and work around some limitations on the number of controls on a form), but I've never seen that mentioned for VBA.
Is it possible to do it without a local table?
Is it possible? Maybe, since you can modify a form via code by opening it in Design View and using CreateControl() to add controls.
Is it practical? Probably not, because the "Access Specifications" section of Access Help mentions the following limit...
"Number of controls and sections that you can add over the lifetime of the form or report: 754"
..so it sounds like code that repeatedly modifies a form could very well break after a while.
My recommendation would be to create a temporary table, use it, and then discard it. If you're worried about front-end bloat then you could create the temporary table in a temporary .accdb file and then link to it.
Maybe I'm missing something, but it seems pretty easy to me.
Make each structure a record.
Then in another table, make each property a record with a 1-many relationship with the structure table. So, each structure will have many properties.
Then a form based on the structure with a sub-form based on it's properties.
Default property values can be set in the table structure.
And of course the tables can be linked from another DB.
In Access, how is it possible to create a matrix of controls where 1 column contains a fixed (but changeable by a dev) number of properties, a "value" field that can take text and then 10+ columns with Yes/No values?
I'm still not certain why you want multiple bits/booleans in a single column, but you might be able to utilize bit logic and long integer column. VBA does something like this with its constants. For instance, in a MsgBox, you make your type = vbCritical + vbYesNo. Its result is in an integer value that VBA interprets to make a Critcal MsgBox with only a Yes and a No button. The reason this works is because the value of each constant is so distinct that any summation with like constants results in a unique value that can be de-parsed. It's fairly elegant from a user perspective, but I'd hate to do the math on the back-end to make such a function work.
It might be better to maintain a separate table of available properties and/or property sets and build / maintain your property sheet that way. You could assign property sets as well as individual properties to particular controls. You could also specify in either table whether there is a default value for that property and/or what that value is.
It is also likely that you do not need that many bits. I'd be happy to narrow my answer to your situation if you could update your question with more detail regarding the nature of your bit need(s).
Is it possible to do it without a local table?
You might be able to create a DAO.Recordset dynamically in Access.
It might be better to adjust your properties table(s) (see above) to be a permanent table in one of your databases rather than re-populating the same data every time.
You could take more of a master/detail approach, combining your bit fields into a string description describing the boxes which are checked.
For example, if you have a structure named 'structure1', value 100, and 5 condition bits set, you could have one string column with text 'cond1, cond2, cond7, cond8, cond9' and then another button allowing them to modify that set of conditions for that single structure.
You'd have fewer checkboxes, anyways.
The only thing I can think of equivalent to 'a matrix of controls where 1 column contains a fixed (but changeable by a dev) number of properties' is an editable query result set.
You'll need a table for your structure -> default conditions set, if nothing else, but it doesn't have to be in the same db as the front end.
HTH
I'm using VS2005 to create my reports.
I have a matrix report that works beatifully. I have country going down on the left hand side (row group called "matrix1_country_name") and data going across for 2 column groups, product_node and month (column groups "matrix1_Node" and "matrix1_calendar_month_name" respectively)
The only thing I want to improve is that this report will always show 5 year/60 months of data, and with multiple nodes I'd rather have each node be on its own page (Ideally I'd love to have it on the same page but in the rows just below to first node, but I'm not sure that's even possible).
I've seen numerous responses on these boards about putting in page breaks on column groups, but I can't seem to find how to do that in VS2005. The examples I've read that can do that seem to have a different interface so I'm guessing they aren't in VS2005.
Does VS2005 allow you to add page breaks after each group item and I'm just missing it? Or is there a trick I can do to get that to happen? I've also read about nestin matrix reports in list reports but that seems more complicated than doing the page break on the column group, so I'd rather do the easiest solution if I can.
Ah, I see pagebreaks are ignored on column_groups. Well I guess I'll try one of these workarounds.
http://social.msdn.microsoft.com/Forums/en-US/sqlreportingservices/thread/ea9d795b-8d17-41d2-a1d7-a4069ebb4539
I'm creating my first report for CRM 2011 using SQL Server Business Intelligence Development Studio and i've managed to do a decent amount but as I move into the more complex parts i'm becoming stuck, and I was wondering if someone would be able to help me with a few questions I have:
I'm using fetchXml to get the data from CRM for some accounts that the report is for, I need to include some data from a child entity but can't include them in the same way that I can for a parent entity to accounts. So for this I'm assuming I need to use a separate fetch query, but how do I pass the ID of the account the report is looking at into the second fetch query as a parameter?
Once I've got the names of all the child items with the fetchXml, whats the easiest way to display them all in a numbered list?
EDIT: For 1 and 2 I found that I can use a subreport with the child data in it. Using a list item I can show all in a bulleted list and I can pass the parameter through from the main report to the subreport
I'm listing the account's address on the report but since they might or might not have the lines 2 and 3 fields completed i'm unsure of how to display it without either missing off some of the address or leaving big gaps. I've tried creating different text boxes with the different combinations of line 1, 2 and 3 and then make only one visible with the use of expressions but the iif statement always returns false. Is there an easier way to do this?
EDIT: I've found out how to do this using a number of different text boxes containing the different combinations and hiding them using the visibility rule. What was initially confusing though is that the rule is for if the box should be hidden, rather than if it should be shown
When I add a field onto the report it always has a "First()" statement on it. Is this required or will it limit my report in any way?
EDIT: This doesn't seem to have an effect on the report as the record to run it against is always selected beforehand, so the First() statement doesn't restrict any data
If anyone could help me with any of these questions at all then that would be greatly appreciated.
Thanks
I've found the answers to my questions, i've put them in the original post.