- •Case-средства разработки информационных систем
- •Предисловие
- •Введение
- •1. Создание модели процессов в bPwin
- •1.1. Инструментальная среда bPwin
- •1.2. Методология idefo
- •1.2.1. Принципы построения модели idefo
- •1.2.2. Работы (Activity)
- •1.2.3. Стрелки (Arrow)
- •1.2.4. Нумерация работ и диаграмм
- •1.2.5. Диаграммы дерева узлов и feo
- •1 Рис. 1.28. Пример диаграммы декомпозиции с каркасом .2.6. Каркас диаграммы
- •1.2.7. Слияние и расщепление моделей
- •1.2.8. Рекомендации по рисованию диаграмм
- •1.2.9. Проведение экспертизы
- •1.3. Создание отчетов в bPwin
- •1.4. Стоимостный анализ (abc) и свойства, определяемые пользователем (udp)
- •1.5. Дополнение созданной модели процессов диаграммами dfd и Workflow (idef3)
- •1.5.1. Диаграммы потоков данных (Data Flow Diagramming)
- •1.5.2. Метод описания процессов idef3
- •1.5.3. Имитационное моделирование
- •2. Создание модели данных с помощью eRwin
- •2.1. Отображение модели данных в eRwin
- •2.1.1. Физическая и логическая модель данных
- •2.1.2. Интерфейс eRwin. Уровни отображения модели
- •2.1.3. Подмножества модели и сохраняемые отображения
- •2.2. Создание логической модели данных
- •2.2.1. Уровни логической модели
- •2.2.2. Сущности и атрибуты
- •2.2.3. Связи
- •2.2.4. Типы сущностей и иерархия наследования
- •2.2.5. Ключи
- •1. Табельный номер',
- •2. Номер паспорта',
- •2.2.6. Нормализация данных
- •2.2.7. Домены
- •2.3. Создание физической модели данных
- •2.3.1. Уровни физической модели
- •2 Рис. 2.60. Диалог Target Server .3.2. Выбор сервера
- •2.3.3. Таблицы, колонки и представления (view)
- •2.3.4. Правила валидации и значения по умолчанию
- •2.3.5. Индексы
- •2.3.6. Задание объектов физической памяти
- •2.3.7. Триггеры и хранимые процедуры
- •2.3.8. Проектирование хранилищ данных
- •2.3.9. Вычисление размера бд
- •2.3.10. Прямое и обратное проектирование
- •2.4. Генерация кода клиентской части с помощью eRwin
- •2.4.1. Расширенные атрибуты
- •2.4.2. Генерация кода в Visual Basic
- •2.4.3. Генерация кода в Power Builder
- •2.5. Создание отчетов в eRwin
- •2.5.1. Интерфейс Report Browser
- •2.5.2 Создание нового отчета
- •2.6. Словари eRwin
- •2.6.1. Генерация словаря eRwin
- •2.6.2. Использование словаря eRwin
- •3. Связывание модели процессов и модели данных
- •3.1. Соответствие модели данных и модели процессов
- •3.2. Экспорт данных из eRwin в bPwin и связывание объектов модели данных со стрелками и работами
- •3.3. Создание сущностей и атрибутов bPwin и их экспорт в eRwin
- •4. Групповая разработка моделей данных и моделей процессов с помощью platinum Model Mart
- •4.1. Инсталляция ModelMart
- •4.2. Администрирование ModelMart
- •4.3. Использование репозотория ModelMart
- •5. Создание объектной модели и ее связывание с моделью данных при помощи eRwin Translation Wizard
- •5.1. Язык uml
- •5.2. Создание модели данных на основе объектной модели с помощью eRwin Translation Wizard
- •6. Создание качественных отчетов с помощью rpTwin
- •6.1. Создание простейших отчетов в rpTwin
- •6.1.1. Создание нового отчета
- •6.1.2. Инструментальная среда rpTwin
- •6.2. Форматирование отчетов
- •6.2.1. Вставка и форматирование объектов отчета
- •6.2.2. Группировка и сортировка данных отчета
- •6.2.3. Изменение файла данных отчета
- •6.2.4. Изменение свойств отчета
- •6.3. Использование формул rpTwin
- •6.3.1. Создание формул rpTwin
- •6.3.2. Функции rpTwin
- •6.3.3. Использование формул rpTwin
- •Ресурсы, необходимые для изготовления изделия
- •Приложение. Список макрокоманд eRwin
6.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, Max, Count будут вычисляться одинаково, независимо от того, расположены ли они в секции Footer или Header.
Полный список функций RPTwin (версии 3.02) приведен в табл. 6.3.
Таблица 6.3. Функции RPTwin
Функция |
Возвращаемое значение |
Abs(number) |
Абсолютное значение аргумента |
Age(date) |
Полное число лет от даты аргумента до сегодняшнего числа |
Avg(number) |
Среднее значение аргумента по строкам (контекстно) |
Cos(number) |
Косинус аргумента |
CountQ |
Количество строк (контекстно) |
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 valuel [Else value2\ |
Условный оператор. Test - логический предикат, принимающий значение "Истина" или "Ложь". Если Test = "Истина", выполняется выражение valuel, если "Ложь" - 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, numberl, number!) |
Подстрока первого аргумента, начиная с позиции numberl и включая 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(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, format) |
Дата, конвертированная из текстовой строки. Второй аргумент указывает формат даты |
ToNumber(text) |
Число, конвертированное из текстовой строки |
ToText(date, format) |
Текст, конвертированный из даты. Второй аргумент указывает формат даты |
Trim(text) |
Текст аргумента без "лишних" символов пробела. Удаляются пробелы перед строкой и после строки аргумента; если пробелов подряд более двух, оставляется только один |
Trunc(number, precision) |
Округленный первый аргумент с отбрасыванием остатка. Во втором аргументе указывается точность округления |
Ucase(text) |
Текст аргумента, все символы которого в верхнем регистре |
Week(date) |
Порядковый номер недели (в году) даты аргумента (1-54) |
Year(date) |
Год даты аргумента |
YearsBetween(datel, date2) |
Количество лет между датами первого и второго аргумента |
