Sdílet prostřednictvím


CDaoRecordset::Open

Tato funkce členů načíst záznamy sada záznamů musí volat.

virtual void Open( 
   int nOpenType = AFX_DAO_USE_DEFAULT_TYPE, 
   LPCTSTR lpszSQL = NULL, 
   int nOptions = 0  
); 
virtual void Open( 
   CDaoTableDef* pTableDef, 
   int nOpenType = dbOpenTable, 
   int nOptions = 0  
); 
virtual void Open( 
   CDaoQueryDef* pQueryDef, 
   int nOpenType = dbOpenDynaset, 
   int nOptions = 0  
);

Parametry

  • nOpenType
    Jedna z následujících hodnot:

    • dbOpenDynaset sadě záznamů s obousměrným posouvání.Toto nastavení je výchozí.

    • dbOpenTable záznamů tabulky Typ s obousměrnou posouvání.

    • dbOpenSnapshot recordset typu snímek s obousměrným posouvání.

  • lpszSQL
    Ukazatel řetězce obsahující jednu z následujících:

    • A NULL ukazatel.

    • Název tabledefs nebo querydefs (oddělené čárkami).

    • SQL Vyberte prohlášení (volitelně s SQL kde nebo pořadípodle klauzule).

    • Předávací dotaz.

  • nOptions
    Jeden nebo více níže uvedených možností.Výchozí hodnota je 0.Možné hodnoty jsou:

    • dbAppendOnly lze pouze přidat nové záznamy (pouze v sadě záznamů).Tato možnost doslova znamená, že záznamy mohou pouze připojen.Mít třídami databází MFC ODBC připojovacím možnost záznamy načteny a připojena.

    • dbForwardOnly záznamů je pouze pro předávání posouvání snímek.

    • dbSeeChanges generovat výjimku, pokud upravujete data změny jiného uživatele.

    • dbDenyWrite nelze upravit nebo přidat záznamy ostatních uživatelů.

    • dbDenyRead ostatní uživatelé nemohou zobrazit záznamy (pouze typ tabulky záznamů).

    • dbReadOnly lze zobrazit pouze záznamy; můžete upravit jiní uživatelé.

    • dbInconsistent nekonzistentní aktualizace jsou povoleny (pouze v sadě záznamů).

    • dbConsistent jen konzistentní aktualizace jsou povoleny (pouze v sadě záznamů).

    [!POZNÁMKA]

    Konstanty dbConsistent a dbInconsistent se vzájemně vylučují.Můžete použít jeden nebo druhý, ale ne obojí v dané instanci otevřených.

  • pTableDef
    Ukazatel CDaoTableDef objektu.Tato verze je platný pouze pro typ tabulky sady záznamů.Při použití této možnosti CDaoDatabase ukazatel se používá pro sestavení CDaoRecordset není použit; databáze je umístěna tabledef spíše slouží.

  • pQueryDef
    Ukazatel CDaoQueryDef objektu.Tato verze je platný pouze pro typ dynaset a sady záznamů typu snímek.Při použití této možnosti CDaoDatabase ukazatel se používá pro sestavení CDaoRecordset není použit; databáze je umístěna querydef spíše slouží.

Poznámky

Před voláním otevřených, je nutné vytvořit objektu recordset.Provést několika způsoby:

  • Při vytváření objektu recordset předat ukazatel CDaoDatabase objekt, který je již otevřen.

  • Při vytváření objektu recordset předat ukazatel CDaoDatabase objekt, který není otevřený.Otevře sadu záznamů CDaoDatabase objektu, ale nebude zavřete jej po zavření objektu recordset.

  • Při vytváření objektu recordset předat NULL ukazatel.Volání objektu recordset GetDefaultDBName název aplikace Microsoft Access.Otevření souboru MDB.Otevře sadu záznamů CDaoDatabase objektu a uchovává ji otevřít, jako je otevřít sadu záznamů.Při volání Zavřít v sadě záznamů, CDaoDatabase objekt také zavřeno.

    [!POZNÁMKA]

    Po otevření sady záznamů CDaoDatabase objekt otevře zdroj dat s nevýhradní přístup.

Verze otevřete , která používá lpszSQL parametru po záznamů lze načíst záznamy několika způsoby.První možností je mají DFX funkce vašem DoFieldExchange .Druhou možností je použití dynamická vazba voláním GetFieldValue členské funkce.Tyto možnosti lze implementovat samostatně nebo v kombinaci.Pokud jsou sdruženy, bude nutné přenést v příkazu SQL sami volání otevřených.

Při použití druhé verze Otevřít kde předáte CDaoTableDef objektu budou výsledné sloupce můžete vytvořit vazbu prostřednictvím DoFieldExchange a DFX mechanismus, případně vazby dynamicky prostřednictvím GetFieldValue .

[!POZNÁMKA]

Může volat pouze otevřených pomocí CDaoTableDef objekt pro tabulku typ sady záznamů.

Při použití třetí verzi Otevřít kde předáte CDaoQueryDef objektu, že dotaz bude proveden a budou výsledné sloupce můžete vytvořit vazbu prostřednictvím DoFieldExchange a DFX mechanismus, případně vazby dynamicky prostřednictvím GetFieldValue .

[!POZNÁMKA]

Může volat pouze otevřených pomocí CDaoQueryDef objekt typu dynamická sada a snímek typ sady záznamů.

První verze otevřených , která používá lpszSQL parametr, jsou záznamy vybrané na základě kritérií v tabulce.

Hodnota lpszSQL parametr

Vybrané záznamy jsou určena.

Příklad

NULL

Řetězec vrácený GetDefaultSQL .

 

Čárkami oddělený seznam jednoho nebo více tabledefs nebo querydef názvů.

Všechny sloupce zastoupeny v DoFieldExchange .

"Customer"

Vyberte seznam sloupců od seznam tabulek

Zadaného sloupce ze zadaného tabledef(s) a querydef(s).

"SELECT CustId, CustName

FROM Customer"

Obvyklý postup je předat NULL na otevřených; v takovém případě otevřených volání GetDefaultSQL , overridable členské funkce, která generuje ClassWizard při vytváření CDaoRecordset -odvozené třídy.Tato hodnota poskytuje tabledef(s) nebo querydef jména zadaná v ClassWizard.Místo toho můžete zadat další informace lpszSQL parametr.

Ať předáte, Otevřít sestaví konečný řetězec SQL pro dotaz (pravděpodobně řetězec SQL kde a pořadípodle klauzule připojen lpszSQL řetězec předaný) a potom provede dotaz.Vyrobeno řetězce můžete prověřit voláním GetSQL po volání otevřených.

Pole datové členy vaší třídy recordset jsou vázány na sloupce dat vybrána.Pokud jsou vráceny žádné záznamy, první záznam stane aktuálním záznamem.

Pokud chcete nastavit možnosti pro sadu záznamů jako filtr nebo řazení, m_strSort nebo m_strFilter po vytvoření objektu recordset, ale před volání otevřených.Pokud chcete aktualizovat záznamy v sadě záznamů po záznamů je již otevřena, volání Requery.

Při volání otevřených na typ dynaset nebo recordset typu snímek nebo pokud zdroj dat odkazuje na příkaz SQL nebo tabledef, který představuje připojenou tabulku, nelze použít dbOpenTable argumentu typ; Pokud tak učiníte, MFC vyvolá výjimku.Chcete-li zjistit, zda objekt tabledef představuje připojené tabulky, vytvořte CDaoTableDef objektu a volání jeho GetConnect členské funkce.

Použití dbSeeChanges příznak, pokud chcete změny provedené jiným uživatelem nebo jiný program v počítači při úpravě nebo odstranění stejný záznam depeše.Například pokud dva uživatelé začít upravovat tentýž záznam první uživatel volat aktualizace úspěšné členské funkce.Při aktualizace se nazývá druhý uživatel CDaoException je vyvolána.Podobně pokud druhý uživatel pokouší volat Odstranit odstranit záznam a již byla změněna uživatelem první CDaoException dochází.

Obvykle Pokud uživatel obdrží tento CDaoException při aktualizaci, by měla aktualizovat obsah polí a nově upravené hodnoty kódu.V případě výjimku při odstraňování zobrazit kód nového záznamu dat uživateli a zpráva, že data byla nedávno změněna.Kód v tomto okamžiku můžete požádat o potvrzení, že stále chce uživatel odstranit záznam.

Tip

Použijte možnost posouvání pouze pro předávání (dbForwardOnly) zvýšit výkon při jednom průchodu přes sadu záznamů aplikace otevřít zdroj dat ODBC.

Související informace naleznete v tématu "Metodě OpenRecordset knihovny" v nápovědě DAO.

Požadavky

Záhlaví: afxdao.h

Viz také

Referenční dokumentace

Třída CDaoRecordset

Graf hierarchie

CDaoRecordset::Close

CDaoRecordset::CDaoRecordset