anular GetFieldValue (LPCTSTR lpszNameCDBVariantamp; varValuecortonFieldType= DEF&AULT_FIELD_TYPE);
tirar (CDBException, CMemoryException);
anular GetFieldValue (corto nIndexCDBVariantamp; varValuecortonFieldType= DEF&AULT_FIELD_TYPE);
tirar (CDBException, CMemoryException);
&anular GetFieldValue (LPCTSTR lpszNameCStringamp;strValue );
Tiro (CDBException, CMemoryException);
&anular GetFieldValue (corto nIndexCStringamp;strValue );
Tiro (CDBException, CMemoryException);
Parámetros
lpszName
El nombre de un campo.
varValue
Una referencia a un objeto CDBVariant que se va a almacenar el valor del campo.
nFieldType
El tipo de datos de ODBC C del campo. Utilizando el valor predeterminado, DEFAULT_FIELD_TYPE, fuerzas GetFieldValue para determinar el tipo de datos c desde el tipo de datos SQL, basado en la tabla siguiente. De lo contrario, puede especificar los datos directamente escriba o elija un tipo de datos compatible; por ejemplo, puede almacenar cualquier tipo de datos en SQL_C_CHAR.
| Tipo de datos c | Tipo de datos SQL |
| SQL_C_BIT | SQL_BIT |
| SQL_C_UTINYINT | SQL_TINYINT |
| SQL_C_SSHORT | SQL_SMALLINT |
| SQL_C_SLONG | SQL_INTEGER |
| SQL_C_FLOAT | SQL_REAL |
| SQL_C_DOUBLE | SQL_FLOAT SQL_DOUBLE |
| SQL_C_TIMESTAMP | SQL_DATE SQL_TIME SQL_TIMESTAMP |
| SQL_C_CHAR | SQL_NUMERIC SQL_DECIMAL SQL_BIGINT SQL_CHAR SQL_VARCHAR SQL_LONGVARCHAR |
| SQL_C_BINARY | SQL_BINARY SQL_VARBINARY SQL_LONGVARBINARY |
Para obtener más información acerca de los tipos de datos ODBC, vea los temas "Tipos de datos de SQL" y "C los tipos de datos" en el apéndice d de la referencia del programador del SDK de ODBC.
nIndex
El índice de base cero del campo.
strValue
Una referencia a un objeto CString que almacenará el valor del campo se convierte en texto, independientemente del tipo de datos del campo.
Observaciones
Llame a esta función miembro para recuperar datos de los campos del registro actual. Un campo puede buscar por nombre o por índice. Puede almacenar el valor del campo en un objeto CDBVariant o un objeto CString.
Si han implementado la obtención masiva de filas, el registro actual se sitúa siempre en el primer registro en un conjunto de filas. Para utilizar GetFieldValue en un registro dentro de un determinado conjunto de filas, primero debe llamar a la función de miembro de SetRowsetCursorPosition para mover el cursor a la fila deseada dentro de ese conjunto de filas. Luego piden GetFieldValue esa fila. Para implementar la fila granel obtención, debe especificar la opción CRecordset::useMultiRowFetch del parámetro dwOptions en la función miembro Open.
Puede utilizar GetFieldValue dinámicamente buscar campos en tiempo de ejecución, en lugar de enlazarlos estáticamente en tiempo de diseño. Por ejemplo, si se declara un objeto recordset directamente desde CRecordset, debe utilizar GetFieldValue para recuperar los datos del campo; intercambio de campos de registros (RFX) o intercambio masivo de campos de registros (RFX masivo), no se ha implementado.
&Notanbsp; Si se declara un objeto recordset sin derivados de CRecordset, no tiene la biblioteca de cursores de ODBC cargado. La biblioteca de cursores requiere que los registros tienen al menos una columna dependiente; Sin embargo, cuando se utiliza CRecordset directamente, ninguna de las columnas están enlazada. El miembro funciones de control de CDatabase::OpenEx y CDatabase::Open si se cargará la biblioteca de cursores.
GetFieldValue llama a la función API de ODBC SQLGetData. Si el controlador envía el valor SQL_NO_TOTAL para la longitud real del valor del campo, GetFieldValue inicia una excepción. Para obtener más información acerca de SQLGetData, consulte la referencia del programador del SDK de ODBC.
Ejemplo
El ejemplo de código siguiente ilustra las llamadas a GetFieldValue para un objeto recordset declarado directamente desde CRecordset.
/ / Crear y abrir un objeto de base de datos;
/ / no carga la biblioteca de cursores
CDatabase db;
DB.OpenEx (NULL, CDatabase::forceOdbcDialog);
/ / Crear y abrir un objeto recordset
/ / directamente desde CRecordset. Tenga en cuenta que un
/ / tabla debe existir en una base de datos conectada.
/ Usar objeto recordset de tipo forwardOnly para mejor
/ / rendimiento, ya que sólo MoveNext se requiere
CRecordset rs (amp; db);
RS.(CRecordset::forwardOnly, abrir
_T ("seleccionar * de Alguna_tabla"));
/ / Crear un objeto de CDBVariant a
/ / almacenar datos de campo
CDBVariant varValue;
/ / Recorrer el recordset
/ / usando GetFieldValue y
/ / GetODBCFieldCount para recuperar
/ / datos en todas las columnas
corto nFields = rs.(De GetODBCFieldCount);
mientras (! rs.IsEOF ())
{
para (índice corto = 0; índice < nFields; índice ++)
{
RS.GetFieldValue (índice, varValue);
/ / hacer algo con varValue
}
RS.MoveNext (de);
}
RS.(Cerrar);
DB.(Cerrar)
&Notanbsp; A diferencia de la clase DAO CDaoRecordset, CRecordset no tiene una función miembro de SetFieldValue . Si se crea un objeto directamente desde CRecordset, es efectivamente de sólo lectura.
Para obtener más información sobre la obtención masiva de filas, vea el artículo conjunto de registros: obtener registros en masiva (ODBC) en la Guía del programador de Visual C++.
Visió&n General de CRecordset |nbsp; Miembros de clase | Diagrama de jerarquía
Vea tambié&nnbsp;CRecordset::DoFieldExchange, CRecordset::DoBulkFieldExchange, CRecordset::GetODBCFieldCount, CRecordset::GetODBCFieldInfo, CRecordset::SetRowsetCursorPosition