Главная              Рефераты - Разное

Учебное пособие: Методические указания к курсовому проектированию по курсу базы данных для студентов дневной и заочной форм обучения специальностей

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

К КУРСОВОМУ ПРОЕКТИРОВАНИЮ

ПО КУРСУ »БАЗЫ ДАННЫХ»

для студентов дневной и заочной форм обучения

специальностей:

ИС99 (Д / О, В / О)


Составитель: доцент кафедры

к.т.н. В.А.Филатов

Протокол № 7 от 16.07.2001

Зав. кафедрой

Основные этапы разработки приложений пользователя

Основы методологии проектирования прикладных программ были заложены в 1960-х годах известными специалистами Дж. Мартином, Э. Йордоном и Л. Константайном. Современные технологии разработки прикладных программ делают построение приложений фантастически дешевым и быстрым. Квалифицированный пользователь сегодня за один вечер может создать на персональном компьютере то, что на ранних ЭВМ требовало месяцев работы, если вообще было возможным. Скорость вычислений даже по сравнению с прошедшим десятилетием возросла на несколько порядков. Однако, несмотря на мощность средств, если вы не потратите значительных усилий на определение задач и принципов работы приложения, то впоследствии вам придется потерять значительно больше времени на переделки. Ниже приводится краткий обзор основных этапов разработки приложения, использующего базу данных.

Этап 1: Уточнение задач

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

Этап 2: Последовательность выполнения задач

Чтобы ваше приложение работало логично и удобно, лучше всего объединить основные задачи в тематические группы так, чтобы, они располагались в порядке их выполнения. Может получиться так, что некоторые задачи будут связаны с разными группами или выполнение одной задачи должно предшествовать другой, принадлежащей другой группе. Группировка задач и графическое представление последовательности их выполнения поможет вам определить «естественный» порядок следования задач, который вы можете затем отразить во взаимных связях форм и отчетов в приложении.

Этап 3: Анализ данных

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

Этап 4: Определение структуры данных

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

Этап 5: Разработка макета приложения и пользовательского интерфейса

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

Этап 6: Создание приложения

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

Этап 7: Тестирование и усовершенствование

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

2. Стратегия разработки проекта приложения

При разработке приложений СУБД используется два подхода: проектирование сверху вниз , при котором разработка приложения начинается с определения основных функций и задач, и проектирование снизу вверх , при котором сначала проводится анализ данных и определение их структуры. Рекомендуемый метод включает идеи обоих подходов.

Мы начнем с определения задач и их группировки, что поможет решить, можно ли ограничиться одной базой данных /подход «сверху вниз»/. Для каждой задачи определяется набор необходимых данных, затем для связанных задач вы собираете все поля данных и начинаете процесс формирования объектов /элементы подхода «снизу вверх»/.

2.1.Анализ задач

Для проведения анализа конкретной задачи целесообразно пользоваться рабочим бланком приложения, приведенным ниже.

Рабочий бланк для описания задач приложения

Рабочий бланк приложения № 1 – Задачи

Название задачи

Краткое описание

Связанные задачи

Элемент данных

Использование

Описание

Объект

2.2. Данные и информация

Понимание различий между данными и информацией облегчит выявление сведений, которые необходимо хранить в базе данных. Это различие состоит в том, что данные – это статические значения, хранящиеся в таблицах базы данных, а информация – это сведения, запрашиваемые пользователем и предоставляемые ему в наиболее удобном виде. Другими словами данные хранятся, а информация запрашивается. Когда вы ссылаетесь на элементы, хранимые в таблицах, запросах, макросах, или работаете с ними, вы имеете дело с данными. Аналогично, когда вы работаете с наборами записей запросов, фильтрами, формами или отчетами, вы имеете дело с информацией.

2.3. Отбор необходимых данных

После определения задач нужно составить для каждой из них описание данных. В рабочий бланк занесите название каждого элемента данных, код его использования и краткое описание. Для обозначения кода использования применяется пять символов- I, O, U, D, C. Это первые буквы слов Input /входной/, Output /выходной/, Update /изменяемый/, Delete /удаляемый/, Calculate /вычисляемый/. Элемент данных является входным , если для выполнения задачи его необходимо прочитать в базе данных. Подобным образом, данные являются выходными для задачи, если они вводятся или вычисляются на основании входных данных, а затем сохраняются. Данные в задаче изменяются , если они читаются в базе данных, изменяются и записываются обратно. Естественно, задача удаляет данные, когда они убираются из базы данных. И наконец, вычисляемыми являются новые значения, получаемые на основе входных данных, которые отображаются на экране или печатаются, но не сохраняются.

2.4. Анализ данных

Теперь можно приступить к тщательному анализу данных и объединению отдельных элементов данных в объекты, которые впоследствии станут основой для создания таблиц в проектируемой базе данных.

Этап, следующий за анализом данных и их привязке к объектам, достаточно прост. Вам нужно заполнить еще один комплект рабочих бланков, приведенных ниже. В верхней части перечисляются все объекты, связанные с данным. В

графе «связь» указывается тип связи / один-к-одному или один-ко-многим /.

Для каждого элемента данных вы должны указать тип данных /числовой, текстовый, денежный, Мемо и т.д./ и длину поля. Вы можете записать в бланке условие на значение, которое должно применяться к соответствующему полю данных, затем задать эти условия в Access , чтобы использовать их для проверки данных, что особенно важно при создании приложений, которыми будут пользоваться много людей.

Рабочий бланк для описания объектов приложения

Рабочий бланк приложения № 2 – Объекты

Имя объекта

Краткое описание

Связанные объекты: Имя Связь

Элемент данных

Использование

Описание

Условие на значение

3. Основные принципы проектирования базы данных

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

Нормализация – позволяет организовать поля данных в группы таблиц. Лежащая в основе нормализации математическая теория довольно сложна, но для практического применения ее можно сформулировать в виде довольно простых правил.

Четыре правила нормализации таблицы.

1. Каждое поле любой таблицы должно быть уникальным.

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

3. Для каждого значения первичного ключа значения в столбцах данных должны относится к объекту и полностью его описывать.

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

Правило 1. Уникальность полей. Это правило означает, что вы должны избавиться от повторяющихся полей. Этого можно достичь созданием отдельных таблиц для повторяющихся данных и установлением связей между новыми таблицами и исходной: теперь можно обрабатывать единственную запись и не резервировать в записях дополнительные места для хранения большого числа данных. Реляционные базы данных прекрасно приспособлены для поддержки таких проектных решений, поскольку они обладают мощными средствами объединения связанных данных.

Правило 2. Первичные ключи. База данных хорошо спроектирована тогда, когда каждая запись в любой таблице является уникальной. Это означает, что значение некоторого поля не повторяется ни в одной записи таблицы. Такой идентификатор называется первичным ключом. Если вы создаете таблицу в базе данных, то Access всегда предлагает создать для нее первичный ключ. Вы можете предоставить возможность Access создать искусственный ключ. В таком случае Access добавляет к каждой записи поле, в котором записывается содержимое счетчика записей. При добавлении новой записи содержимое счетчика увеличивается на единицу.

Правило 3. Функциональная зависимость. Это правило используется двояко. Во-первых, в таблице не должно быть данных, не относящихся к объекту, определяемому первичным ключом. Во-вторых, данные в таблице должны полностью описывать объект.

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

Эффективность связей . Выполнив нормализацию, вы чаще всего получаете в результате набор отдельных таблиц. До появления реляционных БД вам пришлось бы при проектировании базы идти на разного рода компромиссы или самому отслеживать связи между файлами и таблицами. В реляционных БД таких проблем не возникает. Каждый раз при создании новой таблицы в существующую таблицу включается поле, связывающее старую и новую таблицы. Эти связующие поля называют чужими ключами. Задаваемые при создании таблиц связи первичных ключей с чужими ключами используются для объединения данных из нескольких таблиц. Для ускорения поиска вы можете создать индексы по чужим ключам.

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

ПОСТРОЕНИЕ ФОРМ ПОЛЬЗОВАТЕЛЯ

С точки зрения удобства и частоты применения, формы являются наиболее важными объектами в приложениях Access. Именно с формами пользователи работают при каждом запуске приложения.

Формы и объектно-ориентированное программирование

Access не создавался как полностью объектно-ориентированное программное средство, но, несмотря на это, он обладает многими свойствами, присущими системам разработки объектно-ориентированных приложений.

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

Внутри БД Access вы можете задавать взаимосвязь данных и объектов. Например, вы можете создать макрос, который подготавливает приложение к выполнению. Этот макрос (называемый Autoexec) обычно открывает форму, с которой начинается работа в приложении. Эта форма может воздействовать на некоторые данные или содержать элементы управления, открывающие другие формы, печатающие отчеты или закрывающие приложение.

В дополнение к тому, что формы используют базовые таблицы и запросы, они могут содержать другие формы. Подчиненные формы в свою очередь определяют действия над другими таблицами, запросами или формами и могут запускать другие макрокоманды или процедуры Visual Basic для приложений. Наиболее очевидный способ запуска – нажатие командной кнопки. Но вы можете также определить макросы или процедуры VBA, которые будут выполняться при определенных событиях, например щелчке по полю, изменении значения поля, нажатии клавиши, добавлении или удалении строки или просто при перемещении к новой строке базовой таблицы или запроса.

Системы объектно-ориентированного программирования достаточно гибко реагируют на изменение последовательности событий. Благодаря этому пользователю можно предоставить простой способ выполнения операции, включив в форму соответствующую командную кнопку.

Создание простой формы для ввода данных

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

Выберите Конструктор в окне диалога и нажмите кнопку ОК. Access окно формы в режиме конструктора и выведет на экран несколько инструментов конструктора форм. В новой форме будет только область данных с серой сеткой. Вы можете установить указатель мыши на краю этой области и перетащить его, уменьшая или увеличивая его. Вы можете удалить сетку с точками, выполнив команду Вид->Сетка. Если вы хотите добавить в форму заголовки и примечания, выберите команду Формат->Заголовок/примечание формы.

Панель элементов

Панель элементов – это своеобразный «командный центр» создания формы. Вы можете переместить панель элементов, перетащив заголовок ее окна в нужное место на экране, или изменить ее форму, перетащив края или углы панели. Чтобы закрыть панель элементов нужно выбрать команду Вид- >Панель элементов или нажать кнопку Панель элементов на панели инструментов.

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

Ниже перечислены кнопки панели элементов слева направо и сверху вниз.

· Кнопка Выбор объектов . По умолчанию эта кнопка нажата. Она используется для выделения, изменения размера, перемещения и редактирования элементов управления.

· Кнопка Мастера элементов . Нажмите эту кнопку, чтобы активизировать мастера по созданию элементов управления. Если кнопка выглядит «нажатой», то мастер поможет вам ввести свойства элемента управления при создании группы, поля со списком, списка или командной кнопки.

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

· Кнопка Поле используется для создания элемента управления Поле , для отображения текста, чисел, дат, времени. Вы можете связать Поле с одним из полей базовой таблицы или запроса и обновлять значения соответствующего поля в исходных объектах.

· Кнопка Группа используется для создания группы элементов управления, содержащей несколько выключателей, переключателей или флажков. Вы можете присвоить отдельное числовое значение каждому элементу управления, входящему в группу. Один из элементов группы может устанавливаться по умолчанию. Если вы свяжете группу с полем базового объекта, то при выборе элемента группы будет устанавливаться новое значение поля.

