Следующий фрагмент кода устанавливает указатель текущей записи в положение, предварительно сохраненное с использованием закладки MyBookmark:
Dim MyBookmark As Variant
MyBookmark = Data1.Recordset.Bookmark
Data1.Recordset.MoveLast
Data1.Recordset.Bookmark=MyBookmark.
Ранее было показано, как осуществлять перемещение по базе данных для просмотра записей. Однако большинству пользователей необходимо иметь возможность не только просматривать запись за записью в базе данных, но и осуществлять поиск записи, отвечающий какому-либо условию. Чтобы найти определенную запись, можно воспользоваться методами Find для объектов — наборов записей типа dynaset и snapshot и методом Seek — для наборов записей типа table.
Методы
Метод
Метод
Метод
Метод
При использовании любого из Find методов необходимо определить условие поиска. Обычно условием поиска является равенство имени поля какому-нибудь значению. Например, следующий фрагмент кода показывает, как найти в таблице Titles первую запись, в которой поле AU ID равно пяти:
Data1.Recordset.FindFirst "AU_ID=5".
Построим простое приложение для просмотра таблицы Titles базы данных BIBLIО2.MDB с возможностью простого поиска записи. Для этого:
1. Создайте новый проект и разместите на форме объект Data, объект DBGrid и две командные кнопки, как показано на рис. 5.1.
Рис. 5.1
.2. Установите следующие свойства для объектов Data и DBGrid:
Data1.DatabaseName=" C: \VB5\BIBLI02.MDB"
Data1.RecordSource=Titles
DBGrid1.DataSource=Data1.
3. Как обычно, предусмотрим возможность завершения работы приложения, определив обработку нажатия кнопки “Выход” следующим образом:
Private Sub Command2_Click
Unload Me
End Sub.
4. Для загрузки и вывода на экран окна поиска записи добавьте в процедуру обработки нажатия кнопки “Поиск” следующую строку:
Private Sub Commandl_Click
Form2.Show
End Sub
5. Добавьте в проект новую форму и разместите на ней текстовое окно, метку и две командные кнопки, как показано на рис. 5.2.
Рис. 5.2
.6. Добавьте в процедуру обработки нажатия кнопки “Поиск” следующий код:
Private Sub Command1_Click
Dim strCompare As String
strCompare = "[Year Published] = " + Text1.Text
Form1!Data1.Recordset.MoveFirst
Form1!Data1.Recordset.FindFirst strCompare
Unload Me
End Sub.
Строковая переменная strCompare определяет условие поиска. Перед использованием метода FindFirst указатель текущей записи устанавливается на первую запись в наборе. Таким образом поиск осуществляется с первой записи в наборе.
В данном случае поиск предусмотрен только по году издания книги. При необходимости вы можете сами по своему усмотрению определить требуемый критерий поиска.
7. Для отмены поиска необходимо выгрузить окно в процедуре обработки нажатия кнопки “Отмена”:
Private Sub Command2_Click
Unload Me
End Sub.
8. Запустите приложение.
Метод Seek используется для поиска только в наборе записей типа Table. При использовании метода Seek процессор баз данных использует текущий индекс таблицы, который определен свойством Index объекта Recordset. После выполнения этого метода текущей записью в наборе становится найденная запись.
Метод Seek имеет следующий синтаксис:
Recordset.Seek comp, key1, key2.
Первый из аргументов — comp является строкой, которая определяет тип сравнения. В следующей таблице представлены типы сравнения, которые используются с методом Seek.
Строка • Описание
"="
• Равно определенной величине.">="
• Больше или равно определенной величине.">"
• Больше определенной величины."<="
• Меньше или равно определенной величине."<"
• Меньше определенной величины.Аргументы keyn представляют собой последовательность значений, с которыми Visual Basic производит сравнение содержимого записей таблицы.
В следующем примере метод Seek используется для поиска записи, содержащей величину 5 в поле
AUID, которое является уникальным индексным полем.
Dim MyTable As Recordset
Set MyTable = Data1.Recordset
MyTable.Index = "AU_ID"
MyTable.Seek "=",5
Стоит еще раз подчеркнуть, что перед использованием метода Seek необходимо установить текущий индекс с использованием свойства Index. В противном случае обращение к этому методу приведет к ошибке.