Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекция базы данных.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
750.08 Кб
Скачать

5. Создание таблиц, форм, запросов и отчетов с помощью мастеров.

Конструирование форм

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

Выполним такие шаги мастера:

  1. виберем поля Kil и Data;

  2. внешний вид – в один столбик;

  3. стиль – стандартный;

  4. зададим имя формы – Oblik, команда Готово.

Откроем форму в режиме конструктора, отредактируем надписи, выровняем поля формы. Перенесем на форму из Панели элементов в Поле со списком для кода газопровода, ответим на шаги мастера:

  1. будут использованы значения из таблицы;

  2. зададим имя таблицы Gazpr;

  3. доступные поля - все;

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

  5. имя поля, которое нужно сохранить – Kodpr (из таблицы Gazpr);

  6. сохранить в поле Kodpr (таблицы Oblik);

  7. зададим имя поля со списком Kodpr, команда Готово.

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

Для отображения в поле Data формы текущей даты вызовем окно Свойства для этого поля. Перейдем в раздел Данные, установим значение по умолчанию =Date().

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

  1. обработка записей – сохранить запись;

  2. отредактируем текст на кнопке, напишем Добавить запись;

  3. согласимся с мастером о названии кнопки, команда Готово.

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

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

Примеры построения запросов MS Access

Для создания нового запроса визуальным способом необходимо в окне База данных установить переключатель на Запросы и выполнить команду Создать. После этих действий открывается окно Новый запрос, которое имеет пять переключателей. Среди них следует использовать Конструктор для простого запроса и Перекрестный запрос - для перекрестного. После нажатия кнопки Ok открывается соответствующее этим переключателям окно Запроса в режиме конструктора. На его фоне должно находиться окно Добавить таблицу подобно тому, как это было с уже рассмотренным окном Схема данных. Если оно отсутствует (например, нечаянное закрытие), то его можно вызвать командой Добавить таблицу из окна MS Access так же, как это делается при установлении связей между таблицами или с помощью контекстного меню. При этом курсор должен находиться на верхнем чистом поле запроса.

Новый запрос в режиме конструктора создается в три этапа:

  1. занесение таблиц или других запросов в верхнее поле запроса;

  2. перенос в запрос полей из источников запроса;

  3. занесение выражений в нижнюю часть окна запроса.

Построим запрос для отчета по условию задачи 4. Напомним, что отчет должен содержать данные про суммарный объем транспортируемого газа за текущий год по каждому предприятию для показанного на форме газопровода. В окне База данных выберем объект Запросы. Появляется окно Новый запрос, в котором выбираем Конструктор. Появляется окно Конструктора запроса, на фоне которого имеется окно Добавить таблицу с перечнем таблиц базы данных. Выбираем таблицы Pidpr (для выбора названий предприятий) и Oblik (для данных об объеме газа, дату и код газопровода), и с помощью команды Добавить заносим их макеты на верхнее поле конструктора запроса. Выполняем команду Закрыть в окне Добавить таблицу. Установим временные связи между таблицами с помощью кодового поля Kodpp, для этого перенесем его из макета одной таблицы на другую.

Внесем в запрос следующие поля:

  • Nazpp;

  • Suma: Kil, установим групповую операцию: Sum;

  • Rik: Year ([Data]), условие отбора записей: Year (Date());

  • Kodpr, условие отбора записей: [Forms]![Form]![Kodpr].

Групповые операции вызываем с помощью соответствующей кнопки на панели инструментов.

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

Ob_sum

Nazpp

Suma

Rik

Kodpr

Экспорттрансгаз

1

2006

2

Львовтрансгаз

2

2006

2

Рисунок 3.8 – Копия запроса Ob_sum в в режиме просмотра

С целью проверки запроса выполним все необходимые операции вручную. Таблица Oblik содержит три записи о транспортировке газа по газопроводу с кодом 2 (это предприятия с кодами 1, 4, и 5), но только два последних предприятия отражены в таблице, как такие, что работали в 2006 текущем году. В запросе правильно отражены предприятия с кодами 4 и 5. Совпадают и суммы транспортируемого газа. Заметим, что во время проверки запроса системная дата содержала 2006 год. Следовательно, запрос работает верно, закроем его и дадим ему название Ob_sum.

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

  • Rik: Year([Data]), условие отбора записей: Year(Date())-Year([Data])<9;

  • Kilk:Kil, групповая операция: Sum;

  • Kodpp, условие отбора записей: [Forms]![Form][Kodpp];

  • Nazpp.

Grafik

Rik

Kilk

Kodpp

Nazpp

2002

3

1

Харьковтрансгаз

2006

6

1

Харьковтрансгаз

Рисунок 3.9 – Копия запроса Grafik в в режиме просмотра

Копия запроса для диаграммы показана на рис. 3.9. Во время его открытия был введен код предприятия 1 (из-за отсутствия формы), название которого Харьковтрансгаз отражено в запросе. В таблице Oblik есть три записи о нем: один за 2002 год с количеством 3 и два за 2006 год с суммарным количеством 6, что верно отражено в запросе.

Rozpodil

Nazpr

Nazpp

Kilkist

Rik

Гадяч - Кобеляки - Киев

Киевтрансгаз

2

2006

Гадяч - Кобеляки - Киев

Прикарпаттрансгаз

3

2006

Гадяч - Кобеляки - Киев

