Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Макросы.doc
Скачиваний:
28
Добавлен:
21.11.2018
Размер:
16.91 Mб
Скачать

Вопросы и ответы

Вопрос. Только ли с базами данных Access можно работать посредством ADO?

Ответ. Нет, с помощью ADO можно работать со многими типами баз данных, включая SQL Server и FoxPro.

Вопрос. Можно ли процесс импортирования данных посредством ADO записать с помощью макроса?

Ответ. Нет, так как запрос на выборку данных здесь основан на использовании специальных команд, которые невозможно выполнить с помощью средств Excel.

Практикум

С помощью тестов и упражнений вы проверите, насколько хорошо усвоили изложенный материал. Ответы на вопросы смотрите в Приложении.

Тесты

  1. Какой аргумент метода Open используется для указания объекта, из которого извлекаются данные?

  2. Истинно или ложно следующее утверждение: для организации доступа к внешним данным с помощью ADO достаточно создать соответствующую процедуру?

  3. Какой объект сохраняет информацию о проблемах, возникших при использовании ADO?

  4. Истинно или ложно следующее утверждение: с помощью ADO можно получить доступ только к базам данных Microsoft Access?

  5. Какой объект представляет массив данных, извлеченный из внешнего источника с помощью ADO?

  6. Как прервать соединение с внешним источником данных?

  7. Назовите четыре этапа работы с ADO.

Упражнение

Создайте экранную форму с тремя переключателями Заказы, Поставщики, Товары (соответствуют таблицам в базе данных Борей). Напишите процедуру, которая импортировала бы данные из таблицы базы данных Борей в соответствии с выбранным переключателем.

22-й час. Еще об ADO

В этом часе мы углубим свои знания о технологии ADO. Основное внимание будет уделено объекту Recordset (Набор записей), его свойствам и методам. Используя эти свойства и методы, мы создадим экранную форму, отображающую данные из внешнего источника данных.

В этом часе будут рассмотрены следующие вопросы.

  • Извлечение полей из набора импортируемых данных и вставка их в экранную форму.

  • Средства перемещения по записям в экранной форме.

  • Редактирование извлеченного набора записей.

Вставка полей в экранную форму

Вместо непосредственной вставки импортируемых данных в рабочий лист их можно просмотреть с помощью экранной формы. Это предоставляет пользователю простой дружественный интерфейс для работы с данными.

Для создания экранной формы выполните следующие действия.

  1. В редакторе Visual Basic вставьте экранную форму в новую рабочую книгу.

  2. Используя рис. 22.1 как образец, добавьте в экранную форму элементыуправления.

  3. Установите следующие свойства элементов управления:

    Элемент управления

    Название

    Свойство Name

    Другие свойства

    Поле ввода

    Код товара

    txtProductID

     

    Поле ввода

    Марка

    txtProductName

     

    Поле ввода

    Цена

    txtUnitPrice

     

    Поле ввода

    Есть на складе

    fetUnitsInStock

     

    Командная кнопка

    ОК

    cmdOK

    Default=True

  4. Задайте для формы имя frmProductInfo и заголовок Информация о товаре.

Рис. 22.1. Экранная форма, которая будет отображать данные из базы данных Access Борей

Далее необходимо установить ссылку на библиотеку Microsoft ActiveX Data Objects 2.0. выполнив команду Tools > References (Сервис > Ссылки). Теперь пришло время создать первую процедуру. Эта процедура, UserForm_Activate, будет выполняться при открытии формы. Код процедуры приведен в листинге 22.1.

Листинг 22.1. Процедура UserForm_Activate

1: PrivateSubUserForm_Activate()

2:  cnnProduct.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data _

3:   Source=C:\Program Files\Microsoft _

     Office\Office\Samples\Борей.mdb"

4:

5:  rstProduct.Open _

6:   "Select КодТовара, Марка, Цена, НаСкладе from Товары", _

      cnnProduct, adOpenKeyset, adLockOptimistic, adCmdText

7:  txtProductID.Text - rstProduct.Fields(0).Value

8:  txtProductName.Text - rstProduct.Fields(1).Value

9:  txtUnitPrice.Text = rstProduct.Fields(2).Value

10:  txtUnitsInStock.Text - rstProduct.Fields(3}.Value

11:

12: End Sub

Процедура начинается с установления соединения с базой данных Борей. Далее применяется оператор Select (Выбор) для создания объекта Recordset, т.е. набора извлекаемых данных. Значения полей затем используются для задания значения свойству Text (Текст) полей ввода экранной формы. Отметим, что поля индексируются целыми числами, начиная с нуля.

В окне кода в область общих объявлений надо также поместить следующие две строки:

Dim cnnProduct As New ADODB.Connection

Dim rstProduct As New ADODB.Recordset

Двойным щелчком на командной кнопке OK откройте процедуру cmdOK_click и введите в нее код:

frmProductInfo.Hide

cnnProduct.Close

Выполните экранную форму. Вы должны увидеть в полях экранной формы значения первой записи из набора записей, извлекаемых из базы данных. Щелкните на кнопке ОК для закрытия формы. Теперь надо научиться переходить от одной записи к другой в наборе извлекаемых записей.