Практикум по Microsof access

Изменение структуры таблицы

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

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

Модифицируйте структуру таблицы Student, добавив в нее поле, указанное ниже.

Имя поля

Тип поля

Значения свойств

Описание

Remark

поле MEMO

Подпись = Примечания

Примечания.

Индексы

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

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

Чтобы создать индекс, необходимо открыть окно Конструктора таблицы, выделив таблицу и щелкнув по кнопке Конструктор.

Для создания индекса необходимо выбрать в меню пункт Вид, Индексы. Открывшееся окно Индексы содержит таблицу, в которой представлены все индексы, созданные для таблицы. Таблица состоит из трех столбцов. Первый столбец содержит имя индекса, второй – название поля, по которому построен индекс, третий – порядок сортировки. Каждая строка таблицы описывает один индекс. Если вы определили ключевое поле, то таблица будет содержать строку с именем индекса PrimaryKey.

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

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

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

Простой индекс можно создать, не открывая окно Индексы. Для этого в окне Конструктора таблицы необходимо выбрать поле, которое требуется проиндексировать и установить в свойстве "Индексированное поле" значение "Да (Допускаются совпадения)" или "Да (Совпадения не допускаются)".

Создайте простой индекс для таблицы Student по полю CName.

Создайте составной индекс в таблице Subject по полям CName, NHour.

Связи между таблицами

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

Связи между таблицами удобно представлять графически. В Access для этого используется схема данных. Чтобы открыть схему данных, необходимо выбрать в меню пункт Сервис, Схема данных. Вместе с окном схемы данных открывается окно Добавление таблицы, в котором нужно выбрать все таблицы и нажать кнопку Добавить, а затем кнопку Закрыть.

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

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

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

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

Чтобы изменить связь необходимо выбрать в меню пункт Связи, Изменение связей. После выполнения этих действий откроется окно Связи.

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

Флажок "Обеспечение целостности данных" включает режим, при котором:

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

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

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

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

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

Чтобы активизировать один или несколько из этих режимов для какой-либо связи, нужно установить соответствующий флажок в окне Связи для выбранной связи.

Пример

Создадим связь между таблицами Student и Department по полю NDepartment. Откройте окно Схемы данных и перетащите с помощью мыши поле NDepartment из таблицы Student на поле NDepartment в таблице Department. В открывшемся окне установите флажок "Обеспечение целостности данных". Теперь в поле NDepartment таблицы Student невозможно внести код, отсутствующий в таблице Department. Невозможно удалить строку из таблицы Department или изменить значение поля NDepartment в этой таблице, если в таблице Student есть хотя бы одна запись с кодом факультета равным коду факультета удаляемой или изменяемой записи.

На рисунке представлено окно Схемы данных
со связью между таблицами Student и Department

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

Установите еще четыре связи между таблицами, соответствующие содержанию этих таблиц.

Установите следующие правила целостности:

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

б).  запрещается удалять информацию о преподавателе, если он читает хотя бы один предмет;

в).  разрешить каскадное изменение во всех дочерних таблицах при изменении кода преподавателя;

г).  при удалении должности разрешить каскадное удаление всех преподавателей, имеющих эту должность;

д). при добавлении нового студента установить проверку на на наличие вводимого кода факультета и вводимого кода преподавателя.

Просмотр и редактирование данных в таблице

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

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

На рисунке представлено окно просмотра содержимого таблицы Student

Существует три операции с записями: добавление, изменение, удаление.

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

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

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

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

Ввод значений в поле, имеющее тип Поле объекта OLE, выполняется по команде меню Вставка, Объект. В открывшемся окне можно активизировать радиокнопку Создать новый и, выбрав тип объекта и нажав кнопку ОК, создать объект, или активизировать радиокнопку Создать из файла и, нажав кнопку Обзор, выбрать файл содержащий объект. После выполнения этих действий в таблице появится подпись соответствующая типу объекта, например "Точечный рисунок" для графического файла, или "Лист Microsoft Excel" для листа электронной таблицы.

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

Чтобы удалить запись необходимо установить указатель текущей записи на удаляемую запись и выбрать в меню пункт Правка, Удалить запись. При удалении записи Access запрашивает подтверждение.

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

Заполните таблицы указанными ниже данными. Заполнение таблиц нужно выполнять в указанном порядке. Почему?

Содержимое таблицы Department

NDepartment

CName

100

Математический

200

Физический

300

Экономический

Содержимое таблицы Post

NPost

CName

10

Преподаватель

20

Ст. преподаватель

30

Доцент

40

Профессор

50

Зав. кафедрой

