CDaoRecordset:: Open

virtual void Open (int nOpenType = AFX_DAO_USE_DEFAULT_TYPE, LPCTSTR lpszSQL = NULL, int nOptions= 0 );
Tiro (CDaoException, CMemoryException);

virtual void Open (CDaoTableDef *pTableDef,int nOpenType = dbOpenTable, int nOptions= 0 );
Tiro (CDaoException, CMemoryException);

virtual void Open (CDaoQueryDef *pQueryDef,int nOpenType = dbOpenDynaset, int nOptions= 0 );
Tiro (CDaoException, CMemoryException);

Parámetros

nOpenType

Uno de los siguientes valores:

lpszSQL

Un puntero de cadena que contiene uno de los siguientes:

nOptions

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

pTableDef

 Un puntero a un objeto CDaoTableDef . Esta versión sólo es válida para conjuntos de registros de tipo tabla. Cuando se utiliza esta opción, no se utiliza el puntero CDaoDatabase usado para construir el CDaoRecordset ; por el contrario, se utiliza la base de datos en el que reside la definición de tabla.

pQueryDef

Un puntero a un objeto CDaoQueryDef . Esta versión sólo es válida para tipo dynaset y conjuntos de registros de tipo instantánea. Cuando se utiliza esta opción, no se utiliza el puntero CDaoDatabase usado para construir el CDaoRecordset ; por el contrario, se utiliza la base de datos en la que reside el objeto querydef.

Observaciones

Debe llamar a esta función miembro para recuperar los registros para el conjunto de registros. Antes de llamar a Open, debe crear el objeto recordset. Hay varias formas de hacerlo:

Para la versió&n de Abrir que utiliza el parámetro lpszSQL , una vez abierto el juego de registros puede recuperar registros de varias maneras. La primera opción es tener funciones DFX en tu DoFieldExchange. La segunda opción es utilizar el enlace dinámico mediante una llamada a la función de miembro GetFieldValue . Estas opciones pueden ser implementadas por separado o en combinación. Si se combinan, tienes que pasar de la instrucción SQL usted mismo en la llamada Open. Para obtener más información sobre el enlace dinámico, consulte el artículo conjunto de registros DAO: dinámicamente los registros de enlace en la Guía del programador de Visual C++.nbsp;

Cuando se utiliza la segunda versión del abierto donde se pasa un objeto CDaoTableDef , las columnas resultantes estarán disponibles para que pueda enlazar a través de DoFieldExchange y el mecanismo DFX, o enlazar dinámicamente mediante GetFieldValue.

&Notanbsp;  Sólo se puede llamar abierto mediante un objeto CDaoTableDef para conjuntos de registros de tipo tabla.

Cuando se utiliza la tercera versión del abierto donde se pasa un objeto CDaoQueryDef , que se ejecutará la consulta, y las columnas resultantes estará disponible para usted para enlazar a través de DoFieldExchange y el mecanismo DFX y enlazar dinámicamente mediante GetFieldValue.

&Notanbsp;  Sólo se puede llamar abierto mediante un objeto CDaoQueryDef de tipo dynaset y conjuntos de registros de tipo instantánea.

Para la primera versión del abierto que utiliza el parámetro lpszSQL , registros se seleccionan basándose en criterios que se muestra en la siguiente tabla.

Valor del parámetro lpszSQL Registros seleccionados están determinados por Ejemplo
NULL La cadena devuelta por GetDefaultSQL.
Una lista separada por comas de una o más definiciones de tabla o querydef nombres. Todas las columnas representadas en la DoFieldExchange.
"Cliente"
Seleccione lista de columnas FROM tabla lista Las columnas especificadas en el tabledef(s) especificado o querydef(s).
"Seleccionar CustId, Nombre_cliente
DEL cliente"

El procedimiento habitual es pasar NULL al abierto; en ese caso, abierto llama GetDefaultSQL, una función de miembro overridable ClassWizard genera al crear un CDaoRecordset-clase derivada. Este valor da los nombres de tabledef(s) o querydef que especificó en ClassWizard. En su lugar puede especificar otro tipo de información en el parámetro lpszSQL.

Lo que pasa, construye una final cadena SQL para la consulta (la cadena puede tener cláusulaspor SQL donde y orden, agrega a la cadena de lpszSQL pasó) y, a continuación, ejecuta la consulta abierta . Puede examinar la cadena construida mediante una llamada a GetSQL después de llamar a Open .

Los miembros de datos de campo de la clase recordset están enlazados con las columnas de los datos seleccionados. Si se devuelven todos los registros, el primer registro se convierte en el registro actual.

Si desea establecer opciones para el conjunto de registros, como un filtro u ordenación, conjunto m_strSort o m_strFilter después de construir el objeto recordset pero antes de que se llama abierta. Si desea actualizar los registros del conjunto de registros después de que el conjunto de registros ya está abierto, llamar a Requery.

Si se llama abierto sobre un tipo dynaset o un conjunto de registros de tipo instantánea, o si el origen de datos se refiere a una instrucción SQL o un tabledef 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 tabledef representa una tabla asociada, crear un objeto CDaoTableDef y llame a su función de miembro de GetConnect.

Utilizar la bandera dbSeeChanges si desea reventar los cambios realizados por otro usuario o cualquier otro programa en el equipo cuando está editando o eliminando el mismo registro. Por ejemplo, si dos usuarios empezar a editar el mismo registro, el primer usuario que llame a la función de miembro de la actualización se realiza correctamente. Cuando el segundo usuario llama actualización , se produce un CDaoException . Del mismo modo, si el segundo usuario intenta llamar a Eliminar para eliminar el registro, y ya ha sido cambiado por el primer usuario, aparece un CDaoException.

Normalmente, si el usuario obtiene este CDaoException durante la actualización, el código debe actualizar el contenido de los campos y recuperar los valores recién modificados. Si la excepción se produce en el proceso de eliminación, el código puede mostrar los datos del registro nuevos para el usuario y un mensaje que indica que los datos han cambiado recientemente. En este punto, el código puede solicitar una confirmación de que el usuario todavía desea eliminar el registro.

Sugerencia Uso el avance sólo desplazamiento opción (dbForwardOnly) para mejorar el rendimiento cuando su aplicación realiza una sola pasada a través de un conjunto de registros abierto desde un origen de datos ODBC.

Para obtener más información sobre conjuntos de registros de apertura, consulte los artículos conjunto de registros DAO: crear conjuntos de registros y DAO: crear, abrir y cerrar objetos DAO en la Guía del programador de Visual C++. Para obtener información relacionada, vea el tema "Método OpenRecordset" en la ayuda de DAO.

Visió&n General de CDaoRecordset |nbsp; Miembros de clase | Diagrama de jerarquía

Vea tambié&nnbsp;CDaoRecordset::Close, CDaoRecordset::CDaoRecordset

Index