Compartilhar via


CRecordset::Edit

Permite alterações para o registro atual.

virtual void Edit( );

Comentários

Depois de você chamar Editar, você pode alterar os membros de dados do campo diretamente o seus valores. A operação é concluída posteriormente quando você chama a função de membro de Atualizar para salvar as alterações na fonte de dados.

Dica

Se você tiver implementado a linha em massa que pesquisa, você não pode chamar Editar.Isso resultará em uma declaração falha.Embora a classe CRecordset não fornece um mecanismo para atualizar linhas em massa de dados, você pode escrever suas próprias funções usando a função da API SQLSetPosODBC.Para obter mais informações sobre a linha em massa que pesquisa, consulte o artigo conjunto de registros: Para buscar registros em massa (ODBC).

Editar salva os valores dos membros de dados do conjunto de registros. Se você chamar Editar, faça alterações, então a chamada Editar novamente, os valores de registro foi restaurado ao que foram antes que a primeira chamada de Editar .

Em alguns casos, você pode querer atualizar uma coluna fazendo a nula (não contendo nenhum dados). Para fazer isso, chame SetFieldNull com um parâmetro de Verdadeiro para marcar o campo de zero; isso também faz com que a coluna seja atualizado. Se você desejar um campo a ser escrito na fonte de dados mesmo que o valor não é alterado, chame SetFieldDirty com um parâmetro de Verdadeiro. Isso funciona mesmo se o campo tinha o valor de zero.

Se a fonte de dados suportar transações, você pode fazer a parte da chamada de Editar de uma transação. Observe que você deve chamar CDatabase::BeginTrans antes de chamar Editar e depois que o conjunto de registros foi aberto. Observe também que chamar CDatabase::CommitTrans não é um substituto para chamar Atualizar para concluir a operação de Editar . Para obter mais informações sobre transações, consulte a classe CDatabase.

Dependendo do modo atual do bloqueio, o registro sendo atualizado pode ser bloqueada por Editar até que você chame Atualizar ou role para outro registro, ou pode ser bloqueado somente durante a chamada de Editar . Você pode alterar o modo de bloqueio com SetLockingMode.

O valor anterior do registro atual é restaurado se você colocar um novo registro antes de chamar Atualizar. CDBException é lançada se você chamar Editar para um conjunto de registros que não pode ser atualizado ou se não houver nenhum registro atual.

Para obter mais informações, consulte os artigos transação (ODBC) e conjunto de registros: Bloqueando registros (ODBC).

Exceções

Esse método pode lançar exceções do tipo CDBException* e CMemoryException*.

Exemplo

// To edit a record, first set up the edit buffer
rsCustSet.Edit();

// Then edit field data members for the record
rsCustSet.m_BillingID = 2795;
rsCustSet.m_ContactFirstName = _T("Jones Mfg");

// Finally, complete the operation 
if(!rsCustSet.Update())
{
    // Handle the failure to update
    AfxMessageBox(_T("Couldn't update record!"));
}

Requisitos

Cabeçalho: afxdb.h

Consulte também

Referência

Classe CRecordset

Gráfico da hierarquia

CRecordset::Update

CRecordset::AddNew

CRecordset::Delete

CRecordset::SetFieldDirty

CRecordset::SetFieldNull

CRecordset::CanUpdate

CRecordset::CanTransact

CRecordset::SetLockingMode