Содержимое таблицы Teacher

NTeacher

CName

NDepartment

 NPost

210

Поляков В.В.

100

30

220

Кузнецов В.А.

100

30

230

Бердино Н.Ю.

100

20

310

Стефанович Г.Б.

200

30

410

Дмитриева Л.Н.

300

50

420

Литвинас А.П.

300

40

320

Порывайло К.М.

200

10

Содержимое таблицы Subject

NSubject

CName

NHour

NTeacher

103

Информационные системы

90

210

42

Исследование операций

60

220

111

Практикум на ЭВМ

30

230

201

Физика

30

310

305

Экономическая география

90

420

302

Бухгалтерский учет

50

410

317

Экономическая информатика

80

210

193

Электротехника

60

310

218

Банковские операции

30

410

Содержимое таблицы Student

NStudent

CName

NDepartment

NIQ

NTeacher

3467589

Отличников К.Л.

100

99

210

4678455

Двоечников Н.Е.

300

30

410

5934508

Середняков А.Д.

200

64

310

7459876

Дубинин У.У.

100

41

410

2227778

Мозгов О.Г.

100

100

220

4678466

Хвостов П.П.

300

64

410

5934512

Папуасов М.Ю.

200

58

310

В поле OPhoto вставьте произвольные графические файлы.

В поле Remark введите произвольный текст.

Организуйте одновременный просмотр таблиц Student, Post и Deparment в разных местах экрана дисплея.

Сделайте копию таблицы Student под именами Student0, используя пункты меню Правка, Копировать и Правка, Вставить.

В таблице Student0 удалите одну, текущую, строку, а затем одновременно несколько строк (например, для студентов факультета с кодом 200). Удалите таблицу.

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

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

б). удалить информацию о преподавателе Кузнецов В.А. из таблицы Teacher (невозможно, так как этот преподаватель ведет предметы) и Порывайло К.М. (будет удалена); восстановить информацию о преподавателе Порывайло К.М.;

в).  изменить код преподавателя Кузнецова В.А. на 610 в таблице Teacher и просмотреть содержимое таблиц Subject и Student, в которых автоматически изменятся значения столбца NTeacher для предметов, которые вел преподаватель Кузнецов В.А. и студентов, для которых он является руководителем; вернуть прежнее значение кода преподавателя Кузнецова В.А.

г). удалить должность с кодом 10 из таблицы Post и просмотреть таблицу Teacher, в которой будут автоматически удалены преподаватели имеющие код должности 10 (преподаватель Порывайло К.М.); восстановить информацию о преподавателе Порывайло К.М.

д). удалитьдолжность с кодом 30 из таблицы Post (невозможно, так как каскадно вместе с этой записью должны быть удалены все преподаватели, имеющие эту должность, но такие преподаватели являются руководителями студентов, а в этом случае информация о них не может быть удалена);

е). добавить информацию о новом студенте в таблицу Student :

NStudent

CName

NDepartment

NIQ

NTeacher

354625

Куролесов И.И.

600

62

310

 Невозможно, так как нет факультета с кодом 600;

ж). добавить информацию о новом студенте в таблицу Student :

NStudent

CName

NDepartment

NIQ

NTeacher

354625

Куролесов И.И.

100

62

780

 Невозможно, так как нет преподавателя с кодом 780;

з). добавить информацию о новом студенте в таблицу Student :

NStudent

CName

NDepartment

NIQ

NTeacher

388688

100

62

310

 Невозможно, так как поле CName должно быть заполнено.

 

 

 

 

 

Поиск данных

В режиме Таблицы предусмотрены операции поиска данных по образцу. Чтобы найти требуемые данные, необходимо поместить курсор в поле, в котором будет выполняться поиск (если поиск выполняется по нескольким полям то, где находится курсор, не имеет значения) выбрать пункт меню Правка, Найти, ввести образец поиска и настроить условия поиска (Поиск в:, Совпадение:, Просмотр:, С учетом регистра, С учетом формата полей).

В таблице Student выполните поиск студентов,

а). обучающихся на факультете с кодом 300;

б). фамилии которых заканчиваются на «ов»;

в). фамилии которых начинаются на «Д»;

г). в номере зачетной книжки или в коде факультета, или в уровне интеллекта, или в коде руководителя присутствует значение «22».

Фильтрация

Для отбора записей во время просмотра или редактирования можно воспользоваться фильтром. Чтобы создать фильтр необходимо выбрать пункт меню Записи, Фильтр, Расширенный фильтр.

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

