Читаем Интернет-журнал "Домашняя лаборатория", 2007 №4 полностью

Следующий фрагмент кода устанавливает указатель текущей записи в положение, предварительно сохраненное с использованием закладки MyBookmark:

Dim MyBookmark As Variant

MyBookmark = Data1.Recordset.Bookmark

Data1.Recordset.MoveLast

Data1.Recordset.Bookmark=MyBookmark.



Применение Find-методов для поиска записи


Ранее было показано, как осуществлять перемещение по базе данных для просмотра записей. Однако большинству пользователей необходимо иметь возможность не только просматривать запись за записью в базе данных, но и осуществлять поиск записи, отвечающий какому-либо условию. Чтобы найти определенную запись, можно воспользоваться методами Find для объектов — наборов записей типа dynaset и snapshot и методом Seek — для наборов записей типа table.

Методы Find используются для поиска в наборах записей типа dynaset и snapshot. В Visual Basic поддерживается четыре метода Find:

Метод FindFirst осуществляет поиск первой записи, удовлетворяющей условию.

Метод FindLast осуществляет поиск последней записи, удовлетворяющей условию.

Метод FindNext осуществляет поиск следующей записи, удовлетворяющей условию.

Метод FindPrevious осуществляет поиск предыдущей записи, удовлетворяющей условию.

При использовании любого из 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 для поиска записи


Метод 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. В противном случае обращение к этому методу приведет к ошибке.



Как узнать, можно ли изменять базу данных


Перейти на страницу:

Похожие книги

Занимательная электроника
Занимательная электроника

Скрасить свой досуг можно разными способами. Электронные устройства, созданные своими руками, питающиеся от «безопасного» напряжения 9-15 Вольт, не только успешно замещают китайские «гаджеты», но и позволяют культивировать собственную творческую жилку, преобразовывая свободное время досуга в весьма полезное развивающее занятие.Перед вами хорошо структурированная книга, разделенная на три тематические главы самого «свежего» радиолюбительского опыта, позволяющая нешаблонно решить задачи, с которыми мы ежедневно сталкиваемся в быту. Особое, отличительное назначение книги в описании проверенных, именно практических, легко повторяемых схем и устройств; в каждой главе имеется специальный раздел – описание вариантов практического применения предложенных к повторению разработок.Книга для любителей радио всех возрастов, лиц любых профессий, склонных к занятиям техническим творчеством и широкого круга читателей, ценящих свой досуг и новые перспективные идеи его заполнения. Эта книга – для вас.

Андрей Петрович Кашкаров

Сделай сам / Хобби и ремесла / Дом и досуг