Condividi tramite


Funzioni di trasferimento di campi di record

Questo argomento elenca le funzioni di trasferimento di campi di record (RFX, RFX di massae DFX) usate per automatizzare il trasferimento dei dati tra un oggetto recordset e la relativa origine dati per eseguire altre operazioni sui dati.

Se si usano le classi basate su ODBC e si è implementato il recupero di massa di righe, è necessario eseguire manualmente l'override della funzione membro DoBulkFieldExchange di CRecordset chiamando le funzioni RFX di massa per ogni membro dati corrispondente a una colonna di origine dati.

Se non è stato implementato il recupero di righe bulk nelle classi basate su ODBC o se si usano le classi basate su DAO (obsoleto), ClassWizard eseguirà l'override della DoFieldExchange funzione membro di CRecordset o CDaoRecordset chiamando le funzioni RFX (per le classi ODBC) o le funzioni DFX (per le classi DAO) per ogni membro dati di campo nel recordset.

Le funzioni di trasferimento di campi di record trasferiscono dati ogni volta che il framework chiama DoFieldExchange o DoBulkFieldExchange. Ogni funzione trasferisce un tipo di dati specifico.

Per altre informazioni sull'uso di queste funzioni, vedere gli articoli Record Field Exchange: How RFX Works (ODBC)(Trasferimento di campi di record: funzionamento di RFX (ODBC)). Per ulteriori informazioni sul recupero di righe di massa, vedere l'articolo Recordset: recupero di massa di record (ODBC).

Per le colonne di dati associate in modo dinamico, è anche possibile chiamare le funzioni RFX e DFX manualmente, come descritto negli articoli Recordset: Dynamically Binding Data Columns (ODBC)(Recordset: associazione dinamica di colonne di dati (ODBC)). Inoltre, è possibile scrivere routine RFX o DFX personalizzate, come spiegato nella Nota tecnica 43 (per ODBC) e 53 (per DAO).

Per un esempio di funzioni RFX e RFX bulk visualizzate nelle DoFieldExchange funzioni e DoBulkFieldExchange , vedere RFX_Text e [RFX_Text_Bulk]#rfx_text_bulk). Le funzioni DFX sono molto simili alle funzioni RFX.

Funzioni RFX (ODBC)

Nome Descrizione
RFX_Binary Trasferisce matrici di byte di tipo CByteArray.
RFX_Bool Trasferisce dati Boolean.
RFX_Byte Trasferisce un singolo byte di dati.
RFX_Date Trasferisce dati di data e ora usando CTime o TIMESTAMP_STRUCT.
RFX_Double Trasferisce dati a virgola mobile e precisione doppia.
RFX_Int Trasferisce dati di tipo Integer.
RFX_Long Trasferisce dati long integer.
RFX_LongBinary Trasferisce dati di oggetti binari di grandi dimensioni (BLOB) con un oggetto della classe CLongBinary .
RFX_Single Trasferisce dati float.
RFX_Text Trasferisce dati di tipo stringa.

Funzioni RFX di massa (ODBC)

Nome Descrizione
RFX_Binary_Bulk Trasferisce matrici di dati byte.
RFX_Bool_Bulk Trasferisce matrici di dati Boolean.
RFX_Byte_Bulk Trasferisce matrici di byte singoli.
RFX_Date_Bulk Trasferisce matrici di dati di tipo TIMESTAMP_STRUCT.
RFX_Double_Bulk Trasferisce matrici di dati a virgola mobile e precisione doppia.
RFX_Int_Bulk Trasferisce matrici di dati Integer.
RFX_Long_Bulk Trasferisce matrici di dati long integer.
RFX_Single_Bulk Trasferisce matrici di dati a virgola mobile.
RFX_Text_Bulk Trasferisce matrici di dati di tipo LPSTR.

Funzioni DFX (DAO)

Nome Descrizione
DFX_Binary Trasferisce matrici di byte di tipo CByteArray.
DFX_Bool Trasferisce dati Boolean.
DFX_Byte Trasferisce un singolo byte di dati.
DFX_Currency Trasferisce dati di valuta, di tipo COleCurrency.
DFX_DateTime Trasferisce dati su data e ora, di tipo COleDateTime.
DFX_Double Trasferisce dati a virgola mobile e precisione doppia.
DFX_Long Trasferisce dati long integer.
DFX_LongBinary Trasferisce dati di oggetti binari di grandi dimensioni (BLOB) con un oggetto della classe CLongBinary . Per DAO, è invece consigliabile usare DFX_Binary .
DFX_Short Trasferisce dati short integer.
DFX_Single Trasferisce dati float.
DFX_Text Trasferisce dati di tipo stringa.

=============================================

RFX_Binary

Trasferisce matrici di byte tra i membri dati del campo di un CRecordset oggetto e le colonne di un record nell'origine dati di tipo ODBC SQL_BINARY, SQL_VARBINARY o SQL_LONGVARBINARY.

Sintassi

void RFX_Binary(
   CFieldExchange* pFX,
   const char* szName,
   CByteArray& value,
   int nMaxLength = 255);

Parametri

pFX
Puntatore a un oggetto della classe CFieldExchange. Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione. Per altre informazioni sulle operazioni che un oggetto può specificare, vedere l'articolo Record Field Exchange: How RFX Works.For more information about the operations a CFieldExchange object can specify, see the article Record Field Exchange: How RFX Works.

szName
Nome di una colonna di dati.

value
Valore memorizzato nel membro dati indicato, il valore da trasferire. Per un trasferimento dal recordset all'origine dati, il valore di tipo CByteArray viene ricavato dal membro dati specificato. Per un trasferimento dall'origine dati al recordset, il valore viene memorizzato nel membro dati specificato.

nMaxLength
Lunghezza massima consentita della stringa o della matrice da trasferire. Il valore predefinito di nMaxLength è 255. I valori legali sono compresi tra 1 e INT_MAX. Il framework alloca questa quantità di spazio per i dati. Per ottenere prestazioni ottimali, passare un valore sufficientemente grande per contenere l'elemento di dati più grande previsto.

Osservazioni:

I dati nell'origine dati di questi tipi vengono mappati a e dal tipo CByteArray nel recordset.

Esempio

Vedere RFX_Text.

Requisiti

Intestazione: afxdb.h

RFX_Bool

Trasferisce dati booleani tra i membri dati del campo di un CRecordset oggetto e le colonne di un record nell'origine dati di tipo ODBC SQL_BIT.

Sintassi

void RFX_Bool(
   CFieldExchange* pFX,
   const char* szName,
   BOOL& value);

Parametri

pFX
Puntatore a un oggetto della classe CFieldExchange. Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione. Per altre informazioni sulle operazioni che un oggetto può specificare, vedere l'articolo Record Field Exchange: How RFX Works.For more information about the operations a CFieldExchange object can specify, see the article Record Field Exchange: How RFX Works.

szName
Nome di una colonna di dati.

value
Valore memorizzato nel membro dati indicato, il valore da trasferire. Per un trasferimento dal recordset all'origine dati, il valore di tipo BOOL viene ricavato dal membro dati specificato. Per un trasferimento dall'origine dati al recordset, il valore viene memorizzato nel membro dati specificato.

Esempio

Vedere RFX_Text.

Requisiti

Intestazione: afxdb.h

RFX_Byte

