Программирование >>  Разработка пользовательского интерфейса 

1 ... 94 95 96 [ 97 ] 98 99 100 ... 147


rdoEngine.rdoDefaultCursorDriver = rdUseOdbc Объект rdoEngine имеет следующие свойства:

- rdoDefaultCursorDriver - может принимать три значения, которые являются предопределенными константами:

Константа Значение Описание

rdUseIfNeeded 0 ODBC драйвер будет использовать

соответствующий тип курсора. Курсоры сервера будут использоваться, если они доступны.

rdUseODBC 1 В данном случае RDO использует

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

RdUseServer 2 Драйвер ODBC использует курсоры

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

Курсором является логический набор данных, управляемый источником данных или Диспетчером ODBC.

- rdoDefaultErrorTreshold - данное свойство устанавливает или возвращает установку по умолчанию для свойства ErrorTreshold объекта rdoPreparedStatement. Суть использования данного свойства заключается в том, что каждая ошибка имеет свойство Number. Если свойство Number больше значения свойства ErrorTreshold, то ошибка не генерируется, в противном случае генерируется перехватываемая ошибка, которая либо заканчивает работу приложения, либо обрабатывается, если это предусмотрено в коде или системе. Если установить это свойство равным -1, то, соответственно, никакого объекта для отсечения перехватываемых ошибок не будет.

- rdoDefaultLoginTimeout - возвращает или устанавливает количество секунд, в течение которых ODBC драйвер прекратит попытку установить соединение с источником данных и возвратит перехватываемую ошибку. Значение по умолчанию - 15 с. Если это значение равно 0, то попытка установить соединение с источником данных, используя текущую процедуру регистрации, будут продолжаться неопределенное время.

Свойства rdoDefaultPassword и rdoDefaultUser устанавливают пароль и пользователя по умолчанию для всякого вновь создающегося объекта rdoEnvironment.

Объект rdoEngine имеет два метода. Метод rdoRegisterDataSource служит для занесения в Регистр Windows информации о вновь создаваемом источнике данных ODBC. Таким образом вы можете создавать источники данных, минуя диалоговое окно Администратора ODBC. Это очень удобно при распространении вашего приложения. Хотя есть и другие способы внести информацию о новом источнике данных в Регистр Windows.

Приведем синтаксис этого метода:

rdoRegisterDataSource cDataSourceName, cDriverName, ISilent, cAttributes где

cDataSourceName - имя, которое вы хотите присвоить источнику данных. В дальнейшем остальные методы, которым необходимо связаться с базой данных, для которой вы создаете источник данных, будут использовать это имя. Например, метод OpenConnection.

cDriverName - строковое выражение, являющееся именем драйвера, зарегистрированным в Регистре Windows. При этом обращаем внимание, что драйвер уже должен быть установлен.

ISilent - логическое выражение, которое указывает, будет ли появляться диалог ODBC, в котором вы укажете специфичную для данного драйвера информацию. Если вы укажете это значение равным True, то вам надо будет указать всю необходимую информацию в аргументе cAttributes.

cAttributes - строковое выражение, в котором вы указываете дополнительную информацию для драйвера. Для каждого драйвера эта информация специфична. Параметры, которые необходимо описать, вы можете посмотреть в Регистре Windows, найдя описание источника данных, которые устанавливает связь с базой данных подобного формата. Например так, как это показано на рис. 8.14.



Для работы с внешними данными RDO использует объект окружения (rdoEnvironment). При этом одно окружение в коллекции создается автоматически. Этого окружения вполне достаточно для работы с данными, так как с помощью него вы можете создать сколько угодно соединений и одновременно редактировать таблицы из нескольких баз данных, даже разного формата. Но иногда необходимо обрабатывать более сложные ситуации, в которых надо вести несколько транзакций одновременно. Тогда имеет смысл создавать дополнительные объекты rdoEnvironment. Здесь необходимо отметить, что ODBC не поддерживает возможности вложенных транзакций. Выход из положения можно найти, если приложение, с данными которого вы работаете, поддерживает вложенные транзакции. Тогда вы можете использовать SQL выражения, которые будут передаваться на сервер и создавать сложные вложенные и пересекающиеся транзакции.

Объект rdoEnvironment создается с помощью метода rdoCreateEnvironment и имеет следующий синтаксис:

set Variable = rdoCreateEnvironment(Wame, User, Password)

Variable - объектная переменная, которая ссылается на объект rdoEnvironment.

Name - строковая переменная, которая становится уникальным именем объекта Environment.

User - имя пользователя объекта rdoEnvironment.

Password - пароль пользователя.

Приведенная ниже программа демонстрирует установку и чтение некоторых из вышеприведенных свойств и использование методов rdoRegisterDataSource и rdoCreateEnvironment.

Const rServerDSN = ToAutostore

Const rServerUser = UID=sa;DATABASE=autostore

