CRecordset::Delete
Elimina el registro actual.
virtual void Delete( );
Comentarios
Después de una eliminación correcta, los miembros de datos de campo de conjunto de registros en un valor nulo, y debe llamar explícitamente a una de las funciones de Mover para desplazarse del registro eliminado. Una vez que se desplaza del registro eliminado, no es posible volver al. Si el origen de datos admite transacciones, puede crear la parte de la llamada de Eliminar de una transacción. Para obtener más información, vea el artículo transacción (ODBC).
Nota |
---|
Si está implementada la obtención de filas masiva, no puede llamar a Eliminar.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). |
Precaución |
---|
El conjunto de registros debe ser actualizable y debe haber una ejecución de registro válida en el conjunto de registros al llamar a Eliminar; si no, se produce un error.Por ejemplo, si elimina un registro pero no se mueve a un nuevo registro antes de llamar a Eliminar de nuevo, Eliminar produce CDBException. |
A diferencia de AddNew y de Editar, una llamada a Eliminar no va seguida de una llamada a Update. Si se produce un error en una llamada de Eliminar , deje los miembros de datos de campo sin cambios.
Excepciones
Este método puede producir excepciones de **CDBException***escrito.
Ejemplo
Este ejemplo muestra un conjunto de registros creado en el marco de una función. El ejemplo supone la existencia de m_dbCust, variable miembro de CDatabase tipo ya conectada al origen de datos.
// Create a derived CRecordset object
CCustomer rsCustSet(&m_dbCust);
rsCustSet.Open();
if(rsCustSet.IsEOF() || !rsCustSet.CanUpdate() ||
!rsCustSet.CanTransact())
{
return;
}
m_dbCust.BeginTrans();
// Perhaps scroll to a new record...
// Delete the current record
rsCustSet.Delete();
// Finished commands for this transaction
if(IDYES == AfxMessageBox(_T("Commit transaction?"), MB_YESNO))
m_dbCust.CommitTrans();
else // User changed mind
m_dbCust.Rollback();
Requisitos
encabezado: afxdb.h