Управление базами данных Access на VBA - eDrive

Управление базами данных Access на VBA - eDrive Управление базами данных Access на VBA - eDrive

edrive.narod.ru
from edrive.narod.ru More from this publisher
26.12.2014 Views

6 • CurrentDB!QueryDefs!имяЗапроса • CurrentDB!QueryDefs («имяЗапроса») • CurrentDB!QueryDefs (индекс) • CurrentDB!QueryDefs (ссылка) Результирующие множества записей — объекты классов TableDef и QueryDef — создаются методами CreateTableDef, CreateQueryDef: • [рабочаяОбласть.]базаДанных.CreateTableDef («имяТаблицы») • [рабочаяОбласть.]базаДанных.CreateQueryDef ([запрос, SQL]) Если при вызове метода CreateQueryDef аргументы не заданы, можно присвоить новому объекту значения свойств Name и SQLtext позднее, посредством оператора присваивания. Объекты классов TableDef и QueryDef открываются методом OpenRecordset и закрываются с удалением из семейства Databases методом Close объекта Database: • базаДанных.OpenRecordset (Источник [,Тип, Параметры] ) • объект.OpenRecordset (Источник [,Тип, Параметры] ) • базаДанных.Close • объект.Close В отличие от режима работы через интерфейс пользователя, процедуры VBA дают возможность одновременно открывать несколько баз данных, хотя на экране отображается только одна из них. Свойство Name позволяет проверить, открылась ли база данных: полный путь к открытой базе возвращает выражение объект.Name. Поля таблиц вначале создаются, затем добавляются в семейства, после чего обновляется окно базы данных: Set объектПоле = объектТаблица.CreateField (имяПоля, Тип, [Размер]) объектТаблица.Fields.Append объектПоле базаДанных.TableDefs.Append объектТаблица RefreshDatabaseWindow Доступ к полям реализуется через объекты класса Fields: • имяТаблицыИлиЗапроса.Fields!имяПоля • имяТаблицыИлиЗапроса. имяПоля • имяТаблицыИлиЗапроса!Fields!имяПоля • имяТаблицыИлиЗапроса! имяПоля

7 • Parent!имяПоляГлавнойФормы Ни TableDef, ни QueryDef не содержат данных. Для доступа к данным нужны наборы записей — объекты RecordSet. В модели DAO присутствуют четыре типа таких объектов. Тип Table представляет набор записей одной таблицы открытого файла базы данных. Он не обрабатывает связанные таблицы и таблицы ODBC и обслуживает только рабочие области Jet. Тип Dynaset представляет динамический набор записей таблицы открытой базы данных, связанной таблицы, результата выполнения запроса или оператора SQL SELECT. Он состоит из ссылок, поэтому обрабатывается медленнее, чем Table и иногда не обновляется, но охватывает более широкую область данных. Тип Snapshot представляет статическую копию таблицы, запроса или оператора SQL SELECT, удобную для выборки данных и создания отчетов. Forward-Only представляет аналогичную копию, предназначенную для единовременного просмотра данных. Синтаксис: базаДанных.OpenRecordSet (Источник [,Тип, Параметры, Блокировка]) Здесь Источник — это строка с именем таблицы, запроса или текстом SQL, далее следует тип объекта RecordSet, по умолчанию Table для таблиц и Dynaset для запросов и связанных таблиц. Любой объект RecordSet существует только в рамках своей процедуры, а затем уничтожается. Его можно закрыть раньше методом Close. Примеры Sub РабочаяОбласть () Set область = DBEngine.Workspaces (0) Set новаяБазаДанных = _ область.CreateDatabase ("Школьники.mdb", dbLangGeneral) Set другаяБазаДанных = _ область.OpenDatabase ("Транспорт") MsgBox другаяБазаДанных.Name & Chr (13) & _ новаяБазаДанных.Name & Chr (13) & CurrentDb.Name End Sub Sub БазыДанных () Set текущаяБазаДанных = CurrentDb Set новаяБазаДанных = CreateDatabase ("Студенты.mdb", dbLangCyrillic) Set другаяБазаДанных = OpenDatabase ("Пользователи.mdb") MsgBox другаяБазаДанных.Name & Chr (13) & _ новаяБазаДанных.Name & Chr (13) & текущаяБазаДанных.Name End Sub Sub НаборыЗаписейDAO () Set tdf1 = CurrentDb.OpenRecordset ("Сотрудники", dbOpenDynaset) Set tdf2 = CurrentDb.OpenRecordset ("Категории")

6<br />

• CurrentDB!QueryDefs!имяЗапроса<br />

• CurrentDB!QueryDefs («имяЗапроса»)<br />

• CurrentDB!QueryDefs (индекс)<br />

• CurrentDB!QueryDefs (ссылка)<br />

Результирующие множества записей — объекты классов TableDef и<br />

QueryDef — создаются методами CreateTableDef, CreateQueryDef:<br />

• [рабочаяОбласть.]базаДанных.CreateTableDef («имяТаблицы»)<br />

• [рабочаяОбласть.]базаДанных.CreateQueryDef ([запрос, SQL])<br />

Если при вызове метода CreateQueryDef аргументы не заданы, можно<br />

присвоить новому объекту з<strong>на</strong>чения свойств Name и SQLtext позднее,<br />

посредством оператора присваивания.<br />

Объекты классов TableDef и QueryDef открываются методом<br />

OpenRecordset и закрываются с удалением из семейства Databases методом<br />

Close объекта Database:<br />

• базаДанных.OpenRecordset (Источник [,Тип, Параметры] )<br />

• объект.OpenRecordset (Источник [,Тип, Параметры] )<br />

• базаДанных.Close<br />

• объект.Close<br />

В отличие от режима работы через интерфейс пользователя, процедуры <strong>VBA</strong><br />

дают возможность одновременно открывать несколько баз <strong>данных</strong>, хотя <strong>на</strong><br />

экране отображается только од<strong>на</strong> из них. Свойство Name позволяет<br />

проверить, открылась ли база <strong>данных</strong>: полный путь к открытой базе<br />

возвращает выражение объект.Name.<br />

Поля таблиц в<strong>на</strong>чале создаются, затем добавляются в семейства, после<br />

чего обновляется окно базы <strong>данных</strong>:<br />

Set объектПоле = объектТаблица.CreateField (имяПоля, Тип, [Размер])<br />

объектТаблица.Fields.Append объектПоле<br />

базаДанных.TableDefs.Append объектТаблица<br />

RefreshDatabaseWindow<br />

Доступ к полям реализуется через объекты класса Fields:<br />

• имяТаблицыИлиЗапроса.Fields!имяПоля<br />

• имяТаблицыИлиЗапроса. имяПоля<br />

• имяТаблицыИлиЗапроса!Fields!имяПоля<br />

• имяТаблицыИлиЗапроса! имяПоля

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!