5.3.2. Функции RPTwin
5.3.2. Функции RPTwin
Функции RPTwin позволяют производить сложные вычисления и обработку данных отчета. Так же как и операторы, функции возвращают значение определенного типа. Для внесения функции в формулу можно дважды щелкнуть по функции в списке Functions диалога Formula Editor.
Агрегативные функции позволяют производить вычисления по нескольким строкам отчета. Некоторые функции (Sum, Avg, Min, Max, Count) выполняются контекстно, т. е. возвращают результат в зависимости от той секции отчета, в которой находятся. Например, если функция Sum(number) находится в секции Group Footer, она возвращает сумму, вычисленную по группе, если в Page Footer - то по странице. Другие агрегативные функции (GroupAvg GroupSum, GroupMin, GroupMax, GroupCount, ReportAvg, ReportCount, ReportMax, ReportMin, ReportSum) возвращают значение независимо от их расположения в отчете. Даже если функция ReportSum (number) находится в секции Group Footer, она возвращает сумму, вычисленную по всему отчету. Агрегативные функции группы, такие, как GroupAvg, вычисляют значения независимо от того, в какой секции текущей группы они расположены. Если такая функция располагается, например, в секции Report Footer, она вычисляет агрегативное значение по всему отчету.
RPTwin является двухпроходным (Two-Pass, другой термин - Look-Ahead) генератором отчетов. Это означает, что отчет выполняется в два этапа. На первом этапе просматриваются все данные и вычисляются значения функций. На втором этапе происходит непосредственно процесс печати или вывода на экран в режиме предварительного просмотра. Поэтому значения агрегативных функций Sum, Avg, Min, Мах, Count будут вычисляться одинаково, независимо от того, расположены ли они в секции Footer или Header.
Полный список функций RPTwin (версии 3.02) приведен в табл. 5.3.
Таблица 5.3. Функции RPTwin
Функция Возвращаемое значение Abs(number) Абсолютное значение аргумента Age(date) Полное число лет от даты аргумента до сегодняшнего числа Avg(numbcr) Среднее значение аргумента по строкам (контекстно) Cos(number) Косинус аргумента Count() Количество строк (контекстно) DateQ Дата выполнения отчета DateTime() Дата и время выполнения отчета DayName(date) Наименование дня даты недели аргумента (по-английски), например "Saturday" DayNameAbr(date) Сокращенное наименование дня недели даты аргумента (по-английски), например "Sat" DayOfMonth(date) Число - день месяца даты аргумента DayOfWeek(date) Число - день недели даты аргумента, например воскресенье - 1, суббота - 7 DayOfYear(date) Число - день года DayBetween(datel, date2) Число - количество дней между двумя датами аргументов GroupAvg(number) Среднее значение аргумента по группе GroupCount(number) Количество строк в группе GroupMax(number) Максимальное значение аргумента по группе GroupMin(number) Минимальное значение аргумента по группе GroupSum(number) Сумма аргумента по группе Hour(time) Часы (0-23) даты аргумента If test Then value 1 [Else value2 Условный оператор. Test - логический предикат, принимающий значение "Истина" или "Ложь". Если Test = "Истина", выполняется выражение value 1, если "Ложь" - value2 InitCap(text) Текст аргумента, все символы которого в нижнем регистре, за исключением первых символов слов, например InitCap("aRRoW naMe") возвращает "Arrow Name" Lcase(text) Текст аргумента, все символы которого в нижнем регистре Leftftext, number) Первые символы слева текста первого аргумента. Количество символов указывается во втором аргументе LTrim(text) Текст аргумента без символов пробела слева (если таковые имелись) MakeDate(MM,DD,YY) Дата, сгенерированная по трем числам, например MakeDate(l,2,1999) возвращает 2 января 1999 года MakeMoney(number) Тип money, конвертированный из аргумента number MakeTime(HH,MI,SS) Время, сгенерированное по трем числам - часы, минуты, секунды Max(number) Максимальное значение аргумента по строкам (контекстно) Mid(text, number 1, number2) Подстрока первого аргумента, начиная с позиции numberi и включая number2 символов Min(number) Минимальное значение аргумента по строкам (контекстно) Minite(time) Количество минут времени аргумента (0-59) Mod(numberl,number2) Остаток от деления первого аргумента на второй, например Mod(7,3) возвращает 1 Month(date) Порядковый номер месяца даты аргумента (1-12) MonthName(date) Наименование месяца даты аргумента (по-английски), например "April" MonthNameAbr(date) Сокращенное наименование месяца даты аргумента (по-английски), например "Арг" PageNum() Номер страницы Quarter(date) Квартал даты аргумента (1 -4) RecNum() Номер строки отчета Replace(mainText, oldText, newText) Замена символов в строке mainText - старого фрагмента oldText на новый newText ReportAvg(number) Среднее значение аргумента по отчету ReportCount(number) Количество строк в отчете ReportCumAvg(number) Среднее значение аргумента, вычисляемое контекстно. Если ReportCumAvg расположена в секции Detail, функция будет возвращать среднее значение аргумента всех вышестоящих строк отчета ReportCumMax(number) Максимальное значение аргумента, вычисляемое контекстно. Вычисляется аналогично ReportCumAvg ReportCumMin(number) Минимальное значение аргумента, вычисляемое контекстно. Вычисляется аналогично ReportCumAvg ReportCumSum(number) Сумма аргумента, вычисляемая контекстно. Вычисляется аналогично ReportCumAvg ReportMax(number) Максимальное значение аргумента по отчету ReportMin(number) Минимальное значение аргумента по отчету ReportSum(number) Сумма аргумента по отчету Right(mainText, number) Первые символы справа текста первого аргумента. Количество символов указывается во втором аргументе Round(numberTo Round, precisionNumber) Округленное значение первого аргумента. Во втором аргументе указывается точность округления, например Round(12345,500) возвращает 12500 RTrim(text) Текст аргумента без символов пробела справа (если таковые имелись) Second(time) Количество секунд времени аргумента (0-59) Sign(number) 1, если аргумент положительный, 0, если равен нулю и -1, если аргумент отрицательный Sin(number) Синус аргумента Sum(number) Сумма значений аргумента по строкам (контекстно) Tan(number) Тангенс аргумента Time() Текущее время ToDate(text, fonnat) Дата, конвертированная из текстовой строки. Второй аргумент указывает формат даты ToNumber(text) Число, конвертированное из текстовой строки ToText(date, foirnat) Текст, конвертированный из даты. Второй аргумент указывает формат даты Trim(text) Текст аргумента без "лишних" символов пробела. Удаляются пробелы перед строкой и после строки аргумента; если пробелов подряд более двух, оставляется только один Trunc(number, precision) Округленный первый аргумент с отбрасыванием остатка. Во втором аргументе указывается точность округления Ucase(text) Текст аргумента, все символы которого в верхнем регистре Week(date) Порядковый номер недели (в году) даты аргумента (1-54) Year(date) Год даты аргумента YearsBetween(datel, date2) Количество лет между датами первого и второго аргумента