Delen via


MFC: Databaseklassen gebruiken met documenten en vensters

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:

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 CDatabase object voor u maakt en opent. Als alternatief geeft u een aanwijzer door aan een CDatabase object. 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 GetDefaultConnect de recordset om een CDatabase object te maken en te openen. De wizards implementeren GetDefaultConnect voor u.

  • Als u tijdens de levensduur van het document toegang hebt tot een recordset, sluit u een of meer CRecordset objecten 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 Requery om de records te vernieuwen.

  • Als u tijdens de levensduur van het document toegang hebt tot een gegevensbron, sluit u een CDatabase object in of slaat u een aanwijzer op in een CDatabase object.

    Het CDatabase object beheert een verbinding met uw gegevensbron. Het object wordt automatisch samengesteld tijdens de documentconstructie en u roept Open de lidfunctie aan wanneer u het document initialiseert. Wanneer u recordsetobjecten maakt in documentlidfuncties, geeft u een aanwijzer door aan het object van het document CDatabase. 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.

Zie ook

MFC-databaseklassen