Partilhar via


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