Compartir a través de


CRecordset::Edit

Permite cambios en el registro actual.

virtual void Edit( );

Comentarios

Después de llamar a Editar, puede cambiar los miembros de datos de campo directamente y sus valores. Finaliza la operación cuando se llama a la función miembro de Actualizar para guardar los cambios en el origen de datos.

Nota

Si está implementada la obtención de filas masiva, no puede llamar a Editar.Esto da lugar a un error de aserción.Aunque la clase CRecordset no proporcionan un mecanismo para actualizar filas masivas de datos, puede escribir las propias funciones mediante la función API SQLSetPosde ODBC.Para obtener más información sobre la obtención masiva de filas, vea el artículo conjunto de registros: Obtener registros de forma masiva (ODBC).

Editar guarda los valores de los miembros de datos del conjunto de registros. Si llama a Editar, realice los cambios, la llamada Editar de nuevo, los valores del registro se restaura cuáles fueron antes de la primera llamada de Editar .

En algunos casos, quizás desee actualizar una columna en Null (que no contiene datos). Para ello, llame a SetFieldNull con un parámetro de TRUE para marcar el campo Null; esto también hace que la columna se actualice. Si desea que un campo que se escribirá el origen de datos aunque su valor no ha cambiado, llame a SetFieldDirty con un parámetro de TRUE. Esto funciona incluso si el campo tiene el valor Null.

Si el origen de datos admite transacciones, puede crear la parte de la llamada de Editar de una transacción. Observe que debe llamar CDatabase::BeginTrans antes de llamar a Editar y después de que han iniciado el conjunto de registros. Observe también que llamar a CDatabase::CommitTrans no es un sustituto para llamar a Actualizar para completar la operación de Editar . Para obtener más información sobre transacciones, vea la clase CDatabase.

Dependiendo del modo de bloqueo actual, el registro que está actualizado se puede bloquear por Editar hasta que se llame a Actualizar o desplazarse a otro registro, o puede bloquear solo durante la llamada de Editar . Puede cambiar el modo de bloqueo con SetLockingMode.

El valor anterior del registro actual se restaura si se desplace a un nuevo registro antes de llamar a Actualizar. Se produce CDBException si llama a Editar para un conjunto de registros que no pueda actualizar o si no hay ningún registro actual.

Para obtener más información, vea los artículos transacción (ODBC) y conjunto de registros: Bloquear registros (ODBC).

Excepciones

Este método puede producir excepciones de CDBException* escrito y de CMemoryException*.

Ejemplo

// 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

encabezado: afxdb.h

Vea también

Referencia

CRecordset Class

Gráfico de jerarquías

CRecordset::Update

CRecordset::AddNew

CRecordset::Delete

CRecordset::SetFieldDirty

CRecordset::SetFieldNull

CRecordset::CanUpdate

CRecordset::CanTransact

CRecordset::SetLockingMode