Sada záznamů: Posouvání (ODBC)
Toto téma platí pro třídy knihovny MFC rozhraní ODBC.
Po otevření sady záznamů, potřebujete přístup k záznamům pro zobrazení hodnot, provádět výpočty, generovat sestavy atd.Posouvání vám umožňuje přechod z jednoho záznamu na druhý v rámci vaší sady záznamů.
Toto téma vysvětluje:
Jak přejít z jednoho záznamu na jiný v sadě záznamů.
Za jakých okolností je a není podporováno procházení.
Posouvání z jednoho záznamu na jiný
Třída CRecordset poskytuje členskou funkci Move pro posouvání v rámci sady záznamů.Tyto funkce přesunou aktuální záznam sad řádků.Pokud jste implementovali hromadné načítání řádků, přemístí operace Move sadu záznamů podle velikosti sady řádku.Pokud jste neimplementovali hromadné načítání řádků, volání funkce Move přemístí sadu záznamů pokaždé podle jednoho záznamu.Další informace o hromadném načítání řádku, naleznete v sady záznamů: Fetching Records in Bulk (ODBC).
[!POZNÁMKA]
Při procházení sadou záznamů nemusí být odstraněné záznamy přeskočeny.Další informace naleznete v tématu ke členské funkci IsDeleted.
Vedle funkcí Move, poskytuje CRecordset členské funkce, pro kontrolu, zda jste přešli za konec nebo před začátek vaší sady záznamů.
Chcete-li zjistit, zda je možné ve vaší sadě záznamů posouvání, zavolejte členskou funkci CanScroll.
Posun
Vpřed jednoho záznamu nebo jedné sady řádků: zavolejte MoveNext členské funkce.
Posunutí vzad jednoho záznamu nebo jedné sady řádků: zavolejte MovePrev členské funkce.
Na první záznam v sadě záznamů: volání MoveFirst členské funkce.
Na poslední záznam v sadě záznamů nebo na poslední sadu řádků: zavolejte MoveLast členské funkce.
N záznamů aktuální umístění: volání Přesunout členské funkce.
Chcete-li testovat konec nebo začátek sady záznamů
Přesunuli jste se na poslední záznam?Zavolejte členskou funkci IsEOF.
Přesunuli jste se vpřed k prvnímu záznamu (přesunutí zpět)?Zavolejte členskou funkci IsBOF.
Následující příklad kódu používá IsBOF a IsEOF k rozpoznání mezí sady záznamů při posouvání v obou směrech.
// 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 vrátí nenulovou hodnotu, je-li sada záznamů umístěna za posledním záznamem. IsBOF vrátí nenulovou hodnotu, je-li sada záznamů umístěna před prvním záznamem (před všemi záznamy). V obou případech neexistuje aktuální záznam, se kterým se může pracovat.Pokud zavoláte MovePrev, když je již IsBOFTrue nebo zavoláte MoveNext, když je již IsEOFTrue, vyvolá architektura CDBException. Můžete také použít IsBOF a IsEOF, chcete-li zkontrolovat prázdnou sadu záznamů.
Další informace o navigaci v sadě záznamů naleznete v tématu sady záznamů: záložky a absolutní umístění (ODBC).
Když je posouvání podporováno
Jak je původně navrženo, poskytuje SQL pouze dopředné posouvání, ale rozhraní ODBC rozšiřuje možnosti posouvání.Úroveň podpory pro posouvání závisí na ovladačích rozhraní ODBC, se kterými pracuje vaše aplikace, úroveň shody ovladače rozhraní ODBC API a zda je načtena knihovna kurzorů rozhraní ODBC do paměti.Další informace naleznete v tématu ODBC a ODBC: The knihovna kurzorů rozhraní ODBC.
Tip
Můžete určit, zda je použita Knihovna kurzorů.Viz parametry bUseCursorLib a dwOptionsCDatabase::Open.
[!POZNÁMKA]
Na rozdíl od tříd knihovny MFC rozhraní DAO, neposkytují třídy knihovny MFC rozhraní ODBC sadu funkcí Find pro hledání dalšího (nebo předchozího) záznamu, splňujícího zadaná kritéria.