MFC: Usando Classes de banco de dados com documentos e modos de exibição

Você pode usar as classes de banco de dados MFC — DAO ou ODBC — com ou sem a arquitetura de exibição do documento. Este tópico enfatiza a trabalhar com documentos e modos de exibição. Ele explica:

  • Como escrever um aplicativo baseado no formulário usando um CRecordView ou CDaoRecordView o objeto como o modo de exibição principal no seu documento.

  • Como usar objetos recordset em seus documentos e os modos de exibição.

  • Outras considerações.

Alternativas, consulte MFC: Usando Classes de banco de dados sem documentos e modos de exibição.

Escrevendo um aplicativo baseado em formulário

Muitos aplicativos de acesso a dados são baseados em formulários. A interface de usuário é um formulário que contém controles, no qual o usuário examina, insere ou edita dados. Para tornar o formulário do aplicativo com base, use a classe CRecordView ou CDaoRecordView. Quando você executar o Assistente de aplicativo do MFC e selecione ODBC o tipo de cliente na Suporte de banco de dados página, o projeto utiliza CRecordView para a classe do modo de exibição. Os assistentes não suportam mais DAO, portanto, se você deseja usar CDaoRecordView, você precisa codificá-lo manualmente.

Em um aplicativo baseado em formulário, cada objeto de exibição do Registro armazena um ponteiro para uma CRecordset ou CDaoRecordset objeto. Mecanismo de troca de (RFX) do campo de registro da estrutura troca de dados entre o conjunto de registros e a fonte de dados. Os dados de caixa de diálogo trocam dados de trocas de mecanismo (DDX) entre os membros de dados de campo do objeto recordset e os controles no formulário. CRecordViewou CDaoRecordView também fornece funções de manipulador de comando padrão para navegação de registro para registro no formulário.

Para criar um aplicativo baseado no formulário com o Assistente de aplicativo, consulte criar um aplicativo do MFC baseada em formulários e suporte a banco de dados, o MFC Application Wizard.

Para obter uma discussão completa sobre formulários, consulte Modos de exibição do registro.

Usando conjuntos de registros em documentos e modos de exibição

Muitos aplicativos baseados em formulário simples não precisam de documentos. Se seu aplicativo é mais complexo, provavelmente desejará usar um documento como um proxy para o banco de dados, armazenando uma CDatabase ou CDaoDatabase objeto que se conecta a fonte de dados. Normalmente, aplicativos baseados em formulário armazenam um ponteiro para um objeto recordset no modo de exibição. Conjuntos de registros de armazenar outros tipos de aplicativos de banco de dados e CDatabase ou CDaoDatabase o objeto do documento. Aqui estão algumas possibilidades do uso de documentos em aplicativos de banco de dados:

  • Se você estiver acessando um conjunto de registros em um contexto local, crie um CRecordset ou CDaoRecordset objeto localmente nas funções de membro do documento ou o modo de exibição, conforme necessário.

    Declare um objeto recordset como uma variável local em uma função. Passar Nulo para o construtor, que faz com que a estrutura criar e abrir um emprego temporário de CDatabase ou CDaoDatabase o objeto para você. Como alternativa, passar um ponteiro para uma CDatabase ou CDaoDatabase objeto. Usar o conjunto de registros dentro da função e deixe-a ser destruído automaticamente quando a função é encerrado.

    Quando você passar Nulo para o construtor de um conjunto de registros, a estrutura usa informações retornadas pelo conjunto de registros GetDefaultConnect a função de membro para criar um CDatabase ou CDaoDatabase objeto e o proprietário de abrir. Os assistentes implementam GetDefaultConnect para você.

  • Se você estiver acessando um conjunto de registros durante o ciclo de vida do documento, incorporar um ou mais CRecordset ou CDaoRecordset objetos no documento.

    Construa os objetos recordset ao inicializar o documento ou conforme necessário. Você pode escrever uma função que retorna um ponteiro para o conjunto de registros, se ele já existe ou construções e abre o conjunto de registros, se ele ainda não existe. Fechar, excluir e recrie o conjunto de registros conforme necessário ou ligue para seu Requery a função de membro para atualizar os registros.

  • Se você estiver acessando uma fonte de dados durante o ciclo de vida do documento, incorpore um CDatabase ou CDaoDatabase de objeto ou armazenar um ponteiro para uma CDatabase ou CDaoDatabase objeto proprietário.

    O CDatabase ou CDaoDatabase objeto gerencia uma conexão com sua fonte de dados. O objeto é construído automaticamente durante a construção de documento e você chamar sua Abrir a função de membro ao inicializar o documento. Quando você construir objetos recordset em funções de membro do documento, você passar um ponteiro para o documento CDatabase ou CDaoDatabase objeto. Isso associa cada conjunto de registros a sua fonte de dados. O objeto de banco de dados geralmente é destruído quando o documento é fechado. Os objetos recordset normalmente são destruídos quando sai do escopo de uma função.

Outros fatores.

Aplicativos baseados em formulário geralmente não possuem qualquer uso para o mecanismo de serialização do documento da estrutura, então você pode querer remover, desativar ou substituir o New e Abrir comandos no arquivo menu. Consulte o artigo serialização: Serialização vs. Entrada/saída de banco de dados.

Talvez você queira fazer usar muitas possibilidades de interface do usuário que a estrutura de suporte. Por exemplo, você poderia usar várias CRecordView ou CDaoRecordView objetos em uma janela do divisor, abrir vários conjuntos de registros em diferentes várias janelas de filho MDI (interface) do documento e assim por diante.

Talvez você queira implementar a impressão de que está no modo de exibição, seja ele um formulário é implementado com CRecordView ou CDaoRecordView ou algo mais. Como as classes derivadas de CFormView, CRecordView e CDaoRecordView não oferecem suporte a impressão, mas você pode substituir o OnPrint a função de membro para permitir a impressão. Para obter mais informações, consulte a classe CFormView.

Não convém usar modos de exibição e de documentos. Nesse caso, consulte MFC: Usando Classes de banco de dados sem documentos e modos de exibição.

Consulte também

Conceitos

Classes de banco de dados MFC (ODBC e DAO)