O conjunto de registros: Adicionar, atualizar e excluir registros (ODBC)

Este tópico se aplica às classes MFC ODBC.

ObservaçãoObservação

Agora você pode adicionar registros em massa com mais eficiência. Para obter mais informações, consulte Recordset: A adição de registros em massa (ODBC).

ObservaçãoObservação

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

Dynasets atualizáveis snapshots permitem que você adicione, edite (atualização) e excluir registros. Este tópico explica:

  • Como determinar se o seu conjunto de registros é atualizável.

  • Como adicionar um novo registro.

  • Como editar um registro existente.

  • Como excluir um registro de.

Para obter mais informações sobre como as atualizações são transferidas para fora e como as atualizações aparecem a outros usuários, consulte Recordset: Como os conjuntos de registros atualizam registros (ODBC). Normalmente, quando você adicionar, editar ou excluir um registro, o recordset altera a fonte de dados imediatamente. Em vez disso, você pode lote grupos de atualizações relacionados em transações. Se uma transação está em andamento, a atualização não se torne final até que você confirmar a transação. Isso lhe permite voltar ou reverter as alterações. Para obter informações sobre transações, consulte Transação (ODBC).

A tabela a seguir resume as opções disponíveis para os conjuntos de registros com características de atualização diferente.

Opções de leitura/atualização do conjunto de registros

Type

Read

Editar registro

Excluir registro

Adicionar novo (acrescentar)

Somente leitura

Y

N

N

N

Acrescentar apenas

Y

N

N

Y

Totalmente atualizável

Y

Y

Y

Y

Determinando se O Recordset é Updateable

Se a fonte de dados for atualizável e você abriu o conjunto de registros atualizável, um objeto recordset é atualizável. Seu atualizabilidade também depende da instrução SQL usar, os recursos do seu driver de ODBC, e se a biblioteca de cursores ODBC está na memória. É possível atualizar uma fonte de dados ou conjunto de registros somente leitura.

Para determinar se o seu conjunto de registros é atualizável

  • Chamar o objeto de conjunto de registros CanUpdate a função de membro.

    CanUpdateRetorna um valor diferente de zero se o conjunto de registros é atualizável.

Por padrão, os conjuntos de registros são totalmente atualizáveis (você pode executar AddNew, Editar, e Excluir operações). Mas você também pode usar o appendOnly opção para abrir os conjuntos de registros atualizáveis. Um conjunto de registros aberto dessa maneira permite apenas a adição de novos registros com AddNew. É possível editar ou excluir registros existentes. Você pode testar se um conjunto de registros é aberto somente para acrescentar chamando o CanAppend a função de membro. CanAppendRetorna um valor diferente de zero se o conjunto de registros é totalmente atualizável ou aberto somente para acrescentar.

O código a seguir mostra como você pode usar CanUpdate para um objeto recordset chamado rsStudentSet:

if( !rsStudentSet.Open( ) )
    return FALSE;
if( !rsStudentSet.CanUpdate( ) )
{
    AfxMessageBox( "Unable to update the Student recordset." );
    return;
}

Aviso

Quando você se prepara para atualizar um conjunto de registros chamando atualização, tome cuidado com o que o 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). Em alguns casos, a estrutura pode usar somente as colunas selecionadas no seu conjunto de registros para identificar qual registro na tabela a ser atualizada. Sem todas as colunas necessárias, vários registros podem ser atualizados na tabela, possivelmente, danificar a integridade referencial da tabela. Nesse caso, o framework lança exceções ao chamar atualização.

A adição de um registro a um conjunto de registros.

Você pode adicionar novos registros para um conjunto de registros, se sua CanAppend a função de membro retorna um valor diferente de zero.

Para adicionar um novo registro a um conjunto de registros.

  1. Verifique se que o conjunto de registros é appendable.

  2. Chamar o objeto de conjunto de registros AddNew a função de membro.

    AddNewprepara o conjunto de registros para atuar como um buffer de edição. Todos os membros de dados de campo são definidos como o valor especial Null e marcados como inalterado, portanto, somente alterado (sujos) os valores são gravados para a fonte de dados quando você chamar atualização.

  3. Defina os valores de membros de dados de campo do novo registro.

    Atribua valores a membros de dados do campo. Aqueles que não atribua não são gravadas para a fonte de dados.

  4. Chamar o objeto de conjunto de registros atualização a função de membro.

    Atualização concluir a adição, escrevendo o novo registro à fonte de dados. Para informações sobre acontece se você não conseguir chamar atualização, consulte Recordset: Como os conjuntos de registros atualizam registros (ODBC).

