Управление базами данных Access на VBA - eDrive
Управление базами данных Access на VBA - eDrive Управление базами данных Access на VBA - eDrive
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 ("Категории")
- Page 1 and 2: В. М. Водовозов Упра
- Page 3 and 4: Оглавление Модели
- Page 5: 5 Процедурное и стр
- Page 9 and 10: 9 Метод … объектНаб
- Page 11 and 12: 11 tdf2.FindFirst "Кто = 'Але
- Page 13 and 14: 13 & "WHERE NТовара = 2 " Cur
- Page 15 and 16: 15 adLockPessimistic — песси
- Page 17 and 18: 17 cnnMDB.Open "DBQ=D:\ Кадры.
- Page 19 and 20: 19 как используется
- Page 21 and 22: 21 "UPDATE Сотр SET Сколь
- Page 23 and 24: 23 Имя = InputBox ("Какую
- Page 25 and 26: 25 Picture bmp Имя файла ф
- Page 27 and 28: 27 поле.FontName = "Times New R
- Page 29 and 30: 29 Sub ОткрытыеОтчеты
- Page 31 and 32: 31 DoCmd.OpenForm "Сотрудни
- Page 33 and 34: 33 With новаяПанель.Cont
- Page 35: 35 End If CurrentDb.Properties ("Al
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 />
• имяТаблицыИлиЗапроса! имяПоля