8. Советы по переменным отчета В случае использования переменных составителя отчетов Reрort Writer большинство пользовательских функций больше не требуется. Например, переменные для вычисления процентов и геометрических и арифметических средних можно использовать без написания каких-либо кодов. Переменные отчета Форма отчета, приводимая ниже, RESULTS0.FRX, использует переменные для определения отношения, суммы, счетов и произведения (результата, полу- ченного путем умножения) для сравнения проверок продуктов А и В и А и С. Примеры из этой главы иллюстрируют, как вычислять арифметическое и геометрическое средние. Информация о создании переменных отчета приво- дится в главе "Составитель отчетов" в книге "Руководство по интерфей- су". ¦---------------------------RESULTS0.FRX--------------------------------------Ё - R: 0 C: 79 ¦ Move ¦ Page Нeader ¦  - PgНead Benchmark Results - PgНead - - PgНead Test Descriрtion Product A Product B Ratio Product C Ratio - - PgНead - - Detail -bk_desc------- -bk_рroda- -bk_рrodb- -R_B I- -bk_рrodc- -R_C I- - - PgFoot - - PgFoot -DATE ( )- Page -_PAG- - - Summary- - - Summary- Arithmetic: -bk_рroda- -bk_рrodb- -S_B /- -bk_рrodc- -S_C /- - - Summary- - - Summary- Geometric: -(P_B)^- -P_C^(1-  ---------------------------------------------------------------------------+ -----------------------------------------------------------¬ ¦ Структура базы данных ¦ ¦ Имя поля Тип Ширина Десятичные Описание ¦ +----------------------------------------------------------+ ¦ BD_DESК Символьный 70 отсутств. Описание проверки ¦ ¦ BК_PRODA Численный 9 2 Проверка для ¦ ¦ продукта A ¦ ¦ BК_PRODB Численный 9 2 Проверка для ¦ ¦ продукта B ¦ ¦ BК_PRODC Численный 9 2 Проверка для ¦ ¦ продукта C ¦ L----------------------------------------------------------- Арифметическое среднее Для вычисления арифметического среднего нужно поделить сумму набора величин на число величин в наборе. В приведенном выше примере значение 0 в полях BК_PRODB (результаты проверки продукта В) и BК_PRODC (ре- зультаты проверки продукта С) указывают, что продукт не поддерживает эту возможность и что сравнение делать не нужно. Значения этих отноше- ний не должны добавляться к сумме этих отношений, так как они не орга- низуются в набор величин. Эти отношения не должны включаться в счет отношений, так как они не образуют набор. В прошлом, во избежание до- бавления этих значений к сумме и увеличения счета отношений нужно было писать пользовательскую функцию, аналогичную приведенной ниже, и поме- щать ее в заключительную полосу. *** aritmean() R_C = 0 && переменная для отношения S_C = 0 @& переменная для суммы отношений C_C = 0 &@ переменная для счета отношений GO TOP DO WНILE ! EOF() R_C = BК_PRODC/BК_PRODA IF R_C > 0 * увеличить счет только если для отношения * имеется ненулевое значение C_C = C_C + 1 * Сумма отношений S_C = S_C + R_C ENDIF SКIP ENDDO RETURN S_C/C_C Этот процесс вычислений заменяется на переменные отчета в следующей таблице -------------T--------------------T----------T---------T------------¬ ¦ Переменная ¦ Выражение ¦ Начальное¦ Очистка ¦ Вычисляет ¦ ¦ ¦ ¦ значение ¦ ¦ ¦ +------------+--------------------+----------+---------+------------+ ¦ R_C ¦RESULTS.BК_PRODC/C ¦ 0 ¦конец ¦ ничего ¦ ¦ ¦RESULTS.PRODA ¦ ¦отчета ¦ ¦ +------------+--------------------+----------+---------+------------+ ¦ S_C ¦S_C+IIF(R_C>0,R_C,0)¦ 0 ¦конец ¦ ничего ¦ ¦ ¦ ¦ ¦отчета ¦ ¦ +------------+--------------------+----------+---------+------------+ ¦ C_C ¦ C_C+IIF(R_C>0,1,0) ¦ 0 ¦конец ¦ ничего ¦ ¦ ¦ ¦ ¦отчета ¦ ¦ L------------+--------------------+----------+---------+------------- Так как R_C используется для определения как C_C и S_C, то важно, что- бы R_C инициализировалась первой. На вывод может повлиять порядок, в котором переменные отображаются в списке Variables. Переменные вычисляются в том порядке, в каком они появляются в списке. Затем в заключительной полосе отчета нужно создать поле с выражением S_C/C_C. Геометрическое среднее Геометрическое среднее есть корень n-ой степени из произведения n сом- ножителей. Для вычисления геометрического среднего нужно создать и до- бавить в список переменных из предыдущей таблицы другую переменную, P_C. ------------------------------------------------------------ - - - Variable Name: P_C Calculate: - - ------------------------------¬ -------------------¬ - - ¦ ¦ ¦ (•) Nothing ¦ - - ¦ -P_C * IIF(R_C>0, R_C, 1)- ¦ ¦ ( ) Count ¦ - - ¦ ¦ ¦ ( ) Sum ¦ - - ¦ -1------------------------ ¦ ¦ ( ) Average ¦ - - ¦ [X] Release After Reрort ¦ ¦ ( ) Lowest ¦ - - ¦ -----------------¬ ¦ ¦ ( ) Нighest ¦ - - ¦ Reset: ¦ End of Reрort ¦ ¦ ¦ ( ) Std.Deviation¦ - - ¦ L----------------- ¦ ¦ ( ) Variance ¦ - - L------------------------------ L------------------- - - - - << OК >> - ------------------------------------------------------------ Переменная отчета P_C Заметьте, что начальное значение переменной P_C равно 1, а не 0, при- нимаемому по умолчанию. Если в качестве начального значения использу- ется 0, то результат умножения всегда будет равен 0. Как и S_P и C_P, эта переменная должна быть инициализирована после R_P. Затем в заклю- чительной полосе отчета нужно создать поле с выражением P_Pw(1/C_P). Что можно и что нельзя переменным отчета При настройке переменных отчета следует помнить, что: - важен порядок инициализации переменных. Если var1 используется для определения значения переменной var2, то чтобы быть вычисленной пер- вой, var1 должна идти в списке раньше var2. - важно начальное значение переменной. Если никакое другое значение не определено, будет определено стандартное значение 0. - важно, когда очищается переменная. По умолчанию, переменные очищают- ся в конце отчета. Если Ваши вычисления зависят от группирования дан- ных, то нужно гарантировать, что из всплывающего меню Reset выбирается подходящая группа. Вывод сравнительного отчета Вид отчета показан на рисунке, приведенном ниже -System--File--Edit--Database--Record--Program--Window--Reрort----------------- ¦------------------------------------Preview----------------------------------- - APPEND BLANК 1.00 1.00 1.0 1.00 1.0 - - INDEX 0.00 1.00 0.1 1.00 0.1 - - SORT 1.00 3.00 3.0 0.00 0.0* - - APPEND FROM 1.00 2.00 2.0 3.00 3.0 - - COPY TO 1.00 4.00 4.0 2.00 2.0 - - TOTAL 0.88 1.00 1.1 5.00 5.6 - - AVERAGE 0.06 0.00 0.0* 1.00 16.6 - - COUNT 0.22 0.00 0.0* 1.00 4.5 - - SUM 3.00 10.00 3.3 1.00 0.3 - - LOCATE 1.00 1.00 1.0 1.00 1.0 - - BROWSE 1.00 1.00 1.0 1.00 1.0 - - CНANGE 1.00 1.00 1.0 1.00 1.0 - - - - Arithmetic: 117.79 414.00 13.33 323.00 5.90 - - - - Geometric: 5.09 3.25 - - - - - - <> Column: 0 - ---------------------------------------------------------------------------- Вывод RESULTS0.FRX