Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв БД 2013-06-02.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
26.54 Mб
Скачать

Р ис. 2.10.2. Окно установки контроля целостности связей

Закроем с сохранением окно конструктора базы данных (^W). Вы­бе­рем в проекте нужную таблицу, например “Типы изделий” (реко­мен­дуется на­чать с родительских таблиц), и вы­зо­вем окно Brow­se одноименной кнопкой для заполнения таблицы. Меню Table содержит ко­ман­ды обра­бот­ки таблицы. Итак, заполним все таблицы в последовательности: “Ти­пы из­де­лий”, “Изделия”, “Подразделения”, “Выпуск изделий” (рисунок 2.11.2.2).

2.11. Представления (View)

Описание представлений хранится в базе данных. Представления от­кры­­ваются аналогично таблицам, су­щест­вуют в оперативной па­мя­ти на момент их выполнения, создавая види­мость их физического сущест­во­ва­ния в базе данных наравне с таблицами ба­зы. Их можно свя­зы­вать и ин­дек­сировать без сохранения индексного файла. Поэтому их часто на­зы­ва­ют виртуальными таблицами ба­зы. Они фор­ми­руются и используются ана­ло­гично запросам, но могут использоваться наравне с таб­лицами в ка­чест­ве ис­ход­ных таблиц при формировании представ­лений, запросов, форм отчетов и могут использо­вать­ся для кор­рек­тировки таблиц базы данных.

Р екомендации. Обычно вначале создается базовое пред­став­ле­ние, которое вклю­ча­ет в себя все поля базы и рас­­четные поля, которые от­сутствуют в базе, но их зна­че­ния можно сформировать функ­ция­ми пользователя или выражениями. Таким образом, разработчик работает с одной виртуальной таблицей вмес­то множества различных таблиц и с однократно заданными расчет­ны­ми полями, что существенно упрощает и ускоряет работу.

Представление можно создать командой Create SQL View (с ос­нов­ной фразой Select, аналогичной команде создания запроса Select ‑ SQL) или ви­зуаль­ными средствами мастера или конструктора представлений.

2.11.1. Мастер представлений

Мастер представлений вызывается из раздела Local Views командой New/View Wizard. Рассмотрим шаги сценария мастера View Wizard.

Step 1 ‑ Select Fields. Выбор таблиц и их полей, включаемых в представ­ле­ние.

Step 2 ‑ Relate Tables. Установка связей между таблицами и добав­ле­ние их в представление кнопкой Add.

Step 2aInclude Records. Установка правила включения записей из исходных таблиц или представлений.

Step 3 ‑ Filter Records. Установка условий отбора записей.

Step 4 ‑ Sort Records. Установка полей сортировки записей.

Step 4aLimit Records. Установка мини­маль­но­го числа записей (в абсолютном или в процентном отношении) вклю­ча­емых в представление. Кноп­кой Preview можно предвари­тель­но просмотреть представление, и, ес­ли оно не устраивает пользователя, то можно вернуться на нужный шаг, ис­пользуя кнопку Back.

Step 5 ‑ Finish. Уста­но­вка варианта продолжения работы, нажатие кноп­ки Finish и указание имени сохраняемого представления.

2.11.2. Конструктор представлений

Рассмотрим процесс создания базового пред­став­ления, которое включает в себя все поля базы (всех четырех таблиц, за исключением полей с кодами изделий, подразделений и типами изделий из таблиц “Изделия”, “Подразделения” и “Типы изделий” соответственно) и рас­­чет­ное поле “Затраты” с затратами: произведение себестоимости (SI) на коли­чест­во выпущенных изделий (KVI).

  1. Вызываем конструктор представлений из раздела Local Views ко­ман­­дой New/New View.

  2. Из окна Add Table or View перенесем все таблицы в пред­став­ле­ние и закроем это окно.

  3. На странице Fields выберем поля: выпуск_изде­лий.kp, подразделения.np, изделия.kti, типы_изделий.nti, выпуск_изде­лий.ki, изделия.ni, выпуск_изделий.dvi, выпуск_изделий.kvi, выпуск_из­де­лий.si.

  4. В поле Functions And Expressions сформируем (используя кнопку с троеточием для вызова построителя выражений) выражение расчета затрат на выпуск изделий: выпуск_изделий.si * выпуск_изделий.kvi As Затраты. Фраза As задает наименование колонки представления или за­п­роса (допускаются только буквы, цифры и знаки подчеркивания и выво­дят­ся только первые десять символов). Перенесем это выражение кнопкой Add в представление.

  5. Нажмем кнопку Properties и для каждого поля представления ука­жем наиме­но­ва­ние в поле Caption окна View Field Properties (рисунок 2.10.1).

  6. С траница Join задает связи между таблицами.

