Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Access

.pdf
Скачиваний:
12
Добавлен:
07.06.2015
Размер:
261.96 Кб
Скачать

для связи со всеми сотрудниками фирмы. Наша задача сейчас – заставить эти данные изменяться согласованно.

Вновь откройте форму «Сотрудники» в режиме конструктора. Выделите подчиненную форму «Отделы» и вызовите диалоговое окно, отображающее свойства подчиненной формы. Вызвать это окно можно либо с помощью пункта «Свойства» главного меню «Вид», либо с помощью контекстного меню, также выбрав пункт «Свойства». Появившееся диалоговое окно содержит несколько страниц, помечаемых закладками «Макет», «Данные», «События», «Другие», «Все». Переключитесь на страницу «Данные», на которой доступны следующие настройки: «Объект – источник» («Отделы»), «подчиненные поля» (не заполнено), «основные поля» (не заполнено), «доступ» («Да»), блокировка («Нет»). Чтобы данные в форме «Отделы» и в форме «Сотрудники» отображались согласованно, необходимо соответствующим образом заполнить пустые поля ввода для строк «подчиненные поля» и «основные поля». Проще выполнять эту работу не вручную, а с помощью построителя. Щелкните мышкой в поле ввода любой из этих строк. Правее поля ввода появится кнопка с многоточием. Нажатие на эту кнопку активизирует построитель и приведет к появлению диалогового окна «Связь с полями подчиненной формы». В этом окне с помощью выпадающих списков можно выбрать как основные, так и подчиненные поля

иувидеть описание результата установления связи между ними. Выберите в качестве основного поля поле «Сотрудники: номер отдела», а в качестве подчиненного «Отделы: номер отдела». В поле «Результат» Вы увидите следующее описание: «'Отделы' для каждой записи 'Сотрудники', поле связи 'сотрудники: номер отдела'». Если более подробно, это означает, что в каждый момент времени будут выведены все записи об отделах, номер которых совпадает с номером отдела для текущей записи из таблицы «Сотрудники». Нажмите «OK», закройте диалоговое окно свойств подчиненной формы

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

Итак, с помощью формы «Сотрудники» теперь можно получить полные сведения о любом из сотрудников фирмы. Однако, прежде чем мы перейдем к следующему параграфу, попробуем несколько улучшить внешний вид формы. Отметим, что информация о номере отдела в подчиненной форме, вообще говоря, избыточна. Действительно, в главной форме отображаются названия отделов, в которых работает тот или иной сотрудник. Это поле было необходимо, чтобы связать главную и подчиненную формы, а отображать его на экране совершенно необязательно. Выберите поле «отделы: номер отдела» в подчиненной форме и вызовите (посредством главного или контекстного меню) окно свойств этого поля. На странице «Макет» этого диалогового окна измените (с помощью выпадающего списка) значение поля «Вывод на экран» с «Да» (принято по умолчанию) на «Нет». То же самое можно проделать с заголовками подчиненных форм. Отредактируйте надписи, поэкспериментируйте с расположением полей на форме. Результат Ваших действий можно увидеть немедленно, просто переключившись в обычный режим отображения формы. Когда внешний вид формы «Сотрудники» будет Вас устраивать, закройте форму, чтобы сохранить внесенные изменения.

Вопросы:

1.Назовите известные Вам типы связей между таблицами.

2.Почему возникла необходимость использовать подчиненную форму для отображения телефонов отделов?

7. Ввод данных с помощью форм (часть 1).

