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
oderCFieldExchange::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::outputParam
oder 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 FieldType
deklarierten , 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 SetFieldType
vorangestellt 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);
}