Функции 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)
| Количество лет между датами первого и второго аргумента
|