- •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
NOTE: Selection formula components that do not fit any of the fixed criteria in the Select Expert will not be translated. For example, if part of your record selection formula extracts the last four characters in a customer number, the section of the formula code that does that extraction will not be converted to Select Expert selection criteria. This is because there is no facility in the Select Expert to make such an extraction by pointing and clicking.
Group selection
When you group or summarize data, all the groups in your report are included by default. There may be times, however, when you do not want to include all the groups. For example:
●You may only want to include those groups that have certain group names, or whose summarized values meet a certain condition.
●You might want to see only the groups with the highest summary values, or the lowest.
You can select the groups that appear in your report in several different ways.
You can do some kinds of selection using either a record selection formula or a group selection formula. For example:
●If you have a mailing list grouped by Region and your record selection formula specifies only California customers ({customer.REGION} = “CA”), your report will have only a single group: California.
●If you have a group selection formula that specifies only groups with the group name “CA” (GroupName({customer.REGION}) = ”CA”) and no record selection formula, you will get an identical report, assuming that the California condition was the only selection test in both situations. When using the group selection method, however, it could conceivably take longer to get the report back.
●Some kinds of selection you can do using either a record selection formula or a group selection formula. For example, if you have a mailing list grouped by Region and
254 |
Seagate Crystal Reports User’s Guide |
Select Expert
Formula language
your record selection formula specifies only California customers ({customer.REGION} = “CA”), your report will have only a single group: California. If you have a group selection formula that specifies only groups with the group name “CA” (GroupName({customer.REGION}) = ”CA”) and no record selection formula, you will get an identical report, assuming that the California condition was the only selection test in both situations. When using the group selection method, however, it could conceivably take longer to get the report back.
You can select groups of records using the Select Expert just like you can select individual records.
Instead of basing your selection criteria on standard fields like you do for record selection, however, you base it on group name fields or summary fields when you are setting group selection criteria.
●If you have simply grouped your data but you have not summarized it, you can only set up group selection based on the group name field. For example you may want to select only those groups whose Region is Massachusetts:
GroupName ({Customer.REGION}) = “MA”
●If you have summarized your data, you can set up group selection based either on the group name field or on the summary field. For example:
Sum({Customer.LAST YEAR’S SALES}, {Customer.REGION}) > 10000
NOTE: You can use the Select Expert to set up record selection and group selection requests. When you select either a group name or a summary field, the program knows that the selection criteria you set up is intended for group selection. In all other cases, the program knows that you are setting up record selection.
You can select groups using the formula language. To do this you activate the Group Selection Formula Editor by choosing the GROUP command from the Report|Edit Selection Formula menu.
In the Formula Editor you can build your group selection request using group fields, group name fields, and other formulas. As was
Record and Group Selection |
255 |
|
the case with record selection formulas, your only restriction is |
|
that the formula you create must be Boolean, that is, it must return |
|
either a True or False value. See Formulas 101, Page 321. |
Top N |
Many times, you might want to show only the “top” or “bottom” |
|
groups in a report: the fastest selling product lines, the least |
|
productive sales regions, the states that generate the most orders, |
|
etc. Because this kind of group selection is so popular, the |
|
program includes the Top N Sort Group Expert for setting it up |
|
easily. |
|
You access the Top N Sort Group Expert by clicking the TOP N |
|
button on the supplementary toolbar. Using this Expert, you |
|
specify whether you want to display the Top N or Bottom N |
|
groups, and then you specify what number N is. |
|
For example: |
|
● if you want to report on the three fastest selling product |
|
lines, select the top N option in the Top N Sort Group |
|
Expert and set N to be equal to three, or |
|
● if you want to report on the five least productive sales |
|
regions, select the bottom N option in the Top N Sort Group |
|
Expert and set N to be equal to five. |
|
The program will display those groups as specified. |
|
But there is one other consideration with Top N group selection |
|
and that is what to do with all the records from other groups that |
|
do not fit the Top N or Bottom N criteria you set. You need to |
|
decide whether to eliminate those records from your report |
|
entirely or to lump them all together in a single group with the |
|
name you specify. The program enables you to do either. See How |
|
to select the top or bottom N groups, Page 267. |
Record selection formula templates
Formula templates
The following example formulas can be used as templates to help you create your own selection formulas using the Record Selection Formula Editor. The examples illustrate different kinds of selections that you can do, not necessarily the selection that is best to do from a performance standpoint. To help identify the
256 |
Seagate Crystal Reports User’s Guide |
Record
selection templates
best way to set up your record selection, see Selection performance tips, Page 260.
NOTE: All of these formulas are available in Seagate Crystal Reports online Help so you can copy them directly into the Selection Formula Editor. Search for Record selection formula
templates in Seagate Crystal Reports online Help.
FOR SELECTING RECORDS USING CHARACTER STRINGS
“C” in {file.FIELD}[1]
«Selects those records in which the value in the {file.FIELD} field begins with the character “C” (includes values like CyclePath, Corp. and Cyclist’s Trail Co.; excludes values like Bob’s Bikes Ltd. and Feel Great Bikes, Inc.).»
not (“C” in {file.FIELD}[1])
«Selects those records in which the value in the {file.FIELD} field does not begin with the character “C” (includes values like Bob’s Bikes Ltd. and Feel Great Bikes, Inc.; excludes values like CyclePath, Corp. and Cyclist’s Trail Co.).»
“999” in {file.FIELD}[3 to 5]
«Selects those records in which the 3rd through 5th digits of the {file.FIELD} field is equal to “999” (includes values like 10999, 70999, and 00999; excludes values like 99901 and 19990).»
“Cycle” in {file.FIELD}
«Selects those records in which the value in the {file.FIELD} field contains the string “Cycle” (includes values such as CyclePath Corp. and CycleSporin, Inc.; excludes values like Cyclist’s Trail Co. and Feel Great Bikes, Inc.).»
FOR SELECTING RECORDS USING NUMBERS
Single values
{file.FIELD} > 99999
«Selects those records that have a value in the {file.FIELD} field greater than 99999.»
Record and Group Selection |
257 |
{file.FIELD} < 99999
«Selects those records that have a value in the {file.FIELD} field less than 99999.»
Range of values
{file.FIELD} > 11111 and {file.FIELD} < 99999
«Selects those records that have a value in the {file.FIELD} field greater than 11111 but less than 99999 (neither 11111 or 99999 is included in the range of values).»
{file.FIELD} >= 11111 and {file.FIELD} <= 99999
«Selects those records that have a value in the {file.FIELD} field greater than 11111 but less than 99999 (both 11111 and 99999 are included in the range of values).»
FOR SELECTING RECORDS USING DATES
The Month, Day, and Year functions can all be used in examples like the following:
Year ({file.DATE}) < 1996
«Selects those records where the year found in the {file.DATE} field is earlier than 1996.»
Year ({file.DATE}) > 1992 and
Year ({file.DATE}) < 1996
«Selects those records where the year found in the {file.DATE} field falls between 1992 and 1996 (1992 and 1996 not included).»
Year({file.DATE}) >= 1992 and
Year({file.DATE}) <= 1996
«Selects those records where the year found in the {file.DATE} field falls between 1992 and 1996 (1992 and 1999 are included).»
Month({file.DATE}) in 1 to 4
«Selects those records in which the month found in the {file.DATE} field is one of the first four months of the year (includes January, February, March, and April).»
258 |
Seagate Crystal Reports User’s Guide |
Month({file.DATE}) in [1,4]
«Selects those records in which the month found in the {file.DATE} field is the first or fourth month of the year (includes January and April, excludes February and March).»
SELECTING RECORDS USING PRESET DATE RANGES
You can use preset date ranges to create selection formulas similar to these:
{file.DATE} in LastFullMonth
«Selects those records where the date found in the {file.DATE} field falls within the last full month. (If the month is May, this selects all records with an April date.)»
not({file.DATE} in LastFullMonth)
«Selects all records except those in which the date found in the {file.DATE} field falls within the last full month. (If the month is May, this selects all records except those with an April date.)»
{file.DATE} < Today
«Selects all records in which the date found in the {file.DATE} field falls before today's date.»
SELECTING RECORDS USING DATE/NUMBER/ CHARACTER COMBINATIONS
These formulas simply “mix and match” formulas from the categories above.
“C” in {file.FIELD}[1] and Month({file.DATE}) in [1,4]
«Selects those records in which the value in the {file.FIELD} field begins with “C” and the month is either January or April. For example, if this kind of formula was used with an order database, you could be asking for a report showing all customers whose names begin with “C” and who placed orders in January or in April.»
Record and Group Selection |
259 |
Selection
performance tips
“AOK” in {file.HISTORY}[3 to 5] and {file.OPENCRED} >= 5000
«Selects those records in which the {file.HISTORY} field shows the characters “AOK” as the 3, 4, and 5 characters and the {file.OPENCRED} field (the amount of available credit) is at least 5000.»
You can use these templates as is (with your own data), or combine them to create complex formulas, or you can use the principles illustrated here plus Seagate Crystal Reports online Help topics for functions and operators to create powerful selection formulas for yourself. Search for functions or operators by name in Seagate Crystal Reports online Help.
There are a number of performance-related items that you should consider when you are setting up your selection requests:
●Record selection will be faster if it is based on indexed fields instead of non-indexed fields. See Indexed tables, Page 518.
●If you have based record selection on indexed fields, make sure the Use Indexes or Server for Speed option is toggled on in the Report Options dialog box. Search for Report Options dialog box in Seagate Crystal Reports online Help.
●Avoid performing record selection based on formula fields if at all possible because it will result in less efficient reporting. For example, assume you have a formula field (@ExtendedPrice) in your report that returns the extended price of a line item (Quantity * Price). If you base your selection criteria on that formula (@ExtendedPrice > 1000, for example), the SQL server will not understand the formula so the program will not pass the selection criteria down to the server. Instead it will retrieve all of the records from the server, and then it will apply record selection on the client machine. This can tie up network resources and slow processing time considerably.
●Try to avoid subscript ranges such as:
{file.FIELD}[1 to 5]
260 |
Seagate Crystal Reports User’s Guide |
Record
selection with a group selection formula
The program parses selection formulas and converts anything it can to SQL so that the bulk of the work can be off-loaded to the SQL server. Because there is no SQL equivalent to subscript ranges, SQL pass through will not occur. Subscripting of only the first character works, but subscripting multiple characters does not. Search for Subscript in Seagate Crystal Reports online Help.
●When using SQL/ODBC data sources, if you are unsure if the record selection is passing through to SQL or not, check it by choosing the SHOW SQL QUERY command from the Database menu. If the SQL query does not have a WHERE statement or if the WHERE statement does not mention all of your fields that you are dealing with in your record selection, then you will need to work through the formula again since the translation did not occur properly.
¾Make sure you have logged on to your data source before choosing the SHOW SQL QUERY command from the Database menu.
¾SQL syntax will change with different drivers (ODBC or SQL) but the majority follow the Oracle SQL model as a guide. Consider the fact that your driver may use slightly different syntax. This is also the case for nonSQL databases.
●Do not perform any data type conversions in the record selection formula (for example, converting a number to a string using the ToText function). Such conversions can not be translated to SQL so SQL pass through will not occur. Search for ToText in Seagate Crystal Reports online Help.
If you need to perform record selection on indexed and nonindexed fields, you can set up your record selection in two steps to maximize performance. You do this by creating a record selection formula and a group selection formula, and using them both to select records. A little explanation is called for here.
The Group Selection Formula Editor has the same functionality as the Record Selection Formula Editor. While its primary use is for setting up group selection, it can be used to set up record selection as well.
Record and Group Selection |
261 |
While the two Formula Editors are fundamentally the same and the formulas they produce look the same, they each produce formulas that are evaluated at different times.
●The formulas from the Record Selection Formula Editor get evaluated as the program reads records.
●The formulas from the Group Selection Formula Editor get evaluated as the program is printing records. At this point, the only records that are saved with the report are those that passed record selection criteria.
Using this functionality:
●You set up record selection based exclusively on indexed fields in a record selection formula.
●You set up record selection based exclusively on nonindexed fields in a group selection formula.
Since the program runs record selection when it reads records and it runs group selection when it prints records, the following events occur:
●The record selection formula on the indexed fields quickly returns a subset of data from your database. For this example, lets say that it returns 5000 records out of 100,000 and saves them in a buffer.
●The group selection formula performs record selection but only on the subset of data (5000) records that is saved with the report.
You accomplish the same record selection but do it in a more efficient manner. With really big databases, this technique can save you significant processing time.
Related Topics
Formulas 101, Page 321
Advanced Formulas, Page 345
Search for Functions in Seagate Crystal Reports online Help.
Search for Operators and Variables in Seagate Crystal Reports online Help.
262 |
Seagate Crystal Reports User’s Guide |