Trasferisce singoli byte tra i membri dati del campo di un CRecordset oggetto e le colonne di un record nell'origine dati di tipo ODBC SQL_TINYINT.

Sintassi

void RFX_Byte(
   CFieldExchange* pFX,
   const char* szName,
   BYTE& value);

Parametri

pFX
Puntatore a un oggetto della classe CFieldExchange. Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione. Per altre informazioni sulle operazioni che un oggetto può specificare, vedere l'articolo Record Field Exchange: How RFX Works.For more information about the operations a CFieldExchange object can specify, see the article Record Field Exchange: How RFX Works.

szName
Nome di una colonna di dati.

value
Valore memorizzato nel membro dati indicato, il valore da trasferire. Per un trasferimento dal recordset all'origine dati, il valore di tipo BYTE viene ricavato dal membro dati specificato. Per un trasferimento dall'origine dati al recordset, il valore viene memorizzato nel membro dati specificato.

Esempio

Vedere RFX_Text.

Requisiti

Intestazione: afxdb.h

RFX_Date

Trasferisce CTime o TIMESTAMP_STRUCT dati tra i membri dati del campo di un CRecordset oggetto e le colonne di un record nell'origine dati di tipo ODBC SQL_DATE, SQL_TIME o SQL_TIMESTAMP.

Sintassi

void RFX_Date(
   CFieldExchange* pFX,
   const char* szName,
   CTime& value);

void RFX_Date(
   CFieldExchange* pFX,
   const char* szName,
   TIMESTAMP_STRUCT& value);

void RFX_Date(
   CFieldExchange* pFX,
   const char* szName,
   COleDateTime& value);

Parametri

pFX
Puntatore a un oggetto della classe CFieldExchange. Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione. Per altre informazioni sulle operazioni che un oggetto può specificare, vedere l'articolo Record Field Exchange: How RFX Works.For more information about the operations a CFieldExchange object can specify, see the article Record Field Exchange: How RFX Works.

szName
Nome di una colonna di dati.

value
Valore archiviato nel membro dati indicato; valore da trasferire. Le diverse versioni della funzione accettano tipi di dati diversi per value:

La prima versione della funzione accetta un riferimento a un oggetto CTime . Per un trasferimento dal recordset all'origine dati, questo valore viene ricavato dal membro dati specificato. Per un trasferimento dall'origine dati al recordset, il valore viene memorizzato nel membro dati specificato.

La seconda versione della funzione accetta un riferimento a una TIMESTAMP_STRUCT struttura. È necessario configurare questa struttura manualmente prima della chiamata. Per questa versione non sono disponibili né supporto per lo scambio di dati delle finestre di dialogo (DDX) né il supporto della procedura guidata per la creazione guidata del codice. La terza versione della funzione funziona in modo analogo alla prima versione, ad eccezione del fatto che accetta un riferimento a un oggetto COleDateTime .

Osservazioni:

La CTime versione della funzione impone il sovraccarico di alcune elaborazioni intermedie e ha un intervallo piuttosto limitato. Se uno di questi fattori è troppo limitato, usare la seconda versione della funzione. Si noti tuttavia la mancanza di creazione guidata del codice e il supporto DDX e il requisito di configurare manualmente la struttura.

Esempio

Vedere RFX_Text.

Requisiti

Intestazione: afxdb.h

RFX_Double

Trasferisce dati double float tra i membri dati del campo di un CRecordset oggetto e le colonne di un record nell'origine dati di tipo ODBC SQL_DOUBLE.

Sintassi

void RFX_Double(
   CFieldExchange* pFX,
   const char* szName,
   double& value);

Parametri

pFX
Puntatore a un oggetto della classe CFieldExchange. Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione. Per altre informazioni sulle operazioni che un oggetto può specificare, vedere l'articolo Record Field Exchange: How RFX Works.For more information about the operations a CFieldExchange object can specify, see the article Record Field Exchange: How RFX Works.

szName
Nome di una colonna di dati.

value
Valore memorizzato nel membro dati indicato, il valore da trasferire. Per un trasferimento dal recordset all'origine dati, il valore di tipo double, viene ricavato dal membro dati specificato. Per un trasferimento dall'origine dati al recordset, il valore viene memorizzato nel membro dati specificato.

Esempio

Vedere RFX_Text.

Requisiti

Intestazione: afxdb.h

RFX_Int

Trasferisce i dati integer tra i membri dati del campo di un CRecordset oggetto e le colonne di un record nell'origine dati di tipo ODBC SQL_SMALLINT.

Sintassi

void RFX_Int(
   CFieldExchange* pFX,
   const char* szName,
   int& value);

Parametri

pFX
Puntatore a un oggetto della classe CFieldExchange. Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione. Per altre informazioni sulle operazioni che un oggetto può specificare, vedere l'articolo Record Field Exchange: How RFX Works.For more information about the operations a CFieldExchange object can specify, see the article Record Field Exchange: How RFX Works.

szName
Nome di una colonna di dati.

value
Valore memorizzato nel membro dati indicato, il valore da trasferire. Per un trasferimento dal recordset all'origine dati, il valore di tipo int, viene ricavato dal membro dati specificato. Per un trasferimento dall'origine dati al recordset, il valore viene memorizzato nel membro dati specificato.

Esempio

Vedere RFX_Text.

Requisiti

Intestazione: afxdb.h

RFX_Long

Trasferisce dati long integer tra i membri dati del campo di un CRecordset oggetto e le colonne di un record nell'origine dati di tipo ODBC SQL_INTEGER.

Sintassi

void RFX_Long(
   CFieldExchange* pFX,
   const char* szName,
   LONG&
value );

Parametri

pFX
Puntatore a un oggetto della classe CFieldExchange. Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione. Per altre informazioni sulle operazioni che un oggetto può specificare, vedere l'articolo Record Field Exchange: How RFX Works.For more information about the operations a CFieldExchange object can specify, see the article Record Field Exchange: How RFX Works.

szName
Nome di una colonna di dati.

value
Valore memorizzato nel membro dati indicato, il valore da trasferire. Per un trasferimento dal recordset all'origine dati, il valore di tipo long, viene ricavato dal membro dati specificato. Per un trasferimento dall'origine dati al recordset, il valore viene memorizzato nel membro dati specificato.

Esempio

Vedere RFX_Text.

Requisiti

Intestazione: afxdb.h

RFX_LongBinary

Trasferisce dati BLOB (Binary Large Object) usando la classe CLongBinary tra i membri dati del campo di un CRecordset oggetto e le colonne di un record nell'origine dati di tipo ODBC SQL_LONGVARBINARY o SQL_LONGVARCHAR.

Sintassi

void RFX_LongBinary(
   CFieldExchange* pFX,
   const char* szName,
   CLongBinary& value);

Parametri

pFX
Puntatore a un oggetto della classe CFieldExchange. Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione. Per altre informazioni sulle operazioni che un oggetto può specificare, vedere l'articolo Record Field Exchange: How RFX Works.For more information about the operations a CFieldExchange object can specify, see the article Record Field Exchange: How RFX Works.

szName
Nome di una colonna di dati.

value
Valore memorizzato nel membro dati indicato, il valore da trasferire. Per un trasferimento dal recordset all'origine dati, il valore di tipo CLongBinary, viene ricavato dal membro dati specificato. Per un trasferimento dall'origine dati al recordset, il valore viene memorizzato nel membro dati specificato.

