CRecordset::Edit
Publicado: abril de 2016
Permite que as alterações no registro atual.
Sintaxe
virtual void Edit( );
Comentários
Depois de você chamar Editar, você pode alterar os membros de dados de campo redefinindo diretamente seus valores. A operação é concluída quando você chamar subsequentemente o atualização a função de membro para salvar as alterações na fonte de dados.
Dica
Se você tiver implementado a busca de linhas em massa, você não pode chamar Editar. Isso resultará em uma declaração com 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 de API ODBC SQLSetPos. Para obter mais informações sobre a busca de linhas em massa, consulte o artigo conjunto de registros: recuperando registros em massa (ODBC).
Editar salva os valores dos membros de dados do conjunto de registros. Se você chamar Editar, fazer alterações, em seguida, chame Editar novamente, os valores do registro são restaurados para o que eram antes da primeira Editar chamar.
Em alguns casos, convém atualizar uma coluna, tornando Null (não contendo a nenhum dado). Para fazer isso, chame SetFieldNull com um parâmetro de TRUE para marcar o campo nulo; isso também faz com que a coluna a ser atualizada. Se você quiser um campo para ser gravado para a fonte de dados, embora seu valor não mudou, chame SetFieldDirty com um parâmetro de TRUE. Isso funciona mesmo se o campo tiver o valor Null.
Se a fonte de dados oferece suporte a transações, você pode fazer o Editar chamar parte de uma transação. Observe que você deve chamar CDatabase::BeginTrans antes de chamar Editar e depois o conjunto de registros tiver sido aberto. Observe também que a chamada CDatabase::CommitTrans não é um substituto para chamar atualização para concluir o Editar operação. Para obter mais informações sobre transações, consulte a classe CDatabase.
Dependendo do modo de bloqueio atual, o registro que está sendo atualizado pode estar bloqueado por Editar até que você chame atualização ou role para outro registro, ou ele pode estar bloqueado somente durante o Editar chamar. Você pode alterar o modo de bloqueio com SetLockingMode.
O valor anterior do registro atual é restaurado se você rolar para um novo registro antes de chamar atualização. A CDBException é lançada se você chamar Editar para um conjunto de registros que não pode ser atualizado ou se há um registro atual.
Para obter mais informações, consulte os artigos transação (ODBC) e conjunto de registros: bloqueando registros (ODBC).
Exceções
Exception
Condition
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
Classe de CRecordset
Gráfico da hierarquia
CRecordset::Update
CRecordset::AddNew
CRecordset::Delete
CRecordset::SetFieldDirty
CRecordset::SetFieldNull
CRecordset::CanUpdate
CRecordset::CanTransact
CRecordset::SetLockingMode