Комментарии к HelloData
Приложение HelloData выполняет основные операции типичного приложения ADO: получение, изучение, редактирование и обновление данных. При запуске приложения нажмите первую кнопку " Получить данные". Будет запущена подзадавка GetData .
GetData
GetData помещает допустимый строка подключения в переменную уровня модуля, m_sConnStr. Дополнительные сведения о строка подключения см. в разделе "Создание строки подключения".
Назначьте обработчик ошибок с помощью инструкции OnError Visual Basic. Дополнительные сведения об обработке ошибок в ADO см. в разделе "Обработка ошибок". Создается новый объект Connection, и свойству CursorLocation присвоено значение adUseClient, так как в примере HelloData создается отключенный набор записей. Это означает, что как только данные извлекаются из источника данных, физическое подключение к источнику данных нарушено, но вы по-прежнему можете работать с данными, кэшируемыми локально в объекте Recordset .
После открытия подключения назначьте строку SQL переменной (sSQL). Затем создайте экземпляр нового объекта Recordset. m_oRecordset1
В следующей строке кода откройте набор записей по существующему подключению, передавая в sSQL
качестве источника набора записей. Вы помогаете ADO определить, что строка SQL, переданная в качестве источника для набора записей, является текстовым определением команды путем передачи adCmdText в окончательном аргументе методу Recordset Open . Эта строка также задает LockType и CursorType, связанные с набором записей.
Следующая строка кода задает свойство MarshalOptions равным adMarshalModifiedOnly. MarshalOptions указывает, какие записи следует маршалировать на средний уровень (или веб-сервер). Дополнительные сведения о маршалинге см. в документации COM. При использовании adMarshalModifiedOnly с клиентским курсором (CursorLocation = adUseClient), только записи, измененные на клиенте, записываются обратно на средний уровень. Задание marshalOptions для adMarshalModifiedOnly может повысить производительность, так как меньше строк маршалируются.
Затем отключите набор записей, задав его свойство ActiveConnection равным Nothing. Дополнительные сведения см. в разделе "Отключение и повторное подключение набора записей" в разделе "Обновление и сохранение данных".
Закройте подключение к источнику данных и уничтожите существующий объект Connection . В этом выпуске освобождаются ресурсы, которые он использовал.
Последним шагом является установка набора записей в качестве источника данных для элемента управления Microsoft DataGrid в форме, чтобы можно было легко отображать данные из набора записей в форме.
Нажмите вторую кнопку, проверьте данные. Это запускает подзадавку ExamineData .
Проверка данных
ExamineData использует различные методы и свойства объекта Recordset для отображения сведений о данных в наборе записей. Он сообщает количество записей с помощью свойства RecordCount . Он выполняет цикл по набору записей и выводит значение свойства AbsolutePosition в текстовом поле отображения в форме. Кроме того, во время цикла значение свойства "Закладка" для третьей записи помещается в переменную варианта vBookmark для последующего использования.
Подпрограмма переходит непосредственно к третьей записи с помощью переменной закладки, сохраненной ранее. Подпрограмма вызывает подпрограмму WalkFields, которая выполняет циклы по коллекции "Поля" набора записей и отображает сведения о каждом поле в коллекции.
Наконец, ExamineData использует свойство Filter набора записей для отображения только для этих записей с идентификатором CategoryId, равным 2. Результат применения этого фильтра сразу же отображается в сетке отображения в форме.
Дополнительные сведения о функциональных возможностях, показанных в подпрограмме ExamineData, см. в разделе "Анализ данных".
Затем нажмите третью кнопку " Изменить данные". Будет запущена подзадавка EditData .
EditData
Когда код входит в подзакутин EditData , набор записей по-прежнему фильтруется на CategoryId равным 2, чтобы только те элементы, которые соответствуют критериям фильтра, были видимы. Он сначала циклит по набору записей и увеличивает цену каждого видимого элемента в наборе записей на 10 процентов. Значение поля Price изменяется путем задания свойства Value для этого поля равным новой допустимой сумме.
Помните, что набор записей отключен от источника данных. Изменения, внесенные в EditData , вносятся только в локальную кэшированную копию данных. Дополнительные сведения см. в разделе "Редактирование данных".
Изменения не будут вноситься в источник данных, пока не нажмите четвертую кнопку "Обновить данные". При этом будет запущена подзадавка UpdateData .
UpdateData
UpdateData сначала удаляет фильтр, примененный к набору записей. Код удаляет и сбрасывает m_oRecordset1
код в виде источника данных для Microsoft Bound DataGrid в форме, чтобы нефильтрованный набор записей отображался в сетке.
Затем код проверяет, можно ли перемещаться назад в наборе записей с помощью метода Поддержки с аргументом adMovePrevious.
Подпрограмма перемещается к первой записи с помощью метода MoveFirst и отображает исходные и текущие значения поля с помощью свойств OriginalValue и Value объекта Field. Эти свойства вместе со свойством UnderlyingValue (не используются здесь), рассматриваются в разделе "Обновление и сохранение данных".
Затем создается новый объект Connection и используется для повторного создания подключения к источнику данных. Повторно подключите набор записей к источнику данных, задав новое подключение в качестве ActiveConnection для набора записей. Чтобы отправить обновления на сервер, код вызывает UpdateBatch в наборе Записей.
Если пакетное обновление успешно выполнено, переменная m_flgPriceUpdated
флага уровня модуля имеет значение True. Это напомнит вам позже, чтобы очистить все изменения, внесенные в базу данных.
Наконец, код возвращается к первой записи в наборе записей и отображает исходные и текущие значения. Значения совпадают после вызова UpdateBatch.
Подробные сведения об обновлении данных, включая действия при изменении данных на сервере во время отключения набора записей, см. в разделе "Обновление и сохранение данных".
Form_Unload
Подпрограмма Form_Unload важна по нескольким причинам. Во-первых, так как это пример приложения, Form_Unload очищает изменения, внесенные в базу данных до выхода приложения. Во-вторых, в коде показано, как можно выполнить команду непосредственно из открытого объекта Connection с помощью метода Execute . Наконец, в нем показан пример выполнения запроса, отличного от строк (запроса UPDATE) к источнику данных.