Строка "Поле" предназначена для выбора имени поля таблицы из раскрывающегося списка. В строке "Сортировка" можно указать порядок сортировки значений данного поля. В строках "Условия отбора:", "или:" задаются условия отбора записей в виде логических выражений, например, (>30), (>= «Москва»), (=10).

При задании условия отбора записей можно использовать

операторы сравнения: <, >, <=, >=, =, <>;

логические функции: And, Or, Not, Xor;

арифметические операции: + (сложение), – (вычитание), * (умножение), / (деление), \ (деление нацело), mod (остаток от деления), ^ (возведение в степень);

встроенные функции, например, Date() (текущая дата), Cos() (косинус угла) и др.;

операторы слияния строковых значений – &, например, "Мос" & "ква";

диапазон значений – Between, например, Between 10 and 20;

Is Null – определяет, является ли значение пустым, Is Not Null – не пустым;

список значений – In, например, In("Москва","Саратов","Кострома");

сравнение с шаблоном – Like, например, Like "?а*", означает слова, в которых вторая буква "а". В шаблоне можно использовать символ "?", который замещает только один знак, и символ "*", который замещает любое число знаков.

В выражениях можно использовать имена других объектов базы данных, например, [Student]![CName] – означает поле CName в таблице Student.

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

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

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

В таблице Student установите фильтр, позволяющий выделить строки, содержащие сведения о студентах, обучающихся на факультетах с кодами 100 и 300 и показателем интеллекта не менее 45. Затем отмените фильтрацию.

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

Сортировка записей

Когда таблица открывается в режиме Таблицы, то записи упорядочены по возрастанию значений ключевого поля. Если нужно отсортировать записи по значению другого поля, необходимо установить курсор на любую строку соответствующего столбца и выбрать пункт меню Записи, Сортировка, Сортировка по возрастанию/Сортировка по убыванию. Чтобы вернуться к первоначальному порядку сортировки (по значению ключевого поля), необходимо выбрать пункт меню Записи, Удалить фильтр. Процесс сортировки значительно ускоряется, если предварительно по данному полю был построен индекс.

Сортировка по нескольким полям одновременно выполняется через фильтр.

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

а).  по кодам факультетов в порядке возрастания;

б). по показателям интеллекта в порядке убывания.

Запросы

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

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

Окно Конструктора запроса разделено на две области. В верхней области отображена схема данных, состоящая из добавленных в запрос таблиц (если между таблицами установлены связи, то они тоже отображены на схеме), а в нижней области окна находится бланк запроса.

Рассмотрим бланк запроса.

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

Строка "Поле" предназначена для ввода имени поля таблицы – источника данных (символ звездочка "*" обозначает сразу все поля одной таблицы) или вычисляемого выражения. Полю запроса можно дать собственное название, для этого перед именем поля или выражением, необходимо ввести название поля запроса и двоеточие.

Вторая строка – "Имя таблицы" – предназначена для ввода имени таблицы, которой принадлежит выбранное поле. Эта строка заполняется автоматически при выборе имени поля в первой строке бланка запроса. Для выражений имя таблицы заполнять необязательно.

В строке "Сортировка" можно указать порядок сортировки данного поля.

Строка "Вывод на экран" содержит флажок, который указывает на то, будет ли выводится соответствующее поле запроса на экран при просмотре результатов выполнения запроса.

В строках "Условия отбора", "или:" задаются условия отбора записей из таблиц в виде логических выражений, например, (>30), (>="Москва"), (=10).

Если требуется выполнить групповые операции над записями таблицы, то необходимо нажать кнопку Групповые операции на панели инструментов Конструктор запросов. После этого в бланке запроса появится строка "Групповая операция". Из раскрывающегося списка можно выбрать тип операции: Sum, Avg, Count, Min, Max и др.

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

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

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

При задании условия отбора записей можно использовать операторы сравнения: <, >, <=, >=, =, <>, логические функции: And, Or, Not, Xor, арифметические операции: + (сложение), -(вычитание), * (умножение), / (деление), \ (деление нацело), mod (остаток от деления), ^ (возведение в степень), функции, например, Date() (текущая дата), Cos() (косинус угла) и др., операторы слияния строковых значений – &, например, "Мос" & "ква", операторы сравнения с образцом: Between (задает диапазон значений, например, Between 10 and 20), Is (Определяет, является ли значение пустым, например, Is Null или Is Not Null), In (задает список значений, например, In("Москва","Саратов","Кострома")), Like (задает сравнение по шаблону, например, Like "?а*", означает слова, в которых вторая буква а, в шаблоне можно использовать символ "?", который замещает только один знак, и символ "*", который замещает любое число знаков).

