Compartir a través de


CDaoRecordset::Open

Debe llamar a esta función miembro para recuperar los registros del conjunto de registros.

virtual void Open( 
   int nOpenType = AFX_DAO_USE_DEFAULT_TYPE, 
   LPCTSTR lpszSQL = NULL, 
   int nOptions = 0  
); 
virtual void Open( 
   CDaoTableDef* pTableDef, 
   int nOpenType = dbOpenTable, 
   int nOptions = 0  
); 
virtual void Open( 
   CDaoQueryDef* pQueryDef, 
   int nOpenType = dbOpenDynaset, 
   int nOptions = 0  
);

Parámetros

  • nOpenType
    Uno de los valores siguientes:

    • Conjunto de registros de dynaset- tipo dedbOpenDynaset con el desplazamiento bidireccional. Activado de forma predeterminada.

    • Conjunto de registros de tabla- tipo dedbOpenTable con el desplazamiento bidireccional.

    • Conjunto de registros de instantánea- tipo dedbOpenSnapshot con el desplazamiento bidireccional.

  • lpszSQL
    Un puntero de cadena que contiene uno de los siguientes:

    • Un puntero NULL.

    • el nombre de uno o más tabledefs y/o querydefs (separados por comas).

    • Una instrucción SQL Select (opcionalmente con SQL Dónde o la cláusula de OrdenarBY ).

    • una consulta de paso a través.

  • nOptions
    Uno o más de las opciones enumeradas a continuación. El valor predeterminado es 0. Los valores posibles son:

    • dbAppendOnly puede anexar sólo los nuevos registros (conjunto de registros de dynaset- tipo sólo). Esta opción significa literalmente los registros que pueden ser anexados únicamente. Las clases de base de datos ODBC de MFC tienen una opción de anexar-solamente que permite que anexans los registros se recuperen y.

    • El conjunto de registros dedbForwardOnly The es una instantánea adelantada - sólo de desplazamiento.

    • dbSeeChanges genera una excepción si otro usuario está cambiando datos que está editando.

    • Los usuarios dedbDenyWrite Otros no pueden modificar o agregar registros.

    • Los usuarios dedbDenyRead Otros no pueden ver registros (conjunto de registros de tabla- tipo sólo).

    • dbReadOnly puede ver únicamente los registros; otros usuarios pueden modificarlos.

    • Se permiten las actualizaciones incoherentes dedbInconsistent (conjunto de registros de dynaset- tipo sólo).

    • Se permiten las actualizaciones coherentes dedbConsistent Solo (conjunto de registros de dynaset- tipo sólo).

    NotaNota

    Las constantes dbConsistent y dbInconsistent son mutuamente excluyentes.Puede utilizar uno u otro, pero no ambos en una instancia determinada de Abrir.

  • pTableDef
    un puntero a un objeto de CDaoTableDef . Esta versión solo es válida para los conjuntos de registros de tabla-tipo. Con esta opción, el puntero de CDaoDatabase utilizado para construir CDaoRecordset no se utiliza; en su lugar, se utiliza la base de datos en la que el definición reside.

  • pQueryDef
    un puntero a un objeto de CDaoQueryDef . Esta versión solo es válida para los conjuntos de registros de tipo dinámico y de tipo instantánea. Con esta opción, el puntero de CDaoDatabase utilizado para construir CDaoRecordset no se utiliza; en su lugar, se utiliza la base de datos en la que la tabla reside.

Comentarios

Antes de llamar a Abrir, debe crear el objeto de conjunto de registros. Hay varias maneras de hacerlo:

  • Cuando se construye el objeto de conjunto de registros, pase un puntero a un objeto de CDaoDatabase que ya está abierto.

  • Cuando se construye el objeto de conjunto de registros, pase un puntero a un objeto de CDaoDatabase que no está abierto. El conjunto de registros abre un objeto de CDaoDatabase , pero no se cerrará él cuando se cierra el objeto de conjunto de registros.

  • Cuando se construye el objeto de conjunto de registros, pase un puntero NULL. El objeto de conjunto de registros llama a GetDefaultDBName para obtener el nombre del archivo de Microsoft Access .MDB para abrir. El conjunto de registros a abrir un objeto de CDaoDatabase y lo mantiene abierta mientras el conjunto de registros esté abierto. Cuando se llama a Cerrar en el conjunto de registros, el objeto de CDaoDatabase también se cierra.

    NotaNota

    Cuando se abre el conjunto de registros el objeto de CDaoDatabase , abra el origen de datos con acceso no exclusivo.

