Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CRW_REF.PDF
Скачиваний:
5
Добавлен:
13.02.2015
Размер:
13.99 Mб
Скачать

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]