Внимание! Все постоянные (указанные при создании базы) связи между таблицами нужно уда­лить: выделить связь и нажать кла­ви­шу Del. Иначе в представлении будут тиражироваться записи (видимо, это ошибка Visual FoxPro!).

  1. С траница Filter задает условия отбора записей и связи таблиц. Сформируем условия связи, перетаскивая мышкой поля (рисунок 2.11.2.1).

Рис. 2.11.2.1. Окно конструктора представлений со страницей Filter

В результате появятся линии связей между таблицами. При задании условий можно использовать параметры, которые объявляются командой Query/View Parameters. Перед именем параметра в условии указывается знак вопроса, а значение вводится по запросу при выполнении представ­ле­ния или задается перед его выполнением.

  1. На странице Order By выберем поля сортировки: Kp, Kti, Ki, Dvi.

  2. На странице Group By выбираются поля группировки. Например, для формирования итогового запроса числа выпущенных изделий по подразделениям, типам изделий и по изделиям нужно указать поля Kp, Kti, Ki, а на странице Fields указать эти поля и вычисляемое поле SUM(Kvi).

В нашем запросе группировка отсутствует.

  1. На странице Update Criteria задаются параметры корректировки исходных таблиц представления. Нужно выделить ключевые поля, отме­тить корректируемые поля (если корректируются все поля, то можно на­жать кнопку Update All) и установить флажок Send SQL Updates. В на­шем примере эту страницу не будем заполнять (установим режим чтения).

  2. На странице Miscellaneous задаются дополнительные параметры: блокировка вывода дубликатов и число выводимых записей. Допол­ни­тель­ные параметры можно установить командой Query/Advanced Options.

  3. Нажмем кнопку Run для проверки представления (рисунок 2.11.2.2).

Рис. 2.11.2.2. Окно просмотра базового представления

  1. Закончим формирование представления и сохраним его под име­нем “Базовое представление”.

Пример программы вызова базового представления.

Open Database “Выпуск изделий Уралмашем“ &&открытие базы данных

Use “базовое представление“ && открытие представления

Browse && вывод представления на экран

Close Database && закрытие базы данных

Пример создания итогового представления.

Итоговое пред­став­ление содержит поля с наименованием изделия и суммой выпущенных изделий и затрат на их производство.

Рассмотрим шаги создания итогового представления.

  1. Вызываем конструктор представлений из раздела Local Views ко­ман­­дой New/New View.

  2. Из окна Add Table or View нажмем кнопку View и выберем базо­вое представление.

  3. На странице Fields выберем в представлении поле с наименова­ни­ем изделия (Ni).

  4. В поле Functions and Expressions сформируем (используя кнопку с троеточием для вызова построителя выражений) выражение подсчета итогового количества выпущенных изделий: SUM(Базовое_представле­ние.kvi) As Количество. Перенесем это выражение кнопкой Add в пред­став­­ле­ние. Аналогично сформируем выражение подсчета итоговых затрат на изделия: SUM(Базовое_представ­ле­ние.зат­ра­ты) As Затраты.

  5. Нажмем кнопку Properties и для поля Ni ука­жем наиме­но­ва­ние “Изделие” в поле Caption окна View Field Properties (рисунок 2.10.1).

  6. На странице Order By выберем поле сортировки Ni.

  7. На странице Group By выберем поле группировки Ni.

  8. Нажмем кнопку Run для проверки представления (рисунок 2.11.2.3).

  9. З акончим формирование представления и сохраним его под име­нем “Итоговое количество и затраты на выпуск изделий”.

Рис. 2.11.2.3. Окно просмотра итогового представления

Команда Select формирования этого запроса имеет вид:

SELECT Базовое_представление.ni,;

SUM(Базовое_представление.kvi) AS Количество,;

SUM(Базовое_представление.затраты) AS Затраты;

FROM “Выпуск изделий Уралмашем!базовое представление“;

Базовое_представление;

GROUP BY Базовое_представление.ni;

ORDER BY Базовое_представление.ni