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:
Jak napsat aplikaci založenou na formuláři pomocí objektu
CRecordView
jako hlavního zobrazení dokumentu.Jak používat objekty sady záznamů v dokumentech a zobrazeních
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 naCDatabase
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í objektuCDatabase
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 naCDatabase
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í členovouOpen
funkci. Při vytváření objektů sady záznamů v členských funkcích dokumentu předáte ukazatel na objekt dokumentuCDatabase
. 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í.