다음을 통해 공유


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