Esempio

Vedere RFX_Text.

Requisiti

Intestazione: afxdb.h

RFX_Single

Trasferisce dati a virgola mobile tra i membri dati del campo di un CRecordset oggetto e le colonne di un record nell'origine dati di tipo ODBC SQL_REAL.

Sintassi

void RFX_Single(
   CFieldExchange* pFX,
   const char* szName,
   float& value);

Parametri

pFX
Puntatore a un oggetto della classe CFieldExchange. Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione. Per altre informazioni sulle operazioni che un oggetto può specificare, vedere l'articolo Record Field Exchange: How RFX Works.For more information about the operations a CFieldExchange object can specify, see the article Record Field Exchange: How RFX Works.

szName
Nome di una colonna di dati.

value
Valore memorizzato nel membro dati indicato, il valore da trasferire. Per un trasferimento dal recordset all'origine dati, il valore di tipo float, viene ricavato dal membro dati specificato. Per un trasferimento dall'origine dati al recordset, il valore viene memorizzato nel membro dati specificato.

Esempio

Vedere RFX_Text.

Requisiti

Intestazione: afxdb.h

RFX_Text

Trasferisce CString dati tra i membri dati del campo di un CRecordset oggetto e colonne di un record nell'origine dati di tipo ODBC SQL_LONGVARCHAR, SQL_CHAR, SQL_VARCHAR, SQL_DECIMAL o SQL_NUMERIC.

Sintassi

void RFX_Text(
   CFieldExchange* pFX,
   const char* szName,
   CString& value,
   int nMaxLength = 255,
   int nColumnType = SQL_VARCHAR,
   short nScale = 0);

Parametri

pFX
Puntatore a un oggetto della classe CFieldExchange. Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione. Per altre informazioni sulle operazioni che un oggetto può specificare, vedere l'articolo Record Field Exchange: How RFX Works.For more information about the operations a CFieldExchange object can specify, see the article Record Field Exchange: How RFX Works.

szName
Nome di una colonna di dati.

value
Valore memorizzato nel membro dati indicato, il valore da trasferire. Per un trasferimento dal recordset all'origine dati, il valore di tipo CString, viene ricavato dal membro dati specificato. Per un trasferimento dall'origine dati al recordset, il valore viene memorizzato nel membro dati specificato.

nMaxLength
Lunghezza massima consentita della stringa o della matrice da trasferire. Il valore predefinito di nMaxLength è 255. I valori legali sono compresi tra 1 e INT_MAX). Il framework alloca questa quantità di spazio per i dati. Per ottenere prestazioni ottimali, passare un valore sufficientemente grande per contenere l'elemento di dati più grande previsto.

nColumnType
Usato principalmente per i parametri. Intero che indica il tipo di dati del parametro. Il tipo è un tipo di dati ODBC del modulo SQL_XXX.

nScale
Specifica la scala per i valori di tipo ODBC SQL_DECIMAL o SQL_NUMERIC. nScale è utile solo quando si impostano i valori dei parametri. Per altre informazioni, vedere l'argomento "Precisione, Scala, Lunghezza e Dimensioni di visualizzazione" nell'Appendice D della Guida di riferimento per programmatori di ODBC SDK.

Osservazioni:

I dati nell'origine dati di tutti questi tipi vengono mappati a e da CString nel recordset.

Esempio

In questo esempio vengono illustrate diverse chiamate a RFX_Text. Si notino anche le due chiamate a CFieldExchange::SetFieldType. Per i parametri è necessario scrivere la chiamata a SetFieldType e la relativa chiamata RFX. La chiamata alla colonna di output e le chiamate RFX associate vengono normalmente scritte da una procedura guidata del codice.

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

Requisiti

Intestazione: afxdb.h

RFX_Binary_Bulk

Trasferisce più righe di dati di byte da una colonna di un'origine dati ODBC a una matrice corrispondente in un CRecordsetoggetto derivato da .

Sintassi

void RFX_Binary_Bulk(
   CFieldExchange* pFX,
   LPCTSTR szName,
   BYTE** prgByteVals,
   long** prgLengths,
   int nMaxLength);

Parametri

pFX
Puntatore a un oggetto CFieldExchange . Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione. Per altre informazioni, vedere l'articolo Scambio di campi di record: Funzionamento di RFX.

szName
Nome di una colonna di dati.

prgByteVals
Puntatore a una matrice di valori BYTE. Questa matrice archivierà i dati da trasferire dall'origine dati al recordset.

prgLengths
Puntatore a una matrice di interi lunghi. Questa matrice archivierà la lunghezza in byte di ogni valore nella matrice a cui punta prgByteVals. Si noti che il valore SQL_NULL_DATA verrà archiviato se l'elemento di dati corrispondente contiene un valore Null. Per altri dettagli, vedere la funzione SQLBindCol API ODBC nella guida di riferimento per programmatori di ODBC SDK.

nMaxLength
Lunghezza massima consentita dei valori archiviati nella matrice a cui punta prgByteVals. Per assicurarsi che i dati non vengano troncati, passare un valore sufficientemente grande per contenere l'elemento di dati più grande previsto.

Osservazioni:

La colonna dell'origine dati può avere un tipo ODBC di SQL_BINARY, SQL_VARBINARY o SQL_LONGVARBINARY. Il recordset deve definire un membro dati di campo di tipo puntatore a BYTE.

Se si inizializza prgByteVals e prgLengths su NULL, le matrici a cui puntano verranno allocate automaticamente, con dimensioni uguali alle dimensioni del set di righe.

Nota

Lo scambio di campi record bulk trasferisce solo i dati dall'origine dati all'oggetto recordset. Per rendere aggiornabile il recordset, è necessario usare la funzione SQLSetPosAPI ODBC .

Per altre informazioni, vedere gli articoli Recordset: recupero di record in blocco (ODBC) e Scambio di campi di record (RFX).

Esempio

Vedere RFX_Text_Bulk.

Requisiti

Intestazione: afxdb.h

RFX_Bool_Bulk

Trasferisce più righe di dati booleani da una colonna di un'origine dati ODBC a una matrice corrispondente in un CRecordsetoggetto derivato da .

Sintassi

void RFX_Bool_Bulk(
   CFieldExchange* pFX,
   LPCTSTR szName,
   BOOL** prgBoolVals,
   long** prgLengths);

Parametri

pFX
Puntatore a un oggetto CFieldExchange . Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione. Per altre informazioni, vedere l'articolo Scambio di campi di record: Funzionamento di RFX.

szName
Nome di una colonna di dati.

prgBoolVals
Puntatore a una matrice di valori BOOL. Questa matrice archivierà i dati da trasferire dall'origine dati al recordset.

prgLengths
Puntatore a una matrice di interi lunghi. Questa matrice archivierà la lunghezza in byte di ogni valore nella matrice a cui punta prgBoolVals. Si noti che il valore SQL_NULL_DATA verrà archiviato se l'elemento di dati corrispondente contiene un valore Null. Per altri dettagli, vedere la funzione SQLBindCol API ODBC nella guida di riferimento per programmatori di ODBC SDK.

Osservazioni:

La colonna dell'origine dati deve avere un tipo ODBC di SQL_BIT. Il recordset deve definire un membro dati di campo di tipo puntatore a BOOL.

