
- •5 Работа в системе visual foxpro
- •5.1 Базовые концепции Visual FoxPro
- •5.1.1 Общая характеристика субд
- •5.1.2 Элементы проекта
- •5.1.3 ИнтерфейсVisualFoxProи создание проекта
- •5.1.4 Принципы создания проекта и его основных компонентов
- •5.1.5 Создание базы данных, таблиц и индексов
- •5.1.5.1 Создание базы данных
- •5.1.5.2 Создание таблиц
- •5.1.5.3 Типы данных вVisualFoxPro
- •5.1.5.4Создание индексов вVisualFoxPro
- •5.1.6 Организация межтабличных связей
- •5.1.7 Обеспечение целостности данных
- •5.2 Извлечение и представление информации средствами интерфейсаVisualFoxPro
- •5.2.1 Средства формирования запросов
- •5.2.2 Организация многотабличных запросов и вычисляемого поля
- •5.2.3 Представление результатов запросов
- •Основы программирования вVisualFoxPro
- •5.3.1 Общие положения и соглашения о синтаксисе команд
- •5.3.2 Разновидности, объявление, инициализация и отображение переменных и массивов
- •5.3.3 Взаимодействие программ вVisualFoxPro
- •5.3.4 Команды структурного программирования
- •5.3.5 Команды обработки особых ситуаций
- •5.3.6 Команды установки программной среды
- •5.3.7 Некоторые важные функции языкаVisualFoxPro
- •5.3.8 Визуальное объектно-ориентированное программирование в Visual FoxPro
- •5.3.8.1 Базовые понятия
- •5.3.8.2 Создание объектов на основе базовых классов и задание свойств объектов
- •5.3.8.3 Определение событий и методов для объектов класса
- •5.3.8.4 Вложенность объектов
- •5.3.9 Команды для работы с меню
- •5.3.10 Пример совместного использование программных файлов, формы и меню
5.2.2 Организация многотабличных запросов и вычисляемого поля
Для формирования многотабличного запроса необходимо разместить в окне Конструктора запросов все участвующие в запросе таблицы и определить условия их связи. Вместе с таблицами в окне Конструктора запросов отображаются и их постоянные связи. Если необходимые постоянные связи отсутствуют, то с помощью вкладки Join (связь) организуются временные межтабличные связи.
В окне Конструктора запросов можно добавить нужные таблицы, например, с помощью команды Query → Add Table. При этом в появившемся диалоговом окне Add Table or View выбирается требуемая таблица. В результате образ таблицы появляется в окне Конструктора запросов.
Если при создании БД между выбранными таблицами были установлены постоянные связи, то они будут также представлены, во-первых, в виде линий соединяющих соответствующие поля в образах этих таблиц (верхняя часть рис.5.15), а во-вторых — во вкладке Join добавятся соответствующие строки с условиями объединения таблиц.
Рис. 5.15 Окно многотабличного запроса с выбранной вкладкой Join
Если постоянных связей между выбранными таблицами ранее установлено не было, то открывается диалоговое окно Join Condition (условие связи), служащее для установления или модификации связи (рис. 5.16) В связи с тем, что в рассматриваемом примере имеются постоянные связи между выбранными таблицами, то окно Join Condition.было вызвано двойным щелчком мыши на выбранной линии, связывающей таблицы по полю dolgn. Этот прием используется также при модификации типа связи.
Тип связи модифицируется или задается с помощью переключателя Туре of join (тип связи) рассматриваемого окна. В левой и правой частях окна содержатся раскрывающиеся списки полей двух таблиц, с помощью которых выбираются поля для связи таблиц. Обычно используют предлагаемую по умолчанию опцию Inner Jоin (внутренняя связь). В этом случае создается объединение, в которое выбираются записи, содержащие совпадающие значения в полях связи.
Рис. 5.16. Oкно Join Condition
Замечание.
Для установления временных связей возможно использование любых полей таблиц без ограничений, имеющих место при установке постоянных межтабличных связей.
В качестве полей результирующей таблицы могут использоваться вычисляемые поля. Вычисляемое поле представляет собой выражение, включающее одно или несколько полей исходной таблицы, константы и функции, соединенные операторами. Для включения в запрос вычисляемого поля необходимо выбрать вкладку Fields Конструктора запроса и в поле Functions and expressions (функция и выражения) (рис. 5.13) ввести необходимое выражение. Далее после нажатия кнопки Add (добавить) данное выражение будет занесено в список полей запроса.
Если нажать кнопку справа от поля Function and expressions (функция и выражение), то открывается диалоговое окно Построителя выражений — Expression Builder (рис. 5.17), упрощающего формирование выражения. Выбирая в поле From table Построителя имя таблицы и в поле Fields - название поля, формируем требуемое выражение, которое при этом выводится в поле Expression (выражение). По нажатию ОК вычисляемое поле переносится в список полей запроса.
Пример результата выполнения многотабличного запроса с вычисляемым полем (Ехр_7) представлен на рис. 5.18.
Из рис. 5.18 видно, что вычисляемому полю автоматически был присвоен заголовок (Ехр_7), который не очень содержателен. Есть возможность изменять заголовки полей в запросе. Для этого в поле Function and Expressions Конструктора запроса к названию формируемого поля добавляется ключевое слово AS и новый заголовок.
Сохраним результаты запроса в файле Query4.QPR.
Рис. 5.17 Диалоговое окно Expression Builder
Рис. 5.18. Результат выполнения многотабличного запроса