Набор записей. Прокрутка (ODBC)
Этот раздел относится к классам ODBC библиотеки MFC.
После открытия набора записей необходимо получить доступ к записям для отображения значений, выполнения вычислений, создания отчетов и т. д. Прокрутка позволяет перемещаться из записи в запись в наборе записей.
В этом разделе рассматриваются следующие вопросы.
Прокрутка из одной записи в другую
Класс CRecordset
предоставляет функции-члены Move
для прокрутки в наборе записей. Эти функции перемещают текущую запись по наборам строк. Если вы реализовали массовое получение строк, Move
операция переместит набор записей по размеру набора строк. Если вы не реализовали массовое получение строк, вызов Move
функции переместит набор записей по одной записи каждый раз. Дополнительные сведения о выборке массовых строк см. в разделе Recordseting Records: Получение записей в пакетной службе (ODBC).
Примечание.
При перемещении по набору записей удаленные записи могут не пропускаться. Дополнительные сведения см. в функции-члене IsDeleted .
Move
Помимо функций, функции-члены предоставляют функции-члены для проверки того, CRecordset
прокрутили ли вы прокрутили после конца или перед началом набора записей.
Чтобы определить, возможна ли прокрутка в наборе записей, вызовите функцию-член CanScroll
.
Прокрутка
Переадресация одной записи или одного набора строк: вызовите функцию-член MoveNext .
Обратная запись или один набор строк: вызовите функцию-член MovePrev .
Для первой записи в наборе записей вызовите функцию-член MoveFirst .
К последней записи в наборе записей или к последнему набору строк: вызовите функцию-член MoveLast .
N записи относительно текущей позиции: вызовите функцию элемента Move .
Проверка окончания или начала набора записей
Прокрутили ли вы последнюю запись? Вызовите функцию-член IsEOF .
Прокрутили ли вы впереди первую запись (двигаясь назад)? Вызовите функцию-член IsBOF .
В следующем примере кода используется IsBOF
и IsEOF
определяется ограничения набора записей при прокрутке в любом направлении.
// Open a recordset; first record is current
CCustSet rsCustSet( NULL );
rsCustSet.Open( );
if( rsCustSet.IsBOF( ) )
return;
// The recordset is empty
// Scroll to the end of the recordset, past
// the last record, so no record is current
while ( !rsCustSet.IsEOF( ) )
rsCustSet.MoveNext( );
// Move to the last record
rsCustSet.MoveLast( );
// Scroll to beginning of the recordset, before
// the first record, so no record is current
while( !rsCustSet.IsBOF( ) )
rsCustSet.MovePrev( );
// First record is current again
rsCustSet.MoveFirst( );
IsEOF
возвращает ненулевое значение, если набор записей расположен после последней записи. IsBOF
возвращает ненулевое значение, если набор записей расположен перед первой записью (до всех записей). В любом случае для работы текущей записи нет. Если вы вызываете, когда IsBOF
уже имеет значение TRUE или вызывается MoveNext
IsEOF
, платформа создает исключениеCDBException
.MovePrev
Вы также можете использовать IsBOF
и IsEOF
проверять наличие пустого набора записей.
Дополнительные сведения о навигации по набору записей см. в разделе Recordset: Закладки и абсолютные позиции (ODBC).
При поддержке прокрутки
Как первоначально разработано, SQL предоставил только переадресацию прокрутки, но ODBC расширяет возможности прокрутки. Доступный уровень поддержки прокрутки зависит от драйверов ODBC, с которыми работает приложение, уровень соответствия API ODBC драйвера и загрузку библиотеки курсоров ODBC в память. Дополнительные сведения см. в разделе ODBC и ODBC: библиотека курсоров ODBC.
Совет
Вы можете контролировать, используется ли библиотека курсоров. См. параметры bUseCursorLib и dwOptions в CDatabase::Open.
Примечание.
В отличие от классов DAO MFC, классы ODBC MFC не предоставляют набор Find
функций для поиска следующей (или предыдущей) записи, которая соответствует указанным критериям.
См. также
Набор записей (ODBC)
CRecordset::CanScroll
CRecordset::CheckRowsetError
Набор записей. Фильтрация записей (ODBC)