Для перемещения по набору записей также можно использовать такие свойства объекта Recordset, как AbsolutePosition и PercentPosition.
Использование закладки (bookmark) позволяет сначала сохранить указатель на текущую запись и затем, из любого места базы данных непосредственно позиционировать его на этой записи. Свойство Bookmark объекта Recordset содержит указатель на запись. Установкой свойства Bookmark, равному значению сохраненного ранее указателя, вы можете прямо позиционировать указатель на требуемую запись.
Следующий фрагмент кода устанавливает указатель текущей записи в положение, предварительно сохраненное с использованием закладки 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.