· Кнопка Выключатель используется для создания элемента управления Выключатель . Если вы щелкните по выключателю, он будет изображен нажатым, а его значение будет равняться –1(Вкл., Истина, Да). Щелкните по выключателю еще раз и его значение станет равным 0 (Выкл., Ложь, Нет). Вы можете включить выключатель в группу элементов управления и назначить ему уникальное числовое значение. Если вы щелкните по выключателю, переводя его в состояние Вкл., то любой ранее нажатый элемент группы (выключатель, переключатель или флажок) будет переключен в состояние Выкл. Если выключатель связан с полем базового запроса или таблицы, то, щелкнув по нему, вы измените значение поля на противоположное.

· Кнопка Переключатель используется для создания элемента управления Переключатель , иногда называемого радиокнопкой и принимающего значения Вкл./Выкл., Истина/Ложь, Да/нет. Если вы щелкните по переключателю, то в его центре появится темный кружок, его значение станет равным –1. Щелкните еще раз, значение переключателя станет равным 0. Вы можете включить переключатель в группу элементов управления и назначить ему уникальное числовое значение. Если вы щелкните по переключателю, переводя его в состояние Вкл., то любой ранее нажатый элемент группы (выключатель, переключатель или флажок) будет переключен в состояние Выкл. Если переключатель связан с полем базового запроса или таблицы, то, щелкнув по нему, вы измените значение поля на противоположное.

· Кнопка Флажок используется для создания элемента управления Флажок , принимающего значения Вкл./Выкл., Истина/Ложь, Да/нет. Если вы щелкните по флажку, то в центре появится пометка в виде косого креста, а его значение станет равным-1, щелкните еще раз, и его значение станет равным 0, а пометка исчезнет. Вы можете включить флажок в группу элементов управления и назначить ему уникальное числовое значение. Если вы щелкните по флажку, переводя его в состояние Вкл., то любой ранее нажатый элемент группы (выключатель, переключатель или флажок) будет переключен в состояние Выкл. Если флажок связан с полем базового запроса или таблицы, то, щелкнув по нему, вы измените значение поля на противоположное.

· Кнопка Поле со списком используется для создания элемента управления Поле со списком , которое можно рассматривать как объединение двух элементов: поле и список. Вы можете задать список явно, введя список значений в строке свойства Источник записей . В качестве источника значений списка можно также использовать таблицу или запрос. Значение, выбранное в списке, отображается в поле. Чтобы раскрыть список, нажмите кнопку со стрелкой вниз. При выборе нового значения в списке изменяется значение элемента управления. Если поле со списком связано с полем базовой таблицы или запроса, вы можете изменить значение этого поля, выбрав в списке новое значение. Список может содержать несколько столбцов, вы можете скрыть часть столбцов списка, установив для них ширину, равную нулю. Значением элемента управления может быть значение любого столбца, в том числе и скрытого. Если список закрыт, Access выводит на экран первого столбца, ширина которого больше нуля.

· Кнопка Список используется для создания элемента управления Список . Вы можете задать список явно, введя значения в строке свойства Источник записей или использовать в качестве источника таблицу или запрос. Список всегда раскрыт, а выделенное значение присваивается элементу управления. Если список связан с полем базовой таблицы или запроса, вы можете изменить значение этого поля, выбрав в списке новое значение. Список может содержать несколько столбцов, вы можете скрыть часть столбцов списка, установив для них ширину, равную нулю.

· Кнопка элемента Кнопка используется для создания элемента управления Командная кнопка , с помощью которой можно запустить макрос или процедуру VBA.

· Кнопка Рисунок позволяет поместить в форму статический рисунок. Его нельзя будет редактировать в форме, но Access хранит рисунок в наиболее эффективном сточки зрения быстродействия приложения и использования памяти формате.

· Кнопка Свободная рамка объекта используется для включения в форму объекта из другого, поддерживающего OLE, приложения. Объект становится частью формы, но не хранится в БД. Чтобы сделать форму более выразительной и наглядной, вы можете включить в нее рисунки, звуковые эффекты, диаграммы или слайды.

· Кнопка Присоединенная рамка объекта используется для включения в форму объекта OLE, хранящегося в базовой таблице. Access может отобразить большинство рисунков и диаграмм непосредственно в форме. Для других объектов Access выводит в форме значок приложения, в котором был создан объект.

· Кнопка Конец страницы позволяет вставлять разрыв страницы в многостраничной форме.

· Кнопка Подчиненная форма/отчет используется для включения в текущую форму некоторой другой формы. С помощью подчиненной формы вы можете вывести на экран данные таблицы или запроса, связанные с текущими данными основной формы.

· Кнопка Линия используется для включения в форму прямых линий, помогающих сделать ее более выразительной.

· Кнопка Прямоугольник используется для включения в форму прямоугольников.

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

Список полей

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

Окно свойств

Сама форма, каждый ее раздел, и элементы управления имеют свойства, и вы можете установить их значения с помощью окна свойств. Набор свойств зависит от объекта. Чтобы открыть окно свойств, выделите интересующий вас объект и кнопку Свойства на панели инструментов или выберите команду Вид- >Свойства . Access откроет окно свойств формы. Поскольку форма имеет более 70 свойств, а большинство элементов управления – более 30, значения которых вы можете устанавливать, то окно свойств содержит несколько вкладок. На вкладках представлены определенные категории свойств: свойства данных, макета, событий, другие свойства.

Очень удобным средством являются построители, помогающие создавать значения свойств, в которых используется сложное выражение, определение запроса, макрос или процедура VBA. Если выбрано свойство, для которого можно использовать построитель, рядом с ячейкой появляется кнопка с многоточием (кнопка построителя). Например, если на вкладке Данные в окне свойств вы щелкните по ячейке свойства Источник записей и нажмете кнопку построителя, Access запустит построитель запросов. Построитель спросит, хотите ли вы построить новый запрос на основе таблицы, которая в данный момент является источником записей для формы. Если вы ответите Да , откроется окно нового запроса в режиме конструктора со списком полей вашей таблицы.

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

Панель инструментов форматирования

Для придания элементу управления нужного внешнего вида не обязательно изменять его свойства, можно воспользоваться кнопками панели инструментов форматирования. Кроме того, эта панель позволяет устанавливать цвет фона для разделов формы. Ниже приведены описания кнопок панели инструментов форматирования (слева направо):

· Выбор объекта Выделяет объект в форме, что особенно удобно, когда объекты располагаются поверх других.

· Шрифт Позволяет выбрать шрифт для текста надписей, командных кнопок, выключателей, полей, списков и полей со списком.

· Размер шрифта Используется для установки размера шрифта.

· Полужирный Полужирное начертание.

· Наклонный Наклонное начертание.

· Подчеркнутый Подчеркнутое начертание.

· По левому краю Выравнивает текст по левому краю.

· По центру Выравнивает текст по центру.

· По правому краю Выравнивает текст по правому краю.

· Цвет фона Используется для изменения цвета фона элемента управления или раздела формы.

· Цвет текста Изменение цвета символов в элементе управления.

· Цвет границы Изменение цвета границы элемента управления.

· Ширина границы Установка толщины границы элемента управления от сверхтонкой до 6 пунктов.

· Оформление Позволяет применять специальные эффекты: обычное, приподнятое, утопленное, вдавленное, с тенью и рельефное.

Установка свойств поля

После размещения полей в форме вам, возможно, придется изменить значения некоторых их свойств. Если поле является счетчиком, оно не может быть изменено пользователем, запретите выбор этого элемента в форме, установив для свойства Доступ значение Нет . Поскольку Access затеняет незаблокированный элемент управления, к которому нет доступа, установите свойство Блокировка в значение Да ,чтобы показать, что это поле – необновляемое. Элемент управления не будет затенен, но пользователь не сможет перейти к нему или выделить его в режиме формы.

Свойства Формат поля, Число десятичных знаков, Маска ввода , определенные для поля таблицы, Access копирует в соответствующие свойства элементов управления, связанного с этим полем. Однако в форме можно определить более жесткое условие на значение. Свойство Значение по умолчанию наследуется из базовой таблицы. Если вы хотите использовать другое значение по умолчанию, введите его в окне свойств.

Свойство Текст строки состояния устанавливается в значение, совпадающее с установкой свойства Описание . Другие свойства также могут быть настроены в соответствии с вашими требованиями.

Установка свойств надписи

Вы можете отдельно определить свойства надписи, присоединенной к элементу управления. Чтобы увидеть окно свойств, выделите надпись поля. Access копирует значение свойства Подпись , определенное для поля базовой таблицы, в свойство Подпись для присоединенной надписи.

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

Чтобы быстро настроить размер надписи по размеру содержащегося в ней текста,выделите надпись и выберите команду Формат->Размер->По размеру данных.

Установка свойств формы

Щелкните в любом месте формы вне области данных или выберите команду Правка->Выделить форму, и в окне свойств будут показаны свойства формы. Значение свойства Подпись будет использоваться в режиме формы и таблицы в качестве заголовка окна формы. Совйства событий, следующие за свойством Дополнительные сведения , могут использоваться для запуска макрокоманд, макросов, процедур VBA для приложений.

Свойства Число делений по Х и Число делений по У , определяющие плотность точек в сетке. Для более точного размещения объектов в форме можно использовать команду Формат- > Привязать к сетке или увеличить плотность точек в сетке.

Окончательная настройка формы

Когда вы закончите работу в режиме конструктора, можно установить темно-серый цвет фона, чтобы элементы управления легче было различать. Выделите область данных и установите цвет с помощью кнопки Цвет фона на панели инструментов. Выделите все надписи, протащив указатель мыши по всем надписям, и установите светлый цвет фона. Если вы хотите точно подогнать размер области данных по отношению к размещенным в ней элементам управления, перетащите с помощью мыши границы области данных.

Переключитесь в режим формы, нажав кнопку Представление формы на панели инструментов. Для настройки окна формы точно по размеру макета выберите команду Окно- > По размеру формы . Сохраните созданную форму, пользуясь кнопкой сохранить на панели инструментов или командой Файл- > Сохранить .

Использование форм для ввода данных

При работе с реляционными БД часто приходится иметь дело с информацией, хранящейся в нескольких таблицах. Это не вызывает затруднений, когда вы используете запрос, но при вводе новых данных возникают некоторые проблемы. Access предоставляет несколько способов представления информации из связанных таблиц, значительно упрощающих процедуру ввода данных.

Списки и поля со списком

Список или поле со списком – удобные способы отображения перечня возможных значений элемента управления. Чтобы задать список, можно ввести все возможные значения прямо в ячейке свойства Источник записей . В качестве источника записей можно определить таблицу или запрос. Access отображает текущее значение в верхней части поля со списком или выделяет его в списке. Для того, чтобы создать поле со списком, выполните следующие действия:

1. На панели инструментов нажмите кнопку Мастера элементов, а затем кнопку Поле со списком и перетащите в форму нужное поле из списка полей исходной таблицы. Вы увидите в форме новый элемент управления, и Access выведет на экран окно диалога Создание полей со списком.

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

3. Во втором окне диалога Access выводит список доступных таблиц и запросов. Выберите таблицу и нажмите кнопку Далее .

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

5. В четвертом окне мастер выводит на экран выбранные вами столбцы с данными из таблицы. Здесь устанавливается ширина столбцов (столбцы с нулевой шириной не выводятся). Чтобы столбец с кодами отображался в раскрывающемся списке, можно снять флажок Скрыть ключевой столбец .

