Урок 5
Элемент управления Data и объекты доступа к данным
Использование объекта управления данными позволяет быстро создавать простые приложения для работы с базами данных практически без написания кода, только при помощи соответствующих установок его свойств и применения его методов. Для отображения информации на экранной форме используются связанные элементы управления. Однако, для повышения функциональности разрабатываемого приложения вам, скорее всего, придется все-таки писать код. К счастью, Visual Basic 5 обеспечивает очень широкие возможности для программирования операций с данными. В следующих разделах этой главы описана лишь небольшая часть из чрезвычайно широкого сервиса, предоставляемого разработчику системой Visual Basic 5. Более полно и подробно использование в приложениях объектов доступа к данным изложено в последующих уроках.
Ранее было показано, как перемещаться от записи к записи в базе данных с использованием кнопок со стрелками на объекте управления данными. В этом разделе обсуждаются способы перемещения по базе данных с использование методов объекта Recordset, созданного объектом Data, то есть с помощью программного кода.
Следующая таблица показывает, вызов какого из методов объекта Recordset эквивалентен нажатию кнопки со стрелкой на объекте управления данными.
Куда переместить указатель текущей записи ∙ Использование метода Move
К первой записи ∙ Data1.Recordset.MoveFirst
К предыдущей записи ∙ Data1.Recordset.MovePrevious
К следующей записи ∙ Data1.Recordset.MoveNext
К последней записи ∙ Data1.Recordset.MoveLast
При разработке приложений часто возникает необходимость перемещения к первой или последней записи в наборе записей. Например, если вам требуется запрограммировать процедуру поиска записи, содержащей какое-либо значение, вполне естественным условием будет начинать поиск с первой строки.
Для перемещения указателя текущей записи на первую или последнюю записи используются методы MoveFirst и MoveLast:
Data1.Recordset.MoveFirst
Data1.Recordset.MoveLast.
Если текущий указатель позиционирован на первой или последней записи в наборе записей, то дальнейшее перемещение назад и вперед, соответственно, устанавливает свойства объекта Recordset BOF и EOF в True. Если BOFAction и EOFAction свойства объекта управления данными установлены в единицу, то в этом случае указатель текущей записи становится недопустимым и связанные органы управления очищаются. При использовании метода Move для перемещения указателя за пределы файла Visual Basic генерирует ошибку.
Пусть требуется последовательно проделать какие-либо операции с записями от текущей до последней включительно. В этом случае вы можете использовать следующий фрагмент кода для безопасного перемещения от любой записи в базе данных к последней:
Do While Data1.Recordset.EOF = False
Data1.Recordset.MoveNext код для работы с текущей записью
Loop
Data1.Recordset.MoveLast
В конце этого цикла указатель текущей записи становится недопустимым и требуется использовать метод MoveLast, чтобы его переустановить на последнюю запись в наборе.
Методы MoveNext и MovePrevious перемещают указатель на следующую и предыдущую записи в наборе записей. Обычно эти методы используются для последовательного просмотра содержимого полей базы данных.
Следующий фрагмент кода загружает два списка и заполняет их названиями книг и годами их публикации из таблицы TITLES базы данных BIBLIO.MDB.
Data1.DatabaseName="C: \VB5\BIBLIO.MDB"
Data1.RecordSource="Titles"
Data1.Refresh
Do Until Data1.Recordset.EOF Entry = Data1.Recordset("Title")
List1Addltem Entry
Entry = Data1.Recordset("Year Published")
List2.AddItem Entry
Data1.Recordset.MoveNext
Loop
Вы также можете применить Move метод с целочисленным аргументом для перемещения указателя текущей записи на определенное количество строк вперед или назад (в зависимости от знака аргумента) от текущего положения указателя или от положения, сохраненного с использованием закладки. Следующий пример показывает, как переместить указатель текущей записи на пять строк вперед, начиная от положения, определенного свойством MyBookmark:
Data1.Recordset.Move 5, MyBookmark.