conjunto de registros: Como AddNew, edição e excluir trabalho (ODBC)

Este tópico se aplica a classes MFC ODBC.

Este tópico explica como a AddNew, edição, and Excluir funções de membro de classe CRecordset trabalho. Os tópicos abordados incluem:

  • Como funciona o adicionar registros

  • Visibilidade dos registros adicionados

  • Como funciona a edição de registros

  • Como funciona a exclusão de registros

Observação:

Este tópico se aplica aos objetos derivados CRecordset em qual linha em massa a busca não foi implementada. Se você estiver usando buscar a linha em massa, consulte conjunto de registros: Buscando os registros em massa (ODBC).

sistema autônomo um suplemento, você talvez queira ler Intercâmbio de campo do registro: Como o Works RFX, que descreve a função correspondente do RFX em operações de atualização.

Adicionar um registro

Adicionar um novo registro a um conjunto de registros envolve chamar AddNew função de membro , definindo os valores dos membros de dados de campo do novo registro e chamar o Atualizaçãofunção de membro para gravar o registro na fonte de dados.

sistema autônomo uma pré-condição para chamar AddNew, o conjunto de registros deve não ter sido aberto sistema autônomo somente leitura. The CanUpdate e CanAppend funções de membro permitem determinar essas condições.

Quando você telefonar AddNew:

  • O registro no buffer de edição é armazenado, portanto, seu Sumário pode ser restaurado se a operação foi cancelada.

  • Os membros de dados de campo são sinalizados portanto, é possível detectar as alterações neles mais tarde.Os dados do campo membros também são marcados limpar (inalterado) e conjunto como um nulo.

Depois que você telefonar AddNew, buffer de edição representa um registro novo, vazio, pronto para ser preenchido com valores. Para fazer isso, defina manualmente os valores atribuindo a eles.Em vez de especificar um valor de dados real para um campo, você poderá telefonar SetFieldNull Para especificar o valor nulo.

Para confirmar as alterações, você telefonar Atualização.Quando você telefonar Atualização para o novo registro:

  • Se o driver de ODBC oferecer suporte a :: SQLSetPos Função de API do ODBC, o MFC usa a função para adicionar o registro na fonte de dados.Com :: SQLSetPos, MFC pode adicionar um registro mais eficiente porque não tem que criar e processar uma demonstrativo SQL.

  • If :: SQLSetPos não pode ser usado, a MFC faz o seguinte:

    1. Se nenhuma alteração for detectada, Atualização não faz nada e retornará 0.

    2. Se houver alterações, Atualização constrói um SQL INSERIR demonstrativo.As colunas representadas por todos os membros de dados do campo sujo estão listadas na INSERIR demonstrativo.Para forçar uma coluna seja incluída, chame o SetFieldDirty função de membro:

      SetFieldDirty( &m_dataMember, TRUE );
      
    3. Atualização confirma o novo registro — o INSERIR demonstrativo é executada e o registro está comprometido com a tabela na fonte de dados (e o conjunto de registros, se não um instantâneo), a menos que seja uma transação em andamento.

    4. O registro armazenado é restaurado para o buffer de edição.O registro que era corrente antes do AddNew é a telefonar corrente novamente independentemente se a INSERIR demonstrativo foi executada com êxito.

    Dica:

    Para controle total de um novo registro, execute a seguinte abordagem: conjunto os valores dos campos que terão valores e conjunto todos os campos que permanecerão nulo ao chamar explicitamente SetFieldNull com um ponteiro para o campo e o parâmetro TRUE (padrão).Se você deseja garantir que um campo não é gravado para a fonte de dados, telefonar SetFieldDirty com um ponteiro para o campo e o parâmetro FALSE e não modifique o valor do campo.Para determinar se um campo é permitido ser nulo, telefonar IsFieldNullable.

    Dica:

    Para detectar quando os membros do conjunto de registros dados altera o valor, o MFC usa um PSEUDO_NULL valor apropriado para cada tipo de dados que você pode armazenar em um conjunto de registros.Se você deve conjunto explicitamente um campo para o PSEUDO_NULL valor e o campo já acontece a ser marcado como nulo, deve também telefonar SetFieldNull, passe o endereço do campo no primeiro parâmetro e FALSE no segundo parâmetro.

Visibilidade dos registros adicionados

Quando um registro adicional é visível para seu conjunto de registros?Registros adicionados às vezes aparecem e às vezes não são visíveis, dependendo das duas coisas:

  • Qual o driver é capaz de.

  • O que a estrutura pode tirar proveito de.

Se o driver de ODBC oferecer suporte a :: SQLSetPos Função da API do ODBC, o MFC usa a função para adicionar registros.Com :: SQLSetPos, registros adicionados são visíveis para qualquer conjunto de registros do MFC atualizável.Sem suporte para a função, adicionados registros não são visíveis e você deve telefonar Repetir a consulta para vê-las.Usando :: SQLSetPos também é mais eficiente.

Editar um registro existente

Edição de um registro existente em um conjunto de registros envolve a rolagem para o registro, chamando Editar função de membro , definindo os valores dos membros de dados de campo do novo registro e chamar o Atualizaçãofunção de membro para gravar o registro alterado para a fonte de dados.

sistema autônomo uma pré-condição para chamar edição, o conjunto de registros deve ser atualizável e em um registro.The CanUpdate e IsDeleted funções de membro permitem determinar essas condições. O registro corrente também deve ainda não foram excluídos e deve haver registros no conjunto de registros (ambas IsBOF e IsEOF retorne 0).

