Share via


Klasse CDaoException

Opmerking

De Microsoft Foundation Classes-bibliotheek (MFC) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Vertegenwoordigt een uitzonderingsvoorwaarde die voortvloeit uit de MFC-databaseklassen op basis van DATA Access Objects (DAO).

Opmerking

Data Access Object (DAO) wordt ondersteund via Office 2013. DAO 3.6 is de definitieve versie en is verouderd.

Syntaxis

class CDaoException : public CException

Leden

Openbare constructors

Naam Description
CDaoException::CDaoException Maakt een CDaoException object.

Openbare methoden

Naam Description
CDaoException::GetErrorCount Retourneert het aantal fouten in de verzameling Fouten van de database-engine.
CDaoException::GetErrorInfo Retourneert foutinformatie over een bepaald foutobject in de verzameling Fouten.

Leden van openbare gegevens

Naam Description
CDaoException::m_nAfxDaoError Bevat een uitgebreide foutcode voor elke fout in de MFC DAO-klassen.
CDaoException::m_pErrorInfo Een aanwijzer naar een CDaoErrorInfo-object dat informatie bevat over één DAO-foutobject.
CDaoException::m_scode De SCODE-waarde die aan de fout is gekoppeld.

Opmerkingen

De klasse bevat leden van openbare gegevens die u kunt gebruiken om de oorzaak van de uitzondering te bepalen. CDaoException objecten worden samengesteld en gegenereerd door lidfuncties van de DAO-databaseklassen.

Opmerking

De DAO-databaseklassen verschillen van de MFC-databaseklassen op basis van ODBC (Open Database Connectivity). Alle DAO-databaseklassenamen hebben het voorvoegsel 'CDao'. U hebt nog steeds toegang tot ODBC-gegevensbronnen met de DAO-klassen. Over het algemeen zijn de MFC-klassen op basis van DAO beter geschikt dan de MFC-klassen op basis van ODBC; De DAO-klassen hebben toegang tot gegevens, waaronder via ODBC-stuurprogramma's, via hun eigen database-engine. De op DAO gebaseerde klassen ondersteunen ook DDL-bewerkingen (Data Definition Language), zoals het toevoegen van tabellen via de klassen, zonder DAO rechtstreeks aan te roepen. Zie CDBException voor informatie over uitzonderingen die zijn gegenereerd door de ODBC-klassen.

U hebt toegang tot uitzonderingsobjecten binnen het bereik van een CATCH-expressie . U kunt ook objecten uit uw eigen code gooien CDaoException met de globale functie AfxThrowDaoException .

In MFC worden alle DAO-fouten uitgedrukt als uitzonderingen, van het type CDaoException. Wanneer u een uitzondering van dit type ondervangt, kunt u lidfuncties gebruiken CDaoException om informatie op te halen uit DAO-foutobjecten die zijn opgeslagen in de verzameling Fouten van de database-engine. Wanneer elke fout optreedt, worden een of meer foutobjecten in de verzameling Fouten geplaatst. (Normaal gesproken bevat de verzameling slechts één foutobject. Als u een ODBC-gegevensbron gebruikt, krijgt u waarschijnlijk meerdere foutobjecten.) Wanneer een andere DAO-bewerking een fout genereert, wordt de verzameling Fouten gewist en wordt het nieuwe foutobject in de verzameling Fouten geplaatst. DAO-bewerkingen die geen fout genereren, hebben geen effect op de verzameling Fouten.

Zie het bestand DAOERR.H voor DAO-foutcodes. Zie voor verwante informatie het onderwerp 'Fouten in gegevenstoegang met ingesloten gegevens' in DAO Help.

Zie de artikelen Exception Handling (MFC) en Uitzonderingen: Database-uitzonderingen voor meer informatie over het verwerken van uitzonderingen in het algemeen of over CDaoException objecten. Het tweede artikel bevat voorbeeldcode die de verwerking van uitzonderingen in DAO illustreert.

Overnamehiërarchie

CObject

CException

CDaoException

Requirements

Rubriek:afxdao.h

CDaoException::CDaoException

Maakt een CDaoException object.

CDaoException();

Opmerkingen

Normaal gesproken maakt het framework uitzonderingsobjecten wanneer de code een uitzondering genereert. U hoeft zelden expliciet een uitzonderingsobject te maken. Als u een CDaoException van uw eigen code wilt weggooien, roept u de globale functie AfxThrowDaoException aan.

Mogelijk wilt u echter expliciet een uitzonderingsobject maken als u directe aanroepen naar DAO maakt via de DAO-interfaceaanwijzers die MFC-klassen inkapselen. In dat geval moet u mogelijk foutinformatie ophalen uit DAO. Stel dat er een fout optreedt in DAO wanneer u een DAO-methode aanroept via de DAODatabases-interface naar de databaseverzameling van een werkruimte.

De DAO-foutgegevens ophalen
  1. CDaoException Een object maken.

  2. Roep de getErrorCount-lidfunctie van het uitzonderingsobject aan om te bepalen hoeveel foutobjecten zich in de verzameling Fouten van de database-engine bevinden. (Normaal gesproken slechts één, tenzij u een ODBC-gegevensbron gebruikt.)

  3. Roep de lidfunctie GetErrorInfo van het uitzonderingsobject aan om één specifiek foutobject tegelijk op te halen, op basis van index in de verzameling, via het uitzonderingsobject. U kunt het uitzonderingsobject beschouwen als een proxy voor één DAO-foutobject.

  4. Bekijk de huidige CDaoErrorInfo-structuur die GetErrorInfo wordt geretourneerd in het m_pErrorInfo gegevenslid. De leden geven informatie over de DAO-fout.

  5. Herhaal indien nodig stap 3 en 4 in het geval van een ODBC-gegevensbron voor meer foutobjecten.

  6. Als u het uitzonderingsobject op de heap hebt gemaakt, verwijdert u het met de delete operator wanneer u klaar bent.

