Freigeben über


CFieldExchange-Klasse

Unterstützt die von den Datenbankklassen verwendeten Routinen für den Datensatzfeldaustausch (Record Field Exchange, RFX) und den Massen-Datensatzfeldaustausch (Bulk-RFX).

Syntax

class CFieldExchange

Member

Öffentliche Methoden

Name Beschreibung
CFieldExchange::IsFieldType Gibt "nonzero" zurück, wenn der aktuelle Vorgang für den Typ des zu aktualisierenden Felds geeignet ist.
CFieldExchange::SetFieldType Gibt den Typ des Recordset-Datenelements ( Spalte oder Parameter ) an, dargestellt durch alle folgenden Aufrufe von RFX-Funktionen bis zum nächsten Aufruf von SetFieldType.

Hinweise

CFieldExchange besitzt keine Basisklasse.

Verwenden Sie diese Klasse, wenn Sie Routinen für den Datenaustausch für benutzerdefinierte Datentypen schreiben oder wenn Sie Massenzeilenabrufe implementieren. andernfalls verwenden Sie diese Klasse nicht direkt. RFX und Bulk RFX tauschen Daten zwischen den Felddatenelementen Des Recordset-Objekts und den entsprechenden Feldern des aktuellen Datensatzes in der Datenquelle aus.

Hinweis

Wenn Sie mit den DAO-Klassen (Data Access Objects) anstelle der ODBC-Klassen (Open Database Connectivity) arbeiten, verwenden Sie stattdessen die Klasse CDaoFieldExchange . Weitere Informationen finden Sie im Artikel Overview:Database Programming.

Ein CFieldExchange Objekt stellt die Kontextinformationen bereit, die für den Austausch von Datensatzfeldern oder den Massendatensatz-Feldaustausch benötigt werden. CFieldExchange Objekte unterstützen eine Reihe von Vorgängen, einschließlich Bindungsparametern und Felddatenmembern und Festlegen verschiedener Flags für die Felder des aktuellen Datensatzes. RFX- und Bulk RFX-Vorgänge werden für Recordset-Klassendatenmber von Typen ausgeführt, die enum von FieldType definiert werden.CFieldExchange Mögliche FieldType-Werte sind:

  • CFieldExchange::outputColumn für Felddatenmber.

  • CFieldExchange::inputParam oder CFieldExchange::param für Eingabeparameterdatenm.

  • CFieldExchange::outputParam für Ausgabeparameterdatenm.

  • CFieldExchange::inoutParam für Eingabe-/Ausgabeparameter-Datenmmber.

Die meisten Memberfunktionen und Datenmember der Klasse werden zum Schreiben eigener benutzerdefinierter RFX-Routinen bereitgestellt. Sie werden häufig verwendet SetFieldType . Weitere Informationen finden Sie in den Artikeln Record Field Exchange (RFX) und Recordset (ODBC). Informationen zum Abrufen von Massenzeilen finden Sie im Artikel Recordset: Abrufen von Datensätzen in Massen (ODBC). Ausführliche Informationen zu den globalen Funktionen RFX und Bulk RFX finden Sie im Abschnitt "MFC-Makros und Globals" dieser Referenz unter "Datensatzfeld-Exchange-Funktionen ".

Vererbungshierarchie

CFieldExchange

Anforderungen

Header: afxdb.h

CFieldExchange::IsFieldType

Wenn Sie eine eigene RFX-Funktion schreiben, rufen Sie IsFieldType am Anfang der Funktion auf, um zu ermitteln, ob der aktuelle Vorgang für einen bestimmten Feld- oder Parameterdatenelementtyp (a CFieldExchange::outputColumn, CFieldExchange::inputParam, , CFieldExchange::param, CFieldExchange::outputParamoder CFieldExchange::inoutParam) ausgeführt werden kann.

BOOL IsFieldType(UINT* pnField);

Parameter

pnField
Die sequenzielle Nummer des Feld- oder Parameterdatenelements wird in diesem Parameter zurückgegeben. Diese Zahl entspricht der Reihenfolge des Datenelements in der Funktion "CRecordset::D oFieldExchange " oder "CRecordset::D oBulkFieldExchange" .

Rückgabewert

Nonzero, wenn der aktuelle Vorgang für das aktuelle Feld oder den Parametertyp ausgeführt werden kann.

Hinweise

Folgen Sie dem Modell der vorhandenen RFX-Funktionen.

CFieldExchange::SetFieldType

Sie benötigen einen Aufruf SetFieldType in der DoFieldExchange- oder DoBulkFieldExchange-Außerkraftsetzung Ihrer Recordsetklasse.

void SetFieldType(UINT nFieldType);

Parameter

nFieldType
Ein Wert des enum FieldTypedeklarierten , in CFieldExchange, der eine der folgenden Sein kann:

  • CFieldExchange::outputColumn

  • CFieldExchange::inputParam

  • CFieldExchange::param

  • CFieldExchange::outputParam

  • CFieldExchange::inoutParam

Hinweise

Für Felddatenmember müssen Sie mit einem Parameter von CFieldExchange::outputColumn, gefolgt von Aufrufen der RFX- oder Bulk RFX-Funktionen, aufrufenSetFieldType. Wenn Sie das Abrufen von Massenzeilen nicht implementiert haben, platziert ClassWizard diesen SetFieldType Aufruf für Sie im Feldzuordnungsbereich von DoFieldExchange.

Wenn Sie die Recordset-Klasse parametrisieren, müssen Sie ihn erneut aufrufen SetFieldType , außerhalb eines Feldzuordnungsbereichs, gefolgt von RFX-Aufrufen für alle Parameterdatenmember. Jeder Typ von Parameterdatenmemm muss über einen eigenen SetFieldType Aufruf verfügen. In der folgenden Tabelle werden die verschiedenen Werte unterschieden, an die Sie übergeben SetFieldType können, um die Parameterdatenmmber der Klasse darzustellen:

SetFieldType-Parameterwert Typ des Parameterdatenelements
CFieldExchange::inputParam Eingabeparameter Ein Wert, der an die Abfrage oder gespeicherte Prozedur des Recordsets übergeben wird.
CFieldExchange::param identisch mit CFieldExchange::inputParam.
CFieldExchange::outputParam Ausgabeparameter Ein Rückgabewert der gespeicherten Prozedur des Recordsets.
CFieldExchange::inoutParam Eingabe-/Ausgabeparameter. Ein Wert, der an die gespeicherte Prozedur des Recordsets übergeben und von dieser zurückgegeben wird.

Im Allgemeinen muss jeder Gruppe von RFX-Funktionsaufrufen, die Felddatenmembern zugeordnet sind, oder Parameterdatenmembern ein Aufruf SetFieldTypevorangestellt werden. Der nFieldType-Parameter jedes SetFieldType Aufrufs identifiziert den Typ der Datenmmber, die durch die RFX-Funktionsaufrufe dargestellt werden, die dem SetFieldType Aufruf folgen.

Weitere Informationen zum Behandeln von Ausgabe- und Eingabe-/Ausgabeparametern finden Sie in der CRecordset Memberfunktion FlushResultSet. Weitere Informationen zu den Funktionen RFX und Bulk RFX finden Sie im Thema "Record Field Exchange Functions". Verwandte Informationen zum Abrufen von Massenzeilen finden Sie im Artikel Recordset: Abrufen von Datensätzen in Massen (ODBC).For related information about bulk row fetching, see the article Recordset: Fetching Records in Bulk (ODBC).

Beispiel

Dieses Beispiel zeigt mehrere Aufrufe von RFX-Funktionen mit begleitenden Aufrufen an SetFieldType. Beachten Sie, dass SetFieldType der pFX Zeiger auf ein CFieldExchange Objekt aufgerufen wird.

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);
}

Siehe auch

Hierarchiediagramm
CRecordset-Klasse