5.9.9.Создание и редактирование многотабличной формы в режиме конструктора

Средствами Конструктора форм (Form Design) можно полностью создать многотабличную форму. Ранее разработанную и сохраненную форму можно в любой момент модифицировать этим конструктором. При создании и редактировании формы можно добавлять новые поля и надписи, включать поля со списком, создавать кнопки, добавлять подчиненные формы, вне­дрять объекты из других приложений, например, рисунков, диаграмм, а также изменять расположение отдельных полей, их отображение и подписи. При редактировании могут быть выполнены любые изменения и удаление имеющихся элементов, а также добавление новых.

5.10.  Создание новой формы конструктором

Конструирование формы начинается после выбора объекта Формы (Forms) в окне База данных (Database) и нажатия кнопки Создать (New), которая вызывает окно Новая форма (New Form). В этом диалоговом окне нужно выбрать режим создания формы Конструктор (Design View). Можно сразу в качестве базового источника данных формы выбрать из спи­ска нужную таблицу (запрос).

Вызов конструктора может быть осуществлен из окна базы данных также активизацией значка Создание формы в режиме конструктора (Create form in Design view), позволяющего открыть сразу окно конструктора форм.

После вызова конструктора форм появляется окно конструктора с именем формы по умолчанию — Форма 1 (Form 1) и открывается доступ к списку полей таблицы, выбранной в качестве базового источника данных.

Замечание

Все элементы, добавляемые в форму, являются элементами управления. При­мерами разных элементов управления служат поля, надписи, списки, переклю­чатели, кнопки и линии. Способ создания элемента управления зависит от того, какой элемент создается: присоединенный, свободный или вычисляемый.

5.10.1.  Включение полей в новую форму

