Функции 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, Max, Count будут вычисляться оди-
наково, независимо от того, расположены ли они в секции Footer или
Header.
Полный список функций RPTwin приведен в табл. 3. 2. 3.
Таблица 3. 2. 3. Функции RPTwin
| Функция
| Возвращаемое значение
|
| Abs(number)
| Абсолютное значение аргумента
|
| Age(date)
| Полное число лет от даты аргумента до сегодняшнего числа
|
| Avg(number)
| Среднее значение аргумента по строкам (кон- текстно)
|
| Cos(number)
| Косинус аргумента
|
| Count()
| Количество строк (контекстно)
|
| Date()
| Дата выполнения отчета
|
| DateTime()
| Дата и время выполнения отчета
|
| DayName(date)
| Наименование дня даты недели аргумента (по- английски), например "Saturday"
|
| DayNameAbr(date)
| Сокращенное наименование дня недели даты аргумента (по-английски), например "Sat"
|
| DayOfMonth(date)
| Число - день месяца даты аргумента
|
| DayOfWeek(date)
| Число - день недели даты аргумента, например воскресенье - 1, суббота - 7
|
| DayOfYear(date)
| Число - день года
|
| DayBetween(date1, date2)
| Число - количество дней между двумя датами аргумента
|
| GroupAvg(number)
| Среднее значение аргумента по группе
|
| GroupCount(number)
| Количество строк в группе
|
| GroupMax(number)
| Максимальное значение аргумента по группе
|
| GroupMin(number)
| Минимальное значение аргумента по группе
|
| GroupSum(number)
| Сумма аргумента по группе
|
| Hour(time)
| Часы (0-23) даты аргумента
|
| If test Then value [Else value2]
| Условный оператор. Test - логический предикат, принимающий значение "Истина" или "Ложь". Если Test = "Истина", выполняется выражение value1, если "Ложь" - value2
|
| InitCap(text)
| Текст аргумента, все символы которого в нижнем регистре, за исключением первых символов слов, например InitCap("aRRoW naMe") возвращает "Arrow Name"
|
| Функция
| Возвращаемое значение
|
| Lcase(text)
| Текст аргумента, все символы которого в нижнем регистре
|
| Left(text, number)
| Первые символы слева от текста первого аргу- мента. Количество символов указывается во втором аргументе
|
| LTrim(text)
| Текст аргумента без символов пробела слева (если таковые имелись)
|
| MakeDate(MM, DD, YY)
| Дата, сгенерированная по трем числам, напри- мер MakeDate(1, 2, 1999) возвращает 2 января 1999 года
|
| MakeMoney(number)
| Тип money, конвертированный из аргумента number
|
| MakeTime(HH, MI, SS)
| Время, сгенерированное по трем числам - часы, минуты, секунды
|
| Max(number)
| Максимальное значение аргумента по строкам (контекстно)
|
| Mid(text, number1, number2)
| Подстрока первого аргумента, начиная
с позиции number1 и включая number2 символов
|
| Min(number)
| Минимальное значение аргумента по строкам (контекстно)
|
| Minite(time)
| Количество минут аргумента (0-59)
|
| Mod(numberl, number2)
| Остаток от деления первого аргумента
на второй, например Mod(7, 3) возвращает 1
|
| Month(date)
| Порядковый номер месяца даты аргумента (1-12)
|
| MonthName(date)
| Наименование месяца даты аргумента (по- английски), например "April"
|
| MonthNameAbr(date)
| Сокращенное наименование месяца даты аргу- мента (по-английски), например "Apr"
|
| 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(numberToRound, 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, format)
| Дата, конвертированная из текстовой строки. Второй аргумент указывает формат даты
|
| ToNumber(text)
| Число, конвертированное из текстовой строки
|
| Функция
| Возвращаемое значение
|
| ToText(date, format)
| Текст, конвертированный из даты. Второй аргумент указывает формат даты
|
| Trim(text)
| Текст аргумента без "лишних" символов пробе- ла. Удаляются пробелы перед строкой и после строки аргумента; если пробелов подряд более двух, оставляется только один
|
| Trunc(number, precision)
| Округленный первый аргумент с отбрасыванием остатка. Во втором аргументе указывается точ- ность округления
|
| Ucase(text)
| Текст аргумента, все символы которого в верхнем регистре
|
| Week(date)
| Порядковый номер недели (в году) даты аргу- мента (1-54)
|
| Year(date)
| Год даты аргумента
|
| YearsBetween(date1, date2)
| Количество лет между датами первого и второго аргумента
|