Registrar funções de troca de campos
Este tópico lista as funções da Troca de Campo de Registro (RFX, RFX em massa e DFX) usadas para automatizar a transferência de dados entre um objeto de conjunto de registros e sua fonte de dados e para executar outras operações nos dados.
Se estiver usando as classes baseadas em ODBC e tiver implementado a busca em massa de linhas, substitua manualmente a função membro DoBulkFieldExchange
de CRecordset
chamando as funções RFX em massa para cada membro de dados correspondente a uma coluna de fonte de dados.
Se você não tiver implementado a busca em linha em massa nas classes baseadas em ODBC ou se estiver usando as classes baseadas em DAO (obsoletas), o ClassWizard substituirá a função de membro DoFieldExchange
de CRecordset
ou CDaoRecordset
chamando as funções RFX (para classes ODBC) ou as funções DFX (para classes DAO) para cada membro de dados de campo em seu conjunto de registros.
As funções de troca de campo de registro transferem os dados sempre que a estrutura chama DoFieldExchange
ou DoBulkFieldExchange
. Cada função transfere um tipo de dados específico.
Para obter mais informações sobre como essas funções são usadas, consulte os artigos Registrar troca de campos: como funciona RFX (ODBC). Para obter mais informações sobre busca de linhas em massa, confira o artigo Conjunto de registros: buscando registros em massa (ODBC).
Nas colunas de dados associadas dinamicamente, você também pode chamar as funções RFX ou DFX, conforme explicado nos artigos Conjunto de registros: associando dinamicamente colunas de dados (ODBC). Além disso, você pode gravar suas próprias rotinas personalizadas de RFX ou DFX, conforme explicado na Nota Técnica 43 (para ODBC) e na Nota Técnica 53 (para DAO).
Para obter um exemplo de funções RFX e RFX em massa conforme elas aparecem nas funções DoFieldExchange
e DoBulkFieldExchange
, consulte 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 | Descrição |
---|---|
RFX_Binary | Transfere matrizes de bytes do tipo CByteArray. |
RFX_Bool | Transfere dados boolianos. |
RFX_Byte | Transfere um único byte de dados. |
RFX_Date | Transfere os dados de data e hora usando CTime ou TIMESTAMP_STRUCT. |
RFX_Double | Transfere dados float de precisão dupla. |
RFX_Int | Transfere dados inteiros. |
RFX_Long | Transfere dados inteiros longos. |
RFX_LongBinary | Transfere dados de BLOB (objeto binário grande) com um objeto da classe CLongBinary. |
RFX_Single | Transfere dados float. |
RFX_Text | Transfere dados de cadeia de caracteres. |
Funções RFX em massa (ODBC)
Nome | Descrição |
---|---|
RFX_Binary_Bulk | Transfere matrizes de dados de bytes. |
RFX_Bool_Bulk | Transfere matrizes de dados boolianos. |
RFX_Byte_Bulk | Transfere matrizes de bytes simples. |
RFX_Date_Bulk | Transfere matrizes de dados do tipo TIMESTAMP_STRUCT. |
RFX_Double_Bulk | Transfere matrizes de dados de ponto flutuante com precisão dupla. |
RFX_Int_Bulk | Transfere matrizes de dados inteiros. |
RFX_Long_Bulk | Transfere matrizes de dados inteiros longos. |
RFX_Single_Bulk | Transfere matrizes de dados de ponto flutuante. |
RFX_Text_Bulk | Transfere matrizes de dados do tipo LPSTR. |
Funções DFX (DAO)
Nome | Descrição |
---|---|
DFX_Binary | Transfere matrizes de bytes do tipo CByteArray. |
DFX_Bool | Transfere dados boolianos. |
DFX_Byte | Transfere um único byte de dados. |
DFX_Currency | Transfere dados de moeda do tipo COleCurrency. |
DFX_DateTime | Transfere dados de data e hora do tipo COleDateTime. |
DFX_Double | Transfere dados float de precisão dupla. |
DFX_Long | Transfere dados inteiros longos. |
DFX_LongBinary | Transfere dados de BLOB (objeto binário grande) com um objeto da classe CLongBinary . No DAO, é recomendável usar DFX_Binary. |
DFX_Short | Transfere dados inteiros curtos. |
DFX_Single | Transfere dados float. |
DFX_Text | Transfere dados de cadeia de caracteres. |
=============================================
RFX_Binary
Transfere matrizes de bytes entre os membros de dados de campo de um objeto CRecordset
e as colunas de um registro na fonte de dados do tipo ODBC 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 ponteiro para um objeto da classe CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função. Para obter mais informações sobre as operações que um objeto CFieldExchange
pode especificar, consulte o artigo Registrar troca de campos: como funciona RFX.
szName
O nome de uma coluna de dados.
value
O valor armazenado no membro de dados indicado – o valor a ser transferido. Em uma transferência do conjunto de registros para a fonte de dados, o valor, do tipo CByteArray, é obtido do membro de dados especificado. Em uma transferência da fonte de dados para o conjunto de registros, o valor é armazenado no membro de dados especificado.
nMaxLength
O comprimento máximo permitido da cadeia de caracteres ou da matriz sendo transferida. O valor padrão de nMaxLength é 255. Os valores legais são de 1 a INT_MAX. A estrutura aloca essa quantidade de espaço para os dados. Para obter o melhor desempenho, passe um valor grande o suficiente para acomodar o maior item de dados esperado.
Comentários
Os dados na fonte de dados desses tipos são mapeados de e para o tipo CByteArray
no conjunto de registros.
Exemplo
Consulte RFX_Text.
Requisitos
Cabeçalho: afxdb.h
RFX_Bool
Transfere dados boolianos entre os membros de dados de campo de um objeto CRecordset
e as colunas de um registro na fonte de dados do tipo ODBC SQL_BIT.
Sintaxe
void RFX_Bool(
CFieldExchange* pFX,
const char* szName,
BOOL& value);
Parâmetros
pFX
Um ponteiro para um objeto da classe CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função. Para obter mais informações sobre as operações que um objeto CFieldExchange
pode especificar, consulte o artigo Registrar troca de campos: como funciona RFX.
szName
O nome de uma coluna de dados.
value
O valor armazenado no membro de dados indicado – o valor a ser transferido. Em uma transferência do conjunto de registros para a fonte de dados, o valor, do tipo BOOL, é obtido do membro de dados especificado. Em uma transferência da fonte de dados para o conjunto de registros, o valor é armazenado no membro de dados especificado.
Exemplo
Consulte RFX_Text.
Requisitos
Cabeçalho: afxdb.h
RFX_Byte
Transfere bytes simples entre os membros de dados de campo de um objeto CRecordset
e as colunas de um registro na fonte de dados do tipo ODBC SQL_TINYINT.
Sintaxe
void RFX_Byte(
CFieldExchange* pFX,
const char* szName,
BYTE& value);
Parâmetros
pFX
Um ponteiro para um objeto da classe CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função. Para obter mais informações sobre as operações que um objeto CFieldExchange
pode especificar, consulte o artigo Registrar troca de campos: como funciona RFX.
szName
O nome de uma coluna de dados.
value
O valor armazenado no membro de dados indicado – o valor a ser transferido. Em uma transferência do conjunto de registros para a fonte de dados, o valor, do tipo BYTE, é obtido do membro de dados especificado. Em uma transferência da fonte de dados para o conjunto de registros, o valor é armazenado no membro de dados especificado.
Exemplo
Consulte RFX_Text.
Requisitos
Cabeçalho: afxdb.h
RFX_Date
Transfere dados CTime
ou TIMESTAMP_STRUCT entre os membros de dados de campo de um objeto CRecordset
e as colunas de um registro na fonte de dados do tipo ODBC 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 ponteiro para um objeto da classe CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função. Para obter mais informações sobre as operações que um objeto CFieldExchange
pode especificar, consulte o artigo Registrar troca de campos: como funciona RFX.
szName
O nome de uma coluna de dados.
value
O valor armazenado no membro de dados indicado; o valor a ser transferido. As diversas versões da função exigem tipos de dados diferentes para o valor:
A primeira versão da função faz referência a um objeto CTime. Em uma transferência do conjunto de registros para a fonte de dados, este valor é obtido do membro de dados especificado. Em uma transferência da fonte de dados para o conjunto de registros, o valor é armazenado no membro de dados especificado.
A segunda versão da função faz uma referência a uma estrutura TIMESTAMP_STRUCT
. Essa estrutura deve ser configurada antes da chamada. Nem o suporte ao DDX (troca de dados da caixa de diálogo) nem o suporte ao assistente de código estão disponíveis nesta versão. A terceira versão da função funciona de forma semelhante à primeira versão, exceto pelo uso de uma referência a um objeto COleDateTime.
Comentários
A versão CTime
da função impõe a sobrecarga de algum processamento intermediário e possui um intervalo um pouco limitado. Caso você ache um desses fatores muito limitador, use a segunda versão da função. Mas observe sua falta de assistente de código e suporte a DDX e o requisito de configuração da estrutura por conta própria.
Exemplo
Consulte RFX_Text.
Requisitos
Cabeçalho: afxdb.h
RFX_Double
Transfere dados de float duplo entre os membros de dados de campo de um objeto CRecordset
e as colunas de um registro na fonte de dados do tipo ODBC SQL_DOUBLE.
Sintaxe
void RFX_Double(
CFieldExchange* pFX,
const char* szName,
double& value);
Parâmetros
pFX
Um ponteiro para um objeto da classe CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função. Para obter mais informações sobre as operações que um objeto CFieldExchange
pode especificar, consulte o artigo Registrar troca de campos: como funciona RFX.
szName
O nome de uma coluna de dados.
value
O valor armazenado no membro de dados indicado – o valor a ser transferido. Em uma transferência do conjunto de registros para a fonte de dados, o valor, do tipo double
, é obtido do membro de dados especificado. Em uma transferência da fonte de dados para o conjunto de registros, o valor é armazenado no membro de dados especificado.
Exemplo
Consulte RFX_Text.
Requisitos
Cabeçalho: afxdb.h
RFX_Int
Transfere dados inteiros entre os membros de dados de campo de um objeto CRecordset
e as colunas de um registro na fonte de dados do tipo ODBC SQL_SMALLINT.
Sintaxe
void RFX_Int(
CFieldExchange* pFX,
const char* szName,
int& value);
Parâmetros
pFX
Um ponteiro para um objeto da classe CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função. Para obter mais informações sobre as operações que um objeto CFieldExchange
pode especificar, consulte o artigo Registrar troca de campos: como funciona RFX.
szName
O nome de uma coluna de dados.
value
O valor armazenado no membro de dados indicado – o valor a ser transferido. Em uma transferência do conjunto de registros para a fonte de dados, o valor, do tipo int
, é obtido do membro de dados especificado. Em uma transferência da fonte de dados para o conjunto de registros, o valor é armazenado no membro de dados especificado.
Exemplo
Consulte RFX_Text.
Requisitos
Cabeçalho: afxdb.h
RFX_Long
Transfere dados inteiros longos entre os membros de dados de campo de um objeto CRecordset
e as colunas de um registro na fonte de dados do tipo ODBC SQL_INTEGER.
Sintaxe
void RFX_Long(
CFieldExchange* pFX,
const char* szName,
LONG&
value );
Parâmetros
pFX
Um ponteiro para um objeto da classe CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função. Para obter mais informações sobre as operações que um objeto CFieldExchange
pode especificar, consulte o artigo Registrar troca de campos: como funciona RFX.
szName
O nome de uma coluna de dados.
value
O valor armazenado no membro de dados indicado – o valor a ser transferido. Em uma transferência do conjunto de registros para a fonte de dados, o valor, do tipo long
, é obtido do membro de dados especificado. Em uma transferência da fonte de dados para o conjunto de registros, o valor é armazenado no membro de dados especificado.
Exemplo
Consulte RFX_Text.
Requisitos
Cabeçalho: afxdb.h
RFX_LongBinary
Transfere dados de BLOB (objeto binário grande) usando a classe CLongBinary entre os membros de dados de campo de um objeto CRecordset
e as colunas de um registro na fonte de dados do tipo ODBC SQL_LONGVARBINARY ou SQL_LONGVARCHAR.
Sintaxe
void RFX_LongBinary(
CFieldExchange* pFX,
const char* szName,
CLongBinary& value);
Parâmetros
pFX
Um ponteiro para um objeto da classe CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função. Para obter mais informações sobre as operações que um objeto CFieldExchange
pode especificar, consulte o artigo Registrar troca de campos: como funciona RFX.
szName
O nome de uma coluna de dados.
value
O valor armazenado no membro de dados indicado – o valor a ser transferido. Em uma transferência do conjunto de registros para a fonte de dados, o valor, do tipo CLongBinary
, é obtido do membro de dados especificado. Em uma transferência da fonte de dados para o conjunto de registros, o valor é armazenado no membro de dados especificado.
Exemplo
Consulte RFX_Text.
Requisitos
Cabeçalho: afxdb.h
RFX_Single
Transfere dados de ponto flutuante entre os membros de dados de campo de um objeto CRecordset
e as colunas de um registro na fonte de dados do tipo ODBC SQL_REAL.
Sintaxe
void RFX_Single(
CFieldExchange* pFX,
const char* szName,
float& value);
Parâmetros
pFX
Um ponteiro para um objeto da classe CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função. Para obter mais informações sobre as operações que um objeto CFieldExchange
pode especificar, consulte o artigo Registrar troca de campos: como funciona RFX.
szName
O nome de uma coluna de dados.
value
O valor armazenado no membro de dados indicado – o valor a ser transferido. Em uma transferência do conjunto de registros para a fonte de dados, o valor, do tipo float
, é obtido do membro de dados especificado. Em uma transferência da fonte de dados para o conjunto de registros, o valor é armazenado no membro de dados especificado.
Exemplo
Consulte RFX_Text.
Requisitos
Cabeçalho: afxdb.h
RFX_Text
Transfere dados CString
entre os membros de dados de campo de um objeto CRecordset
e colunas de um registro na fonte de dados do tipo ODBC 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 ponteiro para um objeto de classe CFieldExchange
. Este objeto contém informações para definir o contexto de cada chamada da função. Para obter mais informações sobre as operações que um objeto CFieldExchange
pode especificar, consulte o artigo Registrar troca de campos: como funciona RFX.
szName
O nome de uma coluna de dados.
value
O valor armazenado no membro de dados indicado – o valor a ser transferido. Em uma transferência do conjunto de registros para a fonte de dados, o valor, do tipo CString
, é obtido do membro de dados especificado. Em uma transferência da fonte de dados para o conjunto de registros, o valor é armazenado no membro de dados especificado.
nMaxLength
O comprimento máximo permitido da cadeia de caracteres ou da matriz sendo transferida. O valor padrão de nMaxLength é 255. Os valores legais são de 1 a INT_MAX). A estrutura aloca essa quantidade de espaço para os dados. Para obter o melhor desempenho, passe um valor grande o suficiente para acomodar o maior item de dados esperado.
nColumnType
Usado principalmente em parâmetros. Um inteiro que indica o tipo de dados do parâmetro. O tipo é um tipo de dados ODBC na forma de SQL_XXX.
nScale
Especifica a escala dos valores do tipo ODBC SQL_DECIMAL ou SQL_NUMERIC. nScale só é útil ao definir valores de parâmetros. Para obter mais informações, consulte o tópico "Precisão, escala, comprimento e tamanho de exibição" no Apêndice D da Referência do Programador do SDK ODBC.
Comentários
Os dados na fonte de dados de todos esses tipos são mapeados de e para CString
no conjunto de registros.
Exemplo
Este exemplo mostra várias chamadas para RFX_Text
. Observe também as duas chamadas para CFieldExchange::SetFieldType
. Nos parâmetros, você deve gravar a chamada SetFieldType
e sua chamada RFX. A chamada de coluna de saída e suas chamadas RFX associadas geralmente são gravadas 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);
}
Requisitos
Cabeçalho: afxdb.h
RFX_Binary_Bulk
Transfere várias linhas de dados de bytes de uma coluna de uma fonte de dados ODBC para uma matriz correspondente em um objeto derivado de CRecordset
.
Sintaxe
void RFX_Binary_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
BYTE** prgByteVals,
long** prgLengths,
int nMaxLength);
Parâmetros
pFX
Um ponteiro para um objeto CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função. Para obter mais informações, consulte o artigo Registrar troca de campos: como funciona RFX.
szName
O nome de uma coluna de dados.
prgByteVals
Um ponteiro para uma matriz de valores BYTE. Essa matriz armazenará os dados a serem transferidos da fonte de dados para o conjunto de registros.
prgLengths
Um ponteiro para uma matriz de inteiros longos. Essa matriz armazenará o comprimento em bytes de cada valor na matriz apontada por prgByteVals. Observe que o valor SQL_NULL_DATA será armazenado se o item de dados correspondente contiver um valor nulo. Para obter mais detalhes, consulte a função SQLBindCol
da API ODBC na Referência do Programador do SDK ODBC.
nMaxLength
O comprimento máximo permitido dos valores armazenados na matriz apontada por prgByteVals. Para garantir que os dados não sejam truncados, passe um valor grande o suficiente para acomodar o maior item de dados esperado.
Comentários
A coluna de fonte de dados pode ter um tipo ODBC de SQL_BINARY, SQL_VARBINARY ou SQL_LONGVARBINARY. O conjunto de registros deve definir um membro de dados de campo do ponteiro de tipo para BYTE.
Se você inicializar prgByteVals e prgLengths para NULL, as matrizes para as quais eles apontam serão alocadas automaticamente com tamanhos iguais ao tamanho do conjunto de linhas.
Observação
A troca do campo de registro em massa transfere apenas os dados da fonte de dados para o objeto de conjunto de registros. Para que o conjunto de registros possa ser atualizado, você deve usar a função SQLSetPos
de API ODBC.
Para obter mais informações, confira os artigos Conjunto de registros: buscar registros em cassa (ODBC) e RFX (troca de campo de registro).
Exemplo
Confira RFX_Text_Bulk.
Requisitos
Cabeçalho: afxdb.h
RFX_Bool_Bulk
Transfere várias linhas de dados boolianos de uma coluna de uma fonte de dados ODBC para uma matriz correspondente em um objeto derivado de CRecordset
.
Sintaxe
void RFX_Bool_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
BOOL** prgBoolVals,
long** prgLengths);
Parâmetros
pFX
Um ponteiro para um objeto CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função. Para obter mais informações, consulte o artigo Registrar troca de campos: como funciona RFX.
szName
O nome de uma coluna de dados.
prgBoolVals
Um ponteiro para uma matriz de valores BOOL. Essa matriz armazenará os dados a serem transferidos da fonte de dados para o conjunto de registros.
prgLengths
Um ponteiro para uma matriz de inteiros longos. Essa matriz armazenará o comprimento em bytes de cada valor na matriz apontada por prgBoolVals. Observe que o valor SQL_NULL_DATA será armazenado se o item de dados correspondente contiver um valor nulo. Para obter mais detalhes, consulte a função SQLBindCol
da API ODBC na Referência do Programador do SDK ODBC.
Comentários
A coluna de fonte de dados deve ter um tipo ODBC de SQL_BIT. O conjunto de registros deve definir um membro de dados de campo do ponteiro de tipo para BOOL.
Se você inicializar prgBoolVals e prgLengths para NULL, as matrizes para as quais eles apontam serão alocadas automaticamente com tamanhos iguais ao tamanho do conjunto de linhas.
Observação
A troca do campo de registro em massa transfere apenas os dados da fonte de dados para o objeto de conjunto de registros. Para que o conjunto de registros possa ser atualizado, você deve usar a função SQLSetPos
de API ODBC.
Para obter mais informações, confira os artigos Conjunto de registros: buscar registros em cassa (ODBC) e RFX (troca de campo de registro).
Exemplo
Confira RFX_Text_Bulk.
Requisitos
Cabeçalho: afxdb.h
RFX_Byte_Bulk
Transfere várias linhas de bytes simples de uma coluna de uma fonte de dados ODBC para uma matriz correspondente em um objeto derivado de CRecordset
.
Sintaxe
void RFX_Byte_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
BYTE** prgByteVals,
long** prgLengths);
Parâmetros
pFX
Um ponteiro para um objeto CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função. Para obter mais informações, consulte o artigo Registrar troca de campos: como funciona RFX.
szName
O nome de uma coluna de dados.
prgByteVals
Um ponteiro para uma matriz de valores BYTE. Essa matriz armazenará os dados a serem transferidos da fonte de dados para o conjunto de registros.
prgLengths
Um ponteiro para uma matriz de inteiros longos. Essa matriz armazenará o comprimento em bytes de cada valor na matriz apontada por prgByteVals. Observe que o valor SQL_NULL_DATA será armazenado se o item de dados correspondente contiver um valor nulo. Para obter mais detalhes, consulte a função SQLBindCol
da API ODBC na Referência do Programador do SDK ODBC.
Comentários
A coluna de fonte de dados deve ter um tipo ODBC de SQL_TINYINT. O conjunto de registros deve definir um membro de dados de campo do ponteiro de tipo para BYTE.
Se você inicializar prgByteVals e prgLengths para NULL, as matrizes para as quais eles apontam serão alocadas automaticamente com tamanhos iguais ao tamanho do conjunto de linhas.
Observação
A troca do campo de registro em massa transfere apenas os dados da fonte de dados para o objeto de conjunto de registros. Para que o conjunto de registros possa ser atualizado, você deve usar a função SQLSetPos
de API ODBC.
Para obter mais informações, confira os artigos Conjunto de registros: buscar registros em cassa (ODBC) e RFX (troca de campo de registro).
Exemplo
Confira RFX_Text_Bulk.
Requisitos
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 uma matriz correspondente em um objeto derivado de CRecordset
.
Sintaxe
void RFX_Date_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
TIMESTAMP_STRUCT** prgTSVals,
long** prgLengths);
Parâmetros
pFX
Um ponteiro para um objeto CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função. Para obter mais informações, consulte o artigo Registrar troca de campos: como funciona RFX.
szName
O nome de uma coluna de dados.
prgTSVals
Um ponteiro para uma matriz com valores TIMESTAMP_STRUCT. Essa matriz armazenará os dados a serem transferidos da fonte de dados para o conjunto de registros. Para obter 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 do SDK ODBC.
prgLengths
Um ponteiro para uma matriz de inteiros longos. Essa matriz armazenará o comprimento em bytes de cada valor na matriz apontada por prgTSVals. Observe que o valor SQL_NULL_DATA será armazenado se o item de dados correspondente contiver um valor nulo. Para obter mais detalhes, consulte a função SQLBindCol
da API ODBC na Referência do Programador do SDK ODBC.
Comentários
A coluna de fonte de dados pode ter um tipo ODBC de SQL_DATE, SQL_TIME ou SQL_TIMESTAMP. O conjunto de registros deve definir um membro de dados de campo do ponteiro de tipo para TIMESTAMP_STRUCT.
Se você inicializar prgTSVals e prgLengths para NULL, as matrizes para as quais eles apontam serão alocadas automaticamente com tamanhos iguais ao tamanho do conjunto de linhas.
Observação
A troca do campo de registro em massa transfere apenas os dados da fonte de dados para o objeto de conjunto de registros. Para que o conjunto de registros possa ser atualizado, você deve usar a função SQLSetPos
de API ODBC.
Para obter mais informações, confira os artigos Conjunto de registros: buscar registros em cassa (ODBC) e RFX (troca de campo de registro).
Exemplo
Confira RFX_Text_Bulk.
Requisitos
Cabeçalho: afxdb.h
RFX_Double_Bulk
Transfere várias linhas de dados de ponto flutuante e precisão dupla de uma coluna de uma fonte de dados ODBC para uma matriz correspondente em um objeto derivado de CRecordset
.
Sintaxe
void RFX_Double_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
double** prgDblVals,
long** prgLengths);
Parâmetros
pFX
Um ponteiro para um objeto CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função. Para obter mais informações, consulte o artigo Registrar troca de campos: como funciona RFX.
szName
O nome de uma coluna de dados.
prgDblVals
Um ponteiro para uma matriz de valores double
. Essa matriz armazenará os dados a serem transferidos da fonte de dados para o conjunto de registros.
prgLengths
Um ponteiro para uma matriz de inteiros longos. Essa matriz armazenará o comprimento em bytes de cada valor na matriz apontada por prgDblVals. Observe que o valor SQL_NULL_DATA será armazenado se o item de dados correspondente contiver um valor nulo. Para obter mais detalhes, consulte a função SQLBindCol
da API ODBC na Referência do Programador do SDK ODBC.
Comentários
A coluna de fonte de dados deve ter um tipo ODBC de SQL_DOUBLE. O conjunto de registros deve definir um membro de dados de campo do ponteiro de tipo para double
.
Se você inicializar prgDblVals e prgLengths para NULL, as matrizes para as quais eles apontam serão alocadas automaticamente com tamanhos iguais ao tamanho do conjunto de linhas.
Observação
A troca do campo de registro em massa transfere apenas os dados da fonte de dados para o objeto de conjunto de registros. Para que o conjunto de registros possa ser atualizado, você deve usar a função SQLSetPos
de API ODBC.
Para obter mais informações, confira os artigos Conjunto de registros: buscar registros em cassa (ODBC) e RFX (troca de campo de registro).
Exemplo
Confira RFX_Text_Bulk.
Requisitos
Cabeçalho: afxdb.h
RFX_Int_Bulk
Transfere dados inteiros entre os membros de dados de campo de um objeto CRecordset
e as colunas de um registro na fonte de dados do tipo ODBC SQL_SMALLINT.
Sintaxe
void RFX_Int(
CFieldExchange* pFX,
const char* szName,
int& value);
Parâmetros
pFX
Um ponteiro para um objeto da classe CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função. Para obter mais informações sobre as operações que um objeto CFieldExchange
pode especificar, consulte o artigo Registrar troca de campos: como funciona RFX.
szName
O nome de uma coluna de dados.
value
O valor armazenado no membro de dados indicado – o valor a ser transferido. Em uma transferência do conjunto de registros para a fonte de dados, o valor, do tipo int
, é obtido do membro de dados especificado. Em uma transferência da fonte de dados para o conjunto de registros, o valor é armazenado no membro de dados especificado.
Exemplo
Consulte RFX_Text.
Requisitos
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 uma matriz correspondente em um objeto derivado de CRecordset
.
Sintaxe
void RFX_Long_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
long** prgLongVals,
long** prgLengths);
Parâmetros
pFX
Um ponteiro para um objeto CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função. Para obter mais informações, consulte o artigo Registrar troca de campos: como funciona RFX.
szName
O nome de uma coluna de dados.
prgLongVals
Um ponteiro para uma matriz de inteiros longos. Essa matriz armazenará os dados a serem transferidos da fonte de dados para o conjunto de registros.
prgLengths
Um ponteiro para uma matriz de inteiros longos. Essa matriz armazenará o comprimento em bytes de cada valor na matriz apontada por prgLongVals. Observe que o valor SQL_NULL_DATA será armazenado se o item de dados correspondente contiver um valor nulo. Para obter mais detalhes, consulte a função SQLBindCol
da API ODBC na Referência do Programador do SDK ODBC.
Comentários
A coluna de fonte de dados deve ter um tipo ODBC de SQL_INTEGER. O conjunto de registros deve definir um membro de dados de campo do ponteiro de tipo para long
.
Se você inicializar prgLongVals e prgLengths para NULL, as matrizes para as quais eles apontam serão alocadas automaticamente com tamanhos iguais ao tamanho do conjunto de linhas.
Observação
A troca do campo de registro em massa transfere apenas os dados da fonte de dados para o objeto de conjunto de registros. Para que o conjunto de registros possa ser atualizado, você deve usar a função SQLSetPos
de API ODBC.
Para obter mais informações, confira os artigos Conjunto de registros: buscar registros em cassa (ODBC) e RFX (troca de campo de registro).
Exemplo
Confira RFX_Text_Bulk.
Requisitos
Cabeçalho: afxdb.h
RFX_Single_Bulk
Transfere várias linhas de dados de ponto flutuante de uma coluna de uma fonte de dados ODBC para uma matriz correspondente em um objeto derivado de CRecordset
.
Sintaxe
void RFX_Single_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
float** prgFltVals,
long** prgLengths);
Parâmetros
pFX
Um ponteiro para um objeto CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função. Para obter mais informações, consulte o artigo Registrar troca de campos: como funciona RFX.
szName
O nome de uma coluna de dados.
prgFltVals
Um ponteiro para uma matriz de valores float
. Essa matriz armazenará os dados a serem transferidos da fonte de dados para o conjunto de registros.
prgLengths
Um ponteiro para uma matriz de inteiros longos. Essa matriz armazenará o comprimento em bytes de cada valor na matriz apontada por prgFltVals. Observe que o valor SQL_NULL_DATA será armazenado se o item de dados correspondente contiver um valor nulo. Para obter mais detalhes, consulte a função SQLBindCol
da API ODBC na Referência do Programador do SDK ODBC.
Comentários
A coluna de fonte de dados deve ter um tipo ODBC de SQL_REAL. O conjunto de registros deve definir um membro de dados de campo do ponteiro de tipo para float
.
Se você inicializar prgFltVals e prgLengths para NULL, as matrizes para as quais eles apontam serão alocadas automaticamente com tamanhos iguais ao tamanho do conjunto de linhas.
Observação
A troca do campo de registro em massa transfere apenas os dados da fonte de dados para o objeto de conjunto de registros. Para que o conjunto de registros possa ser atualizado, você deve usar a função SQLSetPos
de API ODBC.
Para obter mais informações, confira os artigos Conjunto de registros: buscar registros em cassa (ODBC) e RFX (troca de campo de registro).
Exemplo
Confira RFX_Text_Bulk.
Requisitos
Cabeçalho: afxdb.h
RFX_Text_Bulk
Transfere várias linhas de dados de caractere de uma coluna de uma fonte de dados ODBC para uma matriz correspondente em um objeto derivado de CRecordset
.
Sintaxe
void RFX_Text_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
LPSTR* prgStrVals,
long** prgLengths,
int nMaxLength);
Parâmetros
pFX
Um ponteiro para um objeto CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função. Para obter mais informações, consulte o artigo Registrar troca de campos: como funciona RFX.
szName
O nome de uma coluna de dados.
prgStrVals
Um ponteiro para uma matriz de valores LPSTR. Essa matriz armazenará os dados a serem transferidos da fonte de dados para o conjunto de registros. Observe que, na versão atual do ODBC, esses valores não podem ser Unicode.
prgLengths
Um ponteiro para uma matriz de inteiros longos. Essa matriz armazenará o comprimento em bytes de cada valor na matriz apontada por prgStrVals. Esse comprimento exclui o caractere de terminação nulo. Observe que o valor SQL_NULL_DATA será armazenado se o item de dados correspondente contiver um valor nulo. Para obter mais detalhes, consulte a função SQLBindCol
da API ODBC na Referência do Programador do SDK ODBC.
nMaxLength
O comprimento máximo permitido dos valores armazenados na matriz apontada por prgStrVals, incluindo o caractere de terminação nulo. Para garantir que os dados não sejam truncados, passe um valor grande o suficiente para acomodar o maior item de dados esperado.
Comentários
A coluna de fonte de dados pode ter um tipo ODBC de SQL_LONGVARCHAR, SQL_CHAR, SQL_VARCHAR, SQL_DECIMAL ou SQL_NUMERIC. O conjunto de registros deve definir um membro de dados de campo do tipo LPSTR.
Se você inicializar prgStrVals e prgLengths para NULL, as matrizes para as quais eles apontam serão alocadas automaticamente com tamanhos iguais ao tamanho do conjunto de linhas.
Observação
A troca do campo de registro em massa transfere apenas os dados da fonte de dados para o objeto de conjunto de registros. Para que o conjunto de registros possa ser atualizado, você deve usar a função SQLSetPos
de API ODBC.
Para obter mais informações, confira os artigos Conjunto de registros: buscar registros em cassa (ODBC) e RFX (troca de campo de registro).
Exemplo
Você deve gravar chamadas manualmente em sua substituição DoBulkFieldExchange
. Este exemplo mostra uma chamada para RFX_Text_Bulk
, bem como uma chamada para RFX_Long_Bulk
, para transferência de dados. Essas chamadas são precedidas por uma chamada para CFieldExchange::SetFieldType. Observe que nos parâmetros, você deve chamar as funções RFX em vez das funções RFX em massa.
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);
}
Requisitos
Cabeçalho: afxdb.h
DFX_Binary
Transfere as matrizes de bytes entre os membros de dados de campo de um objeto CDaoRecordset e as colunas de um registro 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 ponteiro para um objeto da classe CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função.
szName
O nome de uma coluna de dados.
value
O valor armazenado no membro de dados indicado – o valor a ser transferido. Em uma transferência do conjunto de registros para a fonte de dados, o valor, do tipo CByteArray, é obtido do membro de dados especificado. Em uma transferência da fonte de dados para o conjunto de registros, o valor é armazenado no membro de dados especificado.
nPreAllocSize
A estrutura pré-aloca essa quantidade de memória. Se os dados forem maiores, a estrutura alocará mais espaço, conforme necessário. Para obter um melhor desempenho, defina esse tamanho como um valor grande o suficiente para evitar realocações. O tamanho padrão é definido no arquivo AFXDAO.H como AFX_DAO_BINARY_DEFAULT_SIZE.
dwBindOptions
Uma opção que permite aproveitar o mecanismo de buffer duplo do MFC para detectar os campos de conjunto de registros que foram alterados. O padrão, AFX_DAO_DISABLE_FIELD_CACHE, não usa buffer duplo e você deve chamar SetFieldDirty e SetFieldNull. O outro valor possível, AFX_DAO_ENABLE_FIELD_CACHE, usa buffer duplo e não é necessário trabalho extra para marcar os campos como sujos ou nulos. Por motivos de desempenho e memória, evite esse valor, a menos que os dados binários sejam relativamente pequenos.
Observação
É possível controlar se os dados são armazenados em buffer duplo para todos os campos por padrão definindo CDaoRecordset::m_bCheckCacheForDirtyFields.
Comentários
Os dados são mapeados entre o tipo DAO_BYTES no DAO e o tipo CByteArray no conjunto de registros.
Exemplo
Confira DFX_Text.
Requisitos
Cabeçalho: afxdao.h
DFX_Bool
Transfere dados boolianos entre os membros de dados de campo de um objeto CDaoRecordset e as colunas de um registro 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 ponteiro para um objeto da classe CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função.
szName
O nome de uma coluna de dados.
value
O valor armazenado no membro de dados indicado – o valor a ser transferido. Em uma transferência do conjunto de registros para a fonte de dados, o valor, do tipo BOOL, é obtido do membro de dados especificado. Em uma transferência da fonte de dados para o conjunto de registros, o valor é armazenado no membro de dados especificado.
dwBindOptions
Uma opção que permite aproveitar o mecanismo de buffer duplo do MFC para detectar os campos de conjunto de registros que foram alterados. O padrão, AFX_DAO_ENABLE_FIELD_CACHE, usa buffer duplo. O outro valor possível é AFX_DAO_DISABLE_FIELD_CACHE. Se você especificar esse valor, o MFC não fará nenhuma verificação neste campo. Você deve chamar SetFieldDirty
e SetFieldNull
.
Observação
É possível controlar se os dados são armazenados em buffer duplo por padrão definindo CDaoRecordset::m_bCheckCacheForDirtyFields.
Comentários
Os dados são mapeados entre o tipo DAO_BOOL no DAO e o tipo BOOL no conjunto de registros.
Exemplo
Confira DFX_Text.
Requisitos
Cabeçalho: afxdao.h
DFX_Byte
Transfere bytes simples entre os membros de dados de campo de um objeto CDaoRecordset e as colunas de um registro 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 ponteiro para um objeto da classe CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função.
szName
O nome de uma coluna de dados.
value
O valor armazenado no membro de dados indicado – o valor a ser transferido. Em uma transferência do conjunto de registros para a fonte de dados, o valor, do tipo BYTE, é obtido do membro de dados especificado. Em uma transferência da fonte de dados para o conjunto de registros, o valor é armazenado no membro de dados especificado.
dwBindOptions
Uma opção que permite aproveitar o mecanismo de buffer duplo do MFC para detectar os campos de conjunto de registros que foram alterados. O padrão, AFX_DAO_ENABLE_FIELD_CACHE, usa buffer duplo. O outro valor possível é AFX_DAO_DISABLE_FIELD_CACHE. Se você especificar esse valor, o MFC não fará nenhuma verificação neste campo. Você deve chamar SetFieldDirty
e SetFieldNull
.
Observação
É possível controlar se os dados são armazenados em buffer duplo por padrão definindo CDaoRecordset::m_bCheckCacheForDirtyFields.
Comentários
Os dados são mapeados entre o tipo DAO_BYTES no DAO e o tipo BYTE no conjunto de registros.
Exemplo
Confira DFX_Text.
Requisitos
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 registro 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 ponteiro para um objeto da classe CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função.
szName
O nome de uma coluna de dados.
value
O valor armazenado no membro de dados indicado – o valor a ser transferido. Em uma transferência do conjunto de registros para a fonte de dados, este valor é obtido do membro de dados especificado do tipo COleCurrency. Em uma transferência da fonte de dados para o conjunto de registros, o valor é armazenado no membro de dados especificado.
dwBindOptions
Uma opção que permite aproveitar o mecanismo de buffer duplo do MFC para detectar os campos de conjunto de registros que foram alterados. O padrão, AFX_DAO_ENABLE_FIELD_CACHE, usa buffer duplo. O outro valor possível é AFX_DAO_DISABLE_FIELD_CACHE. Se você especificar esse valor, o MFC não fará nenhuma verificação neste campo. Você deve chamar SetFieldDirty
e SetFieldNull
.
Observação
É possível controlar se os dados são armazenados em buffer duplo por padrão definindo CDaoRecordset::m_bCheckCacheForDirtyFields.
Comentários
Os dados são mapeados entre o tipo DAO_CURRENCY no DAO e o tipo COleCurrency no conjunto de registros.
Exemplo
Confira DFX_Text.
Requisitos
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 registro 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 ponteiro para um objeto da classe CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função.
szName
O nome de uma coluna de dados.
value
O valor armazenado no membro de dados indicado – o valor a ser transferido. A função faz referência a um objeto COleDateTime. Em uma transferência do conjunto de registros para a fonte de dados, este valor é obtido do membro de dados especificado. Em uma transferência da fonte de dados para o conjunto de registros, o valor é armazenado no membro de dados especificado.
dwBindOptions
Uma opção que permite aproveitar o mecanismo de buffer duplo do MFC para detectar os campos de conjunto de registros que foram alterados. O padrão, AFX_DAO_ENABLE_FIELD_CACHE, usa buffer duplo. O outro valor possível é AFX_DAO_DISABLE_FIELD_CACHE. Se você especificar esse valor, o MFC não fará nenhuma verificação neste campo. Você deve chamar SetFieldDirty
e SetFieldNull
.
Observação
É possível controlar se os dados são armazenados em buffer duplo por padrão definindo CDaoRecordset::m_bCheckCacheForDirtyFields.
Comentários
Os dados são mapeados entre o tipo DAO_DATE no DAO e o tipo COleDateTime no conjunto de registros.
Observação
COleDateTime
substitui CTime e TIMESTAMP_STRUCT para essa finalidade nas classes DAO. CTime
e TIMESTAMP_STRUCT ainda são usados nas classes de acesso a dados baseadas em ODBC.
Exemplo
Confira DFX_Text.
Requisitos
Cabeçalho: afxdao.h
DFX_Double
Transfere dados de float duplo entre os membros de dados de campo de um objeto CDaoRecordset e as colunas de um registro 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 ponteiro para um objeto da classe CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função.
szName
O nome de uma coluna de dados.
value
O valor armazenado no membro de dados indicado – o valor a ser transferido. Em uma transferência do conjunto de registros para a fonte de dados, o valor, do tipo double
, é obtido do membro de dados especificado. Em uma transferência da fonte de dados para o conjunto de registros, o valor é armazenado no membro de dados especificado.
dwBindOptions
Uma opção que permite aproveitar o mecanismo de buffer duplo do MFC para detectar os campos de conjunto de registros que foram alterados. O padrão, AFX_DAO_ENABLE_FIELD_CACHE, usa buffer duplo. O outro valor possível é AFX_DAO_DISABLE_FIELD_CACHE. Se você especificar esse valor, o MFC não fará nenhuma verificação neste campo. Você deve chamar SetFieldDirty
e SetFieldNull
.
Observação
É possível controlar se os dados são armazenados em buffer duplo por padrão definindo CDaoRecordset::m_bCheckCacheForDirtyFields.
Comentários
Os dados são mapeados entre o tipo DAO_R8 no DAO e o tipo float duplo no conjunto de registros.
Exemplo
Confira DFX_Text.
Requisitos
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 registro 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 ponteiro para um objeto da classe CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função.
szName
O nome de uma coluna de dados.
value
O valor armazenado no membro de dados indicado – o valor a ser transferido. Em uma transferência do conjunto de registros para a fonte de dados, o valor, do tipo long
, é obtido do membro de dados especificado. Em uma transferência da fonte de dados para o conjunto de registros, o valor é armazenado no membro de dados especificado.
dwBindOptions
Uma opção que permite aproveitar o mecanismo de buffer duplo do MFC para detectar os campos de conjunto de registros que foram alterados. O padrão, AFX_DAO_ENABLE_FIELD_CACHE, usa buffer duplo. O outro valor possível é AFX_DAO_DISABLE_FIELD_CACHE. Se você especificar esse valor, o MFC não fará nenhuma verificação neste campo. Você deve chamar SetFieldDirty
e SetFieldNull
.
Observação
É possível controlar se os dados são armazenados em buffer duplo por padrão definindo CDaoRecordset::m_bCheckCacheForDirtyFields.
Comentários
Os dados são mapeados entre o tipo DAO_I4 no DAO e o tipo long
no conjunto de registros.
Exemplo
Confira DFX_Text.
Requisitos
Cabeçalho: afxdao.h
DFX_LongBinary
Importante É recomendável usar DFX_Binary em vez dessa 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 ponteiro para um objeto da classe CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função.
szName
O nome de uma coluna de dados.
value
O valor armazenado no membro de dados indicado – o valor a ser transferido. Em uma transferência do conjunto de registros para a fonte de dados, o valor, do tipo CLongBinary, é obtido do membro de dados especificado. Em uma transferência da fonte de dados para o conjunto de registros, o valor é armazenado no membro de dados especificado.
dwPreAllocSize
A estrutura pré-aloca essa quantidade de memória. Se os dados forem maiores, a estrutura alocará mais espaço, conforme necessário. Para obter um melhor desempenho, defina esse tamanho como um valor grande o suficiente para evitar realocações.
dwBindOptions
Uma opção que permite aproveitar o mecanismo de buffer duplo do MFC para detectar os campos de conjunto de registros que foram alterados. O padrão AFX_DISABLE_FIELD_CACHE, não usa buffer duplo. O outro valor possível é AFX_DAO_ENABLE_FIELD_CACHE. Usa buffer duplo e não é necessário trabalho extra para marcar os campos como sujos ou nulos. Por motivos de desempenho e memória, evite esse valor, a menos que os dados binários sejam relativamente pequenos.
Observação
É possível controlar se os dados são armazenados em buffer duplo por padrão definindo CDaoRecordset::m_bCheckCacheForDirtyFields.
Comentários
DFX_LongBinary
é fornecido para compatibilidade com as classes ODBC MFC. A função DFX_LongBinary
transfere dados de BLOB (objeto binário grande) usando a classe CLongBinary
entre os membros de dados de campo de um objeto CDaoRecordset e as colunas de um registro na fonte de dados. Os dados são mapeados entre o tipo DAO_BYTES no DAO e o tipo CLongBinary no conjunto de registros.
Exemplo
Confira DFX_Text.
Requisitos
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 registro 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 ponteiro para um objeto da classe CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função.
szName
O nome de uma coluna de dados.
value
O valor armazenado no membro de dados indicado – o valor a ser transferido. Em uma transferência do conjunto de registros para a fonte de dados, o valor, do tipo short
, é obtido do membro de dados especificado. Em uma transferência da fonte de dados para o conjunto de registros, o valor é armazenado no membro de dados especificado.
dwBindOptions
Uma opção que permite aproveitar o mecanismo de buffer duplo do MFC para detectar os campos de conjunto de registros que foram alterados. O padrão, AFX_DAO_ENABLE_FIELD_CACHE, usa buffer duplo. O outro valor possível é AFX_DAO_DISABLE_FIELD_CACHE. Se você especificar esse valor, o MFC não fará nenhuma verificação neste campo. Você deve chamar SetFieldDirty
e SetFieldNull
.
Observação
É possível controlar se os dados são armazenados em buffer duplo por padrão definindo CDaoRecordset::m_bCheckCacheForDirtyFields.
Comentários
Os dados são mapeados entre o tipo DAO_I2 no DAO e o tipo short
no conjunto de registros.
Observação
DFX_Short
é equivalente a RFX_Int para as classes baseadas em ODBC.
Exemplo
Confira DFX_Text.
Requisitos
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 registro 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 ponteiro para um objeto da classe CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função.
szName
O nome de uma coluna de dados.
value
O valor armazenado no membro de dados indicado – o valor a ser transferido. Em uma transferência do conjunto de registros para a fonte de dados, o valor, do tipo float
, é obtido do membro de dados especificado. Em uma transferência da fonte de dados para o conjunto de registros, o valor é armazenado no membro de dados especificado.
dwBindOptions
Uma opção que permite aproveitar o mecanismo de buffer duplo do MFC para detectar os campos de conjunto de registros que foram alterados. O padrão, AFX_DAO_ENABLE_FIELD_CACHE, usa buffer duplo. O outro valor possível é AFX_DAO_DISABLE_FIELD_CACHE. Se você especificar esse valor, o MFC não fará nenhuma verificação neste campo. Você deve chamar SetFieldDirty
e SetFieldNull
.
Observação
É possível controlar se os dados são armazenados em buffer duplo por padrão definindo CDaoRecordset::m_bCheckCacheForDirtyFields.
Comentários
Os dados são mapeados entre o tipo DAO_R4 no DAO e o tipo float
no conjunto de registros.
Exemplo
Confira DFX_Text.
Requisitos
Cabeçalho: afxdao.h
DFX_Text
Transfere dados CString
entre os membros de dados de campo de um objeto CDaoRecordset e colunas de um registro 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 ponteiro para um objeto da classe CFieldExchange. Este objeto contém informações para definir o contexto de cada chamada da função.
szName
O nome de uma coluna de dados.
value
O valor armazenado no membro de dados indicado – o valor a ser transferido. Em uma transferência do conjunto de registros para a fonte de dados, o valor, do tipo CString, é obtido do membro de dados especificado. Em uma transferência da fonte de dados para o conjunto de registros, o valor é armazenado no membro de dados especificado.
nPreAllocSize
A estrutura pré-aloca essa quantidade de memória. Se os dados forem maiores, a estrutura alocará mais espaço, conforme necessário. Para obter um melhor desempenho, defina esse tamanho como um valor grande o suficiente para evitar realocações.
dwBindOptions
Uma opção que permite aproveitar o mecanismo de buffer duplo do MFC para detectar os campos de conjunto de registros que foram alterados. O padrão, AFX_DAO_ENABLE_FIELD_CACHE, usa buffer duplo. O outro valor possível é AFX_DAO_DISABLE_FIELD_CACHE. Se você especificar esse valor, o MFC não fará nenhuma verificação neste campo. Você deve chamar SetFieldDirty e SetFieldNull.
Observação
É possível controlar se os dados são armazenados em buffer duplo por padrão definindo CDaoRecordset::m_bCheckCacheForDirtyFields.
Comentários
Os dados são mapeados entre o tipo DAO_CHAR no DAO (ou, se o símbolo _UNICODE for definido, DAO_WCHAR) e o tipo CString no conjunto de registros. n
Exemplo
Este exemplo mostra várias chamadas para DFX_Text
. Observe também as duas chamadas para CDaoFieldExchange::SetFieldType. Você deve gravar a primeira chamada para SetFieldType
e sua chamada DFX. A segunda chamada e suas chamadas DFX associadas normalmente são gravadas 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);
}
Requisitos
Cabeçalho: afxdao.h
Confira também
Macros e Globais
CRecordset::DoFieldExchange
CRecordset::DoBulkFieldExchange
CDaoRecordset::DoFieldExchange