
- •Глава 2 возможностИ ms Access, использованные 12
- •Глава 1 Обзор существующих субд
- •Глава 2 возможностИ ms Access, использованные при разработке базы данных
- •Глава 3 Разработка структуры проектируемой базы данных и её реализация средствами sql, vba
- •3. Заявка
- •1. Запчасти
- •2. Детали
- •4. Марка Код марки Марка
Н
Код
заявки3. Заявка
ФИО
Рег.номер
Код марки
Дата
а рисунке 3.1 изображена инфологическая модель данной базы данных.
Код
заявки
ФИО
Рег.номер
Код марки
Дата
Код
заявки
Код запчасти
состоит
описывают1. Запчасти
2. Детали
состоит
4. Марка Код марки Марка
Рисунок 3.1 - Информационно-логическая модель
В результате упорядочения таблиц схема данных будет выглядеть следующим образом (рисунок 3.2).
Рисунок 3.2 - Связи между таблицами БД
Следующим шагом в построении базы данных будет заполнение её таблиц (таблицы 3.2-3.5).
Таблица 3.2 – Запчасти
Запчасти | ||
Код запчасти |
Наименование |
Стоимость |
1 |
Нет |
0,00р. |
2 |
Жеклер |
1,50р. |
3 |
Фильтр |
10,00р. |
4 |
Руль |
2 000,00р. |
5 |
Шина |
1 500,00р. |
6 |
Зерколо(лобовое) |
150,00р. |
7 |
Карбюратор |
730,00р. |
8 |
Каробка передач |
5 000,00р. |
9 |
Чехол |
300,00р. |
10 |
Щуп |
30,00р. |
11 |
Штанга |
950,00р. |
12 |
Шпулька |
45,00р. |
Таблица 3.3 – Детали
Детали | |
Код заявки |
Код запчасти |
4 |
1 |
5 |
1 |
1 |
2 |
3 |
2 |
3 |
2 |
5 |
2 |
1 |
3 |
2 |
3 |
2 |
3 |
2 |
3 |
3 |
3 |
1 |
3 |
3 |
4 |
1 |
4 |
1 |
4 |
6 |
5 |
8 |
5 |
7 |
5 |
1 |
6 |
6 |
6 |
8 |
6 |
1 |
7 |
2 |
7 |
6 |
7 |
7 |
7 |
7 |
10 |
Таблица 3.4 – Заявка
Заявка | ||||
Код заявки |
ФИО |
Регистрационный номер |
Код марки |
Дата |
1 |
Иванов |
А 456 НК 63 |
1 |
05.06.2009 |
2 |
Петров |
Н 888 ЛК 163 |
2 |
05.07.2009 |
3 |
Сидоров |
О 123 ЕН 163 |
4 |
06.06.2009 |
4 |
Иванов |
А 456 НК 63 |
1 |
08.08.2009 |
5 |
Калинин |
К 666 АН 163 |
5 |
10.07.2009 |
6 |
Уткин |
О 488 УК 163 |
6 |
12.08.2009 |
7 |
Носков |
К 999 ЕК 163 |
1 |
05.06.2009 |
8 |
Журавлев |
Н 452 УК 135 |
3 |
12.07.2009 |
Таблица 3.5 – Марка
Марка | |
Код марки |
Марка |
1 |
ВАЗ |
2 |
Мазда |
3 |
Мицубиси |
4 |
Опель Вектра |
5 |
Опель Астра |
6 |
Fiat Marea |
7 |
Fiat Linea |
8 |
Мерседес |
9 |
BMW 06 |
10 |
Ford Focus 116 |
3.3 Применение средств SQL,VBA
Стремительный рост популярности SQL является одной из самых важных тенденций в современной компьютерной промышленности. За несколько последних лет SQL стал единственнымязыком баз данных. На сегодняшний день SQL поддерживают свыше ста СУБД, работающих как на персональных компьютерах, так и на больших ЭВМ. Был принят, а затем дополнен официальный международный стандарт на SQL. Язык SQL является важным звеном в архитектуре систем управления базами данных, выпускаемых всеми ведущими поставщиками программных продуктов, и служит стратегическим направлением разработок компании Microsoft в области баз данных. Зародившись в результате выполнения второстепенного исследовательского проекта компании IBM, SQL сегодня широко известен и в качестве мощного рыночного фактора.
SQL является инструментом, предназначенным для обработки и чтения данных, содержащихся в компьютерной базе данных. SQL - это сокращенное название структурированного языка запросов (Structured Query Language). Как следует из названия, SQL является языком программирования, который применяется для организации взаимодействия пользователя с базой данных. На самом деле SQL работает только с базами данных одного определенного типа, называемыхреляционными.
Если пользователю необходимо прочитать данные из базы данных, он запрашивает их у СУБД с помощью SQL. СУБД обрабатывает запрос, находит требуемые данные и посылает их пользователю. Процесс запрашивания данных и получения результата называется запросом к базе данных: отсюда и название — структурированный язык запросов.
Однако это название не совсем соответствует действительности. Во-первых, сегодня SQL представляет собой нечто гораздо большее, чем простой инструмент создания запросов, хотя именно для этого он и был первоначально предназначен. Несмотря на то, что чтение данных по-прежнему остается одной из наиболее важных функций SQL, сейчас этот язык используется для реализации всех функциональных возможностей, которые СУБД предоставляет пользователю, а именно:
Организация данных.SQL дает пользователю возможность изменять структуру представления данных, а также устанавливать отношения между элементами базы данных.
Чтение данных.SQL дает пользователю или приложению возможность читать из базы данных содержащиеся в ней данные и пользоваться ими.
Обработка ванных.SQL дает пользователю или приложению возможность изменять базу данных, т.е. добавлять в нее новые данные, а также удалять или обновлять уже имеющиеся в ней данные.
Управление доступом.С помощью SQL можно ограничить возможности пользователя по чтению и изменению данных и защитить их от несанкционированного доступа.
Совместное использование данных.SQL координирует совместное использование данных пользователями, работающими параллельно, чтобы они не мешали друг другу.
Целостность данных.SQL позволяет обеспечить целостность базы данных, защищая ее от разрушения из-за несогласованных изменений или отказа системы.
Таким образом, SQL является достаточно мощным языком для взаимодействия с СУБД.
Во-вторых, SQL — это не полноценный компьютерный язык типа COBOL, FORTRAN или С. В SQL нет оператора IF для проверки условий, нет оператора GOTO для организации переходов и нет операторов DO или FOR для создания циклов. SQL является подъязыком баз данных, в который входит около тридцати операторов, предназначенных для управления базами данных. Операторы SQL встраиваются в базовый язык, например COBOL, FORTRAN или С, и дают возможность получать доступ к базам данных. Кроме того, из такого языка, как С, операторы SQL можно посылать СУБД в явном виде, используя интерфейс вызовов функций.
Наконец, SQL — это слабо структурированный язык, особенно по сравнению с такими сильно структурированными языками, как С или Pascal. Операторы SQL напоминают английские предложения и содержат "слова-пустышки", не влияющие на смысл оператора, но облегчающие его чтение. В SQL почти нет нелогичностей, к тому же имеется ряд специальных правил, предотвращающих создание операторов SQL, которые выглядят как абсолютно правильные, но не имеют смысла.
Несмотря на не совсем точное название, SQL на сегодняшний день является единственным стандартным языком для работы с реляционными базами данных. SQL — это достаточно мощный и в то же время относительно легкий для изучения язык.
Запросы в MS Access сохраняются и реализуются с помощью языка SQL. Хотя большинство запросов можно создать графическими средствами (запросы по образцу), однако хранятся они в виде инструкций SQL. В ряде случаев (например, в подчиненных запросах) можно использовать только язык SQL. В MS Access использован и ниже излагается диалект этого языка.
Запрос на языке SQL состоит из инструкций. Каждая инструкция может содержать несколько предложений.
Практически ни один запрос не обходится без предложения FROM, описывающего используемые таблицы или запросы, и имеющего синтаксис
FROM таблицы [IN внешняя_БД]
Таблицы- используемые таблицы/запросы и их взаимосвязи. Если в предложении FROM присутствует конструкция IN(квадратные скобки указывают, что эта часть предложения не является обязательной), то после зарезервированного слова IN должно стоять имя базы данных, в которой находятся таблицы (предполагается, что используют таблицы не из текущей БД) (рисунок 3.3).
Если некоторых записей в таблице, то поле названия предмета этого преподавателя будет пусто, если используется объединение LEFT JOIN (рисунок 3.3).
Инструкция SELECT обеспечивает выборку необходимых полей из таблиц или запросов. Формат минимального варианта:
SELECT поля FROM таблицы;
Поля - множество выражений и имен полей, разделенных запятыми.
Если имя повторяется в нескольких таблицах, перечисленных в предложении FROM, то перед именем надо поместить имя таблицы и точку.
Если имя таблицы или поля содержит пробел или другой спецсимвол, то это имя нужно заключить в квадратные скобки. В других случаях скобки необязательны.
Иногда бывает желательно, чтобы заголовок отличался от имени поля. В этом случае после имени поля следует поместить зарезервированное слово AS и заголовок (псевдоним). Если в заголовке более одного слова, его необходимо заключить в квадратные скобки.
Если необходимо выдать все поля таблицы, то аргумент поля следует задать звездочкой или в виде “Таблица.*”.
Иногда требуется выдать не значение поля, а результат вычислений над значениями полей. В этом случае вместо имени поля надо задать выражение. Правила записи выражений не отличаются от правил, применяемых в конструкторе запросов.
Помимо слов «select», «from», «where» в команде выборки можно использовать и другие служебные слова, например:
ORDER BY <атрибут> ASC – определяет сортировку результата выборки в порядке возрастания (asc) или убывания (desc) значения атрибута;
GROUP BY <атрибут1> – группирует данные по значениям атрибута (рисунок 3.3, в режиме SQLзапрос представлен в приложении Д).
Рисунок 3.3 – Запрос «Запрос (Диаграмма)» в режиме Контруктор
Рисунок 3.4 – Запрос «Запрос (Диаграмма)» в режиме Сводная диаграмма
Помимо команды выборки select, язык SQL имеет команды, позволяющие обновлять данные (update), вставлять (insert) и удалять (delete).
Наилучшим решением при проектировании интерфейса базы данных, будет не использовать стандартный интерфейс Access, а использовать для интерактивного взаимодействия с пользователем специальные формы, содержащие такие элементы управления как кнопки, переключатели, флажки, выпадающие списки и т.п. При этом желательно, чтобы при запуске базы данных, стандартное окно базы данных вообще не отображалось («Сервис/Параметры запуска/Снять флажок "Окно базы данных"»), а при запуске базы данных запускалась соответствующая кнопочная форма («Сервис/ Параметры запуска/В выпадающем списке "Форма" указать название формы»), через которую бы и осуществлялось управление базой данных. Также желательно, чтобы база данных имела собственную строку меню, а соответствующие формы – собственные контекстные меню.
Для этого необходимо сначала создать собственную панель инструментов (вызвать контекстное меню, находясь на панели инструментов, «Настройка/Панели инструментов/Создать»), перетащить туда необходимые кнопки с вкладки «Команды» меню «Настройка» и в свойствах панели указать будет она являться панелью, контекстным меню или строкой меню («Настройка/Панели инструментов/Свойства/Тип»). После этого, можно указать общее для всех форм контекстное меню или строку меню, выбрав их из соответствующего списка в окне «Сервис/Параметры запуска». Можно также указать индивидуальные строки меню и контекстное меню для каждой формы («Выделить форму/Конструктор/ Вид/Свойства/Вкладка "Другие"/выбрать строки меню и контекстные меню из выпадающих списков»). В свойствах формы и отдельных элементов управления формы можно также указать процедуры VBA или макросы, выполняющиеся при возникновении определенных событий в форме (вставка или удаление записей, открытие формы, щелчок по кнопке и т.д.). Соответствующие процедуры VBA хранятся в самой форме: меню «Вид/Программа». При редактировании программы, в левом верхнем выпадающем списке содержится перечень элементов формы, а в правом верхнем выпадающем списке – перечень событий для выбранного элемента. В программах на VBA используются встроенные объекты Access и объекты доступа к данным DAO/ADO.
Чтобы добавить кнопку с фрагментом кода, а затем просмотреть код, необходимо выполнить следующее:
Открыть форму в режиме конструктора.
На Панели элементов выбрать элемент Кнопка.
На форме указать, где будет расположена кнопка, после чего появится диалоговое окно мастера кнопок (рисунке 3.5).
Рисунок 3.5 - Диалоговое окно Создание кнопок
Далее следовать указаниям мастера.
После сохранения формы, выбрать команду Вид -> Программаили выполнить щелчок по кнопкеПрограммана панели инструментов. В результате откроется окноредактора Visual Basic for Applications (рисунок 3.6)
В этом окне можно видеть три фрагмента программы на языке VBA: раздел объявлений (в верхней части окна), который содержит код, относящийся ко всей форме в целом, а также два раздела кода, привязанных к двум кнопкам.
Рисунок 3.6 - Окно редактора VBA
Начало и конец раздела имеет следующую структуру:
Private Sub Кнопка4_Click( )
End Sub.
Основная часть работы выполняется следующим оператором: DoCmd.OpenQuery stDocName, acNormal, acEdit. Этот оператор выполняет открытие формы.
Открыв модуль VBA, его можно редактировать как текст в любом текстовом редакторе. В окне редактора Visual Basic в код можно вставить текст из другого файла. Для этого выбрать команду Вставка -> Файл, а в открывшемся диалоговом окне выбрать нужный файл и выполнить щелчок по кнопке ОК.
Модули на языке Visual Basic можно выводить на печать. Для этого следует открыть модуль и выбрать команду Файл -> Печать.
Структурным элементом программы, написанной на языке VBA, является модуль - совокупность объявлений и процедур, объединенных в единое целое. В Access модули трех типов: стандартные модули, модули формы и модули отчетов. В отличие от стандартного модуля, который создается таким же образом, как и любой другой объект БД, и может выполнять практически любые вычисления, модули форм и отчетов разрабатываются для обработки событий, связанных с элементами формы или отчета.
Заключение
В ходе выполнения работы была создана база данных, касающаяся информационной системы магазина ЗИПа автозапчастей.
В ходе работы:
были получены практические навыки постановки задач, проектирования БД, и реализации в MicrosoftAccess2003;
были получены навыки работы в MicrosoftWord2003;
была достигнута основная цель – создана работоспособная база данных с удобным пользовательским интерфейсом.
Access— мощное приложениеWindows; впервые производительность СУБД органично сочетается с теми удобствами, которые имеются в распоряжении пользователейMicrosoftWindows. Поскольку оба эти продукта— детища компанииMicrosoft, они прекрасно взаимодействуют между собой. СистемаAccessработает под управлениемWindows9x,NTилиWindowsXP, так что при работе с ней пользователю доступны все преимуществаWindows. Можно вырезать, копировать и вставлять данные из любого приложенияWindowsвAccessи наоборот; можно создать проект формы вAccessи вставить его в конструктор форм.
Также были использованы средства SQLиVBA.
SQL — это легкий для понимания язык и в то же время универсальное программное средство управления данными.
Успех языку SQL принесли следующие его особенности:
• независимость от конкретных СУБД;
• переносимость с одной вычислительной системы на другую;
• наличие стандартов;
• одобрение компанией IBM (СУБД DB2);
• поддержка со стороны компании Microsoft (протокол ODBC);
• реляционная основа;
• высокоуровневая структура, напоминающая английский язык;
• возможность выполнения специальных интерактивных запросов:
• обеспечение программного доступа к базам данных;
• возможность различного представления данных;
• полноценность как языка, предназначенного для работы с базами данных;
• возможность динамического определения данных;
• поддержка архитектуры клиент/сервер.
Программы на языке VBA позволяют реализовывать замысел программиста в основном за счет использования существующей объектной модели приложения (Access, Excel,Wordи т.п.). При этом существенно экономится время на разработку программы, поскольку большинство необходимых возможностей уже реализовано в рамках объектной модели и программисту остается только использовать эту модель, не разрабатывая саму программу « с нуля».
Таким образом, несмотря на большое количество функций, предоставляемых Microsoft Access, работать с ними совсем несложно. Теперь мы можем за короткое время не только создавать таблицы баз данных, но и проектировать запросы, отчёты, формы.
Литература
Microsoft Access 2000. Шаг за шагом: Практическое пособие / Пер. с англ. – М.: ЭКОМ, 2000. – 352 с.
Бакаревич Ю.Б. Самоучитель Microsoft Access 2000/ Ю.Б. Бакаревич, Н.В.Пушкин. – СПб.: БХВ-Петербург, 2001. – 468 с.
Бакаревич Ю.Б. Самоучитель Microsoft Access 2002/ Ю.Б. Бакаревич, Н.В.Пушкин. – СПб.: БХВ-Петербург, 2002. – 720 с.
Бакаревич, Ю.Б. MS Access 2000 за 30 занятий/ Ю.Б. Бакаревич, Н.В.Пушкин. – СПб.: БХВ-Петербург, 2001. – 510 с.
Винтер, Р. Microsoft Access 97: Справочник/ Р.Винтер – СПб.: Питер, 1998. – 416 с.
Информатика. Базовый курс / Под ред. С.В. Симоновича.– СПб.: Питер, 2001. – 640 с.
Информатика. Базовый курс /Симонович С.В. и др. - СПб: Издательство «Питер», 2000. – 640с.
Информатика. Учебное пособие /Ломтадзе В.В., Шишкина Л.П. – Иркутск: ИрГТУ, 1999. – 116с.
Информатика. Учебное пособие /Под ред. В.Г. Кирия. – Иркутск: ИрГТУ ,1998 часть 2. – 382с.
Леонтьев, Ю. Microsoft Office 2000: Краткий курс/ Ю.Леонтьев – СПб.: Питер, 2001. – 288 с.
ПРИЛОЖЕНИЕ А
Результат запроса (ПОИСК)
Результат запроса (Диаграмма)
ПРИЛОЖЕНИЕ Б
Вид окна формы «Справочники»
Вид окна формы «Диаграмма»
Окно «Поиск деталей»
ПРИЛОЖЕНИЕ В
Отчет о продажах
ПРИЛОЖЕНИЕ Г
Текст программы для формы «Главная»
на языке Visual Basic for Applications
Кнопка, отрывающая форму «Заявка»
Private Sub Кнопка4_Click()
On Error GoTo Err_Кнопка4_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1047) & ChrW(1072) & ChrW(1103) & ChrW(1074) & ChrW(1082) & ChrW(1072)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка4_Click:
Exit Sub
Err_Кнопка4_Click:
MsgBox Err.Description
Resume Exit_Кнопка4_Click
End Sub
Кнопка, открывающая форму «О программе»
Private Sub Кнопка18_Click()
On Error GoTo Err_Кнопка18_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1054) & ChrW(32) & ChrW(1087) & ChrW(1088) & ChrW(1086) & ChrW(1075) & ChrW(1088) & ChrW(1072) & ChrW(1084) & ChrW(1084) & ChrW(1077)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка18_Click:
Exit Sub
Err_Кнопка18_Click:
MsgBox Err.Description
Resume Exit_Кнопка18_Click
End Sub
Кнопка, открывающая форму «Об авторе»
Private Sub Кнопка20_Click()
On Error GoTo Err_Кнопка20_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1054) & ChrW(1073) & ChrW(32) & ChrW(1072) & ChrW(1074) & ChrW(1090) & ChrW(1086) & ChrW(1088) & ChrW(1077)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка20_Click:
Exit Sub
Err_Кнопка20_Click:
MsgBox Err.Description
Resume Exit_Кнопка20_Click
End Sub
Кнопка Выход
Private Sub Кнопка25_Click()
On Error GoTo Err_Кнопка25_Click
DoCmd.Close
Exit_Кнопка25_Click:
Exit Sub
Err_Кнопка25_Click:
MsgBox Err.Description
Resume Exit_Кнопка25_Click
End Sub
ПРИЛОЖЕНИЕ Д
Запрос «Диаграмма» в режиме SQL
SELECT Count(Заявка.[Код заявки]) AS [Count-Код заявки], Запчасти.Наименование
FROM Марка INNER JOIN (Заявка INNER JOIN (Запчасти INNER JOIN Детали ON Запчасти.[Код запчасти]=Детали.[Код запчасти]) ON Заявка.[Код заявки]=Детали.[Код заявки]) ON Марка.[Код марки]=Заявка.[Код марки]
GROUP BY Запчасти.Наименование;
Запрос «Поиск» в режиме SQL
SELECT Запчасти.[Код запчасти], Запчасти.Наименование, Запчасти.Стоимость, Заявка.Дата, Count(Запчасти.[Код запчасти]) AS Количество
FROM Марка INNER JOIN (Заявка INNER JOIN (Запчасти INNER JOIN Детали ON Запчасти.[Код запчасти] = Детали.[Код запчасти]) ON Заявка.[Код заявки] = Детали.[Код заявки]) ON Марка.[Код марки] = Заявка.[Код марки]
GROUP BY Запчасти.[Код запчасти], Запчасти.Наименование, Запчасти.Стоимость, Заявка.Дата
HAVING (((Запчасти.Наименование)=[Forms]![Поиск по запчасти]![поиск]));