Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Поддерживает процедуры обмена полями записей (RFX) и блочного обмена полями записей (Bulk RFX), используемые классами баз данных.
Синтаксис
class CFieldExchange
Участники
Открытые методы
| Имя | Описание |
|---|---|
| CFieldExchange::IsFieldType | Возвращает ненулевое значение, если текущая операция подходит для типа обновляемого поля. |
| CFieldExchange::SetFieldType | Указывает тип элемента данных набора записей — столбец или параметр, представленный всеми следующими вызовами функций RFX до следующего вызова SetFieldType. |
Замечания
CFieldExchange не имеет базового класса.
Используйте этот класс, если вы пишете подпрограммы обмена данными для пользовательских типов данных или при реализации массового извлечения строк; в противном случае вы не будете напрямую использовать этот класс. RFX и Bulk RFX обмениваются данными между элементами данных поля объекта набора записей и соответствующими полями текущей записи в источнике данных.
Примечание.
Если вы работаете с классами объектов доступа к данным (DAO), а не с классами Open Database Connectivity (ODBC), используйте вместо этого класс CDaoFieldExchange . Дополнительные сведения см. в статье "Обзор:Программирование базы данных".
Объект CFieldExchange предоставляет сведения о контексте, необходимые для обмена полями записей или обмена полями массовой записи. CFieldExchange объекты поддерживают ряд операций, включая параметры привязки и члены данных поля, а также параметры различных флагов в полях текущей записи. Операции RFX и Bulk RFX выполняются в элементах данных класса recordset-class типов, определенных типом enum FieldType в CFieldExchange. Возможные значения FieldType :
CFieldExchange::outputColumnдля элементов данных поля.CFieldExchange::inputParamилиCFieldExchange::paramдля элементов данных входных параметров.CFieldExchange::outputParamдля элементов данных выходных параметров.CFieldExchange::inoutParamдля элементов данных входных и выходных параметров.
Большинство функций-членов класса и членов данных предоставляются для написания собственных пользовательских подпрограмм RFX. Часто используется SetFieldType . Дополнительные сведения см. в статьях "Обмен полями записей( RFX) и набор записей (ODBC)". Дополнительные сведения о массовой выборке строк см. в статье Recordseting Recordseting Records in Bulk (ODBC). Дополнительные сведения о глобальных функциях RFX и bulk RFX см . в разделе "Функции exchange полей записи" в разделе "Макросы MFC" и "Глобальные" этой ссылки.
Иерархия наследования
CFieldExchange
Требования
Заголовок: afxdb.h
CFieldExchange::IsFieldType
Если вы пишете собственную функцию RFX, вызовите IsFieldType в начале функции, чтобы определить, может ли текущая операция выполняться в определенном поле или типе элементов данных параметра (aCFieldExchange::outputColumn, , CFieldExchange::inputParam, CFieldExchange::paramCFieldExchange::outputParamили CFieldExchange::inoutParam).
BOOL IsFieldType(UINT* pnField);
Параметры
pnField
Последовательное число элементов данных поля или параметра возвращается в этом параметре. Это число соответствует порядку элемента данных в функции CRecordset::D oFieldExchange или CRecordset::D oBulkFieldExchange .
Возвращаемое значение
Ненулевое значение, если текущая операция может выполняться в текущем поле или типе параметров.
Замечания
Следуйте модели существующих функций RFX.
CFieldExchange::SetFieldType
Вам нужен вызов SetFieldType в переопределении DoFieldExchange класса DoFieldExchange или DoBulkFieldExchange .
void SetFieldType(UINT nFieldType);
Параметры
nFieldType
Значение, объявленное enum FieldTypeв CFieldExchange, которое может быть одним из следующих значений:
CFieldExchange::outputColumnCFieldExchange::inputParamCFieldExchange::paramCFieldExchange::outputParamCFieldExchange::inoutParam
Замечания
Для элементов данных поля необходимо вызвать параметр, CFieldExchange::outputColumnза которым следует вызовы SetFieldType функций RFX или Bulk RFX. Если вы не реализовали массовое получение строк, classWizard помещает этот SetFieldType вызов в раздел DoFieldExchangeкарты полей.
При параметризации класса набора записей необходимо снова вызвать SetFieldType вне любого раздела карты полей, а затем вызовы RFX для всех элементов данных параметра. Каждый тип элемента данных параметра должен иметь собственный SetFieldType вызов. В следующей таблице различаются значения, которые можно передать для SetFieldType представления элементов данных параметров класса:
| Значение параметра SetFieldType | Тип элемента данных параметра |
|---|---|
CFieldExchange::inputParam |
Входной параметр. Значение, передаваемое в запрос набора записей или хранимую процедуру. |
CFieldExchange::param |
то же самое, что CFieldExchange::inputParamи . |
CFieldExchange::outputParam |
Выходной параметр. Возвращаемое значение хранимой процедуры набора записей. |
CFieldExchange::inoutParam |
Параметр input/output. Значение, передаваемое и возвращаемое из хранимой процедуры набора записей. |
Как правило, каждая группа вызовов функций RFX, связанных с элементами данных поля или элементами данных параметров, должна предшествовать вызову SetFieldType. Параметр nFieldType каждого SetFieldType вызова определяет тип элементов данных, представленных вызовами функции RFX, которые следуют за вызовомSetFieldType.
Дополнительные сведения об обработке выходных и входных и выходных параметров см. в функции-члене CRecordset FlushResultSet. Дополнительные сведения о функциях RFX и Bulk RFX см. в разделе "Функции Exchange полей записи". Дополнительные сведения о выборке массовых строк см. в статье Recordseting Recordseting Records in Bulk (ODBC).
Пример
В этом примере показано несколько вызовов функций RFX с сопутствующими вызовами SetFieldType. Обратите внимание, что SetFieldType вызывается через pFX указатель на CFieldExchange объект.
void CSections::DoFieldExchange(CFieldExchange *pFX)
{
pFX->SetFieldType(CFieldExchange::outputColumn);
RFX_Text(pFX, _T("[CourseID]"), m_CourseID);
RFX_Text(pFX, _T("[InstructorID]"), m_InstructorID);
RFX_Text(pFX, _T("[RoomNo]"), m_RoomNo);
RFX_Text(pFX, _T("[Schedule]"), m_Schedule);
// output parameter
pFX->SetFieldType(CFieldExchange::outputParam);
RFX_Long(pFX, _T("Instructor_Count"), m_nCountParam);
// input parameter
pFX->SetFieldType(CFieldExchange::inputParam);
RFX_Text(pFX, _T("Department_Name"), m_strNameParam);
}