Freigeben über


CRecordset::DoFieldExchange

Aufgerufen für den Datenaustausch (in beide Richtungen) zwischen den Felddatenmembern des Recordsets und dem entsprechenden Datensatz in der Datenquelle. Implementiert den Datensatzfeldaustausch (RFX).

virtual void DoFieldExchange( 
   CFieldExchange* pFX  
);

Parameter

  • pFX
    Einen Zeiger auf ein CFieldExchange-Objekt. Das Framework hat bereits installiert dieses Objekt, um einen Kontext für den Feldaustauschvorgang anzugeben.

Hinweise

Wenn das gesammelte Abrufen von Zeilen nicht implementiert wird, ruft das Framework diese Memberfunktion automatisch für den Datenaustausch zwischen den Felddatenmembern des Recordset-Objekts und den entsprechenden Spalten des aktuellen Datensatzes in der Datenquelle auf. DoFieldExchange bindet auch Parameterdatenmember ggf. an Parameterplatzhalter in der SQL-Anweisungszeichenfolge für die Auswahl des Recordsets.

Wenn das gesammelte Abrufen von Zeilen implementiert wird, ruft das Framework DoBulkFieldExchange auf. Um das gesammelte Abrufen von Zeilen zu implementieren, müssen Sie die Option dwOptionsCRecordset::useMultiRowFetch des Parameters in der Geöffnet-Memberfunktion angeben.

Hinweis

DoFieldExchange ist nur verfügbar, wenn Sie eine Klasse verwenden, die von CRecordset abgeleitet wird.Wenn Sie ein Recordset-Objekt direkt von CRecordset erstellt haben, müssen Sie die GetFieldValue-Memberfunktion aufrufen, um Daten abzurufen.

Der Austausch von Felddaten, aufgerufen Datensatzfeldaustausch (RFX), funktioniert in beiden Richtungen: von den Felddatenmembern des Recordset-Objekts den Feldern des Datensatzes in der Datenquelle und dem Datensatz der Datenquelle in das Recordset-Objekt.

Die einzigen Maßnahmen, die Sie normalerweise ausführen müssen, um DoFieldExchange für die abgeleitete Recordset-Klasse zu implementieren, sind, die Klasse mit Klassen-Assistent zu erstellen und die Namen und Datentypen der Felddatenmember anzugeben. Es können auch Code hinzu, mit der Klassen-Assistent, um Parameterdatenmember anzugeben schreibt oder alle Spalten zu arbeiten, die Sie dynamisch binden. Weitere Informationen finden Sie im Artikel Recordset: Dynamisches Binden von Datenspalten (ODBC).

Wenn Sie die abgeleitete Recordset-Klasse mit Klassen-Assistent deklarieren, erstellt der Assistent eine Überschreibung von DoFieldExchange für Sie, das dem folgenden Beispiel ähnelt:

void CCustomer::DoFieldExchange(CFieldExchange* pFX)
{
   pFX->SetFieldType(CFieldExchange::outputColumn);
   // Macros such as RFX_Text() and RFX_Int() are dependent on the 
   // type of the member variable, not the type of the field in the database. 
   // ODBC will try to automatically convert the column value to the requested type
   RFX_Long(pFX, _T("[CustomerID]"), m_CustomerID);
   RFX_Text(pFX, _T("[ContactFirstName]"), m_ContactFirstName);
   RFX_Text(pFX, _T("[PostalCode]"), m_PostalCode);
   RFX_Text(pFX, _T("[L_Name]"), m_L_Name);
   RFX_Long(pFX, _T("[BillingID]"), m_BillingID);

   pFX->SetFieldType(CFieldExchange::inputParam);
   RFX_Text(pFX, _T("Param"), m_strParam);
}

Weitere Informationen über die RFX-Funktionen, finden Sie im Thema Datensatzfeldaustausch-Funktionen.

Weitere Beispiele und Informationen über DoFieldExchange, finden Sie im Artikel Datensatzfeldaustausch: Funktionsweise von RFX funktioniert. Allgemeine Informationen über RFX finden Sie im Artikel Datensatzfeldaustausch.

Ausnahmen

Diese Methode kann Ausnahmen des Typs CDBException* auslösen.

Anforderungen

Header: afxdb.h

Siehe auch

Referenz

CRecordset-Klasse

Hierarchiediagramm

CRecordset::m_nFields

CRecordset::m_nParams

CRecordset::DoBulkFieldExchange

CRecordset::GetFieldValue

CFieldExchange-Klasse

Weitere Ressourcen

Funktionen für den Datensatzfeldaustausch