Ser

virtualBOOLAbierto (UINTnOpenType=AFX_DB_USE_DEFAULT_TYPE,LPCTSTRlpszSQL=,NULL,DWORDdwOptions=ninguno);
tirar ( CDBException, CMemoryException );

Valor devuelto

Distinto de cero si se abrió correctamente el objeto CRecordset ; caso contrario 0 si CDatabase::Open (si llama) devuelve 0.

Parámetros

nOpenType

Acepte el valor predeterminado, AFX_DB_USE_DEFAULT_TYPE, o utilice uno de los siguientes valores de la enumeración OpenType:

lpszSQL

Un puntero de cadena que contiene uno de los siguientes:

dwOptions

Una máscara de bits que puede especificar una combinación de los valores enumerados a continuación. Algunos de estos son mutuamente excluyentes. El valor predeterminado es ninguno.

Observaciones

Debe llamar a esta función miembro para ejecutar la consulta definida por el conjunto de registros. Antes de llamar a Open, debe crear el objeto recordset.

Conexión del conjunto de registros en el origen de datos depende de cómo se construye el objeto recordset antes de llamar a Open. Si se pasa un objeto CDatabase al constructor de conjunto de registros que no se ha conectado a la fuente de datos, esta función miembro utiliza GetDefaultConnect para intentar abrir el objeto de base de datos. Si se pasa NULL al constructor de conjunto de registros, el constructor crea un objeto CDatabase para usted y abierto intenta conectar el objeto de base de datos. Para obtener más detalles sobre el cierre de registros y la conexión en estas circunstancias diferentes, vea Cerrar.

&Notanbsp;  Acceso a un origen de datos mediante un objeto CRecordset siempre es compartida. A diferencia de la clase CDaoRecordset , no puede utilizar un objeto CRecordset para abrir un origen de datos con acceso exclusivo.

Cuando usted llama abierta, una consulta, normalmente una instrucción SQL, Seleccione , selecciona registros 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.
Nombre de la tabla SQL Todas las columnas de la tabla lista en DoFieldExchange o DoBulkFieldExchange.
 "Cliente"
Nombre de consulta predefinida (procedimiento almacenado) Las columnas de que la consulta se define para volver.
"{call OverDueAccts}"
Seleccione lista de columnas FROM tabla lista Las columnas especificadas en las tablas especificadas.
"Seleccionar CustId, Nombre_cliente del cliente"

! Adverte&ncianbsp;  Tenga cuidado de no insertar espacios en blanco adicionales en la cadena SQL. Por ejemplo, si inserta un espacio en blanco entre la llave y la palabra clave CALL , MFC malinterpretan la cadena SQL como un nombre de tabla y incorporar en una instrucción SELECT , que dará lugar a una excepción que se produce. Del mismo modo, si su consulta predefinida utiliza un parámetro de salida, no insertar espacios en blanco entre la llave y el '?' símbolo. Por último, no debe insertar espacios en blanco antes de la llave en una instrucción CALL o antes de la palabra clave de Seleccionar en un articulo de Seleccionar.

El procedimiento habitual es pasar NULL al abierto; en este caso, llama abierta GetDefaultSQL. Si está utilizando una clase derivada de CRecordset , GetDefualtSQL da los nombres de tabla especificado 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áusulas SQL donde y ORDER BY 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. Para obtener información adicional acerca de cómo el conjunto de registros crea una instrucción SQL y selecciona los registros, consulte el artículo conjunto de registros: cómo se seleccionan los registros (ODBC) en la Guía del programador de Visual C++.

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 o tipo, especifique estas después de construir el objeto recordset pero antes de llamar a Open. Si desea actualizar los registros del conjunto de registros después de que el conjunto de registros ya está abierto, llamar a Requery.

Para obtener más información, incluidos ejemplos adicionales, consulte los artículos Conjunto de registros (ODBC), conjunto de registros: cómo se seleccionan los registros (ODBC), y Recordset: creación y cierre de registros (ODBC) en la Guía del programador de Visual C++.

Ejemplo

Ejemplos de código siguientes muestran distintas formas de la convocatoria abierta.

/ / rs es un CRecordset o
/ / Derivada de CRecordset objeto

/ / Rs abiertos mediante la instrucción de SQL predeterminado,
/ / implementar marcadores y desactivar
/ / comprobación automática sucio campo
RS.Abierto (CRecordset::snapshot, &NULL,
 nbsp;       CRecordset::useBookmarks |
         CRecordset::noDirtyFieldCheck);

/ / Pasar una instrucción SELECT completa
/ / y abierto como un dinámico
RS.(CRecordset::dynaset, abrir
         _T ("select L_Name de cliente"));

/ / Aceptar los valores predeterminados
RS.(Abierto)

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

Vea tambié&nnbsp;CRecordset::CRecordset, CRecordset::Close, CRecordset::GetDefaultSQL, CRecordset::GetSQL, CRecordset::m_strFilter, CRecordset::m_strSort, CRecordset::Requery

Index