Курс лекций по V B 5.0

TableDefs (0).Fields!Customer.

Большинство объектов доступа к данным имеет умолчательные коллекции. Это позволяет упрощать программный код. Например, умолчательная коллекция, которую содержит объект Recordset - коллекция Fields. Например, все 3 записи эквивалентны:

Cust= Recordset1! Customer

Cust= Recordset1 .Fields!Customer

Cust= Recordset1 . Fields(“Customer”).

Программирование с объектами DAO.

Программирование с объектами DAO заключается в создании объектных переменных и управления ими, вызове методов объектов и установке их свойств. Например,

Dim DB As Database, WS As Workspace(“account.mdb”) ‘ Объявления переменных

Set WS=DBEngine. Workspaces(0) ‘ Организуется рабочая область (именнованный сеанс пользователя).

Set DB= WS.OpenDatabase(“account.mdb”) ‘ Метод OpenDatabase объекта WS типа Workspace используется для открытия базы данных[AAnA6] account.mdb и присвоения ссылки на нее объектной переменной DB типа Database.

Set RS=DB.OpenRecordset(“Clients”) ‘ С помощью метода OpenRecordset объекта DB создается набор записей на основе таблицы Clients, ссылка на который присваивается переменной RS типа Recordset.

RS.Index=“ClientID” ‘ Свойству Index объекта RS присваивается значение ClientID.

[AAnA7]

Создание базы данных

Процедура построения базы данных[AAnA8] Jet - это процесс создания и определения объектов доступа к данным, которые соответствуют таблицам, полям, индексам и отношениям структуры новой базы данных.

Пусть требуется создать библиографическую базу данных Biblio.mdb, состоящую из 3-х таблиц “Авторы”(Authors), “Названия”(Titles), “Издатели”(Publishers), связанных между собой следующими отношениями:

Titles Authors Publishers

Title AU_ID PubID [AAnA9]

Year Published Author Name

ISBN Company

AU_ID Address

PubID .(10) [AAnA10]

Необходимо создать объект Database , определить его логическую структуру, добавив объекты TableDef и Field.

1. Для каждого объекта базы данных создаются новые объектны[AAnA11] е переменные:

Dim DB As DataBase, WS As Workspace ‘объект базы данных DataBase [AAnA12]

Dim AuTd As TableDef, TitTd As TableDef, PubTd As TableDef ‘ объект ‘TableDef для каждой из 3-х таблиц

Dim AuFlds(2) As Field, TitFlds(5) As Field, PubFlds(10) As Field ‘ объект Field

‘для каждого поля каждой таблицы

Dim AuIdx AS Index, TitIdx As Index, PubIdx As Index ‘ объект Index для

‘каждого индекса каждой из 3-х таблиц

2.На основе метода CreateDatabase объекта Workspace создается новая база данных:

Set Ws=DBEngine. Workspace(0)

Set Db=Ws.CreateDataBase(“C:\VB\Biblio.mdb”,dbLangGeneral,dbVersion30) ‘ [AAnA13] константа dbLangGeneral определяет языковую версию базы данных, а dbVersion30- базу данных Jet версии 3.0

3. С помощью метода CreateTableDef объекта Database создаются объекты Tabledef для каждой[AAnA14] таблицы базы данных[AAnA15] :

Set TitTd=DB.CreateTableDef(“Titles”)

Set AuTd= DB.CreateTableDef(“Authors”)

Set PubTd= DB.CreateTableDef(“Publishers”)

4. С помощью метода CreateField объекта TableDef создаются объекты Field для каждого поля каждой[AAnA16] таблицы базы данных. Для каждого поля устанавливаются свойства, определяющие размер, тип данных и другие необходимые атрибуты. Например, для поля Author код будет выглядеть следующим образом[AAnA17] :

Set AuFlds(0)=AuTd.CreateField(“AU_ID,dbLong)

‘ сделать поле счетчиком

AuFlds(0).Attributes=dbAutoIncrField

Set AuFlds(1)=AuTd.CreateField(“Author,dbText)

AuFlds(1)=50 ‘ длина поля

5.Используя метод Append добавить каждое поле к его таблице, а каждую таблицу - к базе данных:

AuTd.Fields.Append AuFlds(0)[AAnA18]

AuTd.Fields.Append AuFlds(1)[AAnA19]

DB.TableDefs.Append AuTd

[AAnA20]

6. Используя метод CreateIndex объекта TableDef, создать индексы для каждой таблицы и установить их свойства. Например. для таблицы Authors:

Set AuIdx=AuTd.CreateIndex(“Au_ID”)

AuIdx.Primary=True ‘Первичный ключ

AuIdx.Unique=True ‘Уникальный ключ

7. Используя метод CreateField объекта Index, создать поля для каждого индексного объекта:

Set NewFld=AuIdx.CreateField(“Au_ID”)

8. Добавить поле к объекту Index, а объект Index к объекту TableDef:

AuIdx.Fields.Append NewFld

AuTd.Indexes.Append AuIdx

Вновь созданные поля объекта Index не становятся частью объекта TableDef. Вместе с тем им дается то же самое свойство Name, что и у поля объекта TableDef, которое они должны индексировать. Свойства Type и Size у этих полей не определяются.

Связывание таблиц

Создание объектов TableDef, которые содержат первичный и внешний ключи, позволяют связывать записи в одной таблице с соответствующими записями в другой таблице, согласно общим значениям первичного/внешнего ключей. При добавлении или удалении записей важно поддерживать так называемую ссылочную целостность. Ссылочная целостность означает, что внешний ключ в любой ссылающейся таблице всегда должен ссылаться на достоверную запись в адресуемой таблице, содержащей первичный ключ. Для поддержания ссылочной целостности используется объект Relation.

1. Добавить отношение к базе данных :

Dim Au_Tit As Relation ‘ объект [AAnA21] Relation

Set Au_Tit =Db.CreateRelation(“Authors_Titles”) ‘ создается объект [AAnA22] Relation с помощью метода .CreateRelation

Au_Tit.Table=“Authors” ‘ Устанавливаются свойства объекта [AAnA23] Relation

Au_Tit.ForegnTable=“ Titles”

2. Создать поле, которое в отношении будет определять общее поле первичного/внешнего ключа:

DimTempField As Field

Set TempField = Au_Tit.CreateField(“Au_Id”) ‘ создается связующее поле [AAnA24] с помощью метода CreateField

TempField. ForegnName =“Au_Id” ‘ Устанавливаются свойства объекта Field [AAnA25]

3. Добавить объект Fields к объекту Relation, а объект Relation к объекту Database [AAnA26] с помощью метода Append:

Au_Tit.Fields.Append TempField

Db.Relations Append Au_Tit

Связывание таблиц внешних баз данных[AAnA27]

Кроме определения новых таблиц можно присоединять таблицы из любой поддерживаемой внешней базы данных [AAnA28] или из другой базы данных[AAnA29] Jet. При связывании таблицы информация соединения сохраняется во внутренней базе данных Jet, и соединение будет устанавливаться автоматически всякий раз при открытии этой базы данных. Сами же данные остаются во внешней базе данных[AAnA30] .


Страница: