MFC: usando classes de banco de dados com documentos e exibições
Você pode usar as classes de banco de dados do MFC com ou sem a arquitetura de documento/exibição. Este tópico enfatiza o trabalho com documentos e exibições. Ele explica:
Como escrever um aplicativo baseado em formulário usando um objeto
CRecordView
como a exibição principal em seu documento.Como usar objetos de conjunto de registros em seus documentos e modos de exibição.
Para conhecer alternativas, confira MFC: usando classes de banco de dados sem documentos e exibições.
Escrevendo um aplicativo baseado em formulário
Muitos aplicativos de acesso a dados são baseados em formulário. A interface do usuário é um formulário que contém controles nos quais o usuário examina, insere ou edita dados. Para tornar seu aplicativo baseado em formulário, use a classe CRecordView
. Quando você executa o Assistente de Aplicativo MFC e seleciona o tipo de cliente ODBC na página Suporte ao Banco de Dados, o projeto usa CRecordView
para a classe view.
Em um aplicativo baseado em formulário, cada objeto de exibição de registro armazena um ponteiro para um objeto CRecordset
. O mecanismo rfx (troca de campos de registro) da estrutura troca dados entre o conjunto de registros e a fonte de dados. O mecanismo de DDX (troca de dados de caixa de diálogo) troca dados entre os membros de dados de campo do objeto de conjunto de registros e os controles no formulário. CRecordView
também fornece funções de manipulador de comando padrão para navegar de um registro para outro no formulário.
Para criar um aplicativo baseado em formulário com o assistente de aplicativo, confira Criando um aplicativo MFC baseado em formulário e Suporte ao banco de dados, Assistente de Aplicativo MFC.
Para obter uma discussão completa sobre formulários, confira Exibições de registro.
Usando conjuntos de registros em documentos e exibições
Muitos aplicativos simples baseados em formulário não precisam de documentos. Se o aplicativo é mais complexo, você provavelmente deseja usar um documento como um proxy para o banco de dados, armazenando um objeto CDatabase
que se conecta à fonte de dados. Os aplicativos baseados em formulário geralmente armazenam um ponteiro para um objeto de conjunto de registros no modo de exibição. Outros tipos de aplicativos de banco de dados armazenam conjuntos de registros e o objeto CDatabase
no documento. Aqui estão algumas possibilidades para usar documentos em aplicativos de banco de dados:
Se você estiver acessando um conjunto de registros em um contexto local, crie um objeto
CRecordset
localmente nas funções membro do documento ou na exibição, conforme necessário.Declare um objeto de conjunto de registros como uma variável local em uma função. Passe NULL para o construtor, o que faz com que a estrutura crie e abra um objeto
CDatabase
temporário para você. Como alternativa, passe um ponteiro para um objetoCDatabase
. Use o conjunto de registros dentro da função e deixe-o ser destruído automaticamente quando a função for encerrada.Quando você passa NULL para um construtor de conjunto de registros, a estrutura usa informações retornadas pela função membro
GetDefaultConnect
do conjunto de registros para criar um objetoCDatabase
e abri-lo. Os assistentes implementamGetDefaultConnect
para você.Se você estiver acessando um conjunto de registros durante o tempo de vida do documento, insira um ou mais objetos
CRecordset
em seu documento.Construa os objetos do conjunto de registros quando inicializar o documento ou conforme necessário. Você poderá escrever uma função que retorna um ponteiro para o conjunto de registros se ele já existir ou construir e abrir o conjunto de registros se ele ainda não existir. Feche, exclua e recrie o conjunto de registros conforme necessário ou chame a função membro
Requery
dele para atualizar os registros.Se você estiver acessando uma fonte de dados durante o tempo de vida do documento, insira um objeto
CDatabase
ou armazene um ponteiro para um objetoCDatabase
nela.O objeto
CDatabase
gerencia uma conexão com sua fonte de dados. O objeto é construído automaticamente durante a construção do documento, e você chama a função membroOpen
dele quando inicializa o documento. Ao construir objetos de conjunto de registros em funções membro do documento, você passa um ponteiro para o objetoCDatabase
do documento. Isso associa cada conjunto de registros à respectiva fonte de dados. O objeto de banco de dados geralmente é destruído quando o documento é fechado. Os objetos de conjunto de registros normalmente são destruídos quando saem do escopo de uma função.
Outros fatores
Os aplicativos baseados em formulário geralmente não têm nenhum uso para o mecanismo de serialização de documentos da estrutura, portanto, talvez você queira remover, desabilitar ou substituir os comandos Novo e Abrir no menu Arquivo. Confira o artigo Serialização: serialização em comparação com entrada/saída do banco de dados.
Talvez você também queira usar as muitas possibilidades de interface do usuário às quais a estrutura pode dar suporte. Por exemplo, você pode usar vários objetos CRecordView
em uma janela divisora, abrir vários conjuntos de registros em janelas filho MDI (interface de vários documentos) diferentes e assim por diante.
Talvez você queira implementar a impressão do que estiver em sua exibição, seja um formulário implementado com CRecordView
ou algo diferente. Como classes derivadas de CFormView
, CRecordView
não dá suporte à impressão, mas você pode substituir a função membro OnPrint
para permitir a impressão. Para saber mais, confira a classe CFormView.
Talvez você não queira usar documentos e exibições. Nesse caso, confira MFC: usando classes de banco de dados sem documentos e exibições.