В выражениях можно использовать имена других объектов базы данных, например, [Student]![CName] – означает поле CName в таблице Student.

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

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

Пример

Сформируем запрос, выводящий ФИО студента, его показатель интеллекта, фотографию и название факультета для студентов с показателем интеллекта выше 10.

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

В первом столбце бланка запроса в первой строке из раскрывающегося списка выберите поле Student.CName, перед именем поля введите "FIO:", во втором столбце выберите поле Student.NIQ, перед именем поля введите "NIQ:", в третьем – Student.OPhoto, перед именем поля введите "Photo:", в четвертом – Department.CName, перед именем поля введите "Department:".

Во втором столбце в строке Условия отбора введите выражение ">50".

На рисунке представлено окно Конструктора запроса на выборку данных
из таблиц Department и Student

Закройте окно Конструктора запросов, дайте запросу название SmartStudent.

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

Откройте запрос в режиме SQL и посмотрите как будет выглядеть сформированный запрос на языке SQL. Он должен выглядеть следующим образом: "SELECT Student.CName AS FIO, Student.NIQ AS NIQ, Student.OPhoto AS Photo, Department.CName AS Department FROM Department INNER JOIN Student ON Department.NDepartment = Student.NDepartment WHERE (((Student.NIQ)>50));".

Используя конструктор запросов или вводя SQL операторы, создайте следующие запросы:

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

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

Не используя операции отношения создайте запрос, который позволит получить все сведения о предметах с объемом занятий от 40 до 70 часов.

Не используя операции отношения создайте запрос, который позволит получить расположенные в алфавитном порядке сведения о предметах (только наименования), занятия по которым ведут преподаватели с кодами  от 200 до 400.

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

Создайте запрос, который позволит получить сведения о преподавателях с суммарным объемом занятий более 50 часов. Сведения упорядочить по возрастанию объема занятий, а при равном объеме – по кодам преподавателей в порядке убывания.

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

Определите средний, минимальный и максимальный объемы занятий по предметам, для которых объем занятий лежит в диапазоне от 35 до 85 часов.

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

Создайте запрос, который позволит определить, есть ли преподаватели, которые ведут занятия более, чем по одному предмету. Результатом должны быть фамилии таких преподавателей (без дублирования).

Создайте запрос, который позволит проверить уникальность кодов предметов в таблице Subject. Результатом должны быть названия предметов с одинаковыми кодами.

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

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

Сформулировать запрос, который позволит выявить все предметы, занятия по которым ведут преподаватели в должности “доцент”. При работе с таблицей Post использовать подзапрос.

Создайте запрос, который выявит все предметы, объем занятий по которым выше среднего по всем предметам.

Создайте запрос, который выявит все предметы, объем занятий по которым выше среднего по тем предметам, занятия по которым ведут преподаватели математического факультета (известен код факультета).

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

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

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

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

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

Запросы с параметрами

Для того чтобы получить информацию о студентах с другим интеллектуальным уровнем, например, большим 20, потребуется либо составить новый запрос, либо исправить условие в ранее созданном запросе SmartStudent. Эти действия придется выполнять каждый раз, когда потребуется изменить условие отбора записей. Access предлагает другой способ решения этой проблемы – запрос с параметрами.

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

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

Пример

Откройте в режиме конструктора запрос SmartStudent. Вместо числа "50" введите следующий текст "[Введите уровень интеллекта:]". Сохраните запрос под другим именем, выбрав в меню пункт Файл, Сохранить как и в открывшемся диалоговом окне выделив радиокнопку "В текущей базе данных", набрав новое имя запроса в поле ввода и нажав кнопку ОК. Откройте запрос из окна базы данных. Сначала откроется диалоговое окно, в котором будет выведен текст "Введите уровень интеллекта:" и расположено поле ввода. В поле ввода введите значение 80 и нажмите кнопку ОК. В окне появится результат запроса, содержащий две строки для студентов, уровень интеллекта которых превосходит введенное значение – 80.

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

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

Формы

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

Чтобы создать форму, необходимо в окне базы данных перейти на вкладку Формы и нажать кнопку Создать, при этом откроется окно Конструктора форм.

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

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

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

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

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

Пример

Создадим форму для просмотра результатов запроса SmartStudent.

В окне базы данных перейдите на вкладку Формы и нажмите кнопку Создать.

Выберите в меню пункт Вид, Свойства. В открывшемся окне перейдите на вкладку Все и в строке «Источник записей» из раскрывающегося списка выберите запрос SmartStudent, в строке «Разрешить изменение» установите значение «Нет», в строке «Разрешить удаление» установите значение «Нет», в строке «Разрешить добавление» установите значение «Нет», тем самым форма будет предназначена только для просмотра результатов запроса.

Выберите в меню пункт Вид, Список полей. Перенесите из него в область данных поле FIO. На форме появятся две области: область слева – надпись, область справа – поле. В левой области измените подпись, введя "ФИО" вместо "FIO:". С помощью мыши настройте размеры и расположение областей. Когда Вы щелкаете мышью по какому-либо элементу управления в окне Свойства отражаются характеристики этого элемента управления, а заголовок окна содержит название элемента управления. Перенесите на форму из окна еще два поля Departmrnt и Photo, настройте их характеристики: измените подписи "Факультет" и "Фотография", расположите все элементы управления удобным для восприятия образом.

Теперь настроим заголовок формы. В меню выберите пункт Вид, Заголовок/примечание формы. К форме будут добавлены две области: выше области данных появится область Заголовок формы, а ниже – Примечание формы. На панели инструментов Панель элементов найдите кнопку с подсказкой Надпись, на ней нарисованы две буквы "Аа", нажмите ее и щелкните мышкой в области Заголовок формы, после курсора введите текст "Лучшие студенты университета". Настройте характеристики надписи, изменив цвет текста, размер шрифта.

Высоту области Примечания формы сделайте нулевой.

Закрыв окно формы, сохраните ее под именем "Студенты".

Откройте форму, нажав кнопку Открыть в окне базы данных, и просмотрите записи.

На рисунке представлено окно Формы Студенты

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

Подчиненная форма связана с главной с помощью свойств Основные поля и Подчиненные поля элемента управления Подчиненная форма/отчет. Эти поля автоматически заполняются при вводе значения свойства Объект-источник на основе заданных связей между таблицами. Если связи не заданы (например, когда источником данных в форме является запрос), то эти свойства необходимо заполнить вручную. В свойстве Подчиненные поля необходимо ввести имя связующего поля из таблицы или запроса, на котором базируется подчиненная форма (т.е. имя поля внешнего ключа). В свойстве Основные поля необходимо ввести имя связующего поля из таблицы или запроса, на котором базируется главная форма (т.е. имя ключевого поля).

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

Внешний вид формы определяется значением свойства Режим по умолчанию для формы.

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

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

Отчеты

Еще одним объектом базы данных являются отчеты. Отчет – это данные подготовленные для печати. Чтобы создать отчет необходимо перейти на вкладку Отчеты в окне базы данных и нажать кнопку Создать. Окно Конструктора отчетов похоже на окно Конструктора форм. Формирование внешнего вида отчета аналогично формированию внешнего вида формы.

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

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

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

Пример

Создадим отчет по запросу SmartStudent.

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

Выберите в меню пункт Вид, Свойства. В открывшемся окне перейдите на вкладку Все и в строке Источник записей из раскрывающегося списка выберите запрос SmartStudent.

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

В Область заголовка группы поместите поле Department из окна полей (если оно не открыто, выберите в меню пункт Вид, Список полей).

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

В Область верхний колонтитул поместите элемент управления надпись и введите текст "Список лучших студентов университета".

В Область заголовок отчета поместите элемент управления надпись и введите текст "Университет". Характеристики надписей установите по своему желанию.

В Область примечание группы поместите элемент управления поле (он на его кнопке изображены две буквы и вертикальная черта "аб|". В надписи введите текст "Всего:" и выделите элемент управления поле. Откройте для него окно свойств и выберите строку Данные. Нажмите справа от нее кнопку с изображением трех точек для вызова построителя выражений. В левом нижнем окне дважды щелкните по значку "плюс" напротив слова "функции" и выделите пункт "Встроенные функции". Найдите в правом нижнем окне функцию Count и дважды щелкните по ее названию, при этом в верхнем окне должна появиться строка Count("expr"). В круглых скобках вместо "expr" введите символ звездочка (*) и нажмите кнопку ОК. Эта функция подсчитывает количество записей. Так как мы ее расположили в области Примечание группы, то после вывода всех записей группы будет напечатано количество записей в группе, т.е. количество студентов на факультете.

У нижней границы Области примечание группы разместите горизонтальную линию.

Область нижний колонтитул удалите.

В Области примечание отчета поместите элемент управления поле и в строке данные в окне его свойств выберите функцию Date(). 

Закройте отчет сохранив его под именем Факультеты.

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

На рисунке представлено окно Конструктора отчета Факультеты

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

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

Макросы

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

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

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

Информатика лекции и контрольные