Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
Este tópico lista as funções de Troca de Campos de Registo (RFX, Bulk RFX e DFX) usadas para automatizar a transferência de dados entre um objeto de registo e a sua fonte de dados, bem como para realizar outras operações sobre os dados.
Se estiver a usar as classes baseadas em ODBC e tiver implementado a busca de linhas em massa, deve sobrescrever manualmente a DoBulkFieldExchange função membro de CRecordset chamando as funções Bulk RFX para cada membro de dados correspondente a uma coluna de fonte de dados.
Se não tiver implementado a busca de linhas em massa nas classes baseadas em ODBC, ou se estiver a usar as classes baseadas em DAO (obsoletas), então o ClassWizard irá sobrepor a DoFieldExchange função membro de CRecordset ou CDaoRecordset ao chamar as funções RFX (para classes ODBC) ou as funções DFX (para classes DAO) para cada membro de dados de campo no seu conjunto de registos.
As funções de troca de campos de registo transferem dados cada vez que o framework chama DoFieldExchange ou DoBulkFieldExchange. Cada função transfere um tipo de dado específico.
Para mais informações sobre como estas funções são usadas, consulte os artigos Troca de Campos de Registo: Como Funciona a RFX (ODBC). Para mais informações sobre busca de linhas em massa, consulte o artigo Recordset: Fetching Records in Bulk (ODBC).
Para colunas de dados que vincula dinamicamente, pode também chamar as funções RFX ou DFX por si próprio, como explicado nos artigos Recordet: Dynamically Binding Data Columns (ODBC). Além disso, pode escrever as suas próprias rotinas RFX ou DFX personalizadas, conforme explicado na Nota Técnica 43 (para ODBC) e na Nota Técnica 53 (para DAO).
Para um exemplo das funções RFX e Bulk RFX tal como aparecem nas DoFieldExchange funções e, DoBulkFieldExchange veja RFX_Text e [RFX_Text_Bulk]#rfx_text_bulk). As funções DFX são muito semelhantes às funções RFX.
Funções RFX (ODBC)
| Nome | Description |
|---|---|
| RFX_Binary | Transfere arrays de bytes do tipo CByteArray. |
| RFX_Bool | Transfere dados booleanos. |
| RFX_Byte | Transfere um único byte de dados. |
| RFX_Date | Transfere dados de data e hora usando CTime ou TIMESTAMP_STRUCT. |
| RFX_Double | Transfere dados flutuantes de dupla precisão. |
| RFX_Int | Transfere dados inteiros. |
| RFX_Long | Transfere dados inteiros longos. |
| RFX_LongBinary | Transfere dados binários de objetos grandes (BLOB) com um objeto da classe CLongBinary . |
| RFX_Single | Transfere dados flutuantes. |
| RFX_Text | Transfere dados em cadeia. |
Funções RFX em Massa (ODBC)
| Nome | Description |
|---|---|
| RFX_Binary_Bulk | Transfere arrays de dados de bytes. |
| RFX_Bool_Bulk | Transfere arrays de dados booleanos. |
| RFX_Byte_Bulk | Transfere arrays de bytes únicos. |
| RFX_Date_Bulk | Transfere arrays de dados do tipo TIMESTAMP_STRUCT. |
| RFX_Double_Bulk | Transfere matrizes de dados de dupla precisão e ponto flutuante. |
| RFX_Int_Bulk | Transfere arrays de dados inteiros. |
| RFX_Long_Bulk | Transfere arrays de dados inteiros longos. |
| RFX_Single_Bulk | Transfere arrays de dados em ponto flutuante. |
| RFX_Text_Bulk | Transfere arrays de dados do tipo LPSTR. |
Funções DFX (DAO)
| Nome | Description |
|---|---|
| DFX_Binary | Transfere arrays de bytes do tipo CByteArray. |
| DFX_Bool | Transfere dados booleanos. |
| DFX_Byte | Transfere um único byte de dados. |
| DFX_Currency | Transfere dados de moeda, do tipo COleCurrency. |
| DFX_DateTime | Transfere dados de hora e data, do tipo COleDateTime. |
| DFX_Double | Transfere dados flutuantes de dupla precisão. |
| DFX_Long | Transfere dados inteiros longos. |
| DFX_LongBinary | Transfere dados binários de objetos grandes (BLOB) com um objeto da CLongBinary classe. Para DAO, recomenda-se que uses DFX_Binary em vez disso. |
| DFX_Short | Transfere dados inteiros curtos. |
| DFX_Single | Transfere dados flutuantes. |
| DFX_Text | Transfere dados em cadeia. |
=============================================
RFX_Binary
Transfere arrays de bytes entre os membros de dados de campo de um CRecordset objeto e as colunas de um registo na fonte de dados ODBC do tipo SQL_BINARY, SQL_VARBINARY ou SQL_LONGVARBINARY.
Sintaxe
void RFX_Binary(
CFieldExchange* pFX,
const char* szName,
CByteArray& value,
int nMaxLength = 255);
Parâmetros
pFX
Um apontador para um objeto da classe CFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função. Para mais informações sobre as operações que um CFieldExchange objeto pode especificar, consulte o artigo Troca de Campos de Registo: Como Funciona a RFX.
szName
O nome de uma coluna de dados.
value
O valor armazenado no elemento de dados indicado — o valor a transferir. Para uma transferência do conjunto de registos para a fonte de dados, o valor do tipo CByteArray é retirado do membro de dados especificado. Para uma transferência da fonte de dados para o conjunto de registos, o valor é armazenado no membro de dados especificado.
nMaxComprimento
O comprimento máximo permitido da corda ou matriz a ser transferida. O valor padrão de nMaxLength é 255. Os valores legais são de 1 para INT_MAX. O framework aloca esta quantidade de espaço para os dados. Para melhor desempenho, passe um valor suficientemente grande para acomodar o maior elemento de dados que espera.
Observações
Os dados na fonte destes tipos são mapeados para e do tipo CByteArray no conjunto de registos.
Example
Vê RFX_Text.
Requerimentos
Cabeçalho: afxdb.h
RFX_Bool
Transfere dados booleanos entre os membros de dados de campo de um CRecordset objeto e as colunas de um registo na fonte de dados do ODBC tipo SQL_BIT.
Sintaxe
void RFX_Bool(
CFieldExchange* pFX,
const char* szName,
BOOL& value);
Parâmetros
pFX
Um apontador para um objeto da classe CFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função. Para mais informações sobre as operações que um CFieldExchange objeto pode especificar, consulte o artigo Troca de Campos de Registo: Como Funciona a RFX.
szName
O nome de uma coluna de dados.
value
O valor armazenado no elemento de dados indicado — o valor a transferir. Para uma transferência do conjunto de registos para a fonte de dados, o valor do tipo BOOL é retirado do membro de dados especificado. Para uma transferência da fonte de dados para o conjunto de registos, o valor é armazenado no membro de dados especificado.
Example
Vê RFX_Text.
Requerimentos
Cabeçalho: afxdb.h
RFX_Byte
Transfere bytes únicos entre os membros de dados de campo de um CRecordset objeto e as colunas de um registo na fonte de dados do tipo ODBC SQL_TINYINT.
Sintaxe
void RFX_Byte(
CFieldExchange* pFX,
const char* szName,
BYTE& value);
Parâmetros
pFX
Um apontador para um objeto da classe CFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função. Para mais informações sobre as operações que um CFieldExchange objeto pode especificar, consulte o artigo Troca de Campos de Registo: Como Funciona a RFX.
szName
O nome de uma coluna de dados.
value
O valor armazenado no elemento de dados indicado — o valor a transferir. Para uma transferência do conjunto de registos para a fonte de dados, o valor do tipo BYTE é retirado do membro de dados especificado. Para uma transferência da fonte de dados para o conjunto de registos, o valor é armazenado no membro de dados especificado.
Example
Vê RFX_Text.
Requerimentos
Cabeçalho: afxdb.h
RFX_Date
Transfere CTime ou TIMESTAMP_STRUCT dados entre os membros de dados de campo de um CRecordset objeto e as colunas de um registo na fonte de dados ODBC do tipo SQL_DATE, SQL_TIME ou SQL_TIMESTAMP.
Sintaxe
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);
Parâmetros
pFX
Um apontador para um objeto da classe CFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função. Para mais informações sobre as operações que um CFieldExchange objeto pode especificar, consulte o artigo Troca de Campos de Registo: Como Funciona a RFX.
szName
O nome de uma coluna de dados.
value
O valor armazenado no elemento de dados indicado; o valor a transferir. As várias versões da função tomam diferentes tipos de dados para valor:
A primeira versão da função faz referência a um objeto CTime . Para uma transferência do conjunto de registos para a fonte de dados, este valor é retirado do membro de dados especificado. Para uma transferência da fonte de dados para o conjunto de registos, o valor é armazenado no membro de dados especificado.
A segunda versão da função faz referência a uma TIMESTAMP_STRUCT estrutura. Deve montar esta estrutura você próprio antes da chamada. Nem o suporte para troca de dados de diálogo (DDX) nem o suporte para assistente de código estão disponíveis para esta versão. A terceira versão da função funciona de forma semelhante à primeira, exceto que recebe uma referência a um objeto COleDateTime .
Observações
A CTime versão da função impõe a sobrecarga de algum processamento intermédio e tem um alcance algo limitado. Se achar algum destes fatores demasiado limitativo, use a segunda versão da função. Mas repare na falta de assistente de código e suporte DDX e na exigência de configurares a estrutura tu próprio.
Example
Vê RFX_Text.
Requerimentos
Cabeçalho: afxdb.h
RFX_Double
Transfere dados de duplo float entre os membros de dados de campo de um CRecordset objeto e as colunas de um registo na fonte de dados do tipo ODBC SQL_DOUBLE.
Sintaxe
void RFX_Double(
CFieldExchange* pFX,
const char* szName,
double& value);
Parâmetros
pFX
Um apontador para um objeto da classe CFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função. Para mais informações sobre as operações que um CFieldExchange objeto pode especificar, consulte o artigo Troca de Campos de Registo: Como Funciona a RFX.
szName
O nome de uma coluna de dados.
value
O valor armazenado no elemento de dados indicado — o valor a transferir. Para uma transferência do conjunto de registos para a fonte de dados, o valor do tipo double, é retirado do membro de dados especificado. Para uma transferência da fonte de dados para o conjunto de registos, o valor é armazenado no membro de dados especificado.
Example
Vê RFX_Text.
Requerimentos
Cabeçalho: afxdb.h
RFX_Int
Transfere dados inteiros entre os membros de dados de campo de um CRecordset objeto e as colunas de um registo na fonte de dados do tipo ODBC SQL_SMALLINT.
Sintaxe
void RFX_Int(
CFieldExchange* pFX,
const char* szName,
int& value);
Parâmetros
pFX
Um apontador para um objeto da classe CFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função. Para mais informações sobre as operações que um CFieldExchange objeto pode especificar, consulte o artigo Troca de Campos de Registo: Como Funciona a RFX.
szName
O nome de uma coluna de dados.
value
O valor armazenado no elemento de dados indicado — o valor a transferir. Para uma transferência do conjunto de registos para a fonte de dados, o valor do tipo int, é retirado do membro de dados especificado. Para uma transferência da fonte de dados para o conjunto de registos, o valor é armazenado no membro de dados especificado.
Example
Vê RFX_Text.
Requerimentos
Cabeçalho: afxdb.h
RFX_Long
Transfere dados inteiros longos entre os membros de dados de campo de um CRecordset objeto e as colunas de um registo na fonte de dados do tipo ODBC SQL_INTEGER.
Sintaxe
void RFX_Long(
CFieldExchange* pFX,
const char* szName,
LONG&
value );
Parâmetros
pFX
Um apontador para um objeto da classe CFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função. Para mais informações sobre as operações que um CFieldExchange objeto pode especificar, consulte o artigo Troca de Campos de Registo: Como Funciona a RFX.
szName
O nome de uma coluna de dados.
value
O valor armazenado no elemento de dados indicado — o valor a transferir. Para uma transferência do conjunto de registos para a fonte de dados, o valor do tipo long, é retirado do membro de dados especificado. Para uma transferência da fonte de dados para o conjunto de registos, o valor é armazenado no membro de dados especificado.
Example
Vê RFX_Text.
Requerimentos
Cabeçalho: afxdb.h
RFX_LongBinary
Transfere dados binários de objetos grandes (BLOB) usando a classe CLongBinary entre os membros de dados de campo de um CRecordset objeto e as colunas de um registo na fonte de dados ODBC tipo SQL_LONGVARBINARY ou SQL_LONGVARCHAR.
Sintaxe
void RFX_LongBinary(
CFieldExchange* pFX,
const char* szName,
CLongBinary& value);
Parâmetros
pFX
Um apontador para um objeto da classe CFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função. Para mais informações sobre as operações que um CFieldExchange objeto pode especificar, consulte o artigo Troca de Campos de Registo: Como Funciona a RFX.
szName
O nome de uma coluna de dados.
value
O valor armazenado no elemento de dados indicado — o valor a transferir. Para uma transferência do conjunto de registos para a fonte de dados, o valor do tipo CLongBinary, é retirado do membro de dados especificado. Para uma transferência da fonte de dados para o conjunto de registos, o valor é armazenado no membro de dados especificado.
Example
Vê RFX_Text.
Requerimentos
Cabeçalho: afxdb.h
RFX_Single
Transfere dados de vírgula flutuante entre os membros de dados de campo de um CRecordset objeto e as colunas de um registo na fonte de dados do tipo ODBC SQL_REAL.
Sintaxe
void RFX_Single(
CFieldExchange* pFX,
const char* szName,
float& value);
Parâmetros
pFX
Um apontador para um objeto da classe CFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função. Para mais informações sobre as operações que um CFieldExchange objeto pode especificar, consulte o artigo Troca de Campos de Registo: Como Funciona a RFX.
szName
O nome de uma coluna de dados.
value
O valor armazenado no elemento de dados indicado — o valor a transferir. Para uma transferência do conjunto de registos para a fonte de dados, o valor do tipo float, é retirado do membro de dados especificado. Para uma transferência da fonte de dados para o conjunto de registos, o valor é armazenado no membro de dados especificado.
Example
Vê RFX_Text.
Requerimentos
Cabeçalho: afxdb.h
RFX_Text
Transfere CString dados entre os membros de dados de campo de um CRecordset objeto e colunas de um registo na fonte de dados ODBC tipo SQL_LONGVARCHAR, SQL_CHAR, SQL_VARCHAR, SQL_DECIMAL ou SQL_NUMERIC.
Sintaxe
void RFX_Text(
CFieldExchange* pFX,
const char* szName,
CString& value,
int nMaxLength = 255,
int nColumnType = SQL_VARCHAR,
short nScale = 0);
Parâmetros
pFX
Um apontador para um objeto da classe CFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função. Para mais informações sobre as operações que um CFieldExchange objeto pode especificar, consulte o artigo Troca de Campos de Registo: Como Funciona a RFX.
szName
O nome de uma coluna de dados.
value
O valor armazenado no elemento de dados indicado — o valor a transferir. Para uma transferência do conjunto de registos para a fonte de dados, o valor do tipo CString, é retirado do membro de dados especificado. Para uma transferência da fonte de dados para o conjunto de registos, o valor é armazenado no membro de dados especificado.
nMaxComprimento
O comprimento máximo permitido da corda ou matriz a ser transferida. O valor padrão de nMaxLength é 255. Os valores legais são de 1 para INT_MAX). O framework aloca esta quantidade de espaço para os dados. Para melhor desempenho, passe um valor suficientemente grande para acomodar o maior elemento de dados que espera.
nColumn Type
Usado principalmente para parâmetros. Um inteiro que indica o tipo de dado do parâmetro. O tipo é um tipo de dados ODBC da forma SQL_XXX.
nScale
Especifica a escala para valores de ODBC tipo SQL_DECIMAL ou SQL_NUMERIC.
nScale só é útil ao definir valores de parâmetros. Para mais informações, consulte o tópico "Precisão, Escala, Comprimento e Tamanho do Ecrã" no Apêndice D da Referência do Programador do SDK ODBC.
Observações
Os dados na fonte de dados de todos estes tipos são mapeados para e a partir CString do conjunto de registos.
Example
Este exemplo mostra várias chamadas para RFX_Text. Note também as duas chamadas para CFieldExchange::SetFieldType. Para os parâmetros, deve escrever a chamada para SetFieldType e a sua chamada RFX. A chamada de coluna de saída e as chamadas RFX associadas são normalmente escritas por um assistente de código.
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);
}
Requerimentos
Cabeçalho: afxdb.h
RFX_Binary_Bulk
Transfere múltiplas linhas de dados de bytes de uma coluna de uma fonte de dados ODBC para um array correspondente num CRecordsetobjeto derivado de .
Sintaxe
void RFX_Binary_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
BYTE** prgByteVals,
long** prgLengths,
int nMaxLength);
Parâmetros
pFX
Um ponteiro para o objeto CFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função. Para mais informações, consulte o artigo Troca de Campos de Registos: Como Funciona a RFX.
szName
O nome de uma coluna de dados.
prgByteVals
Um apontador para um array de valores de BYTES. Este array armazena os dados a serem transferidos da fonte de dados para o conjunto de registos.
prgLengths
Um apontador para um array de inteiros longos. Este array armazena o comprimento em bytes de cada valor do array apontado pelos prgByteVals. Note que o valor SQL_NULL_DATA será armazenado se o elemento de dados correspondente contiver um valor Nulo. Para mais detalhes, consulte a função SQLBindCol API ODBC na ODBC SDK Programmer's Reference.
nMaxComprimento
O comprimento máximo permitido dos valores armazenados no array apontado pelos prgByteVals. Para garantir que os dados não serão truncados, passe um valor suficientemente grande para acomodar o maior elemento de dados que espera.
Observações
A coluna da fonte de dados pode ter um tipo ODBC de SQL_BINARY, SQL_VARBINARY ou SQL_LONGVARBINARY. O conjunto de registos deve definir um membro de dados de campo do tipo apontador para BYTE.
Se inicializar prgByteVals e prgLengths para NULL, então os arrays para os quais apontam serão alocados automaticamente, com tamanhos iguais ao tamanho do conjunto de linhas.
Observação
A troca de campos de registos em massa apenas transfere dados da fonte de dados para o objeto do conjunto de registos. Para tornar o seu conjunto de registos atualizável, deve usar a função SQLSetPosAPI ODBC .
Para mais informações, consulte os artigos Recordset: Fetching Records in Bulk (ODBC) e Record Field Exchange (RFX).
Example
Veja RFX_Text_Bulk.
Requerimentos
Cabeçalho: afxdb.h
RFX_Bool_Bulk
Transfere várias linhas de dados booleanos de uma coluna de uma fonte de dados ODBC para um array correspondente num CRecordsetobjeto derivado de .
Sintaxe
void RFX_Bool_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
BOOL** prgBoolVals,
long** prgLengths);
Parâmetros
pFX
Um ponteiro para o objeto CFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função. Para mais informações, consulte o artigo Troca de Campos de Registos: Como Funciona a RFX.
szName
O nome de uma coluna de dados.
prgBoolVals
Um apontador para um array de valores BOOL. Este array armazena os dados a serem transferidos da fonte de dados para o conjunto de registos.
prgLengths
Um apontador para um array de inteiros longos. Este array armazena o comprimento em bytes de cada valor do array apontado pelos prgBoolVals. Note que o valor SQL_NULL_DATA será armazenado se o elemento de dados correspondente contiver um valor Nulo. Para mais detalhes, consulte a função SQLBindCol API ODBC na ODBC SDK Programmer's Reference.
Observações
A coluna da fonte de dados deve ter um tipo de SQL_BIT ODBC. O conjunto de registos deve definir um membro de dados de campo do tipo pointer para BOOL.
Se inicializares prgBoolVals e prgLengths para NULL, então os arrays para os quais apontam serão alocados automaticamente, com tamanhos iguais ao tamanho do conjunto de linhas.
Observação
A troca de campos de registos em massa apenas transfere dados da fonte de dados para o objeto do conjunto de registos. Para tornar o seu conjunto de registos atualizável, deve usar a função SQLSetPosAPI ODBC .
Para mais informações, consulte os artigos Recordset: Fetching Records in Bulk (ODBC) e Record Field Exchange (RFX).
Example
Veja RFX_Text_Bulk.
Requerimentos
Cabeçalho: afxdb.h
RFX_Byte_Bulk
Transfere várias linhas de bytes individuais de uma coluna de uma fonte de dados ODBC para um array correspondente num CRecordsetobjeto derivado em .
Sintaxe
void RFX_Byte_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
BYTE** prgByteVals,
long** prgLengths);
Parâmetros
pFX
Um ponteiro para o objeto CFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função. Para mais informações, consulte o artigo Troca de Campos de Registos: Como Funciona a RFX.
szName
O nome de uma coluna de dados.
prgByteVals
Um apontador para um array de valores de BYTES. Este array armazena os dados a serem transferidos da fonte de dados para o conjunto de registos.
prgLengths
Um apontador para um array de inteiros longos. Este array armazena o comprimento em bytes de cada valor do array apontado pelos prgByteVals. Note que o valor SQL_NULL_DATA será armazenado se o elemento de dados correspondente contiver um valor Nulo. Para mais detalhes, consulte a função SQLBindCol API ODBC na ODBC SDK Programmer's Reference.
Observações
A coluna da fonte de dados deve ter um tipo de SQL_TINYINT ODBC. O conjunto de registos deve definir um membro de dados de campo do tipo apontador para BYTE.
Se inicializar prgByteVals e prgLengths para NULL, então os arrays para os quais apontam serão alocados automaticamente, com tamanhos iguais ao tamanho do conjunto de linhas.
Observação
A troca de campos de registos em massa apenas transfere dados da fonte de dados para o objeto do conjunto de registos. Para tornar o seu conjunto de registos atualizável, deve usar a função SQLSetPosAPI ODBC .
Para mais informações, consulte os artigos Recordset: Fetching Records in Bulk (ODBC) e Record Field Exchange (RFX).
Example
Veja RFX_Text_Bulk.
Requerimentos
Cabeçalho: afxdb.h
RFX_Date_Bulk
Transfere várias linhas de dados TIMESTAMP_STRUCT de uma coluna de uma fonte de dados ODBC para um array correspondente num CRecordsetobjeto derivado de .
Sintaxe
void RFX_Date_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
TIMESTAMP_STRUCT** prgTSVals,
long** prgLengths);
Parâmetros
pFX
Um ponteiro para o objeto CFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função. Para mais informações, consulte o artigo Troca de Campos de Registos: Como Funciona a RFX.
szName
O nome de uma coluna de dados.
prgTSVals
Um apontador para um array de valores de TIMESTAMP_STRUCT. Este array armazena os dados a serem transferidos da fonte de dados para o conjunto de registos. Para mais informações sobre o tipo de dados TIMESTAMP_STRUCT, consulte o tópico "Tipos de Dados C" no Apêndice D da Referência do Programador ODBC SDK.
prgLengths
Um apontador para um array de inteiros longos. Este array armazenará o comprimento em bytes de cada valor do array apontado pelos prgTSVals. Note que o valor SQL_NULL_DATA será armazenado se o elemento de dados correspondente contiver um valor Nulo. Para mais detalhes, consulte a função SQLBindCol API ODBC na ODBC SDK Programmer's Reference.
Observações
A coluna da fonte de dados pode ter um tipo ODBC de SQL_DATE, SQL_TIME ou SQL_TIMESTAMP. O conjunto de registos deve definir um membro de dados de campo do tipo apontador para TIMESTAMP_STRUCT.
Se inicializar prgTSVals e prgLengths para NULL, então os arrays para os quais apontam serão alocados automaticamente, com tamanhos iguais ao tamanho do conjunto de linhas.
Observação
A troca de campos de registos em massa apenas transfere dados da fonte de dados para o objeto do conjunto de registos. Para tornar o seu conjunto de registos atualizável, deve usar a função SQLSetPosAPI ODBC .
Para mais informações, consulte os artigos Recordset: Fetching Records in Bulk (ODBC) e Record Field Exchange (RFX).
Example
Veja RFX_Text_Bulk.
Requerimentos
Cabeçalho: afxdb.h
RFX_Double_Bulk
Transfere múltiplas linhas de dados de dupla precisão, em ponto flutuante, de uma coluna de uma fonte de dados ODBC para um array correspondente num CRecordsetobjeto derivado em .
Sintaxe
void RFX_Double_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
double** prgDblVals,
long** prgLengths);
Parâmetros
pFX
Um ponteiro para o objeto CFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função. Para mais informações, consulte o artigo Troca de Campos de Registos: Como Funciona a RFX.
szName
O nome de uma coluna de dados.
prgDblVals
Um apontador para um array de double valores. Este array armazena os dados a serem transferidos da fonte de dados para o conjunto de registos.
prgLengths
Um apontador para um array de inteiros longos. Este array armazena o comprimento em bytes de cada valor do array apontado pelos prgDblVals. Note que o valor SQL_NULL_DATA será armazenado se o elemento de dados correspondente contiver um valor Nulo. Para mais detalhes, consulte a função SQLBindCol API ODBC na ODBC SDK Programmer's Reference.
Observações
A coluna da fonte de dados deve ter um tipo de SQL_DOUBLE ODBC. O conjunto de registos deve definir um membro de dados de campo do tipo apontador para double.
Se inicializar prgDblVals e prgLengths para NULL, então os arrays para os quais apontam serão alocados automaticamente, com tamanhos iguais ao tamanho do conjunto de linhas.
Observação
A troca de campos de registos em massa apenas transfere dados da fonte de dados para o objeto do conjunto de registos. Para tornar o seu conjunto de registos atualizável, deve usar a função SQLSetPosAPI ODBC .
Para mais informações, consulte os artigos Recordset: Fetching Records in Bulk (ODBC) e Record Field Exchange (RFX).
Example
Veja RFX_Text_Bulk.
Requerimentos
Cabeçalho: afxdb.h
RFX_Int_Bulk
Transfere dados inteiros entre os membros de dados de campo de um CRecordset objeto e as colunas de um registo na fonte de dados do tipo ODBC SQL_SMALLINT.
Sintaxe
void RFX_Int(
CFieldExchange* pFX,
const char* szName,
int& value);
Parâmetros
pFX
Um apontador para um objeto da classe CFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função. Para mais informações sobre as operações que um CFieldExchange objeto pode especificar, consulte o artigo Troca de Campos de Registo: Como Funciona a RFX.
szName
O nome de uma coluna de dados.
value
O valor armazenado no elemento de dados indicado — o valor a transferir. Para uma transferência do conjunto de registos para a fonte de dados, o valor do tipo int, é retirado do membro de dados especificado. Para uma transferência da fonte de dados para o conjunto de registos, o valor é armazenado no membro de dados especificado.
Example
Vê RFX_Text.
Requerimentos
Cabeçalho: afxdb.h
RFX_Long_Bulk
Transfere várias linhas de dados inteiros longos de uma coluna de uma fonte de dados ODBC para um array correspondente num CRecordsetobjeto derivado em .
Sintaxe
void RFX_Long_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
long** prgLongVals,
long** prgLengths);
Parâmetros
pFX
Um ponteiro para o objeto CFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função. Para mais informações, consulte o artigo Troca de Campos de Registos: Como Funciona a RFX.
szName
O nome de uma coluna de dados.
prgLongVals
Um apontador para um array de inteiros longos. Este array armazena os dados a serem transferidos da fonte de dados para o conjunto de registos.
prgLengths
Um apontador para um array de inteiros longos. Este array armazena o comprimento em bytes de cada valor do array apontado pelos prgLongVals. Note que o valor SQL_NULL_DATA será armazenado se o elemento de dados correspondente contiver um valor Nulo. Para mais detalhes, consulte a função SQLBindCol API ODBC na ODBC SDK Programmer's Reference.
Observações
A coluna da fonte de dados deve ter um tipo de SQL_INTEGER ODBC. O conjunto de registos deve definir um membro de dados de campo do tipo apontador para long.
Se inicializar prgLongVals e prgLengths como NULL, então os arrays para os quais apontam serão alocados automaticamente, com tamanhos iguais ao tamanho do conjunto de linhas.
Observação
A troca de campos de registos em massa apenas transfere dados da fonte de dados para o objeto do conjunto de registos. Para tornar o seu conjunto de registos atualizável, deve usar a função SQLSetPosAPI ODBC .
Para mais informações, consulte os artigos Recordset: Fetching Records in Bulk (ODBC) e Record Field Exchange (RFX).
Example
Veja RFX_Text_Bulk.
Requerimentos
Cabeçalho: afxdb.h
RFX_Single_Bulk
Transfere várias linhas de dados em ponto flutuante de uma coluna de uma fonte de dados ODBC para um array correspondente num CRecordsetobjeto derivado de .
Sintaxe
void RFX_Single_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
float** prgFltVals,
long** prgLengths);
Parâmetros
pFX
Um ponteiro para o objeto CFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função. Para mais informações, consulte o artigo Troca de Campos de Registos: Como Funciona a RFX.
szName
O nome de uma coluna de dados.
prgFltVals
Um apontador para um array de float valores. Este array armazena os dados a serem transferidos da fonte de dados para o conjunto de registos.
prgLengths
Um apontador para um array de inteiros longos. Este array armazena o comprimento em bytes de cada valor do array apontado pelos prgFltVals. Note que o valor SQL_NULL_DATA será armazenado se o elemento de dados correspondente contiver um valor Nulo. Para mais detalhes, consulte a função SQLBindCol API ODBC na ODBC SDK Programmer's Reference.
Observações
A coluna da fonte de dados deve ter um tipo de SQL_REAL ODBC. O conjunto de registos deve definir um membro de dados de campo do tipo apontador para float.
Se inicializar prgFltVals e prgLengths para NULL, então os arrays para os quais apontam serão alocados automaticamente, com tamanhos iguais ao tamanho do conjunto de linhas.
Observação
A troca de campos de registos em massa apenas transfere dados da fonte de dados para o objeto do conjunto de registos. Para tornar o seu conjunto de registos atualizável, deve usar a função SQLSetPosAPI ODBC .
Para mais informações, consulte os artigos Recordset: Fetching Records in Bulk (ODBC) e Record Field Exchange (RFX).
Example
Veja RFX_Text_Bulk.
Requerimentos
Cabeçalho: afxdb.h
RFX_Text_Bulk
Transfere várias linhas de dados de caracteres de uma coluna de uma fonte de dados ODBC para um array correspondente num CRecordsetobjeto derivado de .
Sintaxe
void RFX_Text_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
LPSTR* prgStrVals,
long** prgLengths,
int nMaxLength);
Parâmetros
pFX
Um ponteiro para o objeto CFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função. Para mais informações, consulte o artigo Troca de Campos de Registos: Como Funciona a RFX.
szName
O nome de uma coluna de dados.
prgStrVals
Um apontador para um array de valores LPSTR. Este array armazena os dados a serem transferidos da fonte de dados para o conjunto de registos. Note que, com a versão atual do ODBC, estes valores não podem ser Unicode.
prgLengths
Um apontador para um array de inteiros longos. Este array armazena o comprimento em bytes de cada valor do array apontado pelos prgStrVals. Este comprimento exclui o carácter de terminação nula. Note que o valor SQL_NULL_DATA será armazenado se o elemento de dados correspondente contiver um valor Nulo. Para mais detalhes, consulte a função SQLBindCol API ODBC na ODBC SDK Programmer's Reference.
nMaxComprimento
O comprimento máximo permitido dos valores armazenados no array apontados pelos prgStrVals, incluindo o carácter de terminação nula. Para garantir que os dados não serão truncados, passe um valor suficientemente grande para acomodar o maior elemento de dados que espera.
Observações
A coluna da fonte de dados pode ter um tipo ODBC de SQL_LONGVARCHAR, SQL_CHAR, SQL_VARCHAR, SQL_DECIMAL ou SQL_NUMERIC. O conjunto de registos deve definir um membro de dados de campo do tipo LPSTR.
Se inicializar prgStrVals e prgLengths para NULL, então os arrays para os quais apontam serão alocados automaticamente, com tamanhos iguais ao tamanho do conjunto de linhas.
Observação
A troca de campos de registos em massa apenas transfere dados da fonte de dados para o objeto do conjunto de registos. Para tornar o seu conjunto de registos atualizável, deve usar a função SQLSetPosAPI ODBC .
Para mais informações, consulte os artigos Recordset: Fetching Records in Bulk (ODBC) e Record Field Exchange (RFX).
Example
Tens de escrever manualmente as chamadas no teu DoBulkFieldExchange override. Este exemplo mostra uma chamada para RFX_Text_Bulk, bem como uma chamada para RFX_Long_Bulk, para transferência de dados. Estas chamadas são precedidas por uma chamada para CFieldExchange::SetFieldType. Note que, para parâmetros, deve chamar as funções RFX em vez das funções Bulk RFX.
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);
}
Requerimentos
Cabeçalho: afxdb.h
DFX_Binary
Transfere arrays de bytes entre os membros de dados de campo de um objeto CDaoRecordset e as colunas de um registo na fonte de dados.
Sintaxe
void AFXAPI DFX_Binary(
CDaoFieldExchange* pFX,
LPCTSTR szName,
CByteArray& value,
int nPreAllocSize = AFX_DAO_BINARY_DEFAULT_SIZE,
DWORD dwBindOptions = 0);
Parâmetros
pFX
Um apontador para um objeto da classe CDaoFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função.
szName
O nome de uma coluna de dados.
value
O valor armazenado no elemento de dados indicado — o valor a transferir. Para uma transferência do conjunto de registos para a fonte de dados, o valor do tipo CByteArray é retirado do membro de dados especificado. Para uma transferência da fonte de dados para o conjunto de registos, o valor é armazenado no membro de dados especificado.
nPreAllocSize
O framework pré-aloca esta quantidade de memória. Se os seus dados forem maiores, o framework irá alocar mais espaço conforme necessário. Para melhor desempenho, defina este tamanho para um valor suficientemente grande para evitar realocações. O tamanho padrão é definido no AFXDAO. Registo H como AFX_DAO_BINARY_DEFAULT_SIZE.
dwBindOptions
Uma opção que permite tirar partido do mecanismo de duplo buffer do MFC para detetar campos de registos que mudaram. O predefinido, AFX_DAO_DISABLE_FIELD_CACHE, não usa dupla quantidade de buffering, e deve chamar SetFieldDirty e SetFieldNull por si próprio. O outro valor possível, AFX_DAO_ENABLE_FIELD_CACHE, usa duplo buffering, e não tens de fazer trabalho extra para marcar campos como sujos ou nulos. Por razões de desempenho e memória, evite este valor a menos que os seus dados binários sejam relativamente pequenos.
Observação
Podes controlar se os dados estão em buffer duplo para todos os campos por defeito, definindo CDaoRecordset::m_bCheckCacheForDirtyFields.
Observações
Os dados são mapeados entre o tipo DAO_BYTES no DAO e o tipo CByteArray no conjunto de registos.
Example
Vê DFX_Text.
Requerimentos
Cabeçalho: afxdao.h
DFX_Bool
Transfere dados booleanos entre os membros de dados de campo de um objeto CDaoRecordset e as colunas de um registo na fonte de dados.
Sintaxe
void AFXAPI DFX_Bool(
CDaoFieldExchange* pFX,
LPCTSTR szName,
BOOL& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Parâmetros
pFX
Um apontador para um objeto da classe CDaoFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função.
szName
O nome de uma coluna de dados.
value
O valor armazenado no elemento de dados indicado — o valor a transferir. Para uma transferência do conjunto de registos para a fonte de dados, o valor do tipo BOOL é retirado do membro de dados especificado. Para uma transferência da fonte de dados para o conjunto de registos, o valor é armazenado no membro de dados especificado.
dwBindOptions
Uma opção que permite tirar partido do mecanismo de duplo buffer do MFC para detetar campos de registos que mudaram. O predefinido, AFX_DAO_ENABLE_FIELD_CACHE, usa duplo buffering. O outro valor possível é AFX_DAO_DISABLE_FIELD_CACHE. Se especificar este valor, a MFC não verifica este campo. Tens de ligar SetFieldDirtySetFieldNull a ti próprio.
Observação
Podes controlar se os dados estão em buffer duplo por defeito definindo CDaoRecordset::m_bCheckCacheForDirtyFields.
Observações
Os dados são mapeados entre o tipo DAO_BOOL no DAO e o tipo BOOL no conjunto de registos.
Example
Vê DFX_Text.
Requerimentos
Cabeçalho: afxdao.h
DFX_Byte
Transfere bytes individuais entre os membros de dados de campo de um objeto CDaoRecordset e as colunas de um registo na fonte de dados.
Sintaxe
void AFXAPI DFX_Byte(
CDaoFieldExchange* pFX,
LPCTSTR szName,
BYTE& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Parâmetros
pFX
Um apontador para um objeto da classe CDaoFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função.
szName
O nome de uma coluna de dados.
value
O valor armazenado no elemento de dados indicado — o valor a transferir. Para uma transferência do conjunto de registos para a fonte de dados, o valor do tipo BYTE é retirado do membro de dados especificado. Para uma transferência da fonte de dados para o conjunto de registos, o valor é armazenado no membro de dados especificado.
dwBindOptions
Uma opção que permite tirar partido do mecanismo de duplo buffer do MFC para detetar campos de registos que mudaram. O predefinido, AFX_DAO_ENABLE_FIELD_CACHE, usa duplo buffering. O outro valor possível é AFX_DAO_DISABLE_FIELD_CACHE. Se especificar este valor, a MFC não verifica este campo. Tens de ligar SetFieldDirtySetFieldNull a ti próprio.
Observação
Podes controlar se os dados estão em buffer duplo por defeito definindo CDaoRecordset::m_bCheckCacheForDirtyFields.
Observações
Os dados são mapeados entre o tipo DAO_BYTES no DAO e o tipo BYTE no conjunto de registos.
Example
Vê DFX_Text.
Requerimentos
Cabeçalho: afxdao.h
DFX_Currency
Transfere dados de moeda entre os membros de dados de campo de um objeto CDaoRecordset e as colunas de um registo na fonte de dados.
Sintaxe
void AFXAPI DFX_Currency(
CDaoFieldExchange* pFX,
LPCTSTR szName,
COleCurrency& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Parâmetros
pFX
Um apontador para um objeto da classe CDaoFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função.
szName
O nome de uma coluna de dados.
value
O valor armazenado no elemento de dados indicado — o valor a transferir. Para uma transferência do conjunto de registos para a fonte de dados, este valor é retirado do membro de dados especificado, do tipo COleCurrency. Para uma transferência da fonte de dados para o conjunto de registos, o valor é armazenado no membro de dados especificado.
dwBindOptions
Uma opção que permite tirar partido do mecanismo de duplo buffer do MFC para detetar campos de registos que mudaram. O predefinido, AFX_DAO_ENABLE_FIELD_CACHE, usa duplo buffering. O outro valor possível é AFX_DAO_DISABLE_FIELD_CACHE. Se especificar este valor, a MFC não verifica este campo. Tens de ligar SetFieldDirtySetFieldNull a ti próprio.
Observação
Podes controlar se os dados estão em buffer duplo por defeito definindo CDaoRecordset::m_bCheckCacheForDirtyFields.
Observações
Os dados são mapeados entre o tipo DAO_CURRENCY no DAO e o tipo COleCurrency no conjunto de registos.
Example
Vê DFX_Text.
Requerimentos
Cabeçalho: afxdao.h
DFX_DateTime
Transfere dados de data e hora entre os membros de dados de campo de um objeto CDaoRecordset e as colunas de um registo na fonte de dados.
Sintaxe
void AFXAPI DFX_DateTime(
CDaoFieldExchange* pFX,
LPCTSTR szName,
COleDateTime& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Parâmetros
pFX
Um apontador para um objeto da classe CDaoFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função.
szName
O nome de uma coluna de dados.
value
O valor armazenado no elemento de dados indicado — o valor a transferir. A função faz referência a um objeto COleDateTime . Para uma transferência do conjunto de registos para a fonte de dados, este valor é retirado do membro de dados especificado. Para uma transferência da fonte de dados para o conjunto de registos, o valor é armazenado no membro de dados especificado.
dwBindOptions
Uma opção que permite tirar partido do mecanismo de duplo buffer do MFC para detetar campos de registos que mudaram. O predefinido, AFX_DAO_ENABLE_FIELD_CACHE, usa duplo buffering. O outro valor possível é AFX_DAO_DISABLE_FIELD_CACHE. Se especificar este valor, a MFC não verifica este campo. Tens de ligar SetFieldDirtySetFieldNull a ti próprio.
Observação
Podes controlar se os dados estão em buffer duplo por defeito definindo CDaoRecordset::m_bCheckCacheForDirtyFields.
Observações
Os dados são mapeados entre o tipo DAO_DATE no DAO e o tipo COleDateTime no conjunto de registos.
Observação
COleDateTime substitui CTime e TIMESTAMP_STRUCT para este fim nas classes DAO.
CTime e TIMESTAMP_STRUCT ainda são usados para as classes de acesso a dados baseadas em ODBC.
Example
Vê DFX_Text.
Requerimentos
Cabeçalho: afxdao.h
DFX_Double
Transfere dados de duplo float entre os membros de dados de campo de um objeto CDaoRecordset e as colunas de um registo na fonte de dados.
Sintaxe
void AFXAPI DFX_Double(
CDaoFieldExchange* pFX,
LPCTSTR szName,
double& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Parâmetros
pFX
Um apontador para um objeto da classe CDaoFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função.
szName
O nome de uma coluna de dados.
value
O valor armazenado no elemento de dados indicado — o valor a transferir. Para uma transferência do conjunto de registos para a fonte de dados, o valor do tipo double, é retirado do membro de dados especificado. Para uma transferência da fonte de dados para o conjunto de registos, o valor é armazenado no membro de dados especificado.
dwBindOptions
Uma opção que permite tirar partido do mecanismo de duplo buffer do MFC para detetar campos de registos que mudaram. O predefinido, AFX_DAO_ENABLE_FIELD_CACHE, usa duplo buffering. O outro valor possível é AFX_DAO_DISABLE_FIELD_CACHE. Se especificar este valor, a MFC não verifica este campo. Tens de ligar SetFieldDirtySetFieldNull a ti próprio.
Observação
Podes controlar se os dados estão em buffer duplo por defeito definindo CDaoRecordset::m_bCheckCacheForDirtyFields.
Observações
Os dados são mapeados entre o tipo DAO_R8 no DAO e o tipo double float no conjunto de registos.
Example
Vê DFX_Text.
Requerimentos
Cabeçalho: afxdao.h
DFX_Long
Transfere dados inteiros longos entre os membros de dados de campo de um objeto CDaoRecordset e as colunas de um registo na fonte de dados.
Sintaxe
void AFXAPI DFX_Long(
CDaoFieldExchange* pFX,
LPCTSTR szName,
long& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Parâmetros
pFX
Um apontador para um objeto da classe CDaoFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função.
szName
O nome de uma coluna de dados.
value
O valor armazenado no elemento de dados indicado — o valor a transferir. Para uma transferência do conjunto de registos para a fonte de dados, o valor do tipo long, é retirado do membro de dados especificado. Para uma transferência da fonte de dados para o conjunto de registos, o valor é armazenado no membro de dados especificado.
dwBindOptions
Uma opção que permite tirar partido do mecanismo de duplo buffer do MFC para detetar campos de registos que mudaram. O predefinido, AFX_DAO_ENABLE_FIELD_CACHE, usa duplo buffering. O outro valor possível é AFX_DAO_DISABLE_FIELD_CACHE. Se especificar este valor, a MFC não verifica este campo. Tens de ligar SetFieldDirtySetFieldNull a ti próprio.
Observação
Podes controlar se os dados estão em buffer duplo por defeito definindo CDaoRecordset::m_bCheckCacheForDirtyFields.
Observações
Os dados são mapeados entre o tipo DAO_I4 no DAO e o tipo long no conjunto de registos.
Example
Vê DFX_Text.
Requerimentos
Cabeçalho: afxdao.h
DFX_LongBinary
Importante Recomenda-se que utilize DFX_Binary em vez desta função.
Sintaxe
void AFXAPI DFX_LongBinary(
CDaoFieldExchange* pFX,
LPCTSTR szName,
CLongBinary& value,
DWORD dwPreAllocSize = AFX_DAO_LONGBINARY_DEFAULT_SIZE,
DWORD dwBindOptions = 0);
Parâmetros
pFX
Um apontador para um objeto da classe CDaoFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função.
szName
O nome de uma coluna de dados.
value
O valor armazenado no elemento de dados indicado — o valor a transferir. Para uma transferência do conjunto de registos para a fonte de dados, o valor do tipo CLongBinary é retirado do membro de dados especificado. Para uma transferência da fonte de dados para o conjunto de registos, o valor é armazenado no membro de dados especificado.
dwPreAllocSize
O framework pré-aloca esta quantidade de memória. Se os seus dados forem maiores, o framework irá alocar mais espaço conforme necessário. Para melhor desempenho, defina este tamanho para um valor suficientemente grande para evitar realocações.
dwBindOptions
Uma opção que permite tirar partido do mecanismo de duplo buffer do MFC para detetar campos de registos que mudaram. O predefinido, AFX_DISABLE_FIELD_CACHE, não usa duplo buffering. O outro valor possível é AFX_DAO_ENABLE_FIELD_CACHE. Usa duplo buffering, e não precisas de fazer trabalho extra para marcar campos como sujos ou nulos. Por razões de desempenho e memória, evite este valor a menos que os seus dados binários sejam relativamente pequenos.
Observação
Podes controlar se os dados estão em buffer duplo por defeito definindo CDaoRecordset::m_bCheckCacheForDirtyFields.
Observações
DFX_LongBinary é fornecido para compatibilidade com as classes ODBC MFC. A DFX_LongBinary função transfere dados binários de grande porte (BLOB) usando a classe CLongBinary entre os membros de dados de campo de um objeto CDaoRecordset e as colunas de um registo na fonte de dados. Os dados são mapeados entre o tipo DAO_BYTES no DAO e o tipo CLongBinary no conjunto de registos.
Example
Vê DFX_Text.
Requerimentos
Cabeçalho: afxdao.h
DFX_Short
Transfere dados inteiros curtos entre os membros de dados de campo de um objeto CDaoRecordset e as colunas de um registo na fonte de dados.
Sintaxe
void AFXAPI DFX_Short(
CDaoFieldExchange* pFX,
LPCTSTR szName,
short& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Parâmetros
pFX
Um apontador para um objeto da classe CDaoFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função.
szName
O nome de uma coluna de dados.
value
O valor armazenado no elemento de dados indicado — o valor a transferir. Para uma transferência do conjunto de registos para a fonte de dados, o valor do tipo short, é retirado do membro de dados especificado. Para uma transferência da fonte de dados para o conjunto de registos, o valor é armazenado no membro de dados especificado.
dwBindOptions
Uma opção que permite tirar partido do mecanismo de duplo buffer do MFC para detetar campos de registos que mudaram. O predefinido, AFX_DAO_ENABLE_FIELD_CACHE, usa duplo buffering. O outro valor possível é AFX_DAO_DISABLE_FIELD_CACHE. Se especificar este valor, a MFC não verifica este campo. Tens de ligar SetFieldDirtySetFieldNull a ti próprio.
Observação
Podes controlar se os dados estão em buffer duplo por defeito definindo CDaoRecordset::m_bCheckCacheForDirtyFields.
Observações
Os dados são mapeados entre o tipo DAO_I2 no DAO e o tipo short no conjunto de registos.
Observação
DFX_Short é equivalente a RFX_Int para as classes baseadas em ODBC.
Example
Vê DFX_Text.
Requerimentos
Cabeçalho: afxdao.h
DFX_Single
Transfere dados de ponto flutuante entre os membros de dados de campo de um objeto CDaoRecordset e as colunas de um registo na fonte de dados.
Sintaxe
void AFXAPI DFX_Single(
CDaoFieldExchange* pFX,
LPCTSTR szName,
float& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Parâmetros
pFX
Um apontador para um objeto da classe CDaoFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função.
szName
O nome de uma coluna de dados.
value
O valor armazenado no elemento de dados indicado — o valor a transferir. Para uma transferência do conjunto de registos para a fonte de dados, o valor do tipo float, é retirado do membro de dados especificado. Para uma transferência da fonte de dados para o conjunto de registos, o valor é armazenado no membro de dados especificado.
dwBindOptions
Uma opção que permite tirar partido do mecanismo de duplo buffer do MFC para detetar campos de registos que mudaram. O predefinido, AFX_DAO_ENABLE_FIELD_CACHE, usa duplo buffering. O outro valor possível é AFX_DAO_DISABLE_FIELD_CACHE. Se especificar este valor, a MFC não verifica este campo. Tens de ligar SetFieldDirtySetFieldNull a ti próprio.
Observação
Podes controlar se os dados estão em buffer duplo por defeito definindo CDaoRecordset::m_bCheckCacheForDirtyFields.
Observações
Os dados são mapeados entre o tipo DAO_R4 no DAO e o tipo float no conjunto de registos.
Example
Vê DFX_Text.
Requerimentos
Cabeçalho: afxdao.h
DFX_Text
Transfere CString dados entre os membros de dados de campo de um objeto CDaoRecordset e colunas de um registo na fonte de dados.
Sintaxe
void AFXAPI DFX_Text(
CDaoFieldExchange* pFX,
LPCTSTR szName,
CString& value,
int nPreAllocSize = AFX_DAO_TEXT_DEFAULT_SIZE,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Parâmetros
pFX
Um apontador para um objeto da classe CDaoFieldExchange. Este objeto contém informação para definir o contexto de cada chamada da função.
szName
O nome de uma coluna de dados.
value
O valor armazenado no elemento de dados indicado — o valor a transferir. Para uma transferência do conjunto de registos para a fonte de dados, o valor do tipo CString é retirado do membro de dados especificado. Para uma transferência da fonte de dados para o conjunto de registos, o valor é armazenado no membro de dados especificado.
nPreAllocSize
O framework pré-aloca esta quantidade de memória. Se os seus dados forem maiores, o framework irá alocar mais espaço conforme necessário. Para melhor desempenho, defina este tamanho para um valor suficientemente grande para evitar realocações.
dwBindOptions
Uma opção que permite tirar partido do mecanismo de duplo buffer do MFC para detetar campos de registos que mudaram. O predefinido, AFX_DAO_ENABLE_FIELD_CACHE, usa duplo buffering. O outro valor possível é AFX_DAO_DISABLE_FIELD_CACHE. Se especificar este valor, a MFC não verifica este campo. Tens de ligar tu próprio ao SetFieldDirty e ao SetFieldNull .
Observação
Podes controlar se os dados estão em buffer duplo por defeito definindo CDaoRecordset::m_bCheckCacheForDirtyFields.
Observações
Os dados são mapeados entre o tipo DAO_CHAR no DAO (ou, se o símbolo _UNICODE estiver definido, DAO_WCHAR) e o tipo CString no conjunto de registos. n
Example
Este exemplo mostra várias chamadas para DFX_Text. Note também as duas chamadas para CDaoFieldExchange::SetFieldType. Deve escrever a primeira chamada para SetFieldType e a sua chamada DFX . A segunda chamada e as chamadas DFX associadas são normalmente escritas pelo assistente de código que gerou a 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);
}
Requerimentos
Cabeçalho: afxdao.h
Consulte também
Macros e Globais
CRecordset::D oFieldExchange
CRecordset::D oBulkFieldExchange
CDaoRecordset::D oFieldExchange