Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Товары")
With rs
.MoveFirst
Me![Стоимость кофе] = 0
Do While .EOF = False
If .Fields("Марка") Like "Кофе*" Then Me![“Стоимость кофе”] = _
Me![“Стоимость кофе”] + .Fields("Стоимость товара")
.MoveNext
Loop
End Wtth
End Sub
Рис. 2.5. Форма “Товары”
Пример 2. Найти и вывести на экран номер группы с максимальным количеством студентов и средним баллом в группе более 4,7 в таблице "Группа".
Private Sub Поиск_Номер_Группы()
Dim db As Database
Dim rs As DAO.Recordset, max As Single, n As Variant
Set db = CurrentDb
Set rs = db.OpenRecordset("ГРУППА")
With rs
.MoveFirst
max = .Fields(1)
.MoveNext
Do While .EOF = False
If .Fields(1) > max And .Fields(2) > 4.7 Then max = .Fields(1): n = .Bookmark
.MoveNext
Loop
.Bookmark = n
MsgBox "Количество студентов - " & max & Chr(13) & "Номер группы - " & _
.Fields(0)
End With
End Sub
Пример 3.Используя библиотеку ADO в окне модуля создать процедуру для заполнения данными поле “Среднее” таблицы “Урожайность” (рис. 2.6).
Рис.2.6. Структура таблицы “Урожайность”
Public Sub Расчет_ADO()
Dim connection As New ADODB.connection 'Если база днных текущая, то
'эту строку можно не писать
'Если базу данных нужно открыть на диске, то после этой строки нужно писать
'Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0";Data Sourse=путь к файлу"
Dim rs As New ADODB.Recordset
Dim s As Double, i As Integer, n As Long
With rs
.Open "Урожайность", CurrentProject.connection, adOpenKeyset, adLockOptimistic
.MoveFirst
Do While .EOF = False
s = 0: n = 0
For i = 1 To .Fields.Count - 2
s = s + .Fields(i): n = n + 1
Next i
s = s / n
.Fields(5) = s
.MoveNext
Loop
End With
End Sub
2.11. Создание объектов баз данных средствами VBA
Средствами VBA в программном режиме можно создавать не только объекты Access: таблицы, формы, запросы, но и такие элементы управления, как Кнопки, Надпись и др., что позволяет существенно повысить уровень автоматизации работы приложения. Ниже даны примеры создания некоторых объектов и элементов управления, приведены программы. По тексту программ даны необходимые пояснения.
Создание таблицы.Пусть, требуется создать в текущей базе данных таблицу Elise со следующими полями: Код, Фамилия вкладчика, Домашний адрес, Сумма вклада, Срок заключения договора, мес. Для решения данной задачи необходимо:
- в процедуре создать объектные переменные db, tb типа Database, TableDef и f1, f2, f3, f4 типа Field, предназначенные для хранения ссылок на соответствующие объекты базы данных;
- для создания нового объекта TableDef – таблицы с именем Elise нужно применить метод CreateTableDef к объектной переменной db. Для создания новых объектов Field – полей таблицы, нужно применить метод CreateField к объектным переменным f1, f2, f3, f4;
- для добавления этих полей в семейство Fields, входящих в объект TableDef нужно использовать метод Append;
- для добавления таблицы – объекта TableDef в семейство TableDefs нужно использовать метод Append;
Процедура решения этой задачи с использованием библиотеки DAO приведена ниже
Public Sub Создание_таблицы()
‘ Описание переменных
Dim db As Database
Dim tb As TableDef
Dim f1, f2, f3, f4, f5 As field
Set db = CurrentDb
‘Создание таблицы и ее полей
Set tb = db.CreateTableDef("Elise")
Set f1 = tb.CreateField("Код", dbInteger)
Set f2 = tb.CreateField("Фамилия вкладчика", dbText)
Set f3 = tb.CreateField("Домашний адрес", dbText)
Set f4 = tb.CreateField("Сумма вклада", dbCurrency)
Set f5 = tb.CreateField("Срок заключения договора, мес", dbInteger)
‘Добавление полей в таблицу
tb.Fields.Append f1
tb.Fields.Append f2
tb.Fields.Append f3
tb.Fields.Append f4
tb.Fields.Append f5
‘Добавление таблицы в БД
db.TableDefs.Append tb
End Sub
Создание формы. (Твип (twip) - единица измерения, используемая в Microsoft Access. Один твип равен 1/20 пункта или 1/1440 дюйма. В одном сантиметре содержится 567 твип).Требуетсясредствами VBA создать форму на основе таблицы КАФЕДРА только без фото. Процедура решения этой задачи с использованием библиотеки DAO приведена ниже
Public Sub Создание_формы()
Dim frm As Form 'Определение объектной переменной для формы
Set frm = CreateForm 'Создание новой формы и ссылки на переменную
frm.RecordSource = "КАФЕДРА" 'Источник данных в форме
'Определение объектных переменных для элементов управления
Dim c1, c2, c3, c4, t1, t2, t3, t4, n1 As Control
frm.Caption = "КАФЕДРАVBA" ' Имя файла
'Создание элементов управления типа надпись
Set t1 = CreateControl(frm.Name, acLabel, , , , 100, 1000, 1300, 200)
t1.Caption = "Код кафедры:"
Set t2 = CreateControl(frm.Name, acLabel, , , , 100, 1300, 1300, 200)
t2.Caption = "Название:"
Set t3 = CreateControl(frm.Name, acLabel, , , , 100, 1600, 1300, 200)
t3.Caption = "Телефон:"
Set t4 = CreateControl(frm.Name, acLabel, , , , 100, 1900, 1300, 200)
t4.Caption = "Зав кафедрой:"
'Создание элементов управления типа поле
Set c1 = CreateControl(frm.Name, acTextBox, , , , 1500, 1000, 1300, 200)
c1.ControlSource = "Код кафедры"
Set c2 = CreateControl(frm.Name, acTextBox, , , , 1500, 1300, 1300, 200)
c2.ControlSource = "Название"
Set c3 = CreateControl(frm.Name, acTextBox, , , , 1500, 1600, 1300, 200)
c3.ControlSource = "Телефон"
Set c4 = CreateControl(frm.Name, acTextBox, , , , 1500, 1900, 1300, 200)
c4.ControlSource = "Зав кафедрой"
Set n1 = CreateControl(frm.Name, acLabel, , , , 1400, 300, 700, 200)
n1.Caption = "КАФЕДРА" 'Имя формы
DoCmd.Restore
End Sub
Результат работы программы представлен на рис.2.7.
Рис.2.7. Форма, созданная средствами VBA
Примечание. Для создания кнопок, например, кнопки "Поиск", которая запускает Макрос 1, в только что созданной форме, необходимо программу дополнить строками:
Set k1 = CreateControl(frm.Name, acCommandButton, , , , 1800, 600, 700, 300)
‘ Размеры и место кнопки в форме, к1 – объектная переменная
k1.Caption = "Поиск" ‘Надпись на кнопке
k1.OnClick = "Макрос1" ‘ При нажатии на кнопку выполняется "Макрос1"
Создание запроса.Требуетсясредствами VBA создать запрос МАКС по таблице ТОВАРЫ для выборки записей в которых Стоимость товара больше определенной нижней границы. Граница вводится в окно диалога. Процедура решения этой задачи с использованием библиотеки DAO приведена ниже
Public Sub Создание_запроса_VBA()
Dim db As Database
Dim q As QueryDef
Set db = CurrentDb
' Создается запрос с именем Макс
Set q = db.CreateQueryDef("Макс", "Select *" _
& "from Товары where [Стоимость товара] >” & _
“ [Введите нижнюю границу стоимости товара];")
End Sub
3. СПИСОК ЛИТЕРАТУРЫ
1. Джон Вейскас. Эффективная работа с Microsoft Access 7.0 для Windows .- С-Пб.:Питер, 1997.
2. М.Хэлворсян, М.Янг. Эффективная работа с Microsoft Office 97.- С-Пб.:Питер, 1997.
3. МакФедризг Пол и др. Microsoft Office 97. Энциклопедия пользователя: пер. с англ.-К.: Издательство "ДиаСофт", 1998.
4. К. Гетц, М. Джилберт. Программирование в Microsoft Office. Полное руководство по VBA: пер. с англ.-К.: Издательская группа BHV, 1999.
5. Киммел, Пол. Освой самостоятельно программирование для Microsoft Access 2000 за 24 часа.: пер. с англ.-М.:"Вильямс". 2000.
6. Король В.И. Visual Basic 6.0, Visual Basic for Application 6.0. Язык программирования. Справочник с примерами.-М.: КУДРИЦ-ОБРАЗ, 2000.
7. Каммингс С. VBA для “чайников”: Пер. с англ.: М.:”Вильямс”, 2000.
8. Кен Гетц, Майк Джилберт. Программирование в Microsoft Office: пер. с англ.-К:”Ирина”. BHV, 2000.
9. С.Браун. Visial Basic: учебный курс. – СПб.: Питер, 2001.
10. Ю. Бекаревич, Н. Пушкина. Microsoft Access 2002. –СПб.: БХВ-Петербург, 2003.
4. СОДЕРЖАНИЕ
1. ОСНОВЫ ТЕХНОЛОГИИ MICROSOFT ACCESS………………………………………2
1.1.Введение………………………………………………………………………………. 2
1.2. Что такое базы даннях?................................................................................................2
1.3. Архитектура Microsoft Access……………………………………………………….2
1.4. Создание базы даннях.Создание таблиц. Связывание таблиц.................................3
1.5. Изменение проекта базы даннях.................................................................................9
1.6. Сздание запросов.......................................................................................................11
1.7. Создание и редактирование форм............................................................................ 17
1.8. Создание и редактирование отчетов.........................................................................21
1.9. Создание и применение макросов.............................................................................26
2. РАЗРАБОТКА ПРИЛОЖЕНИЯ ПОЛЬЗОВАТЕЛЯ С ИСПОЛЬЗОВАНИЕМ VBA ...29
2.1. Введение.....................................................................................................................29
2.2. Модули Access……………………………………………………………………...29
2.3. Классы и семейства...................................................................................................29
2.4. Объектные модули Microsoft Office………………………………………………..29
2.5. Модели объектов Microsoft………………………………………………………...30
2.6. Модели объектов доступа к данням DAO и ADO………………………………..30
2.7. Ссылки на объекты.....................................................................................................30
2.8. Свойства и методы объектов……………………………………………………….31
2.9. Применение метода DoCmd в программах VBA ....................................................31
2.10.Работа с объектами доступа к данным.....................................................................34
2.11. Создание объектов баз данных средствами VBA ..................................................38
3. СПИСОК ЛИТЕРАТУРЫ..................................................................................................40
Приложение
ТАБЛИЦЫ БАЗЫ ДАННЫХ УЧЕБНЫЙ ПРОЦЕСС
Таблица 1. Данные таблицы СТУДЕНТ
Номер группы | Номер студента | ФИО | Год рождения | Адрес | + Балл поступления |
Аристов Р.П. | Одесса | 4,25 | |||
Бондаренко С.А. | Одесса | 4,5 | |||
Борисова Е.И. | Николаев | 4,25 | |||
Макова Н.Е. | Херсон | 4,75 | |||
Боярская Н.П. | Херсон | 4,5 | |||
Федоров Д.К. | Николаев | 4,25 | |||
Сидоров И.Р. | Одесса | 4,5 | |||
Андреев А.П. | Измаил | 4,25 | |||
Петров П.Н. | Измаил | 4,75 | |||
Иванов К.К. | Николаев | 4,5 |
Ключевыми полями таблицы СТУДЕНТ являются поля: Номер группы, Номер студента.
Таблица 2. Данные таблицы ГРУППА
Номер группы | Кол_во студентов | Средний балл |
4,5 | ||
4,4 | ||
4,8 | ||
4,5 | ||
4,8 | ||
3,9 | ||
4,7 | ||
Ключевыми полями таблицы ГРУППА является поле: Номер группы.
Таблица 3. Данные таблицы КАФЕДРА
Код кафедры | Название | Телефон | Зав кафедрой | Фото |
Информатики | 310-13-24 | Игнатьев В.В. | ||
Математики | 310-43-98 | Иванов И.И. | ||
Истории | 310-23-65 | Смирнова И.Б. | ||
Иностранного языка | 310-97-43 | Жданова А.Е. | ||
Физкультуры | 310-87-56 | Плетнев В.А. | ||
Философии | 310-34-12 | Бондаренко В.В. |
Ключевыми полями таблицы КАФЕДРА является поле: Код кафедры.
Таблица 4. Данные таблицы ПРЕПОДАВАТЕЛЬ
Таб номер | ФИО | Уч_степень | Уч_звание | Код кафедры |
Андреев А.П. | д.т.н. | профессор | ||
Апухтин И.С. | к.т.н. | доцент | ||
Глухов И.Л. | к.т.н. | доцент | ||
Сеченов Ю.Б. | к.т.н. | доцент | ||
Чернов В.Б. | к.т.н. | доцент | ||
Блюмкина А.Т. | д.ф.-н. | профессор | ||
Львова В.И. | ассистент | |||
Шапошников И.Т. | д.т.н. | профессор | ||
Новиков П.Н. | ассистент | |||
Ильясов А.А. | к.фил.н. | доцент | ||
Пустынцев Р.Т. | к.ист.н. | доцент | ||
Романов И.П. | к.ист.н. | доцент | ||
Цветков А.И. | к.ист.н. | доцент | ||
Сорокина М.Ф. | к.фил.н. | доцент | ||
Богомолов П.Р. | к.фил.н. | доцент | ||
Лысова М.И. | к.фил.н. | доцент | ||
Шаповалова М.Ф. | к.фил.н. | доцент | ||
Кудряшова Г.М. | ассистент ассистент ассистент ассистент | |||
Жигарева Н.К. | к.пед.н. | доцент | ||
Егорова Н.Н. | ст.преп. | |||
Ермолин Е.Н. | ассистент ассистент ассистент | |||
Логинов А.М. | к.фил.н. | доцент | ||
Яковлев К.В. | к.фил.н. | доцент | ||
Раков А.В. | к.фил.н. | доцент | ||
Соловьев С.И. | ассистент |
Ключевыми полями таблицы ПРЕПОДАВАТЕЛЬ является поле: Таб номер.
Таблица 5. Данные таблицы ПРЕДМЕТ
Код предмета | Название | Всего часов | Лекции | Практика | Число семестров | Программа |
Информатика | ||||||
Математика | ||||||
История | ||||||
Иностранный яз. | ||||||
Философия | ||||||
Физкультура |
Ключевыми полями таблицы ПРЕДМЕТ является поле: Код предмета.
Таблица 6. Данные таблицы ИЗУЧЕНИЕ
Номер группы | Код предмета | Таб номер | Вид занятия | Часы | Ср_балл |
лек | |||||
пр | |||||
лек | |||||
пр | |||||
лек | |||||
пр | |||||
пр | |||||
лек | |||||
пр | |||||
лек | |||||
лек | |||||
пр | |||||
лек | |||||
лек | |||||
пр | |||||
пр | |||||
пр | |||||
лек | |||||
пр |
Ключевыми полями таблицы ИЗУЧЕНИЕ являются поля: Номер группы, Код предмета ,Таб номер, Вид занятия.
Таблица 7. Данные таблицы УСПЕВАЕМОСТЬ
Номер группы | Номер студента | Код предмета | Таб номер | Вид занятия | Оценка |
лек | |||||
пр | |||||
лек | |||||
пр | |||||
лек | |||||
пр | |||||
лек | |||||
пр |
Ключевыми полями таблицы УСПЕВАЕМОСТЬ являются поля: Номер группы, Номер студента, Код предмета, Таб номер, Вид занятий
Таблица 8. Данные таблицы ТОВАРЫ
КодТовара | Марка | Описание товара | КодПоставщика | Цена | На складе | Стоимость товара |
Кофе "Добра кава" | Молотый по 100 г | 2,61р. | 2 610,00р. | |||
Кофе "Nescafe Classic" | Растворим. по 100 г | 6,26р. | 3 756,00р. | |||
Кофе "Арабика" | В зернах 100 г | 2,40р. | 3 120,00р. | |||
Кофе "Галка" | Растворим. по 50 г | 2,44р. | 1 366,40р. | |||
Кофе "Галка" | Капучино по 10 г | 3,78р. | 945,00р. | |||
Кофе Maxima | Молотый по 250 г | 4,80р. | 7 200,00р. | |||
Кофе "Віденська кава" | В зернах по 100 г | 1,94р. | 1 396,80р. | |||
Чай Майский | 200 г листовой | 4,66р. | 2 330,00р. | |||
Чай Dilmah | 125 г кр. Лист | 2,95р. | 295,00р. |
Таблица 9. Данные таблицы ПОСТАВЩИКИ
КодПоставщика | ФирмаПоставщика | Город | Страна | ДатаПоставки |
Чаеразвесочная фабрика | Москва | Россия | 04.09.2006 | |
АТ "Галка" | Львов | Украина | 10.08.2006 | |
Dilmah | Штутгарт | Германия | 30.03.2005 | |
Nestle | Франкфурт на Майне | Германия | 11.07.2007 | |
АТ "Свиточ" | Львов | Украина | 12.08.2005 |