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

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

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