다음을 통해 공유


CRecordset::Delete

현재 레코드를 삭제합니다.

virtual void Delete( );

설명

성공적으로 삭제 한 후, 레코드 집합의 필드 데이터 멤버는 Null 값으로 설정 하 고 하나를 명시적으로 호출 해야는 이동 삭제 된 레코드를 이동 하려면 함수입니다.삭제 된 레코드를 이동 하면 다시 수 없습니다.데이터 소스가 트랜잭션을 지원할 경우 수는 삭제 트랜잭션의 일부로 호출 합니다.자세한 내용은 트랜잭션 (ODBC).

[!참고]

대량 행 페치를 구현한 경우 호출할 수 없습니다 삭제.이 경우에 실패 한 어설션이 발생 합니다.하지만 클래스 CRecordset 메커니즘을 제공 하지 않습니다 대량 행의 데이터를 업데이트 하는 함수를 직접 ODBC API 함수를 사용 하 여 작성할 수 있습니다 SQLSetPos.대량 행 페칭 (fetching) 하는 방법에 대 한 자세한 내용은 레코드 집합: 레코드 페치 대량 (ODBC).

주의 정보주의

레코드 집합을 업데이트할 수 있어야 하며 유효한 레코드는 레코드 집합에서 현재 호출 하면 삭제. 그렇지 않으면 오류가 발생합니다.예를 들어, 레코드를 삭제 하지만 호출 하기 전에 새 레코드를 스크롤하지 않습니다 삭제 다시 삭제 throw 된 CDBException.

달리 AddNew편집, 호출을 삭제 를 호출 하 여 표시 되지 않는 업데이트.경우는 삭제 호출이 실패, 변경 되지 않은 멤버는 왼쪽 필드 데이터입니다.

예외

이 메서드가 형식의 예외를 throw 할 수 있습니다 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();

요구 사항

헤더: afxdb.h

참고 항목

참조

CRecordset 클래스

계층 구조 차트

CDatabase::BeginTrans

CDatabase::CommitTrans

CDatabase::Rollback

CDBException 클래스