Condividi tramite


CRecordset::Edit

 

Pubblicato: aprile 2016

Consente modifiche al record corrente.

Sintassi

virtual void Edit( );

Note

Dopo avere chiamato Modifica, è possibile modificare i membri dati di campo direttamente reimpostando i valori. L'operazione viene completata quando successivamente chiama la funzione membro Aggiorna per salvare le modifiche nell'origine dati.

Nota

Se si è implementato il recupero di massa di righe, non è possibile chiamare Modifica.Questa opzione determinerà una asserzione non riuscita.Sebbene la classe CRecordset non fornire un meccanismo per l'aggiornamento di massa di righe di dati, è possibile scrivere funzioni personalizzate utilizzando la funzione API ODBC SQLSetPos.Per ulteriori informazioni sul recupero di massa di righe, vedere l'articolo recordset: Recupero di massa di record (ODBC).

Modifica salva i valori dei membri dati del recordset. Se si chiama Modifica, apportare le modifiche, quindi la chiamata Modifica inoltre, i valori del record viene ripristinata in cui erano prima della prima chiamata Modifica.

In alcuni casi, può essere necessario aggiornare una colonna facendo per annullare (non contiene dati). A tale scopo, chiamare SetFieldNull con un parametro TRUE per contrassegnare null di campo, anche questo modo la colonna viene aggiornata. Se si desidera un campo da scrivere nell'origine dati anche se il valore non è stato modificato, chiamare SetFieldDirty con un parametro TRUE. Ciò vale anche se il campo è stata null di valore.

Se l'origine dati supporta le transazioni, è possibile fare parte della chiamata Modifica di una transazione. Si noti che è necessario chiamare CDatabase::BeginTrans prima di chiamare Modifica e dopo che il recordset viene aperto. Si noti inoltre che chiamare CDatabase::CommitTrans non è un operativo per chiamare Aggiorna per completare l'operazione Modifica. Per ulteriori informazioni sulle transazioni, vedere la classe CDatabase.

A seconda della modalità di blocco corrente, il record che viene aggiornato è bloccato da Modifica finché non viene chiamato Aggiorna o lo scorrimento a un altro record, oppure è possibile bloccare solo durante la chiamata Modifica. È possibile modificare la modalità di blocco con SetLockingMode.

Il valore precedente del record corrente viene ripristinato se si scorre un nuovo record prima di chiamare Aggiorna. CDBException viene generato se si chiama Modifica per un recordset che non può essere aggiornato o se non esiste alcun record corrente.

Per ulteriori informazioni, vedere gli articoli transazione (ODBC) e recordset: Blocco dei record (ODBC).

Eccezioni

Exception

Condition

Questo metodo può generare eccezioni di tipo CDBException* e CMemoryException*.

Esempio

// 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!"));
}

Requisiti

Header: afxdb.h

Vedere anche

CRecordset Class
Grafico delle gerarchie
CRecordset::Update
CRecordset::AddNew
CRecordset::Delete
CRecordset::SetFieldDirty
CRecordset::SetFieldNull
CRecordset::CanUpdate
CRecordset::CanTransact
CRecordset::SetLockingMode