Intercâmbio de campo do registro: Como funciona a RFX

Este tópico explica o processo RFX.Esta é uma avançada tópico abrangente:

  • RFX e o conjunto de registros

  • O processo RFX

Observação:

Este tópico se aplica a classes derivadas de CRecordset em qual linha em massa a busca não foi implementada. Se você estiver usando a busca de linha em massa, troca de campo de registro em massa (Bulk RFX) é implementada.Em massa RFX é semelhante ao RFX.Para entender as diferenças, consulte conjunto de registros: Buscando os registros em massa (ODBC).

RFX e o conjunto de registros

Membros de dados de campo do objeto conjunto de registros, juntos, constituem um buffer de edição que contém as colunas selecionadas de um registro.Quando o conjunto de registros é aberto pela primeira vez e está para ler o primeiro registro, RFX vínculos (associados) cada selecionado coluna para o endereço do membro de dados do campo apropriado.Quando o conjunto de registros atualiza um registro, RFX chama funções da API do ODBC para enviar um SQL ATUALIZAÇÃO or INSERIR demonstrativo para o driver.RFX utiliza seu conhecimento dos membros de dados de campo para especificar as colunas para escrever.

A estrutura faz backup de buffer de edição em determinados estágios para que ele possa restauração seu Sumário, se necessário.RFX faz backup de buffer de edição antes de adicionar um novo registro e antes de editar um registro existente.Ele restaura o buffer de edição em alguns casos, por exemplo, após um Atualização telefonar a seguirAddNew. Buffer de edição não é restaurado se abandonar um buffer de edição recém-alterados, por exemplo, movendo para outro registro antes de chamar Atualização.

Além de troca de dados entre a fonte de dados e membros de dados de campo do conjunto de registros, RFX gerencia parâmetros de ligação.Quando o conjunto de registros é aberto, todos os membros dados de parâmetro são vinculados na ordem do "?" espaços reservados na demonstrativo SQL queCRecordset::Open construções. Para obter mais informações, consulte conjunto de registros: Parametrização um conjunto de registros (ODBC).

substituir da classe do conjunto de registros de DoFieldExchange faz todo o trabalho, movimentação de dados em ambas as direções. Como a troca de dados de caixa de diálogo (DDX), RFX precisa de informações sobre os membros de dados de sua classe.O assistente fornece as informações necessárias ao escrever uma implementação do conjunto de registros específicos de DoFieldExchange para você, com base no campo nomes de membro de dados e tipos de dados especificados com o assistente.

Processo de registro do Exchange campo

Esta seção descreve a sequência de eventos RFX sistema autônomo um objeto conjunto de registros é aberto e à medida que você adicionar, atualizar e excluir registros.A tabela sequência de operações RFX durante Recordset em em aberto e a tabela sequência de operações RFX durante a rolagem neste tópico mostram o processo sistema autônomo RFX processa um Mover comando no conjunto de registros e sistema autônomo RFX gerencia uma atualização.Durante esses processos, DoFieldExchange é chamado para realizar diversas operações diferentes.The m_nOperation membro de dados de do CFieldExchange objeto determina qual operação é solicitada.Talvez seja útil ler conjunto de registros: Como Recordsets selecionar registros (ODBC) e conjunto de registros: Como registros de atualização Recordsets (ODBC) antes de ler este material.

RFX: Ligação inicial de parâmetros e colunas

As seguintes atividades RFX ocorrem, na ordem mostrada, quando você telefonar em aberto função de membro:

  • Se o conjunto de registros tem membros de dados de parâmetro, a estrutura chamará DoFieldExchange Para BIND os parâmetros a espaços reservados de parâmetros no conjunto de registros demonstrativo SQL seqüência de caracteres. Uma representação de dependentes do tipo de dados de valor do parâmetro é usada para cada espaço reservado encontrado no selecionar demonstrativo.Isso ocorre após o demonstrativo SQL é preparado, mas antes que ele seja executado.Para obter informações sobre a preparação de demonstrativo, consulte o :: SQLPrepare função o ODBC Referência do programador.

  • A estrutura chama DoFieldExchange uma segunda vez para BIND os valores das colunas selecionadas a membros de dados de campo correspondente no conjunto de registros. Isso estabelece o objeto de conjunto de registros sistema autônomo um buffer de edição contendo colunas do primeiro registro.

  • Executa o conjunto de registros a demonstrativo SQL e a fonte de dados seleciona o primeiro registro.Colunas do registro são carregadas para membros de dados de campo do conjunto de registros.

A tabela a seguir mostra a sequência de operações RFX quando você em aberto um conjunto de registros.

sequência de operações RFX durante conjunto de registros em em aberto

A operação

Operação DoFieldExchange

Operação de banco de dados/SQL

1.Abra o conjunto de registros.

 

 

 