Dim grdfEnv As rdo.rdoEnvironment

Dom grdfConn As rdo.rdoConnection

Dim sqlAttr As String

strAttr = Description=Connect to autostore & Chr$(13) & OemToAnsi = No &

Chr$(13) & Address=\\MAINSERVER\AUTOSTORE\ & Chr$(13) &

Database=Autostore rdoEngine.rdoRegisterDatasource rServerDSN, SQL Server , True, sqlAttr If grdfEnv Is Nothing Then

rdoEngine.rdoDefaultCursorDriver = rdUseOdbc

Set grdfEnv = rdoEngine.rdoCreateEnvironment

( , , )

Set grdfConn = grdfEnv.OpenConnection (rServerDSN, rdDriverNoPrompt, False, rServerUser)

grdfConn.QueryTimeout = 0

End If

Коллекция rdoEnvironments содержит в себе все объекты rdoEnvironment объекта rdoEngine. Она имеет всего один метод Item, который устанавливает доступ к конкретному объекту в зависимости от его порядкового номера в коллекции. То есть вы можете обращаться к первому объекту в коллекции с помощью метода Item, например:

Set grdfConn = rdoEnvironments.Item(0).grdfEnv.OpenConnection

(rServerDSN, rdDriverNoPrompt, False,

rServerUser)

В то же время следующий пример эквивалентен предыдущему: Set grdfConn = rdoEnvironments(0).grdfEnv.OpenConnection (rServerDSN, rdDriverNoPrompt, False, rServerUser)

Коллекция rdoEnvironments имеет свойство Count, которое используется только для чтения и возвращает количество объектов в коллекции.

Объект rdoEnvironment содержит три метода для работы с транзакциями. Это методы BeginTrans, CommitTrans и RollBackTrans. Эти методы очень похожи на соответствующие методы



объекта Workspace из DAO. Но имеет смысл напомнить еще раз, что нельзя использовать вложенные транзакции. В то же время вы можете управлять транзакциями на сервере с помощью SQL команд BEGIN TRANSACTION, COMMIT TRANSACTION, ROLLBACK TRANSACTION, передавая их на сервер с помощью запросов действия. BEGINTRANS начинает транзакцию.

COMMITTRANS прекращает текущую транзакцию и сохраняет все изменения.

ROLLBACKTRANS заканчивает текущую транзакцию и восстанавливает базы данных в текущем объекте rdoEnvironment в то состояние, в котором они находились до начала транзакции.

Объект rdoEnvironment имеет метод Close. При работе с этим методом необходимо помнить, что вы не можете закрыть окружение по умолчанию, то есть объект rdoEnvironments(0). Если текущий объект rdoEnvironment содержит открытые соединения, которые используются объектами rdoResulset, то после закрытия объекта rdoEnvironment все текущие транзакции прекращаются и базы данных возвращаются в первоначальное состояние.

Метод OpenConnection служит для создания и открытия соединений, которые являются единственной коллекцией, содержащейся в объекте rdoEnvironment и объекты которой используются для доступа к данным в базе данных, указанной в источнике данных. Этот метод имеет следующий синтаксис:

Set Connection = Env/ronment.OpenConnection(DataSourceName[, Prompt[, Readonly[, Connect]]])

Connection - объектная переменная, которая ссылается на объект rdoConnection.

Environment - выражение, которое обозначает существующее окружение.

DataSourceName - строковое выражение, обозначающее имя источника данных, так как оно зарегистрировано в Реестре Windows. При этом если не указать его, то есть ввести пустую строку или указать несуществующий источник данных, то будет выведено диалоговое окно ODBC для выбора источника данных из списка существующих. Тем не менее, если аргумент Prompt имеет значение rdDriverNoPrompt, будет сгенерирована перехватываемая ошибка и никакого диалогового окна выведено не будет. В то же время можно ввести имя источника данных в аргументе Connect в параметре DataSourceName.

Prompt может принимать одно из четырех значений предопределенных констант. В зависимости от этого значения диспетчер ODBC драйверов требует от пользователя ввода DataSourceName (имени источника данных), имени пользователя и пароля.

Значение аргумента Описание

rdDriverNoPrompt Диспетчер драйверов

использует информацию из аргументов

DataSourceName и Connect для построения строки соединения. Если необходимая информация не будет обеспечена, то метод OpenConnection возвратит ошибку.

RdDriverPrompt Диспетчер драйверов выводит диалог ODBC и строит строку соединения по информации, введенной пользователем в этом диалоге.

rdDriverComplete Диспетчер драйверов выводит диалог ODBC только в случае недостатка информации в аргументах DataSourceName и Connect.

rdDriverCompleteRequired Диспетчер драйверов ведет

себя так же, как в случае, когда данный аргумент равен rdDriverComplete, за исключением того, что в диалоге ODBC отключены элементы,



1 ... 94 95 96 [ 97 ] 98 99 100 ... 147

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика