Condividi tramite


Classe CFieldExchange

Supporta le routine RFX (record field exchange) e RFX di massa (bulk record field exchange) utilizzate dalle classi di database.

Sintassi

class CFieldExchange

Membri

Metodi pubblici

Nome Descrizione
CFieldExchange::IsFieldType Restituisce un valore diverso da zero se l'operazione corrente è appropriata per il tipo di campo da aggiornare.
CFieldExchange::SetFieldType Specifica il tipo di membro dati del recordset , colonna o parametro, rappresentato da tutte le chiamate seguenti alle funzioni RFX fino alla chiamata successiva a SetFieldType.

Osservazioni:

CFieldExchange non dispone di una classe di base.

Utilizzare questa classe se si scrivono routine di scambio di dati per i tipi di dati personalizzati o quando si implementa il recupero delle righe bulk; in caso contrario, non si userà direttamente questa classe. RFX e RFX bulk scambiano dati tra i membri dati del campo dell'oggetto recordset e i campi corrispondenti del record corrente nell'origine dati.

Nota

Se si usano le classi DAO (Data Access Objects) anziché le classi ODBC (Open Database Connectivity), usare invece la classe CDaoFieldExchange . Per altre informazioni, vedere l'articolo Panoramica:Programmazione del database.

Un CFieldExchange oggetto fornisce le informazioni di contesto necessarie per lo scambio di campi di record o lo scambio di campi di record bulk da eseguire. CFieldExchange gli oggetti supportano una serie di operazioni, inclusi i parametri di associazione e i membri dati del campo e l'impostazione di vari flag nei campi del record corrente. Le operazioni RFX e RFX bulk vengono eseguite sui membri dati della classe recordset di tipi definiti da enum FieldType in CFieldExchange. I valori FieldType possibili sono:

  • CFieldExchange::outputColumn per i membri dati del campo.

  • CFieldExchange::inputParam o CFieldExchange::param per i membri dati dei parametri di input.

  • CFieldExchange::outputParam per i membri dati dei parametri di output.

  • CFieldExchange::inoutParam per i membri dati dei parametri di input/output.

La maggior parte delle funzioni membro e dei membri dati della classe viene fornita per la scrittura di routine RFX personalizzate. Si userà SetFieldType spesso. Per altre informazioni, vedere gli articoli Record Field Exchange (RFX) e Recordset (ODBC).For more information, see the articles Record Field Exchange (RFX) and Recordset (ODBC). Per informazioni sul recupero delle righe bulk, vedere l'articolo Recordset: recupero di record in blocco (ODBC). Per informazioni dettagliate sulle funzioni globali RFX e RFX bulk, vedere Record Field Exchange Functions nella sezione MFC Macros and Globals di questa guida di riferimento.

Gerarchia di ereditarietà

CFieldExchange

Requisiti

Intestazione: afxdb.h

CFieldExchange::IsFieldType

Se si scrive una funzione RFX personalizzata, chiamare IsFieldType all'inizio della funzione per determinare se l'operazione corrente può essere eseguita su un determinato campo o tipo di membro dati del parametro (un CFieldExchange::outputColumntipo di CFieldExchange::inputParammembro , , CFieldExchange::param, CFieldExchange::outputParamo CFieldExchange::inoutParam).

BOOL IsFieldType(UINT* pnField);

Parametri

pnField
Il numero sequenziale del campo o del membro dati del parametro viene restituito in questo parametro. Questo numero corrisponde all'ordine del membro dati nella funzione CRecordset::D oFieldExchange o CRecordset::D oBulkFieldExchange .

Valore restituito

Diverso da zero se l'operazione corrente può essere eseguita sul campo o sul tipo di parametro corrente.

Osservazioni:

Seguire il modello delle funzioni RFX esistenti.

CFieldExchange::SetFieldType

È necessaria una chiamata a SetFieldType nell'override DoFieldExchange o DoBulkFieldExchange della classe recordset.

void SetFieldType(UINT nFieldType);

Parametri

nFieldType
Valore di enum FieldType, dichiarato in CFieldExchange, che può essere uno dei seguenti:

  • CFieldExchange::outputColumn

  • CFieldExchange::inputParam

  • CFieldExchange::param

  • CFieldExchange::outputParam

  • CFieldExchange::inoutParam

Osservazioni:

Per i membri dati sul campo, è necessario chiamare SetFieldType con un parametro di CFieldExchange::outputColumn, seguito dalle chiamate alle funzioni RFX o RFX bulk. Se non è stato implementato il recupero delle righe bulk, ClassWizard inserisce questa SetFieldType chiamata nella sezione mappa dei campi di DoFieldExchange.

Se si parametrizza la classe recordset, è necessario chiamare SetFieldType di nuovo, all'esterno di qualsiasi sezione della mappa dei campi, seguita dalle chiamate RFX per tutti i membri dati dei parametri. Ogni tipo di membro dati del parametro deve avere una propria SetFieldType chiamata. La tabella seguente distingue i diversi valori che è possibile passare a SetFieldType per rappresentare i membri dei dati dei parametri della classe:

Valore del parametro SetFieldType Tipo di membro dati del parametro
CFieldExchange::inputParam parametro di input. Valore passato alla query o alla stored procedure del recordset.
CFieldExchange::param uguale a CFieldExchange::inputParam.
CFieldExchange::outputParam parametro di output. Valore restituito della stored procedure del recordset.
CFieldExchange::inoutParam Parametro di input/output. Valore passato a e restituito dalla stored procedure del recordset.

In generale, ogni gruppo di chiamate di funzione RFX associate ai membri dati del campo o ai membri dati dei parametri deve essere preceduto da una chiamata a SetFieldType. Il parametro nFieldType di ogni SetFieldType chiamata identifica il tipo dei membri dati rappresentati dalle chiamate di funzione RFX che seguono la SetFieldType chiamata.

Per altre informazioni sulla gestione dei parametri di output e input/output, vedere la CRecordset funzione membro FlushResultSet. Per altre informazioni sulle funzioni RFX e RFX bulk, vedere l'argomento Funzioni di scambio di campi di record. Per informazioni correlate sul recupero delle righe bulk, vedere l'articolo Recordset: recupero di record in blocco (ODBC).

Esempio

Questo esempio mostra diverse chiamate alle funzioni RFX con chiamate associate a SetFieldType. Si noti che SetFieldType viene chiamato tramite il pFX puntatore a un CFieldExchange oggetto .

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

Vedi anche

Grafico della gerarchia
Classe CRecordset