Se si inizializza prgBoolVals e prgLengths su NULL, le matrici a cui puntano verranno allocate automaticamente, con dimensioni uguali alle dimensioni del set di righe.

Nota

Lo scambio di campi record bulk trasferisce solo i dati dall'origine dati all'oggetto recordset. Per rendere aggiornabile il recordset, è necessario usare la funzione SQLSetPosAPI ODBC .

Per altre informazioni, vedere gli articoli Recordset: recupero di record in blocco (ODBC) e Scambio di campi di record (RFX).

Esempio

Vedere RFX_Text_Bulk.

Requisiti

Intestazione: afxdb.h

RFX_Byte_Bulk

Trasferisce più righe di singoli byte da una colonna di un'origine dati ODBC a una matrice corrispondente in un CRecordsetoggetto derivato da .

Sintassi

void RFX_Byte_Bulk(
   CFieldExchange* pFX,
   LPCTSTR szName,
   BYTE** prgByteVals,
   long** prgLengths);

Parametri

pFX
Puntatore a un oggetto CFieldExchange . Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione. Per altre informazioni, vedere l'articolo Scambio di campi di record: Funzionamento di RFX.

szName
Nome di una colonna di dati.

prgByteVals
Puntatore a una matrice di valori BYTE. Questa matrice archivierà i dati da trasferire dall'origine dati al recordset.

prgLengths
Puntatore a una matrice di interi lunghi. Questa matrice archivierà la lunghezza in byte di ogni valore nella matrice a cui punta prgByteVals. Si noti che il valore SQL_NULL_DATA verrà archiviato se l'elemento di dati corrispondente contiene un valore Null. Per altri dettagli, vedere la funzione SQLBindCol API ODBC nella guida di riferimento per programmatori di ODBC SDK.

Osservazioni:

La colonna dell'origine dati deve avere un tipo ODBC di SQL_TINYINT. Il recordset deve definire un membro dati di campo di tipo puntatore a BYTE.

Se si inizializza prgByteVals e prgLengths su NULL, le matrici a cui puntano verranno allocate automaticamente, con dimensioni uguali alle dimensioni del set di righe.

Nota

Lo scambio di campi record bulk trasferisce solo i dati dall'origine dati all'oggetto recordset. Per rendere aggiornabile il recordset, è necessario usare la funzione SQLSetPosAPI ODBC .

Per altre informazioni, vedere gli articoli Recordset: recupero di record in blocco (ODBC) e Scambio di campi di record (RFX).

Esempio

Vedere RFX_Text_Bulk.

Requisiti

Intestazione: afxdb.h

RFX_Date_Bulk

Trasferisce più righe di dati TIMESTAMP_STRUCT da una colonna di un'origine dati ODBC a una matrice corrispondente in un CRecordsetoggetto derivato da .

Sintassi

void RFX_Date_Bulk(
   CFieldExchange* pFX,
   LPCTSTR szName,
   TIMESTAMP_STRUCT** prgTSVals,
   long** prgLengths);

Parametri

pFX
Puntatore a un oggetto CFieldExchange . Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione. Per altre informazioni, vedere l'articolo Scambio di campi di record: Funzionamento di RFX.

szName
Nome di una colonna di dati.

prgTSVals
Puntatore a una matrice di valori TIMESTAMP_STRUCT. Questa matrice archivierà i dati da trasferire dall'origine dati al recordset. Per altre informazioni sul tipo di dati TIMESTAMP_STRUCT, vedere l'argomento "Tipi di dati C" nell'Appendice D della Guida di riferimento per programmatori di ODBC SDK.

prgLengths
Puntatore a una matrice di interi lunghi. Questa matrice archivierà la lunghezza in byte di ogni valore nella matrice a cui punta prgTSVals. Si noti che il valore SQL_NULL_DATA verrà archiviato se l'elemento di dati corrispondente contiene un valore Null. Per altri dettagli, vedere la funzione SQLBindCol API ODBC nella guida di riferimento per programmatori di ODBC SDK.

Osservazioni:

La colonna dell'origine dati può avere un tipo ODBC di SQL_DATE, SQL_TIME o SQL_TIMESTAMP. Il recordset deve definire un membro dati di campo di tipo puntatore a TIMESTAMP_STRUCT.

Se si inizializza prgTSVals e prgLengths su NULL, le matrici a cui puntano verranno allocate automaticamente, con dimensioni uguali alle dimensioni del set di righe.

Nota

Lo scambio di campi record bulk trasferisce solo i dati dall'origine dati all'oggetto recordset. Per rendere aggiornabile il recordset, è necessario usare la funzione SQLSetPosAPI ODBC .

Per altre informazioni, vedere gli articoli Recordset: recupero di record in blocco (ODBC) e Scambio di campi di record (RFX).

Esempio

Vedere RFX_Text_Bulk.

Requisiti

Intestazione: afxdb.h

RFX_Double_Bulk

Trasferisce più righe di dati a virgola mobile e precisione doppia da una colonna di un'origine dati ODBC a una matrice corrispondente in un CRecordsetoggetto derivato da .

Sintassi

void RFX_Double_Bulk(
   CFieldExchange* pFX,
   LPCTSTR szName,
   double** prgDblVals,
   long** prgLengths);

Parametri

pFX
Puntatore a un oggetto CFieldExchange . Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione. Per altre informazioni, vedere l'articolo Scambio di campi di record: Funzionamento di RFX.

szName
Nome di una colonna di dati.

prgDblVals
Puntatore a una matrice di double valori. Questa matrice archivierà i dati da trasferire dall'origine dati al recordset.

prgLengths
Puntatore a una matrice di interi lunghi. Questa matrice archivierà la lunghezza in byte di ogni valore nella matrice a cui punta prgDblVals. Si noti che il valore SQL_NULL_DATA verrà archiviato se l'elemento di dati corrispondente contiene un valore Null. Per altri dettagli, vedere la funzione SQLBindCol API ODBC nella guida di riferimento per programmatori di ODBC SDK.

Osservazioni:

La colonna dell'origine dati deve avere un tipo ODBC di SQL_DOUBLE. Il recordset deve definire un membro dati del campo di tipo puntatore a double.

Se si inizializza prgDblVals e prgLengths su NULL, le matrici a cui puntano verranno allocate automaticamente, con dimensioni uguali alle dimensioni del set di righe.

Nota

Lo scambio di campi record bulk trasferisce solo i dati dall'origine dati all'oggetto recordset. Per rendere aggiornabile il recordset, è necessario usare la funzione SQLSetPosAPI ODBC .

Per altre informazioni, vedere gli articoli Recordset: recupero di record in blocco (ODBC) e Scambio di campi di record (RFX).

Esempio

Vedere RFX_Text_Bulk.

Requisiti

Intestazione: afxdb.h

RFX_Int_Bulk

Trasferisce i dati integer tra i membri dati del campo di un CRecordset oggetto e le colonne di un record nell'origine dati di tipo ODBC SQL_SMALLINT.

Sintassi

void RFX_Int(
   CFieldExchange* pFX,
   const char* szName,
   int& value);

Parametri

pFX
Puntatore a un oggetto della classe CFieldExchange. Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione. Per altre informazioni sulle operazioni che un oggetto può specificare, vedere l'articolo Record Field Exchange: How RFX Works.For more information about the operations a CFieldExchange object can specify, see the article Record Field Exchange: How RFX Works.

