MyTetra Share
Делитесь знаниями!
Создание объектов баз данных средствами VBA
17.03.2018
21:40
Текстовые метки: VBA, CreateDataBase, создание базы данных
Раздел: VBA - Access - CreateDataBase

Средствами 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



Создание запроса.Требуетсясредствами 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

Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования