- •Создание и поиск информации в многотабличной базе данных
- •Создание таблиц и связей в Access. Формы ввода для многотабличной базы данных
- •Связи между таблицами
- •Создание форм ввода. Подчинение в формах ввода
- •Создание запросов к многотабличной базе данных
- •Создать запрос, отражающий следующую информацию: фио пациента, дату его рождения, № палаты, количество мест в палате, фамилию лечащего врача, его категорию и специальность.
- •Запросы с параметром
- •Запросы на вычисление
- •Запросы на вычисление с использованием встроенных функций
- •Создание форм и отчетов к многотабличной базе данных
Запросы с параметром
Создать запрос, отображающий всю информацию о пациенте после ввода его фамилии.
Параметром в запросе считается любая информация, вводимая пользователем с клавиатуры во время выполнения запроса. Запросы с параметром создаются в конструкторе. Обращение к параметру внутри запроса идет по имени, которое пишется в квадратных скобках. Обратите внимание на то, что если параметр не текстового типа, то его необходимо дополнительно определить в меню Запрос Параметры.
В нашем случае параметр – это фамилия пациента – текстовое поле, причем оно является условием отбора, следовательно, запрос будет выглядеть следующим образом (см. рис. 2.14):
Запросы на вычисление
С оздать запрос «Количество смен», рассчитывающий количество отработанных смен для каждого из врачей.
Для этого в конструкторе добавим таблицу «Врачи» и «Смены». Выставим поле фамилия из таблицы «Врачи» и в свободном столбце вызовем построитель выражений, где необходимо выбрать нужную таблицу, в которой можно выделять любые поля. Для вставки полей в выражение используйте кнопку «Вставить» (см. рис. 2.15). В строке выражений
Необходимо записать сумму всех полей по модулю (abs()).
Рис.2. 15
Запросы на вычисление с использованием встроенных функций
Создать запрос, вычисляющий срок пребывания пациентов в больнице.
Для организации этого запроса добавим в конструктор таблицу «Пациенты». Выставим поле «Фамилия» из таблицы пациенты, и построим поле Срок пребывания в больнице. Для этого будем использовать встроенную функцию Date(), которая определяет текущую дату (см. рис. 2.16.)
Рис. 2.16.
Создать запрос, высчитывающий заработную плату врачей, из расчета, что ставка за смену по 1 категории 650 р., по второй – 480 р., по третьей и четвертой – 320 р.
Для вычисления заработной платы будем использовать встроенную функцию управления:
IIf(<Условие>; <Действие 1>; <Действие 2>),
где Условие – это логическое выражение, которое может принимать значение ложь или истина; действие 1 – это действие, которое выполняется, когда условие верно, а действие 2 – это действие, которое выполняется, когда условие неверно.
Таким образом, в построитель выражений у вас должно быть внесено:
Заработная плата: IIf([Врачи]![Категория]=1;[Количество смен]![Общее количество смен]*650; IIf([Врачи]![Категория]=2; [Количество смен]![Общее количество смен]*450;[Количество смен]![Общее количество смен]*320))
Запросы на вычисление с использованием групповых операций
В ычислите количество пациентов в каждой палате. Для создания этого запроса необходимо добавить в конструктор таблицы «Пациенты» и «Палаты».
Для вычисления количества пациентов в палатах воспользуемся групповыми операциями (см. прил.2), которые выбираются в контекстном меню (после щелчка правой кнопкой мыши). Сгруппируем палаты по номерам (выберем в списке операцию группировка) и вычислим количество фамилий, относящихся
к каждой из палат (Count) (см. рис. 2.17)
З
Рис. 2.17
Запрос, удаляющий запись о пациенте после его выписки (если дата выписки предшествует сегодняшнему числу, следовательно, запись должна быть удалена).
Для создания запроса на действие необходимо конструктор добавить таблицу «Пациенты» и в меню Запросы определить тип запроса – на удаление. После этого необходимо, что удаляться должна фамилия, если дата выписки меньше текущей (см. рис. 2.18)
Задание для самостоятельной работы
Выберите номера всех комфортабельных палат, в которых более одного места.
Выберите всех пациентов старше 30 лет, чья фамилия начинается с буквы «П» (с любой другой буквы).
Создайте запрос с параметром, который после ввода № палаты выдавал информацию о количестве мест в ней и о количестве свободных из них.
Создайте запрос, характеризующий каждую палату на наличие мест: есть в ней места (да) или нет.
Вычислите количество специалистов каждого рода в больнице (количество хирургов, невропатологов и т. д.)
Выведите фамилии пациентов, которые провели уже в больнице более 14 дней.
Удалить записи о врачах, чья категория 4.