Condividi tramite


CRecordset::DoFieldExchange

Chiamato per scambiare dati in entrambe le direzioni) tra i membri dati di campo del recordset e il record corrispondente nell'origine dati.Implementa trasferimento di campi di Record.

virtual void DoFieldExchange( 
   CFieldExchange* pFX  
);

Parametri

  • pFX
    Un puntatore a un oggetto CFieldExchange.Il framework avrà già installato questo oggetto per specificare un contesto per l'operazione di trasferimento di campi.

Note

Quando il recupero di massa di righe non viene implementato, il framework chiama la funzione membro automaticamente per lo scambio di dati tra i membri dati di campo dell'oggetto recordset e colonne corrispondenti del record corrente nell'origine dati.DoFieldExchange si associa i membri dati di parametro, se presente, ai segnaposto dei parametri nella stringa di un'istruzione SQL per la selezione del recordset.

Se il recupero di massa di righe viene distribuito, il framework chiama DoBulkFieldExchange.Per implementare il recupero di massa di righe, è necessario specificare l'opzione CRecordset::useMultiRowFetch del parametro dwOptions nella funzione membro Apri.

[!NOTA]

DoFieldExchange è disponibile solo se si utilizza una classe derivata da CRecordset.Se si è creato un oggetto recordset direttamente da CRecordset, è necessario chiamare la funzione membro GetFieldValue per recuperare i dati.

Lo scambio di dati di campo, denominato trasferimento di campi di Record, funziona in entrambe le direzioni: i membri dati di campo dell'oggetto recordset ai campi del record nell'origine dati e dal record nell'origine dati all'oggetto recordset.

Le uniche azioni che è in genere necessario eseguire per implementare DoFieldExchange per la classe derivata di recordset supportano la creazione della classe con ClassWizard e specificare i nomi e i tipi di dati dei membri dati di campo.È inoltre possibile aggiungere codice a cui ClassWizard scrittura per specificare i membri dati di parametro o per interagire con tutte le colonne da associare in modo dinamico.Per ulteriori informazioni, vedere l'articolo recordset: Associazione dinamica di colonne di dati (ODBC).

Quando si dichiara la classe derivata di recordset con ClassWizard, la procedura guidata scrive un override DoFieldExchange di, simile al seguente:

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

Per ulteriori informazioni sulle funzioni RFX, vedere l'argomento Funzioni di trasferimento di campi di Record.

Per le ulteriori esempi e informazioni dettagliate su DoFieldExchange, vedere l'articolo Trasferimento di campi di Record: Funzionamento di RFX.Per informazioni generali su RFX, vedere l'articolo Trasferimento di campi di Record.

Eccezioni

Questo metodo può generare eccezioni di tipo CDBException*.

Requisiti

Header: afxdb.h

Vedere anche

Riferimenti

Classe di CRecordset

Grafico della gerarchia

CRecordset::m_nFields

CRecordset::m_nParams

CRecordset::DoBulkFieldExchange

CRecordset::GetFieldValue

Classe di CFieldExchange

Altre risorse

Funzioni di trasferimento di campi di Record