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
oCFieldExchange::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::outputColumn
tipo di CFieldExchange::inputParam
membro , , CFieldExchange::param
, CFieldExchange::outputParam
o 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);
}