Для включения нового поля базового источника записей в форму предвари­тельно должен быть отображен на экране список полей этого источника. Для отображения списка полей, доступных для внесения в форму при ре­дактировании формы, следует выполнить команду меню Вид/Список полей (View(Field List) или нажать соответствующую кнопку панели Конструктора форм (Form Design). Список полей доступен только в режиме конструктора. Из списка поле можно перетаскивать в нужное место формы с помощью мыши. При этом размещается поле и связанная с ним подпись. В самом поле будет отображено имя поля таблицы базы данных, а в качест­ве надписи будет использовано значение из свойства поля Подпись (Caption), которое было определено при конструировании таблицы.

Добавление в форму полей может быть выполнено с помощью кнопок панели элементов Поле (Text Box) типа Свободный (Unbound) и Поле со списком (Combo Box). Для включения обычного поля надо нажать на панели элементов кнопку Поле (Text Box) и вычертить курсором поле в нужном месте формы. Далее надо установить связь созданного элемента с полем таблицы-источника формы.

Если заранее не была определена таблица-источник записей формы, нужно ее выбрать. Для этого надо вызвать окно свойств формы, дважды щелкнув мышью на области выделения формы. На вкладке Данные (Data) в окне свойств выбрать в строке Источник записей нужную таблицу и закрыть окно свойств.

Для установки связи создаваемого поля формы с полем таблицы-источника формы надо выделить создаваемое поле в форме и вызвать окно его свойств. В этом окне на вкладке Данные (Data) в строке Данные (ControlSource) следует выбрать нужное поле из списка доступных полей источника и закрыть окно свойств.

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

Если в форме в качестве источника записей была определена одна таблица, то для добавления полей из другой таблицы также нужно воспользоваться построителем.

5.10.2.  Добавление подчиненной формы и ее редактирование

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

Встраивание подчиненной формы без помощи мастера. Для встраивания под­чиненной формы в режиме конструктора без помощи мастера необходимо нажать на панели элементов кнопку Подчиненная форма/отчет (Subform/Subreport). Кнопка панели элементов Мастера (Control Wizards) не должна быть включена. Затем установить курсор на место размещения соз­даваемого объекта в форме, нажать кнопку мыши и, не отпуская ее, растя­нуть рамку подчиненной формы до нужного размера.

В режиме конструктора в качестве подчиненной формы может быть взята форма, построенная не только для подчиненной таблицы относительно ис­точника основной формы, но и для главной таблицы. В последнем случае, очевидно, для одной записи основной формы будут отображаться данные только из одной записи главной таблицы.

Использование мастера для включения подчиненной формы. В процессе кон­струирования многотабличной формы для включения подчиненной формы можно использовать мастер, который позволяет не только включить, но и создать нужную подчиненную форму. Чтобы при нажатии кнопки Подчи­ненная форма/отчет (Subform/Subreport) панели элементов запускался мас­тер, необходимо предварительно на этой панели нажать кноп­ку Мастера (Control Wizards). В диалоговом окне мастера можно выбрать таблицу (или запрос), на основе которой должна быть создана под­чиненная форма, или существующую форму и далее указать поля связи с подчиненной формой.

Использование метода Drag-and-Drop. Особым способом включения подчи­ненной формы является использование метода Drag-and-Drop (перетащить и отпустить). Таким способом можно перетащить в форму из окна базы данных готовую подчиненную форму или таблицу, для которой нужно соз­дать подчиненную форму.

Во втором случае для создания подчиненной формы подключается мастер. В результате встраивается рамка подчиненной формы и запускается мастер построения подчиненной формы. Мастер предлагает использовать в качест­ве поля для связи форм внешний ключ подчиненной таблицы и автоматиче­ски создает многозаписевую форму.

Изменение дизайна формы. При определении вида как основной, так и под­чиненной формы можно использовать свойства самой формы, а не отдель­ных ее элементов. В частности, можно убрать область маркировки (слева), полосу прокрутки, поле нумерации записей, тип границы. Для перехода к просмотру и редактированию свойств формы надо установить курсор в об­ласти выделения формы, вызвать контекстно-зависимое меню, нажав пра­вую кнопку мыши, и выбрать опцию Свойства (Properties). Например, при доработке формы можно удалить линии, разделяющие области заголовка, данных и примечаний. Для этого достаточно установить значение Нет (No) для свойства формы Разделительные линии (Dividing Lines) на вкладке Ма­кет (Format). Для выбора или отключения полосы прокрутки формы уста­навливается соответствующее значение свойства Полосы прокрутки (Scroll Bars).

Задание №5.

Для базы данных «Кафедры» (л/р №4) в режиме конструктора создать форму «Кафедра».

5.11.  Вычисления в форме

5.11.1.  Вычисления в каждой записи формы

Чтобы произвести вычисления на основе данных одной записи в форме, необходимо создать вычисляемый элемент управления, в который записыва­ется выражение. Для создания вычисляемого элемента управления надо от­крыть форму в режиме конструктора и, нажав на панели элементов кнопку Поле (Text Box), разместить элемент управления в нужном месте. Затем в элемент управления вводится выражение. Выражение должно начинаться со знака равенства (=). В качестве операндов выражения чаще всего используется имена полей, константы, а в качестве операторов — знаки арифметических операций.

Рассмотрим пример вычисляемого поля. Пусть таблица или запрос, на котором строится форма, содержит данные о должностных окладах и надбавках и имеет поля: Оклад — оклад работника; Надбавка — персональная надбавка работника. В форме можно подсчитать и вывести заработную плату работника, создав вычисляемый элемент управления и записав в него выражение:

=([Оклад]+[Надбавка])*0.87

Выражение может быть введено в строку Данные (ControlSource) в окне свойств элемента управления. При этом можно воспользоваться построите­лем выражений, который позволяет упростить создание выражения.

Задание 6.

В форму «Абитуриент» добавить вычисляемое поле, определяющее сумму баллов, набранных студентом по математике и по физике.

5.11.2.  Вычисление итоговых значений

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

= Mean ( [Оклад] )

Вычисляемый элемент управления, создаваемый для расчета итогового зна­чения, нужно размещать в области примечания формы.

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

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

Замечание

Значение вычисляемого поля отображается в форме, но не может быть сохранено в таблице.

Задание 7. В форме «Кафедра» создать вычисляемое поле, информирующее о числе работников текущей кафедры (Функция подсчета числа записей count() ).

5.12.  Ограничения доступа к данным через форму

5.12.1.  Защита данных поля от изменений

Для защиты данных поля от изменения используется свойство Блокировка (Locked). Блокировка может быть установлена для любого поля формы. Чтобы защитить таким образом поле, надо установить курсор в его рамке и с помощью контекстно-зависимого меню вызвать свойства поля. В окне свойств на вкладке Данные (Data) в строке Блокировка (Locked) выбрать Да (Yes). После установки этого свойства поле доступно только для чтения.

Установка ограничений на корректировку записей через форму

Работая с формой, можно сделать записи доступными только для чтения, если задать значение Нет (No) для свойств всей формы: Разре­шить добавление (Allow Additions), Разрешить удаление (Allow Deletions) и Разрешить изменение (Allow Edits). Этого можно также добиться, выбрав для свойства Тип набора записей (Recordset Type) значение Статический набор (Snapshot). Указанные свойства могут устанавливаться независимо друг от друга. Например, при запрете на изменение записей могут быть разрешены добавление и удаление записей.

Замечание

Свойство формы Блокировка записей (Record Locks) определяет способы блокировки записей при обновлении содержимого сетевой базы данных. Это необходимо для защиты данных при попытке двух пользователей одновремен­но изменить одну и ту же запись. Когда один пользователь изменяет запись, запись автоматически блокируется. При этом другие пользователи не могут из­менять эту запись до завершения работы с ней первого пользователя.

Свойство Ввод данных (Data Entry) определяет режим открытия формы, при котором разрешен только ввод новых записей, просмотр существующих записей при этом недоступен. При открытии формы будет выводиться толь­ко пустая запись, которую можно заполнять.

5.12.2.  Защита данных подчиненной формы от изменений

Если в качестве подчиненной используется форма, встроенная конструкто­ром на основе главной таблицы, содержащей справочные данные, необхо­димые только для расшифровки вводимых ключевых полей в основную часть формы. В этом случае целесообразно запретить обновление таких справочных данных через подчиненную форму. Защитить содержимое всех полей подчиненной формы, сделав его доступным только для чтения, по­зволяет свойство Блокировка (Locked), установленное для подчиненной формы.

Чтобы защитить данные подчиненной формы от изменений, надо вызвать свойства подчиненной формы. В окне свойств надо перейти на вкладку Данные (Data). В строке Блокировка (Locked) выбрать Да (Yes). При этом элемент управления функционирует нормально, но изменение, добавление и удаление данных в полях не допускаются.

Замечание

По умолчанию для всех элементов управления, кроме свободной рамки объек­та, в строке Блокировка (Locked) устанавливается значение Нет (No).

Задание 8.

В базе данных «Литература» создать форму, отображающую данные всех ее таблиц, открыв в ней доступ к данным только для добавления записей.

Зачетное задание.

Создать форму «Литература», в разработанной ранее базе данных. Закрыть доступ для любого изменения данных. Форма должна представлять собой справочник.

6.  Лабораторная работа №6. Создание запросов в среде Access

6.1.  Цель работы

Выработка навыков разработки запросов в пользовательском режиме СУБД Ms Access.

6.2.  Программное обеспечение

Для проведения лабораторной работы требуется Ms Access 97/2000. Рекомендуется Ms Access 2000.

6.3.  Назначение и виды запросов

Запрос позволяет выбрать необходимые данные из одной или нескольких взаимосвязанных таблиц, произвести вычисления и получить результат в виде таблицы. Через запрос можно производить обновление данных в таблицах, добавление и удаление записей.

С помощью запроса можно выполнить следующие виды обработки данных:

q  Выбрать записи, удовлетворяющие условиям отбора.

q  Включить в результирующую таблицу запроса заданные пользователем поля.

q  Произвести вычисления в каждой из полученных записей.

q  Сгруппировать записи, которые имеют одинаковые значения в одном или нескольких полях, в одну запись с одновременным выполнением групповых операций над другими полями.

q  Произвести обновление полей в выбранном подмножестве записей.

q  Создать новую таблицу базы данных, используя данные из существующих таблиц.

q  Удалить выбранное подмножество записей из таблицы базы данных.

q  Добавить выбранное подмножество записей в другую таблицу.

q  Многотабличный запрос позволяет сформировать записи результата путем объединения взаимосвязанных записей из таблиц базы данных и включения нужных полей из нескольких таблиц. В частности, при объединении двух нормализованных связанных одно-многозначными отношениями таблиц результирующая запись образуется на основе записи подчиненной таблицы, в которую добавляются поля из связанной записи в главной таблице. Заметим, что подобное объединение формирует новую таблицу, которая не является нормализованной.

Последовательное выполнение ряда запросов по примеру позволяет решать достаточно сложные задачи, не прибегая к программированию.

В Access может быть создано несколько видов запроса:

q  Запрос на выборку — выбирает данные из взаимосвязанных таблиц и других запросов. Результатом его является таблица, которая существует до закрытия запроса. На основе этого вида запроса строятся запросы другого вида.

Замечание

Таблицу с результатами запроса можно использовать для работы с данными в таблицах, на которых построен запрос. Например, можно корректировать данные в исходных таблицах базы данных через таблицу с результатами запроса.

q  Запрос на создание таблицы — использует запрос на выборку, но в отличие от него результат запроса сохраняется в новой таблице.

q  Запросы на обновление, добавление, удаление — являются запросами действия, в результате выполнения которых изменяются данные в таблицах.

6.4.  Создание запроса

Основные принципы конструирования различных запросов по технологии Query By Example (QBE) заложены в технике конструирования запроса на выборку, являющегося основой всех видов запроса.

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

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

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

Результаты выполнения запроса выводятся в режиме таблицы. Окно запроса в режиме таблицы аналогично окну просмотра таблицы базы данных. В этом режиме становится активной панель инструментов Запрос в режиме таблицы (Query Datasheet, назначение кнопок этой панели аналогично панели Таблица в режиме таблицы (Table Datasheet).

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

6.5.  Окно запроса

Для создания запроса надо в окне База данных (Database) перейти на вкладку Запросы (Queries) и нажать кнопку Создать (New). В открывшемся окне Новый запрос (New Query) выбрать Конструктор (Design View).

В Access 2000 можно сразу перейти к созданию нового запроса в режиме конструктора, выбрав на вкладке Запросы (Queries) команду Создание запроса в режиме конструктора (Create query in Design view).

Далее в открывшемся окне Добавление таблицы (Show Table) нужно выбрать используемые в запросе таблицы и нажать кнопку Добавить (Add). Для выхода из окна следует нажать кнопку Закрыть (Close).

В результате появится окно конструктора запросов Запрос <номер> (Query <number>): запрос на выборку (Select Query).

Окно конструктора запросов разделено на две панели. Верхняя панель содержит схему данных запроса, которая включает выбранные для данного запроса таблицы. Таблицы представлены списками полей. Нижняя панель является бланком запроса QBE, который нужно заполнить.

6.6.  Схема данных запроса

В окне конструктора запроса отображаются выбранные таблицы со списком полей и одно-многозначные связи между ними, имеющиеся в схеме данных базы. Первая строка в списке полей, отмеченная звездочкой *, обозначает все множество полей таблицы. Кроме того. Access автоматически устанавливает связи для объединения таблиц, если таблицы имеют поля с одинаковыми именами и типами данных, даже если связи не были установлены в схеме данных. Связи-объединения, которые не были установлены Access автоматически, может установить пользователь, перетащив задействованные в связи поля из одного списка полей в другой.

При использовании в запросе других запросов или таблиц, не представленных в схеме данных базы, с ними также могут быть установлены связи-объединения.

6.7.  Бланк запроса QBE

Бланк запроса QBE представлен в виде таблицы в нижней панели окна запроса. Такая таблица предназначена для конструирования структуры таблицы результата запроса и условий выборки данных из исходных таблиц. Первоначально эта таблица пуста.

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

При заполнении бланка запроса:

q  В строку Поле (Field) включаются имена полей, используемых в запросе.

q  В строке Сортировка (Sort) выбирается порядок сортировки записей результата.

q  В строке Вывод на экран (Show) отмечаются поля, которые должны быть включены в результирующую таблицу.

q  В строке Условие отбора (Criteria) задаются условия отбора записей.

q  В строке или (or) задаются альтернативные условия отбора записей.

В ряде случаев в бланке запроса наряду с именем поля нужно отображать имя соответствующей таблицы, например, если поля имеют одинаковые имена в разных таблицах. Для отображения имен таблиц в строке бланка должна быть выполнена команда Вид|Имена таблиц (View|Table Names) или нажата соответствующая кнопка панели конструктора запросов. В результате выполнения команды в бланке появится строка Имя таблицы (Table Name).

6.8.  Поля бланка запроса

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

Для включения нужных полей из таблиц в соответствующие столбцы запроса можно воспользоваться следующими приемами:

Ø  В первой строке бланка запроса Поле (Field) щелчком мыши вызвать появление кнопки списка и выбрать из списка нужное поле. Список содержит все поля таблиц, представленных в бланке запроса.

Ø  Перетащить нужное поле из списка полей таблицы в схеме данных запроса в первую строку бланка запроса.

Ø  Дважды щелкнуть на имени поля таблицы в схеме данных запроса.

Ø  Для включения всех полей таблицы можно перетащить или дважды щелкнуть на символе ">>" в списке полей таблицы в схеме данных запроса.

Задание 1.

Создать на основе базы данных «Кафедры» запрос на выборку данных о том, на какой кафедре работает каждый преподаватель, и какие предметы он читает.

6.9.  Модификация запроса

Добавление таблицы в схему данных запроса осуществляется с помощью команды меню Запрос Добавить таблицу (Query Show Table) или нажатием соответствующей кнопки панели Конструктор запросов (Query Design). Команда добавления может быть выполнена также через контекстное меню, вызываемое на схеме данных запроса.

Добавление поля в бланк запроса осуществляется с помощью одного из действий, рассмотренных выше, например, перетаскиванием имени поля из таблицы в схеме данных в нужное место бланка. Все столбцы полей справа от него передвинутся на один столбец вправо.

Удаление поля в бланке запроса требует предварительного выделения соответствующего столбца. Для этого надо переместить курсор в область маркировки столбца сверху, где он примет вид черной стрелки, направленной вниз, и щелкнуть кнопкой мыши. Далее нужно нажать клавишу <DELETE> или выполнить команду Правка|Удалить столбцы (Edit| Delete Columns).

Для перемещения поля в бланке запроса надо выделить соответствующий столбец и перетащить его в новую позицию с помощью мыши. Столбец, на место которого перемещен новый, как и все столбцы справа от него, будет сдвинут вправо.

Задание 2.

Добавить в запрос поля связи с отображением их на экране. При этом поля должны находиться на самых левых позициях.

6.10.  Условия отбора записей

Условия отбора записей могут задаваться в бланке запроса для одного или нескольких полей в строке Условие отбора (Criteria).

Условием отбора является выражение, которое состоит из операторов сравнения и операндов, используемых для сравнения.

В качестве операндов выражения могут использоваться: литералы, константы, идентификаторы (ссылки).

Литералами являются конкретные значения, воспринимаемые Access так, как они записаны. В качестве литералов могут быть использованы числа, текстовые строки, даты. Текстовые строки заключаются в двойные кавычки, даты — в символы "#". Например, 275, "Качество", #15-Июня-02#.

Константами являются не изменяющиеся значения, которые определены в Access, например, "True", "False", "Да", "Нет", "Null".

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

Во многих случаях ссылка на конкретное значение должна указывать точное его местоположение в иерархии объектов базы данных, начиная с объекта верхнего уровня. Если необходимо указать ссылку на поле в конкретной таблице, форме, отчете, то перед именем поля ставится имя таблицы, формы, отчета, также заключенное в квадратные скобки и отделенное от имени поля восклицательным знаком. Например, ссылка на поле в таблице примет вид: "[Имя таблицы]![Имя поля]", а ссылка на свойство DefaultValue элемента управления "Год рождения" в форме СТУДЕНТ — "Forms![Абитуриент]![Год рождения]. DefaultValue".

Операторами сравнения и логическими операторами, использование которых допускается в выражении условия отбора, являются операторы:

=,<,>,<>, Between, In, Like, And, Or, Not

Они определяют операцию над одним или несколькими операндами.

Если выражение в условии отбора не содержит оператора, то по умолчанию используется оператор = .

Текстовые значения в выражении, если они содержат пробелы или знаки препинания, вводятся в двойных кавычках. В противном случае кавычки можно не вводить, они будут добавлены автоматически.

Допускается использование операторов шаблона — * (звездочка) и? (вопросительный знак).

Оператор Between позволяет задать интервал для числового значения. Например,

Between 10 And 100 задает интервал от 10 до 100.

Оператор In позволяет выполнить проверку на равенство любому значению из списка, который задается в круглых скобках. Например,

In("Математика", "Информатика", "История").

Оператор Like позволяет использовать образцы, использующие символы шаблона, при поиске в текстовых полях. Например,

Like «ИСО* ».

Логические операции "И", "ИЛИ". Условия отбора, заданные в одной строке, связываются по умолчанию с помощью логической операции "И", заданные в разных строках - с помощью логической операции "ИЛИ". Эти операций могут быть также заданы явно в выражении условия отбора с помощью операторов and и or, соответственно.

Задание 3.

Установить условие отбора для запроса такое, чтобы на экране отображались бы только работники кафедры конструирования и производства РЭС.

6.11.  Построитель выражений

Условие отбора можно сформировать с помощью построителя выражений. Перейти в окно Построитель выражений (Expression Builder) можно, нажав кнопку Построить (Build) панели инструментов конструктора запросов или выбрав команду Построить (Build...) в контекстно-зависимом меню. Курсор мыши должен быть установлен предварительно в ячейке ввода условия отбора.

После ввода выражения в бланк и нажатия клавиши <Enter> Access выполняет синтаксический анализ выражения и отображает его в соответствии с результатами этого анализа.

6.12.  Вычисляемые поля

В запросе над полями могут производиться вычисления. Результат вычисления образует вычисляемое поле в таблице, создаваемой по запросу. При каждом выполнении запроса производится вычисление с использованием текущих значений полей.

При вычислениях могут использоваться арифметические выражения и встроенные функции Access.

6.13.  Арифметические выражения

Выражение вводится в бланк запроса в пустую ячейку строки Поле (Field). Затем, после нажатия клавиши <Enter> или перевода курсора в другую ячейку перед выражением в этой ячейке добавляется имя поля ВыражениеN (ExprN), где N — целое число, увеличивающееся на единицу для каждого нового создаваемого вычисляемого поля в запросе. Имя вычисляемого поля, стоящее перед выражением, отделяется от него двоеточием. Например,

<Выражение1>: [Оклад]+[Надбавка] ,

где Оклад и Надбавка — имена полей.

Имя вычисляемого поля ("Выражение1") становится заголовком столбца в таблице с результатами выполнения запроса. Это имя можно изменить.

Для вычисляемых полей допускается сортировка, задание условий отбора и расчет итоговых значений, как и для любых других полей.

6.14.  Встроенные функции

В Access имеются встроенные функции, которые можно использовать в вычисляемых полях:

q  Функция Date формирует текущую дату

q  Функция Month выделяет месяц из значения поля, содержащего дату

q  Функция DLookup возвращает значение конкретного поля из записи связанной таблицы, не участвующей в запросе

Статистические функции над полями подмножества записей, вычисляющие среднее значение, сумму, минимальное, максимальное значение

Для записи выражения может быть использован Построитель выражений (Expression Builder), который вызывается, кнопкой Построить (Build) панели инструментов.

Например, для выборки всех студентов, родившихся в заданном месяце, построим в вычисляемом поле выражение

Month([Абитуриент]![ДАТАР]),

где датар — поле типа Дата/время (Date/Time) с датой рождения в таблице студент.

Задание 4.

Получить у преподавателя базу данных «Абитуриент». Создать запрос, формирующий список совершеннолетних абитуриентов, поступающих на дневное отделение на специальность 130200 – Авиационные двигатели и энергетические установки. Специальность – поле «Napr», дата рождения – поле «Datar», форма обучения – поле «Nap_o» значение поля «1» – форма обучения дневная бюджетная, значение поля «2» – контрактная дневная.

6.15.  Присвоение пользовательских имен вычисляемым полям

Пользователь имеет возможность присвоить новое имя вычисляемому полю, используя один из следующих способов:

q  Изменение имени поля в запросе. В режиме конструктора запроса в бланке запроса вместо ВыражениеN (ExprN) ввести новое имя

q  Изменение подписи поля в свойствах поля. Установить курсор на вычисляемое поле в бланке запроса и открыть окно Свойства поля (Field Properties), щелкнув правой кнопкой мыши и выбрав в контекстном меню опцию Свойства (Properties). В окне Свойства поля (Field Properties) на вкладке Общие (General) ввести нужный текст подписи в строку Подпись поля (Caption)

6.16.  Параметры запроса

Конкретное значение поля в условии отбора может вводиться, как было показано выше, непосредственно в бланк запроса. Однако при решении практических задач необходимо вводить значение поля в диалоге с пользователем в процессе выполнения запроса. Для того чтобы выводилось диалоговое окно, обеспечивающее ввод конкретного значения поля в условия отбора, нужно определить параметр запроса.

6.16.1.  Определение параметра запроса по значению поля

Имя параметра запроса может задаваться непосредственно в строке Условия отбора (Criteria) в квадратных скобках. При выполнении запроса это имя появится в диалоговом окне Введите значение параметра (Enter Parameter Value).

Например, если в условии отбора рассмотренного выше запроса номер месяца (5) заменить на имя параметра <номер месяца>, то при выполнении запроса будет выводиться диалоговое окно, позволяющее ввести значение этого параметра запроса.

6.16.2.  Определение нескольких параметров запроса

Если в запрос вводится несколько параметров, то порядок их ввода через диалоговые окна определяется порядком расположения полей с параметрами в бланке запроса. Чтобы иметь возможность ввести несколько значений для одного поля при выполнении запроса, можно в условии отбора этого поля определить несколько параметров. Например, для отбора записей по двум группам в условии отбора поля НГ можно записать два параметра, связанных логической операцией OR: <номер группы > OR <еще один номер>.

6.16.3.  Параметр запроса для ввода значения операнда выражения

Параметры запроса могут быть использованы не только для отбора по значению поля, но и для ввода значения операнда в выражениях условий отбора или вычисляемых полей. Здесь в условии отбора используется функция Year, которая выделяет год из даты. Параметр запроса - [Год рождения], фигурирует как величина, с которой сравнивается значение данной функции.

6.17.  Корректировка данных средствами запроса

6.17.1.  Запрос на обновление

Для обновления данных в полях базовых таблиц может быть использован Запрос на обновление (Update Query). Изменения вносятся в группу записей, отбираемых с помощью указанных пользователем условий отбора. Значения для изменений в полях определяются в бланке запроса в строке Обновление (Update To).

Для того чтобы создать запрос на обновление (Update Query) первоначально создается запрос на выборку (Select Query), а затем в окне конструктора запросов он преобразуется в запрос на обновление выбором пункта Обновление (Update Query) из списка Тип запроса (Query Type) или команды меню Запрос|0бновление (Query|Update). После выполнения этой команды в бланке запроса появляется строка Обновление (Update To).

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8