Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
U kunt de MFC-databaseklassen gebruiken met of zonder de document-/weergavearchitectuur. In dit onderwerp wordt het werken met documenten en weergaven benadrukt. Hierin wordt uitgelegd:
Een op formulieren gebaseerde toepassing schrijven met behulp van een
CRecordViewobject als de hoofdweergave van uw document.Hoe u recordsetobjecten kunt gebruiken in uw documenten en weergaven.
Zie MFC: Databaseklassen zonder documenten en weergaven gebruiken voor alternatieven.
Een Form-Based-toepassing schrijven
Veel toepassingen voor gegevenstoegang zijn gebaseerd op formulieren. De gebruikersinterface is een formulier met besturingselementen waarin de gebruiker gegevens onderzoekt, invoert of bewerkt. Als u uw toepassingsformulier wilt maken op basis van een formulier, gebruikt u klasse CRecordView. Wanneer u de MFC-toepassingswizard uitvoert en het ODBC-clienttype selecteert op de pagina Databaseondersteuning, gebruikt het project CRecordView voor de weergaveklasse.
In een toepassing op basis van formulieren slaat elk recordweergaveobject een aanwijzer op naar een CRecordset object. Het RFX-mechanisme (Record Field Exchange) van het framework wisselt gegevens uit tussen de recordset en de gegevensbron. Met het DDX-mechanisme (Dialog Data Exchange) worden gegevens uitgewisseld tussen de veldgegevensleden van het object recordset en de besturingselementen in het formulier.
CRecordView biedt ook standaardfuncties voor opdrachthandlers voor navigatie van record naar record in het formulier.
Zie Een Forms-Based MFC-toepassing maken en Databaseondersteuning, MFC-toepassingswizard om een formuliertoepassing te maken met de toepassingswizard.
Zie Recordweergaven voor een volledige bespreking van formulieren.
Gebruik van recordsets in documenten en weergaven
Veel eenvoudige op formulieren gebaseerde toepassingen hebben geen documenten nodig. Als uw toepassing complexer is, wilt u waarschijnlijk een document gebruiken als proxy voor de database, waarbij u een CDatabase object opslaat dat verbinding maakt met de gegevensbron. In formuliertoepassingen wordt meestal een aanwijzer opgeslagen naar een recordsetobject in de weergave. In andere soorten databasetoepassingen worden recordsets en CDatabase objecten opgeslagen in het document. Hier volgen enkele mogelijkheden voor het gebruik van documenten in databasetoepassingen:
Als u een recordset toegankelijk maakt in een lokale context, maakt u, indien nodig, een
CRecordset-object lokaal in de methoden van het lid van het document of de weergave.Declareer een recordsetobject als een lokale variabele in een functie. Geef NULL door aan de constructor, waardoor het framework een tijdelijk
CDatabaseobject voor u maakt en opent. Als alternatief geeft u een aanwijzer door aan eenCDatabaseobject. Gebruik de recordset in de functie en laat deze automatisch worden vernietigd wanneer de functie wordt afgesloten.Wanneer u NULL doorgeeft aan een recordsetconstructor, gebruikt het framework informatie die wordt geretourneerd door de lidfunctie van
GetDefaultConnectde recordset om eenCDatabaseobject te maken en te openen. De wizards implementerenGetDefaultConnectvoor u.Als u tijdens de levensduur van het document toegang hebt tot een recordset, sluit u een of meer
CRecordsetobjecten in uw document in.Maak de recordsetobjecten wanneer u het document initialiseert of indien nodig. U kunt een functie schrijven die een aanwijzer naar de recordset retourneert als deze al bestaat of bouwt en de recordset opent als deze nog niet bestaat. Sluit, verwijder en maak de recordset indien nodig opnieuw aan, of gebruik de lidfunctie
Requeryom de records te vernieuwen.Als u tijdens de levensduur van het document toegang hebt tot een gegevensbron, sluit u een
CDatabaseobject in of slaat u een aanwijzer op in eenCDatabaseobject.Het
CDatabaseobject beheert een verbinding met uw gegevensbron. Het object wordt automatisch samengesteld tijdens de documentconstructie en u roeptOpende lidfunctie aan wanneer u het document initialiseert. Wanneer u recordsetobjecten maakt in documentlidfuncties, geeft u een aanwijzer door aan het object van het documentCDatabase. Hiermee koppelt u elke recordset aan de bijbehorende gegevensbron. Het databaseobject wordt meestal vernietigd wanneer het document wordt gesloten. De recordsetobjecten worden doorgaans vernietigd wanneer ze het bereik van een functie verlaten.
Andere factoren
Toepassingen op basis van formulieren hebben vaak geen gebruik voor het serialisatiemechanisme van het framework, dus u kunt de opdrachten Nieuw en Openen in het menu Bestand verwijderen, uitschakelen of vervangen. Zie het artikel Serialisatie: Serialisatie versus database-invoer/uitvoer.
U kunt ook gebruikmaken van de vele mogelijkheden van de gebruikersinterface die het framework kan ondersteunen. U kunt bijvoorbeeld meerdere CRecordView objecten in een splitsvenster gebruiken, meerdere recordsets openen in verschillende onderliggende vensters van meerdere documentinterfaces (MDI), enzovoort.
U wilt misschien de afdruk van alles wat in uw weergave zit implementeren, of het nu een formulier is dat is geïmplementeerd met CRecordView of iets anders. Als klassen die zijn afgeleid van CFormView, CRecordView bieden geen ondersteuning voor afdrukken, maar u kunt de OnPrint lidfunctie overschrijven om afdrukken toe te staan. Zie klasse CFormView voor meer informatie.
Mogelijk wilt u helemaal geen documenten en weergaven gebruiken. In dat geval, zie MFC: Het gebruik van databaseklassen zonder documenten en weergaven.