Sdílet prostřednictvím


MFC: Použití databázových tříd s dokumenty a zobrazeními

Můžete použít MFC databázové třídy - DAO nebo ODBC - bez nebo s architekturou dokument/pohled.Toto téma zdůrazňuje práci s dokumenty a pohledy.Vysvětluje:

  • Jak psát formulářově založené aplikace s využitím CRecordView nebo CDaoRecordView jako hlavního pohledu na váš dokument.

  • Jak použít objekty sady záznamů ve vašich dokumentech a pohledech.

  • Ostatní úvahy.

Alternativy naleznete v tématu MFC: použití databáze tříd bez dokumentů a zobrazení.

Psaní formulářově založených aplikací

Mnoho aplikací pro přístup k datům je založeno na formulářích.Uživatelské rozhraní je formulář obsahující ovládací prvky, ve kterém uživatel prohlíží, zadává nebo upravuje data.Chcete-li aby aplikace byla založena na formulářích, použijte třídu CRecordView nebo CDaoRecordView. Po spuštění průvodce pro aplikace MFC a zvolení typu klienta ODBC na stránce Podpora databáze bude projekt používat CRecordView jako třídu pro pohled (view). Průvodci již dále nepodporují rozhraní DAO, takže pokud chcete použít CDaoRecordView, budete muset kód napsat vlastnoručně.

Ve formulářově založené aplikaci má každý record view objekt ukazatel na CRecordset nebo na CDaoRecordset objekt. Mechanismus výměny pole záznamu (record field exchange - RFX) provádí výměnu dat mezi sadou záznamů a datovým zdrojem.Mechanismus výměny dialogových dat (dialog data exchange - DDX) provádí výměnu dat mezi členy datových polí objektu sady záznamů a ovládacími prvky formuláře.Třída CRecordView nebo třída CDaoRecordView také poskytuje výchozí příkaz obslužné rutiny funkce pro navigaci mezi záznamy ve formuláři.

Pro vytvoření formulářově založené aplikace pomocí aplikačního průvodce se podívejte na Vytváření MFC formulářové aplikace a Podpora databáze, Průvodce MFC aplikace.

Úplné informace o formulářích naleznete Pohledy na záznam.

Využití sady záznamů ve třídách Document a View

Mnoho jednoduchých formulářových aplikací nevyžaduje dokumenty.Pokud je aplikace složitější, budete pravděpodobně chtít použít dokument jako proxy pro databázi, uchovávající CDatabase nebo CDaoDatabase objekt, který se připojuje k datovému zdroji.Formulářové aplikace obvykle uchovávají ukazatel na objekt sady záznamů v pohledu.Jiné druhy databázových aplikací uchovávají sady záznamů a CDatabase nebo CDaoDatabase objekt v dokumentu. Zde jsou některé možnosti pro použití dokumentu v databázových aplikacích:

  • Pokud přistupujete k sadě záznamů v lokálním kontextu, vytvořte CRecordset nebo CDaoRecordset objekt lokálně v členských funkcích dokumentu nebo pohledu podle potřeby.

    Deklarujte objekt sady záznamů jako lokální proměnnou funkce.Předejte hodnotu NULL konstruktoru, což způsobí, že vám framework vytvoří a otevře dočasný CDatabase nebo CDaoDatabase objekt. Jako alternativu můžete předat ukazatel na CDatabase nebo CDaoDatabase objekt. Použijte sadu záznamů v rámci funkce a nechte jej ukončit automaticky při ukončení funkce.

    Když předáte hodnotu NULL do konstruktoru sady záznamů, framework používá informace vrácené GetDefaultConnect členskou funkci sady záznamů k vytvoření CDatabase nebo CDaoDatabase objektu a otevře ho. Průvodci implementují GetDefaultConnect za vás.

  • Pokud přistupujete k sadě záznamů po dobu platnosti dokumentu, vložte jeden nebo více CRecordset nebo CDaoRecordset objektů do dokumentu.

    Vytvořte objekty sady záznamů buď během inicializace dokumentu nebo podle potřeby.Můžete napsat funkci, která vrací ukazatel na sadu záznamů, pokud již existuje, nebo je sada záznamů vytvoří a otevře pokud dosud neexistuje.Zavřete, smažte a znovu vytvořte sadu záznamů dle potřeby, nebo zavolejte jeho Requery členskou funkci pro aktualizování záznamů.

  • Pokud přistupujete k datovém zdroji během platnosti dokumentu, vložte CDatabase nebo CDaoDatabase objekt nebo v něm uložte ukazatel na CDatabase nebo CDaoDatabase objekt.

    CDatabase nebo CDaoDatabase objekt spravuje připojení k vašemu datovému zdroji. Objekt je automaticky vytvořen během vytvoření dokumentu a vy zavoláte Open členskou funkci když inicializujete dokument.Když vytváříte objekty sady záznamů v členských funkcích dokumentu, předáte ukazatel na CDatabase nebo CDaoDatabase objekt dokumentu. Toto propojí každou sadu záznamů s jejím datovým zdrojem.Při zavření dokumentu je obvykle ukončen databázový objekt.Objekty sady záznamů jsou typicky uvolněny, když opustí rozsah platnosti funkce.

Jiné faktory

Formulářově založené aplikace nemají často využití pro mechanismus serializace dokumentu v rozhraní, a proto můžete chtít odebrat, zakázat nebo nahradit příkazy New a Otevřít v nabídce Soubor.Naleznete v článku Serialization: Serialization vs. Databázový vstup/výstup.

Můžete chtít také vytvořit využívání možností více uživatelského rozhraním, které framework podporuje.Můžete například použít více CRecordView nebo CDaoRecordView objektů v rozděleném okně, otevřít více sad záznamů v rozdílných podřízených oknech mnohonásobného dokumentového rozhraní (Multiple Document Interface - MDI) a tak dále.

Budete chtít pravděpodobně naimplementovat tisk bez ohledu na pohled, zdali je formulář naimplementován s CRecordView nebo CDaoRecordView nebo něčím jiným. Odvozené třídy z CFormView, CRecordView a CDaoRecordView tisk nepodporují. Je ale možné je přepsat členskou funkcí OnPrint, která tisk umožňuje. Další informace naleznete v tématu o třídě CFormView.

Možná nebudete chtít vůbec používat dokumenty a pohledy.V takovém případě viz MFC: použití databáze tříd bez dokumentů a zobrazení.

Viz také

Koncepty

MFC – databázové třídy (rozhraní ODBC a DAO)