Министерство образования Республики Беларусь
Министерство образования и науки Российской Федерации
Государственное учреждение высшего профессионального образования
"Белорусско-Российский университет"
Кафедра "Автоматизированные системы управления"
Курсовая работа по теме:
"Разработка элементов информационной системы средствами СУБД MS Access и языка программирования VBA"
по дисциплине "ПС ПЭВМ"
051-23 02 01.081446.23.81-01
Выполнил студент: гр. АСОИР-081
Чупилин А.М.
Проверил: Василевский В.П.
2010
Содержание
Введение
1. Анализ предметной области
2. Использование интерфейсных средств СУБД MS Access 2003
2.1 Проектирование схемы данных
2.2 Создание средствами QBE запросов с условиями, итоговых запросов, запросов с вычисляемыми полями, запросов на обновление, удаление, добавление записей, перекрёстных запросов
2.3 Создание составного отчёта, содержащего диаграмму. Группировка и сортировка в отчётах
2.4 Создание иерархической формы по двум связанным таблицам
2.5 Создание страниц доступа к данным
3. Использование языка программирования VBA
3.1 Создание макросов
3.2 Разработка программы на VBA
3.3 Разработка функций на VBA
3.4 Создание главной кнопочной формы. Программирование элементов управления формы
Заключение
Введение
В современном мире, когда возникла необходимость в хранении информации о большом количестве объектов наиболее эффективным способом решения этой проблемы является представление этой информации в виде таблиц. Но каждый объект может быть рассмотрен во взаимосвязи с другим объектом. Для хранения информации о таких объектах используются базы данных. Для создания баз данных существуют различные программные средства, одним из которых является средство Microsoft Office - Microsoft Access, в котором возможно создание непосредственно базы данных и различных приспособлений, облегчающих восприятие этой информации.
В данной курсовой работе будет представлена база данных, содержащая информацию о группах товаров, товарах и фирмах-производителях этих товаров в виде таблиц, запросов, отчетов и форм.
1. Анализ предметной области
В предметной области "Группы товаров" сущностями являются: "группы товаров", "товары" и "производители". Сущность - совокупность объектов, обладающих одинаковым набором свойств. В базе данных о товарах сущностями являются товары. Для каждого отдельного экземпляра сущности в таблице создается отдельная запись (кортеж).
Свойство (атрибут) - определенная часть информации о некотором объекте. Хранится в виде столбца (поля) таблицы.
Группа товаров характеризуется следующим атрибутом: обозначением.
Товар характеризуется следующими атрибутами: своим уникальным кодом, категорией, маркой, моделью, цветом, кол-вом на складе и ценой. Производитель характеризуется следующими атрибутами: годом основания, адресом, телефоном и официальным сайтом.
2. Использование интерфейсных средств СУБД
MS Access 2003
2.1 Проектирование схемы данных
В нашем случае для описания предметной области необходимо три таблицы. Условно назовем их "Группа товаров", "Товары" и "Производитель". В каждой из них хранятся соответствующие атрибуты.
В режиме “Конструктор” создаем эти три таблицы.
Таблица с именем "1_Группа товаров" имеет структуру, представленную на рисунке 2.1.1.
Рисунок 2.1 1-таблица “1_Группа товаров", открытая в режиме “конструктор".
Структура таблицы “2_Товары" представлена на рисунке 2.1.2.
Рисунок 2.1 2-таблица “2_Товары”, открытая в режиме “конструктор”.
Структура таблицы “ 3_Производитель" представлена на рисунке 2.1.3.
Рисунок 2.1 3-таблица “ 3_Производитель", открытая в режиме “конструктор".
Для трех таблиц определим необходимые формат и длину полей, а также зададим ключевые поля.
Ключевые поля - это поля, значения которых обладают свойством уникальности для каждой записи.
В таблице "1_Группа товаров" ключевым будет являться поле "категория техники". Оно же имеет свойство "Совпадения не допускаются". Для поля "Марка (производитель)" таблицы "2_Товары", значения выбираются из списка. Источник списка создается при помощи мастера подстановок.
Таблицы "1_Группа товаров" и "2_Товары" связаны с помощью ключевого поля "категория техники".
Связь - способ, которым связана информация о разных объектах.
В нашем случае, для связи таблиц базы данных "1_Группа товаров" и "2_Товары" используется связь типа “один - ко - многим". При таком типе связи каждой записи в одной таблице соответствует несколько записей в связанной таблице. Одна из них представляет сторону "один" (в нашем случае таблица "1_Группа товаров"), другая - сторону "много" (в нашем случае таблица "2_Товары"). Для связи этих таблиц нужно использовать только часть информации о товаре.
Создадим схему данных, в которой установим связь между таблицами типа "один - ко - многим" по полю "категория техники". Для соблюдения целостности данных воспользуемся переключателем "Обеспечение целостности связи", а также опциями "Каскадное обновление связанных полей" и "Каскадное удаление связанных записей".
Схема данных представлена на рисунке 2.1.4.
Рисунок 2.1.4-схема данных.
Таблица "1_Группа товаров" данной базы данных представлена на рисунке 2.1.5
Рисунок 2.1.5-таблица "1_Группа товаров".
Таблица "2_Товары" данной базы данных представлена на рисунке 2.1.6.
Рисунок 2.1.6-таблица "2_Товары".
Таблица "3_Производитель" данной базы данных представлена на рисунке 2.1.7.
Рисунок 2.1.7-таблица "3_Производитель".
При тестировании базы данных ошибок не обнаружено, а целостность данных обеспеченна первичным ключом и за счёт связи.
2.2 Создание средствами QBE запросов с условиями, итоговых запросов, запросов с вычисляемыми полями, запросов на обновление, удаление, добавление записей, перекрёстных запросов
Запрос - это обращение к БД для поиска или изменения в базе данных информации, соответствующей заданным критериям.
1) Запросы на выборку
Запрос на выборку - это запрос, который выполняет отбор данных из одной или нескольких таблиц по заданным пользователем критериям, не приводящий к изменениям в самой базе данных.
Создать список, отобразив только товар, марку и модель, произведенные маркой Samsung.
Для этого создадим запрос в режиме “конструктор".
Рисунок 2.2.1.1-запрос на выборку в режиме “конструктор”.
После выполнения запроса получим результат, представленный на рисунке 2.2.1.2.
Рисунок 2.2.1.2 - результат выполнения запроса.
2) Запросы с вычисляемыми полями
Запрос с вычисляемыми полями - запрос, в котором можно задать вычисления над любыми полями таблицы и сделать вычисляемое значение новым полем в запросе.
Отобразить товар, марку, модель, а также новое поле "стоимость всех". Для этого в режиме “конструктор” создадим соответствующий запрос.
Рисунок 2.2.2.1-запрос с вычисляемыми полями, открытый в режиме “конструктор".
После выполнения запроса получим результат, представленный на рисунке 2.2.2.2.
Рисунок 2.2.2 2-результат выполнения запроса.
Для создания нового поля необходимо в режиме конструктора вызвать окно построителя выражений и в нем ввести следующее:
Рисунок 2.2.2.3-окно построителя выражений.
3) Итоговые запросы
Итоговые запросы - запрос, в котором по одному полю производится группировка, а во всех остальных полях вводятся итоговые функции.
В этом запросе подсчитать количество товаров. Для этого необходимо создать соответствующий запрос. В режиме “конструктор” запрос имеет вид, представленный на рисунке 2.2.3.1.
Рисунок 2.2.3.1-итоговый запрос в режиме “конструктор”.
После выполнения запроса получим результат, представленный на рисунке 2.2.3.2.
Рисунок 2.2.3.2-результат выполнения запроса.
4) Запрос на обновление
Этот тип запросов-действий предназначен для изменения значений некоторых полей для всех выбранных записей.
Необходимо в таблице "2_Товары" в поле “Товар” поменять значение с “Телевизор” на “Домашний кинотеатр”. Для этого можно создать запрос на обновление. Для этого необходимо в режиме “конструктор” выбрать соответствующий тип запроса и в строке обновление сделать запись “Домашний кинотеатр”, а в строке условие отбора - “Телевизор".
Рисунок 2.2.4 1-запроса на обновление в режиме “конструктор".
После выполнения запроса таблица "2_Товары" будет иметь вид, представленный на рисунке 2.2.4.2.
Рисунок 2.2.4 2-таблица "2_Товары" после выполнения запроса на обновление.
5) Запрос на удаление
Этот вид запросов служит для удаления из базы данных группы записей, удовлетворяющих определенным условиям.
Необходимо удалить все товары из таблицы "2_Товары", чья марка (производитель) Samsung.
Для этого в режиме “конструктор” необходимо создать запрос на удаление и в строке “условие отбора” поля “марка (производитель) ” внести запись ”Samsung". Запрос в режиме “конструктор” будет иметь вид, представленный на рисунке 2.2.5.1.
Рисунок 2.2.5 1-запрос на удаление в режиме “конструктор".
После выполнения запроса таблица "2_Товары" будет иметь вид, представленный на рисунке 2.2.5.2.
Рисунок 2.2.5.2-таблица "2_Товары" после выполнения запроса на удаление.
6) Запрос на добавление
С помощью запроса на добавление записей можно скопировать выбранные
записи и поместить их в другую таблицу.
Поместим данные только о товарах телевизорах с черным (Black) цветом в таблицу "Black телевизоры (на добавление)". Для этого можно воспользоваться запросом на добавление. В котором необходимо указать имя таблицы, в которую будут помещены данные и соответствующие поля. Пример создания запроса на добавление в режиме “конструктор” представлен на рисунке 2.2.6.1.
Рисунок 2.2.6.1-запрос на обновление в режиме “конструктор”.
После выполнения запроса таблица "Black телевизоры (на добавление)" будет иметь вид, представленный на рисунке 2.2.6.2.
Рисунок 2.2.6.2-таблица "Black телевизоры (на добавление)" после выполнения запроса на добавление.
7) Перекрёстный запрос
С помощью перекрестного запроса можно более наглядно представить данные запросов, предусматривающих группировку по нескольким признакам.
Необходимо составить структуру перекрёстной таблицы в качестве заголовка строк можно указать товар, в качестве заголовка столбцов можно указать марку (производитель). На пересечении получить количество товара каждой марки.
Для этого составим перекрестный запрос, который в режиме “конструктор” будет иметь вид, представленный на рисунке 2.2.7.1.
Рисунок 2.2.7.1-перекрестный запрос в режиме “конструктор".
После выполнения запроса получим таблицу, имеющую вид, представленный на рисунке 2.2.7.2.
Рисунок 2.2.7.2-таблица, полученная после выполнения перекрестного запроса.
2.3 Создание составного отчёта, содержащего диаграмму. Группировка и сортировка в отчётах
Отчеты представляют собой наилучшее средство представления информации из базы данных в виде печатного документа. В основном отчеты применяются для просмотра "картины в целом", поэтому часто базируются на многотабличных запросах.
Отчеты предоставляют возможность группировать выводимую информацию с помощью окна сортировка и группировка. В окне сортировка и группировка можно определить до 10 полей или выражений, которые будут использоваться в отчете для группировки данных. В данном отчете группировка проведена по категории, товару, марке и модели. Отчет создан при помощи мастера создания отчетов и откорректирован при помощи конструктора отчетов. Вид отчета, открытого в режиме “конструктор” представлен на рисунке 2.3.1, а группировка в отчете на рисунке 2.3.2.
Рисунок 2.3.1-отчет в режиме “конструктор".
Рисунок 2.3.2-группировка в отчете в режиме “конструктор".
Сам отчет имеет вид, представленный на рисунке 2.3.3.
Рисунок 2.3.3-отчет по таблице "2_Товары".
В Microsoft Access предусмотрена возможность построения графиков и диаграмм для более наглядного представления данных. График, приведенный на рисунке 2.3.4, показывает информацию о годе основания производителя.
Рисунок 2.3.4-график, который показывает информацию о годе основания фирмы-производителя.
2.4 Создание иерархической формы по двум связанным таблицам
Формы, которые можно создать средствами Microsoft Access, позволяют получать информацию, а так же корректировать ее в удобном для пользователя стиле. Microsoft Access позволяет создавать иерархические формы, в которых отображается информация из двух таблиц, связанных отношением “один - ко - многим". В случае необходимости иметь информацию о товарах и их производителе можно создать иерархическую форму. Для создания такой формы можно использовать мастер создания форм. Для корректировки вида формы используют режим “конструктора”. Для сохранения, закрытия и выхода из Microsoft Access в форме используются соответствующие кнопки
Рисунок 2.4.1-иерархическая форма в режиме “конструктор”.
После перехода в режим формы можно добавлять или корректировать данные из двух таблиц.
Рисунок 2.4.2-иерархическая форма.
2.5 Создание страниц доступа к данным
Для создания статической страницы HTML доступа к данным по таблице “2_Товары" воспользуемся соответствующим мастером. В результате получим страницу, представленную на рисунке 2.5.1.
Рисунок 2.5.1-страница доступа.
3. Использование языка программирования
VBA
3.1 Создание макросов
С помощью макросов можно выполнить практически все действия над объектами Access из тех, которые были описаны в предыдущих главах.
Макрос в Access представляет собой структуру, состоящую из одной или нескольких макрокоманд, которые выполняются либо последовательно, либо в порядке, заданном определенными условиями. Набор макрокоманд в Access очень широк, с помощью макросов можно реализовать многое из того, что позволяют сделать процедуры на VBA. Каждая макрокоманда имеет определенное имя и, возможно, один или несколько аргументов, которые задаются пользователем. Например, при использовании макрокоманды ОткрытьФорму (OpenForm) в качестве аргументов необходимо задать, по крайней мере, имя открываемой формы и режим вывода ее на экран.
Макросы, созданные в данной базе данных, рассмотрим при создании главной кнопочной формы.
3.2 Разработка программы на
VBA
Язык Visual Basic for Applications является объектно-ориентированным языком программирования. Стандартные объекты Visual Basic представляют собой основное средство манипуляции с данными Microsoft Access и других приложений семейства Microsoft Office. Знание технологии объектно-ориентированного программирования и состава объектных моделей Visual Basic позволяет разрабатывать профессиональные приложения, выполняющие всю необходимую обработку данных.
В Microsoft Access 2003 есть возможность двух способов работы с данными:
Посредством DAO (Data Access Objects);
Посредством ADO (ActiveX Data Objects).
Объектная модель Microsoft DAO 3.6 (DAO, Data Access Objects) - это унифицированный набор объектов для доступа к данным.
Объекты управления данными ActiveX (ADO/ ActiveX Data Objects) предназначены для обеспечения доступа к источникам данных разных видов, от текстовых файлов до распределенных баз данных. ADO представляет собой объектно-ориентированный интерфейс для приложений, использующих OLE DB. OLE DB - это программный интерфейс, удовлетворяющий спецификации COM (Component Object Model, компонентная модель объектов), который предоставляет унифицированный способ доступа к различным источникам данных. Интерфейс OLE DB разрабатывался с целью получения оптимальной функциональности для приложений разных видов и поэтому не является простым в использовании. ADO - промежуточное звено между приложением и OLE DB, предоставляющее разработчикам приложений удобный объектно-ориентированный интерфейс.
1) Создание таблицы в объектных моделях DAO.
Public Sub Tovary_NewTable_DAO ()
' Создание таблицы средствами DAO
'Объявляем объектные переменные для объектов: база данных, таблица и поле
Dim base As Database, td As TableDef, fld As Field
'Устанавливаем ссылку на текущую базу данных
Set base = CurrentDb
'Создаем новую таблицу, используя метод CreateTableDef 'объекта Database
Set td = base. CreateTableDef ("TovaryDAO")
'Создаем поле в таблице, используя метод CreateField объекта 'TableDef.
Set fld = td. CreateField ("Код товара", dbInteger)
'Добавляем поле "Код товара" в семейство Fields таблицы
td. Fields. Append fld
'Создаем 2-ое поле с именем "Товар" и типом Текстовый
Set fld = td. CreateField ("Товар", dbText)
'Добавляем поле "Товар" в семейство Fields таблицы
td. Fields. Append fld
'Создаем 3-е поле с именем "Категория" и типом Текстовый
Set fld = td. CreateField ("Категория", dbText)
'Добавляем поле "Категория" в семейство Fields таблицы
td. Fields. Append fld
'Создаем 4-ое поле с именем "Марка" и типом Текстовый
Set fld = td. CreateField ("Марка", dbText)
'Добавляем поле "Марка" в семейство Fields таблицы
td. Fields. Append fld
'Создаем 5-ое поле с именем "Модель" и типом Текстовый
Set fld = td. CreateField ("Модель", dbText)
'Добавляем поле "Модель" в семейство Fields таблицы
td. Fields. Append fld
'Создаем 6-ое поле с именем "Цвет" и типом Текстовый
Set fld = td. CreateField ("Цвет", dbText)
'Добавляем поле "Цвет" в семейство Fields таблицы
td. Fields. Append fld
'Создаем 7-ое поле с именем "Кол-во на складе" и типом Числовой
Set fld = td. CreateField ("Кол-во на складе", dbInteger)
'Добавляем поле "Кол-во на складе" в семейство Fields таблицы
td. Fields. Append fld
'Создаем 8-ое поле с именем "Цена" и типом Денежный
Set fld = td. CreateField ("Цена", dbCurrency)
'Добавляем поле "Цена" в семейство Fields таблицы
td. Fields. Append fld
'Добавляем таблицу к семейству TableDefs базы данных
base. TableDefs. Append td
'Обновляем количество объектов семейства TableDefs
base. TableDefs. Refresh
End Sub
Результат, выполнения программы представлен на рисунке 3.2.1.
Рисунок 3.2.1-таблица “TovaryDAO”
2) Создание таблицы в объектной модели ADO.
Public Sub Tovary_NewTable_ADO ()
'Соединение с текущей базой данных
Dim cnn As New ADODB. Connection
Dim cat As New ADOX. Catalog
'Используется объект модели объектов ACCESS
Set cnn = CurrentProject. Connection
cat. ActiveConnection = cnn
Debug. Print cat. Tables (0). Type
Dim Table
'Создаем таблицу в ADO
Set Table = CreateObject ("ADOX. Table")
'Название таблицы
Table. Name = "TovaryADO"
'Создаем столбец с именем "Код товара"
Table. Columns. Append "Код товара"
'Создаем столбец с именем "Товар"
Table. Columns. Append "Товар"
'Создаем столбец с именем "Категория"
Table. Columns. Append "Категория"
'Создаем столбец с именем "Марка"
Table. Columns. Append "Марка"
'Создаем столбец с именем "Модель"
Table. Columns. Append "Модель"
'Создаем столбец с именем "Цвет"
Table. Columns. Append "Цвет"
'Создаем столбец с именем "Кол-во на складе"
Table. Columns. Append "Кол-во на складе"
'Создаем столбец с именем "Цена,$"
Table. Columns. Append "Цена,$"
'Добавляем таблицу к семейству Tables
cat. Tables. Append Table
Set cat = Nothing
End Sub
Результат, выполнения программы представлен на рисунке 3.2.2.
Рисунок 3.2.2-таблица “TovaryADO”
3) Удаление таблиц в объектных моделях DAO.
Sub Del_table ()
' Удаление таблицы средствами DAO
Dim db As Database
'Устанавливаем ссылку на текущую базу данных
Set db = CurrentDb
db. TableDefs. Delete "TovaryDAO"
db. TableDefs. Refresh
'Освобождаем объектную переменную
Set db = Nothing
End Sub
В результате выполнения данного программного кода таблица "TovaryDAO" будет удалена.
4) Удаление таблиц в объектных моделях ADO.
Public Sub delete_ADO ()
'Удаление таблицы средствами ADO
'Объявляем объектные переменные Connection и Catalog для связи данных
Dim cnn As New ADODB. Connection
Dim cat As New ADOX. Catalog
'Устанавливаем ссылку на текущую базу данных, используя объект connection ADODB
Set cnn = CurrentProject. Connection
'присваиваем объекту cat наше соединение
cat. ActiveConnection = cnn
'удаляем таблицу TovaryADO
cat. Tables. Delete ("TovaryADO")
'закрываем соединение
Set cat. ActiveConnection = Nothing
'освобождаем переменную
Set cat = Nothing
End Sub
В результате выполнения данного программного кода таблица "TovaryADO" будет удалена.
5) Создание, изменение и выполнение запросов программными средствами
Public Sub CreateQueryDAO ()
Dim db As Database, qd As QueryDef, rs As DAO. Recordset
Set db = CurrentDb
'создаем новый запрос и сохраняем его в базе данных
Set qd = db. CreateQueryDef ("DAO-запрос (Цена >500)")
qd. SQL = "SELECT [Товар], [Категория], [Марка (производитель)], [Модель], [Цена,$] FROM [2_Товары] WHERE ([2_Товары]. [Цена,$]) >500"
'создаем набор записей на базе нового запроса
Set rs = qd. OpenRecordset (dbOpenDynaset)
Set rs = Nothing
End Sub
Результат выполнения запроса представлен на рисунке 3.2.3.
Рисунок 3.2.3-запрос, созданный программными средствами.
3.3 Разработка функций на
VBA
Рассмотрим разработка функций на VBA на примере создания диалогового окна для ввода имени и пароля. При создании форм и элементов управления Access устанавливает большинству свойств значения по умолчанию. Изменим значение свойства Модальное окно (Modal) формы в диалоговом окне Свойства (Properties). Для открытия формы как диалогового окна свойству Модальное окно необходимо присвоить значение Да (Yes) до открытия формы.
Первое свойство, которое мы изменим, - это Caption. Далее присвоим свойству ScroLLBars (Полосы прокрутки) значение 0, это означает, что на форме не будет полос прокрутки. Нам необходимо изменить внешний вид формы, чтобы она была как можно больше похожа на стандартные диалоговые окна Windows. Для этого изменим на противоположные значения по умолчанию значения следующих свойств: DividingLines (Разделительные линии), NavigationButtons (Кнопки перехода), RecordSelectors (Область выделения).
Существуют такие свойства формы, которые нельзя установить из диалогового окна Свойства - они изменяются только программно. Примером такого свойства является свойство Visible (Вывод на экран), которое использовали в приведенной ниже программе. У элементов управления тоже есть свойство Visible, но его значение можно изменять не только программно, но и из окна Свойства.
Создание формы ввод пароля
Private Sub cmdOk_Click ()
Dim strFrm As String, blnOk As Boolean
strFrm = "Ввод пароля"
If Forms (strFrm). txtName = "prise" And _
Forms (strFrm). txtPassword = "3331" Then
'Имя и пароль введены верно,
'закрываем диалоговое окно
DoCmd. Close acForm, strFrm
MsgBox "Добро пожаловать!", vbInformation _
, "Ввод пароля"
blnOk = True
Else
'Имя и пароль введены неверно,
'подготавливаем диалоговое окно к новому запросу
MsgBox "Имя или пароль введены неверно!", _
vbExclamation, "Ввод пароля"
blnOk = False
End If
strFrm = "Кнопочная форма"
If blnOk Then
'Дальнейшие действия
DoCmd. OpenForm strFrm,,,,, acDialog
End If
End Sub
Private Sub cmdCancel_Click ()
CloseCurrentDatabase
End Sub
Предварительно создадим само окно формы с соответствующими полями и кнопками. В итоге получим форму, представленную на рисунке 3.3.1.
Рисунок 3.3.1-окно формы ввода пароля.
Для облегчения доступа к таблицам, отчетам, запросам и т.д., а также наилучшего представления базы данных используют кнопочную форму. Создают её с помощью Конструктора форм. На ней создают кнопки, нажатию которых соответствует вызов различных процедур.
3.4 Создание главной кнопочной формы. Программирование элементов управления формы
Создадим главную кнопочную форму "Кнопочная форма", которая будет содержать следующие кнопки: создание таблицы в объектных моделях DAO и ADO, удаление таблицы в объектных моделях DAO и ADO, создание запроса DAO. Главная кнопочная форма представлена на рисунке 3.4.1.
Рисунок 3.4.1-главная кнопочная форма.
Создадим макрос на выполнение запроса DAO. Для этого указываем макрокоманду открыть запрос, в окне аргументов макрокоманды указываем имя запроса "DAO-запрос (Цена >500)", режим "Таблица", режим данных "Только чтение". На рисунке 3.4 2 представлен макрос режиме конструктор.
Рисунок 3.4.2-макрос в режиме конструктора.
На рисунке 3.4.3 представлен результат выполнения макроса.
Рисунок 3.4.3-результат выполнения макроса.
Заключение
Данная курсовая работа является примером использования интерфейсных средств СУБД MS Access 2003. В ней рассмотрены основные методы работы с объектами MS Access 2003: таблицы, запросы, формы, отчёты. Приобретены навыки по созданию, удалению, изменению таблиц, запросов в автоматическом режиме, а также с использованием языка программирования VBA.
Были созданы формы с запрограммированными элементами управления с целью облегчения доступа к данным, быстрого поиска и т.д.