Модель объектов доступа к данным является объекто-ориентированым интерфейсом программирования ядра базы данных Jet. Это иерархия классов, которая соответствует логической структуре реляционной базы данных.
Для единообразия и простоты использования эти классы, а также объекты, которые создаются на базе этих классов, имеют такие же свойства как и другие классы и объекты в VB и VBA
В VB реализована иерархия объектов. Это значит, что одни объекты могут содержать другие объекты, которые в свою очередь могут включать и третьи. Это включение обеспечивается особым типом объекта, который называется коллекция. Единственным назначением объекта коллекция - является содержание в себе других объектов. Коллекция включает в себя объекты одного типа.
Замечание: Элементы в иерархии DAO на самом деле являются классами, а не объектами. Это только "черновики" (прототипы) объектов, создаваемых при разработке приложения. В объектно-ориентированном программировании ООП класс похож на тип данных в том смысле, что описывает тип объекта, на который производится ссылка.
|
|
Например,
Dim MyWs As Workspace
указывает, что MyWs - это переменная, которая используется в качестве объекта класса Workspace. Поэтому нужно понимать, что объект Database - это объект класса Database.
На вершине иерархии коллекций находится само ядро базы данных Microsoft Jet - DBEngine. Это единственный объект, который не является коллекцией. Объект DBEngine владеет коллекцией Workspaces (название коллекции всегда является множественным числом от названия объектов, которые в ней содержатся), которая содержит один или несколько объектов Workspace (рабочая область). Каждый объект Workspace владеет коллекцией Databases, в которой содержится один или несколько объектов Database. Объект Database содержит коллектцию TableDefs.
Обратиться к первому элементу коллекции TableDefs можно:
MyDatabase.TableDefs(0)
Объекты в иерархии обпределяются по полному "пути" через вложенные коллекции, которым они принадлежат.
DBEngine.Workspaces(0).Databases(0).TableDefs(0).Fields("Заказчик") - пример использования для ссылки на объект коллекции не индекса а строки, соответствующей свойству Name объекта коллекции Field
Также для обращения к свойству объекта можно использовать восклицательный знак.
MyTableDef.Fields("Заказчик")
MyTableDef.Fields!Заказчик
Две приведенные выше строки равнозначны.
Коллекции по умолчанию. У многих объектов доступа к данным есть коллекции по умолчанию. Это позволяет упростить программу и сократить запись некоторых операторов. Например, коллекцией по умолчанию объекта Recordset является коллекция Fields. Чтобы получить значение объекта Field с названием Заказчик, можно написать:
Cust = MyRecordset!Заказчик
или Cust = MyRecordset.Fields!Заказчик
или Cust = MyRecordset.Fields("Заказчик")