Рисунок 6. Построение выражения
Далее составляем функцию вычисления состояния работы (т.е. работа ведется с отставанием, опережением или точно в срок) для этого необходимо воспользоваться функцией IIf - возвращает одно из двух значений, в зависимости от оценки.
Если Фактическая Дата окончание больше даты По Плану то работы выполняются с опережением, иначе если Фактическая Дата окончания равна дате По Плану, то работы выполняться в срок, иначе работы выполняются с отставанием. Назовем это вычисление Состояние. Состояние: IIf (Связь! [ФактДата окончания] > (DateAdd ('d'; Связь! [Норматив работы]; Объект! [Дата начала])); 'Работа выполняються с отстованием'; IIf (Связь! [ФактДата окончания] = (DateAdd ('d'; Связь! [Норматив работы]; Объект! [Дата начала])); 'Работа выполняеться в срок'; ' Работа выполняеться с опережением'))
Рисунок 7. Построение выражения
Для того что бы выводились все поля необходимо поставить галочки Вывод на экран.
Рисунок 8. Запрос Данных о работах
В итоге получаем таблицу в виде:
Рисунок 9. Запрос в режиме Таблицы
Теперь создадим новую форму в конструкторе, в свойствах выберем Источник записей - Данные о работах, чтобы связать ее с запросом. Из Списка полей перетащим в форму нужные поля. Добавим в форму кнопки Предыдущая запись, Следующая запись и Кнопка закрытия. Для этого на панели инструментов находим кнопку и нажимаем на нее. Затем нажимаем мышкой на форме и производим нужные действия.
Подчиненные формы представляют большую гибкость при отображении и вводе данных из нескольких таблиц. Другими словами, подчиненная форма - это форма внутри формы, которая позволяет использовать данные из нескольких таблиц в одной форме.
В рамках данной базы данных существует возможность того, что на одном объекте может выполняться несколько работ, поэтому целесообразно будет создать такую форму, которая позволит просматривать данные о работах, выполняемых на каждом объекте, не создавая при этом каждый раз отдельный запрос.
Для добавления Подчиненной формы в главную нужно сделать следующее: перетащить Подчиненную форму из окна базы данных в форму Объект, открытую в режиме Конструктора. Вид главной формы Объект и вид этой же формы со вставленной Подчиненной формой представлен на рисунках 9а и 9б соответственно.
Рисунок 9а - Структура формы Объект
Рисунок 9б - Структура формы Объект после вставки Подчиненной формы
Для удобства поиска объекта создадим поле со списком где будут отражать все объекты наше базы данных. Для этого необходимо создать запрос с наименованиями объектов, назовем его Поиск объекта и макрос поиска (Рисунок 10), который будет называться Поиска объекта. Макросы Accessпозволяют автоматически повторять различные действия и тем самым избавляют нас от написания сложных программ и подпрограмм. Макрос - это набор команд и инструкций, выполняемых как одна команда. Макросы Accessобычно не дублируют отдельных нажатий клавиш или перемещений мыши, выполняя особые, заданные пользователем задачи, например, открытие формы или запуск отчета.
В Макрокоманде найдем КЭлементуУпраления в аргументах макрокоманды введем [Наименование объекта], следующий пункт в макрокоманде будет ПоискОбъекта, где указывается аргументах макрокоманды имя Поля со списком в нашем случае это = [Поиск объекта]. Затем в свойствах поле со списком выбираем Источник строк запрос под именем Запрос наименование объекта и во вкладке события вполе После обновления выбираем макрос под именем Поиска объекта.
Рисунок 10. Макрос поиска объекта
Установим некоторые свойства для формы. Выберем пункт меню Вид - Свойства (в заголовке появившегося окна должна отображаться надпись Форма):
1) сделаем эту форму всплывающей (всплывающая форма всегда располагается над другими окнами Access). В режиме конструктороткроем окно свойств формы. Ввести значение да в ячейку Всплывающееокно. В ячейке свойства Тип границывыберем Тонкая (запрет изменения размеров формы).
2) уберем полосы прокрутки, кнопки размеров окна, кнопки перехода в соответствующих ячейках свойств и кнопку закрытия.
3) добавим рисунок для наглядности формы для этого в панели элементов выберем объект Рисунок и в окне укажем путь, где расположен наш рисунок.
В свойствах рисунка укажем Установка размеров вписать в рамку.
Окончательный вид созданной формы представлен на рисунке 11.
Рисунок 11. Форма данных об отставании (опережении) выполнения работ на каждом объекте
Создание отчета
Отчеты используются для представления данных в удобном для пользователя виде. Отчет можно вывести на экран или распечатать на принтере. В отчете можно группировать и сортировать данные в любом порядке.
Начинать работу нужно с общего представления о макете отчета. После разработки общего формата отчета следует подобрать необходимые данные. В отчете можно использовать данные из одной таблицы базы данных или результирующий набор данных запроса.
Отчет создадим в режиме Конструктора. Необходимо получить информация о работах, производимых на каждом объекте, которые выполняться с отставанием или опережением.
Для начала добавим Заголовок отчета,который будет использоваться в качестве титульной страницы: Выполнение работ на каждом объекте. Затем откроем запрос под именем Запрос Данных о работах, возьмем из него поля Наименование объекта, Наименование работы, Дата начала, Норматив работы, По Плану, ФактДата начала, ФактДата окончании, Состояние. Эти поля размещаем в верхнем колонтитуле. Далее в область данных помещаем поля Дата начала, Норматив работы, По Плану, ФактДата начала, ФактДата окончании, Состояние.
В данной таблице будет один уровня группировки. Для создания находим на панели инструментов кнопку Сортировка и группировка. При нажатии пиктограммы Сортировка и группировкапоявляется диалоговое окно (Рисунок 12). В поле/выражениеставим поле Наименование объекта, указав порядок сортировки по возрастанию. В свойствах изменяем заголовок группы - да, примечание - да.
Рисунок 12. Сортировка и группировка
В появившийся заголовок группы перетаскиваем поля Наименование объекта.
В область нижнего колонтитула добавим еще два поля, в котором будет выводится номер страницы и дата в настоящий момент. Для этого в свойствах поля в полосе Данные с помощью построителя выражений (Общие выражения - > Страница Nиз M - > Ок) введем выражение =”Страница ” & [Page] &" из ”& [Pages] (Рисунок 13). Для даты в свойствах поля в полосе Данные с помощью построителя выражений (Общие выражения - >Текущая дата и время-> Now () - > Ок) введем выражение Now () (Рисунок 14).
Рисунок 13. Построение выражения Страница Nиз M
Рисунок 14. Построение выражения Now ()
Для наглядности отчета зальем фон цветом.
Общая структура отчета представлена на рисунке 15.
Рисунок 15. Общая структура отчета
Нажимаем Вид - Предварительный просмотр и получаем окончательный вид отчета (Рисунке 16).
Рисунок 16. Окончательный вид Отчета
Сохраняем отчет под именем Состояние работ.
Окончательным этапом в базе данных будет создание главной кнопочной формы. Она необходима для быстроты и удобства пользоваться базой данных. Например, запускать макросы открытия форм, отчетов, таблиц и т.д. В основном кнопочная форма используется в качестве главного меню приложения.
Создадим новую форму назовем ее Меню. С помощью панели элементов набросаем прямоугольников для создание отдельных площадей, затем подпишем эти площади и добавим кнопки такие как Объект, Работы, Заполнение БД, Состояние работ, кнопка открытия запроса Состояние работ, кнопки просмотр Отчета и кнопка закрытия формы называемой Выход.
Для того, что бы при нажатии определенной кнопки происходило действие необходимо создать макросы. В нашем случае это макросы открытия таблиц, открытия форм, просмотра отчета, печать отчета и макрос выхода из формы.
Для этого создадим новый макрос в режиме Конструктора, в поле Макрокомандавыберем ОткрытьТаблицу, в Аргументах макрокоманды выберем Имя таблицы - Объект, Режим данных - только чтение и еще добавим сигнал при нажатии, для что бы пользователь слышал что произошло действие с его стороны, необходимо в поле Макрокоманды выбрать Сигнал. (Рисунок 17).