Поделиться через


Сведения о HelloData

Область применения: Access 2013, Office 2013

Приложение HelloData выполняет основные операции типичного приложения ADO: получение, изучение, редактирование и обновление данных. При запуске приложения нажмите первую кнопку Получить данные. При этом будет запущена подпрограмма GetData().

GetData

GetData помещает допустимую строку подключения в переменную уровня модуля , m_sConnStr. Дополнительные сведения о строках подключения см. в разделе Создание строки подключения.

Назначьте обработчик ошибок с помощью оператора OnError Visual Basic. Дополнительные сведения об обработке ошибок в ADO см. в разделе Глава 6. Обработка ошибок. Создается новый объект Connection , а свойству CursorLocation присвоено значение adUseClient , так как в примере HelloData создается отключенный набор записей. Это означает, что после получения данных из источника данных физическое соединение с источником данных прерывается, но вы по-прежнему можете работать с данными, кэшируемыми локально в объекте Recordset .

После открытия подключения назначьте строку SQL переменной (sSQL). Затем создайте экземпляр нового объекта Recordset , m_oRecordset1 . В следующей строке кода откройте набор записей через существующее подключение, передав . В следующей строке кода откройте набор записей через существующее подключение, передав sSQL в качестве источника набора записей. Вы помогаете ADO определить, что строка SQL, переданная в качестве источника для Набора записей , является текстовым определением команды, передавая adCmdText в последнем аргументе методу RecordsetOpen . Эта строка также задает LockType и CursorType , связанные с набором записей.

Следующая строка кода задает свойство MarshalOptions , равное adMarshalModifiedOnly. MarshalOptions указывает, какие записи следует маршалировать на средний уровень (или веб-сервер). Дополнительные сведения о маршалинге см. в документации по COM. При использовании adMarshalModifiedOnly с курсором на стороне клиента (CursorLocation = adUseClient) только записи, измененные на клиенте, записываются обратно на средний уровень. Установка параметра MarshalOptions в значение adMarshalModifiedOnly может повысить производительность, так как маршалируется меньше строк.

Затем отключите набор записей , установив для его свойства ActiveConnection значение Nothing. Дополнительные сведения см. в разделе Отключение и повторное подключение набора записей в главе 5. Обновление и сохранение данных.

Закройте подключение к источнику данных и уничтожите существующий объект Connection , тем самым освободив потребленные ресурсы.

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

Нажмите вторую кнопку Проверить данные. При этом выполняется подпрограмма ExamineData.

ExamineData

ExamineData использует различные методы и свойства объекта Recordset для отображения сведений о данных в наборе записей. Он сообщает количество записей с помощью свойства RecordCount . Он циклически просматривает набор записей и выводит значение свойства AbsolutePosition в текстовом поле отображения на форме. Кроме того, в цикле значение свойства Bookmark для третьей записи помещается в переменную variant vBookmark для последующего использования.

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

Наконец, ExamineData использует свойство Filterнабора записей для отображения только тех записей с идентификатором CategoryId, равным 2. Результат применения этого фильтра сразу же отображается в сетке отображения формы.

Дополнительные сведения о функциональных возможностях, показанных в подпрограмме ExamineData, см. в разделе Глава 3. Изучение данных.

Затем нажмите третью кнопку Изменить данные. При этом будет запущена подпрограмма EditData.

EditData

Когда код входит в подпрограмму EditData, набор записей по-прежнему фильтруется по categoryId, равным 2, поэтому отображаются только те элементы, которые соответствуют условиям фильтра. Сначала он циклически просматривает набор записей и увеличивает цену каждого видимого элемента в наборе записей на 10 процентов. Значение поля Цена изменяется путем задания свойства Value для этого поля, равного новой допустимой сумме.

Помните, что набор записей отключен от источника данных. Изменения, внесенные в EditData, вносятся только в локально кэшированную копию данных. Дополнительные сведения см. в разделе Глава 4. Редактирование данных.

Изменения не будут вноситься в источник данных, пока вы не нажмете четвертую кнопку Обновить данные. Будет запущена подпрограмма UpdateData.

UpdateData

UpdateData сначала удаляет фильтр, примененный к набору записей. Код удаляет и сбрасывает значение DataSource для Microsoft Bound DataGrid в форме, чтобы в сетке отображался нефильтрованный набор записей .

Затем код проверяет, можно ли перемещаться назад в наборе записей с помощью метода Supports с аргументом adMovePrevious .

Подпрограмма перемещается к первой записи с помощью метода MoveFirst и отображает исходные и текущие значения поля с помощью свойств OriginalValue и Value объекта Field . Эти свойства, а также свойство UnderlyingValue (не используемое здесь) рассматриваются в главе 5. Обновление и сохранение данных.

Затем создается новый объект Connection , который используется для восстановления подключения к источнику данных. Вы повторно подключите набор записей к источнику данных, задав новое подключениекак ActiveConnection для набора записей. Чтобы отправить обновления на сервер, код вызывает UpdateBatch в наборе записей.

Если пакетное обновление выполнено успешно, переменная флага уровня модуля имеет значение True. Это напомнит вам позже, чтобы очистить все изменения, внесенные в базу данных.

Наконец, код возвращается к первой записи в наборе записей и отображает исходные и текущие значения. Значения совпадают после вызова UpdateBatch.

Дополнительные сведения об обновлении данных, включая действия при изменении данных на сервере при отключении набора записей , см. в разделе Глава 5. Обновление и сохранение данных.

Form_Unload

Подпрограмма Form_Unload важна по нескольким причинам. Во-первых, так как это пример приложения, Form_Unload очищает изменения, внесенные в базу данных, прежде чем приложение завершит работу. Во-вторых, в коде показано, как можно выполнить команду непосредственно из открытого объекта Connection с помощью метода Execute . Наконец, в нем показан пример выполнения запроса, не возвращающего строки (запрос UPDATE) к источнику данных.