Курс лекций по V B 5.0Рефераты >> Программирование и компьютеры >> Курс лекций по 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] .