Харьковтрансгаз

5

2006

Орел – Киев

Харьковтрансгаз

1

2006

Украина

Экспорттрансгаз

1

2006

Украина

Львовтрансгаз

2

2006

Рисунок 3.10 – Копия запроса Rozpodil в в режиме просмотра

Для отчета по условию задачи 6 о распределении количества транспортируемого газа на каждом газопроводе по предприятиям в текущем году построим такие два запроса: простой - Rozpodil и перекрестный Rozpodil_p.

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

  • Nazpr;

  • Nazpp;

  • Kilkist: Kil, групповая операция: Sum;

  • Rik: Year([Data]), условие отбора записей: Year(Date()).

Запрос Rozpodil_p изготовим с помощью мастера перекрестного запроса, отвечая на его шаги, в качестве строк выберем поле Nazpr - названия газопроводов, а в качестве столбцов поле Nazpp - названия предприятий. Источником этого запроса является запрос Rozpodil, который в режиме просмотра показан на рис. 3.10. Запрос Rozpodil_p показан на рис. 3.11. Сверив данные, что есть в этих запросах с данными таблиц, убеждаемся в том, что запросы работают верно.

Rozpodil_p

Nazpr

Итоговое значение Kilkist

Экспорттрансгаз

Киевтрансгаз

Львовтрансгаз

Прикарпаттрансгаз

Харьковтрансгаз

Гадяч - Кобеляки - Киев

10

2

3

5

Орел – Киев

1

1

Украина

3

1

2

Рисунок 3.11 – Копия запроса Rozpodil_p в режиме просмотра

Запрос для почтовой наклейки по условию задачи 8 содержит информацию из двух таблиц: Gazpr и Oblik. В режиме просмотра он показан на рис 3.12. Он имеет название Naklejka и содержит следующие поля:

  • Nazpr;

  • Kil:Kil, групповая операция: Sum;

  • Kilnyt;

  • Diam;

  • Povidom:Iif([Kilnyt]>3;"Колич. ниток больше 3";"");

  • Vidbir:Iif(Year(Date())-Year([Data])<11;True;False), условие отбора: = True. (На рисунке 3.12 это поле не показано).

Naklejka

Nazpr

KKil

Kilnyt

Diam

Povidom

Гадяч - Кобеляки - Киев

10

4

1700

Колич. ниток больше 3

Орел – Киев

12

1

1200

Украина

6

1

1400

Рисунок 3.12 – Копия запроса Naklejka для почтовых наклеек в режиме просмотра

Построим запрос для формы по условию задачи 7. Эта форма служит для просмотра всех данных, поэтому в окно конструктора запроса внесем все таблицы (Gazpr, Oblik и Pidpr) и соединим их между собой с помощью соответствующих кодовых полей. Внесем в запрос следующие поля:

  • Nazpp – название предприятия;

  • Kodpr – код газопровода;

  • Nazpr – название газопровода;

  • Kilnyt – количество ниток газопровода;

  • Diam – диаметр газопровода;

  • Karta – карта-схема газопровода;

  • Kil – количество транспортированного газа;

  • Data – дата учета;

  • Logopp – логотип предприятия.

Назвем запрос D_form, он не содержит ни групповых операций, ни условий отбора записей.

Изготовление отчетов

Рисунок 3.13. – Отчет Ob_sum в режиме просмотра

Отчет Ob_sum по условию задачи 4 изготовим с помощью мастера отчета. В окне База данных выберем объект Отчет, выполним команду Создать. Появляется окно Новый отчет, выбираем в нижней его части источник отчета - запрос Ob_sum, а в верхней - мастера.

Дадим ответы на шаги мастера:

  1. на предложение выбрать имена полей, выберем: Nazpp и Suma;

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

  3. мастер предлагает установить порядок сортировки строк, оставим все без изменения, команда Ok;

  4. макет отчета - ступенчатый;

  5. стиль – спокойный;

  6. дадим имя отчету Ob_sum, команда Готово.

На рисунке 3.14 показано окно Панель элементов, оно вызывается на экран из окна MS Access командами Вид-Панель элементов или из контекстного меню. Кнопка команды имеет вид перекрещенных молотка и гаечного ключа.

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

Просмотрим отчет, изготовленный мастером, перейдем в режим конструктора. В окне конструктора отредактируем надписи и из окна панели элементов установим два вышеупомянутых поля. Для первого поля откроем контекстное меню, вызовем окно Свойства. В нем выберем раздел Данные и в строке Данные запишем формулу Date(). Аналогично во второе поле - значение [Forms]![Form]![Nazpr]. Готовый отчет Ob_sum показан на рис. 3.13.

Для построения графика по условию задачи 5 вызовем мастер диаграмм, выберем источник - запрос Grafik. Отвечая на шаги мастера, выберем все поля, тип - Гистограмма, на надпись Оси перенесем поле Rik, Данные - поле Kilk. Назовем диаграмму Grafik.

Отредактируем диаграмму в окне конструктора, для этого поставим курсор на область данных, вызовем контекстное меню и выполним команду диаграмма - Изменить, что позволит редактировать все элементы диаграммы. Изготовим поле и внесем в него формулу ="Предприятие:" & [Forms]![Form]![Nazpp] подобно тому, как это делалось для запроса Ob_sum. Напомним, что код именно этого предприятия будет выбран в запросе для графика во время его запуска из формы.