6. В пятом окне диалога мастер спрашивает, какой столбец следует использовать в качестве элемента управления.

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

8. В последнем окне можно изменить предлагаемый мастером текст для присоединенной надписи поля со списком. Нажмите кнопку Готово , и мастер закончит создание поля со списком.

Если окно свойств открыто, вы можете изучить свойства поля со списком, установленные мастером. Свойство Данные показывает с каким полем связано поле со списком. Свойство Тип источника строк указывает из какой таблицы или запроса поступают данные. Ячейка свойства Источник строк содержит инструкцию SQL. Для свойства Число столбцов установлено количество используемых столбцов. Свойство Заглавия столбцов установлено в значении Нет (заголовки не выводятся).

Выключатели, флажки и переключатели

Если таблица содержит поле, принимающее значения Да/Нет, Истина/Ложь, Вкл./Выкл. , то помните, что три типа элементов управления позволяют графически представлять и изменять значения таких полей: выключатель, флажок, переключатель. Чтобы изменить тип элемента управления, сначала удалите поле, принимающее указанные значения из формы. Затем нажмите кнопку Флажок на панели элементов и перетащите это поле из списка полей таблицы в правый верхний угол формы. Нажмите кнопку Представление формы на панели инструментов и вы увидите окончательный вид формы. Интересным аспектом использования в форме элементов управления подобного типа является то, что их свойства сохраняются при переходе в режим таблицы. Поэтому во многих случаях вместо создания специальной формы, предназначенной для использования в режиме таблицы, достаточно настроить соответствующим образом существующую форму, заменяя в ней поля другими элементами управления.

Разработка отчетов

Использование отчетов

Отчеты представляют собой наилучшее средство для представления информации из БД в виде печатного документа. По сравнению с другими средствами вывода данных на печать отчеты обладают двумя принципиальными преимуществами:

- они предоставляют широкие возможности для группировки и вычисления промежуточных и общих итогов для больших наборов данных;

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

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

- для обеспечения иерархического представления данных можно определить до 10 условий группировки.

- Для каждой из групп можно задать отдельные заголовки и примечания.

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

- В дополнение к верхнему и нижнему колонтитулу можно записать заголовок и примечание для всего отчета в целом.

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

Также как в форме, вы можете вставить в любой раздел отчета рисунки или диаграммы. Они могут быть внедрены как свободные, так и присоединенные объекты OLE.

Создание простого отчета

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

Отчеты в отличие от форм предоставляют возможность группировать вводимую в них информацию с помощью окна Сортировка и группировка . В нем можно определить до 10 полей или выражений, которые будут использоваться в отчете для группировки данных. Первый элемент в списке определяет основную группу, а последующие – подгруппы внутри групп. Если вы щелкните в первой строке столбца Поле/Выражение , то в правом углу ячейки появится кнопка со стрелкой вниз. Щелкните по ней, чтобы открыть список полей базовой таблицы или запроса. Выберите в списке поле, чтобы поместить его в столбец. Вы можете ввести в этом столбце выражение, содержащее ссылку на любое поле базовой таблицы или запроса. По умолчанию Access сортирует значения по возрастанию. Вы можете изменить порядок сортировки, выбрав значение По убыванию в раскрывающемся списке, который появляется после щелчка в ячейке столбца Порядок сортировки .

В отчете должно быть зарезервировано место для заголовков каждой групп и примечания для вычисляемых полей. Чтобы добавить в отчет эти разделы, установите для свойств Заголовок группы и Примечание группы значение Да в окне сортировки и группировки. Когда вы это сделаете, Access добавит в отчет требуемые разделы.

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

Наконец, в правом нижнем углу нижнего колонтитула создайте свободное поле. В качестве значения его свойства Данные введите выражение =’’Page’’&[Page] & “of” &[Pages]. [Page] – это свойство отчета, содержащее номер текущей страницы. [Pages] – другое свойство отчета, содержащее общее число страниц.

Для просмотра результатов нажмите кнопку Предварительный просмотр на панели инструментов.

ОБЩИЕ СВЕДЕНИЯ О МАКРОСАХ

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

· Для открытия/закрытия любой таблицы, запроса, формы, отчета в любом режиме.

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

· Для выполнения запроса на выборку или на изменение.

· Для выполнения действий в зависимости от значений в базе данных, форме или отчете. Макросы могут запускать другие макросы или процедуры VBA.

· Для установки значения любого элемента управления формы или отчета.

· Для применения фильтра, перехода к любой записи и поиска данных.

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

· Для выполнения любой команды любого меню Access.

· Для перемещения, изменения размеров, сворачивания или восстановления любого окна внутри рабочей области Access.

· Для вывода на экран информационных сообщений и подачи звуковых сигналов для привлечения внимания.

· Для переименования любого объекта БД, копирования выбранного объекта в текущую или другую БД, импортирования, экспортирования или связывания таблиц из других БД.

· Для запуска приложения, для обмена данными с приложением с помощью механизма DDE или буфера обмена.

Макросы особенно полезны для построения небольших персональных приложений. Изучение макросов – прекрасное введение в программирование в Access в целом.

Создание простого макроса

В окне БД перейдите на вкладку Макросы и нажмите кнопку Создать , чтобы открыть окно нового макроса. Верхняя часть окна используется для определения нового макроса, а нижняя предназначена для ввода значений аргументов макрокоманд, включенных в макрос. В верхней части присутствуют по крайней мере два столбца с заголовками Макрокоманда и Примечание . Вы можете увидеть все четыре столбца, нажав кнопки Имена макросов и Условия на панели инструментов. Обратите внимание на область в правой нижней части окна макроса, в которой выводится краткая справка. Содержание сообщения меняется в зависимости от положения курсора в верхней части окна макроса (для получения контекстной справки всегда можно нажать клавишу F1). В столбце Макрокоманда задается одна из более 49 макрокоманд, предоставляемых Access. Если вы щелкните в любой ячейке столбца Макрокоманда , то в правом углу появится кнопка со стрелкой вниз. Нажатие этой кнопки открывает список макрокоманд. Чтобы познакомится с работой окна макроса, выберите в списке макрокоманду Сообщение . Она используется для открытия монопольного окна диалога с сообщением. Это прекрасный способ для ввода в приложение разного рода предупреждающих или информационных сообщений без создания для этого специальной формы.

Пусть, например, сообщение представляет собой приветствие. В соответствующую ячейку столбца Примечание введите текст. В нем можно вводить дополнительные комментарии, размещая их на пустых строках, не содержащих макрокоманд. После выбора макрокоманды Access выведет в нижней части макроса ее аргументы. Значение аргумента Сообщение представляет собой текст, который будет выводиться в окне диалога. Аргумент Сигнал задает, будет ли звуковой сигнал сопровождать появление окна диалога. Аргумент Тип позволяет вставить в окно сообщения значок. В ячейку аргумента Заголовок вводится текст, который появится в заголовке окна диалога.

Перед запуском макрос необходимо сохранить. Выберите команду Файл- > Сохранить . Access откроет окно диалога для сохранения. Введите имя и нажмите кнопку ОК.

Некоторые макросы могут быть запущены непосредственно из окна БД или окна макроса, поскольку они не зависят от элементов управления открытой формы или отчета. Если макрос зависит от формы или отчета, его надо связать с соответствующим событием и запускать при возникновении этого события. Перед запуском макроса неплохо проверить его работу, выполнив макрокоманды в пошаговом режиме. Чтобы начать пошаговую проверку, перейдите в окно БД, выделите имя макроса, который вы хотите протестировать и нажмите кнопку Конструктор . После открытия окна макроса нажмите кнопку По шагам на панели инструментов либо выберите команду Запуск- > По шагам . Теперь после запуска макроса Access будет открывать окно диалога Пошаговое исполнение макроса перед выполнением каждого шага. В этом окне вы увидите имя макроса, название макрокоманды, условие ее выполнения и аргументы макрокоманды. Если во время выполнения приложения в каком-нибудь макросе встретится ошибка, то Access сначала выведет окно диалога, объясняющее ее. Затем вы увидите, похожее на Пошаговое исполнение макроса, окно диалога Ошибка макрокоманды с информацией о макрокоманде, вызвавшей ошибку. В этот момент можно нажать только кнопку Прервать и отредактировать макрос.

Группы макросов

В большинстве форм, создаваемых для приложения, требуется применение значительного числа макрокоманд. Одни используются для редактирования полей, другие открывают отчеты, третьи реагируют на нажатие командных кнопок. Можно создать макросы для каждой отдельной макрокоманды, но в этом случае в одном приложении накопятся сотни макрокоманд. Существует более простой способ, при котором для каждой формы или отчета создается своя группа макросов. Возможен и подход, при котором группы макросов создаются для каждого типа операций. Например, можно создать группу макросов, содержащую все макрокоманды Открыть-Форму , используемые в БД. В группу можно включить несколько отдельных макросов. Каждому из них дается имя, которое заносится в столбец Имя макроса . Полное имя макроса состоит из двух частей, разделенных точкой. Слева от точки указывается имя группы макросов, а справа – имя макроса внутри группы.

Задание условий выполнения макрокоманд

Иногда необходимо, чтобы макрокоманды в макросе выполнялись только при определенных условиях. Например, вы хотите обновлять запись лишь в том случае, когда новые данные в элементах управления формы удовлетворяют условиям на значение или хотите выводить или скрывать определенные элементы управления в зависимости от значений других элементов управления. На вкладке Макросы выделите имя макроса и нажмите кнопку Конструктор , чтобы открыть окно макроса. Щелкните в столбце Условие на первой строке и нажмите клавиши Shift-F2, чтобы вывести на экран окно Область ввода . (Если столбец Условие не выводится, нажмите кнопку Условия на панели инструментов). При включении условия в макрос Access выполняет макрокоманду в этой строке только в том случае, если условное выражение имеет значение Истина . Ввод многоточия в столбце Условие в последующих строках позволяет распространить действие условия на ряд следующих макрокоманд. В этом случае Access вычисляет условное значение только один раз и выполняет группу макрокоманд, если условие, заданное для первой макрокоманды в этой группе, является истинным. Использование групп макросов позволяет легко находить и поддерживать нужные макросы. Вы можете создавать группы макросов не только по задачам, но и по функциям. Предположим, что имеется форма с рядом командных кнопок, каждой из которых назначен макрос, выполняющий определенную задачу. Вы можете собрать эти макросы в одну группу и дать ей имя, указывающее на связь с формой.

Обзор макрокоманд

Макрокоманды подразделяются на несколько классов, сформированных по функциональному принципу:

· Открытие и закрытие таблиц, запросов, форм и отчетов.

· Печать данных.

· Выполнение запроса.

· Проверка истинности условий и управление выполнением макрокоманд.

· Установка значений.

· Поиск данных.

· Построение специального меню и выполнение команд меню.

· Управление выводом на экран и фокусом.

· Сообщение пользователю о выполняемых действиях.

· Переименование, копирование, удаление, импорт и экспорт объектов.

· Запуск других приложений.

Открытие и закрытие таблиц, запросов, форм и отчетов

Макрокоманда

Назначение

Закрыть

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

Открыть Форму

Открывает форму в режиме конструктора, формы или предварительного просмотра. При открытии можно применить фильтр или условие отбора.

Открыть Модуль

Открывает модуль в режиме конструктора и выводит заданную процедуру. Для просмотра процедуры обработки события укажите имя модуля, в котором она содержится.

Открыть Запрос