Вероятно, Вы уже попробовали ввести какие-нибудь новые данные (или отредактировать старые) с помощью созданной формы. Если нет, то откройте форму «Сотрудники» в обычном режиме отображения и попробуйте добавить нового сотрудника (допустим, стажера Никитина Н.Н. с табельным номером 3078) в рекламный отдел, а также установить в рекламном отделе новый телефон (например, 11-70-98; вероятно, Вы уже обратили внимание, что в рекламном отделе соблюдается правило: каждому сотруднику – по телефону). Чтобы это сделать, перейдите к первой пустой записи в таблице сотрудники (это можно сделать с помощью кнопки ►*; или же сначала нажать на кнопку ►| –переход к последней из имеющихся записей, а затем

– ► – переход к следующей записи). Заполните вручную пустые поля «табельный номер» и «Фамилия И.О.», а отдел и должность нового сотрудника выберите из выпадающих списков. Таблица телефонов в этот момент пуста и добавить новый номер телефона для рекламного отдела пока нельзя. Чтобы это сделать, потребуется перейти на любую другую запись, чтобы сведения о новом сотруднике были внесены в таблицы, а затем вернуться к только что введенной записи (при этом будет контролироваться уникальность табельного номера). Теперь данные в подчиненной форме будут обновлены, и можно дописать в конец выводимого списка новый телефонный номер.

А что делать, если в фирме будет создан новый отдел или введена новая должность? Например, принято решение развернуть локальную компьютерную сеть, для обслуживания которой потребуется создать отдел автоматизации, в котором будут работать системный администратор, инженер по обслуживанию аппаратуры и программист? Форма «Сотрудники» пока не предоставляет возможности создавать новые отделы и новые должности. Впрочем, добиться этого не так уж сложно.

8. Создание форм (часть 3).

Чтобы можно было вводить названия новых отделов (в таблицу «Отделы») или наименования новых должностей (в таблицу «Должности»), мы будем использовать следующий механизм. На форме «Сотрудники» будут помещены кнопки (с названиями, например, «Новый отдел» и «Новая должность»); нажатие на какую-либо из этих кнопок откроет соответствующую форму, в которую и можно будет ввести новую информацию.

Кроме кнопок потребуются две формы очень простого вида – для ввода новых должностей и отделов соответственно. Сначала займемся формой для ввода новых отделов. Дважды щелкните мышкой в окне базы данных (на странице «Формы») по пункту «Создание формы с помощью мастера» и в первом диалоговом окне выберите таблицу «Отделы» в качестве источника данных для формы. Переместите в список выбранных полей поля «Отделы: номер отдела» и «Отделы: наименование».

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

Затем (в следующих диалоговых окнах) выберите внешний вид и стиль формы и задайте ее имя как «Редактирование таблицы Отделы». Если вид формы не будет Вас устраивать, откройте ее в конструкторе и отредактируйте.

Следующая форма – для редактирования таблицы «Должности» – будет создана с помощью инструмента «Автоформа». Этот инструмент предназначен специально для создания простых форм, в которых нужно указать все поля таблицы. Нажмите кнопку

«Создать» на панели инструментов окна базы данных и выберите один из видов автоформы: в столбец, ленточную или табличную, а в качестве источника данных – таблицу «Должности». Нажмите на «OK» – и форма будет создана и открыта. Если полученный результат Вас устраивает, закройте форму и ответьте «Да» на запрос MS Access на сохранение изменений: «Сохранить изменения макета или структуры формы 'Форма1'». После этого в диалоговом окне «Сохранение» Вам будет предложено ввести имя формы. Назовите ее «Редактирование таблицы Должности» и нажмите на «OK». Форма будет сохранена, и ее имя появится на странице «Формы» в окне базы данных.

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

Откройте форму «Сотрудники» в режиме конструктора и поместите на нее (например, рядом с полем со списком «Отдел») кнопку. При этом активизируется Мастер создания кнопок. В первом диалоговом окне предлагается выбрать действие, которое будет выполняться при нажатии кнопки. Сначала нужно определиться с категорией – в нашем случае это будет категория «Работа с формой», а затем с действием – «Открыть форму». Нажмите на кнопку «Далее» и в следующем диалоговом окне выберите форму, которая будет открываться нажатием данной кнопки – «Редактирование таблицы Отделы». На следующем шаге нужно определить, требуется ли отбор записей при отображении формы. Из двух возможных вариантов – «Открыть форму для отобранных записей» и «Открыть форму и показать все записи» – по умолчанию выбран последний. Именно он и нужен для наших целей: перед тем, как создать запись о новом отделе, пользователь должен ознакомиться со списком существующих отделов. Следующее диалоговое окно предлагает разместить на кнопке либо текст, либо рисунок. Вариант «текст» предпочтительнее, если Вы не будете размещать рядом с кнопкой какую-либо поясняющую надпись. Введите текст «Новый отдел» в строке редактирования (надпись на кнопке панели «Образец» диалогового окна сразу же изменится). Последнее диалоговое окно предлагает задать имя кнопки. Вообще говоря, можно не менять имя по умолчанию, поскольку использовать его нам не придется: изучение программирования на Visual Basic выходит за рамки нашего курса. Однако можно последовать рекомендации Мастера и вместо не слишком информативного «Кнопка18» или чего-либо подобного ввести, например NewDepartment (используем английское наименование, чтобы отличать имя кнопки от надписи на ней). Теперь остается нажать кнопку «Готово», и кнопка «Новый отдел» появится на форме «Сотрудники».