Para la versión de Abrir que utiliza el parámetro de lpszSQL , una vez que el conjunto de registros está abierto puede recuperar los registros de varias maneras. la primera opción es tener funciones de DFX en DoFieldExchange. La segunda opción es utilizar el enlace dinámico llamando a la función miembro de GetFieldValue . Estas opciones se pueden implementar de forma independiente o en combinación. Si se combinan, tendrá que pasar en la instrucción SQL manualmente en la llamada a Abrir.

Cuando utilice la segunda versión de Abrir donde se pasa en un objeto de CDaoTableDef , las columnas resultantes estarán disponibles para que enlace mediante DoFieldExchange y el mecanismo de DFX, y/o enlazados dinámicamente mediante GetFieldValue.

NotaNota

Puede llamar a Abrir utilizando un objeto de CDaoTableDef para conjuntos de registros de tabla-tipo.

Cuando se utiliza la tercera versión de Abrir donde se pasa en un objeto de CDaoQueryDef , la consulta se ejecuta, y las columnas resultantes estarán disponibles para que enlace mediante DoFieldExchange y el mecanismo de DFX, y/o enlazados dinámicamente mediante GetFieldValue.

NotaNota

Puede llamar a Abrir utilizando un objeto de CDaoQueryDef para conjuntos de registros de tipo dinámico y de tipo instantánea.

Para la primera versión de Abrir que utiliza el parámetro de lpszSQL , los registros son seleccionado en función de los criterios mostrados en la tabla siguiente.

Valor del parámetro lpszSQL

Los registros seleccionados se determinan por

Ejemplo

NULL

la cadena devuelta por GetDefaultSQL.

 

Una lista separada por comas de uno o más tabledefs o nombres de tabla.

todas las columnas representadas en DoFieldExchange.

"Customer"

tabla-lista de desde de la lista de columnas deSelect

Las columnas especificadas de especificado

"SELECT CustId, CustName

FROM Customer"

El procedimiento habitual es pasar NULL a Abrir; en ese caso, Abrir llama GetDefaultSQL, una función overridable miembro que ClassWizard genera al crear CDaoRecordset- clase derivada. Este valor proporciona Puede especificar otra información del parámetro de lpszSQL .

Todo lo que se pasa, las construcciones de Abrir una cadena de SQL final para la consulta (string puede tener SQL Dónde y cláusulas de OrdenarBY anexadas a la cadena de lpszSQL que se pasó) y después ejecuta la consulta. Puede examinar la cadena construida llamando a GetSQL después de llamar a Abrir.

Enlazados a los miembros de datos de campo de la clase de conjunto de registros a las columnas de datos seleccionado. Si se devuelven algunos, el primer registro es el registro actual.

Si desea establecer opciones para el conjunto de registros, como un filtro o una ordenación, establezca m_strSort o m_strFilter después de crear el objeto de conjunto de registros y antes de que se llama a Abrir. Si desea actualizar los registros del conjunto de registros después del conjunto de registros esté abierto, llame a Requery.

Si llama a Abrir en un conjunto de registros de tipo dinámico o de tipo instantánea, o si el origen de datos hace referencia a una instrucción SQL o un definición que representa una tabla asociada, no puede utilizar dbOpenTable para el argumento de tipo; si lo hace, MFC produce una excepción. Para determinar si un objeto de definición representa una tabla asociada, cree un objeto de CDaoTableDef y llame a su función miembro de GetConnect .

Utilice el marcador de dbSeeChanges si desea aumentar la captura los cambios realizados por otro usuario u otro programa en el equipo cuando se editan o que elimina el mismo registro. Por ejemplo, si dos usuarios inician editar el mismo registro, el primer usuario para llamar a la función miembro de Update correctamente. Cuando Update llama el segundo usuario, se produce CDaoException . De igual forma, si el segundo usuario intenta llamar a Eliminar para eliminar el registro, y ha cambiado ya por el primer usuario, CDaoException aparece.

Normalmente, si el usuario obtiene este CDaoException mientras actualiza, el código debe actualizar el contenido de los campos y recuperar los valores recién modificados. Si la excepción actual de eliminar, el código puede mostrar los datos del nuevo registro al usuario y un mensaje que indicaban que los datos han cambiado recientemente. En este punto, el código puede solicitar una confirmación al usuario aún desee eliminar el registro.

SugerenciaSugerencia

Utilice la opción avance y de desplazamiento (dbForwardOnly) de mejorar el rendimiento cuando la aplicación crea un único paso a través de un conjunto de registros abierto de un origen de datos ODBC.

Para obtener información relacionada, vea el tema “método de OpenRecordset” en la Ayuda de DAO.

Requisitos

encabezado: afxdao.h

Vea también

Referencia

CDaoRecordset Class

Gráfico de jerarquías

CDaoRecordset::Close

CDaoRecordset::CDaoRecordset