Открывает запрос в режиме таблицы, конструктора, предварительного просмотра. Если указан запрос на изменение, то Access выполнит обновление данных в соответствии с запросом

ОткрытьОтчет

Открывает отчет в режиме конструктора, предварительного просмотра или печатает отчет. Можно указать фильтр или условие отбора.

ОткрытьТаблицу

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

Печать данных

Макрокоманда
Назначение
ОткрытьФорму

Может открыть форму в режиме предварительного просмотра, вы можете применить фильтр или задать условие отбора.

ОткрытьЗапрос

Может открыть запрос в режиме предварительного просмотра.

ОткрытьОтчет

Печатает или открывает отчет в режиме предварительного просмотра. Вы можете применить фильтр или задать условие отбора

ОткрытьТаблицу

По выбору открывает таблицу в режиме предварительного просмотра.

ВывестиВФормате

Выводит заданный объект в файл .xls, .rtf, ,txt, а также запускает соответствующее приложение для редактирования файла.

Печать

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

Выполнение запроса

Макрокоманда

Назначение

ОткрытьЗапрос

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

ЗапускЗапросаSQL

Выполняет инструкцию SQL: INSERT INTO, DELETE, SELECT…INTO, UPDATE, CREATE TABLE, ALTER TABLE, DROP TABLE, CREATE INDEX, DROP INDEX.

Проверка истинности условий и управление выполнением макрокоманд

Макрокоманда

Назначение

ОтменитьСобы-тие

Отменяет событие, запускающее макрос. Макрокоманду ОтменитьСобытие нельзя использовать в макросе, определяющем команды меню. Может отменять следующие события: Применение фильтра, До подтверждения DEL, До вставки, До обновления, Двойное нажатие кнопки, Удаление, Выход, Фильтрация, Форматирование, Нажатие клавиши, Кнопка вниз, Отсутствие данных, Открытие, Печать и Выгрузка.

КомандаМеню

Выполняет команду стандартного меню. Вы можете использовать эту команду в макросе, определяющем специальную строку меню.

Выход

Закрывает все окна Access и завершает сеанс работы.

ЗапускПрограммы

Выполняет процедуру-функцию VBA. Макрокоманды, следующие за данной, выполняются после завершения работы функции.

ЗапускМакроса

Запускает другой макрос. Макрокоманды, следующие за данной, выполняются после завершения работы макроса.

ОстановитьВсеМакросы

Останавливает работу всех макросов, включая и макрос, запускающий эту макрокоманду.

ОстановитьМакрос

Прекращает выполнение текущего макроса

Установка значений

Макрокоманда

Назначение

Обновление

Обновляет данные в элементе управления, связанном с запросом. Эту команду также можно использовать без аргументов для обновления данных в активном объекте (в режиме формы или таблицы).

КомандыКлавиатуры

Сохраняет последовательность нажатий клавиш в специальном буфере. Если последовательность нажатия клавиш нужно переслать в монопольную форму или окно диалога, то эта макрокоманда должна быть выполнена до открытия монопольной формы или окна диалога.

ЗадатьЗначение

Изменяет значение любого элемента управления или свойства, которое можно обновлять.

Поиск данных

Макрокоманда

Назначение

ПрименитьФи льтр

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

СледующаяЗапись

Ищет следующую запись, отвечающую условию, ранее заданному в макрокоманде НайтиЗапись или в окне диалога Поиск в поле.

НайтиЗапись

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

НаЗапись

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

Построение специального меню и выполнение команд меню

Макрокоманда

Назначение

ДобавитьМеню

Добавляет раскрывающееся меню в специальную строку меню либо специальное контекстное меню для формы или отчета. Это единственная макрокоманда, которую можно использовать в макросе, указанном в свойстве Строка меню или Контекстное меню.

ЗадатьКомандуМеню

Эта макрокоманда задает состояние (доступна или нет, отмечена или нет) команды специальной строки меню или специального контекстного меню.

КомандаМеню

Выполняет команду одного из стандартных меню Access

Управление выводом на экран и фокусом

Макрокоманда

Назначение

ВыводНаЭкран

Выводит на экран информацию о промежуточных действиях, выполняемых во время работы макроса.

КэлементуУправления

Передает фокус заданному элементу управления

НаСтраницу

Передает фокус первому элементу управления, размещенному на указанной странице активной формы

ПесочныеЧасы

На время выполнения макроса изменяет форму указателя на песочные часы

Развернуть

Увеличивает активное окно до размеров рабочей области

Свернуть

Сворачивает активное окно в значок

СдвигРазмер

Перемещает и изменяет размер активного окна

ОбновитьОбъект

Выполняет принудительное обновление информации в окне для заданного объекта. Производит пересчет всех формул в элементах управления этого объекта

Обновление

Обновляет данные в элементах управления, которые связаны с запросом. Когда другие макрокоманды могут воздействовать на содержимое элемента управления, связанного с запросом, для обновления его значений используйте эту макрокоманду.

Восстановить

Восстанавливает окно в прежних размерах.

ВыделитьОбъект

Выделяет заданный объект БД. Восстанавливает окно объекта до обычного размера, если оно было свернуто в значок. Если объект находился в процессе открытия, то эта макрокоманда заставляет Access закончить открытие до перехода к другим действиям.

УстановитьСообщения

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

ПоказатьВсеЗаписи

Убирает все фильтры, примененные к активной таблице, запросу или форме.

ПанельИнструментов

Выводит на экран или скрывает любую из стандартных или специальных панелей инструментов.

Сообщения пользователю

Макрокоманда

Назначение

Сигнал

Выдает звуковой сигнал

Сообщение

Выводит предупреждающее или информационное сообщение, может подавать звуковой сигнал. Чтобы закрыть окно диалога и продолжить работу, вы можете нажать кнопку ОК.

УстановитьСообщения

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

Переименование, копирование, удаление, сохранение, импорт и экспорт объектов

Макрокоманда

Назначение

КопироватьОбъект

Копирует объект текущей БД в другую БД Access или в ту же самую под новым именем

УдалитьОбъект

Удаляет любой объект Access

Сохранить

Сохраняет любую таблицу, запрос, форму, отчет, макрос или модуль

ВывестиВФормате

Выводит заданный объект в формате Excel, Word, Notepad, а также запускает соответствующее приложение для редактирования файла

Переименовать

Присваивает новое имя заданному объекту в текущей БД

ОтправитьОбъект

Выводит таблицу, запрос или форму в режиме таблицы, данные полей отчета или листинг модуля в файл Excel, Word, Notepad и внедряет данные в сообщение электронной почты. На вашем компьютере должно быть установлено программное обеспечение, отвечающее стандарту MAPI

ПреобразоватьБазуДанных

Используется при экспорте или импорте данных между текущей и другой БД Access, dBASE, Paradox, FoxPro, SQL.

ПреобразоватьЭлектроннуюТаблицу

Используется при экспорте или импорте данных между текущей БД и файлами электронных таблиц Excel, Lotus 1-2-3

ПреобразоватьТекст

Используется при экспорте или импорте данных между текущей БД и текстовым файлом

Запуск других приложений для MS-DOS и Microsoft Windows

Макрокоманда

Назначение

ЗапускПриложения

Запускает приложение MS-DOS или Microsoft Windows

АВТОМАТИЗАЦИЯ ПРИЛОЖЕНИЯ С ПОМОЩЬЮ МАКРОСОВ

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

Ссылки на формы и отчеты

Вы можете ссылаться на форму или отчет по имени, но прежде нужно сообщить Access в какое семейство входит данный объект. Открытые формы находятся в семействе Forms , открытые отчеты – в семействе Reports . Поэтому ссылка на форму или отчет включает в себя имя семейства, за которым следует восклицательный знак, а затем - имя объекта. Если имя объекта не содержит пробелов или специальных символов, то можно просто ввести это имя. Если же пробелы или специальные символы есть, то имя необходимо заключить в квадратные скобки.

Ссылки на свойства форм и отчетов

Для задания ссылки на свойство формы или отчета укажите идентификатор формы или отчета, затем введите точку и после точки добавьте имя свойства. Большинство свойств формы или отчета можно увидеть в режиме конструктора, открыв окно свойств. В Access многие свойства формы можно изменять в режиме формы, а свойства отчета Печать и Форматирование – во время вывода на экран или печати отчета.

Ссылки на элементы управления форм и отчетов и на их свойства

При задании ссылки на элемент управления формы или отчета сначала укажите идентификатор формы или отчета, затем поставьте восклицательный знак и далее добавьте имя элемента управления, заключенное в квадратные скобки. При создании ссылки на свойство элемента управления запишите ссылку на него, и после точки укажите имя свойства. Список большинства свойств элементов управления вы можете увидеть при просмотре формы или отчета в режиме конструктора, выделив нужный элемент управления и открыв окно свойств. Большую часть свойств элементов управления можно изменять в режиме конструктора форм или отчетов.

Ссылки на подчиненные формы и отчеты

Форма, внедренная в другую форму или отчет, содержится в элементе управления Подчиненная форма . Отчет, внедренный внутрь другого отчета, содержится в элементе управления Подчиненный отчет . Ссылаться на подчиненную форму или отчет можно точно так же, как и на любой другой элемент управления. Элемент управления Подчиненная форма имеет специальное свойство Form, которое позволяет ссылаться на форму, внедренную в этот элемент управления. Аналогично, Элемент управления Подчиненный отчет имеет свойство Report, позволяющее ссылаться на отчет, внедренный в этот элемент управления.

Открытие связанной формы

Использование подчиненной формы непрактично в следующих случаях:

· Для просмотра связанных данных требуется внедрение двух или больше подчиненных форм;

· Основная форма слишком мала для отображения всей подчиненной формы;

· Связанная информация вам требуется только время от времени;

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

Синхронизация связанных форм

При открытии дополнительной формы из основной на основе совпадения двух связанных полей в этих формах, данные в дополнительной форме не изменяются при перемещении по записям в основной форме. Необходимо создать макрос для синхронизации вывода данных в двух связанных формах. В окне БД перейдите на вкладку Макросы и нажмите кнопку Создать . Создайте макрос, выбирая макрокоманды в столбце Макрокоманды и вводя соответствующие комментарии в столбце Примечания . Этот макрос имеет пару условий выполнения макрокоманд. Первое условие можно выразить словами: Если основная форма не загружена, выполнить первую макрокоманду – Остановить макрос . Таким образом, если основная форма не открыта, то выполняется макрокоманда Остановить макрос и работа макроса прекращается. Вы можете использовать макрокоманду Применить фильтр для отбора записей в основной форме, но она работает только в том случае, если в текущий момент форма имеет фокус. Макрокоманда Выделить объект позволяет решить эту задачу, но зачем использовать две макрокоманды, если достаточно одной? Оказывается, что вы можете снова выполнить макрокоманду Открыть форму с тем же самым условием отбора, чтобы вывести в форме нужную строку. Если форма уже открыта, макрокоманда Открыть форму устанавливает в ней фокус и применяет заданное условие отбора. Однако ссылаться на «пустое» значение не очень хорошо. При переходе на последнюю запись в основной форме или выборе команды Правка- >Перейти- >Новая запись вы окажетесь на новой записи, в которой связанное поле не имеет значения. Поэтому имеет смысл организовать проверку значения Null, чтобы скрыть дополнительную форму при нахождении на пустой строке в основной форме. Для проверки этого условия во второй строке макроса используется встроенная функция IsNull. Если значение связанного поля равно Null, макрос скрывает дополнительную форму, устанавливая ее свойство Вывод на экран в значение Ложь . Обратите внимание, что хотя форма не видна на экране, она все равно остается открытой. После создания синхронизирующего макроса необходимо связать его со свойством Текущая запись основной формы. Перейдите на вкладку Формы окна БД и откройте основную форму в режиме конструктора. В конструкторе форм нажмите кнопку Свойства на панели инструментов, затем щелкните в ячейке свойства Текущая запись и в раскрывающемся списке выберите созданный макрос. Сохраните форму и откройте ее в режиме формы, проверьте работу созданного макроса, переходя на другие записи в основной форме. При переходе на пустую запись, дополнительная форма должна исчезнуть с экрана.

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

