CDaoException (Clase)
Representa una condición de excepción que surge de las clases de base de datos MFC basadas en los objetos (DAO) de acceso a datos.
Nota:
El objeto de acceso a datos (DAO) se admite a través de Office 2013. DAO 3.6 es la versión final y está obsoleta.
Sintaxis
class CDaoException : public CException
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
CDaoException::CDaoException | Construye un objeto CDaoException . |
Métodos públicos
Nombre | Descripción |
---|---|
CDaoException::GetErrorCount | Devuelve el número de errores de la colección Errors del motor de base de datos. |
CDaoException::GetErrorInfo | Devuelve la información de error relativa a un objeto de error determinado de la colección Errors. |
Miembros de datos públicos
Nombre | Descripción |
---|---|
CDaoException::m_nAfxDaoError | Contiene un código de error extendido para cualquier error en las clases DAO de MFC. |
CDaoException::m_pErrorInfo | Puntero a un objeto CDaoErrorInfo que contiene información sobre un objeto de error de DAO. |
CDaoException::m_scode | Valor SCODE asociado al error. |
Comentarios
La clase incluye miembros de datos públicos que se pueden usar para determinar la causa de la excepción. Los objetos CDaoException
se crean e inician mediante funciones miembro de las clases de base de datos DAO.
Nota:
Las clases de base de datos DAO son distintas de las clases de base de datos MFC, basadas en la conectividad abierta de base de datos (ODBC). Todos los nombres de las clases de base de datos DAO tienen el prefijo "CDao". Se puede seguir accediendo a orígenes de datos de ODBC usando clases DAO. En general, las clases MFC basadas en DAO son más capaces que las clases MFC basadas en ODBC; las clases basadas en DAO pueden acceder a los datos, incluso mediante controladores ODBC, a través de su propio motor de base de datos. Las clases basadas en DAO también admiten operaciones de lenguaje de definición de datos (DDL), como agregar tablas a través de las clases, sin tener que llamar directamente a DAO. Para obtener información sobre las excepciones producidas por las clases ODBC, vea CDBException.
Se puede acceder a objetos de excepción dentro del ámbito de una expresión CATCH. También se pueden iniciar objetos CDaoException
desde su propio código con la función global AfxThrowDaoException.
En MFC, todos los errores de DAO se expresan como excepciones de tipo CDaoException
. Cuando se detecta una excepción de este tipo, se pueden usar funciones miembro CDaoException
para recuperar información de cualquier objeto de error DAO almacenado en la colección Errors del motor de base de datos. Cada vez que se produce un error, se colocan uno o varios objetos de error en la colección Errors. (Normalmente, la colección contiene solo un objeto de error; si usa un origen de datos ODBC, es más probable que obtenga varios objetos de error). Cuando otra operación DAO genera un error, se borra la colección Errors y el nuevo objeto de error se coloca en la colección Errors. Las operaciones DAO que no generan un error no tienen ningún efecto en la colección Errors.
Para ver los códigos de error de DAO, consulte el archivo DAOERR.H. Para obtener información relacionada, vea el tema sobre errores de acceso a datos interceptables de la Ayuda de DAO.
Para más información sobre el control de excepciones en general o sobre los objetos CDaoException
, vea los artículos Control de excepciones (MFC) y Excepciones: Excepciones de base de datos. El segundo artículo contiene código de ejemplo que ilustra el control de excepciones en DAO.
Jerarquía de herencia
CDaoException
Requisitos
Encabezado: afxdao.h
CDaoException::CDaoException
Construye un objeto CDaoException
.
CDaoException();
Comentarios
Normalmente, el marco crea objetos de excepción cuando el código produce una excepción. Rara vez es necesario construir explícitamente un objeto de excepción. Si quiere iniciar una excepción CDaoException
desde su propio código, llame a la función global AfxThrowDaoException.
Sin embargo, es posible que quiera crear explícitamente un objeto de excepción si realiza llamadas directas a DAO a través de los punteros de interfaz DAO que las clases MFC encapsulan. En ese caso, puede que tenga que recuperar información de error de DAO. Supongamos que se produce un error en DAO cuando se llama a un método DAO a través de la interfaz DAODatabases a la colección Databases de un área de trabajo.
Para recuperar información de errores de DAO
Cree un objeto
CDaoException
.Llame a la función miembro GetErrorCount del objeto de excepción para determinar cuántos objetos de error hay en la colección Errors del motor de base de datos. (Normalmente solo una, a menos que use un origen de datos ODBC).
Llame a la función miembro GetErrorInfo del objeto de excepción para recuperar un objeto de error específico cada vez, por índice en la colección, a través del objeto de excepción. El objeto de excepción se puede considerar como un proxy de un objeto de error DAO.
Examine la estructura actual del objeto CDaoErrorInfo que
GetErrorInfo
devuelve en el miembro de datos m_pErrorInfo. Sus miembros proporcionan información sobre el error de DAO.En el caso de un origen de datos ODBC, repita los pasos 3 y 4 según sea necesario para obtener más objetos de error.
Si ha creado el objeto de excepción en el montón, elimínelo con el operador
delete
cuando termine.
Para obtener más información sobre el control de errores en las clases DAO de MFC, vea el artículo Excepciones: Excepciones de base de datos.
CDaoException::GetErrorCount
Llame a esta función miembro para recuperar el número de objetos de error de DAO de la colección Errors del motor de base de datos.
short GetErrorCount();
Valor devuelto
Número de objetos de error de DAO de la colección Errors del motor de base de datos.
Comentarios
Esta información es útil para recorrer en bucle la colección Errors para recuperar cada uno de uno o varios objetos de error DAO de la colección. Para recuperar un objeto de error por índice o por número de error de DAO, llame a la función miembro GetErrorInfo.
Nota:
Normalmente, solo hay un objeto de error en la colección Errors, Sin embargo, si está trabajando con un origen de datos ODBC, podría haber más de uno.
CDaoException::GetErrorInfo
Devuelve la información de error relativa a un objeto de error determinado de la colección Errors.
void GetErrorInfo(int nIndex);
Parámetros
nIndex
Índice de la información de error de la colección Errors del motor de base de datos, para buscar por índice.
Comentarios
Llame a esta función miembro para obtener los siguientes tipos de información sobre la excepción:
Código de error
Origen
Descripción
Archivo de ayuda
Contexto de ayuda
GetErrorInfo
almacena la información en el miembro de datos m_pErrorInfo
del objeto de excepción. Para obtener una breve descripción de la información devuelta, vea m_pErrorInfo. Si se detecta una excepción de tipo CDaoException
producida por MFC, el miembro m_pErrorInfo
ya estará rellenado. Si decide llamar directamente a DAO, el usuario deberá llamar a la función miembro GetErrorInfo
del objeto de excepción para que m_pErrorInfo
se rellene. Para obtener una descripción más detallada, vea la estructura CDaoErrorInfo.
Para obtener información sobre las excepciones de DAO, así como código de ejemplo, vea el artículo Excepciones: Excepciones de base de datos.
CDaoException::m_nAfxDaoError
Contiene un código de error extendido de MFC.
Comentarios
Este código se proporciona en los casos en los que un componente específico de las clases DAO de MFC da error.
Los valores posibles son:
NO_AFX_DAO_ERROR La operación más reciente no ha producido un error extendido de MFC. Sin embargo, la operación podría haber producido otros errores de DAO u OLE, por lo que convendría consultar m_pErrorInfo y, seguramente, m_scode.
AFX_DAO_ERROR_ENGINE_INITIALIZATION MFC: el motor de base de datos de Microsoft Jet no pudo inicializarse. Puede que OLE no se haya inicializado o que haya sido imposible crear una instancia del objeto del motor de base de datos de DAO. Estos problemas suelen translucir una instalación incorrecta de DAO u OLE.
AFX_DAO_ERROR_DFX_BIND Una dirección usada en una llamada de función de intercambio de campos de registro DAO (DFX) no existe o no es válida (la dirección no se usó para enlazar datos). Puede que se haya pasado una dirección incorrecta en una llamada DFX o que la dirección haya quedado invalidada entre operaciones DFX.
AFX_DAO_ERROR_OBJECT_NOT_OPEN Intentó abrir un conjunto de registros basado en una definición de consulta o en un objeto tabledef que no estaba en un estado abierto.
CDaoException::m_pErrorInfo
Contiene un puntero a una estructura CDaoErrorInfo
que proporciona información sobre el objeto de error DAO que se recuperó por última vez llamando a GetErrorInfo.
Comentarios
Este objeto contiene la siguiente información:
Miembro de CDaoErrorInfo | Información | Significado |
---|---|---|
m_lErrorCode |
Código de error | Código de error de DAO |
m_strSource |
Source | Nombre del objeto o la aplicación origen del error |
m_strDescription |
Descripción | Cadena descriptiva asociada al error |
m_strHelpFile |
Archivo de ayuda | Ruta de acceso a un archivo de Ayuda de Windows donde el usuario puede obtener información sobre el problema |
m_lHelpContext |
Contexto de ayuda | Identificador de contexto de un tema en el archivo de Ayuda de DAO |
Para obtener toda la información incluida en el objeto CDaoErrorInfo
, vea la estructura CDaoErrorInfo.
CDaoException::m_scode
Contiene un valor de tipo SCODE
que describe el error.
Comentarios
Se trata de un código OLE. Rara vez tendrá que usar este valor porque, en casi todos los casos, la información de error de MFC o DAO más específica está disponible en los demás CDaoException
miembros de datos.
Para obtener información sobre SCODE, vea el tema Estructura de códigos de error de OLE en Windows SDK. El tipo de datos SCODE se correlaciona con el tipo de datos HRESULT.