Freigeben über


Getting grouping right in Report Builder

One thing Report Builder users need to be aware of when building a report is the difference between an entity group, which displays exactly one instance for each row in the underlying table, and a value group, which displays one instance for each distinct value of a particular field. The type of group they get depends on the field(s) they used to create the group initially. Problems can arise if the user intends to create an entity group with many fields, but instead creates a series of value groups (one for each field). This may make it impossible to get the sorting they want, and can introduce unwanted subtotals levels as well.

For example, a user might drag in the Last Name field as the first step in creating an Employee report. However, if the DiscourageGrouping property for this field in the report model is "false", dragging in this field creates a value group on Last Name. This means that the group cannot be used to display data about individual employees; it can only show totals for all employees with a given last name. So, other fields that are not totals (e.g. First Name) must be added to a new group. If they also do not discourage grouping, a value group will be created for them as well. And so on...

The safest way for the user to get an entity group when they really want one is to drag in the entity itself from the entity list, instead of dragging in a field first. This will create an entity group displaying the DefaultDetailAttributes or IdentifyingAttributes for that entity. This is also a convenient shortcut for adding the fields they almost certainly want to include anyway. As the developer of the report model, you can help users who are unaware of this trick by setting the DiscourageGrouping property in the report model on any field for which users are unlikely to want a value group. They can still get one in their report by using a custom field that simply references it, but the default behavior will give them an entity group instead.

Comments

  • Anonymous
    May 10, 2007
    The comment has been removed
  • Anonymous
    June 07, 2007
    Bob, thanks for clearing up this issue a bit. I'm still a bit confused though - and have to admit that I don't exactly grasp the concept of the property DiscourageGrouping in the Model Designer. The effects of turning on (DiscourageGrouping = True) are that when I in Report Builder drag an attribute with this property set, it automatically groups (looking at the grey tab) with whatever comes next. Shouldn't this be the other way around? And when I set attribute's properties to DiscourageGrouping = False, they are not possible to group in Report Builder whichever way I try to do this. The result of this is that I cannot sort (neither dynamic sorting, nor using the Sort and Grouping-button in Report Builder. Am I missing something here?
  • Anonymous
    September 28, 2007
    Since releasing Report Builder almost two years ago, we've found that many users run into difficulty
  • Anonymous
    June 01, 2008
    Hi Bob,I got a problem with grouping and sorting in Report Model based reports. My szenario is quite simple. I got a table with 5 colums: Group1, Group2, Detail, Sort and Value. In Sort, I have the sort order for the fields Group1 and group2, like this:C,#null#,a,50,0C,C,x,100,1C,C,y,200,1A,B,z,200,2B,D,x,300,3etc.In my report, I want to use group1 and group2 as groups but want them to be sorted as defined in sort.The result should beC            a        50C    C       x       100    C       y       200    C       total   300C    total           350A    B       z       200    B       total   200A    total           200B    D       x       300    D       total   300B    total           300In the Report Model, I defined "sort" as the entities sort attribute.But in the reports that I create based on the model, sorting does not happen. I found no way to sort the groups by my (only) sort attribute...Do you have any idea how to sort the data in my report by the one Sort-attribute I have AND keep the groups?YoursDirk