Создание специальной панели инструментов для форм

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

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

Создание специальной строки меню для форм

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

Чтобы определить специальную строку меню, сначала создайте макрос строки меню, определяющий меню, которые будут появляться в этой строке. Для каждого меню вы должны включить в макрос макрокоманду ДобавитьМеню , и в качестве значения аргумента Название меню указать название этого меню. При этом аргумент Имя макроса должен указывать на макрос, определяющий команды меню. Символ & (амперсанд) определяет так называемую назначенную клавишу для этого меню, с его помощью вы можете определить для каждой команды клавишу быстрого доступа. Вы можете вставить линию между разделами меню, введя в столбец Имя макроса знак «минус» (-). Макрос, определяющий команду меню, может содержать либо другую макрокоманду ДобавитьМеню , добавляющую подчиненное меню, либо последовательность макрокоманд, которые будут выполняться при выборе команды. В большинстве случаев вы будете использовать макрокоманду КомандаМеню , чтобы сделать команду встроенного меню доступной из специальной строки меню. Но можно выполнять и любые другие макрокоманды, включая те, что запускают другой макрос или функцию VBA. Определение полного набора макросов – довольно трудоемкий процесс, особенно в том случае, если вы хотите создать различные специальные строки меню для разных форм. К счастью, при создании макросов меню в Access вы можете воспользоваться помощью построителя меню. Переключитесь в окно БД и выберите команду Сервис- >Надстройки- >Построитель меню . Access запустит построитель меню и выведет на экран его окно диалога. Здесь перечислены все макросы в текущей БД. Выделите имя макроса, определяющего строку меню, нажмите кнопку Изменить и просмотрите определение строки меню. При необходимости внесите в него изменения. В этом же окне можно удалить макрос, выделив его имя и нажав кнопку Удалить . При удалении макроса строки меню построитель меню удалит также макросы, определяющие меню, входящие в эту строку. Чтобы начать определение нового набора макросов для строки меню, нажмите кнопку Создать. Построитель меню выведет на экран окно диалога для выбора шаблона. Поскольку мы хотим лишь немного изменить строку меню для всех форм в текущем приложении, хорошей основой может стать строка меню Форма . Выберите шаблон Форма и нажмите ОК. Построитель меню выведет этот шаблон в окне диалога Построитель меню-[Новая строка меню]. В списке, расположенном в нижней части окна диалога, вы можете выбрать любой элемент определения строки меню и просмотреть его подробное описание. Если этот элемент выполняет макрокоманду, то в верхней части окна вы увидите имя макрокоманды и ее аргументы. Построитель меню поддерживает следующие макрокоманды: ДобавитьМеню, КомандаМеню, ЗапускМакроса и ЗапускПрограммы . Если вам нужно определить команду меню, выполняющую более сложное действие, вы можете с помощью построителя меню создать скелет макроса, а затем отредактировать его. Для перемещения выделенного элемента в списке можно пользоваться кнопками со стрелками. Нажатие кнопки Далее перемещает выделение на следующий элемент в списке.

Во многих случаях, вы, наверное, не захотите, чтобы пользователь мог открывать объекты в режиме конструктора или создавать новые объекты. Тогда удалите команду Создать из меню Файл . Вероятно вам не потребуются команды Сохранить форму и Сохранить форму как/Экспорт . Из меню Вид можно удалить команды Конструктор форм, Панели инструментов . Скорее всего вам не понадобятся команды Скрыть, Показать и По размеру формы из меню Окно .

Оптимизация базы данных с помощью анализатора быстродействия

Даже опытные разработчики приложений Access не всегда используют все имеющиеся средства для повышения эффективности работы приложения. Access предоставляет анализатор быстродействия, который помогает выполнить окончательный анализ после построения основных частей приложения. Выберите команду Сервис ®Анализ ®Быстродействие , и Access откроет начальное окно мастера. Это окно позволяет выбрать категорию анализируемых объектов. После выбора категории укажите конкретные объекты, установив флажки рядом с их именами. Если хотите проанализировать все объекты, нажмите кнопку Выбрать все . В случае ошибки можно нажать кнопку Очистить все и начать выбор заново. Чтобы запустить анализатор быстродействия нажмите кнопку ОК. После завершения работы мастер выведет окно с результатами анализа. Это окно содержит список рекомендаций, предложений и идей. Выберите понравившиеся и нажмите кнопку Применить. Примененные рекомендации и предложения мастер помечает «галочкой». Идеи, предлагаемые мастером, нельзя применить прямо из анализатора быстродействия. Использование некоторых из них может быть связано с большим объемом дополнительной работы.

Создание начальной кнопочной формы

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

Здесь стоит обратить внимание на использование амперсанда (&) в значениях свойства Подпись командных кнопок. С помощью этого символа определяется назначенная клавиша для командной кнопки. Главное - быть внимательным и не использовать одну и ту же назначенную клавишу для разных кнопок.

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

Установка параметров запуска БД

На данные момент вы знаете, как построить основные части своего приложения. Но как сделать, чтобы при открытии БД автоматически запускалось приложение? Можно создать макрос с именем Autoexec, и Access будет запускать его при каждом открытии БД. Но более удобный способ заключается в использовании параметров запуска для задания начальной формы приложения. Переключитесь в окно БД и выберите команду Сервис ®Параметры запуска . В окне диалога Параметры запуска нажмите кнопку Дополнительно , и вы увидите окно диалога Параметры запуска . Поле со списком позволяет выбрать форму, которая будет выводиться на экран при открытии БД. В этом же окне можно задать заголовок и значок приложения, а также специальную строку меню и специальное контекстное меню, используемые по умолчанию в текущей БД. Если снять флажок Окно базы данных , то при запуске приложения Access будет скрывать окно базы данных. Точно также можно скрыть строку состояния, сняв флажок Строка состояния . Access имеет набор встроенных меню с сокращенным списком команд, которые, в частности не предоставляют доступ к средствам разработки. Если флажок Полный набор меню Access снят, то по умолчанию будет использоваться набор кратких меню.

С помощью флажка в нижней части окна диалога Параметры запуска можно сделать невозможным просмотр программы после не перехваченных ошибок.

4. Порядок выполнение курсового проекта

Порядок выполнения курсового проекта:

4.1. Содержание курсового проекта:

· введение;

· реферат;

· описание предметной области;

· анализ предметной области;

· разработка информационно-логической модели предметной области;

· разработка датологической модели предметной области

· разработка интерфейса пользователя;

· разработка инструкции администратору;

· разработка инструкции пользователю;

· заключение.

4.2. Каждый студент самостоятельно выбирает себе предметную область, которую он хорошо себе представляет.

4.3. В качестве предметных областей автоматизации могут выступать такие области:

· складское хозяйство;

· расчет заработной платы;

· продажа и бронирование билетов на различные виды транспорта;

· отдел кадров предприятия;

· библиотечное хозяйство и т.д.

4.4. После того, как Вы выбрали предметную область необходимо выполнить все разделы по п. 4.1.:

· «Описание предметной области»; (5-7 страниц описания той задачи, которую Вы будете автоматизировать в произвольном виде. Пример. Вы выбрали область «Складское хозяйство». Необходимо понятно описать существующую технологию поступления товара на склад, выдачу товара со склада и формы основных финансовых документов);

· «Анализ предметной области»; (5-10 страниц, которые выполняются по порядку п. 2 настоящих методических указаний);

· «Разработка информационно-логической модели предметной области»; (5-7 страниц, приводится описание и модель типа «Сущность-связь» для Вашей предметной области);

· «Разработка датологической модели предметной области»; (5-7 страниц, приводится описание и структуры таблиц для Вашей предметной области. Используйте материал п. 3 настоящих методических указаний );

· «Разработка интерфейса пользователя»; В данном разделе приводится описание экранных форм пользователя проектируемой информационной системы;

· «Разработка инструкции администратору»; Приводится инструкция администратору по инсталляции разрабатываемого программного обеспечения;

· «Разработка инструкции пользователю»; Приводится инструкция пользователю по работе с информационной системой.

4.5 Пояснительная записка к курсовому проекту должна быть аккуратно оформлена,

и содержать дискету с копией файла в формата WORD. На второй дискете должна быть файл *.MDB, программа на языке СУБД ACCESS.

Образец

Курсовая работа

По курсу «баз данных»

По теме: «Касса железнодорожных билетов»

Выполнил:

Проверил:

Студент группы

Колесник А.А.

Филатов В.А.

Старый Оскол

Задание

На курсовую работу по дисциплине "Базы данных"

cт. гр. Колесника А.А.

Тема: Фрагмент информационного обеспечения подсистемы

"Бронирование железнодорожных билетов"

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

Стоимость билета = расстояние от данного пункта до пункта назначения пассажира * стоимость одного километра пути на данном типе поезда * коэффициент классности в зависимости от типа вагона * (100 – процент скидки) / 100.

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

Даты отправления поездов известны.

Студент: Колесник А.А. Руководитель: доц. Филатов В.А.


РЕФЕРАТ

Целью выполнения работы является разработка информационного и программного обеспечения предметной области, связанной с продажей и учетом железнодорожных билетов. Проект реализован в СУБД ACCESS. В составе проекта реализованы целевые функции автоматизированного формирования железнодорожного билета и ведения статистики по проданным билетам.

Основными функциями продажи билетов являются:

· Нахождение цены билета для заданного пассажира с известным процентом льготы до заданной станции;

· Проверка возможности продажи данного билета;

· Печать подготовленного билета.

Основными функциями ведения статистики являются:

· Поиск поездов, идущих через заданную станцию;

· Подсчет количества пассажиров с каждым видом льгот, ездивших до заданной станции в указанную дату;

· Подсчет общей стоимости всех билетов на заданный поезд на заданную дату выезда;

· Печать результатов статистики.

База данных содержит: таблиц – 11, запросов – 18, форм – 18, макросов - 48, отчетов – 6. Пояснительная записка содержит 31 стр., 22 приложения.

КЛЮЧЕВЫЕ СЛОВА: БИЛЕТ, ЖЕЛЕЗНАЯ ДОРОГА, НОМЕР ПОЕЗДА, ФОРМА, ЗАПРОС, ТАБЛИЦА, СТАНЦИЯ, МАКРОС, ПОЛЕ СО СПИСКОМ, ПАССАЖИР.


СОДЕРЖАНИЕ

Введение.................................................................................................................... 31

1 Анализ предметной области................................................................................. 32

2 Разработка структуры базы данных.................................................................... 34

2.1 Инфологическая модель данных................................................................................................... 34

2.2 Датологическая модель данных..................................................................................................... 35

3 Разработка интерфейса пользователя.................................................................. 38

4 Инструкция по работе с системой......................................................................... 48

4.1 Инструкция для администратора................................................................................................... 48

