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
Создание формы.При создании форм за единицу измерениявMicrosoft Accessберут Твип (twip).Один твип равен 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
Создание запроса.Требуетсясредствами 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. Создание и применение макросов.............................................................................25
2. РАЗРАБОТКА ПРИЛОЖЕНИЯ ПОЛЬЗОВАТЕЛЯ С ИСПОЛЬЗОВАНИЕМ VBA ...28
2.1. Введение.....................................................................................................................28
2.2. Модули Access……………………………………………………………………...28
2.3. Классы и семейства...................................................................................................29
2.4. Объектные модули Microsoft Office………………………………………………..29
2.5. Модели объектов Microsoft………………………………………………………...29
2.6. Модели объектов доступа к данням DAO и ADO………………………………..29
2.7. Ссылки на объекты.....................................................................................................30
2.8. Свойства и методы объектов……………………………………………………….30
2.9. Применение метода DoCmd в программах VBA ....................................................31
2.10.Работа с объектами доступа к данным.....................................................................33
2.11. Создание объектов баз данных средствами VBA ..................................................37
3. СПИСОК ЛИТЕРАТУРЫ..................................................................................................39
Дата добавления: 2015-08-26; просмотров: 838;