Поделиться через


Класс CFieldExchange

Поддерживает процедуры обмена полями записей (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::outputColumn

  • CFieldExchange::inputParam

  • CFieldExchange::param

  • CFieldExchange::outputParam

  • CFieldExchange::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);
}

См. также

Диаграмма иерархии
Класс CRecordset