4.2 Инструкция для пользователя........................................................................................................ 49

Заключение............................................................................................................... 52

Список литературы.................................................................................................. 53

Приложение 1 Форма «Главная»............................................................................ 54

Приложение 2 Форма «Типы вагонов»................................................................... 54

Приложение 3 Форма «Типы поездов»................................................................... 54

Приложение 4 Форма «Пассажиры»....................................................................... 55

Приложение 5 Форма «Скидки».............................................................................. 55

Приложение 6 Форма «Станции»............................................................................ 55

Приложение 7 Форма «Даты отправления»........................................................... 56

Приложение 8 Форма «Номера поездов»............................................................... 56

Приложение 9 Форма «Состав».............................................................................. 56

Приложение 10 Форма «Маршрут»........................................................................ 57

Приложение 11 Форма «Билеты»............................................................................ 57

Приложение 12 Форма «Билет».............................................................................. 57

Приложение 13 Форма «Новый пассажир»............................................................ 57

Приложение 14 Форма «Сервис»............................................................................ 59

Приложение 15 Форма «Поезда до станции»......................................................... 59

Приложение 16 Форма «Пассажиры до станции».................................................. 59

Приложение 17 Форма «Приход»........................................................................... 60

Приложение 18 Отчет «ОБилеты»........................................................................... 60

Приложение 19 Отчет «ОБилет»............................................................................. 60

Приложение 20 Отчет «ОПоезда до станции»........................................................ 61

Приложение 21 Отчет «ОПассажиры до станции»................................................. 61

Приложение 22 Отчет «ОПриход».......................................................................... 61

В ведение

Рост объемов перерабатываемой информации и расширение возможностей использования персональных ЭВМ, систем связи и локальных вычислительных сетей в различных областях промышленности, на транспорте, в банковской системе приводят к необходимости широкого использования систем обработки информации, и в особенности баз данных. Новый подход к организации процессов обработки данных нашел наиболее яркое выражение в концепциях баз данных, которые позволили по-новому подойти к вопросам работы с информацией в автоматизированных системах управления. Основной проблемой создания автоматизированной системы управления является разработка базы данных. База данных, в общем случае, представляет собой поименованную совокупность данных, отображающую характеристики объекта или множества объектов, их свойства и взаимоотношения. Базу данных можно рассматривать как информационную модель данного объекта (модель сущность-связь), от обоснованности, правильности и достоверности которой во многом зависит эффективность системы управления объектом.

Базы данных являются одним из основных компонентов автоматизированных систем различных уровней и типов. Они создаются для многих сфер и отраслей народного хозяйства: планирования, учета, управления предприятиями, статистики, здравоохранения и другие.

В настоящее время СУБД ACCESS используется при создании простых реляционных баз данных, для которых важным критерием является поддержание ссылочной целостности. Кроме того, эта СУБД является платформой разработки с гибкой функциональной интегрированной средой.

В разработке автоматизированного рабочего места кассира по продаже железнодорожных билетов были использованы возможности СУБД ACCESS как средства разработки и как хранилища данных.

1 Анализ предметной области

В современном обществе существуют различные транспортные услуги. Одними из них являются перевозки пассажиров от одной станции к другой по железной дороге.

Существующий неавтоматизированный механизм учета билетов очень сложен. Кассиру необходимо знать полную информацию по каждому поезду. Проданное количество билетов не должно превышать количество свободных мест в поезде, поэтому нужно обязательно знать, сколько билетов можно продать на данный поезд. Билет на поезд можно купить заранее, также можно отказаться от ранее купленного билета, если поезд еще не отправился. Каждый поезд следует только через конкретный набор станций, который указан в его маршруте. Кассир должен знать все маршруты поездов, чтобы не продать билет на поезд до какой-то станции, через которую этот поезд не проезжает. Очень сильно затруднен учет свободных мест, т.к. необходимо знать количество свободных мест в каждом вагоне на каждый поезд на каждую дату отправления. Для этого необходимо подсчитать, сколько билетов на этот поезд в этот вагон и на эту дату отправления уже продано. Также необходимо знать, сколько всего мест в каждом вагоне. На одно и тоже место в один и тот же вагон может быть продан только один билет, что очень трудно проследить, если система учета билетов неавтоматизированная. Также нужно следить, чтобы не совпадали номера проданных билетов, поскольку номер билета является уникальным. Подсчет стоимости билета тоже довольно сложная процедура. Для подсчета стоимости билета нужно знать цену проезда одного километра пути на заданном типе поезда, коэффициент классности для заданного типа вагона, расстояние от данной станции до станции следования, процент скидки для данного пассажира.

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

В случае если произошли какие-либо изменения в составе поезда или еще где-нибудь, то сразу же работникам станции необходимо начинать делать переучет своих записей. Если какая-либо станция перестала принимать пассажиров, то необходимо аннулировать все билеты, проданные до этой станции, вычеркнуть данную станцию из маршрутов всех поездов, ранее проходивших через нее, учесть, сколько мест освободилось на каждом из поездов. Если состав какого-либо поезда был изменен (отцепили или прицепили вагоны), то необходимо пересчитать количество свободных мест на этот поезд.

Как же внедрить электронные технологии в такой сложный механизм учета маршрутов и продажи билетов? Ответом на этот вопрос служит представленный проект. Подобный проект можно предложить для использования кассирами на железнодорожных станциях, для улучшения обслуживания пассажиров.

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

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

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

2 Разработка структуры базы данных

2.1 Инфологическая модель данных

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

Инфологическая модель данных приведена на рис.2.1 в виде ER-диаграммы.

Центральной информационной сущностью БД является сущность «Билет». Эта информационная сущность описывает конкретный билет на поезд. Каждый билет имеет свой уникальный идентификатор «Номер билета» и характеризуется сущностями «Пассажир», «Дата отправления поезда», «Станция», «Номер поезда», «Тип вагона». Также сущность «Билет» включает в себя стоимость билета.

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

Сущность «Номер билета» создана как уникальный идентификатор для сущности «Билет».

Сущность «Пассажир» связана отношением «Имеет» с сущностью «Льготы (процент скидки)». Она характеризуется характеристиками каждого пассажира и видом льготы. У одного пассажира может быть только один вид льготы.

Сущность «Льготы (процент скидки)» характеризуется видом льготы и идентификатором. Необходима для создания определенного набора видов льгот.

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

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

Рис.2.1 ER-диаграмма

Сущность «Номер поезда» содержит характеристики каждого поезда. Связана отношением «Включает в себя» с сущностью «Количество вагонов данного типа».

Сущность «Тип вагона» содержит набор существующих типов вагонов и идентификаторов для каждого типа вагона. Она связана отношением «Включает в себя» с сущностью «Количество вагонов данного типа». Также она содержит характеристики каждого типа вагона.

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

2.2 Датологическая модель данных

В созданной базе данных (БД) вся информация хранится в 10 таблицах, и 2 таблицы являются вспомогательными для промежуточных вычислений. Схема данных представлена на рис.2.2.

Рис 2.2 Схема данных

В таблице «Скидка» хранится размер льготы «Льгота» числового типа и ключевое поле «Код» типа счетчик, являющееся идентификатором льготы.

В таблице «Пассажир» хранится ФИО каждого пассажира в поле «ФИО» текстового типа, конкретная скидка для каждого пассажира в поле со списком «Скидка». Также хранится идентификатор каждого пассажира в поле «Код» типа счетчик. Поле «Код» является ключевым.

В таблице «Дата отправления» хранятся различные даты отправления поездов в поле «Дата» типа дата и идентификаторы для каждой даты в поле «Код» типа счетчик. Поле «Код» является ключевым.

В таблице «Тип вагона» хранится информация по каждому типу вагона. Название типа вагона в поле «Тип вагона» текстового типа, количество мест в вагоне данного типа в поле «Количество мест» числового типа, коэффициент класса, необходимый для вычисления стоимости проезда в данном типе вагона, в поле «Коэффициент класса» числового типа. Ключевым является поле «Код» типа счетчик, которое является идентификатором данного типа вагона.

В таблице «Количество вагонов» хранится количество вагонов данного типа для данного номера поезда. Количество вагонов хранится в поле «Количество вагонов» числового типа. Данный тип вагонов хранится в поле со списком «Тип вагона», данный номер поезда в поле со списком «Номер поезда». Ключевое поле состоит из 2 полей: «Номер поезда» и «Тип вагона». Составное ключевое поле необходимо, чтобы определенному типу вагонов и определенному номеру поезда соответствовало только одно количество вагонов.

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

В таблице «Номер поезда» хранится номер поезда в поле «Номер поезда» числового типа, вид поезда в поле со списком «Вид поезда» и ключевое поле «Код» типа счетчик, являющееся идентификатором для данного номера поезда.

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

В таблице «Станция» хранится информация по каждой станции. В поле «Станция» текстового типа хранится название стации, в поле «Расстояние» числового типа расстояние от станции, на которой находится данная касса железнодорожных билетов, до данной станции. Ключевое поле «Код» типа счетчик является идентификатором для данной станции.

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

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

Все связи реализуют: обеспечение целостности данных, каскадное обновление связанных полей, каскадное удаление связанных полей.

3 Разработка интерфейса пользователя

При загрузке программного приложения «Касса железнодорожных билетов» автоматически выполняется макрос «autoexec», который в свою очередь открывает главную форму «Главная» (Приложение 1).

Форма «Главная» является основным меню выбора дальнейших действий. В верхней части формы расположены две кнопки для работы по учету билетов.

При нажатии на кнопку «Билеты» выполняется макрос «КнБилеты_Главная», который закрывает форму «Главная» и открывает форму «Билеты».

При нажатии на кнопку «Сервис» выполняется макрос «КнСервис_Главная», который закрывает форму «Главная» и открывает форму «Сервис». В нижней части формы расположена группа кнопок, которые вызывают соответствующий справочник.

При нажатии на кнопку «Тип вагона» выполняется макрос «КнТип вагона_Главная», который закрывает форму «Главная» и открывает форму «Типы вагонов».

При нажатии на кнопку «Тип поезда» выполняется макрос «КнТип поезда_Главная», который закрывает форму «Главная» и открывает форму «Типы поездов».

При нажатии на кнопку «Пассажир» выполняется макрос «КнПассажир_Главная», который закрывает форму «Главная» и открывает форму «Пассажиры».

При нажатии на кнопку «Скидка» выполняется макрос «КнСкидка_Главная», который закрывает форму «Главная» и открывает форму «Скидки».

При нажатии на кнопку «Станция» выполняется макрос «КнСтанция_Главная», который закрывает форму «Главная» и открывает форму «Станции».

При нажатии на кнопку «Дата отправления» выполняется макрос «КнДата отправления_Главная», который закрывает форму «Главная» и открывает форму «Даты отправления».

При нажатии на кнопку «Номер поезда» выполняется макрос «КнНомер поезда_Главная», который закрывает форму «Главная» и открывает форму «Номера поездов». В нижнем правом углу формы расположена кнопка «Выход», при нажатии на которую выполняется макрос «КнВыход_Главная», который осуществляет выход из программного приложения.

Форма «Типы вагонов» (Приложение 2) содержит одну кнопку «Назад», при нажатии на которую выполняется макрос «КнНазад_Типы вагонов», который закрывает форму «Типы вагонов» и открывает форму «Главная». Также на форме расположены три поля: тип вагона, количество мест, коэффициент класса. Список типов вагонов отсортирован в алфавитном порядке по полю «Тип вагона». Источником формы является таблица «Тип вагона».

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

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

