Compartir a través de


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:

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 objeto CDatabase. 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 objeto CDatabase y abrirlo. Los asistentes implementan GetDefaultConnect 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 objeto CDatabase 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 miembro Open al inicializar el documento. Al construir objetos del conjunto de registro en funciones miembro del documento, se pasa un puntero al objeto CDatabase 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.

Consulte también

Clases de bases de datos MFC