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

&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

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