Форма «Пассажиры» (Приложение 4) содержит одну кнопку «Назад», при нажатии на которую выполняется макрос «КнНазад_Пассажиры», который закрывает форму «Пассажиры» и открывает форму «Главная». Также на форме расположены два поля: ФИО, скидка. Список пассажиров отсортирован в алфавитном порядке по полю «ФИО». Источником формы является запрос «ЗПассажир».

SELECT Пассажир.Код, Пассажир.ФИО, Скидка.Льгота

FROM Скидка INNER JOIN Пассажир ON Скидка.Код = Пассажир.Скидка

ORDER BY Пассажир.ФИО;

Запрос позволяет отобрать из таблиц «Скидка» и «Пассажир» ФИО пассажира и процент скидки для него. В форму нельзя добавить нового пассажира со своим процентом скидки, но можно удалить уже существующего пассажира, при этом удаляться все записи билетов, которые оформлены на этого пассажира.

Форма «Скидки» (Приложение 5) содержит одну кнопку «Назад», при нажатии на которую выполняется макрос «КнНазад_Скидки», который закрывает форму «Скидки» и открывает форму «Главная». Также на форме расположено одно поле «Скидка». Список скидок отсортирован по возрастанию процента скидки. Источником формы является таблица «Скидка». В форму при желании можно добавить новый процент скидки или удалить уже существующий процент, при этом удаляться все записи пассажиров, которые имеют этот процент скидки.

Форма «Станции» (Приложение 6) содержит одну кнопку «Назад», при нажатии на которую выполняется макрос «КнНазад_Станции», который закрывает форму «Станции» и открывает форму «Главная». Также на форме расположены два поля: станция, расстояние до станции. Список станций отсортирован в алфавитном порядке по полю «Станция». Источником формы является таблица «Станция». В форму при желании можно добавить новую станцию со своим расстоянием или удалить уже существующую станцию, при этом удаляться все записи, которые связаны с этой станцией.

Форма «Даты отправления» (Приложение 7) содержит одну кнопку «Назад», при нажатии на которую выполняется макрос «КнНазад_Даты отправления», который закрывает форму «Даты отправления» и открывает форму «Главная». Также на форме расположено одно поле «Дата отправления». Список дат отсортирован по убыванию даты отправления. Источником формы является таблица «Дата отправления». В форму при желании можно добавить новую дату отправления или удалить уже существующую дату, при этом удаляться все записи билетов, которые были проданы на эту дату отправления.

Форма «Номера поездов» (Приложение 8) содержит три кнопки. При нажатии на кнопку «Назад» выполняется макрос «КнНазад_Номера поездов», который закрывает формы «Номера поездов», «Маршрут» и «Состав». После этого макрос открывает форму «Главная». При нажатии на кнопку «Состав» выполняется макрос «КнСостав_Номера поездов», который открывает форму «Состав», при этом выводится в форму состав выбранного поезда. При нажатии на кнопку «Маршрут» выполняется макрос «КнМаршрут_Номера поездов», который открывает форму «Маршрут», при этом выводится в форму маршрут выбранного поезда. Также на форме расположены два поля: простое поле «Номер поезда» и поле со списком «Тип поезда». В качестве источника строк для поля со списком «Тип поезда» используется запрос «ЗВид поезда».

SELECT [Вид поезда].Код, [Вид поезда].[Вид поезда], [Вид поезда].[Стоимость км]

FROM [Вид поезда]

ORDER BY [Вид поезда].[Вид поезда];

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

Форма «Состав» (Приложение 9) содержит одну кнопку «Назад», при нажатии на которую выполняется макрос «КнНазад_Состав», который закрывает форму «Состав». Также на форме расположены три поля: номер поезда, тип вагона, количество вагонов. Поле «Тип вагона» является полем со списком. Источником строк для этого поля является запрос «ЗТип вагона».

SELECT [Тип вагона].Код, [Тип вагона].[Тип вагона], [Тип вагона].[Количество мест], [Тип вагона].[Коэффициент класса]

FROM [Тип вагона]

ORDER BY [Тип вагона].[Тип вагона];

Запрос реализует сортировку типов вагонов в алфавитном порядке. Поле «Номер поезда» недоступно для изменения пользователем. Это поле принимает значения в зависимости от выбранного номера поезда в форме «Номера поездов». Источником формы является таблица «Количество вагонов». В форму при желании можно добавить новое количество вагонов нового типа или удалить уже существующие вагоны определенного типа. Также можно изменить количество вагонов определенного типа.

Форма «Маршрут» (Приложение 10) содержит одну кнопку «Назад», при нажатии на которую выполняется макрос «КнНазад_Маршрут», который закрывает форму «Маршрут». На форме расположены простое поле «Номер поезда» и поле со списком «Станция». Источником строк для поля «Станция» является запрос «ЗСтанция».

SELECT Станция.Код, Станция.Станция, Станция.Расстояние

FROM Станция

ORDER BY Станция.Станция;

Запрос реализует сортировку станций в алфавитном порядке. Поле «Номер поезда» недоступно для изменения пользователем. Это поле принимает значения в зависимости от выбранного номера поезда в форме «Номера поездов». Источником формы является таблица «Следует через». В форму при желании можно добавить новую станцию или удалить уже существующую станцию. Также можно изменить какую-либо существующую в маршруте станцию на любую другую.

Форма «Билеты» (Приложение 11) содержит четыре кнопки. При нажатии на кнопку «Назад» выполняется макрос «КнНазад_Билеты», который закрывает форму «Билеты» и отчет «ОБилеты». После этого макрос открывает форму «Главная». При нажатии на кнопку «Подробно» выполняется макрос «КнПодробно_Билеты», который закрывает форму «Билеты» и открывает форму «Билет», при этом выводится в форму полная информация о билете, который был выбран в форме «Билеты». При нажатии на кнопку «Добавить» выполняется макрос «КнДобавить_Билеты», который закрывает форму «Билеты» и открывает форму «Билет», при этом на форме появляется чистый бланк билета для заполнения. При нажатии на кнопку «Отчет» выполняется макрос «КнОтчет_Билеты», который открывает для просмотра отчет «ОБилеты». Также на форме расположены пять полей: номер билета, пассажир, дата отправления, номер поезда, стоимость. Все поля недоступны для редактирования пользователем. Источником формы является запрос «ЗКупил билет».

SELECT [Купил билет].Номер, [Номер поезда].[Номер поезда], [Дата отправления].Дата, Пассажир.ФИО, [Купил билет].Цена

FROM Пассажир INNER JOIN ([Номер поезда] INNER JOIN ([Дата отправления] INNER JOIN [Купил билет] ON [Дата отправления].Код = [Купил билет].Дата) ON [Номер поезда].Код = [Купил билет].[Номер поезда]) ON Пассажир.Код = [Купил билет].Пассажир

ORDER BY [Купил билет].Номер;

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

Форма «Билет» (Приложение 12) содержит три кнопки. При нажатии на кнопку «ОК» выполняется макрос «КнОК_Билет», который закрывает форму «Новый пассажир» и отчет «ОБилет». В случае если билет сформирован правильно, макрос заносит в цену билета подсчитанную его стоимость. Если в бланк билета не было занесено никакой информации, то макрос закрывает форму «Билет», открывает форму «Билеты» и прекращает свою работу. После этого макрос открывает запрос «ЗУ1».

DELETE Т1.Мест

FROM Т1;

Этот запрос очищает таблицу «Т1». Потом открывается запрос «З1».

INSERT INTO Т 1 ( Мест )

SELECT [Количество вагонов]*[Количество мест] AS Мест

FROM [Тип вагона] INNER JOIN [Количество вагонов] ON [Тип вагона].Код = [Количество вагонов].[Тип вагона]

GROUP BY [Количество вагонов]*[Количество мест], [Количество вагонов].[Номер поезда], [Тип вагона].Код

HAVING ((([Количество вагонов].[Номер поезда])=[Forms]![Билет]![Номер поезда]) AND (([Тип вагона].Код)=[Forms]![Билет]![Тип вагона]));

Этот запрос вычисляет и заносит в таблицу «Т1» количество существующих мест в данном поезде в данном типе вагона. После этого невидимо для пользователя открывается форма «Ф1». Из формы «Ф1» заносится поле «Мест» в форму «Билет» в невидимое поле «Поле30». Потом форма «Ф1» закрывается. Далее снова открывается запрос «ЗУ1» и после этого запрос «З2».

INSERT INTO Т 1 ( Мест )

SELECT Count(З 3.Номер ) AS [Count-Номер ]

FROM З3;

Этот запрос подсчитывает и заносит в таблицу «Т1» количество записей в запросе «З3».

SELECT [Купил билет].Номер

FROM [Купил билет]

GROUP BY [Купил билет].Номер, [Купил билет].[Номер поезда], [Купил билет].[Тип вагона], [Купил билет].Дата

HAVING ((([Купил билет].Номер)<>[Forms]![Билет]![Номер]) AND (([Купил билет].[Номер поезда])=[Forms]![Билет]![Номер поезда]) AND (([Купил билет].[Тип вагона])=[Forms]![Билет]![Тип вагона]) AND (([Купил билет].Дата)=[Forms]![Билет]![Дата]));

Запрос «З3» подсчитывает количество уже проданных билетов на данный поезд на данную дату отправления в данный тип вагона. Причем текущий билет в этом подсчете не учитывается. После этого невидимо для пользователя снова открывается форма «Ф1». Из формы «Ф1» заносится поле «Мест» в форму «Билет» в невидимое поле «Поле32». Потом форма «Ф1» закрывается. В случае если содержание поля «Поле30» больше поля «Поле32», макрос закрывает форму «Билет» и открывает форму «Билеты». В противном случае на экране появляется сообщение «Мест нет». При нажатии на кнопку «Новый пассажир» выполняется макрос «КнНовый пассажир_Билет», который открывает форму «Новый пассажир». При нажатии на кнопку «Отчет» выполняется макрос «КнОтчет_Билет», который открывает для просмотра отчет «ОБилет». Также на форме расположены восемь полей: номер билета, пассажир, дата отправления, номер поезда, стоимость, тип вагона, скидка, до станции. Поля «Номер поезда», «Тип вагона», «До станции», «Пассажир», «Дата отправления» являются полями со списком. Источником строк поля «Номер поезда» является запрос «ЗНомер поезда».

SELECT [Номер поезда].Код, [Номер поезда].[Номер поезда], [Номер поезда].[Вид поезда]

FROM [Номер поезда]

ORDER BY [Номер поезда].[Номер поезда];

Этот запрос реализует сортировку номеров поездов по возрастанию. Источником строк поля «Тип вагона» является запрос «ЗТип вагона». Источником строк поля «До станции» является запрос «ЗСтанция2».

SELECT Станция.Код, Станция.Станция, Станция.Расстояние, [Следует через].[Номер поезда]

FROM Станция INNER JOIN [Следует через] ON Станция.Код = [Следует через].Станция

WHERE ((([Следует через].[Номер поезда])=[Forms]![Билет]![Номер поезда]))

ORDER BY Станция.Станция;

Этот запрос выдает только те станции, через которые проходит данный поезд. Станции отсортированы в алфавитном порядке. Источником строк для поля «Пассажир» является запрос «ЗПассажир». Источником строк для поля «Дата отправления» является запрос «ЗДата отправления».

SELECT [Дата отправления].Код, [Дата отправления].Дата

FROM [Дата отправления]

