다음을 통해 공유


CRecordset::Edit

현재 레코드를 변경할 수 있습니다.

virtual void Edit( );

설명

호출한 후 편집, 해당 값을 직접 설정 하 여 필드 데이터 멤버를 변경할 수 있습니다. 나중에 호출할 때 작업이 완료 된 업데이트 멤버 함수는 데이터 소스에 변경 내용을 저장 합니다.

참고

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

편집 레코드 집합의 데이터 멤버의 값을 저장 합니다. 호출 하는 경우 편집를 호출 하 고 변경 편집 다시, 레코드의 값은 첫 번째 전에 이전에 복원 됩니다 편집 호출.

열을 Null (데이터 포함)를 만들어 업데이트 하려는 수 있습니다. 이렇게 하려면 호출 SetFieldNull 매개 변수를 가진 TRUE 입니다; Null 필드를 표시 합니다 이 또한 열 업데이트 됩니다. 필드 값은 변경 되지 않은 경우에 데이터 소스에 기록 하려면 호출 하려는 경우 SetFieldDirty 매개 변수를 가진 TRUE. 이 값이 Null 필드가 있는 경우에 작동 합니다.

데이터 소스가 트랜잭션을 지원할 경우 수는 편집 트랜잭션의 일부로 호출 합니다. 참고 호출 해야 CDatabase::BeginTrans 호출 하기 전에 편집 및 레코드 집합을 연 후. 수도 호출 한다고 CDatabase::CommitTrans 전화를 대신할 수 없습니다 업데이트 완료 하는 편집 작업. 트랜잭션에 대 한 자세한 내용은 클래스를 참조 하십시오. CDatabase.

현재 잠금 모드에 따라 업데이트 되는 레코드에서 잠겨 편집 호출 하기 전에 업데이트 또는 다른 레코드로 스크롤 또는만 잠글 수 있습니다는 편집 호출 합니다. 잠금 모드를 변경할 수 있습니다 SetLockingMode.

새 호출 하기 전에 레코드를 스크롤 하는 경우 현재 레코드의 이전 값이 복원 됩니다 업데이트. A CDBException 를 호출 하면 throw 됩니다 편집 는 업데이트할 수 없는 레코드 집합 또는 현재 레코드가 없는 경우.

자세한 내용은 문서를 참조 하십시오. 트랜잭션 (ODBC)레코드 집합: 잠금 (ODBC).

예외

이 메서드가 형식의 예외를 throw 할 수 있습니다 CDBException *CMemoryException*.

예제

// 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!"));
}

요구 사항

헤더: afxdb.h

참고 항목

참조

CRecordset 클래스

계층 구조 차트

CRecordset::Update

CRecordset::AddNew

CRecordset::Delete

CRecordset::SetFieldDirty

CRecordset::SetFieldNull

CRecordset::CanUpdate

CRecordset::CanTransact

CRecordset::SetLockingMode