szName
Nome di una colonna di dati.

value
Valore memorizzato nel membro dati indicato, il valore da trasferire. Per un trasferimento dal recordset all'origine dati, il valore di tipo int, viene ricavato dal membro dati specificato. Per un trasferimento dall'origine dati al recordset, il valore viene memorizzato nel membro dati specificato.

Esempio

Vedere RFX_Text.

Requisiti

Intestazione: afxdb.h

RFX_Long_Bulk

Trasferisce più righe di dati long integer da una colonna di un'origine dati ODBC a una matrice corrispondente in un CRecordsetoggetto derivato da .

Sintassi

void RFX_Long_Bulk(
   CFieldExchange* pFX,
   LPCTSTR szName,
   long** prgLongVals,
   long** prgLengths);

Parametri

pFX
Puntatore a un oggetto CFieldExchange . Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione. Per altre informazioni, vedere l'articolo Scambio di campi di record: Funzionamento di RFX.

szName
Nome di una colonna di dati.

prgLongVals
Puntatore a una matrice di interi lunghi. Questa matrice archivierà i dati da trasferire dall'origine dati al recordset.

prgLengths
Puntatore a una matrice di interi lunghi. Questa matrice archivierà la lunghezza in byte di ogni valore nella matrice a cui punta prgLongVals. Si noti che il valore SQL_NULL_DATA verrà archiviato se l'elemento di dati corrispondente contiene un valore Null. Per altri dettagli, vedere la funzione SQLBindCol API ODBC nella guida di riferimento per programmatori di ODBC SDK.

Osservazioni:

La colonna dell'origine dati deve avere un tipo ODBC di SQL_INTEGER. Il recordset deve definire un membro dati del campo di tipo puntatore a long.

Se si inizializza prgLongVals e prgLengths su NULL, le matrici a cui puntano verranno allocate automaticamente, con dimensioni uguali alle dimensioni del set di righe.

Nota

Lo scambio di campi record bulk trasferisce solo i dati dall'origine dati all'oggetto recordset. Per rendere aggiornabile il recordset, è necessario usare la funzione SQLSetPosAPI ODBC .

Per altre informazioni, vedere gli articoli Recordset: recupero di record in blocco (ODBC) e Scambio di campi di record (RFX).

Esempio

Vedere RFX_Text_Bulk.

Requisiti

Intestazione: afxdb.h

RFX_Single_Bulk

Trasferisce più righe di dati a virgola mobile da una colonna di un'origine dati ODBC a una matrice corrispondente in un CRecordsetoggetto derivato da .

Sintassi

void RFX_Single_Bulk(
   CFieldExchange* pFX,
   LPCTSTR szName,
   float** prgFltVals,
   long** prgLengths);

Parametri

pFX
Puntatore a un oggetto CFieldExchange . Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione. Per altre informazioni, vedere l'articolo Scambio di campi di record: Funzionamento di RFX.

szName
Nome di una colonna di dati.

prgFltVals
Puntatore a una matrice di float valori. Questa matrice archivierà i dati da trasferire dall'origine dati al recordset.

prgLengths
Puntatore a una matrice di interi lunghi. Questa matrice archivierà la lunghezza in byte di ogni valore nella matrice a cui punta prgFltVals. Si noti che il valore SQL_NULL_DATA verrà archiviato se l'elemento di dati corrispondente contiene un valore Null. Per altri dettagli, vedere la funzione SQLBindCol API ODBC nella guida di riferimento per programmatori di ODBC SDK.

Osservazioni:

La colonna dell'origine dati deve avere un tipo ODBC di SQL_REAL. Il recordset deve definire un membro dati del campo di tipo puntatore a float.

Se si inizializza prgFltVals e prgLengths su NULL, le matrici a cui puntano verranno allocate automaticamente, con dimensioni uguali alle dimensioni del set di righe.

Nota

Lo scambio di campi record bulk trasferisce solo i dati dall'origine dati all'oggetto recordset. Per rendere aggiornabile il recordset, è necessario usare la funzione SQLSetPosAPI ODBC .

Per altre informazioni, vedere gli articoli Recordset: recupero di record in blocco (ODBC) e Scambio di campi di record (RFX).

Esempio

Vedere RFX_Text_Bulk.

Requisiti

Intestazione: afxdb.h

RFX_Text_Bulk

Trasferisce più righe di dati di tipo carattere da una colonna di un'origine dati ODBC a una matrice corrispondente in un CRecordsetoggetto derivato da .

Sintassi

void RFX_Text_Bulk(
   CFieldExchange* pFX,
   LPCTSTR szName,
   LPSTR* prgStrVals,
   long** prgLengths,
   int nMaxLength);

Parametri

pFX
Puntatore a un oggetto CFieldExchange . Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione. Per altre informazioni, vedere l'articolo Scambio di campi di record: Funzionamento di RFX.

szName
Nome di una colonna di dati.

prgStrVals
Puntatore a una matrice di valori LPSTR. Questa matrice archivierà i dati da trasferire dall'origine dati al recordset. Si noti che con la versione corrente di ODBC, questi valori non possono essere Unicode.

prgLengths
Puntatore a una matrice di interi lunghi. Questa matrice archivierà la lunghezza in byte di ogni valore nella matrice a cui punta prgStrVals. Questa lunghezza esclude il carattere di terminazione Null. Si noti che il valore SQL_NULL_DATA verrà archiviato se l'elemento di dati corrispondente contiene un valore Null. Per altri dettagli, vedere la funzione SQLBindCol API ODBC nella guida di riferimento per programmatori di ODBC SDK.

nMaxLength
Lunghezza massima consentita dei valori archiviati nella matrice a cui punta prgStrVals, incluso il carattere di terminazione Null. Per assicurarsi che i dati non vengano troncati, passare un valore sufficientemente grande per contenere l'elemento di dati più grande previsto.

Osservazioni:

La colonna dell'origine dati può avere un tipo ODBC di SQL_LONGVARCHAR, SQL_CHAR, SQL_VARCHAR, SQL_DECIMAL o SQL_NUMERIC. Il recordset deve definire un membro dati di campo di tipo LPSTR.

Se si inizializza prgStrVals e prgLengths su NULL, le matrici a cui puntano verranno allocate automaticamente, con dimensioni uguali alle dimensioni del set di righe.

Nota

Lo scambio di campi record bulk trasferisce solo i dati dall'origine dati all'oggetto recordset. Per rendere aggiornabile il recordset, è necessario usare la funzione SQLSetPosAPI ODBC .

Per altre informazioni, vedere gli articoli Recordset: recupero di record in blocco (ODBC) e Scambio di campi di record (RFX).

Esempio

È necessario scrivere manualmente le chiamate nell'override DoBulkFieldExchange . In questo esempio viene illustrata una chiamata a RFX_Text_Bulk, nonché una chiamata a RFX_Long_Bulkper il trasferimento dei dati. Queste chiamate sono precedute da una chiamata a CFieldExchange::SetFieldType. Si noti che per i parametri, è necessario chiamare le funzioni RFX anziché le funzioni RFX bulk.