ORDER BY [Дата отправления].Дата DESC;

Этот запрос сортирует в порядке убывания даты отправления поездов. Поле «Скидка» недоступно для редактирования пользователем, оно принимает значение в зависимости от выбранного пассажира. Поле «Стоимость» также недоступно для редактирования, оно принимает вычисляемое значение. Источником формы является запрос «ЗБилет».

SELECT [Купил билет].Номер, [Купил билет].Дата, [Купил билет].[Номер поезда], [Купил билет].[Тип вагона], [Купил билет].Станция, [Купил билет].Пассажир, [Купил билет].Цена, Скидка.Льгота, [Расстояние]*[Стоимость км]*[Коэффициент класса]*(100-[Льгота])/100 AS Стоимость

FROM [Тип вагона] INNER JOIN (Станция INNER JOIN (Скидка INNER JOIN (Пассажир INNER JOIN (([Вид поезда] INNER JOIN [Номер поезда] ON [Вид поезда].Код = [Номер поезда].[Вид поезда]) INNER JOIN [Купил билет] ON [Номер поезда].Код = [Купил билет].[Номер поезда]) ON Пассажир.Код = [Купил билет].Пассажир) ON Скидка.Код = Пассажир.Скидка) ON Станция.Код = [Купил билет].Станция) ON [Тип вагона].Код = [Купил билет].[Тип вагона];

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

Форма «Новый пассажир» (Приложение 13) содержит одну кнопку «ОК», при нажатии на которую выполняется макрос «КнОК_Новый пассажир», который закрывает форму «Новый пассажир». Также на форме расположены простое поле «ФИО» и поле со списком «Скидка». Источником строк для поля «Скидка» является запрос «ЗСкидка».

SELECT Скидка.Код, Скидка.Льгота

FROM Скидка

ORDER BY Скидка .Льгота ;

Запрос сортирует процент скидки по возрастанию. Источником формы является таблица «Пассажир». В форму можно ввести ФИО нового пассажира и процент скидки предоставляемый ему. Если нажать кнопку «ОК» и при этом ничего не ввести, то новый пассажир не будет добавлен.

Форма «Сервис» (Приложение 14) является основным меню выбора предоставляемых программным приложением сервисных услуг. При нажатии на кнопку «Назад» выполняется макрос «КнНазад_Сервис», который закрывает форму «Сервис» и открывает форму «Главная». При нажатии на кнопку «Сколько пассажиров ездило до заданной станции в указанную дату» выполняется макрос «КнПассажиры до станции_Сервис», который закрывает форму «Сервис» и открывает форму «Пассажиры до станции». При нажатии на кнопку «На каких поездах можно доехать до указанной станции» выполняется макрос «КнПоезда до станции_Сервис», который закрывает форму «Сервис» и открывает форму «Поезда до станции». При нажатии на кнопку «Сколько стоили все билеты на заданный поезд на заданную дату» выполняется макрос «КнПриход_Сервис», который закрывает форму «Сервис» и открывает форму «Приход».

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

SELECT [Номер поезда].[Номер поезда], [Вид поезда].[Вид поезда], [Следует через].Станция

FROM ([Вид поезда] INNER JOIN [Номер поезда] ON [Вид поезда].Код = [Номер поезда].[Вид поезда]) INNER JOIN [Следует через] ON [Номер поезда].Код = [Следует через].[Номер поезда]

ORDER BY [Номер поезда].[Номер поезда];

Запрос предназначен для выборки из трех таблиц номера поезда, типа поезда и станций, через которые этот поезд проезжает. Также запрос производит сортировку по возрастанию по полю «Номер поезда».

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

SELECT Скидка.Льгота, [Купил билет].Станция, [Купил билет].Дата, Count([Купил билет].Номер) AS [Count-Номер]

FROM Скидка INNER JOIN (Пассажир INNER JOIN [Купил билет] ON Пассажир.Код = [Купил билет].Пассажир) ON Скидка.Код = Пассажир.Скидка

GROUP BY Скидка.Льгота, [Купил билет].Станция, [Купил билет].Дата

ORDER BY Скидка.Льгота;

Запрос предназначен для подсчета количества пассажиров, купивших билеты до каждой станции на каждую дату отправления с каждым видом скидки. Также запрос производит сортировку по возрастанию по полю «Скидка».

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

SELECT [Купил билет].Дата, [Купил билет].[Номер поезда], [Тип вагона].[Тип вагона], Sum([Купил билет].Цена) AS [Sum-Цена]

FROM [Тип вагона] INNER JOIN [Купил билет] ON [Тип вагона].Код = [Купил билет].[Тип вагона]

GROUP BY [Купил билет].Дата, [Купил билет].[Номер поезда], [Тип вагона].[Тип вагона]

ORDER BY [Тип вагона].[Тип вагона];

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

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

Отчет «ОБилет» (Приложение 19) содержит восемь полей: номер билета, пассажир, дата отправления, номер поезда, цена, тип вагона, скидка, до станции. Источником отчета является запрос «ЗОБилет».

SELECT [Купил билет].Номер, [Дата отправления].Дата, [Номер поезда].[Номер поезда], [Тип вагона].[Тип вагона], Станция.Станция, Пассажир.ФИО, [Купил билет].Цена, Скидка.Льгота

FROM [Тип вагона] INNER JOIN (Станция INNER JOIN (Скидка INNER JOIN (Пассажир INNER JOIN ([Номер поезда] INNER JOIN ([Дата отправления] INNER JOIN [Купил билет] ON [Дата отправления].Код = [Купил билет].Дата) ON [Номер поезда].Код = [Купил билет].[Номер поезда]) ON Пассажир.Код = [Купил билет].Пассажир) ON Скидка.Код = Пассажир.Скидка) ON Станция.Код = [Купил билет].Станция) ON [Тип вагона].Код = [Купил билет].[Тип вагона]

ORDER BY [Купил билет].Номер;

Запрос предназначен для выборки всех необходимых полных данных билетов из семи таблиц. Отчет выводит на экран и на печать полную информацию о текущем билете.

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

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

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

4 Инструкция по работе с системой

4.1 Инструкция для администратора

База данных Колесник Андрей.mdb написана в СУБД ACCESS 2000. Для запуска базы нужно открыть файл при помощи программы MICROSOFT ACCESS.

При необходимости защиты информации от посторонних лиц, СУБД ACCESS 2000 предоставляет возможность установить пароль на базу данных. Для этого необходимо выбрать меню Сервис \ Защита \ Задать пароль базы данных… При необходимости закрыть доступ пользователю для изменения базы данных можно воспользоваться меню Сервис \ Меню \ Разрешения… Эта опция позволяет установить права для каждой группы пользователей и отдельно для каждого пользователя.

4.2 Инструкция для пользователя

При открытии базы данных загружается главная форма. На форме расположена одна группа кнопок «Справочники» (7 кнопок) и три отдельные кнопки.

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

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

При нажатии на кнопку «Пассажир» на экране появится форма со списком всех существующих пассажиров. При желании можно удалить уже существующего пассажира, нажав на кнопку «Удалить запись» на верхней панели ACCESS. Также можно изменить ФИО пассажира, необходимо только вписать нужные данные в поле «ФИО», которое Вы изменяете. Добавить нового пассажира или изменить процент скидки из этой формы нельзя. Кнопка «Назад» вернет Вас в главное меню.

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

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

При нажатии на кнопку «Дата отправления» на экране появится форма со списком всех существующих дат отправления. При желании можно удалить уже существующую дату, нажав на кнопку «Удалить запись» на верхней панели ACCESS. Также можно изменить дату, необходимо только вписать нужную Вам дату вместо существующей. Добавить новую дату отправления очень просто. Нужно навести и нажать на свободную строчку (последняя в списке), после этого ввести новую дату. Кнопка «Назад» вернет Вас в главное меню.

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

При нажатии на кнопку «Билеты» на экране появится форма со списком всех существующих билетов и с краткой информацией о каждом билете. При желании можно удалить уже существующую билет, нажав на кнопку «Удалить запись» на верхней панели ACCESS. Менять что-либо на форме нельзя. Добавить новый билет, можно нажав на кнопку «Добавить», после чего откроется новая форма с пустым бланком для нового билета. Также можно отпечатать список существующих билетов, нажав на кнопку «Отчет». Еще можно посмотреть полную информацию по конкретному билету. Для этого нужно выбрать интересующий Вас билет и нажать на кнопку «Подробно», после чего на экране появится форма с заполненным бланком билета. Кнопка «Назад» вернет Вас в главное меню. Бланк билета содержит полную информацию о конкретном билете. Можно поменять значение каждого поля, выбрав нужное из списка. Нельзя только менять поля «Скидка» и «Стоимость», так как поле «Скидка» устанавливается в соответствии с процентом скидки у выбранного пассажира, а поле «Стоимость» вычисляется автоматически в зависимости от выбранных данных. Закончить изменение или добавление билета, можно нажав на кнопку «ОК», после чего Вы вернетесь на форму со списком всех существующих билетов. Также можно распечатать текущий билет, нажав на кнопку «Отчет». Еще можно добавить нового пассажира, нажав на кнопку «Новый пассажир», после чего появится новая форма с полем «ФИО» для ввода ФИО пассажира и поле со списком «Скидка» для определения размера скидки для этого пассажира. Кнопка «ОК» примет заполненную информацию.

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

Заключение

В ходе выполнения работы была освоена СУБД ACCESS. Также была разработана программа, позволяющая упростить работу кассира по продаже билетов на железнодорожные поезда. Программа не позволяет учитывать место и номер вагона на билете, что, безусловно, является минусом, но она не дает возможность кассиру продать билетов в какой-то тип вагона больше чем общее количество мест в вагонах этого типа. Также при формировании билета программа не позволяет продать билет на поезд до станции, через которую этот поезд не идет. Еще одним плюсом является то, что стоимость билета рассчитывается автоматически. Во всем программном продукте используется каскадное удаление данных. С одной стороны это хорошо, поскольку автоматически удаляются все связанные данные, например, при удалении какой-либо станции автоматически в маршрутах всех поездов эта станция будет удалена, но с другой стороны это плохо, так как, например, при отмене какого-либо поезда все билеты, которые когда-либо были проданы на этот поезд, будут удалены. В целом проект выполнен на достаточно высоком уровне по отношению к СУБД ACCESS.

Список литературы

Дж. Мартин. Организация баз данных в вычислительных системах. Издательство Мир, 1978 г. - 616 с.

Приложение 1 Форма «Главная»

Приложение 2 Форма «Типы вагонов»

Приложение 3 Форма «Типы поездов»

Приложение 4 Форма «Пассажиры»

Приложение 5 Форма «Скидки»

Приложение 6 Форма «Станции»

Приложение 7 Форма «Даты отправления»

Приложение 8 Форма «Номера поездов»

Приложение 9 Форма «Состав»

Приложение 10 Форма «Маршрут»

Приложение 11 Форма «Билеты»

Приложение 12 Форма «Билет»

Приложение 13 Форма «Новый пассажир»

Приложение 14 Форма «Сервис»

Приложение 15 Форма «Поезда до станции»

Приложение 16 Форма «Пассажиры до станции»

Приложение 17 Форма «Приход»

Приложение 18 Отчет «ОБилеты»

Приложение 19 Отчет «ОБилет»

Приложение 20 Отчет «ОПоезда до станции»

Приложение 21 Отчет «ОПассажиры до станции»

Приложение 22 Отчет «ОПриход»