Класс 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::param
CFieldExchange::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);
}