Смекни!
smekni.com

Разработка элементов информационной системы средствами СУБД MS Access и языка программирования VBA (стр. 3 из 3)

'Добавляем поле "Категория" в семейство 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.

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