Свойства и методы

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

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

Пример.

Dim MyDB As Database, MyWS as Workspace, _

MyRS As Recordset

Set MyWS = DBEngine.Workspaces(0)

Set MyDB = MyWS.OpenDatabase("MyDB.mdb")

Set MyRS = MyDB.OpenRecordset("Customers")

MyRS.Index = "IDCustomer"

1. Метод OpenDatabase объекта MyWS класса Workspace необходим для открытия базы данных MyDB.mdb и присвоения ссылки на нее объектной переменной MyDB класса Database.

2. Метод OpenRecordset объекта MyDB используем для создания набора записей (объект recordset - группа записей, представляющая таблицу базы данных или результат запроса), основанного на таблице Customers и назначения ссылки на него переменной MyRS класса Recordset)

3. Свойству Index объекта MyRS класса Recordset присваевается значение IDCustomer, что должно изменить порядок сортировки записей в объекте MyRS

У большинства объектов можно определять новые свойства.

Выполнять создание новой базы данных, добавление в нее таблиц и т.п. можно несколькими способами:

· всю последовательность действий можно выполнять в ручном режиме;

· можно воспользоваться объектами и методами DAO

· можно использовать SQL запросы

Использование объекта "Набор записей"

Recordset - "Набор записей" представляет записи в таблице базы данных или записи, полученные при выполнении запроса. Recordset используется для управления данными в базе на уровне запроса. Объект Field (поле) используется для управления данными на уровне поля.

Есть пять типов Recordset

Табличный набор (table-type) ссылается на локальную таблицу в текущей базе данных или внешней базе. При создании табличного набора ядро БД открывает таблицу и выполняет все последующие действия непосредственно с данными таблицы. Набор такого типа можно открыть только по одной таблице. Данный набор можно проиндексировать, используя индекс основной таблицы При поиске данных метод Seek работает быстрее чем метод Find

Динамический (dynaset) набор записей ссылается либо на локальные или связанные таблицы, либо на результат выполнения запроса, возвращающего строки. На самом деле он является множеством ссылок на записи одной или более таблиц. С помощью динамического набора можно извлекать и обновлять данные более чем в одной таблице, включая связанные таблицы из других баз данных. Изменения записей в динамическом наборе также отражаются и в основных таблицах. Пока динамический набор открыт в нем также будут отражаться все текущие изменения основных таблиц. Динамический набор является наиболее гибким и мощным типом набора записей, хотя поиск и другие операции выполняются в нем медленнее, чем с остальными наборами.

Статический набор записей (snapshot) содержит постоянную копия данных по состоянию на момент ее создания. Данный набор записей нельзя обновлять. Некоторые наборы из источников данных, удовлетворяющих стандарту ODBC, можно обновлять в зависимости от возможностей, предоставляемых базой данных на другом конце соединения. Данный набор занимает меньше процессорного времени, чем динамический и табличный наборы, поэтому может обслуживать запросы и возвращать данные гораздо быстрее, особенно при работе с источниками ODBC.

Статический набор записей с последовательным доступам (forward-only)

обеспечивает часть возможностей статического набора. Позволяет двигаться по данным только в прямом направлении, но обеспечивает максимальную скорость при работе с данными. Работает только с методами Move и MoveNext

Динамический набор записей (Dynamic) - результат запроса к одной или нескольким запросам. Записи, которые добавляют или удаляют другие пользователи также заносятся в данный набор. Соответствует динамическому курсору ODBC.

Тип используемого набора зависит от целей пользователя. Если надо отсортировать данные и работать с индексами лучше работать с табличным набором. Табличные наборы также обеспечиваеют наиболее быстрый поиск. Если необходимо обновлять выбранные данные, то нужен динамический набор. Если нужно быстро просмотреть данные то можно пользоваться статическим набором с последовательным доступом.

Для создания переменной объекта Recordset исользуется метод OpenRecordset. Этот метод доступен для объектов Database, Connection, TableDef, QueryDef и уже существующих объектов Recordset

Set переменная = база_данных.OpenRecordset (источник [, тип [, параметры, [блокировка]]])

база_данных - тип Database или Connection

источник - SQL запрос, TableDef или QueryDef

Set переменная = объект.OpenRecordset ([, тип [, параметры, [блокировка]]])

TableDef или QueryDef сами являются источником.

Тип

dbOpenTable

dbOpenDynaset

dbOpenSnapshot

dbOpenForwardOnly

dbOpenDynamic

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

Set rstNew = dbs.OpenRecordset("Источник данных")

Если источник - локальная табица, то доступны наборы табличного, динамического, статического и динамического (dynamic) типов, по умолчанию - табличный тип

В противном случае по умолчанию тип dynaset

Set rstNew = tdfTableData.OpenRecordset

если локальная таблица, то табличный тип, если таблица ODBC, то dynaset

Параметры метода OpenRecordset

dbAppendOnly - позволяет добавлять новые записи к набору, но запрещает редактирование и удаление. Только для dynaset. Полезно в системах архивирования и сбора данных

dbReadOnly - Запрещает изменение набора

dbSeeChanges - Порождет ошибку времени выполнения, если один пользователь пытается изменить запись, которую редактирует другой пользователь.

dbDenyWrite - Запрещает изменений или добавление записей

dbDenyRead - запрещает чтение другими пользователями данных в таблице.

dbForwardOnly

dbSQLPassThrough

dbConsistent - допускает только согласованные обновления

dbInconsystent - допускает несовместные обновления

Задание параметров блокировки набора

dbReadOnly - запрещает изменение набора

dbPessimistic- пессимистическая блокировка

dbOptimistic- оптимистическая блокирока

dbOptimisticValue - использует оптимистическую согласованность

Примеры:

Dim dbs As Database, rstCustomers As Recordset

Set dbs = OpenDatabase("Northwind.mdb")

Set rstCustomers = dbs.OpenRecordset("Клиенты")

Создание набора из связанной таблицы с другим форматом базы данных

Т.к. для базы не MS Jet табличный тип недоступен, то при открытии используется следующий по эффективноси тип.

Dim dbs as Database

Dim tdfNonJetLinked as TableDef

Dim rstTableData As Recordset

' *** Открыть базу данных и создать TableDef

set dbs = OpenDatabase("Northwind.mdb")

set tdfNonJetLinked = dbs.CreateTableDef("PDXAuthor")

'*** Соединиться с Paradox-таблицей Author в базе данных C:\PDX\Publish

tdfNonJetLinked.Connect = "Paradox 3.X; DATABASE= C:\PDX\Publish "

tdfNonJetLinked.SourceTableName = "Author"

'*** Присоединить таблицу

dbs.TableDefs.Append tdfNonJetLinked

'*** Создать динамический набор для таблицы

Set rstTableData = tdfNonJetLinked.OpenRecordset()

Для источников данных ODBCDirect можно использовать метод OpenRecordset с объектом Connection

Чтобы упорядочить записи в табличном наборе, необходимо установить его свойство Index

В данном примере используется индекс по табличному набору, основанному на таблице "stud". Если "key_stud" - наименование индекса по полю key_stud, то возвращается дата рождения студента.

Const ERR_NOMATCH = 1

Const SUCCESS = 2

Const FAILED = 3

_________________________________________________________________


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: