Sdílet prostřednictvím


Dynamická sada

Toto téma popisuje dynamické sady a jejich dostupnost.

[!POZNÁMKA]

Toto téma platí pro třídy knihovny MFC rozhraní ODBC včetně CRecordset.Informace o dynamických sadách v třídách rozhraní DAO naleznete v tématu CDaoRecordset.Pomocí rozhraní DAO můžete otevřít dynamické sady záznamů.

Dynamická sada je sada záznamů s dynamickými vlastnostmi.Objekt sady záznamů v režimu dynamické sady (obvykle jen dynamická sada) zůstane během své doby života synchronizovaný se zdrojem dat následujícím způsobem.Ve víceuživatelském prostředí mohou ostatní uživatelé upravit nebo odstranit záznamy, které jsou ve vaší dynamické sadě nebo přidat záznamy do tabulky, kterou představuje vaše dynamická sada.Záznamy, která vaše aplikace přidá nebo odstraní ze sady záznamů, se odrazí ve vaší dynamické sadě.Záznamy, které přidají ostatní uživatelé do tabulky, se neprojeví ve vaší dynamické sadě, dokud ji znovu nesestavíte voláním její členské funkce Requery.Pokud ostatní uživatelé odstraní záznamy, kód knihovny MFC přeskočí odstraňování ve vaší sadě záznamů.Úpravy stávajících záznamů ostatními uživateli se projeví ve vaší dynamické sadě jakmile se posunete na tento upravený záznam.

Podobně, úpravy, které provedete u záznamů v dynamické sadě, se projeví v dynamických sadách používaných ostatními uživateli.Přidané záznamy se neprojeví v dynamických sadách ostatních uživatelů, dokud znovu nespustí jejich dynamické sady.Záznamy, které odstraníte, jsou označeny jako "odstraněné" v sadách záznamů ostatních uživatelů.Pokud máte vícenásobná připojení ke stejné databázi (více objektů CDatabase), sady záznamů, které jsou přidružené k těmto připojením, mají stejný stav jako sady záznamů ostatních uživatelů.

Dynamické sady jsou nejužitečnější pokud musí být data dynamická, jako například rezervační systém letecké dopravy.

[!POZNÁMKA]

Chcete-li použít dynamické sady, musíte mít ovladač rozhraní ODBC pro váš zdroj dat, který podporuje dynamické sady a nesmí být načtena knihovna kurzorů rozhraní ODBC.Další informace naleznete v tématu Dostupnost dynamických sad.

Chcete-li určit sadu záznamů jako dynamickou sadu, předejte CRecordset::dynaset jako první parametr členské funkce Open vašeho objektu sady záznamů.

[!POZNÁMKA]

Chcete-li použít aktualizovatelné dynamické sady, ovladač rozhraní ODBC musí podporovat příkazy umístěných aktualizací nebo funkce ::SQLSetPos rozhraní API rozhraní ODBC.Jsou-li podporovány obě, knihovna MFC použije efektivnější ::SQLSetPos.

Dostupnost dynamických sad

Třídy databáze knihovny MFC podporují dynamické sady, pokud jsou splněny následující požadavky:

  • Knihovna DLL knihovna kurzorů rozhraní ODBC nesmí být použita pro tento zdroj dat.

    Pokud je použita knihovna kurzorů, skryje některé funkce odpovídajícího ovladače rozhraní ODBC, které jsou nezbytné pro podporu dynamické sady.Pokud chcete použít dynamické sady (a váš ovladač rozhraní ODBC obsahuje funkce, které jsou požadované pro dynamické sady, jak je popsáno v zbývající části tohoto oddílu), můžete použít knihovnu MFC tak, že nenačte knihovnu kurzorů, když vytvoříte objekt CDatabase.Další informace naleznete v tématu rozhraní ODBC a v OpenEx nebo v členské funkci Open třídy CDatabase.

    V terminologii rozhraní ODBC jsou dynamické sady a snímky odkazovány jako kurzory.Kurzor představuje mechanismus, použitý pro udržování přehledu o jeho poloze v sadě záznamů.

  • Ovladač rozhraní ODBC pro váš zdroj dat musí podporovat kurzory řízené sadou klíčů.

    Kurzory řízené sadou klíčů spravují data z tabulky pomocí načítání a ukládání sady klíčů.Klíče se používají pro získání aktuálních dat z tabulky, když se uživatel přesune na určitý záznam.Chcete-li zjistit, zda váš ovladač poskytuje tuto podporu, volejte funkci ::SQLGetInfo z rozhraní ODBC API s parametrem SQL_SCROLL_OPTIONS.

    Pokud se pokusíte otevřít dynamickou sadu bez podpory sady klíčů, dostanete CDBException s hodnotou návratového kódu AFX_SQL_ERROR_DYNASET_NOT_SUPPORTED.

  • Ovladač rozhraní ODBC vašeho zdroje dat musí podporovat rozšířené načítání.

    Rozšířené načítání je schopnost posouvat se dopředu i dozadu přes výsledné záznamy příkazu jazyka SQL.Chcete-li zjistit, zda ovladač podporuje tuto schopnost, volejte funkci ::SQLGetFunctions z rozhraní API ODBC s parametrem SQL_API_SQLEXTENDEDFETCH.

Pokud chcete aktualizovatelné dynamické sady (nebo snímky), ovladač rozhraní ODBC musí také podporovat buď funkce ::SQLSetPos z rozhraní API ODBC, nebo umístěné aktualizace.Funkce ::SQLSetPos umožňuje knihovně MFC aktualizovat zdroj dat bez odeslání příkazů SQL.Pokud je tato podpora k dispozici, knihovna MFC ji použije přednostně k provedení aktualizací pomocí SQL.Pokud chcete zjistit, zda ovladač podporuje ::SQLSetPos, volejte ::SQLGetInfo s parametrem SQL_POS_OPERATIONS.

Umístěné aktualizace používají syntaxi jazyka SQL (formuláře WHERE aktuální OF<cursorname>) k identifikaci konkrétního řádku tabulky zdroje dat.Chcete-li zjistit, zda ovladač podporuje umístěné aktualizace, volejte ::SQLGetInfo s parametrem SQL_POSITIONED_STATEMENTS.

Dynamické sady knihovny MFC (ale ne pouze dopředné sady záznamů) obecně vyžadují ovladač rozhraní ODBC, který splňuje požadavky rozhraní API úrovně 2.Pokud ovladač pro váš zdroj dat odpovídá sadě rozhraní API úrovně 1, můžete použít jak aktualizovatelné snímky, tak i snímky jen pro čtení a dopředné sady záznamů, ne však dynamické sady.Ovladač úrovně 1 však může podporovat dynamické sady, pokud podporuje rozšířené načítání a kurzory řízené sadou klíčů.Další informace o úrovních přizpůsobení rozhraní ODBC naleznete v tématu rozhraní ODBC.

[!POZNÁMKA]

Pokud chcete používat snímky i dynamické sady, musíte je založit na dvou různých objektech CDatabase (dvě různá připojení).

Na rozdíl od snímků, které používají meziskladování udržované knihovnou kurzorů rozhraní ODBC, dynamické sady načtou záznam přímo ze zdroje dat jakmile se na něj přesunete.To udržuje záznamy, které jsou původně vybrané dynamickou sadou, synchronizované se zdrojem dat.

Seznam ovladačů rozhraní ODBC, které jsou součástí této verze aplikace Visual C++, a informace o získání dalších ovladačů, naleznete v tématu Seznam ovladačů rozhraní ODBC.

Viz také

Koncepty

ODBC (Open Database Connectivity)