Тверской государственный университет
Опубликован: 13.09.2006 | Доступ: свободный | Студентов: 5134 / 388 | Оценка: 4.23 / 3.83 | Длительность: 28:12:00
Специальности: Программист, Менеджер
Лекция 5:

Объекты ADO

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

'Модуль TestingADO
'Глобальные переменные
Public Con1 As New ADODB.Connection
Public Cmd1 As New ADODB.Command
Public Rst1 As New ADODB.Recordset
Public Strm1 As New ADODB.Stream
Public Sub CreateConnection()
	'Создание соединения с тестовой базой данных Access
	Dim strConnStr As String
	If Con1.State = adStateOpen Then Con1.Close	'закрыть соединение
		'Вариант 1
		'Конфигурирование соединения Con1
		Con1.Provider = "Microsoft.jet.oledb.4.0"
		Con1.ConnectionString = "Data Source=c:\!O2000\DsCd\Ch14\dbPP2000.mdb"
		Con1.CursorLocation = adUseClient
		'Открытие соединения
		Con1.Open
		'Вариант 2
		'strConnStr = "Provider=Microsoft.jet.oledb.4.0;" & _
				'"Data Source=c:\!O2000\DsCd\Ch14\dbPP2000.mdb"
		'Con1.Open strConnStr
	'печать характеристик соединения
	Debug.Print "Attributes = ", Con1.Attributes
	Debug.Print "CommandTimeout = ", Con1.CommandTimeout
	Debug.Print "ConnectionString = ", Con1.ConnectionString
	Debug.Print "ConnectionTimeout = ", Con1.ConnectionTimeout
	Debug.Print "CursorLocation = ", Con1.CursorLocation
	Debug.Print "DefaultDatabase = ", Con1.DefaultDatabase
	Debug.Print "Mode = ", Con1.Mode
	Debug.Print "Properies.Count = ", Con1.Properties.Count
	Debug.Print "State = ", Con1.State
	Debug.Print "Version = ", Con1.Version
End Sub

Приведу краткий комментарий.

  • Прежде всего, отмечу, что я начал работать с документом Excel, который будет получать данные из базы данных Access, создание которой я описал в предыдущей главе. В проекте этого документа я создал модуль с именем TestingADO, подключил к проекту библиотеку ActiveX Data Objects 2.5 Library, которая у меня на компьютере находится, как обычно, по адресу: "c:\Program Files\Common Files\System\ado\msado15.dll". Имя этой библиотеки, используемое в проектах на VBA, - ADODB.
  • Затем я создал 4 глобальных объекта: Con1, Cmd1, Rst1, Strm1, принадлежащих соответственно классам Connection, Command, Recordset, Stream из библиотеки ADODB.
  • Первая процедура, которую я написал в этом модуле - CreateConnection, проста. В ней идет работа с объектом Con1, устанавливается соединение с базой данных Access и распечатываются характеристики сделанного соединения.
  • Работа начинается с проверки состояния соединения, поскольку попытка открыть уже открытое соединение приводит к ошибке.
  • Я рассматриваю два варианта установления соединения. В первом - предварительно задаются свойства соединения Provider и ConnectionString, затем вызывается метод Open без параметров. Во втором варианте вся необходимая информация указывается при вызове метода Open в передаваемых ему параметрах.
  • Приведу результаты печати свойств соединения после его открытия:
Attributes = 0 
CommandTimeout = 30 
ConnectionString =  Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data 
Source=c:\!O2000\DsCd\Ch14\dbPP2000.mdb;Mode=Share Deny None;Extended Properties="";Jet 
OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet 
OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk 
Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet 
OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't 
Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet 
OLEDB:SFP=False
ConnectionTimeout = 15 
CursorLocation = 3 
DefaultDatabase =			
Mode = 16 
Properies.Count = 94 
State = 1 
Version = 2.5

Обратите внимание на длинную строку ConnectionString. Она, конечно, намного длиннее той строки, которую задал я, определив источник данных. Помимо этого, строка содержит многие характеристики соединения, устанавливаемые по умолчанию. Заметьте также, я напечатал лишь число элементов коллекции Properties, не приводя значений всех 94 элементов.

Объект Command

Объект Connection позволяет установить соединение с Провайдером источника данных и, вообще говоря, выполнять операции над данными. Но для выполнения команд есть специальный объект. Объект Command позволяет задать команду Провайдеру на выполнение той или иной операции над данными источника. Чтобы разобраться с возможностями этого объекта, давайте начнем с рассмотрения его свойств и методов. Замечу, что этот объект событий не имеет, - они связаны только с объектами Connection и Recordset.

Ольга Гафарова
Ольга Гафарова

Добрый день. Подскажите формулы при решении задачи на рис. 2.2 в лекции №2. Закон Ома, какие должны использоваться формулы для I и R

Курс: Основы офисного программирования и документы Excel

Серегй Лушников
Серегй Лушников