Crystal Reports:
User Group Selections
by
Jason Dove
This is a great way to allow users control over their
reports and cut down on the volume of reports needed to meet the business’s
needs.
The basis of this solution is to control which fields are grouped on (within
the report) which will (in turn) change the summary operations and change
the entire context of the report.
The following tutorial uses the Xtreme Access database that ships with
Crystal Reports and allows the resulting report to focus on order values by
City, Region, or Country.
1. Create a report with the following tables: Customer, Invoice, and Orders.
2. Add the fields: Customer ID, Customer Name, ‘City’, ‘Region’. and
‘Country’.
3. Reach agreement with the Users as to the Fields they want the option to
Group the Report on. In this case, we are going to use ‘City’, ‘Region’, and
‘Country’.
4. Create a Parameter called prmSelectGroup. Provide the user with three
discrete options: ‘City’, ‘Region’, and ‘Country’.
5. Create a formula called frmGroup and enter the following code:
SELECT {?prmSelectGroup}
CASE "City":
{Customer.City}
CASE "Region":
{Customer.Region}
CASE "Country":
{Customer.Country};
6. Insert a Group into the report, based on the frmGroup
Formula.
7. Insert a Distinct Count Summary on the Customer ID and Grouped by
frmGroup.
Now refresh the report and select a Group option from the Parameter. Both
the Group changes and the Summary Field are based on this Group.
However, there is a problem in that the Field chosen to Group by is still in
the Detail Section. This is not always the case, and may not be a problem
when it is, but for the sake of neatness we shall make the potential Group
Fields dynamic.
8. Remove the Fields ‘City’, ‘Region’ and ‘Country’ from the Report.
9. Create four Formula Fields, frmField01 and frmField02, frmHeader01 and
frmHeader02.
10. The intention is to display whichever two of the three
haven’t been picked for the Group. In frmField01 enter the following
Formula:
SELECT {?prmSelectGroup}
CASE "City":
{Customer.Region}
CASE "Region":
{Customer.Country}
CASE "Country":
{Customer.City};
And the same again for frmField02, but with the values moved around by one
place:
SELECT {?prmSelectGroup}
CASE "City":
{Customer.Country}
CASE "Region":
{Customer.City}
CASE "Country":
{Customer.Region};
11. A similar Formula is used in frmHeader01 for the Field Header:
SELECT {?prmSelectGroup}
CASE "City":
"Region"
CASE "Region":
"Country"
CASE "Country":
"City";
And the same again for frmHeader02, but with the values moved around by one
place:
SELECT {?prmSelectGroup}
CASE "City":
"Country"
CASE "Region":
"City"
CASE "Country":
"Region";
12. Add frmField01 and frmField02 to the Detail Section and the frmHeader01
and frmHeader02 to the Page Header Section.
Refreshing the report and selecting a different Parameter option will cause
the Group to change and the two Fields not chosen to appear in the Detail
Section.
Author’s Bio: Jason Dove is a senior consultant at Scry Business
Intelligence and instructor who has specialized in Crystal Reports and
Business Intelligence his entire career, utilizing it for everything, from
selling paint to counter-terrorism.
He has provided Business Intelligence consultancy for some
of the world’s leading companies and is currently making the same service
available to smaller businesses. He is also the author of 'Crystal Reports
Formulas Explained', the most advanced book on the market which specializes
in formulas.
It’s currently available with a free 70 page Crystal Reports
XI tutorial:
http://www.scry-business-intelligence.com/products/bookoffer.php
Expertise: Crystal Reports, Business Intelligence, SQL, ITIL
This article is copyrighted by
Crystalkeen, Mindconnection, and Chelsea Technologies Ltd. It may be
freely copied and distributed as long as the original copyright is
displayed and no modifications are made to this material. Extracts are
permitted. The names Crystal Reports and Seagate Info are trademarks owned
by Business Objects.
|