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

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


предоставляющие информацию, которая больше не нужна.

Readonly - определяет, будет ли соединение открыто для доступа только для чтения или для чтения и записи.

Connect - строковое выражение, используемое для открытия баз данных. Эта строка составляет ODBC аргументы соединения и зависит от конкретного используемого драйвера.

Иногда могут возникнуть причины, по которым вы не сможете установить соединение, среди них такие, как отсутствие прав доступа к источнику данных, неправильное соединение сети, отсутствие или отключение источника данных. Некоторые серверы баз данных имеют ограничение на количество соединений по разным причинам, в том числе и ограничение по ресурсам.

Создав объект rdoConnection, вы можете использовать его для

Создания объектов rdoResultset или rdoPreparedStatement, используя методы OpenResultset или CreatePreparedStatement, в зависимости от решаемых задач.

Доступа к таблицам базы данных и колонкам каждой таблицы, используя объекты rdoTable и rdoColumn в коллекциях rdoConnections(0).rdoTables и rdoTables(n).rdoColumns.

Начала, завершения или отката транзакции, используя методы Begin-Trans, CommitTrans и RollbackTrans.

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

Свойство Описание

CursorDriver Служит для установки и чтения значения, устанавливающего тип курсора, который будет создан. Может иметь три значения: rdUsedIfNeeded, rdUseODBC, rdUseServer.

hEnv Возвращает значение указателя ODBC окружения, которое можно использовать для вызова ODBC API функций.

LoginTimeOut При использовании баз данных ODBC возможны задержки из-за сетевого трафика или напряженного использования источника данных ODBC. Чтобы избежать неопределенно долгого ожидания, можно установить время, после которого диспетчер драйверов ODBC сгенерирует ошибку.

Name Имя объекта.

Password Возвращает пароль, используемый во время создания объекта rdoEnvironment.

UserName Возвращает или устанавливает имя

пользователя объекта rdoEnvironment.

Следующая коллекция объектов, которая входит в объект rdoEngine, называется rdoErrors и служит для обработки ошибок при работе с RDO.

Всякий раз, когда диспетчер ODBC пытается выполнить запрос RDO, может возникнуть ошибка. Подобные ошибки могут иметь различные причины и вызывать различные последствия для вашей программы, вплоть до полного прекращения процесса выполнения запроса или даже вашей процедуры или функции. Как только ошибки возникли, информация о них помещается в коллекцию rdoErrors. Далее появляется возможность исследовать каждый объект rdoError коллекции rdoErrors на предмет причины возникновения ошибки и выполнения дальнейших



действий. Visual Basic также создает перехватываемую ошибку во время возникновения ошибочных ситуаций. Поэтому имеет смысл использовать конструкцию

On Error Goto << метка >>

для обработки информации, содержащейся в объектах коллекции rdoError и для принятия последующих решений. Два свойства - rdoDefaultErrorTreshold и ErrorTreshold - позволяют понизить или повысить ограничения на ситуации, которые могут вызвать фатальные ошибки.

Добавим в предыдущий пример строчки, которые будут заниматься обработкой ошибок:

Function rdfInitialize() As Boolean

Const rServerDSN = ToAutostore

Const rServerUser = UID=sa;DATABASE=autostore

Dim errX As rdo.rdoError

Dim grdfEnv As rdo.rdoEnvironment

Dim 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

rdfInitializeExit:

DoCmd.Hourglass False

Exit Function rdfInitializeErr:

For Each errX In rdoEngine.Errors

MsgBox Ошибка & errX.Number & вызвана & errX.Source & : & errX.Description, vbCritical, rdfInitialize() Next errX

rdfInitialize = False Resume rdfInitializeExit End Function

Коллекция rdoErrors имеет два метода. Метод Clear служит для удаления всех объектов rdoError из коллекции. Метод Item предназначен для доступа к объектам rdoError по их индексу. Впрочем, следующие строчки эквивалентны:

myRdoError=rdoEngine.rdoErrors.Item(1) myRdoError=rdoEngine.rdoErrors(1)

Свойство Count возвращает количество объектов rdoError в коллекции. Следующая таблица описывает свойства объекта rdoError.

Свойство Описание

Description Возвращает строковое выражение, содержащее описание ошибки.

HelpContext Если в свойстве HelpFile указан файл помощи Microsoft Windows, свойство HelpContext используется для того, чтобы автоматически выводить раздел помощи, который он идентифицирует.



Set myrdEnv =rdoEngine.rdoEnvironment(0) Set myrdConn=myrdEnv.OpenConnection( Toautostore , Set myrdTable = myrdConn.rdoTables( account )

Последнюю строчку можно переписать следующим образом: Set myrdTable = myrdConn.rdoTableslaccount

rdDriverNoPrompt, False)

Если вы знаете порядковый номер объекта rdoTable такое обращение:

в коллекции rdoTables, то возможно и

Help-File Указывает полный путь к файлу помощи.

Source Возвращает строковое выражение. При возникновении ошибки во время операций ODBC объект rdoError добавляется в коллекцию rdoErrors. Если ошибка возникла внутри RDO, возвращаемое значение начинается с выражения MSRDO32 . Объектный класс, который явился инициатором ошибки, также может быть добавлен к значению свойства Source.

SQLRet- Возвращает код ошибки последней Code операции RDO. Значение имеет тип Long и может равняться одной из следующих констант:

rdSQLSuccess - операция завершилась успешно;

rdSQLSuccessWithInfo - операция завершилась успешно и доступна дополнительная информация; rdSQLNoDataFound - нет никаких доступных дополнительных данных; rdSQLError - ошибка, случившаяся во время выполнения операции; rdSQLInvalidHandle - предоставленный указатель указан неверно.

SQL-State Символьная строка, возвращаемая свойством SQLState, состоит из двухсимвольного значения класса, за которым следует трехсимвольное значение подкласса. Значение класса 01 указывает на предупреждение и сопровождается кодом, возвращаемым rdSQLSuccessWithInfo.

Следующим объектом в иерархии RDO является rdoConnection, который представляет собой физическое соединение с сервером. Объект rdoConnection имеет методы для работы с транзакциями, но в данном случае налицо явный пример полиморфизма, так как здесь диапазон действия этих методов ограничивается ODBC процессами, использующими указатель текущего соединения. То есть, если вы применяете параллельные транзакции, каждая их которых использует свое соединение или объект rdoConnection, то можете завершить каждую транзакцию отдельно, применяя методы CommitTrans каждого объекта по очереди. Если необходимо завершить все транзакции в текущем окружении, то используйте метод CommitTrans (или RollbackTrans) объекта rdoEnvironment.

С помощью объекта rdoConnection мы имеем доступ к трем объектам, находящимся на последних уровнях иерархии RDO. Объект rdoTable предоставляет таблицы и представления (View), хранящиеся в базе данных. Объект rdoTable позволяет нам узнать много полезной информации о таблице или представлении на сервере. С его помощью можно получить сведения о типе таблицы, количестве записей и возможности модификацииь ее данных, что является достаточно важным свойством, так как представления на сервере очень часто не позволяют изменять содержимое строк и колонок, которые они порождают. В то же время для объекта rdoTable нет методов для перемещения по записям, поэтому достаточно затруднительно вывести информацию о записи, которая не является первой. Объекты rdoTable входят в коллекцию rdoTables. При этом мы можем обращаться к любому ее объекту по его имени, то есть следующим образом:



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

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