Sdílet prostřednictvím


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

Databázové třídy MFC můžete použít s architekturou dokumentu nebo zobrazení nebo bez něj. Toto téma zdůrazňuje práci s dokumenty a zobrazeními. Vysvětluje:

Alternativy naleznete v tématu MFC: Použití databázových tříd bez dokumentů a zobrazení.

Zápis aplikace založené na formuláři

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ých uživatel zkoumá, zadává nebo upravuje data. K vytvoření formuláře aplikace použijte třídu CRecordView. Když spustíte Průvodce aplikací MFC a vyberete typ klienta ODBC na stránce Podpora databáze, projekt používá CRecordView pro třídu zobrazení.

V aplikaci založené na formuláři ukládá každý objekt zobrazení záznamů ukazatel na CRecordset objekt. Mechanismus výměny polí záznamu rozhraní (RFX) vyměňuje data mezi sadou záznamů a zdrojem dat. Mechanismus výměny dat dialogového okna (DDX) vyměňuje data mezi datovými členy pole objektu sady záznamů a ovládacími prvky ve formuláři. CRecordView také poskytuje výchozí funkce obslužné rutiny příkazů pro navigaci ze záznamu do záznamu ve formuláři.

Chcete-li vytvořit formulářovou aplikaci pomocí průvodce aplikací, přečtěte si téma Vytvoření aplikace a podpory databáze MFC založené na formulářích, Průvodce aplikací MFC.

Úplnou diskuzi o formulářích najdete v tématu Zobrazení záznamů.

Použití sad záznamů v dokumentech a zobrazeních

Mnoho jednoduchých aplikací založených na formulářích nepotřebuje dokumenty. Pokud je vaše aplikace složitější, pravděpodobně chcete dokument použít jako proxy server databáze a uložit CDatabase objekt, který se připojuje ke zdroji dat. Aplikace založené na formuláři obvykle ukládají ukazatel na objekt sady záznamů v zobrazení. Další typy databázových aplikací ukládají sady záznamů a CDatabase objekty v dokumentu. Tady je několik možností použití dokumentů v databázových aplikacích:

  • Pokud přistupujete ke sadě záznamů v místním kontextu, vytvořte CRecordset objekt místně v členských funkcích dokumentu nebo zobrazení podle potřeby.

    Deklarujte objekt sady záznamů jako místní proměnnou ve funkci. Předejte hodnotu NULL konstruktoru, což způsobí, že architektura vytvoří a otevře dočasný CDatabase objekt za vás. Jako alternativu předejte ukazatel na CDatabase objekt. Použijte sadu záznamů v rámci funkce a nechte ji automaticky zničit při ukončení funkce.

    Když předáte null konstruktoru sady záznamů, architektura používá informace vrácené členskou GetDefaultConnect funkcí sady záznamů k vytvoření objektu CDatabase a otevření. Průvodci implementují GetDefaultConnect za vás.

  • Pokud během životnosti dokumentu přistupujete ke sadě záznamů, vložte do dokumentu jeden nebo více CRecordset objektů.

    Objekty sady záznamů se sestaví buď při inicializaci dokumentu, nebo podle potřeby. Můžete napsat funkci, která vrátí ukazatel na sadu záznamů, pokud již existuje nebo vytváří a otevře sadu záznamů, pokud ještě neexistuje. Zavřete, odstraňte a znovu vytvořte sadu záznamů podle potřeby nebo zavolejte její členovou Requery funkci, aby se záznamy aktualizovaly.

  • Pokud během životnosti dokumentu přistupujete ke zdroji dat, vložte CDatabase do něj objekt nebo uložte ukazatel na CDatabase objekt.

    Objekt CDatabase spravuje připojení ke zdroji dat. Objekt se vytvoří automaticky během vytváření dokumentu a při inicializaci dokumentu zavoláte její členovou Open funkci. Při vytváření objektů sady záznamů v členských funkcích dokumentu předáte ukazatel na objekt dokumentu CDatabase . Tím se každá sada záznamů přidruží ke zdroji dat. Databázový objekt je obvykle zničen při zavření dokumentu. Objekty sady záznamů jsou obvykle zničeny při ukončení oboru funkce.

Další faktory

Aplikace založené na formulářích často nemají žádné použití pro mechanismus serializace dokumentů architektury, takže můžete chtít odebrat, zakázat nebo nahradit příkazy Nový a Otevřít v nabídce Soubor . Viz článek Serializace: Serializace vs. Vstup/výstup databáze.

Můžete také chtít využít řadu možností uživatelského rozhraní, které může architektura podporovat. Můžete například použít více CRecordView objektů v rozděleném okně, otevřít více sad záznamů v různých podřízených oknech rozhraní MDI (Document Interface) atd.

Můžete chtít implementovat tisk všeho, co je v zobrazení, ať už se jedná o formulář implementovaný s CRecordView něčím jiným nebo jiným. Třídy odvozené z CFormView, CRecordView nepodporuje tisk, ale můžete přepsat OnPrint členské funkce povolit tisk. Další informace naleznete v tématu třídy CFormView.

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

Viz také

MFC – databázové třídy