void CMultiCustomer::DoBulkFieldExchange(CFieldExchange* pFX)
{
   pFX->SetFieldType(CFieldExchange::outputColumn);
   RFX_Long_Bulk(pFX, _T("[CustomerID]"), &m_pCustomerID, &m_pcCustomerID);
   RFX_Text_Bulk(pFX, _T("[ContactFirstName]"), &m_pContactFirstName, &m_pcContactFirstName, 50);
   RFX_Text_Bulk(pFX, _T("[PostalCode]"), &m_pPostalCode, &m_pcPostalCode, 50);
   RFX_Text_Bulk(pFX, _T("[L_Name]"), &m_pL_Name, &m_pcL_Name, 50);
   RFX_Long_Bulk(pFX, _T("[BillingID]"), &m_pBillingID, &m_pcBillingID);

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

Requisiti

Intestazione: afxdb.h

DFX_Binary

Trasferisce matrici di byte tra i membri dati del campo di un oggetto CDaoRecordset e le colonne di un record nell'origine dati.

Sintassi

void AFXAPI DFX_Binary(
   CDaoFieldExchange* pFX,
   LPCTSTR szName,
   CByteArray& value,
   int nPreAllocSize = AFX_DAO_BINARY_DEFAULT_SIZE,
   DWORD dwBindOptions = 0);

Parametri

pFX
Puntatore a un oggetto della classe CDaoFieldExchange. Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione.

szName
Nome di una colonna di dati.

value
Valore memorizzato nel membro dati indicato, il valore da trasferire. Per un trasferimento dal recordset all'origine dati, il valore di tipo CByteArray viene ricavato dal membro dati specificato. Per un trasferimento dall'origine dati al recordset, il valore viene memorizzato nel membro dati specificato.

nPreAllocSize
Il framework prealloca questa quantità di memoria. Se i dati sono più grandi, il framework allocherà più spazio in base alle esigenze. Per prestazioni migliori, impostare questa dimensione su un valore sufficientemente grande per evitare le riallocazioni. Le dimensioni predefinite sono definite in AFXDAO. File H come AFX_DAO_BINARY_DEFAULT_SIZE.

dwBindOptions
Opzione che consente di sfruttare il meccanismo del doppio buffer di MFC per rilevare i campi del recordset che sono stati modificati. Il valore predefinito, AFX_DAO_DISABLE_FIELD_CACHE, non usa il doppio buffering ed è necessario chiamare manualmente SetFieldDirty e SetFieldNull . L'altro valore possibile, AFX_DAO_ENABLE_FIELD_CACHE, usa il doppio buffer e non è necessario eseguire operazioni aggiuntive per contrassegnare i campi dirty o Null. Per motivi di prestazioni e memoria, evitare questo valore a meno che i dati binari non siano relativamente piccoli.

Nota

È possibile controllare se i dati vengono memorizzati nel doppio buffer per tutti i campi per impostazione predefinita impostando CDaoRecordset::m_bCheckCacheForDirtyFields.

Osservazioni:

I dati vengono mappati tra il tipo DAO_BYTES in DAO e il tipo CByteArray nel recordset.

Esempio

Vedere DFX_Text.

Requisiti

Intestazione: afxdao.h

DFX_Bool

Trasferisce i dati booleani tra i membri dati del campo di un oggetto CDaoRecordset e le colonne di un record nell'origine dati.

Sintassi

void AFXAPI DFX_Bool(
   CDaoFieldExchange* pFX,
   LPCTSTR szName,
   BOOL& value,
   DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);

Parametri

pFX
Puntatore a un oggetto della classe CDaoFieldExchange. Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione.

szName
Nome di una colonna di dati.

value
Valore memorizzato nel membro dati indicato, il valore da trasferire. Per un trasferimento dal recordset all'origine dati, il valore di tipo BOOL viene ricavato dal membro dati specificato. Per un trasferimento dall'origine dati al recordset, il valore viene memorizzato nel membro dati specificato.

dwBindOptions
Opzione che consente di sfruttare il meccanismo del doppio buffer di MFC per rilevare i campi del recordset che sono stati modificati. Il valore predefinito, AFX_DAO_ENABLE_FIELD_CACHE, usa il doppio buffer. L'altro valore possibile è AFX_DAO_DISABLE_FIELD_CACHE. Se si specifica questo valore, non viene eseguito il controllo su questo campo da parte di MFC. È necessario chiamare SetFieldDirty e SetFieldNull manualmente.

Nota

È possibile controllare se i dati vengono memorizzati nel doppio buffer per impostazione predefinita impostando CDaoRecordset::m_bCheckCacheForDirtyFields.

Osservazioni:

I dati vengono mappati tra il tipo DAO_BOOL in DAO e il tipo BOOL nel recordset.

Esempio

Vedere DFX_Text.

Requisiti

Intestazione: afxdao.h

DFX_Byte

Trasferisce singoli byte tra i membri dati del campo di un oggetto CDaoRecordset e le colonne di un record nell'origine dati.

Sintassi

void AFXAPI DFX_Byte(
   CDaoFieldExchange* pFX,
   LPCTSTR szName,
   BYTE& value,
   DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);

Parametri

pFX
Puntatore a un oggetto della classe CDaoFieldExchange. Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione.

szName
Nome di una colonna di dati.

value
Valore memorizzato nel membro dati indicato, il valore da trasferire. Per un trasferimento dal recordset all'origine dati, il valore di tipo BYTE viene ricavato dal membro dati specificato. Per un trasferimento dall'origine dati al recordset, il valore viene memorizzato nel membro dati specificato.

dwBindOptions
Opzione che consente di sfruttare il meccanismo del doppio buffer di MFC per rilevare i campi del recordset che sono stati modificati. Il valore predefinito, AFX_DAO_ENABLE_FIELD_CACHE, usa il doppio buffer. L'altro valore possibile è AFX_DAO_DISABLE_FIELD_CACHE. Se si specifica questo valore, non viene eseguito il controllo su questo campo da parte di MFC. È necessario chiamare SetFieldDirty e SetFieldNull manualmente.

Nota

È possibile controllare se i dati vengono memorizzati nel doppio buffer per impostazione predefinita impostando CDaoRecordset::m_bCheckCacheForDirtyFields.

Osservazioni:

I dati vengono mappati tra il tipo DAO_BYTES in DAO e il tipo BYTE nel recordset.

Esempio

Vedere DFX_Text.

Requisiti

Intestazione: afxdao.h

DFX_Currency

Trasferisce i dati di valuta tra i membri dati del campo di un oggetto CDaoRecordset e le colonne di un record nell'origine dati.

Sintassi

void AFXAPI DFX_Currency(
   CDaoFieldExchange* pFX,
   LPCTSTR szName,
   COleCurrency& value,
   DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);

Parametri

pFX
Puntatore a un oggetto della classe CDaoFieldExchange. Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione.

szName
Nome di una colonna di dati.

value
Valore memorizzato nel membro dati indicato, il valore da trasferire. Per un trasferimento dal recordset all'origine dati, questo valore viene ricavato dal membro dati specificato, di tipo COleCurrency. Per un trasferimento dall'origine dati al recordset, il valore viene memorizzato nel membro dati specificato.

dwBindOptions
Opzione che consente di sfruttare il meccanismo del doppio buffer di MFC per rilevare i campi del recordset che sono stati modificati. Il valore predefinito, AFX_DAO_ENABLE_FIELD_CACHE, usa il doppio buffer. L'altro valore possibile è AFX_DAO_DISABLE_FIELD_CACHE. Se si specifica questo valore, non viene eseguito il controllo su questo campo da parte di MFC. È necessario chiamare SetFieldDirty e SetFieldNull manualmente.

Nota

È possibile controllare se i dati vengono memorizzati nel doppio buffer per impostazione predefinita impostando CDaoRecordset::m_bCheckCacheForDirtyFields.

Osservazioni:

I dati vengono mappati tra il tipo DAO_CURRENCY in DAO e il tipo COleCurrency nel recordset.

Esempio

Vedere DFX_Text.

Requisiti

Intestazione: afxdao.h

DFX_DateTime

Trasferisce dati di data e ora tra i membri dati del campo di un oggetto CDaoRecordset e le colonne di un record nell'origine dati.

Sintassi

void AFXAPI DFX_DateTime(
   CDaoFieldExchange* pFX,
   LPCTSTR szName,
   COleDateTime& value,
   DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);

Parametri

pFX
Puntatore a un oggetto della classe CDaoFieldExchange. Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione.

szName
Nome di una colonna di dati.

value
Valore memorizzato nel membro dati indicato, il valore da trasferire. La funzione accetta un riferimento a un oggetto COleDateTime . Per un trasferimento dal recordset all'origine dati, questo valore viene ricavato dal membro dati specificato. Per un trasferimento dall'origine dati al recordset, il valore viene memorizzato nel membro dati specificato.

dwBindOptions
Opzione che consente di sfruttare il meccanismo del doppio buffer di MFC per rilevare i campi del recordset che sono stati modificati. Il valore predefinito, AFX_DAO_ENABLE_FIELD_CACHE, usa il doppio buffer. L'altro valore possibile è AFX_DAO_DISABLE_FIELD_CACHE. Se si specifica questo valore, non viene eseguito il controllo su questo campo da parte di MFC. È necessario chiamare SetFieldDirty e SetFieldNull manualmente.

Nota

È possibile controllare se i dati vengono memorizzati nel doppio buffer per impostazione predefinita impostando CDaoRecordset::m_bCheckCacheForDirtyFields.

Osservazioni:

I dati vengono mappati tra il tipo DAO_DATE in DAO e il tipo COleDateTime nel recordset.

Nota

COleDateTimesostituisce CTime e TIMESTAMP_STRUCT a questo scopo nelle classi DAO. CTime e TIMESTAMP_STRUCT vengono ancora usati per le classi di accesso ai dati basate su ODBC.

Esempio

Vedere DFX_Text.

Requisiti

Intestazione: afxdao.h

DFX_Double

Trasferisce dati double float tra i membri dati del campo di un oggetto CDaoRecordset e le colonne di un record nell'origine dati.

Sintassi

void AFXAPI DFX_Double(
   CDaoFieldExchange* pFX,
   LPCTSTR szName,
   double& value,
   DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);

Parametri

pFX
Puntatore a un oggetto della classe CDaoFieldExchange. Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione.

szName
Nome di una colonna di dati.

value
Valore memorizzato nel membro dati indicato, il valore da trasferire. Per un trasferimento dal recordset all'origine dati, il valore di tipo double, viene ricavato dal membro dati specificato. Per un trasferimento dall'origine dati al recordset, il valore viene memorizzato nel membro dati specificato.

dwBindOptions
Opzione che consente di sfruttare il meccanismo del doppio buffer di MFC per rilevare i campi del recordset che sono stati modificati. Il valore predefinito, AFX_DAO_ENABLE_FIELD_CACHE, usa il doppio buffer. L'altro valore possibile è AFX_DAO_DISABLE_FIELD_CACHE. Se si specifica questo valore, non viene eseguito il controllo su questo campo da parte di MFC. È necessario chiamare SetFieldDirty e SetFieldNull manualmente.

Nota

È possibile controllare se i dati vengono memorizzati nel doppio buffer per impostazione predefinita impostando CDaoRecordset::m_bCheckCacheForDirtyFields.

Osservazioni:

I dati vengono mappati tra il tipo DAO_R8 in DAO e il tipo double float nel recordset.

Esempio

Vedere DFX_Text.

Requisiti

Intestazione: afxdao.h

DFX_Long

Trasferisce dati long integer tra i membri dati del campo di un oggetto CDaoRecordset e le colonne di un record nell'origine dati.

Sintassi

void AFXAPI DFX_Long(
   CDaoFieldExchange* pFX,
   LPCTSTR szName,
   long& value,
   DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);

Parametri

pFX
Puntatore a un oggetto della classe CDaoFieldExchange. Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione.

szName
Nome di una colonna di dati.

value
Valore memorizzato nel membro dati indicato, il valore da trasferire. Per un trasferimento dal recordset all'origine dati, il valore di tipo long, viene ricavato dal membro dati specificato. Per un trasferimento dall'origine dati al recordset, il valore viene memorizzato nel membro dati specificato.

dwBindOptions
Opzione che consente di sfruttare il meccanismo del doppio buffer di MFC per rilevare i campi del recordset che sono stati modificati. Il valore predefinito, AFX_DAO_ENABLE_FIELD_CACHE, usa il doppio buffer. L'altro valore possibile è AFX_DAO_DISABLE_FIELD_CACHE. Se si specifica questo valore, non viene eseguito il controllo su questo campo da parte di MFC. È necessario chiamare SetFieldDirty e SetFieldNull manualmente.

Nota

È possibile controllare se i dati vengono memorizzati nel doppio buffer per impostazione predefinita impostando CDaoRecordset::m_bCheckCacheForDirtyFields.

Osservazioni:

I dati vengono mappati tra il tipo DAO_I4 in DAO e il tipo long nel recordset.

Esempio

Vedere DFX_Text.

Requisiti

Intestazione: afxdao.h

DFX_LongBinary

Importante È consigliabile usare DFX_Binary anziché questa funzione.

Sintassi

void AFXAPI DFX_LongBinary(
   CDaoFieldExchange* pFX,
   LPCTSTR szName,
   CLongBinary& value,
   DWORD dwPreAllocSize = AFX_DAO_LONGBINARY_DEFAULT_SIZE,
   DWORD dwBindOptions = 0);

Parametri

pFX
Puntatore a un oggetto della classe CDaoFieldExchange. Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione.

szName
Nome di una colonna di dati.

value
Valore memorizzato nel membro dati indicato, il valore da trasferire. Per un trasferimento dal recordset all'origine dati, il valore di tipo CLongBinary viene ricavato dal membro dati specificato. Per un trasferimento dall'origine dati al recordset, il valore viene memorizzato nel membro dati specificato.

dwPreAllocSize
Il framework prealloca questa quantità di memoria. Se i dati sono più grandi, il framework allocherà più spazio in base alle esigenze. Per prestazioni migliori, impostare questa dimensione su un valore sufficientemente grande per evitare le riallocazioni.

dwBindOptions
Opzione che consente di sfruttare il meccanismo del doppio buffer di MFC per rilevare i campi del recordset che sono stati modificati. Il valore predefinito, AFX_DISABLE_FIELD_CACHE, non usa il doppio buffer. L'altro valore possibile è AFX_DAO_ENABLE_FIELD_CACHE. Usa il doppio buffer e non è necessario eseguire operazioni aggiuntive per contrassegnare i campi dirty o Null. Per motivi di prestazioni e memoria, evitare questo valore a meno che i dati binari non siano relativamente piccoli.

Nota

È possibile controllare se i dati vengono memorizzati nel doppio buffer per impostazione predefinita impostando CDaoRecordset::m_bCheckCacheForDirtyFields.

Osservazioni:

DFX_LongBinary viene fornito per la compatibilità con le classi ODBC MFC. La DFX_LongBinary funzione trasferisce dati blob (Binary Large Object) usando la classe CLongBinary tra i membri dati di campo di un oggetto CDaoRecordset e le colonne di un record nell'origine dati. I dati vengono mappati tra il tipo DAO_BYTES in DAO e il tipo CLongBinary nel recordset.

Esempio

Vedere DFX_Text.

Requisiti

Intestazione: afxdao.h

DFX_Short

Trasferisce dati integer brevi tra i membri dati del campo di un oggetto CDaoRecordset e le colonne di un record nell'origine dati.

Sintassi

void AFXAPI DFX_Short(
   CDaoFieldExchange* pFX,
   LPCTSTR szName,
   short& value,
   DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);

Parametri

pFX
Puntatore a un oggetto della classe CDaoFieldExchange. Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione.

szName
Nome di una colonna di dati.

value
Valore memorizzato nel membro dati indicato, il valore da trasferire. Per un trasferimento dal recordset all'origine dati, il valore di tipo short, viene ricavato dal membro dati specificato. Per un trasferimento dall'origine dati al recordset, il valore viene memorizzato nel membro dati specificato.

dwBindOptions
Opzione che consente di sfruttare il meccanismo del doppio buffer di MFC per rilevare i campi del recordset che sono stati modificati. Il valore predefinito, AFX_DAO_ENABLE_FIELD_CACHE, usa il doppio buffer. L'altro valore possibile è AFX_DAO_DISABLE_FIELD_CACHE. Se si specifica questo valore, non viene eseguito il controllo su questo campo da parte di MFC. È necessario chiamare SetFieldDirty e SetFieldNull manualmente.

Nota

È possibile controllare se i dati vengono memorizzati nel doppio buffer per impostazione predefinita impostando CDaoRecordset::m_bCheckCacheForDirtyFields.

Osservazioni:

I dati vengono mappati tra il tipo DAO_I2 in DAO e il tipo short nel recordset.

Nota

DFX_Short equivale a RFX_Int per le classi basate su ODBC.

Esempio

Vedere DFX_Text.

Requisiti

Intestazione: afxdao.h

DFX_Single

Trasferisce i dati a virgola mobile tra i membri dati del campo di un oggetto CDaoRecordset e le colonne di un record nell'origine dati.

Sintassi

void AFXAPI DFX_Single(
   CDaoFieldExchange* pFX,
   LPCTSTR szName,
   float& value,
   DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);

Parametri

pFX
Puntatore a un oggetto della classe CDaoFieldExchange. Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione.

szName
Nome di una colonna di dati.

value
Valore memorizzato nel membro dati indicato, il valore da trasferire. Per un trasferimento dal recordset all'origine dati, il valore di tipo float, viene ricavato dal membro dati specificato. Per un trasferimento dall'origine dati al recordset, il valore viene memorizzato nel membro dati specificato.

dwBindOptions
Opzione che consente di sfruttare il meccanismo del doppio buffer di MFC per rilevare i campi del recordset che sono stati modificati. Il valore predefinito, AFX_DAO_ENABLE_FIELD_CACHE, usa il doppio buffer. L'altro valore possibile è AFX_DAO_DISABLE_FIELD_CACHE. Se si specifica questo valore, non viene eseguito il controllo su questo campo da parte di MFC. È necessario chiamare SetFieldDirty e SetFieldNull manualmente.

Nota

È possibile controllare se i dati vengono memorizzati nel doppio buffer per impostazione predefinita impostando CDaoRecordset::m_bCheckCacheForDirtyFields.

Osservazioni:

I dati vengono mappati tra il tipo DAO_R4 in DAO e il tipo float nel recordset.

Esempio

Vedere DFX_Text.

Requisiti

Intestazione: afxdao.h

DFX_Text

Trasferisce CString i dati tra i membri dati del campo di un oggetto CDaoRecordset e le colonne di un record nell'origine dati.

Sintassi

void AFXAPI DFX_Text(
   CDaoFieldExchange* pFX,
   LPCTSTR szName,
   CString& value,
   int nPreAllocSize = AFX_DAO_TEXT_DEFAULT_SIZE,
   DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);

Parametri

pFX
Puntatore a un oggetto della classe CDaoFieldExchange. Questo oggetto contiene le informazioni per definire il contesto per ogni chiamata della funzione.

szName
Nome di una colonna di dati.

value
Valore memorizzato nel membro dati indicato, il valore da trasferire. Per un trasferimento dal recordset all'origine dati, il valore di tipo CString viene ricavato dal membro dati specificato. Per un trasferimento dall'origine dati al recordset, il valore viene memorizzato nel membro dati specificato.

nPreAllocSize
Il framework prealloca questa quantità di memoria. Se i dati sono più grandi, il framework allocherà più spazio in base alle esigenze. Per prestazioni migliori, impostare questa dimensione su un valore sufficientemente grande per evitare le riallocazioni.

dwBindOptions
Opzione che consente di sfruttare il meccanismo del doppio buffer di MFC per rilevare i campi del recordset che sono stati modificati. Il valore predefinito, AFX_DAO_ENABLE_FIELD_CACHE, usa il doppio buffer. L'altro valore possibile è AFX_DAO_DISABLE_FIELD_CACHE. Se si specifica questo valore, non viene eseguito il controllo su questo campo da parte di MFC. È necessario chiamare SetFieldDirty e SetFieldNull manualmente.

Nota

È possibile controllare se i dati vengono memorizzati nel doppio buffer per impostazione predefinita impostando CDaoRecordset::m_bCheckCacheForDirtyFields.

Osservazioni:

I dati vengono mappati tra il tipo DAO_CHAR in DAO (oppure, se il simbolo _UNICODE è definito, DAO_WCHAR) e digitare CString nel recordset. n

Esempio

In questo esempio vengono illustrate diverse chiamate a DFX_Text. Si notino anche le due chiamate a CDaoFieldExchange::SetFieldType. È necessario scrivere la prima chiamata a SetFieldType e la chiamata DFX . La seconda chiamata e le relative chiamate DFX associate vengono normalmente scritte dalla procedura guidata del codice che ha generato la classe.

void CCustSet::DoFieldExchange(CDaoFieldExchange* pFX)
{
   pFX->SetFieldType(CDaoFieldExchange::param);
   DFX_Text(pFX, _T("Param"), m_strParam);
   pFX->SetFieldType(CDaoFieldExchange::outputColumn);
   DFX_Short(pFX, _T("EmployeeID"), m_EmployeeID);
   DFX_Text(pFX, _T("LastName"), m_LastName);
   DFX_Short(pFX, _T("Age"), m_Age);
   DFX_DateTime(pFX, _T("hire_date"), m_hire_date);
   DFX_DateTime(pFX, _T("termination_date"), m_termination_date);

   CDaoRecordset::DoFieldExchange(pFX);
}

Requisiti

Intestazione: afxdao.h

Vedi anche

Macro e globali
CRecordset::D oFieldExchange
CRecordset::D oBulkFieldExchange
CDaoRecordset::D oFieldExchange