Смекни!
smekni.com

Основные принципы работы базы данных MS Access: составление сводки о выполнении сроков проведения работ на объекте (стр. 2 из 3)


Рисунок 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).