- •Welcome to Seagate Crystal Reports
- •Welcome
- •Two kinds of Hands-On tutorials
- •Command, button, key, and control conventions
- •Using Seagate Crystal Reports documentation
- •Seagate Crystal Reports online Help features
- •If you need more help...
- •Installation Requirements
- •Installing Seagate Crystal Reports
- •Installing on a network workstation
- •Upgrading from a previous version
- •Quick Start
- •Subreports expand report usefulness
- •Query Designer adds ad-hoc querying capabilities
- •Parameter fields mean multi-purpose reports
- •Text objects give you text with intelligence
- •Preprinted-form reports easier than ever
- •More powerful formulas extend your capabilities
- •Web solution serves up variety of online reports
- •HTML exporting simplifies Web activities
- •New database support improves data access
- •Running totals made easy
- •Smart Navigation
- •Learning Seagate Crystal Reports
- •User’s Guide
- •Online Help
- •Books Online
- •Sample Reports
- •Glossary
- •Sample Data - CRAZE.MDB
- •Suggested learning paths
- •The application window
- •Menu bar
- •Standard toolbar
- •Supplementary toolbar
- •Format bar
- •Status bar
- •Shortcut menus
- •Cursors
- •Design Tab
- •Preview Tab
- •Other fundamentals
- •HANDS-ON (Report Design Environment)
- •How to add, delete, and move guidelines
- •How to move and position objects using guidelines
- •How to turn the grid on/off
- •How to zoom your report in and out
- •How to undo/redo activities
- •How to drill down on summarized data
- •HANDS-ON (Sections and Areas)
- •How to add, delete, move, and merge sections
- •How to split and resize sections
- •Basic report design
- •How to design a prototype
- •Concepts in reporting
- •Beyond basic reports
- •HANDS-ON (Report Creation and Design)
- •How to select data and begin creating a report
- •How to add and link multiple tables
- •How to insert database fields
- •How to insert special fields
- •How to insert a page n of N field
- •How to insert text objects
- •How to use a database field in a text object
- •How to insert a picture
- •How to select, move, and resize objects
- •How to hide parts of the report
- •HANDS-ON (Finishing Your Report)
- •How to insert page headers and footers
- •How to add a title page to your report
- •How to add summary information to your report
- •Printing considerations
- •Design solutions for printing/distributing
- •Report creation checklist for distributed reports
- •Updating printer drivers
- •Report distribution
- •HANDS-ON (Distributing Your Report)
- •How to export reports
- •How to fax a report
- •How to request reports from a web browser
- •How to specify parameter field values
- •How to log on to a database
- •How to view plain HTML reports
- •Overview
- •Getting started
- •Record Selection
- •Grouping and sorting
- •Completing the report
- •Introduction
- •Working with Arbor Essbase data
- •HANDS-ON (Reporting on OLAP data)
- •How to create a cross-tab with Essbase data
- •Using multiple sections in reports
- •HANDS-ON (Multiple Section Reports)
- •How to work with text objects
- •How to create a form letter using a text object
- •How to format objects conditionally
- •How to print conditional messages in form letters
- •How to alternate background colors for rows
- •How to eliminate blank lines
- •How to add blank lines conditionally
- •Formatting concepts
- •Absolute formatting
- •Types of formatting properties
- •Conditional formatting
- •HANDS-ON (Absolute Formatting)
- •How to add color, shading, and borders
- •How to add/edit lines and boxes
- •How to change margins
- •How to add/delete white space between rows
- •How to set page orientation and paper size
- •HANDS-ON (Conditional Formatting)
- •How to flag values that meet certain conditions
- •Record selection
- •Group selection
- •Record selection formula templates
- •HANDS-ON (Record and Group Selection)
- •How to create a record or group selection formula
- •How to use record/group selection templates
- •How to select the top or bottom N groups
- •Sorting, Grouping, and Totalling Overview
- •Creating custom groups
- •HANDS-ON (Sorting, Grouping, and Totalling)
- •How to do a single field sort
- •How to do a multiple field sort
- •How to group data
- •How to sort records within groups
- •How to summarize grouped data
- •How to subtotal grouped data
- •How to sort based on summarized group values
- •How to create multiple levels of subtotals
- •How to group data in intervals
- •How to calculate a percentage of the grand total
- •How to create group headers
- •What are formulas?
- •Other formula conventions
- •Formula syntax
- •How formulas are evaluated - Order of precedence
- •HANDS-ON (Formulas 101)
- •How to insert a formula in your report
- •How to delete formulas from your report
- •How to copy formulas from online Help
- •How to copy formulas from one report to another
- •How to create if-then-else formulas
- •How to format text with formulas
- •How to use variables in formulas
- •How to declare a variable
- •How to assign a value to a variable
- •How to conditionally assign values to variables
- •How to use an array in a formula
- •How to use a range in a formula
- •How to use semicolons in formulas
- •How to fine tune group selection formulas
- •How to fine tune record selection formulas
- •How to debug a formula
- •Introduction
- •HANDS-ON (Advanced Totalling)
- •How to maintain running totals in a list
- •How to subtotal running totals within groups
- •How to subtotal without grouping
- •How to subtotal true A to B, A to C reports
- •Parameter field objects overview
- •Multiple parameter fields
- •Parameter field considerations
- •HANDS-ON (Parameter Field Objects)
- •How to create a parameter field
- •How to use a parameter field in a formula
- •How to respond to parameter field prompts
- •How to use wildcards with parameter fields
- •How to set a report title using parameter fields
- •How to set sort order using parameter fields
- •Graphing Overview
- •Choosing a graph or chart type
- •Where to place your graph
- •Data you can graph on
- •Before you create your graph
- •HANDS-ON (Graphing)
- •How to graph on a summary or subtotal field
- •How to graph on a details field
- •How to graph on a formula field
- •How to graph on cross-tab summaries
- •How to edit graphs using PGEditor
- •How to use the underlay feature with graphs
- •OLE Objects Overview
- •Inserting OLE objects in your reports
- •Linked vs. Embedded Objects
- •The dynamic OLE menu commands
- •OLE and the Picture command
- •General OLE considerations
- •HANDS-ON (OLE Objects)
- •How OLE objects are represented in your report
- •How to use OLE - General Overview Tutorial
- •How to insert a graphic/picture as an OLE object
- •What are subreports?
- •Unlinked vs. linked subreports
- •How subreport linking works
- •HANDS-ON (Subreports)
- •How to insert a subreport
- •How to preview your subreport
- •How to combine unrelated reports using subreports
- •How to use subreports with unlinkable data
- •Cross-tab overview
- •Cross-tab components
- •HANDS-ON (Cross-Tab Objects)
- •How to create a cross-tab object
- •How to format a cross-tab
- •How to print cross-tabs that span multiple pages
- •The Crystal Query Designer
- •HANDS-ON (Queries)
- •How to create a new query
- •How to add tables to a query
- •How to link tables and specify a join type
- •How to add fields to a query
- •How to identify unique values in a query
- •How to summarize data with aggregate functions
- •How to sort records according to field values
- •How to specify records to be included in a query
- •How to select groups to be included in a query
- •How to create an SQL expression
- •How to create a query from another Crystal Query
- •How to select a query for a report
- •How to use a parameter field in a query
- •Dictionaries Overview
- •HANDS-ON (Dictionaries)
- •How to create a new dictionary
- •How to add a data file
- •How to open an SQL or ODBC data source
- •How to link multiple tables
- •How to select tables and fields for users
- •How to add/create formulas
- •How to move fields/field headings within the list
- •How to update the location of a database table
- •How to add a new field heading
- •How to add Help text
- •How to add a graphic
- •How to create sample data for users to browse
- •How to edit an existing dictionary
- •How to convert a 3.x or 4.x dictionary file
- •How to select a dictionary for a report
- •Databases Overview
- •For additional information
- •HANDS-ON (Working With Databases)
- •How to open Access queries through DAO
- •How to open Access queries through ODBC
- •How to open Access parameter queries
- •How to set up an ODBC data source
- •How to check settings for an ODBC data source
- •How to log on to an ODBC data source
- •How to add an ODBC database table to a report
- •How to log on to MS SQL Server via ODBC
- •How to log off an ODBC data source
- •How to set up an A to B, A to C link
- •How to edit an SQL query
- •How to use an ACT! database
- •How to open the NT Event Log
- •Introduction
- •Four types of data
- •Direct access database files
- •ODBC data sources
- •Crystal Query Designer files
- •Crystal Dictionary files
- •Multi-pass reporting
- •Product support
- •Web support
- •E-mail support
- •Fax support
- •Telephone support
- •Extended technical support policy
- •Product registration
- •Product return policy
- •Product replacement policy
- •Glossary
How to use a range in a formula
Extracting a range of values
A range is designed to conveniently handle entire spectrum of values, values that fall between a minimum and a maximum value.
For example, you would declare a number range variable as follows:
NumberVar Range GradeA;
A range variable is declared much like an array.
1.A variable declaration operator appropriate to the type of values stored by the range, NumberVar in this example.
2.The word Range follows the variable declaration operator.
3.The name of the range variable follows the word Range, Grade A in this example.
4.The Assignment operator follows the name and is used to assign the range of values the range variable will store.
Search for Assignment in Seagate Crystal Reports online Help.
The range is indicated using the Make Range operator with a minimum and a maximum value for the range.
Search for Make Range in Seagate Crystal Reports online Help.
Ranges have two principle uses:
●To extract a range of values from all possible values, and
●To extract a range of characters from a string value.
Consider the following example:
NumberVar Range GradeA := 90 to 100; NumberVar Range GradeB := 80 to 89; NumberVar Range GradeC := 70 to 79; NumberVar Range GradeD := 60 to 69;
Advanced Formulas |
361 |
Extracting a
range of characters
If {student.TEST SCORE} in GradeA Then “A”
Else If {student.TEST SCORE} in GradeB Then “B”
Else If {student.TEST SCORE} in GradeC Then “C”
Else If {student.TEST SCORE} in GradeD Then “D”
Else “F”
This formula starts by creating four range variables. Each contains a range of possible test scores. Notice that, unlike an array, no brackets are used to set off the range of values assigned to each range variable. Only the Make Range operator is used with the minimum and maximum test scores for each range.
The multiple If-Then-Else statement repeatedly evaluates the value in the {student.TEST SCORE} field to determine if it falls within a specific grade range. The formula prints letter grades in the report that are appropriate to the test scores received by each student.
See How to create multi-condition if-then-else formulas, Page 348.
The following formula demonstrates how to use ranges to extract characters from a string value:
StringVar AreaCode := {customer.FAX}[1 to 3];
If AreaCode = “604” Then “BC”
Else If AreaCode = “206” or AreaCode = “509”
or AreaCode = “360” Then “WA”
Else “”
This formula creates a variable that holds the first three characters in the string value of the {customer.FAX} field. For instance, if the value in {customer.FAX} is “6045551234”, then:
{customer.FAX}[1 to 3]
362 |
Seagate Crystal Reports User’s Guide |
«Returns “604”. Notice that square brackets are used to indicate a range of characters in a string (unlike the range of numeric values seen in the previous example).»
The variable AreaCode is assigned the value “604”. The multiple If-Then-Else statement evaluates the value in the AreaCode variable to determine which region the fax number is in.
A range can be applied to a constant string value, as well:
“6045551234”[1 to 3]
«Returns “604”.»
When referring to characters in a string, negative numbers can also be used:
“abcdef”[-3 to -1]
«Returns “def”.»
NOTE: You can not use a range as an element or as part of an element in an array.
See How to create if-then-else formulas, Page 346, and search for
Subscript in Seagate Crystal Reports online Help.
How to use semicolons in formulas
In a formula with multiple statements, the result of the final statement is the result that is returned (gets printed). When you have multiple statements in a formula, you must separate the statements using a semicolon so that the program knows where one statement ends and the next begins. Without semicolons, the entire formula is treated as a single statement. In a multiple statement formula, this can result in an incorrect result or an error message.
Advanced Formulas |
363 |
How to fine tune group selection formulas
You may run into situations when using a group selection formula in which no values print, even though there are values that match the selection criteria. Typically, in these cases:
●the group selection formula references another formula, and
●the referenced formula is one that calculates the value of each group as a percentage of the total value of all groups (i.e., a subtotal as a percentage of a grand total).
Using CRAZE.MDB, create a report that includes the following fields:
{customer.CUSTOMER NAME} {customer.REGION} {orders.ORDER ID} {orders.ORDER AMOUNT}
For each order, the report shows the company that placed the order, the state in which that company is located, the order number, and the amount of the order.
Subtotal the {orders.ORDER AMOUNT} field using {customer.REGION} as the sort and group by field to see the orders coming from each state. (The program sorts the data by state and calculates a subtotal in the {orders.ORDER AMOUNT} field every time the state changes.) See How to subtotal grouped data, Page 291.
!Insert a grand total on the {orders.ORDER AMOUNT} field to see the total value of all orders placed.
"Create a formula (Percent) that calculates each subtotal as a percentage of the grand total to see the value of orders for each state group as a percentage of all orders placed. Place the formula in the Group Footer section of your report.
Sum({orders.ORDER AMOUNT}, {customer.REGION}) % Sum({orders.ORDER AMOUNT})
364 |
Seagate Crystal Reports User’s Guide |
How to correct this problem
Speeding up the process
#Reference the formula (@Percent) in a group selection formula that selects only those groups for which the percentage (of subtotal to grand total) is less than 5% to find out which states individually contributed less than 5% of total sales:
{@Percent} < 5
When you click the Check or Accept button you will receive the following error message:
This formula cannot be used because it must be evaluated later.
The problem can be corrected easily. Instead of using the formula name (in this case @Percent) in the group selection formula, enter the formula itself (the formula named @Percent). Thus, instead of using the group selection formula:
{@percent} < 5
use the group selection formula:
Sum({orders.ORDER AMOUNT}, {customer.REGION}) % Sum({orders.ORDER AMOUNT}) < 5
Now when you print, only the states that contributed less than 5% will print.
To speed the process and minimize the chance for mistakes, you can copy the formula into the group selection formula using Windows' Copy and Paste commands.
Select the formula you want to use in the group selection formula.
Choose the FORMULA command from the Edit menu. The Formula Editor appears with the formula in the Formula text box.
!Copy the formula to the Clipboard using the Copy command (Ctrl-C).
" Click Accept to close the Formula Editor.
#Choose the GROUP command from the Report|Edit Selection Formula menu. The Formula Editor appears.
Advanced Formulas |
365 |