Condividi tramite


Classe CDaoFieldExchange

Supporta le routine DFX DAO (record field exchange) utilizzate dalle classi di database DAO.

Nota

DAO è supportato tramite Office 2013. DAO 3.6 è la versione finale ed è considerata obsoleta.

Sintassi

class CDaoFieldExchange

Membri

Metodi pubblici

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

Membri dati pubblici

Nome Descrizione
CDaoFieldExchange::m_nOperation Operazione DFX eseguita dalla chiamata corrente alla funzione membro del DoFieldExchange recordset.
CDaoFieldExchange::m_prs Puntatore al recordset in cui vengono eseguite le operazioni DFX.

Osservazioni:

CDaoFieldExchange non dispone di una classe di base.

Utilizzare questa classe se si scrivono routine di scambio di dati per i tipi di dati personalizzati; in caso contrario, non si userà direttamente questa classe. DFX scambia dati tra i membri dati del campo dell'oggetto CDaoRecordset e i campi corrispondenti del record corrente nell'origine dati. DFX gestisce lo scambio in entrambe le direzioni, dall'origine dati e all'origine dati. Per informazioni sulla scrittura di routine DFX personalizzate, vedere La nota tecnica 53 .

Nota

Le classi di database DAO sono distinte dalle classi di database MFC basate su ODBC (Open Database Connectivity). Tutti i nomi delle classi di database DAO hanno il prefisso "CDao". È comunque possibile accedere alle origini dati ODBC con le classi DAO. In generale, le classi MFC basate su DAO sono più capaci delle classi MFC basate su ODBC. Le classi basate su DAO possono accedere ai dati, inclusi i driver ODBC, tramite il proprio motore di database. Supportano anche operazioni DDL (Data Definition Language), ad esempio l'aggiunta di tabelle tramite le classi anziché la necessità di chiamare manualmente DAO.

Nota

Lo scambio di campi di record DAO (DFX) è molto simile allo scambio di campi di record (RFX) nelle classi di database MFC basate su ODBC ( , CDatabaseCRecordset). Se si comprende RFX, sarà facile usare DFX.

Un CDaoFieldExchange oggetto fornisce le informazioni di contesto necessarie per lo scambio di campi di record DAO. CDaoFieldExchange 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 DFX vengono eseguite sui membri dati della classe recordset di tipi definiti da enum FieldType in CDaoFieldExchange. I valori FieldType possibili sono:

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

  • CDaoFieldExchange::param per i membri dati dei parametri.

La funzione membro IsValidOperation viene fornita per la scrittura di routine DFX personalizzate. Nelle funzioni CDaoRecordset::D oFieldExchange si userà spesso SetFieldType. Per informazioni dettagliate sulle funzioni globali DFX, vedere Funzioni di scambio dei campi di record. Per informazioni sulla scrittura di routine DFX personalizzate per i propri tipi di dati, vedere La nota tecnica 53.

Gerarchia di ereditarietà

CDaoFieldExchange

Requisiti

Intestazione: afxdao.h

CDaoFieldExchange::IsValidOperation

Se si scrive una funzione DFX personalizzata, chiamare IsValidOperation all'inizio della funzione per determinare se l'operazione corrente può essere eseguita su un particolare tipo di membro dati del campo (o CDaoFieldExchange::outputColumn ).CDaoFieldExchange::param

BOOL IsValidOperation();

Valore restituito

Diverso da zero se l'operazione corrente è appropriata per il tipo di campo da aggiornare.

Osservazioni:

Alcune delle operazioni eseguite dal meccanismo DFX si applicano solo a uno dei possibili tipi di campo. Seguire il modello delle funzioni DFX esistenti.

Per altre informazioni sulla scrittura di routine DFX personalizzate, vedere La nota tecnica 53.

CDaoFieldExchange::m_nOperation

Identifica l'operazione da eseguire sull'oggetto CDaoRecordset associato all'oggetto scambio di campi.

Osservazioni:

L'oggetto CDaoFieldExchange fornisce il contesto per diverse operazioni DFX sul recordset.

Nota

Il PSEUDONULL valore descritto sotto le MarkForAddNew operazioni e SetFieldNull riportato di seguito è un valore usato per contrassegnare i campi Null. Il meccanismo di scambio dei campi dei record DAO (DFX) usa questo valore per determinare quali campi sono stati contrassegnati in modo esplicito su Null. PSEUDONULL non è obbligatorio per COleDateTime i campi e COleCurrency .

I valori possibili di m_nOperation sono:

Operazione Descrizione
AddToParameterList Compila la clausola PARAMETERS dell'istruzione SQL.
AddToSelectList Compila la clausola SELECT dell'istruzione SQL.
BindField Associa un campo nel database a una posizione di memoria nell'applicazione.
BindParam Imposta i valori dei parametri per la query del recordset.
Fixup Imposta lo stato Null per un campo.
AllocCache Alloca la cache utilizzata per verificare la presenza di campi "dirty" nel recordset.
StoreField Salva il record corrente nella cache.
LoadField Ripristina le variabili membro dati memorizzate nella cache nel recordset.
FreeCache Libera la cache usata per verificare la presenza di campi "dirty" nel recordset.
SetFieldNull Imposta lo stato di un campo su Null e il valore su PSEUDONULL.
MarkForAddNew Contrassegna i campi "dirty" se non PSEUDONULL.
MarkForEdit Contrassegna i campi "dirty" se non corrispondono alla cache.
SetDirtyField Imposta i valori dei campi contrassegnati come "dirty".
DumpField Esegue il dump del contenuto di un campo (solo debug).
MaxDFXOperation Utilizzato per il controllo dell'input.

CDaoFieldExchange::m_prs

Contiene un puntatore all'oggetto CDaoRecordset associato all'oggetto CDaoFieldExchange .

Osservazioni:

CDaoFieldExchange::SetFieldType

Chiamare SetFieldType l'override CDaoRecordset della DoFieldExchange classe.

void SetFieldType(UINT nFieldType);

Parametri

nFieldType
Valore dell'enum FieldType, dichiarato in CDaoFieldExchange, che può essere uno dei seguenti:

  • CDaoFieldExchange::outputColumn

  • CDaoFieldExchange::param

Osservazioni:

In genere, ClassWizard scrive questa chiamata per te. Se si scrive una funzione personalizzata e si usa la procedura guidata per scrivere la DoFieldExchange funzione, aggiungere chiamate alla propria funzione all'esterno della mappa dei campi. Se non si usa la procedura guidata, non sarà presente una mappa dei campi. La chiamata precede le chiamate alle funzioni DFX, una per ogni membro dati del campo della classe e identifica il tipo di campo come CDaoFieldExchange::outputColumn.

Se si parametrizza la classe recordset, è necessario aggiungere chiamate DFX per tutti i membri dati dei parametri (all'esterno della mappa dei campi) e precedere queste chiamate con una chiamata a SetFieldType. Passare il valore CDaoFieldExchange::param. (È invece possibile usare un CDaoQueryDef e impostarne i valori dei parametri.

In generale, ogni gruppo di chiamate di funzione DFX 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 DFX che seguono la SetFieldType chiamata.

Vedi anche

Grafico della gerarchia
Classe CDaoRecordset