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

Добавление средства поиска

Последнее средство, которое мы добавим в экранную форму, - средство поиска записей по значениям поля КодТовара. Для организации такого средства используется метод Find (Найти) объекта Recordset. Этот метод всегда начинается от текущей записи. Поэтому сначала с помощью свойства Bookmark (Закладка) объекта Recordset сохраним местоположение текущей записи, а затем выполним метод MoveFirst для перехода к первой записи, откуда начнется поиск. Местоположение текущей записи необходимо на случай неудачного окончания поиска, тогда в форме восстанавливается эта запись.

Вставьте в экранную форму под кнопкой Правка еще одну командную кнопку. Назовите ее Поиск, а имя задайте cmdFind. Введите следующий код для этой кнопки.

Листинг 22.5. Процедура cmdFind_Click

1: Private Sub cmdFind_Click()

2:  Dim varBookmark

3:  varBookmark = rstProduct.Bookmark

4:  Dim strLookup As String, strFind As String

5:  strLookup = InputBox("Введите код товара", _

     "Поиск записи по коду товара")

6:  If strLookup= "" Then Exit Sub

7:  rstProduct.MoveFirst

8:  strFind = "[КодТовара] = '" & strLookup & "'"

9:  rstProduct.Find strFind, 0, adSearchForward, _

     rstProduct.Bookmark

10:  If rstProduct.EOF Then

11:   MsgBox "Товар не найден", vbInformation, "Поиск завершен"

12:   rstProduct.Bookmark = varBookmark

13:   Exit Sub

14:  End If

15:  Заполнение_полей

16:

17: End Sub

Выполните экранную форму. Щелкните на кнопке Поиск и в окне Поиск записи по коду товара введите число 17. Щелкните на кнопке ОК, и вы увидите запись, которую искали.

Резюме

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

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

Вопрос. Можно ли использовать объекты Database (База данных) и Table (Таблица) вместо объекта Recordset?

Ответ. Если в окне просмотра объектов Object Browser вы просмотрите библиотеку ADODB, то не найдете в ней объектов Database и Table. В рамках технологии ADO все манипуляции с данными осуществляются посредством объекта Recordset.

Вопрос. Является ли технологии ADO наилучшим выбором для организации работы с внешними тайными?

Ответ. Это зависит от того, чего вы добиваетесь. Если вы хотите с минимальными затратами времени и программного кода создать процедуру, которая только импортирует данные из внешнего источника, то в этой ситуации предпочтительнее использовать MS Query или сводные таблицы. Если в ваши планы входит не просто импортирование данных, а работа с данными в самом источнике данных (поиск и редактирование данных с последующим сохранением в исходном наборе данных), то вам необходимо использовать ODBC и ADO. Выбор остается за вами, и помните, что из любой ситуации есть по крайней мере два выхода.