Quando você chama Editar, o registro no buffer de edição (o registro corrente) é armazenado.Valores do registro armazenados posteriormente são usados para detectar se todos os campos foram alterados.

Depois de chamar Editar, buffer de edição ainda representa o registro corrente mas agora está pronto para aceitar alterações em membros de campo de dados.Para alterar o registro, você conjunto manualmente os valores dos membros de dados de qualquer campo que deseja edição.Em vez de especificar um valor de dados real para um campo, você poderá telefonar SetFieldNull Para especificar o valor nulo. Para confirmar as alterações, telefonar Atualização.

Dica:

Para sair do AddNew ou edição modo, telefonar Mover com o parâmetro AFX_MOVE_REFRESH.

sistema autônomo uma pré-condição para chamar Atualização, o conjunto de registros não pode ser vazio e o registro corrente deve não foram excluído.IsBOF, IsEOF, e IsDeleted Tudo deve retornar 0.

Quando você chama Atualização para o registro editado:

  • Se o driver de ODBC oferecer suporte a :: SQLSetPos Função de API do ODBC, o MFC usa a função para atualização o registro na fonte de dados.Com :: SQLSetPos, o driver compara seu buffer de edição com o registro correspondente no servidor, atualizando o registro no servidor se os dois forem diferentes.Com :: SQLSetPos, MFC pode atualizar um registro mais eficiente porque não tem que criar e processar uma demonstrativo SQL.

    - ou -

  • If :: SQLSetPos não pode ser usado, a MFC faz o seguinte:

    1. Não se tiver havido nenhuma alteração, Atualização não faz nada e retornará 0.

    2. Se houver alterações, Atualização constrói um SQL ATUALIZAÇÃO demonstrativo.As colunas listadas no ATUALIZAÇÃO demonstrativo baseiam-se os membros de dados do campo que foram alterados.

    3. Atualização confirma as alterações — executa a ATUALIZAÇÃO demonstrativo — e o registro é alterado na fonte de dados, mas não confirmada se uma transação está em andamento (consulte Transação: Executando uma transação em um conjunto de registros (ODBC) para obter informações sobre como a transação afeta a atualização).ODBC mantém uma cópia do registro, também é alterado.

    4. Ao contrário do processo de AddNew, o edição processo não restaura o registro armazenado.O registro editado permanece no lugar sistema autônomo o registro corrente.

    Cuidado:

    Quando você se prepara para atualização um conjunto de registros chamando Atualização, têm cuidado que seu conjunto de registros inclui todas as colunas que compõem a chave primária da tabela (ou todas as colunas de qualquer índice exclusivo na tabela ou colunas suficientes) para identificar exclusivamente a linha.Em alguns casos, a estrutura pode usar somente as colunas selecionadas no seu conjunto de registros para identificar qual registre na sua tabela atualização.Sem todas as colunas necessárias, vários registros podem ser atualizados na tabela.Nesse caso, a estrutura emite exceções quando você telefonar Atualização.

    Dica:

    Se você chamar AddNew ou Editar após ter telefonar ed qualquer função anteriormente, mas antes de você telefonar Atualização, buffer de edição é atualizado com o registro armazenado, substituindo o registro novo ou editado em andamento.Esse comportamento oferece uma maneira para anular um AddNew ou edição e começar um novo: Se você determinar que o registro em andamento está com defeito, simplesmente telefonar edição or AddNew novamente.

Excluir um registro

Excluir um registro de um conjunto de registros envolve a rolagem para o registro e a chamada Excluirfunção de membro .Ao contrário de AddNew e edição, Excluir não exige uma telefonar correspondente para Atualização.

sistema autônomo uma pré-condição para chamar Excluir, o conjunto de registros deve ser atualizável e deve estar em um registro.The CanUpdate, IsBOF, IsEOF, e IsDeleted funções de membro permitem determinar essas condições.

Quando você telefonar Excluir:

  • Se o driver de ODBC oferecer suporte a :: SQLSetPos Função de API do ODBC, o MFC usa a função para excluir o registro na fonte de dados.Usando :: SQLSetPos é geralmente mais eficiente do que usando o SQL.

    - ou -

  • If :: SQLSetPos não pode ser usado, a MFC faz o seguinte:

    1. O registro corrente na edição buffer não é feito sistema autônomo em AddNew e Editar.

    2. Excluir constrói um SQL EXCLUIR demonstrativo que remove o registro.

      O registro corrente no buffer de edição não é armazenado sistema autônomo em AddNew e Editar.

    3. Excluir confirma a exclusão — executa a EXCLUIR demonstrativo.O registro é marcado excluído na fonte de dados e, se o registro é um instantâneo, no ODBC.

    4. Valores do registro excluído ainda são os membros de dados de campo do conjunto de registros, mas os membros de dados do campo serão marcados nulo e IsDeleted função de membro retorna um valor diferente de zero.

    Observação:

    Depois de excluir um registro, você deve rolar para outro registro para reabastecer o buffer de edição com dados do novo registro.É um erro telefonar Excluir novamente ou chamar edição.

Para obter informações sobre as instruções SQL usados em operações de atualização, consulte SQL.

Consulte também

Conceitos

conjunto de registros (ODBC)

conjunto de registros: Mais informações sobre atualizações (ODBC)

Registro de campo Exchange (RFX)