MFC: Utilizar clases de base de datos con documentos y vistas
Puede usar las clases de base de datos MFC con o sin la arquitectura de documento o vista. En este tema se resalta el trabajo con documentos y vistas. Se explica lo siguiente:
Cómo escribir una aplicación basada en formularios mediante un objeto
CRecordView
como vista principal del documento.Cómo usar objetos de conjunto de registros en los documentos y vistas.
Para conocer alternativas, consulte MFC: Utilizar clases de base de datos sin documentos ni vistas.
Escritura de una aplicación basada en formularias
Muchas aplicaciones de acceso a datos se basan en formularios. La interfaz de usuario es un formulario que contiene controles en los que el usuario examina, escribe o edita los datos. Para que su aplicación se base en un formulario, utilice la clase CRecordView
. Al ejecutar el Asistente para aplicaciones MFC y seleccionar el tipo de cliente ODBC en la página Compatibilidad con bases de datos, el proyecto usa CRecordView
para la clase de vista.
En una aplicación basada en formularios, cada objeto de vista de registro almacena un puntero a un objeto CRecordset
. El mecanismo de intercambio de campos de registro (RFX) del marco intercambia datos entre el conjunto de registros y el origen de datos. El mecanismo de intercambio de datos de cuadro de diálogo (DDX) intercambia datos entre los miembros de datos de campo del objeto del conjunto de registros y los controles del formulario. CRecordView
también proporciona funciones de controlador de comandos predeterminadas para navegar de registro a registro en el formulario.
Para crear una aplicación basada en formularios con el Asistente para aplicaciones, consulte Creación de una aplicación de MFC basada en formularios y Compatibilidad con bases de datos, Asistente para aplicaciones MFC.
Para obtener una explicación completa de los formularios, consulte Vistas de registros.
Uso de conjuntos de registros en documentos y vistas
Muchas aplicaciones sencillas basadas en formularios no necesitan documentos. Si la aplicación es más compleja, probablemente quiera usar un documento como proxy para la base de datos, almacenando un objeto CDatabase
que se conecta al origen de datos. Las aplicaciones basadas en formularios suelen almacenar un puntero a un objeto de conjunto de registros en la vista. Otros tipos de aplicaciones de base de datos almacenan conjuntos de registros y objetos CDatabase
en el documento. Estas son algunas posibilidades para usar documentos en aplicaciones de base de datos:
Si tiene acceso a un conjunto de registros en un contexto local, cree un objeto
CRecordset
localmente en funciones miembro del documento o la vista, según sea necesario.Declare un objeto de conjunto de registros como una variable local en una función. Pase NULL al constructor, lo que hace que el marco cree y abra un objeto
CDatabase
temporal automáticamente. Como alternativa, pase un puntero a un objetoCDatabase
. Use el conjunto de registros dentro de la función y deje que se destruya automáticamente cuando se cierre la función.Cuando se pasa NULL a un constructor del conjunto de registros, el marco usa la información devuelta por la función miembro
GetDefaultConnect
del conjunto de registros para crear un objetoCDatabase
y abrirlo. Los asistentes implementanGetDefaultConnect
automáticamente.Si tiene acceso a un conjunto de registros durante la vigencia del documento, inserte uno o varios objetos
CRecordset
en el documento.Construya los objetos del conjunto de registros al inicializar el documento o según sea necesario. Puede escribir una función que devuelva un puntero al conjunto de registros si ya existe o construya y abra el conjunto de registros si aún no existe. Cierre, elimine y vuelva a crear el conjunto de registros según sea necesario o llame a su función miembro
Requery
para actualizar los registros.Si tiene acceso a un origen de datos durante la vigencia del documento, inserte un objeto
CDatabase
o almacene un puntero a un objetoCDatabase
en él.El objeto
CDatabase
administra una conexión al origen de datos. El objeto se construye automáticamente durante la construcción del documento y llama a su función miembroOpen
al inicializar el documento. Al construir objetos del conjunto de registro en funciones miembro del documento, se pasa un puntero al objetoCDatabase
del documento. Esto asocia cada conjunto de registros a su origen de datos. Normalmente, el objeto de base de datos se destruye cuando se cierra el documento. Normalmente, los objetos del conjunto de registros se destruyen cuando salen del ámbito de una función.
Otros factores
Las aplicaciones basadas en formularios a menudo no tienen ningún uso para el mecanismo de serialización de documentos del marco, por lo que es posible que quiera quitar, deshabilitar o reemplazar los comandos Nuevo y Abrir en el menú Archivo. Consulte el artículo Serialización: Serialización frente a entrada/salida de base de datos.
También puede usar las muchas posibilidades de la interfaz de usuario que el marco puede admitir. Por ejemplo, puede usar varios objetos CRecordView
en una ventana divisora, abrir varios conjuntos de registros en distintas ventanas secundarias de la interfaz de documento (MDI), etc.
Es posible que desee implementar la impresión de lo que esté en la vista, ya sea un formulario implementado con CRecordView
o cualquier otra cosa. Como clases derivadas de CFormView
, CRecordView
no admite la impresión, pero puede invalidar la función miembro OnPrint
para permitir la impresión. Para obtener más información, consulte la clase CFormView.
Es posible que no quiera usar documentos y vistas. En ese caso, consulte MFC: Utilizar clases de base de datos sin documentos ni vistas.