Para obter informações sobre como adicionar registros works e quando os registros adicionados são visíveis no seu conjunto de registros, consulte Recordset: Como AddNew, editar e excluir o trabalho (ODBC).

O exemplo a seguir mostra como adicionar um novo registro:

if( !rsStudent.Open( ) )
    return FALSE;
if( !rsStudent.CanAppend( ) )
    return FALSE;                      // no field values were set
rsStudent.AddNew( );
rsStudent.m_strName = strName;
rsStudent.m_strCity = strCity;
rsStudent.m_strStreet = strStreet;
if( !rsStudent.Update( ) )
{
    AfxMessageBox( "Record not added; no field values were set." );
    return FALSE;
}

Dica

Para cancelar uma AddNew ou Editar chamar, simplesmente fazer outra chamada para AddNew ou Editar ou ligue para Mover com o AFX_MOVE_REFRESH parâmetro. Membros de dados são redefinidos para seus valores anteriores e você ainda em Editar ou Add modo.

Edição de um registro em um conjunto de registros.

Você pode editar registros existentes, se seu conjunto de registros CanUpdate a função de membro retorna um valor diferente de zero.

Para editar um registro existente em um conjunto de registros.

  1. Verifique se que o conjunto de registros é atualizável.

  2. Role para o registro que você deseja atualizar.

  3. Chamar o objeto de conjunto de registros Editar a função de membro.

    Editar prepara o conjunto de registros para atuar como um buffer de edição. Todos os membros de dados de campo são marcados para que o conjunto de registros pode informar posteriormente se foram alteradas. Os novos valores para membros de dados de campo alterado são gravados para a fonte de dados ao chamar atualização.

  4. Defina os valores de membros de dados de campo do novo registro.

    Atribua valores a membros de dados do campo. Aqueles que você não atribuir valores permanecem inalteradas.

  5. Chamar o objeto de conjunto de registros atualização a função de membro.

    Atualização conclui a edição, escrevendo o registro alterado à fonte de dados. Para informações sobre acontece se você não conseguir chamar atualização, consulte Recordset: Como os conjuntos de registros atualizam registros (ODBC).

Depois de editar um registro, o registro editado permanece o registro atual.

A exemplo a seguir mostra um Editar operação. Ele supõe que o usuário foi movido para um registro que deseja editar.

rsStudent.Edit( );
rsStudent.m_strStreet = strNewStreet;
rsStudent.m_strCity = strNewCity;
rsStudent.m_strState = strNewState;
rsStudent.m_strPostalCode = strNewPostalCode;
if( !rsStudent.Update( ) )
{
    AfxMessageBox( "Record not updated; no field values were set." );
    return FALSE;
}

Dica

Para cancelar uma AddNew ou Editar chamar, simplesmente fazer outra chamada para AddNew ou Editar ou ligue para Mover com o AFX_MOVE_REFRESH parâmetro. Membros de dados são redefinidos para seus valores anteriores e você ainda em Editar ou Add modo.

Excluir um registro de um conjunto de registros.

Você pode excluir registros, se seu conjunto de registros CanUpdate a função de membro retorna um valor diferente de zero.

Para excluir um registro

  1. Verifique se que o conjunto de registros é atualizável.

  2. Role para o registro que você deseja atualizar.

  3. Chamar o objeto de conjunto de registros Excluir a função de membro.

    Excluir marca imediatamente o registro, como excluídos, tanto no conjunto de registros na fonte de dados.

    Ao contrário de AddNew e Editar, Excluir não tem correspondente atualização de chamada.

  4. Role para outro registro.

    ObservaçãoObservação

    Ao mover-se pelo conjunto de registros, registros excluídos não poderão ser ignorados. Para obter mais informações, consulte o IsDeleted a função de membro.

A exemplo a seguir mostra um Excluir operação. Ele pressupõe que o usuário foi movido para um registro que o usuário deseja excluir. Depois de Excluir é chamado, é importante mover para um novo registro.

rsStudent.Delete( );
rsStudent.MoveNext( );

Para obter mais informações sobre os efeitos do AddNew, Editar, e Excluir funções de membro, consulte Recordset: Como os conjuntos de registros atualizam registros (ODBC).

Consulte também

Conceitos

O conjunto de registros (ODBC)

O conjunto de registros: Bloqueio de registros (ODBC)