скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыРеферат: Курс лекций по V B 5.0


 TableDef          QueryDef         Recordset         Container        Relation


  Field                 Field                  Field               Document        Field

 

  Index               Parameter


Error              Field

Рис. Фрагмент объектной иерархии DAO.

Наличие объектной иерархии означает, что объекты могут содержать другие объекты, которые, в свою очередь, могут содержать другие объекты. Эта объектное включение реализуется через специальный вид объекта- коллекцию. Основное назначение объекта- коллекции - содержать и группировать другие объекты. Все объекты, содержащиеся в данной коллекции, одного вида.

Элементы в иерархии DAO фактически классы, а не объекты. Это макеты для объектов, создаваемых при формировании приложения  базы данных, Класс подобен типу данных в том смысле, что он описывает, к какому виду объекта происходит обращение. Например, в объявлении Dim Ws As устанавливается, что переменная Ws будет служить ссылкой на объект класса[AAnA3]  Workspace.

Наверху иерархии - объект DBEngine, непосредственно процессор  базы данных MS Jet. Он является владельцем коллекции Workspaces (рабочая область), которая содержит объекты Workspace. Каждый объект Workspace включает коллекцию Databases, которая содержит один или больше объектов Database. Каждый объект Database включает коллекцию TableDefs, которая содержит один или больше объектов TableDef (определение таблицы) и т.д.

Объекты члена коллекции индексируются, начиная с 0 и могут быть доступны через этот индекс. Например, первый объект TableDef объекта Database, именуемого Database1, будет адресоваться как Database1. TableDefs (0). Второй TableDef  того же объекта Database - Database1. TableDefs (1) и т.д. Объекты в иерархии идентифицируются полным путем через вложенные коллекции, к которым они принадлежат. Например,    

            DBEngine. Workspaces(0). Databases(0). [AAnA4] ss TableDefs (0).Fields(“Customer”)     

 адресуется к полю Customer в первом TableDef коллекции TableDefs первого Database коллекции Databases первого Workspace коллекции Workspaces объекта DBEngine. Кроме того, для коллекции Fields можно вместо индекса использовать свойство Name объекта Field коллекции. При явном обращении к члену коллекции по именивместо точки используется восклицательный знак. Например, [AAnA5] ss

TableDefs (0).Fields(“Customer”) эквивалентно

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]

Страницы: 1, 2, 3, 4, 5, 6, 7, 8


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.