2.compilação uma demonstrativo SQL.

 

 

 

3.Envie o SQL.

 

4.BIND membros de dados do parâmetro.

 

 

5.Vincule membros de campo de dados a colunas.

 

 

 

6.ODBC faz a movimentação e preencherá os dados.

 

7.Corrija os dados do C++.

 

Recordsets use execução preparada do ODBC para permitir para repetir a consulta rápida com a mesma demonstrativo SQL.Para obter mais informações sobre execução preparada, consulte o SDK do ODBC Referência do programador na biblioteca MSDN.

RFX: Rolagem

Quando você rola de um registro para outro, a estrutura chama DoFieldExchange para substituir os valores armazenados anteriormente nos membros de dados de campo com valores para o novo registro.

A tabela a seguir mostra a sequência de operações RFX quando o usuário move de registro para registro.

sequência de operações RFX durante a rolagem

A operação

Operação DoFieldExchange

Operação de banco de dados/SQL

1. De telefonarMoveNext ou uma das funções de mover.

 

 

 

 

2.ODBC faz a movimentação e preencherá os dados.

 

3.Corrija os dados do C++.

 

RFX: Adicionando novos registros e editando registros existentes

Se você adicionar um novo registro, o conjunto de registros opera sistema autônomo um buffer de edição para criar o Sumário do novo registro.sistema autônomo ocorre com a adição de registros, editar registros envolve alterando sistema autônomo valores de membros de dados de campo do conjunto de registros.Da perspectiva do RFX, a sequência é sistema autônomo segue:

  1. Sua telefonar para AddNew or Editarfunção de membro causa RFX armazenar buffer de edição corrente para possam ser restaurado mais tarde.

  2. AddNew ou Editar prepara os campos no buffer de edição para que RFX pode detectar a membros de dados de campo alterado.

    Como um novo registro tem sem valores anteriores para comparar os novos, AddNew Define o valor de cada membro de dados de campo para um PSEUDO_NULLvalor de .Mais tarde, quando você chamar Atualização, RFX compara o valor de cada membro de dados com o PSEUDO_NULLvalor de .Se houver uma diferença, o membro de dados foi definido.(PSEUDO_NULL não é o mesmo sistema autônomo uma coluna de registro com uma verdadeira valor nulo nem é um do C++ sistema autônomo mesmo NULO.)

    Ao contrário de Atualização telefonar for AddNew, o Atualização telefonar for edição compara valores atualizados com valores armazenados anteriormente em vez de usar PSEUDO_NULL.A diferença é que AddNew não tem armazenados anteriormente valores para comparação.

  3. Você conjunto diretamente os valores de membros de dados do campo cujos valores você deseja edição ou que você deseja preenchido para um novo registro.Isso pode incluir chamada SetFieldNull.

  4. Sua telefonar a Atualização verifica para membros de dados de campo alterado, conforme descrito na etapa 2 (consulte a tabela sequência de operações RFX durante a rolagem).Se nenhum tiver alterado, Atualização retornará 0.Se alguns campos membros de dados foram alterados, Atualização prepara e executa um SQL INSERIR demonstrativo que contém os valores de todos os campos atualizados no registro.

  5. For AddNew, correnteização conclui restaurando os valores armazenados anteriormente do registro que era corrente antes do AddNew telefonar. For edição, os valores novos e editados permanecem no local.

A tabela a seguir mostra a sequência de operações RFX quando você adiciona um novo registro ou edição um registro existente.

sequência de operações RFX durante AddNew e edição

A operação

Operação DoFieldExchange

Operação de banco de dados/SQL

1. De telefonarAddNew ou edição.

 

 

 

2.Fazer backup de buffer de edição.

 

 

3.For AddNew, marcar sistema autônomo membros de dados do campo sistema autônomo "limpa" e nulo.

 

4.Atribua valores a membros de dados do campo de conjunto de registros.

 

 

5. De telefonarAtualização.

 

 

 

6.Verifique se há campos alterados.

 

 

7.compilação SQL INSERIR demonstrativo AddNew ou ATUALIZAÇÃO demonstrativo edição.

 

 

 

8.Envie o SQL.

 

9.For AddNew, restauração o buffer de edição para a qual foi feito - backup Sumário. For edição, excluir o backup.

 

RFX: Excluindo registros existentes

Quando você exclui um registro, RFX define todos sistema autônomo campos sistema autônomo NULO sistema autônomo um lembrete de que o registro é excluído e você deverá mover off-lo.Não é necessário qualquer informação de sequência Outros RFX.

Consulte também

Tarefas

Adicionando um consumidor ODBC do MFC

Conceitos

Registro de campo Exchange (RFX)

Referência

Macros, Global funções e variáveis Global

Classe CFieldExchange

CRecordset::DoFieldExchange