Zie het artikel Uitzonderingen: Database-uitzonderingen voor meer informatie over het afhandelen van fouten in de MFC DAO-klassen.

CDaoException::GetErrorCount

Roep deze lidfunctie aan om het aantal DAO-foutobjecten op te halen in de verzameling Fouten van de database-engine.

short GetErrorCount();

Retourwaarde

Het aantal DAO-foutobjecten in de verzameling Fouten van de database-engine.

Opmerkingen

Deze informatie is handig voor het doorlopen van de verzameling Fouten om elk van een of meer DAO-foutobjecten in de verzameling op te halen. Als u een foutobject per index of op DAO-foutnummer wilt ophalen, roept u de lidfunctie GetErrorInfo aan.

Opmerking

Normaal gesproken is er slechts één foutobject in de verzameling Fouten. Als u echter met een ODBC-gegevensbron werkt, kan er meer dan één zijn.

CDaoException::GetErrorInfo

Retourneert foutinformatie over een bepaald foutobject in de verzameling Fouten.

void GetErrorInfo(int nIndex);

Parameterwaarden

nIndex
De index van de foutgegevens in de verzameling Fouten van de database-engine voor zoekactie op index.

Opmerkingen

Roep deze lidfunctie aan om de volgende soorten informatie over de uitzondering te verkrijgen:

  • Foutcode

  • Bron

  • Description

  • Help-bestand

  • Help-context

GetErrorInfo slaat de informatie op in het gegevenslid van m_pErrorInfo het uitzonderingsobject. Zie m_pErrorInfo voor een korte beschrijving van de geretourneerde informatie. Als u een uitzondering van het type CDaoException veroorzaakt door MFC, wordt het m_pErrorInfo lid al ingevuld. Als u ervoor kiest om DAO rechtstreeks aan te roepen, moet u de lidfunctie van GetErrorInfo het uitzonderingsobject zelf aanroepen om deze in te vullen m_pErrorInfo. Zie de structuur CDaoErrorInfo voor een gedetailleerde beschrijving.

Zie het artikel Uitzonderingen: Database-uitzonderingen voor informatie over DAO-uitzonderingen en voorbeeldcode.

CDaoException::m_nAfxDaoError

Bevat een uitgebreide MFC-foutcode.

Opmerkingen

Deze code wordt verstrekt in gevallen waarin een specifiek onderdeel van de MFC DAO-klassen is mislukt.

Mogelijke waarden zijn:

  • NO_AFX_DAO_ERROR De meest recente bewerking heeft geen uitgebreide MFC-fout veroorzaakt. De bewerking kan echter andere fouten van DAO of OLE hebben geproduceerd, dus moet u m_pErrorInfo en mogelijk m_scode controleren.

  • AFX_DAO_ERROR_ENGINE_INITIALIZATION MFC kan de Microsoft Jet-database-engine niet initialiseren. OLE kan niet worden geïnitialiseerd of het is mogelijk onmogelijk geweest om een exemplaar van het DAO-database-engineobject te maken. Deze problemen suggereren meestal een slechte installatie van DAO of OLE.

  • AFX_DAO_ERROR_DFX_BIND Een adres dat wordt gebruikt in een DFX-functieaanroep (DAO Record Field Exchange) bestaat niet of is ongeldig (het adres is niet gebruikt om gegevens te binden). Mogelijk hebt u een ongeldig adres doorgegeven in een DFX-aanroep of is het adres mogelijk ongeldig geworden tussen DFX-bewerkingen.

  • AFX_DAO_ERROR_OBJECT_NOT_OPEN U hebt geprobeerd een recordset te openen op basis van een querydef of een ingediendefobject dat niet in een open staat was.

CDaoException::m_pErrorInfo

Bevat een aanwijzer naar een CDaoErrorInfo structuur die informatie biedt over het DAO-foutobject dat u het laatst hebt opgehaald door GetErrorInfo aan te roepen.

Opmerkingen

Dit object bevat de volgende informatie:

Lid CDaoErrorInfo Information Meaning
m_lErrorCode Foutcode De DAO-foutcode
m_strSource Bron De naam van het object of de toepassing die de fout oorspronkelijk heeft gegenereerd
m_strDescription Description Een beschrijvende tekenreeks die is gekoppeld aan de fout
m_strHelpFile Help-bestand Een pad naar een Windows Help-bestand waarin de gebruiker informatie over het probleem kan krijgen
m_lHelpContext Help-context De context-id voor een onderwerp in het DAO Help-bestand

Zie de structuur CDaoErrorInfo voor meer informatie over de informatie in het CDaoErrorInfo object.

CDaoException::m_scode

Bevat een waarde van het type SCODE waarmee de fout wordt beschreven.

Opmerkingen

Dit is een OLE-code. U hoeft deze waarde zelden te gebruiken, omdat in bijna alle gevallen specifiekere MFC- of DAO-foutinformatie beschikbaar is in de andere CDaoException gegevensleden.

Zie de onderwerpstructuur van OLE-foutcodes in de Windows SDK voor meer informatie over SCODE. Het SCODE-gegevenstype wordt toegewezen aan het HRESULT-gegevenstype.

Zie ook

CException-klasse
Hiërarchiegrafiek