Чтение онлайн

на главную

Жанры

VBA для чайников

Каммингс Стив

Шрифт:

Программирование баз данных с помощью Access

Прежде чем вы приступите к программированию базы данных в Access, вам следует ознакомиться со всеми отличиями Access от остальных VBA-приложений. Эти различия осложняют перевод программы, созданной с помощью Access, в другое VBA-приложение.

* Формы Access несовместимы со стандартными пользовательскими формами VBA и формами Visual Basic. Если вы решите, что ваша программа будет лучше работать в другом VBA-приложении, вам придется создавать все формы заново.

* Access включает полностью независимую систему программирования

баз данных с помощью VBA, которая базируется на использовании объекта DoCmd. Объект DoCmd содержит все команды, доступные в меню Access. Используя этот объект, вы сможете открывать таблицы, выполнять запросы и отчеты, отображать формы, забавляться с пользовательским интерфейсом... другими словами, выполнять все действия, доступные пользователю, сидящему перед компьютером.

Если вы опытный пользователь Access, но не имеете ни малейшего опыта программирования, объект DoCmd позволит вам постепенно перейти к использованию VBA. Однако этим объясняется и определенная проблема: объект DoCmd жестко привязывает вас к Access. Если же вы изучите стандартный VBA, вы сможете очень легко перейти к другим средам разработки Visual Basic.

Даже если вы выберете "чистый" VBA, вы все равно не обойдетесь без объекта DoCmd при создании программ в рамках Access. Возможно, в связи с тем, что формы Access не являются стандартными формами VBA, для отображения формы в VBAпрограмме Access вам придется использовать не стандартный метод Show, а метод OpenForm объекта DoCmd.

Написание кода базы данных с помощью ADO

Хотя проектирование правильных SQL-инструкций может оказаться сложным, написание кода базы данных с помощью ADO оказывается совсем несложной задачей. Вам необходимо освоить работу всего с тремя объектами: Connection, Recordset и Command; их методы и свойства реализованы достаточно логично.

Обработка ошибок

Из-за ограниченного объема главы я не могу подробно остановиться на рассмотрении такого чрезвычайно важного вопроса, как обработка ошибок. Однако очень важно включить код обработки ошибок в каждую процедуру базы данных. Подробные сведения о написании кода обработки ошибок на VBA изложены в главе 9.

Добавление ссылки на ADO

Прежде чем вы сможете использовать ADO и ее объекты в VBA-программе, вы должны сначала добавить в своем проекте ссылку на библиотеку объектов ADO. В окне редактора Visual Basic выберите команду Tools=References, после чего установите флажок напротив Microsoft ActiveX Data Objects 2.x Library (на момент написания книги последней версией была 2.5).

Вашей первоочередной задачей при необходимости доступа к источнику данных (базе данных или другому репозитарию данных) станет установка соединения с ним. Для организации подключения между вашей программой и данными предназначен объект Connection.

Это очень важно! Если вы используете Access для написания ADO-кода для ядра базы данных Jet, вам не нужно создавать объект Connection для работы с базой данных Jet, уже открытой в Access, так как Access автоматически выполняет подобные действия за вас. Для обращения к базе данных используйте свойство Connection объекта Current Project программы Access.

Это позволяет сделать, например, приведенный ниже фрагмент кода:

Dim conADOConnection As Connection

Set conADOConnection = Current Project.Connection

Кроме того, вы можете легко установить подключение с базой данных SQL Server в проекте Access, если вы пишете код VBA в этом же проекте. В этом случае вам необходимо использовать свойство BaseConnectionString объекта Current Project, как показано ниже:

Dim conADO Аз New Connection

conADO.Cor.nectionString = _

CurrentProject.BaseConnectionString

В других ситуациях вам придется создавать объекты Connection самостоятельно. Для создания объекта Connection просто объявите имя переменной для объекта, после чего откройте подключение. Метод Open получает в качестве аргумента строку подключения, содержащие различные параметры, которые определяют используемое средство доступа OLE DB Provider и источник данных, с которым вы работаете. Либо же, вы можете сначала задать свойства объекта Connection, соответствующего элементам строки подключения, после чего уже использовать метол Open. Изучите приведенные ниже примеры эквивалентных инструкций, которые создают объект Connection для одной базы данных Jet:

‘ Пример 1

Dim. conADOConnection As New Connection, strConnect As String

strConnect = "Provider=Microsoft.Jet.OLEDB.4.0; " _

& "Data Source=C:\Data\Toys"

conADOConnection.Open strConnect

‘ Пример 2

Dim conADOConnection As New Connection

With conADOConnection

.Provider= "Microsoft.Jet.OLEDB.4.0;"

.Properties("Data Source") = "=C:\Data\Toys"

. Open

End With

Параметры, необходимые методу Open, зависят от используемого вами средства доступа OLE DB Provider; обратитесь к справочной системе, Web-узлу компании Microsoft или документации по Office Developer для получения подробных сведений. Ниже приведен соответствующий пример для SQL Server:

Dim conADOConnection As New Connection

Dim strConnect As String

strConnect = "Provider=SQLOLEDB; Data Source* Hecate;" _

& "Initial Catalog = toys; User ID = sa; Password =;"

conADOConnection.Open strConnect

Если вы работаете в Access, ADO нельзя назвать универсальным решением по управлению данными. Проекты Access могут взаимодействовать только с базами данных SQL Server, но ни с какими другими средствами доступа OLE DB Provider. Кроме того, использование Access VBA для создания подключений к базе данных SQL Server требует различных параметров, используемых в других средах разработки. В Access свойству Provider должно быть присвоено значение MSDataShape, а свойству DataProvider следует присвоить значение SQL0LILD3.

Поделиться:
Популярные книги

Проиграем?

Юнина Наталья
Любовные романы:
современные любовные романы
6.33
рейтинг книги
Проиграем?

Измена. Не прощу

Леманн Анастасия
1. Измены
Любовные романы:
современные любовные романы
4.00
рейтинг книги
Измена. Не прощу

Кодекс Крови. Книга IХ

Борзых М.
9. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга IХ

Стеллар. Заклинатель

Прокофьев Роман Юрьевич
3. Стеллар
Фантастика:
боевая фантастика
8.40
рейтинг книги
Стеллар. Заклинатель

Сумеречный стрелок

Карелин Сергей Витальевич
1. Сумеречный стрелок
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный стрелок

Кремлевские звезды

Ромов Дмитрий
6. Цеховик
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Кремлевские звезды

Курсант: Назад в СССР 4

Дамиров Рафаэль
4. Курсант
Фантастика:
попаданцы
альтернативная история
7.76
рейтинг книги
Курсант: Назад в СССР 4

Камень. Книга 4

Минин Станислав
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Камень. Книга 4

Сердце Дракона. нейросеть в мире боевых искусств (главы 1-650)

Клеванский Кирилл Сергеевич
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.51
рейтинг книги
Сердце Дракона. нейросеть в мире боевых искусств (главы 1-650)

Действуй, дядя Доктор!

Юнина Наталья
Любовные романы:
короткие любовные романы
6.83
рейтинг книги
Действуй, дядя Доктор!

Убийца

Бубела Олег Николаевич
3. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.26
рейтинг книги
Убийца

(Бес) Предел

Юнина Наталья
Любовные романы:
современные любовные романы
6.75
рейтинг книги
(Бес) Предел

Неудержимый. Книга XII

Боярский Андрей
12. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XII

Ваше Сиятельство 8

Моури Эрли
8. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Ваше Сиятельство 8