CRecordset::Edit

Virtual void Edit( );
gettare ( CDBException, CMemoryException );

Osservazioni

Chiamare questa funzione membro per consentire modifiche al record corrente. Dopo aver chiamato Modifica, è possibile modificare i membri dati di campo reimpostando direttamente i loro valori. L'operazione è completata quando si chiama successivamente la funzione membro Update per salvare le modifiche nell'origine dati.

&Notanbsp;  Se è stato implementato il recupero di massa di righe, è possibile chiamare Edit. Questo si tradurrà in un'asserzione non riuscita. Sebbene la classe CRecordset non fornisce un meccanismo per l'aggiornamento di massa di righe di dati, è possibile scrivere funzioni personalizzate utilizzando la funzione API ODBC SQLSetPos. Per un esempio di come eseguire questa operazione, vedere l'esempio DBFETCH. Per ulteriori informazioni sul recupero di massa di righe, vedere l'articolo Recordset: recupero Records in Bulk (ODBC) nel manuale del programmatore di Visual C++.

Modifica salva i valori dei membri dati del recordset. Se chiamare Modifica, apportare le modifiche, quindi chiamare nuovamente Modifica , i valori del record vengono ripristinati a ciò che essi sono stati prima della prima chiamata Edit.

In alcuni casi, si desidera aggiornare una colonna rendendolo Null (non contenente dati). A tale scopo, chiamare SetFieldNull con un parametro di vero per selezionare il campo Null; Questo provoca anche la colonna essere aggiornato. Se si desidera un campo deve essere scritto all'origine dati, anche se il suo valore non è cambiata, chiamare SetFieldDirty con un parametro true. Questo funziona anche se il campo aveva il valore Null.

Se l'origine dati supporta le transazioni, è possibile effettuare la Modifica chiamare parte di una transazione. Si noti che si devono chiamare CDatabase::BeginTrans prima di chiamare Edit e dopo che è stato aperto il recordset. Si noti inoltre che la chiamata di CDatabase::CommitTrans non è un sostituto per la chiamata di aggiornamento per completare l'operazione di Modifica . Per ulteriori informazioni sulle transazioni, vedere la classe CDatabase.

In base alla modalità blocco corrente, record da aggiornare possono venire bloccati da modificare , fino a quando non si chiama Update o scorrimento su un altro record, o può essere bloccato soltanto durante la chiamata di Modifica . È possibile modificare la modalità di blocco con SetLockingMode.

Se si scorre su un nuovo record prima di chiamare Update, viene ripristinato il valore precedente del record corrente. Se si chiama modificare per un recordset che non può essere aggiornato o se non non c'è nessun record corrente, verrà generata una CDBException.

Per ulteriori informazioni, vedere gli articoli Transazione (ODBC) e Recordset: blocco dei record (ODBC) nel manuale del programmatore di Visual C++.

Esempio

 / / Esempio per CRecordset::Edit
/ / Per modificare u&n record,
/ / Prima di istituire il buffer di modifica
rsCustSet.Edit ();

/ / Modifica poi membri dati di campo per il record
rsCustSet.m_dwCustID = 2795;
rsCustSet.m_strCustomer = "Jones Mfg";

/ / Infine, completare l'operazione
Se (! rsCustSet.Update ())
 nbsp;  / / Handle il mancato aggiornamento

Pa&noramica CRecordset |nbsp; Membri della classe | Gerarchia Chart

Vedere anchenbsp;Possibile, CRecordset::Add&New, CRecordset::Delete, CRecordset::SetFieldDirty, CRecordset::SetFieldNull, CRecordset::CanUpdate, CRecordset::CanTransact, CRecordset::SetLockingMode

Index