CRecordset::Delete
删除当前记录。
virtual void Delete( );
备注
在一个成功删除后,记录集的字段数据成员设置为Null值,因此,您必须显式调用一个 Move 功能以将已删除的记录。一旦移动已删除的记录,返回到它是不可能的。如果数据源支持事务,可以使 Delete 调用的一部分的事务。有关更多信息,请参见文章 事务(odbc)。
说明 |
---|
如果已实现批量取行,则不能调用 Delete。这导致生成失败的断言。虽然选件类 CRecordset 为更新数据批量行不提供框架,使用ODBC API函数 SQLSetPos,可以编写自己的函数。有关批量取行的更多信息,请参见文章 记录集:获取记录(odbc)。 |
警告 |
---|
记录集必须可更新的,且记录集中必须存在有效的当前记录,调用 Delete时;否则,错误。例如,因此,如果您删除记录,但不移动到新记录,在您再次之前调用 Delete,Delete 引发 CDBException。 |
不同 AddNew 和 编辑,对 Delete 的调用中通过对 更新的调用之后。如果 Delete 调用失败,字段数据成员保持不变。
异常
此方法会引发类型 **CDBException***的异常。
示例
此示例显示函数的帧创建的记录集。此示例假定 m_dbCust的存在,类型 CDatabase 的成员变量已连接到数据源。
// 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();
要求
Header: afxdb.h