Condividi tramite


CDaoRecordset::AddNew

Chiamare la funzione membro per aggiungere un nuovo record a un recordset di tipo tabella o di tipo dynaset.

virtual void AddNew( );

Note

I campi del record sono inizialmente null.Nella terminologia del database, NULL significa "non avere valore" e non è lo stesso NULL in C++.) Per completare l'operazione, è necessario chiamare la funzione membro Aggiorna.Aggiorna salvare le modifiche all'origine dati.

Nota di avvisoAttenzione

Se si modifica un record e quindi si passa a un altro record senza chiamare Aggiorna, le modifiche vengono perse senza avviso.

Se si aggiunge un record a un recordset di tipo dynaset chiamando AddNew, il record è visibile nel recordset e incluso nella tabella sottostante in cui diventa visibile a tutti i nuovi oggetti CDaoRecordset.

La posizione del nuovo record dipende dal tipo di recordset:

  • In un recordset di tipo dynaset, dove il nuovo record viene immesso non è garantito.Questo comportamento modificato con Microsoft Jet 3,0 per motivi di prestazioni e della concorrenza.Se l'obiettivo è di prendere nota del record appena aggiunto il record corrente, ottenere il segnalibro del record dell'ultima modifica e passare al segnalibro:

    rs.SetBookmark(rs.GetLastModifiedBookmark());
    
  • In un recordset di tipo tabella per il quale un indice è stato specificato, record viene restituito il loro posto appropriato nell'ordinamento.Se nessun indice è stato specificato, i nuovi record vengono restituiti alla fine del recordset.

Il record corrente prima di aver utilizzato AddNew rimane corrente.Se si desidera eseguire la corrente del nuovo record e segnalibri supportate del recordset, la chiamata SetBookmark il segnalibro ha identificato dall'impostazione delle proprietà dell'ultima modifica dell'oggetto recordset di DAO sottostante.Questa operazione è utile per la determinazione del valore per nei campi (a incremento automatico) in un record aggiunto.Per ulteriori informazioni, vedere GetLastModifiedBookmark.

Se le transazioni dei supporti del database, è possibile effettuare la parte di chiamata AddNew di una transazione.Per ulteriori informazioni sulle transazioni, vedere la classe CDaoWorkspace.Si noti che è necessario chiamare CDaoWorkspace::BeginTrans prima di chiamare AddNew.

Non è consentito chiamare AddNew per un recordset per cui la funzione membro Apri non è stata chiamata.CDaoException viene generato se si chiama AddNew per un recordset che non può essere aggiunto.È possibile determinare se il recordset è aggiornabile chiamando CanAppend.

Il framework contrassegna i membri dati di campo modificati per verificare verrà scritto nel record nell'origine dati dal meccanismo di trasferimento di campi di record DAO (DFX).Modificare il valore di un campo in genere imposta il campo modificato automaticamente, pertanto è necessario raramente chiamare SetFieldDirty manualmente, ma talvolta può essere necessario assicurarsi che le colonne in modo esplicito vengano inserite o aggiornate indipendentemente dal valore contenuto nel membro dati di campo.Il meccanismo di DFX utilizza anche l'utilizzo PSEUDO NULL.Per ulteriori informazioni, vedere CDaoFieldExchange::m_nOperation.

Se il meccanismo di doppio buffer non sta utilizzando, quindi modificare il valore del campo non imposta automaticamente il campo come modificato.In questo caso, sarà necessario in modo esplicito da impostare il campo modificato.Il flag contenuto in m_bCheckCacheForDirtyFields controlla il controllo automatico del campo.

[!NOTA]

Se i record doppio vengono memorizzati nel buffer (ovvero controllare automatico del campo è attivato, chiamare CancelUpdate ripristinerà le variabili membro per valori che avevano prima che AddNew o Modifica venga chiamato.

Per informazioni correlate, vedere gli argomenti "metodo di AddNew", "metodo di CancelUpdate", "proprietà dell'ultima modifica" e "proprietà di EditMode" nella Guida di DAO.

Requisiti

Header: afxdao.h

Vedere anche

Riferimenti

Classe di CDaoRecordset

Grafico della gerarchia

CDaoRecordset::CanUpdate

CDaoRecordset::CancelUpdate

CDaoRecordset::Delete

CDaoRecordset::Edit

CDaoRecordset::Update

CDaoRecordset::CanTransact