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 o trabalho com documentos e modos de exibição.Ele explica:
Como escrever um aplicativo baseado em formulário usando um CRecordView ou CDaoRecordView objeto como no modo de exibição principal do documento.
Como usar objetos de conjunto de registros em documentos e 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 do usuário é um formulário contendo controles em que 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 selecionar ODBC tipo de cliente na Suporte de banco de dados página, o projeto utiliza CRecordView para a classe de modo de exibição.Os assistentes não há mais suportam 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 um CRecordset ou CDaoRecordset objeto.Mecanismo de troca (RFX) de campo de registro da estrutura troca 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 padrão funções do manipulador de comando de navegação de registro para registro no formulário.
Para criar um aplicativo baseado em formulário com o Assistente de aplicativo, consulte criar um aplicativo do MFC baseada em formulários e suporte de banco de dados, o Assistente de aplicativo MFC.
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, você provavelmente deseja usar um documento como um proxy para o banco de dados, armazenando um CDatabase ou CDaoDatabase objeto que se conecta à fonte de dados.Aplicativos baseados em formulário normalmente armazenam um ponteiro para um objeto recordset no modo de exibição.Outros tipos de aplicativos de banco de dados armazenam conjuntos de registros e CDatabase ou CDaoDatabase o objeto no documento.Aqui estão algumas possibilidades de uso de documentos em aplicativos de banco de dados:
Se você estiver acessando um conjunto de registros em um contexto local, criar um CRecordset ou CDaoRecordset objeto localmente em funções de membro do documento ou a 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 temporário CDatabase ou CDaoDatabase objeto para você.Como alternativa, passar um ponteiro para um CDatabase ou CDaoDatabase objeto.Usar o conjunto de registros dentro da função e deixe-a ser destruído automaticamente quando a função termina.
Quando você passar Nulo para um construtor de conjunto de registros, a estrutura usa informações retornadas pelo conjunto de registros GetDefaultConnect função de membro para criar um CDatabase ou CDaoDatabase de objeto e abri-lo.Os assistentes implementam GetDefaultConnect para você.
Se você estiver acessando um conjunto de registros durante tempo de vida do documento, incorporar um ou mais CRecordset ou CDaoRecordset objetos no documento.
Construa os objetos recordset quando você 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 recriar o conjunto de registros conforme necessário ou chamar seu Requery função de membro para atualizar os registros.
Se você está acessando uma fonte de dados durante a vida útil de seu documento, incorpore um CDatabase ou CDaoDatabase de objeto ou armazenar um ponteiro para um CDatabase ou CDaoDatabase objeto nele.
O CDatabase ou CDaoDatabase objeto gerencia uma conexão à fonte de dados.O objeto é construído automaticamente durante a construção de documento e chamar seus Abrir função de membro ao inicializar o documento.Quando você constrói objetos recordset em funções de membro do documento, você passa 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 sair do escopo de uma função.
Outros fatores
Aplicativos baseados em formulário geralmente não têm qualquer uso para o mecanismo de serialização do documento do framework, então você pode querer remover, desativar ou substituir o New e Abrir comandos na arquivo menu.Consulte o artigo serialização: serialização vs. Banco de dados de entrada/saída.
Talvez você queira fazer uso de muitas possibilidades de interface do usuário que a estrutura pode oferecer suporte.Por exemplo, você pode usar várias CRecordView ou CDaoRecordView objetos em uma janela separadora, abrir vários conjuntos de registros 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 função de membro para permitir a impressão.Para obter mais informações, consulte a classe CFormView.
Não convém usar em todos os documentos e modos de exibição.Nesse caso, consulte MFC: usando Classes de banco de dados sem documentos e modos de exibição.