Намного проще было задать вопрос гуглу.
Но раз в гугле забанили - помогу:
14.5. Объект Recordset
Объект Recordset представляет набор данных, созданный на основе существующей таблицы, запроса или строки SQL-оператора, возвращающего записи. Использование возможностей объекта Recordset является в некотором смысле альтернативой использованию запросов на изменение (action query). Применяя возможности, предоставляемые объектом Recordset, можно производить достаточно сложные манипуляции с данными, Которые невозможно проделать при помощи одного или даже нескольких хитрых SQL-запросов. Однако, принимая решение о выборе метода манипуляции данными, следует учесть, что код на Visual Basic выполняется намного медленней, чем запросы. Разница в скорости выполнения тем больше, чем больше размер обрабатываемого набора данных. Причем, речь идет не миллисекундной разнице в выполнении, а о десятках минут.
Объект Recordset имеет большое количество методов. В этом разделе перечислены наиболее интересные из них.
Absolute Position. С помощью этого свойства вы можете прочитать или установить номер позиции текущей записи. Например, вы можете сохранить номер текущей записи, затем перейти в другую позицию, проделать какие-либо манипуляции и вновь вернуться к первоначальному положению в наборе данных.
BOF (Begin Of File) и EOF (End Of File). Эти свойства информируют о достижении начала и конца набора данных соответственно. Свойство ВОF получает значение True (Истина), если достигнуто начало набора данных (точнее, указатель перемещается за первую запись), а свойство воспринимает значение True (Истина), когда достигается конец набора данных (указатель текущей записи перемещается за последнюю запись). В пустом наборе данных оба свойства одновременно имеют значение True (Истина). Основное предназначение свойств BOF и EOF — организация итерации по записям набора данных. Ниже приведен пример кода, в котором используется свойство ЕОF для итерации по всем записям таблицы Типы в направлении от первой записи к последней.
Bookmark. Свойство позволяет поставить закладку на текущую запись, чтобы можно было к ней быстро вернуться. Перед использованием этого свойства следует проверить значение свойства Bookmarkable. Если это свойство принимает значение False (Ложь), то набор данных не позволяет пользоваться закладками.
NoMatch. Это свойство используется после применения методов поиска записей Seek и Find. Если нужная запись найдена не была, свойство имеет значение True (Истина).
RecordCount. Свойство возвращает количество записей в наборе данных. Если вы создали объект Recordset динамического типа (dbOpenDynaset), то свойство RecordCount может вернуть меньше записей, чем набор данных реально содержит. Чтобы гарантированно получить точное число записей, следует перейти сначала в конец набора данных, а потом вернуться к началу. Примерно так, как показано ниже:
Однако, если набор записей небольшой (порядка сотен записей), то это делать необязательно.
EditMode. Свойство указывает на статус редактирования записей набора данных. Возможны следующие значения: dbEditNone (записи в данный момент не редактируются), DbEditlnProgress (был использован метод Edit, и текущая запись была скопирована в буфер для редактирования), dbEditAdd (был использован метод AddNew, и в буфере находится новая запись).
Методы объекта Recordset позволяют манипулировать данными, а также осуществлять поиск, навигацию по набору данных и большое количество других полезных действий. Некоторые из этих методов описаны ниже.
AddNew. Добавляет новую запись в набор данных. Каждому методу AddNew должен соответствовать метод Update. Ниже приведен пример добавления новой записи в таблицу Типы.
Close. Освобождает переменную типа Recordset и удаляет соответствующий объект из коллекции. Не забывайте применять этот метод, когда набор данных вам уже не нужен.
Delete. Удаляет текущую запись из набора данных.
Edit. Переводит набор в состояние редактирования. Текущая запись копируется в буфер, предоставляя тем самым возможность отредактировать значения составляющих ее полей. Для того чтобы сделанные вами изменения были отображены в базовых таблицах, необходимо применить метод Update до перехода на другую запись или до закрытия набора данных.
Методы FmdFirst, FindNext, FindLast и FmdPrevious. Эти методы используются для поиска в наборе статического (snapshot) или динамического (dynaset) типов записей, удовлетворяющих заданному критерию. Формат запуска метода FmdFirst следующий:
MyRec.FmdFirst Критерий
Здесь MyRec — предварительно инициализированная переменная типа Recordset, а Критерий — критерий поиска (как в предложении WHERE SQL-оператора, но без ключевого слова WHERE). Для запуска остальных методов этой группы используется аналогичный формат запуска.
Для поиска первой записи, удовлетворяющей критерию, применяется метод FmdFirst, а если таких записей больше одной, то можно перейти к ним при помощи остальных методов. Если требуемая запись найдена, то она становится активной (текущей), а свойство NoMatch принимает значение False (Ложь).
Ниже приведен пример применения метода FindFirst и свойства NoMatch.
Для организации поиска в наборах данных табличного типа (dbOpenTable) применяется метод Seek.
Методы MoveFirst, MoveLast, MoveNext, MovePrevious. Методы этой группы осуществляют переход соответственно к первой, последней, следующей и предыдущей записи набора записей (объекта Recordset). Методы группы Move позволяют также организовать тотальный поиск по всему набору записей или по некоторой его части.
Если вы применяете метод MovePrevious, в то время как активной является первая запись набора, то свойство ВОF приобретает значение True (Истина), а текущая запись становится неопределенной (то есть в наборе отсутствует текущая запись). Повторное применение этого метода вызовет ошибку, а значением свойства ВОF останется True (Истина). То же замечание можно сделать относительно метода MoveNext и свойства ЕОF для случая, когда текущей является последняя запись набора.
Следующая глава посвящена обсуждению объектов, составляющих новую перспективную модель доступа к данным DAO (ActiveX Data Objects).