- •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
&Print the report and evaluate the data that prints with the two selectors activated. In your example, evaluate the data in the {customer.CONTACT LAST NAME} field (since you already evaluated {customer.POSTAL CODE} in the last step).
Does the {customer.CONTACT LAST NAME} field show only text strings beginning with the letter “C”?
●If it does, then you know that this part of the selection formula is working.
●If it does not, then troubleshoot this part of the selection formula.
'Once the selection formula with two selectors activated is working properly, add a third selector, then a fourth, etc., until you have tested each selector in the selection formula. By the time you have troubleshot the entire selection formula, you should have uncovered the source of your problem and the formula should be selecting records according to your wishes.
How to debug a formula
Follow the example below to practice the necessary steps to debug a formula. After completing this exercise, use the same principles to debug your own formula.
NOTE: This tutorial uses the CRAZE.MDB sample database located in the \CRW directory or the directory in which Seagate Crystal Reports was installed.
The following formula is the formula you will test for errors:
If ({customer.CUSTOMER NAME} [1 to 2 = “Bi” and ToText({customer,CUSTOMER ID}) [1] = “6”) Or ({customer.CUSTOMER NAME} [1] = 'Ro” and ToText({customer.CUSTOMER ID}) [1] = “5”)
“PREFERRED CUSTOMER” Else
“DOES NOT FIT CRITERIA”
370 |
Seagate Crystal Reports User’s Guide |
|
If correct, this formula should pick out all customers whose names |
|
begin with “Bi” and whose customer IDs begin with “6” and those |
|
companies whose names begin with “Ro” and whose customer |
|
IDs begin with “5”. When printing the field, those selections will |
|
read “PREFERRED CUSTOMER”, while the rest will read “DOES |
|
NOT FIT CRITERIA.” |
|
You will now break down the formula to check and see that each |
|
condition of the formula is working individually. |
Formula1 |
To get started, create a report using the Customer table in |
|
CRAZE.MDB and place the following fields from left to right |
|
in the Details section: |
|
{customer.CUSTOMER ID} |
|
{customer.CUSTOMER NAME} |
|
For each portion of the formula you will place a new formula |
|
field next to these two fields in the report to check the |
|
condition. |
|
Create a new formula called Formula1. |
|
! Type the following in the Formula text box of the Formula |
|
Editor: |
|
If {customer.CUSTOMER NAME} [1 to 2 = “Bi” |
|
Then |
|
“TRUE” |
|
Else |
|
“FALSE” |
|
" Click the Check button to test for errors. You will receive the |
|
following error message: |
|
The ] is missing. |
|
# Correct the formula by inserting the missing “ ] “ after the 2. |
|
$ Click the Check button again. You will receive the following |
|
message: |
|
No errors found. |
|
% Click Accept to return to the Insert Fields dialog box. |
Advanced Formulas |
371 |
&Place the corrected formula field to the right of the two data fields in the Details section of your report.
'Click the PRINT PREVIEW button on the standard toolbar to see the values in the report and compare the fields to see if the field values returned by @Formula1 are correct.
You will find “TRUE” listed next to the customer names that begin with “Bi” and “FALSE” next to all the others. Now you will check the other portions of the formula. Create Formula2, Formula3, and Formula4 following Steps 1 - 9 using the formulas specified below for each. Insert each formula field on the same line of the Details section for easy comparison. Check each one for errors, fix as needed, and make sure the values returned are correct before moving on to the next formula.
Formula2 |
Create a new formula called Formula2. |
Type the following in the Formula text box of the Formula
Editor:
If ToText({customer,CUSTOMER ID}) [1] = “6” Then
“TRUE” Else
“FALSE”
!Click the Check button to test for errors. You will receive the following error message:
This field name is not known.
"Correct the formula by replacing the comma (,) with a period
(.) in the field name.
#Click the Check button again. Your formula should now be error-free.
$ Place the formula to the right of the @Formula1 field.
%Click the PRINT PREVIEW button on the standard toolbar to see the values in the report and compare the fields to see if the field values returned by @Formula2 are correct.
You should see “TRUE” next to all customer numbers that begin with 6 and “FALSE” next to all customer numbers that do not begin with 6.
372 |
Seagate Crystal Reports User’s Guide |
Formula3 |
Create a new formula called Formula3. |
Type the following in the Formula text box of the Formula
Editor:
If {customer.CUSTOMER NAME} [1 to 2] = 'Ro” Then
“TRUE” Else
“FALSE”
!Click the Check button to test for errors. You will receive the following error message:
The matching ' for this string is missing.
"Correct the formula by changing the single quote (’) before Ro to a double quote (“).
#Click the Check button again. Your formula should now be error-free.
$ Place the formula to the right of the @ Formula2 field.
%Click the PRINT PREVIEW button on the standard toolbar to see the values in the report and compare the fields to see if the field values returned by @Formula3 are correct.
You should see “TRUE” next to all Customer names that begin with “Ro” and “FALSE” next to all Customer names that do not begin with “Ro”.
Formula4 |
Create a new formula called Formula4. |
Type the following in the Formula text box of the Formula
Editor:
If ToText({customer.CUSTOMER ID}) [1] = “5” “TRUE”
Else “FALSE”
!Click the Check button to test for errors. You will receive the following error message:
The word 'then' is missing.
Advanced Formulas |
373 |
"Correct the formula by typing in the word “Then” at the end of the first line after “5”.
#Click the Check button again. Your formula should now be error-free.
$ Place the formula to the right of the @Formula3 field.
%Click the PRINT PREVIEW button on the standard toolbar to see the values in the report and compare the fields to see if the field values returned by @Formula4 are correct.
You should see “TRUE” next to all Customer IDs that begin with 5 and “FALSE” next to all Customer IDs that do not begin with 5.
Now that the formulas are error-free and the field values returned are correct, you will create a formula that links the separate components together. You will begin by linking the first two formulas (@Formula1 and @Formula2) and then add @Formula3 and @Formula4 to create the final formula @FinalFormula.
Formula1+2 |
Create a new formula called Formula1+2. |
Type the following in the Formula text box of the Formula
Editor:
If {customer.CUSTOMER NAME} [1 to 2] = “Bi” and ToText({customer.CUSTOMER ID}) [1] = “6” Then
“TRUE” Else
“FALSE”
! Place the formula to the right of the @Formula4 field.
You should see “TRUE” next to each customer whose name begins with Bi and Id begins with 6, and “FALSE” next to all Customer IDs that do not meet this criteria.
If this formula is working correctly, you can create one last formula adding the code from @Formula3 and @Formula4.
FinalFormula |
Create a new formula called FinalFormula. |
Type the following in the Formula text box of the Formula
Editor:
374 |
Seagate Crystal Reports User’s Guide |
If ({customer.CUSTOMER NAME} [1 to 2] = “Bi” and ToText({customer.CUSTOMER ID}) [1] = “6”) or ({customer.CUSTOMER NAME} [1 to 2] = “Ro” and ToText({customer.CUSTOMER ID}) [1] = “5”) Then
“PREFERRED CUSTOMER” Else
“DOESN'T FIT CRITERIA”;
!Place the formula where you want it to appear in the Details section of your report. You can now delete all other formula fields from your report. See How to delete formulas from your report, Page 340.
Use this same process of condition-by-condition testing for any formulas as a means of systematically checking them.
Advanced Formulas |
375 |
376 |
Seagate Crystal Reports User’s Guide |
15 Advanced Totalling
What you will find in this chapter...
Introduction, Page 378
HANDS-ON (Advanced Totalling), Page 378
Advanced Totalling |
377 |