В точности также, повторив все только что описанные действия, следует создать кнопку «Новая должность». Отличия состоят в том, что кнопка будет открывать форму «Редактирование таблицы Должности» и иметь другое имя и другую надпись («Новая должность»). Закройте форму, чтобы сохранить Вашу работу, и вновь откройте ее, но уже в обычном режиме – чтобы проверить, как действуют кнопки.

Вопросы:

1.Когда можно использовать инструмент «Автоформа»?

2.Как создать кнопку на форме и связать нажатие на нее с каким-либо действием?

9. Ввод данных с помощью форм (часть 2).

Чтобы внести в таблицу «Отделы» запись о новом отделе автоматизации, теперь достаточно выполнить следующие действия. Сначала нажмите на кнопку «Новый отдел», чтобы вызвать форму «Редактирование таблицы Отделы», перейдите к первой пустой записи в форме и заполните поля «номер отдела» (пусть номер нового отдела будет 4) и «наименование» (отдел автоматизации). При закрытии формы данные будут

сохранены в таблице, и (проверьте!) в выпадающем списке «отделы» появится отдел автоматизации. Затем – определение новых должностей. Нажмите на кнопку «Новая должность» и, перейдя к первой пустой записи в таблице «Должности», введите информацию о новых должностях. Как уже говорилось (см. п.7), в новом отделе (кроме начальника, разумеется) будут работать системный администратор (разряд 9, оклад 3700р.), инженер по обслуживанию аппаратуры (разряд 8, оклад 3200р.) и программист (разряд 7, оклад 3100р.). Теперь можно «принимать» на работу новых сотрудников. Занесите в базу данных записи о следующих сотрудниках отдела автоматизации:

4001

Тимофеев Т.Т.

начальник отдела

4002

Филиппов Ф.Ф.

системный администратор

4003

Сергеев С.С.

инженер по обслуживанию аппаратуры

4004

Михайлов М.М.

программист

Осталось только установить в новом отделе телефоны. Некоторая проблема состоит в том, что при выборе из выпадающего списка нового отдела его номер не переносится автоматически в подчиненную форму, содержащую номера телефонов. Можно либо добавить номер отдела вручную, либо (что проще) после заполнения всех полей главной формы нажать на кнопку перехода к следующей записи, а затем вернуться назад. Конечно, это не лучшее решение, но на данном этапе его можно считать приемлемым. Добавьте следующие номера телефонов для нового отдела: 11-12-42 и 11- 88-20.

10. Разработка и использование запросов (часть 1, запрос на обновление).

Помимо только что указанного недостатка разработанной формы есть и некоторые другие. Откройте таблицу «Отделы» и обратите внимание на запись об отделе автоматизации: табельный номер начальника не указан. Почему – понять не так уж сложно. Действительно, не существует ни прямой, ни косвенной связи между данными о разряде сотрудника, номере отдела, в котором он работает, и полем «начальник». Конечно, было бы удобно, если бы при выборе из выпадающего списка должности «начальник отдела» табельный номер указанного сотрудника сразу бы заносился в таблицу «Отделы». Однако такая операция требует некоторых навыков программирования, а мы сознательно ограничиваем рассмотрение простейшими приемами работы с базами данных. Поэтому назначать начальника придется с помощью дополнительной кнопки. Нажатие на эту кнопку будет приводить к выполнению запроса на обновление данных. Вообще говоря, Access предусматривает возможность составления запросов на специальном языке запросов SQL (Standard Query Language), который является общепринятым стандартом в мире баз данных. Однако поскольку Access задумывался и разрабатывался первоначально как настольная система, в нем развиты средства визуального проектирования запросов, не требующие знания какого-либо языка. Конечно, эти средства не отменяют необходимости четко понимать логику запроса.

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

воспользоваться меню «Запрос»). Это изменит наименование полей в нижней части бланка следующим образом:

Поле Имя таблицы Обновление Условие отбора или

Прежде чем заполнить поля бланка запроса, попробуем составить логическое выражение, вычисляющее нужное значение. Итак, нужно обновить значение поля «Отделы: начальник» в таблице «Отделы», записав в это поле табельный номер сотрудника («Сотрудник: табельный номер»); причем для этого сотрудника должны соблюдаться два условия. Во-первых, он должен работать в этом отделе («Сотрудник: номер отдела» = «Отделы: номер отдела»), во-вторых, должность его должна быть «начальник отдела» («Сотрудник: разряд» = «Должность: разряд» при условии «Должность: наименование» = 'начальник отдела'). Конечно, можно возразить, что разряд начальника отдела установлен равным 6, однако с введением новых должностей разрядная сетка может быть и пересмотрена – в отличие от наименования должности. Поэтому рассмотренная нами «сложная» схема представляется более устойчивой.

Теперь задача состоит в том, чтобы «перевести» логическое выражение «на Access». Дважды щелкните мышкой по полю «Отделы: начальник отдела» таблицы «Отделы» в окне бланка запроса. Оно тут же появится в первой колонке в нижней части бланка. Кроме того, сразу же будет установлено имя таблицы – «Отделы». (Можно также воспользоваться выпадающим списком в графе «Поле» первой колонки). Теперь щелкните мышкой в графе «Обновление» (опять же первой колонки) и активизируйте построитель выражений. Это можно сделать либо нажав на панели инструментов кнопку «Построить», либо воспользовавшись соответствующим пунктом контекстного меню. В открывшемся диалоговом окне Вы увидите четыре панели (возможно, их стоило бы назвать подокнами). Верхняя панель служит собственно для формирования выражений, а три нижних – отображают объекты, которые могут участвовать в формировании выражений, с разной степенью детализации. В левой нижней панели выберите категорию «Таблицы» и таблицу «Сотрудники». В средней нижней панели отобразится список полей таблицы «Сотрудники», а в правой нижней панели – только одна возможность: <Значение>.

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

Выделите поле «Сотрудники: табельный номер» (вообще, оно должно быть подсвечено, если Вы не переключались на другое поле из списка), нажмите кнопку «Вставить», а затем – «ОК». В результате в графе «Обновление» первой колонки у Вас окажется выражение следующего вида: [Сотрудники]![сотрудники: табельный номер]. В дальнейшем, когда запрос будет выполняться, именно значение табельного номера подходящего сотрудника будет внесено в таблицу «Отделы». Теперь следует определить, какие же сотрудники являются подходящими. Двойной щелчок мышкой по полю «Сотрудники: номер отдела» приведет к появлению его в графе «Поле» второй колонки, а в графе «Имя таблицы» появится «Сотрудники». Это поле не будет обновляться, но на него будут наложены условия отбора. Поэтому перейдите к графе

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

([Сотрудник]![сотрудники: номер отдела] = [Отделы]![отделы: номер отдела]) And ([Сотрудник]![сотрудники: разряд] = [Должности]![Должности: разряд]) And ([Должности]![Должности: наименование] = 'начальник отдела')

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

Создайте кнопку, выполняющую запрос «Начальник отдела (обновление)» и назовите ее «Новый начальник». Закройте форму «Сотрудники», чтобы сохранить внесенные изменения, и вновь откройте ее уже в обычном режиме. Откройте таблицу «Отделы»: в данный момент поле «Отделы: начальник отдела» для отдела автоматизации пусто. Теперь закройте таблицу и нажмите на кнопку «Новый начальник» в форме «Сотрудники». Откройте таблицу «Отделы» вновь и убедитесь, что в поле «Отделы: начальник отдела» указан табельный номер 4001.

Замечание 2. Вероятно, Вы уже готовы сказать: «Это неудобно! Каждый раз открывать таблицу, чтобы точно узнать, кто же в действительности начальник отдела!». Конечно, неудобно. И сейчас мы дополним форму «Сотрудники» таким образом, чтобы можно было легко получить список всех начальников отделов.

Разумеется, несложно получить доступ из формы «Сотрудники» к данным, содержащимся в поле «Отделы: начальник отдела» таблицы «Отделы». Сделать это можно разными способами; сейчас мы используем для этих целей запрос.

Вопросы:

1.Какие типы запросов можно создавать с помощью Access? Какие из них могут создаваться только в режиме конструктора?

2.Поясните элементы логического выражения, приведенного в этом пункте.

11. Создание и использование запросов (часть 2, запрос-выборка)

Поставим задачу отобразить интересующие нас сведения в следующем формате: | наименование отдела| |ФИО сотрудника – начальника отдела|.

Это можно сделать с помощью запроса-выборки. Переключитесь на страницу «Запросы» окна базы данных и выберите пункт «Создание запроса в режиме конструктора». Добавьте в новый запрос таблицы «Отделы» и «Сотрудники». В графу «Поле» первой колонки поместите (так же, как описывалось при создании запроса на обновление) поле «Отделы: наименование», в графу «Имя таблицы» – «Отделы». В графу «Поле» второй колонки поместите поле «Сотрудники: ФИО», в графу «Имя таблицы» – «Сотрудники». В графу «Условие отбора» с помощью построителя выражений вставьте следующее выражение:

[Отделы]![отделы: начальник] = [Сотрудник]![сотрудники: табельный номер]

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

Замечание 1. Просмотреть результаты запроса, не сохраняя его, можно с помощью кнопки «Вид» на панели инструментов. Эта же кнопка позволяет увидеть текст запроса на языке SQL, который автоматически генерируется Access.

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

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

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

Вопросы.

1.Как можно увидеть текст SQL – запроса, который генерирует Access при создании запроса «по образцу» (т.е. с помощью бланка)? Прочитайте этот текст и прокомментируйте его.

2.Как запретить ввод в поля формы?

12. Создание и использование запросов (часть 3, запрос с параметрами).

Те запросы, которые были Вами созданы, в некотором смысле «статичны». Чтобы изменить характер или отображение информации с помощью этих запросов, нужно редактировать их непосредственно. Это не всегда удобно. Access позволяет создавать и использовать запросы, в которых можно изменять некоторые параметры. Например, пользователь хочет узнать размер зарплаты какого-то конкретного служащего. Ему не нужны сведения обо всех, которые можно получить с помощью стандартного запроса – выборки.

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

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

колонке, в графе «Поле» которой размещено поле «Сотрудники: ФИО», поместите в графе «Условие отбора» в квадратных скобках текст приглашения, например: [Введите фамилию, и.о. сотрудника:]. Сохраните запрос под именем «Запрос об окладе» и выполните его, дважды щелкнув по значку запроса в окне базы данных. При этом появится диалоговое окно «Введите значение параметра» с приглашением «Введите фамилию, и.о. сотрудника» и пустой строкой, в которой пользователь и должен напечатать данные сотрудника. Напечатайте в этой строке, например, «Филиппов Ф.Ф.», нажмите на «ОК» – и Вы сразу же увидите, что оклад этого сотрудника составляет 3700 р. в месяц.

Замечание 2. Фамилию сотрудника, разумеется, надо печатать без кавычек.

У разработанного запроса есть следующий недостаток. Введенные фамилия и инициалы в точности должны совпадать с теми, что содержатся в базе данных. В противном случае никакой информации не выдается. Попробуйте, например, напечатать в строке запроса «Иванов» (без инициалов) – и, нажав на «ОК», Вы увидите пустую таблицу. Исправить это положение можно, изменив условие отбора. Оператор Like (в построителе выражений есть соответствующая кнопка) в комбинации с подстановочным символом «*» позволяет выполнять поиск слов, которые начинаются с указанных символов или содержат их. Так, чтобы получить информацию о сотруднике, введя первые буквы его фамилии, следует переписать условие отбора следующим образом:

Like [Введите первые буквы фамилии сотрудника: ] & "*"

Вы можете просто отредактировать соответствующую строку или же воспользоваться построителем выражений. Теперь, чтобы узнать оклад сотрудника Иванова И.И., достаточно ввести в диалоговом окне всего одну букву: «и», при этом не имеет значения, будет ли она прописной или строчной.

Вопросы:

1.Имеет ли значение регистр символов в запросе «Запрос об окладе»? Почему?

2.Какие подстановочные символы могут быть использованы при создании запросов. Приведите примеры их применения.

13. Создание и использование запросов (часть 4, групповые операции)

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

Выберите на странице «Запросы» окна базы данных пункт «Создание запроса в режиме конструктора» и добавьте в бланк нового запроса таблицы «Отделы», «Должности» и «Сотрудники». Нажмите на кнопку «Групповые операции» на панели инструментов

å»). Это приведет к появлению в нижней части окна бланка запроса дополнительной графы «Групповая операция». Теперь можно приступать к заполнению колонок. В графе «Поле» первой колонки поместите поле «Отделы: наименование». В графе «Имя таблицы» автоматически появится имя таблицы «Отделы», а в графе «Групповая операция» – значение по умолчанию «Группировка». Ничего изменять в первой колонке не нужно.

Вторая колонка будет содержать собственно вычисляемое выражение. Графу «Поле» нужно заполнить по следующему образцу: <Название колонки таблицы> : <вычисляемое выражение>. Название колонки таблицы не является обязательным и может быть опущено. Если оно присутствует, оно будет использовано при выводе на экран результатов запроса. В противном случае название колонки таблицы будет автоматически сформировано Access (и оно вряд ли будет информативным для пользователя). Напечатайте в графе «Поле» второй колонки следующее:

Суммарная зарплата: Sum([Должности: оклад])

Замечание 1. Достаточно длинные выражения неудобно печатать непосредственно в бланке запроса: они не видны полностью. Щелкните мышкой в ячейке, в которую нужно ввести выражение и нажмите клавиши <Shift><F2>, чтобы вызвать диалоговое окно «Область ввода». Когда ввод будет завершен, нажмите на «ОК», и выражение появится в ячейке бланка запроса.

Замечание 2. Помимо функции Sum существует еще ряд функций, наименования которых можно посмотреть в выпадающем списке графы «Групповая операция». Вместе с тем лучше использовать эти функции при записи выражений, а в графе «Групповая операция» указывать значение «выражение» (это рекомендуется и в оперативной справке).

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

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

Поле

[Сотрудник]![сотрудники: разряд]

[Сотрудник]![сотрудники: номер отдела]

Имя таблицы

 

 

Групповая операция

Условие

Условие

Сортировка

 

 

Вывод на экран

 

 

Условие отбора

[Должности]![Должности: разряд]

[Отделы]![отделы: номер отдела]

или

 

 

Замечание 3. Здесь приведены только третья и четвертая колонки бланка запроса, а не весь бланк!

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

Просмотрите результаты запроса, и если он корректно работает, сохраните его.

Замечание 5. Данные можно группировать и по нескольким полям. Однако в таких случаях рекомендуется использовать перекрестные запросы.

Вопросы.

1.Какие групповые операции возможны в Access?. Охарактеризуйте их.

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

14. Генерация отчетов (часть 1)

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

Замечание 1. Кнопка «Вывести дополнительные сведения», также расположенная в левой части диалогового окна, возможно, поможет Вам выбрать наиболее подходящий вариант.

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

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

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

По умолчанию Access использует в качестве заголовков столбцов отчета названия соответствующих полей таблиц (в нашем случае это «отделы: наименование» и «сотрудники: ФИО»). Отчет будет выглядеть лучше, если заменить эти заголовки более

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]