Troca de campo do registro: Como RFX funciona

Este tópico explica o processo RFX.Este é um avançado abrangente do tópico:

  • RFX e o conjunto de registros

  • O processo RFX

ObservaçãoObservação

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

RFX e o conjunto de registros

Membros de dados de campo do objeto recordset, 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 é o primeiro registro de leitura, RFX ligações (associates) cada coluna para o endereço do membro de dados do campo apropriado selecionada.Quando o recordset atualiza um registro, RFX chama funções de API de ODBC para enviar um SQL atualização ou Inserir instrução para o driver.RFX usa seu conhecimento dos membros de dados de campo para especificar colunas para escrever.

A estrutura faz backup de buffer de edição em determinados estágios para que ele possa restaurar seu conteúdo, se necessário.RFX faz backup de buffer de edição antes de adicionar um novo registro e antes de editar um registro existente.Restaura o buffer de edição em alguns casos, por exemplo, após um atualização seguinte chamada AddNew.O buffer de edição não é restaurado se abandonar um buffer de edição alterado recentemente, por exemplo, mover para outro registro antes de chamar atualização.

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

Substituir sua classe de conjunto de registros de DoFieldExchange faz todo o trabalho, a 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 sua classe de dados.O assistente fornece as informações necessárias, escrevendo uma implementação específica do conjunto de registros de DoFieldExchange , baseado nos dados do campo membro nomes e tipos de dados especificados com o assistente.

Processo de troca de campo do registro

Esta seção descreve a seqüência de eventos RFX como um objeto recordset é aberto e como adicionar, atualizar e excluir registros.A tabela Seqüência de RFX operações durante Recordset aberto e a tabela Seqüência de RFX operações durante a rolagem neste tópico mostram o processo como processos RFX um Mover comando no conjunto de registros e como RFX gerencia uma atualização.Durante esses processos DoFieldExchange é chamado para executar muitas operações diferentes.O m_nOperation membro de dados da CFieldExchange objeto determina qual operação é solicitada.Talvez seja útil ler Recordset: como conjuntos de registros selecionar registros (ODBC) e Recordset: como conjuntos de registros atualizar registros (ODBC) antes de ler este material.

ca5a16kd.collapse_all(pt-br,VS.110).gifRFX: Inicial ligação de parâmetros e colunas

Ocorrem as seguintes atividades RFX, na ordem mostrada, ao chamar um objeto recordset Abrir função de membro:

  • Se o conjunto de registros tiver membros de dados de parâmetro, a estrutura chama DoFieldExchange para vincular os parâmetros para espaços reservados de parâmetro na string de instrução de SQL do conjunto de registros.Encontrado um dados dependentes do tipo representação do valor do parâmetro é usada para cada espaço reservado na Selecionar instrução.Isso ocorre após a instrução SQL é preparada, mas antes de ser executado.Para obter informações sobre preparação de instrução, consulte o :: SQLPrepare função no ODBC referência do programador de.

  • O framework chama DoFieldExchange uma segunda vez para vincular os valores das colunas selecionadas para membros de dados do campo correspondente no conjunto de registros.Isso estabelece o objeto recordset como um buffer de edição que contém as colunas do primeiro registro.

  • Recordset executa a instrução 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 seqüência de operações RFX quando você abrir um conjunto de registros.

Seqüência de operações RFX durante o conjunto de registros aberto

A operação

Operação de DoFieldExchange

Operação de banco de dados/SQL

1.Abrir o conjunto de registros.

 

 

 

2.Construir uma instrução SQL.

 

 

 

3.Envie a SQL.

 

4.Vincule os membros de dados de parâmetro.

 

 

5.Vincule os membros de dados de campo para colunas.

 

 

 

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

 

7.Correção de dados do C++.

 

Conjuntos de registros usam execução preparada do ODBC para permitir repetir consulta rápida com a mesma instrução de SQL.Para obter mais informações sobre execução preparada, consulte o SDK do ODBC referência do programador de em Biblioteca MSDN.

ca5a16kd.collapse_all(pt-br,VS.110).gifRFX: rolagem

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

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

Seqüência de operações RFX durante a rolagem

A operação

Operação de DoFieldExchange

Operação de banco de dados/SQL

1.Chamar MoveNext ou uma das funções de movimentação.

 

 

 

 

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

 

3.Correção de dados do C++.

 

ca5a16kd.collapse_all(pt-br,VS.110).gifRFX: Adicionar novos registros e editar registros existentes

Se você adicionar um novo registro, registros funciona como um buffer de edição para criar o conteúdo do novo registro.Com adição de registros, editar registros envolve a alteração dos valores de membros de dados de campo do conjunto de registros.Da perspectiva do RFX, a seqüência é:

  1. Sua chamada para o conjunto de registros AddNew ou Editar RFX armazenar buffer de edição atual para que ele possa ser restaurado posteriormente faz com que a função de membro.

  2. AddNewou Editar prepara os campos no buffer de edição para RFX possa detectar os membros de dados do campo alterado.

    Como um novo registro tem não valores anteriores para comparar as novas, AddNew define o valor de cada membro de dados de campo para um PSEUDO_NULL valor.Mais tarde, quando você chamar atualização, RFX compara o valor de cada membro dados com o PSEUDO_NULL valor.Se houver uma diferença, o membro de dados foi definido.(PSEUDO_NULL não é o mesmo que uma coluna de registro com um valor nulo verdadeiro nem um do mesmo C++ Nulo.)

    Diferentemente do atualização ligue para AddNew, o atualização ligue para Editar compara os valores atualizados com os valores armazenados anteriormente em vez de usar PSEUDO_NULL.A diferença é que AddNew sem valores armazenados anteriormente para comparação.

  3. Definir diretamente os valores dos membros de dados do campo cujos valores você deseja editar ou que você deseja preencher um novo registro.Isso pode incluir chamada SetFieldNull.

  4. Sua chamada para atualização verifica para membros de dados de campo alterado, conforme descrito na etapa 2 (consulte a tabela Seqüência de RFX operações durante a rolagem).Se nenhum tiver alterado, atualização retorna 0.Se alguns membros de dados de campo foram alterados, atualização prepara e executa uma SQL Inserir instrução que contém valores para todos os campos atualizados no registro.

  5. Para AddNew, atualização conclui restaurando os valores armazenados anteriormente do registro que era atual antes de AddNew chamar.Para Editar, os valores novos e editados permanecem no local.

A tabela a seguir mostra a seqüência de operações RFX quando você adiciona um novo registro ou editar um registro existente.

Seqüência de operações RFX durante AddNew e editar

A operação

Operação de DoFieldExchange

Operação de banco de dados/SQL

1.Call AddNew or Edit.

 

 

 

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

 

 

3.Para AddNew, marcar os membros de dados de campo como "limpa" e nulo.

 

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

 

 

5.Chamar atualização.

 

 

 

6.Verificar campos alterados.

 

 

7.Criar SQL Inserir instrução para AddNew ou atualização instrução para Editar.

 

 

 

8.Envie a SQL.

 

9.Para AddNew, restaurar o buffer de editar seu conteúdo de backup.Para Editar, excluir do backup.

 

ca5a16kd.collapse_all(pt-br,VS.110).gifRFX: Excluir registros existentes

Quando você excluir um registro, RFX define todos os campos Nulo como um lembrete de que o registro é excluído e você deve mover logoff.Você não precisa de outras informações de seqüência RFX.

Consulte também

Tarefas

Adicionando um Consumidor ODBC do MFC

Referência

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

Classe CFieldExchange

CRecordset::DoFieldExchange

Conceitos

Registro campo Exchange (RFX)