Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
Representa uma condição de exceção decorrente das classes de base de dados MFC baseadas em objetos de acesso a dados (DAO).
Observação
O Objeto de Acesso a Dados (DAO) é suportado através do Office 2013. O DAO 3.6 é a versão final e está obsoleto.
Sintaxe
class CDaoException : public CException
Membros
Construtores Públicos
| Nome | Description |
|---|---|
| CDaoException::CDaoException | Constrói um CDaoException objeto. |
Métodos Públicos
| Nome | Description |
|---|---|
| CDaoException::GetErrorCount | Devolve o número de erros na coleção de Erros do motor de base de dados. |
| CDaoException::GetErrorInfo | Devolve informação de erro sobre um determinado objeto de erro na coleção Erros. |
Membros de Dados Públicos
| Nome | Description |
|---|---|
| CDaoException::m_nAfxDaoError | Contém um código de erro estendido para qualquer erro nas classes DAO MFC. |
| CDaoException::m_pErrorInfo | Um apontador para um objeto CDaoErrorInfo que contém informação sobre um objeto de erro DAO. |
| CDaoException::m_scode | O valor SCODE associado ao erro. |
Observações
A aula inclui membros de dados públicos que pode usar para determinar a causa da exceção.
CDaoException os objetos são construídos e lançados por funções membros das classes de base de dados DAO.
Observação
As classes de base de dados DAO são distintas das classes de base de dados MFC baseadas em Conectividade de Base de Dados Aberta (ODBC). Todos os nomes de classes de base de dados DAO têm o prefixo "CDao". Ainda podes aceder a fontes de dados ODBC com as classes DAO. Em geral, as classes MFC baseadas em DAO são mais capazes do que as classes MFC baseadas em ODBC; as classes baseadas em DAO podem aceder a dados, incluindo através de drivers ODBC, através do seu próprio motor de base de dados. As classes baseadas em DAO também suportam operações de Linguagem de Definição de Dados (DDL), como adicionar tabelas através das classes, sem necessidade de chamar diretamente o DAO. Para informações sobre exceções lançadas pelas classes ODBC, consulte CDBException.
Pode aceder a objetos de exceção dentro do âmbito de uma expressão CATCH . Também podes lançar CDaoException objetos do teu próprio código com a função global AfxThrowDaoException .
No MFC, todos os erros DAO são expressos como exceções, do tipo CDaoException. Quando detetar uma exceção deste tipo, pode usar CDaoException funções membros para recuperar informação de quaisquer objetos de erro DAO armazenados na coleção de Erros do motor de base de dados. À medida que ocorre cada erro, um ou mais objetos de erro são colocados na coleção Erros. (Normalmente, a coleção contém apenas um objeto de erro; se estiver a usar uma fonte de dados ODBC, é mais provável que receba múltiplos objetos de erro.) Quando outra operação DAO gera um erro, a coleção de Erros é apagada e o novo objeto de erro é colocado na coleção de Erros. As operações DAO que não geram erro não têm qualquer efeito na coleção de Erros.
Para códigos de erro DAO, consulte o ficheiro DAOERR.H. Para informações relacionadas, consulte o tópico "Erros de Acesso a Dados Trappable" na Ajuda DAO.
Para mais informações sobre o tratamento de exceções em geral, ou sobre CDaoException objetos, consulte os artigos Tratamento de Exceções (MFC) e Exceções: Exceções de Base de Dados. O segundo artigo contém código de exemplo que ilustra o tratamento de exceções em DAO.
Hierarquia de herança
CDaoException
Requerimentos
Cabeçalho:afxdao.h
CDaoException::CDaoException
Constrói um CDaoException objeto.
CDaoException();
Observações
Normalmente, o framework cria objetos de exceção quando o seu código lança uma exceção. Raramente é necessário construir explicitamente um objeto de exceção. Se quiseres lançar a CDaoException do teu próprio código, chama a função global AfxThrowDaoException.
No entanto, podes querer criar explicitamente um objeto de exceção se estiveres a fazer chamadas diretas para o DAO através dos ponteiros da interface do DAO que as classes MFC encapsulam. Nesse caso, pode ser necessário recuperar informação de erro do DAO. Suponha que ocorre um erro no DAO quando chama um método DAO através da interface DAODatabases para a coleção de bases de dados de um workspace.
Para recuperar a informação de erro do DAO
Constrói um
CDaoExceptionobjeto.Chame a função membro GetErrorCount do objeto de exceção para determinar quantos objetos de erro existem na coleção Erros do motor de base de dados. (Normalmente só uma, a menos que estejas a usar uma fonte de dados ODBC.)
Chame a função membro GetErrorInfo do objeto exceção para recuperar um objeto de erro específico de cada vez, por índice na coleção, através do objeto exceção. Pense no objeto exceção como um proxy para um objeto de erro DAO.
Examine a estrutura atual CDaoErrorInfo que
GetErrorInfodevolve o m_pErrorInfo membro de dados. Os seus membros fornecem informações sobre o erro DAO.No caso de uma fonte de dados ODBC, repita os passos 3 e 4 conforme necessário, para obter mais objetos de erro.
Se construíste o objeto exceção no heap, apaga-o com o
deleteoperador quando terminares.
Para mais informações sobre o tratamento de erros nas classes MFC DAO, consulte o artigo Exceções: Exceções à Base de Dados.
CDaoException::GetErrorCount
Chame esta função membro para recuperar o número de objetos de erro DAO na coleção de Erros do motor da base de dados.
short GetErrorCount();
Valor de retorno
O número de objetos de erro DAO na coleção de Erros do motor de base de dados.
Observações
Esta informação é útil para percorrer a coleção Erros para recuperar cada um ou mais objetos de erro DAO na coleção. Para recuperar um objeto de erro por índice ou por número de erro do DAO, ligue para a função membro GetErrorInfo .
Observação
Normalmente, existe apenas um objeto de erro na coleção Erros. Se estiver a trabalhar com uma fonte de dados ODBC, no entanto, pode haver mais do que uma.
CDaoException::GetErrorInfo
Devolve informação de erro sobre um determinado objeto de erro na coleção Erros.
void GetErrorInfo(int nIndex);
Parâmetros
nIndex
O índice da informação de erro na coleção de Erros do motor de base de dados, para consulta por índice.
Observações
Chame esta função membro para obter os seguintes tipos de informação sobre a exceção:
Código de erro
Fonte
Description
Ficheiro de ajuda
Contexto de ajuda
GetErrorInfo armazena a informação no membro de dados do m_pErrorInfo objeto exceção. Para uma breve descrição da informação devolvida, veja m_pErrorInfo. Se apanhares uma exceção do tipo CDaoException lançada pela MFC, o m_pErrorInfo membro já estará preenchido. Se optar por chamar diretamente o DAO, deve chamar você mesmo a função membro do GetErrorInfo objeto de exceção para preencher m_pErrorInfo. Para uma descrição mais detalhada, consulte a estrutura CDaoErrorInfo .
Para informações sobre exceções DAO e código de exemplo, consulte o artigo Exceções: Exceções de Base de Dados.
CDaoException::m_nAfxDaoError
Contém um código de erro MFC estendido.
Observações
Este código é fornecido nos casos em que um componente específico das classes MFC DAO cometeu erros.
Os valores possíveis são:
NO_AFX_DAO_ERROR A operação mais recente não resultou num erro prolongado do MFC. No entanto, a operação pode ter produzido outros erros do DAO ou OLE, por isso deve verificar m_pErrorInfo e possivelmente m_scode.
AFX_DAO_ERROR_ENGINE_INITIALIZATION MFC não conseguiu inicializar o motor da base de dados Microsoft Jet. O OLE pode não ter conseguido inicializar, ou pode ter sido impossível criar uma instância do objeto do motor de base de dados DAO. Estes problemas geralmente sugerem uma má instalação de DAO ou OLE.
AFX_DAO_ERROR_DFX_BIND Um endereço usado numa chamada de função de troca de campos de registo DAO (DFX) não existe ou é inválido (o endereço não foi usado para atribuir dados). Pode ter recebido um endereço errado numa chamada DFX, ou o endereço pode ter-se tornado inválido entre operações DFX.
AFX_DAO_ERROR_OBJECT_NOT_OPEN Tentaste abrir um conjunto de registos baseado num querydef ou num objeto tabledef que não estava em estado aberto.
CDaoException::m_pErrorInfo
Contém um ponteiro para uma CDaoErrorInfo estrutura que fornece informação sobre o objeto de erro DAO que recuperou pela última vez ao chamar GetErrorInfo.
Observações
Este objeto contém a seguinte informação:
| Membro do CDaoErrorInfo | Informação | Meaning |
|---|---|---|
m_lErrorCode |
Código de Erro | O código de erro DAO |
m_strSource |
Fonte | O nome do objeto ou aplicação que originalmente gerou o erro |
m_strDescription |
Description | Uma cadeia descritiva associada ao erro |
m_strHelpFile |
Ficheiro de Ajuda | Um caminho para um ficheiro de Ajuda do Windows onde o utilizador pode obter informações sobre o problema |
m_lHelpContext |
Contexto de Ajuda | O ID de contexto para um tópico no ficheiro de Ajuda do DAO |
Para detalhes completos sobre a informação contida no CDaoErrorInfo objeto, consulte a estrutura CDaoErrorInfo .
CDaoException::m_scode
Contém um valor de tipo SCODE que descreve o erro.
Observações
Isto é um código OLE. Raramente precisará de usar este valor porque, em quase todos os casos, informação de erro MFC ou DAO mais específica está disponível nos outros CDaoException membros de dados.
Para informações sobre o SCODE, consulte o tópico Estrutura dos Códigos de Erro OLE no Windows SDK. O tipo de dados SCODE corresponde ao tipo de dados HRESULT.