다음을 통해 공유


CDaoRecordset 클래스

데이터 소스에서 선택한 레코드 집합을 나타냅니다.

참고 항목

DAO(데이터 액세스 개체)는 Office 2013을 통해 지원됩니다. DAO 3.6은 최종 버전이며 사용되지 않습니다.

구문

class CDaoRecordset : public CObject

멤버

공용 생성자

속성 설명
CDaoRecordset::CDaoRecordset CDaoRecordset 개체를 생성합니다.

공용 메서드

이름 설명
CDaoRecordset::AddNew 새 레코드 추가를 준비합니다. 업데이트를 호출하여 추가를 완료합니다.
CDaoRecordset::CanAppend AddNew 멤버 함수를 통해 레코드 집합에 새 레코드를 추가할 수 있으면 0이 아닌 값을 반환합니다.
CDaoRecordset::CanBookmark 레코드 집합이 책갈피를 지원하는 경우 0이 아닌 값을 반환합니다.
CDaoRecordset::CancelUpdate 편집 또는 추가 작업으로 인해 보류 중인 업데이트를 취소합니다.
CDaoRecordset::CanRestart 레코드 집합의 쿼리를 다시 실행하기 위해 Requery를 호출할 수 있으면 0이 아닌 값을 반환합니다.
CDaoRecordset::CanScroll 레코드를 스크롤할 수 있으면 0이 아닌 값을 반환합니다.
CDaoRecordset::CanTransact 데이터 원본이 트랜잭션을 지원하는 경우 0이 아닌 값을 반환합니다.
CDaoRecordset::CanUpdate 레코드 집합을 업데이트할 수 있으면 0이 아닌 값을 반환합니다(레코드를 추가, 업데이트 또는 삭제할 수 있습니다).
CDaoRecordset::Close 레코드 집합을 닫습니다.
CDaoRecordset::D 레코드 집합에서 현재 레코드를 삭제합니다. 삭제 후 다른 레코드로 명시적으로 스크롤해야 합니다.
CDaoRecordset::DoFieldExchange 레코드 집합의 필드 데이터 멤버와 데이터 원본의 해당 레코드 간에 양방향으로 데이터를 교환하기 위해 호출됩니다. DAO DFX(레코드 필드 교환)를 구현합니다.
CDaoRecordset::Edit 현재 레코드의 변경 내용을 준비합니다. 편집을 완료하려면 호출 Update 합니다.
CDaoRecordset::FillCache ODBC 데이터 원본의 데이터를 포함하는 레코드 집합 개체에 대한 로컬 캐시의 전체 또는 일부를 채웁니다.
CDaoRecordset::Find 지정된 조건을 충족하고 해당 레코드를 현재 레코드로 만드는 다이나셋 형식 레코드 집합에서 특정 문자열의 첫 번째, 다음, 이전 또는 마지막 위치를 찾습니다.
CDaoRecordset::FindFirst 지정된 조건을 충족하고 해당 레코드를 현재 레코드로 만드는 다이나셋 형식 또는 스냅샷 형식 레코드 집합에서 첫 번째 레코드를 찾습니다.
CDaoRecordset::FindLast 지정된 조건을 충족하고 해당 레코드를 현재 레코드로 만드는 다이나셋 형식 또는 스냅샷 형식 레코드 집합에서 마지막 레코드를 찾습니다.
CDaoRecordset::FindNext 지정된 조건을 충족하고 해당 레코드를 현재 레코드로 만드는 다이나셋 형식 또는 스냅샷 형식 레코드 집합에서 다음 레코드를 찾습니다.
CDaoRecordset::FindPrev 지정된 조건을 충족하고 해당 레코드를 현재 레코드로 만드는 다이나셋 형식 또는 스냅샷 형식 레코드 집합에서 이전 레코드를 찾습니다.
CDaoRecordset::GetAbsolutePosition 레코드 집합 개체의 현재 레코드의 레코드 번호를 반환합니다.
CDaoRecordset::GetBookmark 레코드의 책갈피를 나타내는 값을 반환합니다.
CDaoRecordset::GetCacheSize ODBC 데이터 원본에서 로컬로 캐시할 데이터를 포함하는 다이나셋 형식 레코드 집합의 레코드 수를 지정하는 값을 반환합니다.
CDaoRecordset::GetCacheStart 캐시할 레코드 집합에서 첫 번째 레코드의 책갈피를 지정하는 값을 반환합니다.
CDaoRecordset::GetCurrentIndex CString 인덱싱된 테이블 형식에서 가장 최근에 사용된 인덱스의 이름을 포함하는 값을 반환합니다CDaoRecordset.
CDaoRecordset::GetDateCreated 개체의 기본 테이블이 만들어진 날짜 및 시간을 반환합니다 CDaoRecordset .
CDaoRecordset::GetDateLastUpdated 개체의 기본 CDaoRecordset 테이블 디자인에 대한 가장 최근 변경 내용의 날짜와 시간을 반환합니다.
CDaoRecordset::GetDefaultDBName 기본 데이터 원본의 이름을 반환합니다.
CDaoRecordset::GetDefaultSQL 실행할 기본 SQL 문자열을 가져오기 위해 호출됩니다.
CDaoRecordset::GetEditMode 현재 레코드의 편집 상태를 나타내는 값을 반환합니다.
CDaoRecordset::GetFieldCount 레코드 집합의 필드 수를 나타내는 값을 반환합니다.
CDaoRecordset::GetFieldInfo 레코드 집합의 필드에 대한 특정 종류의 정보를 반환합니다.
CDaoRecordset::GetFieldValue 레코드 집합에 있는 필드의 값을 반환합니다.
CDaoRecordset::GetIndexCount 레코드 집합을 기준으로 하는 테이블의 인덱스 수를 검색합니다.
CDaoRecordset::GetIndexInfo 인덱스에 대한 다양한 종류의 정보를 반환합니다.
CDaoRecordset::GetLastModifiedBookmark 가장 최근에 추가되거나 업데이트된 레코드를 확인하는 데 사용됩니다.
CDaoRecordset::GetLockingMode 편집하는 동안 적용되는 잠금 유형을 나타내는 값을 반환합니다.
CDaoRecordset::GetName CString 레코드 집합의 이름을 포함하는 값을 반환합니다.
CDaoRecordset::GetParamValue 기본 DAOParameter 개체에 저장된 지정된 매개 변수의 현재 값을 검색합니다.
CDaoRecordset::GetPercentPosition 현재 레코드의 위치를 총 레코드 수의 백분율로 반환합니다.
CDaoRecordset::GetRecordCount 레코드 집합 개체에서 액세스하는 레코드 수를 반환합니다.
CDaoRecordset::GetSQL 레코드 집합에 대한 레코드를 선택하는 데 사용되는 SQL 문자열을 가져옵니다.
CDaoRecordset::GetType 테이블 형식, 다이나셋 형식 또는 스냅샷 형식과 같은 레코드 집합의 형식을 확인하기 위해 호출됩니다.
CDaoRecordset::GetValidationRule CString 필드에 입력할 때 데이터의 유효성을 검사하는 값이 포함된 값을 반환합니다.
CDaoRecordset::GetValidationText 유효성 검사 규칙이 충족되지 않을 때 표시되는 텍스트를 검색합니다.
CDaoRecordset::IsBOF 레코드 집합이 첫 번째 레코드 앞에 배치된 경우 0이 아닌 값을 반환합니다. 현재 레코드가 없습니다.
CDaoRecordset::IsDeleted 레코드 집합이 삭제된 레코드에 배치된 경우 0이 아닌 값을 반환합니다.
CDaoRecordset::IsEOF 레코드 집합이 마지막 레코드 뒤의 위치에 있으면 0이 아닌 값을 반환합니다. 현재 레코드가 없습니다.
CDaoRecordset::IsFieldDirty 현재 레코드의 지정된 필드가 변경된 경우 0이 아닌 값을 반환합니다.
CDaoRecordset::IsFieldNull 현재 레코드의 지정된 필드가 Null(값 없음)이면 0이 아닌 값을 반환합니다.
CDaoRecordset::IsFieldNullable 현재 레코드의 지정된 필드를 Null로 설정할 수 있으면 0이 아닌 값을 반환합니다(값 없음).
CDaoRecordset::IsOpen Open이 이전에 호출된 경우 0이 아닌 값을 반환합니다.
CDaoRecordset::Move 레코드 집합을 현재 레코드에서 지정된 수의 레코드로 어느 방향으로든 배치합니다.
CDaoRecordset::MoveFirst 레코드 집합의 첫 번째 레코드에 현재 레코드를 배치합니다.
CDaoRecordset::MoveLast 레코드 집합의 마지막 레코드에 현재 레코드를 배치합니다.
CDaoRecordset::MoveNext 레코드 집합의 다음 레코드에 현재 레코드를 배치합니다.
CDaoRecordset::MovePrev 레코드 집합의 이전 레코드에 현재 레코드를 배치합니다.
CDaoRecordset::Open 테이블, 다이나셋 또는 스냅샷에서 새 레코드 집합을 만듭니다.
CDaoRecordset::Requery 레코드 집합의 쿼리를 다시 실행하여 선택한 레코드를 새로 고칩니다.
CDaoRecordset::Seek 현재 인덱스에 대해 지정된 조건을 충족하고 해당 레코드를 현재 레코드로 만드는 인덱싱된 테이블 형식 레코드 집합 개체에서 레코드를 찾습니다.
CDaoRecordset::SetAbsolutePosition 레코드 집합 개체의 현재 레코드의 레코드 번호를 설정합니다.
CDaoRecordset::SetBookmark 지정된 책갈피를 포함하는 레코드에 레코드 집합을 배치합니다.
CDaoRecordset::SetCacheSize ODBC 데이터 원본에서 로컬로 캐시할 데이터를 포함하는 dynaset 형식 레코드 집합의 레코드 수를 지정하는 값을 설정합니다.
CDaoRecordset::SetCacheStart 캐시할 레코드 집합에서 첫 번째 레코드의 책갈피를 지정하는 값을 설정합니다.
CDaoRecordset::SetCurrentIndex 테이블 형식 레코드 집합의 인덱스 설정에 대해 호출됩니다.
CDaoRecordset::SetFieldDirty 현재 레코드의 지정된 필드를 변경된 것으로 표시합니다.
CDaoRecordset::SetFieldNull 현재 레코드에서 지정된 필드의 값을 Null(값 없음)로 설정합니다.
CDaoRecordset::SetFieldValue 레코드 집합의 필드 값을 설정합니다.
CDaoRecordset::SetFieldValueNull 레코드 집합의 필드 값을 Null로 설정합니다. (값 없음).
CDaoRecordset::SetLockingMode 편집하는 동안 적용할 잠금 유형을 나타내는 값을 설정합니다.
CDaoRecordset::SetParamValue 기본 DAOParameter 개체에 저장된 지정된 매개 변수의 현재 값을 설정합니다.
CDaoRecordset::SetParamValueNull 지정된 매개 변수의 현재 값을 Null로 설정합니다(값 없음).
CDaoRecordset::SetPercentPosition 현재 레코드의 위치를 레코드 집합의 총 레코드 수 백분율에 해당하는 위치로 설정합니다.
CDaoRecordset::Update 데이터 원본에 AddNew 새 데이터 또는 편집된 데이터를 저장하여 또는 Edit 작업을 완료합니다.

공용 데이터 멤버

속성 설명
CDaoRecordset::m_bCheckCacheForDirtyFields 필드가 자동으로 변경된 것으로 표시되는지 여부를 나타내는 플래그를 포함합니다.
CDaoRecordset::m_nFields 레코드 집합 클래스의 필드 데이터 멤버 수와 데이터 원본의 레코드 집합에서 선택한 열 수를 포함합니다.
CDaoRecordset::m_nParams 레코드 집합 클래스의 매개 변수 데이터 멤버 수(레코드 집합의 쿼리와 함께 전달된 매개 변수 수)를 포함합니다.
CDaoRecordset::m_pDAORecordset 레코드 집합 개체의 기본이 되는 DAO 인터페이스에 대한 포인터입니다.
CDaoRecordset::m_pDatabase 이 결과 집합의 원본 데이터베이스입니다. CDaoDatabase 개체에 대한 포인터를 포함합니다.
CDaoRecordset::m_strFilter SQL WHERE 문을 생성하는 데 사용되는 문자열을 포함합니다.
CDaoRecordset::m_strSort SQL ORDER BY 문을 생성하는 데 사용되는 문자열을 포함합니다.

설명

"레코드 집합"이라고 CDaoRecordset 하는 개체는 다음 세 가지 형식으로 사용할 수 있습니다.

  • 테이블 형식 레코드 집합은 단일 데이터베이스 테이블에서 레코드를 검사, 추가, 변경 또는 삭제하는 데 사용할 수 있는 기본 테이블을 나타냅니다.

  • Dynaset 형식 레코드 집합은 업데이트 가능한 레코드를 가질 수 있는 쿼리의 결과입니다. 이러한 레코드 집합은 기본 데이터베이스 테이블 또는 테이블에서 레코드를 검사, 추가, 변경 또는 삭제하는 데 사용할 수 있는 레코드 집합입니다. Dynaset 형식 레코드 집합에는 데이터베이스에 있는 하나 이상의 테이블의 필드가 포함될 수 있습니다.

  • 스냅샷 형식 레코드 집합은 데이터를 찾거나 보고서를 생성하는 데 사용할 수 있는 레코드 집합의 정적 복사본입니다. 이러한 레코드 집합에는 데이터베이스에 있는 하나 이상의 테이블의 필드가 포함될 수 있지만 업데이트할 수는 없습니다.

각 레코드 집합 형식은 레코드 집합이 열릴 때 고정된 레코드 집합을 나타냅니다. 테이블 형식 레코드 집합 또는 다이나셋 형식 레코드 집합의 레코드로 스크롤하면 다른 사용자 또는 애플리케이션의 다른 레코드 집합에서 레코드 집합을 연 후 레코드가 변경된 내용이 반영됩니다. (스냅샷 형식 레코드 집합은 업데이트할 수 없습니다.) 직접 사용 CDaoRecordset 하거나 .에서 CDaoRecordset애플리케이션별 레코드 집합 클래스를 파생시킬 수 있습니다. 그러면 다음을 수행할 수 있습니다.

  • 레코드를 스크롤합니다.

  • 인덱스 설정 및 Seek를 사용하여 레코드를 빠르게 찾습니다(테이블 형식 레코드 집합에만 해당).

  • 문자열 비교를 기반으로 레코드를 찾습니다. "<", "<=", "=", ">=" 또는 ">"(dynaset-type 및 snapshot-type recordsets).

  • 레코드를 업데이트하고 잠금 모드를 지정합니다(스냅샷 형식 레코드 집합 제외).

  • 데이터 원본에서 사용할 수 있는 레코드 중에서 선택한 레코드를 제한하도록 레코드 집합을 필터링합니다.

  • 레코드 집합을 정렬합니다.

  • 레코드 집합을 매개 변수화하여 런타임까지 알려지지 않은 정보를 사용하여 선택 항목을 사용자 지정합니다.

클래스는 클래스 CDaoRecordset CRecordset의 인터페이스와 유사한 인터페이스를 제공합니다. 주요 차이점은 클래스 CDaoRecordset 가 OLE를 기반으로 DAO(데이터 액세스 개체)를 통해 데이터에 액세스한다는 것입니다. 클래스 CRecordset 는 ODBC(Open Database Connectivity) 및 해당 DBMS에 대한 ODBC 드라이버를 통해 DBMS에 액세스합니다.

참고 항목

DAO 데이터베이스 클래스는 ODBC(Open Database Connectivity)를 기반으로 하는 MFC 데이터베이스 클래스와 다릅니다. 모든 DAO 데이터베이스 클래스 이름에는 "CDao" 접두사가 있습니다. DAO 클래스를 사용하여 ODBC 데이터 원본에 계속 액세스할 수 있습니다. DAO 클래스는 일반적으로 Microsoft Jet 데이터베이스 엔진과 관련되어 있으므로 뛰어난 기능을 제공합니다.

직접 사용 CDaoRecordset 하거나 에서 CDaoRecordset클래스를 파생시킬 수 있습니다. 두 경우 모두 레코드 집합 클래스를 사용하려면 데이터베이스를 열고 레코드 집합 개체를 생성자에 포인터를 전달합니다 CDaoDatabase . 개체를 생성하고 MFC에서 CDaoRecordset 임시 CDaoDatabase 개체를 만들도록 할 수도 있습니다. 그런 다음, 개체가 테이블 형식 레코드 집합, 다이너셋 형식 레코드 집합 또는 스냅샷 형식 레코드 집합인지 여부를 지정하여 레코드 집합의 Open 멤버 함수를 호출합니다. 호출 Open 은 데이터베이스에서 데이터를 선택하고 첫 번째 레코드를 검색합니다.

개체의 멤버 함수 및 데이터 멤버를 사용하여 레코드를 스크롤하고 해당 함수에서 작동합니다. 사용 가능한 작업은 개체가 테이블 형식 레코드 집합인지, 다이너셋 형식 레코드 집합인지, 스냅샷 형식 레코드 집합인지, 업데이트 가능한지 읽기 전용인지 여부에 따라 달라집니다. 이는 데이터베이스 또는 ODBC(Open Database Connectivity) 데이터 원본의 기능에 따라 달라집니다. 호출 후 변경되거나 추가되었을 수 있는 레코드를 Open 새로 고치려면 개체의 Requery 멤버 함수를 호출합니다. 개체의 Close 멤버 함수를 호출하고 완료하면 개체를 삭제합니다.

CDaoRecordset 에서는 DAO DFX(레코드 필드 교환)를 사용하여 형식이 안전한 C++ 멤버 CDaoRecordset 를 통해 레코드 필드 읽기 및 업데이트를 지원합니다 CDaoRecordset. GetFieldValueSetFieldValue를 사용하는 DFX 메커니즘을 사용하지 않고 데이터베이스에서 열의 동적 바인딩을 구현할 수도 있습니다.

관련 정보는 DAO 도움말의 "Recordset 개체" 항목을 참조하세요.

상속 계층 구조

CObject

CDaoRecordset

요구 사항

머리글: afxdao.h

CDaoRecordset::AddNew

테이블 형식 또는 다이나셋 형식 레코드 집합에 새 레코드를 추가하려면 이 멤버 함수를 호출합니다.

virtual void AddNew();

설명

레코드의 필드는 처음에 Null입니다. (데이터베이스 용어에서 Null은 "값 없음"을 의미하며 C++의 NULL과 동일하지 않습니다. 작업을 완료하려면 Update 멤버 함수를 호출해야 합니다. Update 는 변경 내용을 데이터 원본에 저장합니다.

주의

레코드를 편집한 다음 호출 Update하지 않고 다른 레코드로 스크롤하면 변경 내용이 경고 없이 손실됩니다.

AddNew를 호출하여 다이나셋 형식 레코드 집합에 레코드를 추가하는 경우 레코드는 레코드 집합에 표시되고 새 CDaoRecordset 개체에 표시되는 기본 테이블에 포함됩니다.

새 레코드의 위치는 레코드 집합의 형식에 따라 달라집니다.

  • 새 레코드가 삽입되는 다이나셋 형식 레코드 집합에서는 보장되지 않습니다. 이 동작은 성능 및 동시성 이유로 Microsoft Jet 3.0에서 변경되었습니다. 새로 추가된 레코드를 현재 레코드로 만드는 것이 목표인 경우 마지막으로 수정된 레코드의 책갈피를 가져와서 해당 책갈피로 이동합니다.
rs.SetBookmark(rs.GetLastModifiedBookmark());
  • 인덱스가 지정된 테이블 형식 레코드 집합에서 레코드는 정렬 순서로 적절한 위치에 반환됩니다. 인덱스가 지정되지 않은 경우 레코드 집합의 끝에 새 레코드가 반환됩니다.

사용 AddNew 전의 현재 레코드는 현재 상태로 유지합니다. 새 레코드를 최신으로 만들고 레코드 집합에서 책갈피를 지원하려면 기본 DAO 레코드 집합 개체의 LastModified 속성 설정으로 식별되는 책갈피로 SetBookmark를 호출합니다. 이렇게 하면 추가된 레코드에서 카운터(자동 증가) 필드의 값을 결정하는 데 유용합니다. 자세한 내용은 GetLastModifiedBookmark를 참조하세요.

데이터베이스가 트랜잭션을 지원하는 경우 호출을 트랜잭션의 일부로 만들 AddNew 수 있습니다. 트랜잭션에 대한 자세한 내용은 CDaoWorkspace 클래스를 참조하세요. 를 호출 하기 전에 CDaoWorkspace::BeginTrans 를 호출 AddNew해야 합니다.

멤버 함수가 호출되지 않은 레코드 집합 Open 을 호출 AddNew 하는 것은 불법입니다. 추가할 수 없는 레코드 집합을 호출 AddNew 하면 A CDaoException 가 throw됩니다. CanAppend를 호출하여 레코드 집합을 업데이트할 수 있는지 여부를 확인할 수 있습니다.

프레임워크는 변경된 필드 데이터 멤버를 표시하여 DAO DFX(레코드 필드 교환) 메커니즘을 통해 데이터 원본의 레코드에 기록되도록 합니다. 필드 값을 변경하면 일반적으로 필드가 자동으로 더러워지므로 SetFieldDirty를 직접 호출할 필요가 거의 없지만 필드 데이터 멤버에 있는 값에 관계없이 열이 명시적으로 업데이트되거나 삽입되도록 할 수도 있습니다. DFX 메커니즘은 PSEUDO NULL사용도 사용합니다. 자세한 내용은 CDaoFieldExchange::m_nOperation 참조하세요.

이중 버퍼링 메커니즘을 사용하지 않는 경우 필드 값을 변경해도 필드가 자동으로 더티로 설정되지 않습니다. 이 경우 필드를 더티로 명시적으로 설정해야 합니다. m_bCheckCacheForDirtyFields 포함된 플래그는 이 자동 필드 검사를 제어합니다.

참고 항목

레코드가 이중 버퍼링된 경우(즉, 자동 필드 검사를 사용하도록 설정) 호출 CancelUpdate 하면 멤버 변수가 이전 AddNew 또는 Edit 호출된 값으로 복원됩니다.

관련 정보는 DAO 도움말의 "AddNew 메서드", "CancelUpdate 메서드", "LastModified 속성" 및 "EditMode 속성" 항목을 참조하세요.

CDaoRecordset::CanAppend

이 멤버 함수를 호출하여 이전에 연 레코드 집합에서 AddNew 멤버 함수를 호출하여 새 레코드를 추가할 수 있는지 여부를 확인합니다.

BOOL CanAppend() const;

Return Value

레코드 집합에서 새 레코드를 추가할 수 있는 경우 0이 아닌 경우 그렇지 않으면 0입니다. CanAppend 는 레코드 집합을 읽기 전용으로 연 경우 0을 반환합니다.

설명

관련 정보는 DAO 도움말의 "추가 메서드" 항목을 참조하세요.

CDaoRecordset::CanBookmark

이 멤버 함수를 호출하여 이전에 연 레코드 집합에서 책갈피를 사용하여 레코드를 개별적으로 표시할 수 있는지 여부를 확인합니다.

BOOL CanBookmark();

Return Value

레코드 집합이 책갈피를 지원하는 경우 0이 아니고, 그렇지 않으면 0입니다.

설명

Microsoft Jet 데이터베이스 엔진 테이블을 기반으로 하는 레코드 집합을 사용하는 경우 앞으로만 스크롤 레코드 집합으로 플래그가 지정된 스냅샷 형식 레코드 집합을 제외하고 책갈피를 사용할 수 있습니다. 다른 데이터베이스 제품(외부 ODBC 데이터 원본)은 책갈피를 지원하지 않을 수 있습니다.

관련 정보는 DAO 도움말의 "Bookmarkable 속성" 항목을 참조하세요.

CDaoRecordset::CancelUpdate

멤버 함수는 CancelUpdate 편집 또는 추가 작업으로 인해 보류 중인 업데이트를 취소합니다.

virtual void CancelUpdate();

설명

예를 들어 애플리케이션이 또는 AddNew 멤버 함수를 Edit 호출하고 호출 UpdateCancelUpdate 하지 않은 경우 변경한 후 Edit 또는 AddNew 호출된 변경 내용을 취소합니다.

참고 항목

레코드가 이중 버퍼링된 경우(즉, 자동 필드 검사를 사용하도록 설정) 호출 CancelUpdate 하면 멤버 변수가 이전 AddNew 또는 Edit 호출된 값으로 복원됩니다.

보류 중인 CancelUpdate 작업이 없거나 Edit AddNew 작업이 없는 경우 MFC에서 예외를 throw합니다. GetEditMode 멤버 함수를 호출하여 취소할 수 있는 보류 중인 작업이 있는지 확인합니다.

관련 정보는 DAO 도움말의 "CancelUpdate 메서드" 항목을 참조하세요.

CDaoRecordset::CanRestart

이 멤버 함수를 호출하여 레코드 집합에서 멤버 함수를 호출 Requery 하여 쿼리를 다시 시작할 수 있는지(레코드를 새로 고칠 수 있는지) 확인합니다.

BOOL CanRestart();

Return Value

레코드 집합의 쿼리를 다시 실행하기 위해 호출할 수 있으면 Requery 0이 아니고, 그렇지 않으면 0입니다.

설명

테이블 형식 레코드 집합은 지원하지 Requery않습니다.

지원되지 않는 경우 Requery Close then Open을 호출하여 데이터를 새로 고칩니다. 매개 변수 값이 변경된 후 레코드 집합 개체의 기본 매개 변수 쿼리를 업데이트하도록 호출 Requery 할 수 있습니다.

관련 정보는 DAO 도움말의 "Restartable 속성" 항목을 참조하세요.

CDaoRecordset::CanScroll

이 멤버 함수를 호출하여 레코드 집합에서 스크롤을 허용하는지 여부를 확인합니다.

BOOL CanScroll() const;

Return Value

레코드를 스크롤할 수 있으면 0이 아니고, 그렇지 않으면 0입니다.

설명

Open withdbForwardOnly를 호출하는 경우 레코드 집합은 앞으로만 스크롤할 수 있습니다.

관련 정보는 DAO 도움말에서 "DAO를 사용하여 현재 레코드 포인터 위치 지정" 항목을 참조하세요.

CDaoRecordset::CanTransact

이 멤버 함수를 호출하여 레코드 집합에서 트랜잭션을 허용하는지 여부를 확인합니다.

BOOL CanTransact();

Return Value

기본 데이터 원본이 트랜잭션을 지원하는 경우 0이 아니고, 그렇지 않으면 0입니다.

설명

관련 정보는 DAO 도움말의 "Transactions 속성" 항목을 참조하세요.

CDaoRecordset::CanUpdate

이 멤버 함수를 호출하여 레코드 집합을 업데이트할 수 있는지 여부를 확인합니다.

BOOL CanUpdate() const;

Return Value

레코드 집합을 업데이트(레코드 추가, 업데이트 및 삭제)할 수 있으면 0이 아니고, 그렇지 않으면 0입니다.

설명

기본 데이터 원본이 읽기 전용이거나 레코드 집합에 대해 Open을 호출할 때 nOptions대해 지정한 dbReadOnly 경우 레코드 집합은 읽기 전용일 수 있습니다.

관련 정보는 DAO 도움말의 "AddNew 메서드", "Edit 메서드", "Delete 메서드", "Update 메서드" 및 "업데이트 가능한 속성" 항목을 참조하세요.

CDaoRecordset::CDaoRecordset

CDaoRecordset 개체를 생성합니다.

CDaoRecordset(CDaoDatabase* pDatabase = NULL);

매개 변수

pDatabase
CDaoDatabase 개체 또는 값 NULL에 대한 포인터를 포함합니다. NULL이 아니고 CDaoDatabase 개체의 Open 멤버 함수가 데이터 원본에 연결하기 위해 호출되지 않은 경우 레코드 집합은 자체 Open 호출 중에 해당 함수를 열려고 시도합니다. NULL을 전달하면 레코드 집합 클래스CDaoRecordsetCDaoDatabase 파생한 경우 지정한 데이터 원본 정보를 사용하여 개체가 생성되고 연결됩니다.

설명

직접 사용 CDaoRecordset 하거나 애플리케이션별 클래스 CDaoRecordset를 파생시킬 수 있습니다. ClassWizard를 사용하여 레코드 집합 클래스를 파생시킬 수 있습니다.

참고 항목

클래스를 파생하는 CDaoRecordset 경우 파생 클래스는 자체 생성자를 제공해야 합니다. 파생 클래스의 생성자에서 생성자를 CDaoRecordset::CDaoRecordset호출하여 적절한 매개 변수를 전달합니다.

NULL을 레코드 집합 생성자에 전달하여 개체가 CDaoDatabase 자동으로 생성되고 연결되도록 합니다. 레코드 집합을 생성하기 전에 개체를 생성하고 연결할 CDaoDatabase 필요가 없는 유용한 바로 가기입니다. 개체가 CDaoDatabase 열려 있지 않으면 기본 작업 영역을 사용하는 CDaoWorkspace 개체도 만들어집니다. 자세한 내용은 CDaoDatabase::CDaoDatabase를 참조하세요.

CDaoRecordset::Close

개체를 닫으면 CDaoRecordset 연결된 데이터베이스의 열린 레코드 집합 컬렉션에서 개체가 제거됩니다.

virtual void Close();

설명

Close 개체를 CDaoRecordset 삭제하지 않으므로 동일한 데이터 원본 또는 다른 데이터 원본을 호출 Open 하여 개체를 다시 사용할 수 있습니다.

보류 중인 모든 AddNew 또는 Edit 문이 취소되고 보류 중인 모든 트랜잭션이 롤백됩니다. 보류 중인 추가 또는 편집을 유지하려면 각 레코드 집합을 호출하기 전에 Update를 호출 Close 합니다.

를 호출한 후 다시 호출 Open Close할 수 있습니다. 이렇게 하면 레코드 집합 개체를 다시 사용할 수 있습니다. 더 나은 대안은 가능한 경우 Requery를 호출하는 것입니다.

관련 정보는 DAO 도움말의 "Close 메서드" 항목을 참조하세요.

CDaoRecordset::D

열려 있는 dynaset 형식 또는 테이블 형식 레코드 집합 개체에서 현재 레코드를 삭제하려면 이 멤버 함수를 호출합니다.

virtual void Delete();

설명

성공적으로 삭제된 후 레코드 집합의 필드 데이터 멤버는 Null 값으로 설정되며 삭제된 레코드에서 벗어나려면 레코드 집합 탐색 멤버 함수 (이동, 검색, SetBookmark 등) 중 하나를 명시적으로 호출해야 합니다. 레코드 집합에서 레코드를 삭제하는 경우 호출 Delete하기 전에 레코드 집합에 현재 레코드가 있어야 합니다. 그렇지 않으면 MFC에서 예외를 throw합니다.

Delete 는 현재 레코드를 제거하고 액세스할 수 없게 만듭니다. 삭제된 레코드를 편집하거나 사용할 수는 없지만 현재 상태로 유지합니다. 그러나 다른 레코드로 이동한 후에는 삭제된 레코드를 다시 최신 상태로 만들 수 없습니다.

주의

레코드 집합을 업데이트할 수 있어야 하며 호출 Delete할 때 레코드 집합에 유효한 레코드가 있어야 합니다. 예를 들어 레코드를 삭제하지만 다시 Delete 호출 Delete 하기 전에 새 레코드로 스크롤하지 않으면 CDaoExceptionthrow합니다.

트랜잭션을 사용하고 CDaoWorkspace::Rollback 멤버 함수를 호출하는 경우 레코드를 삭제 취소할 수 있습니다. 기본 테이블이 연계 삭제 관계의 기본 테이블인 경우 현재 레코드를 삭제하면 외세의 테이블에 있는 하나 이상의 레코드도 삭제할 수 있습니다. 자세한 내용은 DAO 도움말의 "cascade delete" 정의를 참조하세요.

Edit달리 AddNew 호출 뒤에는 호출 DeleteUpdate수행되지 않습니다.

관련 정보는 DAO 도움말의 "AddNew 메서드", "Edit 메서드", "Delete 메서드", "Update 메서드" 및 "업데이트 가능한 속성" 항목을 참조하세요.

CDaoRecordset::DoFieldExchange

프레임워크는 이 멤버 함수를 호출하여 레코드 집합 개체의 필드 데이터 멤버와 데이터 원본에 있는 현재 레코드의 해당 열 간에 데이터를 자동으로 교환합니다.

virtual void DoFieldExchange(CDaoFieldExchange* pFX);

매개 변수

pFX
개체에 대한 포인터를 CDaoFieldExchange 포함합니다. 프레임워크는 필드 교환 작업에 대한 컨텍스트를 지정하도록 이 개체를 이미 설정했습니다.

설명

또한 매개 변수 데이터 멤버(있는 경우)를 레코드 집합 선택에 대한 SQL 문 문자열의 매개 변수 자리 표시자에 바인딩합니다. DAO DFX(레코드 필드 교환)라고 하는 필드 데이터 교환은 레코드 집합 개체의 필드 데이터 멤버에서 데이터 원본의 레코드 필드, 데이터 원본의 레코드에서 레코드 집합 개체까지 양방향으로 작동합니다. 열을 동적으로 바인딩하는 경우 구현 DoFieldExchange할 필요가 없습니다.

파생 레코드 집합 클래스에 대해 일반적으로 구현 DoFieldExchange 하기 위해 수행해야 하는 유일한 작업은 ClassWizard를 사용하여 클래스를 만들고 필드 데이터 멤버의 이름과 데이터 형식을 지정하는 것입니다. ClassWizard가 작성하는 코드에 코드를 추가하여 매개 변수 데이터 멤버를 지정할 수도 있습니다. 모든 필드를 동적으로 바인딩해야 하는 경우 매개 변수 데이터 멤버를 지정하지 않는 한 이 함수는 비활성 상태입니다.

ClassWizard를 사용하여 파생 레코드 집합 클래스를 선언하면 마법사는 다음 예제와 유사한 재정의 DoFieldExchange 를 작성합니다.

void CCustSet::DoFieldExchange(CDaoFieldExchange *pFX)
{
   pFX->SetFieldType(CDaoFieldExchange::param);
   DFX_Text(pFX, _T("Param"), m_strParam);
   pFX->SetFieldType(CDaoFieldExchange::outputColumn);
   DFX_Short(pFX, _T("EmployeeID"), m_EmployeeID);
   DFX_Text(pFX, _T("LastName"), m_LastName);
   DFX_Short(pFX, _T("Age"), m_Age);
   DFX_DateTime(pFX, _T("hire_date"), m_hire_date);
   DFX_DateTime(pFX, _T("termination_date"), m_termination_date);

   CDaoRecordset::DoFieldExchange(pFX);
}

CDaoRecordset::Edit

현재 레코드를 변경할 수 있도록 하려면 이 멤버 함수를 호출합니다.

virtual void Edit();

설명

멤버 함수를 Edit 호출하면 현재 레코드의 필드에 대한 변경 내용이 복사 버퍼에 복사됩니다. 레코드를 원하는 변경한 후 변경 내용을 저장하기 위해 호출 Update 합니다. Edit 는 레코드 집합의 데이터 멤버 값을 저장합니다. 호출 Edit하고 변경한 다음 다시 호출 Edit 하면 레코드의 값이 첫 번째 Edit 호출 이전 값으로 복원됩니다.

주의

레코드를 편집한 다음 먼저 호출 Update하지 않고 다른 레코드로 이동하는 작업을 수행하면 변경 내용이 경고 없이 손실됩니다. 또한 레코드 집합 또는 부모 데이터베이스를 닫으면 편집된 레코드가 경고 없이 삭제됩니다.

경우에 따라 열이 Null(데이터 없음)으로 만들어 열을 업데이트할 수 있습니다. 이렇게 하려면 TRUE 매개 변수를 사용하여 Null SetFieldNull 필드를 표시합니다. 이렇게 하면 열도 업데이트됩니다. 값이 변경되지 않았더라도 필드를 데이터 원본에 쓰려면 TRUE 매개 변수를 사용하여 호출 SetFieldDirty 합니다. 필드에 Null 값이 있는 경우에도 작동합니다.

프레임워크는 변경된 필드 데이터 멤버를 표시하여 DAO DFX(레코드 필드 교환) 메커니즘을 통해 데이터 원본의 레코드에 기록되도록 합니다. 필드 값을 변경하면 일반적으로 필드가 자동으로 더러워지므로 SetFieldDirty를 직접 호출할 필요가 거의 없지만 필드 데이터 멤버에 있는 값에 관계없이 열이 명시적으로 업데이트되거나 삽입되도록 할 수도 있습니다. DFX 메커니즘은 PSEUDO NULL사용도 사용합니다. 자세한 내용은 CDaoFieldExchange::m_nOperation 참조하세요.

이중 버퍼링 메커니즘을 사용하지 않는 경우 필드 값을 변경해도 필드가 자동으로 더티로 설정되지 않습니다. 이 경우 필드를 더티로 명시적으로 설정해야 합니다. m_bCheckCacheForDirtyFields 포함된 플래그는 이 자동 필드 검사를 제어합니다.

레코드 집합 개체가 다중 사용자 환경에서 비관적으로 잠겨 있는 경우 레코드는 업데이트가 완료될 때까지 사용되는 시간 Edit 에서 잠긴 상태로 유지됩니다. 레코드 집합이 낙관적으로 잠겨 있으면 레코드가 잠겨 있고 데이터베이스에서 업데이트되기 직전에 미리 편집된 레코드와 비교됩니다. 호출 EditUpdate 한 이후 레코드가 변경되면 작업이 실패하고 MFC가 예외를 throw합니다. 로 잠금 모드 SetLockingMode를 변경할 수 있습니다.

참고 항목

낙관적 잠금은 ODBC 및 설치 가능한 ISAM과 같은 외부 데이터베이스 형식에서 항상 사용됩니다.

현재 레코드는 호출 Edit한 후 현재 상태로 유지합니다. 호출 Edit하려면 현재 레코드가 있어야 합니다. 현재 레코드가 없거나 레코드 집합이 열려 있는 테이블 형식 또는 다이나셋 형식 레코드 집합 개체를 참조하지 않는 경우 예외가 발생합니다. 호출 Edit 하면 CDaoException 다음 조건에서 throw됩니다.

  • 현재 레코드가 없습니다.

  • 데이터베이스 또는 레코드 집합은 읽기 전용입니다.

  • 레코드의 어떤 필드도 호환되지 않습니다.

  • 데이터베이스 또는 레코드 집합이 다른 사용자가 단독으로 사용하기 위해 열렸습니다.

  • 다른 사용자가 레코드가 포함된 페이지를 잠갔습니다.

데이터 원본이 트랜잭션을 지원하는 경우 트랜잭션의 호출 부분을 만들 Edit 수 있습니다. 호출 Edit 하기 전과 레코드 집합이 열린 후에 호출 CDaoWorkspace::BeginTrans 해야 합니다. 호출 CDaoWorkspace::CommitTrans 은 작업을 완료하기 위해 호출 Update 하는 대신 사용할 수 Edit 없습니다. 트랜잭션에 대한 자세한 내용은 클래스를 참조하세요 CDaoWorkspace.

관련 정보는 DAO 도움말의 "AddNew 메서드", "Edit 메서드", "Delete 메서드", "Update 메서드" 및 "업데이트 가능한 속성" 항목을 참조하세요.

CDaoRecordset::FillCache

이 멤버 함수를 호출하여 레코드 집합에서 지정된 수의 레코드를 캐시합니다.

void FillCache(
    long* pSize = NULL,
    COleVariant* pBookmark = NULL);

매개 변수

pSize
캐시에 채울 행 수를 지정합니다. 이 매개 변수를 생략하면 기본 DAO 개체의 CacheSize 속성 설정에 따라 값이 결정됩니다.

pBookmark
책갈피를 지정하는 COleVariant입니다. 이 책갈피로 표시된 레코드부터 캐시가 채워집니다. 이 매개 변수를 생략하면 기본 DAO 개체의 CacheStart 속성으로 표시된 레코드부터 캐시가 채워집니다.

설명

캐싱은 원격 서버에서 데이터를 검색하거나 가져오는 애플리케이션의 성능을 향상시킵니다. 캐시는 애플리케이션이 실행되는 동안 데이터가 다시 요청될 것이라는 가정 하에 서버에서 가장 최근에 가져온 데이터를 보유하는 로컬 메모리의 공간입니다. 데이터가 요청되면 Microsoft Jet 데이터베이스 엔진은 더 많은 시간이 걸리는 서버에서 데이터를 가져오는 대신 먼저 캐시에서 데이터를 확인합니다. 데이터가 캐시에 저장되지 않으므로 ODBC가 아닌 데이터 원본에서 데이터 캐싱을 사용하는 것은 효과가 없습니다.

캐시가 페치될 때 레코드로 채워질 때까지 기다리는 대신 멤버 함수를 호출 FillCache 하여 언제든지 캐시를 명시적으로 채울 수 있습니다. 이 방법은 한 번에 하나씩이 아닌 여러 레코드를 한 번에 가져오기 때문에 FillCache 캐시를 채우는 더 빠른 방법입니다. 예를 들어 각 레코드 화면이 표시되는 동안 애플리케이션 호출 FillCache 을 통해 다음 레코드 화면 캡처를 가져올 수 있습니다.

레코드 집합 개체로 액세스하는 모든 ODBC 데이터베이스에는 로컬 캐시가 있을 수 있습니다. 캐시를 만들려면 원격 데이터 원본에서 레코드 집합 개체를 연 다음 레코드 집합의 SetCacheSize 멤버 함수를 SetCacheStart 호출합니다. lSize 및 lBookmark가 지정된 SetCacheSize SetCacheStart범위의 일부 또는 전부 외부에 있는 범위를 만드는 경우 이 범위를 벗어난 레코드 집합의 부분은 무시되고 캐시에 로드되지 않습니다. 요청이 원격 데이터 원본에 남아 있는 것보다 많은 레코드를 요청하는 경우 FillCache 나머지 레코드만 페치되고 예외가 throw되지 않습니다.

캐시에서 가져온 레코드는 다른 사용자가 원본 데이터에 동시에 변경한 내용을 반영하지 않습니다.

FillCache 는 아직 캐시되지 않은 레코드만 가져옵니다. 캐시된 모든 데이터를 강제로 업데이트하려면 lSize 매개 변수가 0인 멤버 함수를 호출 SetCacheSize 하고 원래 요청한 캐시 크기와 동일한 lSize 매개 변수를 사용하여 다시 호출 SetCacheSize 한 다음 호출FillCache합니다.

관련 정보는 DAO 도움말의 "FillCache 메서드" 항목을 참조하세요.

CDaoRecordset::Find

이 멤버 함수를 호출하여 비교 연산자를 사용하여 다이나셋 또는 스냅샷 형식 레코드 집합에서 특정 문자열을 찾습니다.

virtual BOOL Find(
    long lFindType,
    LPCTSTR lpszFilter);

매개 변수

lFindType
원하는 찾기 작업의 유형을 나타내는 값입니다. 가능한 값은 다음과 같습니다.

  • AFX_DAO_NEXT 일치하는 문자열의 다음 위치를 찾습니다.

  • AFX_DAO_PREV 일치하는 문자열의 이전 위치를 찾습니다.

  • AFX_DAO_FIRST 일치하는 문자열의 첫 번째 위치를 찾습니다.

  • AFX_DAO_LAST 일치하는 문자열의 마지막 위치를 찾습니다.

lpszFilter
레코드를 찾는 데 사용되는 문자열 식(예: WHERE라는 단어가 없는 SQL 문의 WHERE 절)입니다. 예시:

rs.Find(AFX_DAO_FIRST, _T("EmployeeID = 7"));
rs.Find(AFX_DAO_NEXT, _T("LastName = 'Jones'"));

Return Value

일치하는 레코드가 발견되면 0이 아니고, 그렇지 않으면 0입니다.

설명

문자열의 첫 번째, 다음, 이전 또는 마지막 인스턴스를 찾을 수 있습니다. Find 는 가상 함수이므로 재정의하고 고유한 구현을 추가할 수 있습니다. , FindLastFindPrev FindNext멤버 함수는 FindFirst멤버 함수를 Find 호출하므로 모든 찾기 작업의 동작을 제어하는 데 사용할 Find 수 있습니다.

테이블 형식 레코드 집합에서 레코드를 찾으려면 Seek 멤버 함수를 호출합니다.

레코드 집합이 작을수록 더 효과적 Find 입니다. 일반적으로, 특히 ODBC 데이터에서는 원하는 레코드만 검색하는 새 쿼리를 만드는 것이 좋습니다.

관련 정보는 DAO 도움말의 "FindFirst, FindLast, FindNext, FindPrevious 메서드" 항목을 참조하세요.

CDaoRecordset::FindFirst

이 멤버 함수를 호출하여 지정된 조건과 일치하는 첫 번째 레코드를 찾습니다.

BOOL FindFirst(LPCTSTR lpszFilter);

매개 변수

lpszFilter
레코드를 찾는 데 사용되는 문자열 식(예: WHERE라는 단어가 없는 SQL 문의 WHERE 절)입니다.

Return Value

일치하는 레코드가 발견되면 0이 아니고, 그렇지 않으면 0입니다.

설명

멤버 함수는 FindFirst 레코드 집합의 시작 부분에서 검색을 시작하고 레코드 집합의 끝까지 검색합니다.

특정 조건을 충족하는 레코드뿐만 아니라 검색에 모든 레코드를 포함하려면 이동 작업 중 하나를 사용하여 레코드에서 레코드로 이동합니다. 테이블 형식 레코드 집합에서 레코드를 찾으려면 멤버 함수를 호출합니다 Seek .

조건과 일치하는 레코드가 없으면 현재 레코드 포인터가 결정되지 않고 FindFirst 0을 반환합니다. 레코드 집합에 조건을 FindFirst 충족하는 레코드가 두 개 이상 포함된 경우 첫 번째 항목을 FindNext 찾고 다음 항목을 찾습니다.

주의

현재 레코드를 편집하는 경우 다른 레코드로 이동하기 전에 멤버 함수를 Update 호출하여 변경 내용을 저장해야 합니다. 업데이트하지 않고 다른 레코드로 이동하면 변경 내용이 경고 없이 손실됩니다.

멤버 함수는 Find 다음 표에 지정된 위치와 방향에서 검색합니다.

작업 찾기 시작 검색 방향
FindFirst 레코드 집합의 시작 레코드 집합의 끝
FindLast 레코드 집합의 끝 레코드 집합의 시작
FindNext 현재 레코드 레코드 집합의 끝
FindPrevious 현재 레코드 레코드 집합의 시작

참고 항목

호출 FindLast할 때 Microsoft Jet 데이터베이스 엔진은 검색을 시작하기 전에 레코드 집합을 완전히 채웁니다(아직 완료되지 않은 경우). 첫 번째 검색은 후속 검색보다 오래 걸릴 수 있습니다.

그러나 찾기 작업 중 하나를 사용하는 것은 호출 MoveFirst 또는 MoveNext조건 지정 없이 첫 번째 또는 다음 레코드를 현재 레코드로 만드는 것과는 다릅니다. 이동 작업을 사용하여 찾기 작업을 따를 수 있습니다.

찾기 작업을 사용할 때는 다음 사항에 유의하세요.

  • 0이 아닌 레코드를 반환하는 경우 Find 현재 레코드가 정의되지 않습니다. 이 경우 현재 레코드 포인터를 유효한 레코드에 다시 배치해야 합니다.

  • 앞으로만 스크롤되는 스냅샷 형식 레코드 집합에는 찾기 작업을 사용할 수 없습니다.

  • 미국 버전의 Microsoft Jet 데이터베이스 엔진을 사용하지 않더라도 날짜가 포함된 필드를 검색할 때는 미국 날짜 형식(월-일 연도)을 사용해야 합니다. 그렇지 않으면 일치하는 레코드를 찾을 수 없습니다.

  • ODBC 데이터베이스 및 큰 다이내셋으로 작업할 때 특히 큰 레코드 집합으로 작업할 때 찾기 작업을 사용하는 것이 느리다는 것을 발견할 수 있습니다. 사용자 지정된 ORDERBY 또는 WHERE 절, 매개 변수 쿼리 또는 CDaoQuerydef 특정 인덱싱된 레코드를 검색하는 개체와 함께 SQL 쿼리를 사용하여 성능을 향상시킬 수 있습니다.

관련 정보는 DAO 도움말의 "FindFirst, FindLast, FindNext, FindPrevious 메서드" 항목을 참조하세요.

CDaoRecordset::FindLast

이 멤버 함수를 호출하여 지정된 조건과 일치하는 마지막 레코드를 찾습니다.

BOOL FindLast(LPCTSTR lpszFilter);

매개 변수

lpszFilter
레코드를 찾는 데 사용되는 문자열 식(예: WHERE라는 단어가 없는 SQL 문의 WHERE 절)입니다.

Return Value

일치하는 레코드가 발견되면 0이 아니고, 그렇지 않으면 0입니다.

설명

멤버 함수는 FindLast 레코드 집합의 끝에서 검색을 시작하고 레코드 집합의 시작을 향해 뒤로 검색합니다.

특정 조건을 충족하는 레코드뿐만 아니라 검색에 모든 레코드를 포함하려면 이동 작업 중 하나를 사용하여 레코드에서 레코드로 이동합니다. 테이블 형식 레코드 집합에서 레코드를 찾으려면 멤버 함수를 호출합니다 Seek .

조건과 일치하는 레코드가 없으면 현재 레코드 포인터가 결정되지 않고 FindLast 0을 반환합니다. 레코드 집합에 조건을 FindFirst 충족하는 레코드가 두 개 이상 포함된 경우 첫 번째 항목을 찾고 첫 FindNext 번째 발생 후 다음 항목을 찾습니다.

주의

현재 레코드를 편집하는 경우 다른 레코드로 이동하기 전에 멤버 함수를 Update 호출하여 변경 내용을 저장해야 합니다. 업데이트하지 않고 다른 레코드로 이동하면 변경 내용이 경고 없이 손실됩니다.

그러나 찾기 작업 중 하나를 사용하는 것은 호출 MoveFirst 또는 MoveNext조건 지정 없이 첫 번째 또는 다음 레코드를 현재 레코드로 만드는 것과는 다릅니다. 이동 작업을 사용하여 찾기 작업을 따를 수 있습니다.

찾기 작업을 사용할 때는 다음 사항에 유의하세요.

  • 0이 아닌 레코드를 반환하는 경우 Find 현재 레코드가 정의되지 않습니다. 이 경우 현재 레코드 포인터를 유효한 레코드에 다시 배치해야 합니다.

  • 앞으로만 스크롤되는 스냅샷 형식 레코드 집합에는 찾기 작업을 사용할 수 없습니다.

  • 미국 버전의 Microsoft Jet 데이터베이스 엔진을 사용하지 않더라도 날짜가 포함된 필드를 검색할 때는 미국 날짜 형식(월-일 연도)을 사용해야 합니다. 그렇지 않으면 일치하는 레코드를 찾을 수 없습니다.

  • ODBC 데이터베이스 및 큰 다이내셋으로 작업할 때 특히 큰 레코드 집합으로 작업할 때 찾기 작업을 사용하는 것이 느리다는 것을 발견할 수 있습니다. 사용자 지정된 ORDERBY 또는 WHERE 절, 매개 변수 쿼리 또는 CDaoQuerydef 특정 인덱싱된 레코드를 검색하는 개체와 함께 SQL 쿼리를 사용하여 성능을 향상시킬 수 있습니다.

관련 정보는 DAO 도움말의 "FindFirst, FindLast, FindNext, FindPrevious 메서드" 항목을 참조하세요.

CDaoRecordset::FindNext

이 멤버 함수를 호출하여 지정된 조건과 일치하는 다음 레코드를 찾습니다.

BOOL FindNext(LPCTSTR lpszFilter);

매개 변수

lpszFilter
레코드를 찾는 데 사용되는 문자열 식(예: WHERE라는 단어가 없는 SQL 문의 WHERE 절)입니다.

Return Value

일치하는 레코드가 발견되면 0이 아니고, 그렇지 않으면 0입니다.

설명

멤버 함수는 FindNext 현재 레코드에서 검색을 시작하고 레코드 집합의 끝까지 검색합니다.

특정 조건을 충족하는 레코드뿐만 아니라 검색에 모든 레코드를 포함하려면 이동 작업 중 하나를 사용하여 레코드에서 레코드로 이동합니다. 테이블 형식 레코드 집합에서 레코드를 찾으려면 멤버 함수를 호출합니다 Seek .

조건과 일치하는 레코드가 없으면 현재 레코드 포인터가 결정되지 않고 FindNext 0을 반환합니다. 레코드 집합에 조건을 FindFirst 충족하는 레코드가 두 개 이상 포함된 경우 첫 번째 항목을 FindNext 찾고 다음 항목을 찾습니다.

주의

현재 레코드를 편집하는 경우 다른 레코드로 이동하기 전에 멤버 함수를 Update 호출하여 변경 내용을 저장해야 합니다. 업데이트하지 않고 다른 레코드로 이동하면 변경 내용이 경고 없이 손실됩니다.

그러나 찾기 작업 중 하나를 사용하는 것은 호출 MoveFirst 또는 MoveNext조건 지정 없이 첫 번째 또는 다음 레코드를 현재 레코드로 만드는 것과는 다릅니다. 이동 작업을 사용하여 찾기 작업을 따를 수 있습니다.

찾기 작업을 사용할 때는 다음 사항에 유의하세요.

  • 0이 아닌 레코드를 반환하는 경우 Find 현재 레코드가 정의되지 않습니다. 이 경우 현재 레코드 포인터를 유효한 레코드에 다시 배치해야 합니다.

  • 앞으로만 스크롤되는 스냅샷 형식 레코드 집합에는 찾기 작업을 사용할 수 없습니다.

  • 미국 버전의 Microsoft Jet 데이터베이스 엔진을 사용하지 않더라도 날짜가 포함된 필드를 검색할 때는 미국 날짜 형식(월-일 연도)을 사용해야 합니다. 그렇지 않으면 일치하는 레코드를 찾을 수 없습니다.

  • ODBC 데이터베이스 및 큰 다이내셋으로 작업할 때 특히 큰 레코드 집합으로 작업할 때 찾기 작업을 사용하는 것이 느리다는 것을 발견할 수 있습니다. 사용자 지정된 ORDERBY 또는 WHERE 절, 매개 변수 쿼리 또는 CDaoQuerydef 특정 인덱싱된 레코드를 검색하는 개체와 함께 SQL 쿼리를 사용하여 성능을 향상시킬 수 있습니다.

관련 정보는 DAO 도움말의 "FindFirst, FindLast, FindNext, FindPrevious 메서드" 항목을 참조하세요.

CDaoRecordset::FindPrev

이 멤버 함수를 호출하여 지정된 조건과 일치하는 이전 레코드를 찾습니다.

BOOL FindPrev(LPCTSTR lpszFilter);

매개 변수

lpszFilter
레코드를 찾는 데 사용되는 문자열 식(예: WHERE라는 단어가 없는 SQL 문의 WHERE 절)입니다.

Return Value

일치하는 레코드가 발견되면 0이 아니고, 그렇지 않으면 0입니다.

설명

멤버 함수는 FindPrev 현재 레코드에서 검색을 시작하고 레코드 집합의 시작을 향해 뒤로 검색합니다.

특정 조건을 충족하는 레코드뿐만 아니라 검색에 모든 레코드를 포함하려면 이동 작업 중 하나를 사용하여 레코드에서 레코드로 이동합니다. 테이블 형식 레코드 집합에서 레코드를 찾으려면 멤버 함수를 호출합니다 Seek .

조건과 일치하는 레코드가 없으면 현재 레코드 포인터가 결정되지 않고 FindPrev 0을 반환합니다. 레코드 집합에 조건을 FindFirst 충족하는 레코드가 두 개 이상 포함된 경우 첫 번째 항목을 FindNext 찾고 다음 항목을 찾습니다.

주의

현재 레코드를 편집하는 경우 다른 레코드로 이동하기 전에 멤버 함수를 Update 호출하여 변경 내용을 저장해야 합니다. 업데이트하지 않고 다른 레코드로 이동하면 변경 내용이 경고 없이 손실됩니다.

그러나 찾기 작업 중 하나를 사용하는 것은 호출 MoveFirst 또는 MoveNext조건 지정 없이 첫 번째 또는 다음 레코드를 현재 레코드로 만드는 것과는 다릅니다. 이동 작업을 사용하여 찾기 작업을 따를 수 있습니다.

찾기 작업을 사용할 때는 다음 사항에 유의하세요.

  • 0이 아닌 레코드를 반환하는 경우 Find 현재 레코드가 정의되지 않습니다. 이 경우 현재 레코드 포인터를 유효한 레코드에 다시 배치해야 합니다.

  • 앞으로만 스크롤되는 스냅샷 형식 레코드 집합에는 찾기 작업을 사용할 수 없습니다.

  • 미국 버전의 Microsoft Jet 데이터베이스 엔진을 사용하지 않더라도 날짜가 포함된 필드를 검색할 때는 미국 날짜 형식(월-일 연도)을 사용해야 합니다. 그렇지 않으면 일치하는 레코드를 찾을 수 없습니다.

  • ODBC 데이터베이스 및 큰 다이내셋으로 작업할 때 특히 큰 레코드 집합으로 작업할 때 찾기 작업을 사용하는 것이 느리다는 것을 발견할 수 있습니다. 사용자 지정된 ORDERBY 또는 WHERE 절, 매개 변수 쿼리 또는 CDaoQuerydef 특정 인덱싱된 레코드를 검색하는 개체와 함께 SQL 쿼리를 사용하여 성능을 향상시킬 수 있습니다.

관련 정보는 DAO 도움말의 "FindFirst, FindLast, FindNext, FindPrevious 메서드" 항목을 참조하세요.

CDaoRecordset::GetAbsolutePosition

레코드 집합 개체의 현재 레코드의 레코드 번호를 반환합니다.

long GetAbsolutePosition();

Return Value

0부터 레코드 집합의 레코드 수까지의 정수입니다. 레코드 집합에서 현재 레코드의 서수 위치에 해당합니다.

설명

기본 DAO 개체의 AbsolutePosition 속성 값은 0부터 시작합니다. 0의 설정은 레코드 집합의 첫 번째 레코드를 나타냅니다. GetRecordCount를 호출 하여 레코드 집합에서 채워진 레코드 수를 확인할 수 있습니다. 호출 GetRecordCount 은 개수를 확인하기 위해 모든 레코드에 액세스해야 하므로 다소 시간이 걸릴 수 있습니다.

레코드 집합에 레코드가 없는 경우와 같이 현재 레코드가 없으면 - 1이 반환됩니다. 현재 레코드가 삭제되면 AbsolutePosition 속성 값이 정의되지 않고 MFC가 참조되는 경우 예외를 throw합니다. dynaset 형식 레코드 집합의 경우 시퀀스의 끝에 새 레코드가 추가됩니다.

참고 항목

이 속성은 서로게이트 레코드 번호로 사용할 수 없습니다. 책갈피는 여전히 지정된 위치를 유지하고 반환하는 권장 방법이며 모든 유형의 레코드 집합 개체에 현재 레코드를 배치하는 유일한 방법입니다. 특히 지정된 레코드의 위치는 이전 레코드가 삭제될 때 변경됩니다. ORDERBY 절을 사용하여 SQL 문으로 만들지 않는 한 레코드 집합 내의 개별 레코드 순서가 보장되지 않으므로 레코드 집합이 다시 만들어지면 지정된 레코드의 절대 위치가 동일하다는 보장도 없습니다.

참고 항목

이 멤버 함수는 dynaset 형식 및 스냅샷 형식 레코드 집합에만 유효합니다.

관련 정보는 DAO 도움말의 "AbsolutePosition 속성" 항목을 참조하세요.

CDaoRecordset::GetBookmark

이 멤버 함수를 호출하여 특정 레코드의 책갈피 값을 가져옵니다.

COleVariant GetBookmark();

Return Value

현재 레코드의 책갈피를 나타내는 값을 반환합니다.

설명

레코드 집합 개체를 만들거나 열면 각 레코드에 지원되는 경우 고유한 책갈피가 이미 있습니다. 레코드 집합이 책갈피를 지원하는지 여부를 확인하려면 호출 CanBookmark 합니다.

책갈피 값을 개체에 할당하여 현재 레코드의 책갈피를 COleVariant 저장할 수 있습니다. 다른 레코드로 이동한 후 해당 레코드로 빠르게 돌아가려면 해당 COleVariant 개체의 값에 해당하는 매개 변수를 사용하여 호출 SetBookmark 합니다.

참고 항목

Requery를 호출하는 경우 DAO 책갈피가 변경됩니다.

관련 정보는 DAO 도움말의 "책갈피 속성" 항목을 참조하세요.

CDaoRecordset::GetCacheSize

이 멤버 함수를 호출하여 캐시된 레코드 수를 가져옵니다.

long GetCacheSize();

Return Value

ODBC 데이터 원본에서 로컬로 캐시할 데이터를 포함하는 다이나셋 형식 레코드 집합의 레코드 수를 지정하는 값입니다.

설명

데이터 캐싱은 dynaset 형식 레코드 집합 개체를 통해 원격 서버에서 데이터를 검색하는 애플리케이션의 성능을 향상시킵니다. 캐시는 애플리케이션이 실행되는 동안 데이터가 다시 요청될 경우 서버에서 가장 최근에 검색된 데이터를 보유하는 로컬 메모리의 공간입니다. 데이터가 요청되면 Microsoft Jet 데이터베이스 엔진은 서버에서 데이터를 검색하는 대신 먼저 요청된 데이터에 대한 캐시를 확인하므로 시간이 더 걸립니다. ODBC 데이터 원본에서 제공되지 않는 데이터는 캐시에 저장되지 않습니다.

연결된 테이블과 같은 모든 ODBC 데이터 원본에는 로컬 캐시가 있을 수 있습니다.

관련 정보는 DAO 도움말의 "CacheSize, CacheStart 속성" 항목을 참조하세요.

CDaoRecordset::GetCacheStart

이 멤버 함수를 호출하여 캐시할 레코드 집합에서 첫 번째 레코드의 책갈피 값을 가져옵니다.

COleVariant GetCacheStart();

Return Value

캐시할 레코드 집합에서 첫 번째 레코드의 책갈피를 지정하는 A COleVariant 입니다.

설명

Microsoft Jet 데이터베이스 엔진은 캐시 범위 내의 레코드를 캐시에서 요청하고 서버에서 캐시 범위를 벗어난 레코드를 요청합니다.

참고 항목

캐시에서 검색된 레코드는 다른 사용자가 원본 데이터에 동시에 변경한 내용을 반영하지 않습니다.

관련 정보는 DAO 도움말의 "CacheSize, CacheStart 속성" 항목을 참조하세요.

CDaoRecordset::GetCurrentIndex

이 멤버 함수를 호출하여 인덱싱된 테이블 형식 CDaoRecordset 개체에서 현재 사용 중인 인덱스 확인

CString GetCurrentIndex();

Return Value

CString 현재 테이블 형식 레코드 집합과 함께 사용 중인 인덱스의 이름을 포함하는 형식입니다. 인덱스가 설정되지 않은 경우 빈 문자열을 반환합니다.

설명

이 인덱스는 테이블 형식 레코드 집합에서 레코드를 정렬하기 위한 기초이며 Seek 멤버 함수에서 레코드를 찾는 데 사용됩니다.

개체에는 CDaoRecordset 둘 이상의 인덱스가 있을 수 있지만 한 번에 하나의 인덱스만 사용할 수 있습니다( CDaoTableDef 개체에 여러 인덱스가 정의되어 있을 수 있음).

관련 정보는 DAO 도움말의 "Index 개체" 항목 및 정의 "현재 인덱스"를 참조하세요.

CDaoRecordset::GetDateCreated

이 멤버 함수를 호출하여 기본 테이블을 만든 날짜와 시간을 검색합니다.

COleDateTime GetDateCreated();

Return Value

기본 테이블을 만든 날짜와 시간을 포함하는 COleDateTime 개체입니다.

설명

날짜 및 시간 설정은 기본 테이블을 만든 컴퓨터에서 파생됩니다.

관련 정보는 DAO 도움말의 "DateCreated, LastUpdated 속성" 항목을 참조하세요.

CDaoRecordset::GetDateLastUpdated

이 멤버 함수를 호출하여 스키마가 마지막으로 업데이트된 날짜와 시간을 검색합니다.

COleDateTime GetDateLastUpdated();

Return Value

기본 테이블 구조(스키마)가 마지막으로 업데이트된 날짜와 시간을 포함하는 COleDateTime 개체입니다.

설명

날짜 및 시간 설정은 기본 테이블 구조(스키마)가 마지막으로 업데이트된 컴퓨터에서 파생됩니다.

관련 정보는 DAO 도움말의 "DateCreated, LastUpdated 속성" 항목을 참조하세요.

CDaoRecordset::GetDefaultDBName

이 멤버 함수를 호출하여 이 레코드 집합의 데이터베이스 이름을 확인합니다.

virtual CString GetDefaultDBName();

Return Value

이 레코드 집합이 파생된 데이터베이스의 경로와 이름을 포함하는 A CString 입니다.

설명

CDaoDatabase대한 포인터 없이 레코드 집합을 만드는 경우 이 경로는 레코드 집합에서 기본 데이터베이스를 여는 데 사용됩니다. 기본적으로 이 함수는 빈 문자열을 반환합니다. ClassWizard가 새 레코드 집합을 CDaoRecordset파생하면 이 함수가 만들어집니다.

다음 예제에서는 문자열을 올바르게 해석하는 데 필요한 대로 문자열에 이중 백슬래시(\\)를 사용하는 방법을 보여 줍니다.

CString CCustSet::GetDefaultDBName()
{
   return _T("c:\\mydir\\datasrc.mdb");
}

CDaoRecordset::GetDefaultSQL

프레임워크는 이 멤버 함수를 호출하여 레코드 집합의 기반이 되는 기본 SQL 문을 가져옵니다.

virtual CString GetDefaultSQL();

Return Value

기본 SQL 문을 포함하는 A CString 입니다.

설명

테이블 이름 또는 SQL SELECT 문일 수 있습니다.

ClassWizard를 사용하여 레코드 집합 클래스를 선언하여 기본 SQL 문을 간접적으로 정의하고 ClassWizard가 이 작업을 수행합니다.

Null SQL 문자열을 Open전달하면 이 함수가 호출되어 레코드 집합의 테이블 이름 또는 SQL을 확인합니다.

CDaoRecordset::GetEditMode

다음 값 중 하나인 편집 상태를 확인하려면 이 멤버 함수를 호출합니다.

short GetEditMode();

Return Value

현재 레코드의 편집 상태를 나타내는 값을 반환합니다.

설명

설명
dbEditNone 편집 작업이 진행 중이 아닙니다.
dbEditInProgress Edit 가 호출되었습니다.
dbEditAdd AddNew 가 호출되었습니다.

관련 정보는 DAO 도움말의 "EditMode 속성" 항목을 참조하세요.

CDaoRecordset::GetFieldCount

이 멤버 함수를 호출하여 레코드 집합에 정의된 필드(열)의 수를 검색합니다.

short GetFieldCount();

Return Value

레코드 집합의 필드 수입니다.

설명

관련 정보는 DAO 도움말의 "Count 속성" 항목을 참조하세요.

CDaoRecordset::GetFieldInfo

이 멤버 함수를 호출하여 레코드 집합의 필드에 대한 정보를 가져옵니다.

void GetFieldInfo(
    int nIndex,
    CDaoFieldInfo& fieldinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetFieldInfo(
    LPCTSTR lpszName,
    CDaoFieldInfo& fieldinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

매개 변수

nIndex
인덱스별 조회를 위해 레코드 집합의 Fields 컬렉션에 미리 정의된 필드의 인덱스(0부터 시작)입니다.

fieldinfo
CDaoFieldInfo 구조체에 대한 참조입니다.

dwInfoOptions
검색할 레코드 집합에 대한 정보를 지정하는 옵션입니다. 사용 가능한 옵션은 함수가 반환되는 원인과 함께 여기에 나열됩니다. 최상의 성능을 위해 필요한 정보 수준만 검색합니다.

  • AFX_DAO_PRIMARY_INFO (기본값) 이름, 형식, 크기, 특성

  • AFX_DAO_SECONDARY_INFO 기본 정보, 더하기: 서수 위치, 필수, 허용 0 길이, 정렬 순서, 외할 이름, 원본 필드, 원본 테이블

  • AFX_DAO_ALL_INFO 기본 및 보조 정보 및 기본값, 유효성 검사 규칙, 유효성 검사 텍스트

lpszName
@FSHO2@필드의 이름입니다.

설명

함수의 한 버전을 사용하면 인덱스별로 필드를 조회할 수 있습니다. 다른 버전을 사용하면 이름으로 필드를 조회할 수 있습니다.

반환된 정보에 대한 설명은 CDaoFieldInfo 구조를 참조하세요. 이 구조체에는 dwInfoOptions 설명 에 나열된 정보 항목에 해당하는 멤버가 있습니다. 한 수준에서 정보를 요청하면 이전 수준에 대한 정보도 얻을 수 있습니다.

관련 정보는 DAO 도움말의 "특성 속성" 항목을 참조하세요.

CDaoRecordset::GetFieldValue

이 멤버 함수를 호출하여 레코드 집합의 데이터를 검색합니다.

virtual void GetFieldValue(
    LPCTSTR lpszName,
    COleVariant& varValue);

virtual void GetFieldValue(
    int nIndex,
    COleVariant& varValue);

virtual COleVariant GetFieldValue(LPCTSTR lpszName);
virtual COleVariant GetFieldValue(int nIndex);

매개 변수

lpszName
필드 이름을 포함하는 문자열에 대한 포인터입니다.

varValue
필드 값을 저장할 개체에 대한 참조 COleVariant 입니다.

nIndex
인덱스별 조회를 위해 레코드 집합의 Fields 컬렉션에 있는 필드의 인덱스(0부터 시작)입니다.

Return Value

두 버전의 GetFieldValue 값은 필드 값이 포함된 COleVariant 개체를 반환합니다.

설명

이름 또는 서수 위치별로 필드를 조회할 수 있습니다.

참고 항목

개체를 반환하는 버전을 호출하는 대신 개체 참조를 매개 변수로 사용하는 COleVariant 이 멤버 함수의 버전 중 하나를 호출하는 것이 더 효율적입니다 COleVariant . 이 함수의 후자의 버전은 이전 버전과의 호환성을 위해 유지됩니다.

DoFieldExchange 메커니즘을 사용하여 열을 정적으로 바인딩하는 대신 런타임에 필드를 동적으로 바인딩하려면 SetFieldValue를 사용합니다GetFieldValue.

GetFieldValue 및 메커니즘을 DoFieldExchange 결합하여 성능을 향상시킬 수 있습니다. 예를 들어 필요에 따라 필요한 값을 검색하고 인터페이스의 "추가 정보" 단추에 해당 호출을 할당하는 데 사용합니다 GetFieldValue .

관련 정보는 DAO 도움말의 "필드 개체" 및 "값 속성" 항목을 참조하세요.

CDaoRecordset::GetIndexCount

테이블 형식 레코드 집합에서 사용할 수 있는 인덱스 수를 확인하려면 이 멤버 함수를 호출합니다.

short GetIndexCount();

Return Value

테이블 형식 레코드 집합의 인덱스 수입니다.

설명

GetIndexCount 는 레코드 집합의 모든 인덱스를 반복하는 데 유용합니다. 이 목적을 위해 .와 함께 GetIndexInfo사용합니다GetIndexCount. dynaset 형식 또는 스냅샷 형식 레코드 집합에서 이 멤버 함수를 호출하면 MFC가 예외를 throw합니다.

관련 정보는 DAO 도움말의 "특성 속성" 항목을 참조하세요.

CDaoRecordset::GetIndexInfo

이 멤버 함수를 호출하여 레코드 집합의 기본 테이블에 정의된 인덱스에 대한 다양한 종류의 정보를 가져옵니다.

void GetIndexInfo(
    int nIndex,
    CDaoIndexInfo& indexinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetIndexInfo(
    LPCTSTR lpszName,
    CDaoIndexInfo& indexinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

매개 변수

nIndex
숫자 위치별로 조회할 테이블의 Indexes 컬렉션에 있는 인덱스(0부터 시작)입니다.

indexinfo
CDaoIndexInfo 구조체에 대한 참조입니다.

dwInfoOptions
검색할 인덱스 정보를 지정하는 옵션입니다. 사용 가능한 옵션은 함수가 반환되는 원인과 함께 여기에 나열됩니다. 최상의 성능을 위해 필요한 정보 수준만 검색합니다.

  • AFX_DAO_PRIMARY_INFO (기본값) 이름, 필드 정보, 필드

  • AFX_DAO_SECONDARY_INFO 기본 정보 및 추가: 기본, 고유, 클러스터형, IgnoreNull, 필수, 외국어

  • AFX_DAO_ALL_INFO 기본 및 보조 정보, 플러스: 고유 개수

lpszName
이름별로 조회할 인덱스 개체의 이름에 대한 포인터입니다.

설명

함수의 한 버전을 사용하면 컬렉션의 위치별로 인덱스 조회를 수행할 수 있습니다. 다른 버전을 사용하면 이름으로 인덱스 조회를 수행할 수 있습니다.

반환된 정보에 대한 설명은 CDaoIndexInfo 구조를 참조하세요. 이 구조체에는 dwInfoOptions 설명 에 나열된 정보 항목에 해당하는 멤버가 있습니다. 한 수준에서 정보를 요청하면 이전 수준에 대한 정보도 얻을 수 있습니다.

관련 정보는 DAO 도움말의 "특성 속성" 항목을 참조하세요.

CDaoRecordset::GetLastModifiedBookmark

이 멤버 함수를 호출하여 가장 최근에 추가되거나 업데이트된 레코드의 책갈피를 검색합니다.

COleVariant GetLastModifiedBookmark();

Return Value

COleVariant 가장 최근에 추가되거나 변경된 레코드를 나타내는 책갈피를 포함하는 형식입니다.

설명

레코드 집합 개체를 만들거나 열면 각 레코드에 지원되는 경우 고유한 책갈피가 이미 있습니다. GetBookmark를 호출하여 레코드 집합이 책갈피를 지원하는지 확인합니다. 레코드 집합이 책갈피를 지원하지 않으면 throw CDaoException 됩니다.

레코드를 추가하면 레코드 집합의 끝에 표시되며 현재 레코드가 아닙니다. 새 레코드를 최신 상태로 만들려면 새로 추가된 레코드로 돌아가도록 호출 GetLastModifiedBookmark 한 다음 호출 SetBookmark 합니다.

관련 정보는 DAO 도움말의 "LastModified 속성" 항목을 참조하세요.

CDaoRecordset::GetLockingMode

이 멤버 함수를 호출하여 레코드 집합에 적용되는 잠금 유형을 결정합니다.

BOOL GetLockingMode();

Return Value

잠금 유형이 비관적이면 0이 아닌 경우 낙관적 레코드 잠금의 경우 0입니다.

설명

비관적 잠금이 적용되는 경우 편집 중인 레코드가 포함된 데이터 페이지는 멤버 편집 함수를 호출하는 즉시 잠깁니다. 업데이트 또는 닫기 멤버 함수 또는 이동 또는 찾기 작업을 호출하면 페이지가 잠금 해제됩니다.

낙관적 잠금이 적용되는 경우 레코드가 멤버 함수로 업데이트되는 동안에만 레코드가 포함된 데이터 페이지가 Update 잠깁니다.

ODBC 데이터 원본을 사용하는 경우 잠금 모드는 항상 낙관적입니다.

관련 정보는 DAO 도움말의 "LockEdits 속성" 및 "다중 사용자 애플리케이션의 잠금 동작" 항목을 참조하세요.

CDaoRecordset::GetName

이 멤버 함수를 호출하여 레코드 집합의 이름을 검색합니다.

CString GetName();

Return Value

CString 레코드 집합의 이름을 포함하는 A.

설명

레코드 집합의 이름은 문자로 시작해야 하며 최대 40자를 포함할 수 있습니다. 숫자와 밑줄 문자를 포함할 수 있지만 문장 부호나 공백은 포함할 수 없습니다.

관련 정보는 DAO 도움말의 "Name 속성" 항목을 참조하세요.

CDaoRecordset::GetParamValue

이 멤버 함수를 호출하여 기본 DAOParameter 개체에 저장된 지정된 매개 변수의 현재 값을 검색합니다.

virtual COleVariant GetParamValue(int nIndex);
virtual COleVariant GetParamValue(LPCTSTR lpszName);

매개 변수

nIndex
내부 DAOParameter 개체에 있는 매개 변수의 숫자 위치입니다.

lpszName
값을 원하는 매개 변수의 이름입니다.

Return Value

매개 변수의 값을 포함하는 COleVariant 클래스의 개체입니다.

설명

이름 또는 컬렉션의 숫자 위치로 매개 변수에 액세스할 수 있습니다.

관련 정보는 DAO 도움말의 "매개 변수 개체" 항목을 참조하세요.

CDaoRecordset::GetPercentPosition

dynaset 형식 또는 스냅샷 형식 레코드 집합으로 작업할 때 레코드 집합을 완전히 채우기 전에 호출 GetPercentPosition 하는 경우 이동 양은 GetRecordCount를 호출하여 표시된 대로 액세스하는 레코드 수에 상대적입니다.

float GetPercentPosition();

Return Value

레코드 집합에 있는 레코드의 백분율을 기준으로 레코드 집합 개체의 현재 레코드의 대략적인 위치를 나타내는 0에서 100 사이의 숫자입니다.

설명

MoveLast를 호출하여 모든 레코드 집합의 채우기를 완료하여 마지막 레코드로 이동할 수 있지만 상당한 시간이 걸릴 수 있습니다.

인덱스가 없는 테이블을 포함하여 세 가지 유형의 레코드 집합 개체를 모두 호출 GetPercentPosition 할 수 있습니다. 그러나 정방향 전용 스크롤 스냅샷 또는 외부 데이터베이스에 대한 통과 쿼리에서 연 레코드 집합을 호출 GetPercentPosition 할 수는 없습니다. 현재 레코드가 없거나 현재 레코드가 삭제된 경우 throw CDaoException 됩니다.

관련 정보는 DAO 도움말의 "PercentPosition 속성" 항목을 참조하세요.

CDaoRecordset::GetRecordCount

이 멤버 함수를 호출하여 액세스된 레코드 집합의 레코드 수를 확인합니다.

long GetRecordCount();

Return Value

레코드 집합 개체에서 액세스하는 레코드 수를 반환합니다.

설명

GetRecordCount 는 모든 레코드에 액세스할 때까지 dynaset 형식 또는 스냅샷 형식 레코드 집합에 포함된 레코드 수를 나타내지 않습니다. 이 멤버 함수 호출을 완료하는 데 상당한 시간이 걸릴 수 있습니다.

마지막 레코드에 액세스하면 반환 값은 레코드 집합에서 삭제되지 않은 레코드의 총 수를 나타냅니다. 마지막 레코드에 강제로 액세스하려면 레코드 집합에 MoveLast 대한 멤버 함수를 호출합니다 FindLast . SQL Count를 사용하여 쿼리에서 반환할 대략적인 레코드 수를 결정할 수도 있습니다.

애플리케이션이 다이나셋 형식 레코드 집합의 레코드를 삭제하면 반환 값이 GetRecordCount 감소합니다. 그러나 다른 사용자가 삭제한 레코드는 현재 레코드가 GetRecordCount 삭제된 레코드에 배치될 때까지 반영되지 않습니다. 레코드 수에 영향을 주는 트랜잭션을 실행한 후 트랜잭션 GetRecordCount 을 롤백하는 경우 나머지 레코드의 실제 수는 반영되지 않습니다.

스냅샷 형식 레코드 집합의 GetRecordCount 값은 기본 테이블의 변경 내용에 영향을 받지 않습니다.

테이블 형식 레코드 집합의 값은 테이블의 GetRecordCount 대략적인 레코드 수를 반영하며 테이블 레코드가 추가 및 삭제될 때 즉시 영향을 받습니다.

레코드가 없는 레코드 집합은 0 값을 반환합니다. 연결된 테이블 또는 ODBC 데이터베이스를 사용하는 경우 항상 - 1을 반환합니다 GetRecordCount . 레코드 집합에서 Requery 멤버 함수를 호출하면 쿼리가 다시 실행된 것처럼 값 GetRecordCount 이 다시 설정됩니다.

관련 정보는 DAO 도움말의 "RecordCount 속성" 항목을 참조하세요.

CDaoRecordset::GetSQL

이 멤버 함수를 호출하여 레코드 집합이 열릴 때 레코드 집합의 레코드를 선택하는 데 사용된 SQL 문을 가져옵니다.

CString GetSQL() const;

Return Value

SQL 문을 포함하는 A CString 입니다.

설명

일반적으로 SQL SELECT 문입니다.

반환되는 GetSQL 문자열은 일반적으로 lpszSQL 매개 변수의 레코드 집합에 Open 멤버 함수에 전달했을 수 있는 문자열과 다릅니다. 레코드 집합은 전달한 내용, ClassWizard로 지정한 Open항목 및 m_strFilter 지정한 항목 및 데이터 멤버를 m_strSort 전체 SQL 문을 생성하기 때문입니다.

참고 항목

를 호출한 후에만 이 멤버 함수를 호출합니다 Open.

관련 정보는 DAO 도움말의 "SQL 속성" 항목을 참조하세요.

CDaoRecordset::GetType

레코드 집합을 연 후 이 멤버 함수를 호출하여 레코드 집합 개체의 형식을 확인합니다.

short GetType();

Return Value

레코드 집합의 형식을 나타내는 다음 값 중 하나입니다.

  • dbOpenTable 테이블 형식 레코드 집합

  • dbOpenDynaset Dynaset 형식 레코드 집합

  • dbOpenSnapshot 스냅샷 형식 레코드 집합

설명

관련 정보는 DAO 도움말의 "Type 속성" 항목을 참조하세요.

CDaoRecordset::GetValidationRule

이 멤버 함수를 호출하여 데이터의 유효성을 검사하는 데 사용되는 규칙을 결정합니다.

CString GetValidationRule();

Return Value

CString 레코드가 변경되거나 테이블에 추가될 때 레코드의 데이터의 유효성을 검사하는 값이 포함된 개체입니다.

설명

이 규칙은 텍스트 기반이며 기본 테이블이 변경될 때마다 적용됩니다. 데이터가 유효하지 않으면 MFC에서 예외를 throw합니다. 반환된 오류 메시지는 기본 필드 개체의 ValidationText 속성 텍스트(지정된 경우) 또는 기본 필드 개체의 ValidationRule 속성에 지정된 식의 텍스트입니다. GetValidationText를 호출하여 오류 메시지의 텍스트를 가져올 수 있습니다.

예를 들어 해당 월의 날짜가 필요한 레코드의 필드에는 "DAY BETWEEN 1과 31"과 같은 유효성 검사 규칙이 있을 수 있습니다.

관련 정보는 DAO 도움말의 "ValidationRule 속성" 항목을 참조하세요.

CDaoRecordset::GetValidationText

이 멤버 함수를 호출하여 기본 필드 개체의 ValidationText 속성 텍스트를 검색합니다.

CString GetValidationText();

Return Value

CString 필드 값이 기본 필드 개체의 유효성 검사 규칙을 충족하지 않는 경우 표시되는 메시지의 텍스트를 포함하는 개체입니다.

설명

관련 정보는 DAO 도움말의 "ValidationText 속성" 항목을 참조하세요.

CDaoRecordset::IsBOF

레코드에서 레코드로 스크롤하기 전에 이 멤버 함수를 호출하여 레코드 집합의 첫 번째 레코드 앞에 갔는지 여부를 알아봅니다.

BOOL IsBOF() const;

Return Value

레코드 집합에 레코드가 없거나 첫 번째 레코드 앞에서 뒤로 스크롤한 경우 0이 아닙니다. 그렇지 않으면 0입니다.

설명

함께 호출 IsBOF IsEOF 하여 레코드 집합에 레코드가 포함되어 있는지 아니면 비어 있는지 확인할 수도 있습니다. 호출 Open직후 레코드 집합에 레코드가 없으면 0이 아닌 IsBOF 값을 반환합니다. 레코드가 하나 이상 있는 레코드 집합을 열면 첫 번째 레코드는 현재 레코드이고 IsBOF 0을 반환합니다.

첫 번째 레코드가 현재 레코드이고 호출 MovePrevIsBOF 하는 경우 이후 0이 아닌 레코드가 반환됩니다. 0이 아닌 값을 반환하고 호출MovePrev하면 IsBOF 예외가 throw됩니다. 0이 아닌 레코드를 반환하면 IsBOF 현재 레코드가 정의되지 않으며 현재 레코드가 필요한 모든 작업에 예외가 발생합니다.

특정 메서드가 설정에 미치는 IsBOF IsEOF 영향:

  • 내부적으로 호출 Open* 하면 레코드 집합의 첫 번째 레코드를 호출 MoveFirst하여 현재 레코드가 됩니다. 따라서 빈 레코드 IsBOF 집합을 호출 Open 하면 0이 아닌 값이 반환됩니다IsEOF. (실패 MoveFirst 또는 MoveLast 호출의 동작은 다음 표를 참조하세요.)

  • 레코드를 성공적으로 찾는 모든 이동 작업으로 인해 둘 다 IsBOF 발생하며 IsEOF 0이 반환됩니다.

  • AddNew 호출 후 새 레코드를 Update 성공적으로 삽입하는 호출은 0을 반환하지만 이미 0이 아닌 경우에만 IsEOF 반환됩니다IsBOF. 상태는 IsEOF 항상 변경되지 않습니다. Microsoft Jet 데이터베이스 엔진에서 정의한 대로 빈 레코드 집합의 현재 레코드 포인터는 파일의 끝에 있으므로 현재 레코드 뒤에 새 레코드가 삽입됩니다.

  • 레코드 집합에서 나머지 레코드만 제거하더라도 모든 Delete 호출은 값 또는 IsEOF값을 IsBOF 변경하지 않습니다.

이 표에서는 서로 다른 조합으로 허용되는 이동 작업을 보여 줍니다 IsBOF/ IsEOF.

State(상태) MoveFirst, MoveLast MovePrev,

Move < 0
Move 0 MoveNext,

Move > 0
IsBOF=nonzero,

IsEOF=0
허용됨 예외 예외 허용됨
IsBOF=0,

IsEOF=nonzero
허용됨 허용됨 예외 예외
둘 다 0이 아닌 예외 예외 예외 예외
둘 다 0 허용됨 허용됨 허용됨 허용됨

이동 작업을 허용한다고 해서 작업이 레코드를 성공적으로 찾는 것은 아닙니다. 지정된 이동 작업을 수행하려는 시도가 허용되고 예외를 생성하지 않음을 나타내는 것일 뿐입니다. 이동 시도의 IsBOF 결과로 멤버 함수 및 IsEOF 멤버 함수의 값이 변경될 수 있습니다.

값 및 IsEOF 설정에 대한 IsBOF 레코드를 찾지 않는 이동 작업의 효과는 다음 표에 나와 있습니다.

작업 IsBOF IsEOF
MoveFirst, MoveLast 0이 아닌 경우 0이 아닌 경우
Move 0 변경 내용 없음 변경 내용 없음
MovePrev, Move< 0 0이 아닌 경우 변경 없음
MoveNext, Move> 0 변경 없음 0이 아닌 경우

관련 정보는 DAO 도움말의 "BOF, EOF 속성" 항목을 참조하세요.

CDaoRecordset::IsDeleted

현재 레코드가 삭제되었는지 여부를 확인하려면 이 멤버 함수를 호출합니다.

BOOL IsDeleted() const;

Return Value

레코드 집합이 삭제된 레코드에 배치된 경우 0이 아닌 경우 그렇지 않으면 0입니다.

설명

레코드로 스크롤하여 IsDeleted TRUE(0이 아닌 경우)를 반환하는 경우 다른 레코드 집합 작업을 수행하려면 먼저 다른 레코드로 스크롤해야 합니다.

참고 항목

스냅샷 또는 테이블 형식 레코드 집합의 레코드에 대해 삭제된 상태를 확인할 필요가 없습니다. 스냅샷에서 레코드를 삭제할 수 없으므로 호출 IsDeleted할 필요가 없습니다. 테이블 형식 레코드 집합의 경우 삭제된 레코드는 실제로 레코드 집합에서 제거됩니다. 사용자, 다른 사용자 또는 다른 레코드 집합에서 레코드가 삭제되면 해당 레코드로 다시 스크롤할 수 없습니다. 따라서 호출 IsDeleted할 필요가 없습니다.

다이나셋에서 레코드를 삭제하면 레코드 집합에서 제거되고 해당 레코드로 다시 스크롤할 수 없습니다. 그러나 다이나셋의 레코드가 다른 사용자 또는 동일한 테이블을 IsDeleted 기반으로 하는 다른 레코드 집합에서 삭제되는 경우 나중에 해당 레코드로 스크롤하면 TRUE를 반환합니다.

관련 정보는 DAO 도움말의 "Delete 메서드", "LastModified 속성" 및 "EditMode 속성" 항목을 참조하세요.

CDaoRecordset::IsEOF

레코드에서 레코드로 스크롤할 때 이 멤버 함수를 호출하여 레코드 집합의 마지막 레코드를 초과했는지 여부를 알아봅니다.

BOOL IsEOF() const;

Return Value

레코드 집합에 레코드가 없거나 마지막 레코드를 넘어 스크롤한 경우 0이 아닙니다. 그렇지 않으면 0입니다.

설명

레코드 집합에 레코드가 포함되어 있는지 아니면 비어 있는지를 확인하기 위해 호출 IsEOF 할 수도 있습니다. 호출 Open직후 레코드 집합에 레코드가 없으면 0이 아닌 IsEOF 값을 반환합니다. 레코드가 하나 이상 있는 레코드 집합을 열면 첫 번째 레코드는 현재 레코드이고 IsEOF 0을 반환합니다.

호출 MoveNextIsEOF 할 때 마지막 레코드가 현재 레코드인 경우 이후 0이 아닌 레코드가 반환됩니다. 0이 아닌 값을 반환하고 호출MoveNext하면 IsEOF 예외가 throw됩니다. 0이 아닌 레코드를 반환하면 IsEOF 현재 레코드가 정의되지 않으며 현재 레코드가 필요한 모든 작업에 예외가 발생합니다.

특정 메서드가 설정에 미치는 IsBOF IsEOF 영향:

  • 내부적으로 호출 Open 하면 레코드 집합의 첫 번째 레코드를 호출 MoveFirst하여 현재 레코드가 됩니다. 따라서 빈 레코드 IsBOF 집합을 호출 Open 하면 0이 아닌 값이 반환됩니다IsEOF. (실패한 MoveFirst 호출의 동작은 다음 표를 참조하세요.)

  • 레코드를 성공적으로 찾는 모든 이동 작업으로 인해 둘 다 IsBOF 발생하며 IsEOF 0이 반환됩니다.

  • AddNew 호출 후 새 레코드를 Update 성공적으로 삽입하는 호출은 0을 반환하지만 이미 0이 아닌 경우에만 IsEOF 반환됩니다IsBOF. 상태는 IsEOF 항상 변경되지 않습니다. Microsoft Jet 데이터베이스 엔진에서 정의한 대로 빈 레코드 집합의 현재 레코드 포인터는 파일의 끝에 있으므로 현재 레코드 뒤에 새 레코드가 삽입됩니다.

  • 레코드 집합에서 나머지 레코드만 제거하더라도 모든 Delete 호출은 값 또는 IsEOF값을 IsBOF 변경하지 않습니다.

이 표에서는 서로 다른 조합으로 허용되는 이동 작업을 보여 줍니다 IsBOF/ IsEOF.

State(상태) MoveFirst, MoveLast MovePrev,

Move < 0
Move 0 MoveNext,

Move > 0
IsBOF=nonzero,

IsEOF=0
허용됨 예외 예외 허용됨
IsBOF=0,

IsEOF=nonzero
허용됨 허용됨 예외 예외
둘 다 0이 아닌 예외 예외 예외 예외
둘 다 0 허용됨 허용됨 허용됨 허용됨

이동 작업을 허용한다고 해서 작업이 레코드를 성공적으로 찾는 것은 아닙니다. 지정된 이동 작업을 수행하려는 시도가 허용되고 예외를 생성하지 않음을 나타내는 것일 뿐입니다. 이동 시도의 IsBOF 결과로 멤버 함수 및 IsEOF 멤버 함수의 값이 변경될 수 있습니다.

값 및 IsEOF 설정에 대한 IsBOF 레코드를 찾지 않는 이동 작업의 효과는 다음 표에 나와 있습니다.

작업 IsBOF IsEOF
MoveFirst, MoveLast 0이 아닌 경우 0이 아닌 경우
Move 0 변경 내용 없음 변경 내용 없음
MovePrev, Move< 0 0이 아닌 경우 변경 없음
MoveNext, Move> 0 변경 없음 0이 아닌 경우

관련 정보는 DAO 도움말의 "BOF, EOF 속성" 항목을 참조하세요.

CDaoRecordset::IsFieldDirty

이 멤버 함수를 호출하여 다이너셋의 지정된 필드 데이터 멤버가 "더티"(변경됨)로 플래그가 지정되었는지 여부를 확인합니다.

BOOL IsFieldDirty(void* pv);

매개 변수

pv
상태를 확인하려는 필드 데이터 멤버에 대한 포인터이거나, 더티 필드가 있는지 확인하기 위한 NULL입니다.

Return Value

지정된 필드 데이터 멤버에 더티로 플래그가 지정된 경우 0이 아닌 경우 그렇지 않으면 0입니다.

설명

모든 더티 필드 데이터 멤버의 데이터는 현재 레코드가 멤버 함수에 대한 호출 Update 에 의해 업데이트될 때(호출 또는 AddNew호출 후) 데이터 원본의 CDaoRecordset 레코드로 Edit 전송됩니다. 이 지식을 통해 열이 데이터 원본에 기록되지 않도록 필드 데이터 멤버의 부풀리기 해제와 같은 추가 단계를 수행할 수 있습니다.

IsFieldDirty 는 .를 통해 DoFieldExchange구현됩니다.

CDaoRecordset::IsFieldNull

이 멤버 함수를 호출하여 레코드 집합의 지정된 필드 데이터 멤버가 Null로 플래그가 지정되었는지 여부를 확인합니다.

BOOL IsFieldNull(void* pv);

매개 변수

pv
상태를 확인하려는 필드 데이터 멤버에 대한 포인터이거나, NULL을 사용하여 필드가 Null인지 확인합니다.

Return Value

지정된 필드 데이터 멤버에 Null로 플래그가 지정된 경우 0이 아닌 경우 그렇지 않으면 0입니다.

설명

(데이터베이스 용어에서 Null은 "값 없음"을 의미하며 C++의 NULL과 동일하지 않습니다. 필드 데이터 멤버에 Null로 플래그가 지정되면 값이 없는 현재 레코드의 열로 해석됩니다.

참고 항목

다음 코드 예제와 같이 특정 상황에서는 사용 IsFieldNull 이 비효율적일 수 있습니다.

COleVariant varValue;
void *pField = &(rs.m_Age);
int nField = 2;

// this code is inefficient because data
// must be retrieved for both IsFieldNull
// and GetFieldValue
if (!rs.IsFieldNull(pField))
   rs.GetFieldValue(nField, varValue);

// this code is more efficient
rs.GetFieldValue(nField, varValue);
if (varValue.vt == VT_NULL)
   varValue.Attach(varNewVal); // do something

참고 항목

파생되지 않고 동적 레코드 바인딩을 CDaoRecordset사용하는 경우 예제와 같이 VT_NULL 사용해야 합니다.

CDaoRecordset::IsFieldNullable

이 멤버 함수를 호출하여 지정된 필드 데이터 멤버가 "nullable"인지 여부를 확인합니다(Null 값으로 설정할 수 있음; C++ NULL은 Null과 동일하지 않습니다. 즉, 데이터베이스 용어에서 "값 없음"을 의미합니다.)

BOOL IsFieldNullable(void* pv);

매개 변수

pv
상태를 확인하려는 필드 데이터 멤버에 대한 포인터이거나, NULL을 사용하여 필드가 Null인지 확인합니다.

Return Value

지정된 필드 데이터 멤버를 Null로 만들 수 있는 경우 0이 아닌 경우 그렇지 않으면 0입니다.

설명

Null일 수 없는 필드에는 값이 있어야 합니다. 레코드를 추가하거나 업데이트할 때 이러한 필드를 Null로 설정하려는 경우 데이터 원본은 추가 또는 업데이트를 Update 거부하고 예외를 throw합니다. 호출할 때가 아니라 호출 Update할 때 예외가 SetFieldNull발생합니다.

CDaoRecordset::IsOpen

이 멤버 함수를 호출하여 레코드 집합이 열려 있는지 확인합니다.

BOOL IsOpen() const;

Return Value

레코드 집합 개체 Open 또는 Requery 멤버 함수가 이전에 호출되었고 레코드 집합이 닫혀 있지 않은 경우 0이 아니고, 그렇지 않으면 0입니다.

설명

CDaoRecordset::m_bCheckCacheForDirtyFields

캐시된 필드가 자동으로 더티(변경됨) 및 Null로 표시되는지 여부를 나타내는 플래그를 포함합니다.

설명

플래그의 기본값은 TRUE입니다. 이 데이터 멤버의 설정은 전체 이중 버퍼링 메커니즘을 제어합니다. 플래그를 TRUE로 설정하면 DFX 메커니즘을 사용하여 필드별로 캐싱을 끌 수 있습니다. 플래그를 FALSE로 설정하면 직접 호출 SetFieldDirty SetFieldNull 해야 합니다.

를 호출 Open하기 전에 이 데이터 멤버를 설정합니다. 이 메커니즘은 주로 사용 편의성을 위한 것입니다. 변경될 때 필드의 이중 버퍼링으로 인해 성능이 느려질 수 있습니다.

CDaoRecordset::m_nFields

레코드 집합 클래스의 필드 데이터 멤버 수와 데이터 원본의 레코드 집합에서 선택한 열 수를 포함합니다.

설명

레코드 집합 클래스의 생성자는 정적으로 바인딩된 필드의 올바른 수로 초기화 m_nFields 해야 합니다. ClassWizard는 레코드 집합 클래스를 선언하는 데 사용할 때 이 초기화를 작성합니다. 수동으로 작성할 수도 있습니다.

프레임워크는 이 숫자를 사용하여 필드 데이터 멤버와 데이터 원본에 있는 현재 레코드의 해당 열 간의 상호 작용을 관리합니다.

참고 항목

이 숫자는 매개 변수CDaoFieldExchange::outputColumn를 사용하여 호출한 DoFieldExchange 후 등록된 출력 열 수에 SetFieldType 해당해야 합니다.

열을 동적 CDaoRecordset::GetFieldValue 으로 바인딩할 수 있습니다 CDaoRecordset::SetFieldValue. 이렇게 하면 멤버 함수의 DFX 함수 호출 DoFieldExchange 수를 반영하기 위해 개수를 m_nFields 증분할 필요가 없습니다.

CDaoRecordset::m_nParams

레코드 집합 클래스의 매개 변수 데이터 멤버 수(레코드 집합의 쿼리와 함께 전달된 매개 변수 수)를 포함합니다.

설명

레코드 집합 클래스에 매개 변수 데이터 멤버가 있는 경우 클래스의 생성자는 올바른 숫자로 m_nParams 초기화해야 합니다. m_nParams은 기본적으로 0입니다. 수동으로 수행해야 하는 매개 변수 데이터 멤버를 추가하는 경우 매개 변수 수를 반영하기 위해 클래스 생성자에서 초기화를 수동으로 추가해야 합니다(m_strFilter 또는 m_strSort 문자열의 '' 자리 표시자 수만큼 커야 함).

프레임워크는 레코드 집합의 쿼리를 매개 변수화할 때 이 숫자를 사용합니다.

참고 항목

이 번호는 매개 변수CFieldExchange::param를 사용하여 호출한 DoFieldExchange 후 등록된 "params" 수에 SetFieldType 해당해야 합니다.

관련 정보는 DAO 도움말의 "매개 변수 개체" 항목을 참조하세요.

CDaoRecordset::m_pDAORecordset

개체의 기본 DAO 레코드 집합 개체에 대한 OLE 인터페이스에 대한 포인터를 CDaoRecordset 포함합니다.

설명

DAO 인터페이스에 직접 액세스해야 하는 경우 이 포인터를 사용합니다.

관련 정보는 DAO 도움말의 "Recordset 개체" 항목을 참조하세요.

CDaoRecordset::m_pDatabase

레코드 집합이 데이터 원본에 CDaoDatabase 연결된 개체에 대한 포인터를 포함합니다.

설명

이 변수는 두 가지 방법으로 설정됩니다. 일반적으로 레코드 집합 개체를 생성할 때 이미 열려 CDaoDatabase 있는 개체에 포인터를 전달합니다. 대신 CDaoRecordset NULL을 전달하는 경우 개체를 CDaoDatabase 만들어 엽니다. 두 경우 CDaoRecordset 모두 이 변수에 포인터를 저장합니다.

일반적으로 에 저장된 m_pDatabase포인터를 직접 사용할 필요가 없습니다. 그러나 고유한 확장을 CDaoRecordset작성하는 경우 포인터를 사용해야 할 수 있습니다. 예를 들어 고유한 CDaoException포인터를 throw하는 경우 포인터가 필요할 수 있습니다.

관련 정보는 DAO 도움말의 "데이터베이스 개체" 항목을 참조하세요.

CDaoRecordset::m_strFilter

SQL 문의 WHERE 절을 생성하는 데 사용되는 문자열을 포함합니다.

설명

레코드 집합을 필터링하는 예약어 WHERE 는 포함되지 않습니다. 이 데이터 멤버의 사용은 테이블 형식 레코드 집합에 적용되지 않습니다. 포인터를 m_strFilter 사용하여 CDaoQueryDef 레코드 집합을 열 때는 이 사용이 적용되지 않습니다.

미국 버전의 Microsoft Jet 데이터베이스 엔진을 사용하지 않더라도 날짜가 포함된 필드를 필터링할 때는 미국 날짜 형식(월-일 연도)을 사용합니다. 그렇지 않으면 데이터가 예상대로 필터링되지 않을 수 있습니다.

관련 정보는 DAO 도움말의 "필터 속성" 항목을 참조하세요.

CDaoRecordset::m_strSort

예약된 단어 ORDERBY가 없는 SQL 문의 ORDERBY 절을 포함하는 문자열을 포함합니다.

설명

dynaset 및 스냅샷 형식 레코드 집합 개체를 정렬할 수 있습니다.

테이블 형식 레코드 집합 개체는 정렬할 수 없습니다. 테이블 형식 레코드 집합의 정렬 순서를 확인하려면 SetCurrentIndex를 호출합니다.

포인터를 사용하여 CDaoQueryDef 레코드 집합을 열 때 m_strSort 사용은 영향을 주지 않습니다.

관련 정보는 DAO 도움말의 "정렬 속성" 항목을 참조하세요.

CDaoRecordset::Move

현재 레코드에서 레코드 집합 lRows 레코드를 배치하려면 이 멤버 함수를 호출합니다.

virtual void Move(long lRows);

매개 변수

lRows
앞으로 또는 뒤로 이동할 레코드 수입니다. 양수 값은 레코드 집합의 끝쪽으로 앞으로 이동합니다. 음수 값은 시작 부분으로 뒤로 이동합니다.

설명

앞으로 또는 뒤로 이동할 수 있습니다. Move( 1 ) 은 (와 동일 MoveNext하며 ) 과 Move( -1 ) 동일합니다 MovePrev.

주의

레코드 집합에 레코드가 Move 없는 경우 함수를 호출하면 예외가 throw됩니다. 일반적으로 이동 작업과 IsEOF 이전을 호출 IsBOF 하여 레코드 집합에 레코드가 있는지 여부를 확인합니다. 전화를 걸거나 호출 Open 한 후 또는 IsBOF .를 호출합니다IsEOFRequery.

참고 항목

레코드 집합 IsBOF 의 시작 또는 끝을 지나 스크롤했거나 IsEOF 0이 아닌 값을 반환한 경우 호출 Move 이 throw됩니다 CDaoException.

참고 항목

현재 레코드가 Move 업데이트되거나 추가되는 동안 함수를 호출하면 경고 없이 업데이트가 손실됩니다.

앞으로만 스크롤되는 스냅샷을 호출 Move 하는 경우 lRows 매개 변수는 양의 정수여야 하며 책갈피는 허용되지 않으므로 앞으로만 이동할 수 있습니다.

레코드 집합의 첫 번째, 마지막, 다음 또는 이전 레코드를 현재 레코드로 만들려면 , MoveLast, MoveNext또는 MovePrev 멤버 함수를 MoveFirst호출합니다.

관련 정보는 DAO 도움말의 "Move 메서드" 및 "MoveFirst, MoveLast, MoveNext, MovePrevious 메서드" 항목을 참조하세요.

CDaoRecordset::MoveFirst

이 멤버 함수를 호출하여 레코드 집합의 첫 번째 레코드(있는 경우)를 현재 레코드로 만듭니다.

void MoveFirst();

설명

레코드 집합을 연 직후에 호출 MoveFirst 할 필요가 없습니다. 이때 첫 번째 레코드(있는 경우)는 자동으로 현재 레코드입니다.

주의

레코드 집합에 레코드가 Move 없는 경우 함수를 호출하면 예외가 throw됩니다. 일반적으로 이동 작업과 IsEOF 이전을 호출 IsBOF 하여 레코드 집합에 레코드가 있는지 여부를 확인합니다. 전화를 걸거나 호출 Open 한 후 또는 IsBOF .를 호출합니다IsEOFRequery.

참고 항목

현재 레코드가 Move 업데이트되거나 추가되는 동안 함수를 호출하면 경고 없이 업데이트가 손실됩니다.

Move 조건을 적용하지 않고 레코드에서 레코드로 이동하는 함수를 사용합니다. 찾기 작업을 사용하여 특정 조건을 충족하는 다이너셋 형식 또는 스냅샷 형식 레코드 집합 개체에서 레코드를 찾습니다. 테이블 형식 레코드 집합 개체에서 레코드를 찾으려면 .를 호출 Seek합니다.

레코드 집합이 테이블 형식 레코드 집합을 참조하는 경우 이동은 테이블의 현재 인덱스를 따릅니다. 기본 DAO 개체의 Index 속성을 사용하여 현재 인덱스 설정을 지정할 수 있습니다. 현재 인덱스 설정하지 않으면 반환된 레코드의 순서가 정의되지 않습니다.

SQL 쿼리 또는 querydef를 기반으로 레코드 집합 개체를 호출 MoveLast 하면 쿼리가 강제로 완료되고 레코드 집합 개체가 완전히 채워집니다.

정방향 전용 스크롤 스냅샷을 MoveFirst 사용하여 또는 MovePrev 멤버 함수를 호출할 수 없습니다.

레코드 집합 개체에서 현재 레코드의 위치를 특정 수의 레코드를 앞으로 또는 뒤로 이동하려면 다음을 호출합니다 Move.

관련 정보는 DAO 도움말의 "Move 메서드" 및 "MoveFirst, MoveLast, MoveNext, MovePrevious 메서드" 항목을 참조하세요.

CDaoRecordset::MoveLast

이 멤버 함수를 호출하여 레코드 집합의 마지막 레코드(있는 경우)를 현재 레코드로 만듭니다.

void MoveLast();

설명

주의

레코드 집합에 레코드가 Move 없는 경우 함수를 호출하면 예외가 throw됩니다. 일반적으로 이동 작업과 IsEOF 이전을 호출 IsBOF 하여 레코드 집합에 레코드가 있는지 여부를 확인합니다. 전화를 걸거나 호출 Open 한 후 또는 IsBOF .를 호출합니다IsEOFRequery.

참고 항목

현재 레코드가 Move 업데이트되거나 추가되는 동안 함수를 호출하면 경고 없이 업데이트가 손실됩니다.

Move 조건을 적용하지 않고 레코드에서 레코드로 이동하는 함수를 사용합니다. 찾기 작업을 사용하여 특정 조건을 충족하는 다이너셋 형식 또는 스냅샷 형식 레코드 집합 개체에서 레코드를 찾습니다. 테이블 형식 레코드 집합 개체에서 레코드를 찾으려면 .를 호출 Seek합니다.

레코드 집합이 테이블 형식 레코드 집합을 참조하는 경우 이동은 테이블의 현재 인덱스를 따릅니다. 기본 DAO 개체의 Index 속성을 사용하여 현재 인덱스 설정을 지정할 수 있습니다. 현재 인덱스 설정하지 않으면 반환된 레코드의 순서가 정의되지 않습니다.

SQL 쿼리 또는 querydef를 기반으로 레코드 집합 개체를 호출 MoveLast 하면 쿼리가 강제로 완료되고 레코드 집합 개체가 완전히 채워집니다.

레코드 집합 개체에서 현재 레코드의 위치를 특정 수의 레코드를 앞으로 또는 뒤로 이동하려면 다음을 호출합니다 Move.

관련 정보는 DAO 도움말의 "Move 메서드" 및 "MoveFirst, MoveLast, MoveNext, MovePrevious 메서드" 항목을 참조하세요.

CDaoRecordset::MoveNext

이 멤버 함수를 호출하여 레코드 집합의 다음 레코드를 현재 레코드로 만듭니다.

void MoveNext();

설명

이전 레코드로 이동하기 전에 호출 IsBOF 하는 것이 좋습니다. 0이 아닌 값을 반환하는 경우 IsBOF 를 throw CDaoException 하는 MovePrev 호출은 첫 번째 레코드 이전에 이미 스크롤했거나 레코드 집합에서 선택된 레코드가 없음을 나타냅니다.

주의

레코드 집합에 레코드가 Move 없는 경우 함수를 호출하면 예외가 throw됩니다. 일반적으로 이동 작업과 IsEOF 이전을 호출 IsBOF 하여 레코드 집합에 레코드가 있는지 여부를 확인합니다. 전화를 걸거나 호출 Open 한 후 또는 IsBOF .를 호출합니다IsEOFRequery.

참고 항목

현재 레코드가 Move 업데이트되거나 추가되는 동안 함수를 호출하면 경고 없이 업데이트가 손실됩니다.

Move 조건을 적용하지 않고 레코드에서 레코드로 이동하는 함수를 사용합니다. 찾기 작업을 사용하여 특정 조건을 충족하는 다이너셋 형식 또는 스냅샷 형식 레코드 집합 개체에서 레코드를 찾습니다. 테이블 형식 레코드 집합 개체에서 레코드를 찾으려면 .를 호출 Seek합니다.

레코드 집합이 테이블 형식 레코드 집합을 참조하는 경우 이동은 테이블의 현재 인덱스를 따릅니다. 기본 DAO 개체의 Index 속성을 사용하여 현재 인덱스 설정을 지정할 수 있습니다. 현재 인덱스 설정하지 않으면 반환된 레코드의 순서가 정의되지 않습니다.

레코드 집합 개체에서 현재 레코드의 위치를 특정 수의 레코드를 앞으로 또는 뒤로 이동하려면 다음을 호출합니다 Move.

관련 정보는 DAO 도움말의 "Move 메서드" 및 "MoveFirst, MoveLast, MoveNext, MovePrevious 메서드" 항목을 참조하세요.

CDaoRecordset::MovePrev

이 멤버 함수를 호출하여 레코드 집합의 이전 레코드를 현재 레코드로 만듭니다.

void MovePrev();

설명

이전 레코드로 이동하기 전에 호출 IsBOF 하는 것이 좋습니다. 0이 아닌 값을 반환하는 경우 IsBOF 를 throw CDaoException 하는 MovePrev 호출은 첫 번째 레코드 이전에 이미 스크롤했거나 레코드 집합에서 선택된 레코드가 없음을 나타냅니다.

주의

레코드 집합에 레코드가 Move 없는 경우 함수를 호출하면 예외가 throw됩니다. 일반적으로 이동 작업과 IsEOF 이전을 호출 IsBOF 하여 레코드 집합에 레코드가 있는지 여부를 확인합니다. 전화를 걸거나 호출 Open 한 후 또는 IsBOF .를 호출합니다IsEOFRequery.

참고 항목

현재 레코드가 Move 업데이트되거나 추가되는 동안 함수를 호출하면 경고 없이 업데이트가 손실됩니다.

Move 조건을 적용하지 않고 레코드에서 레코드로 이동하는 함수를 사용합니다. 찾기 작업을 사용하여 특정 조건을 충족하는 다이너셋 형식 또는 스냅샷 형식 레코드 집합 개체에서 레코드를 찾습니다. 테이블 형식 레코드 집합 개체에서 레코드를 찾으려면 .를 호출 Seek합니다.

레코드 집합이 테이블 형식 레코드 집합을 참조하는 경우 이동은 테이블의 현재 인덱스를 따릅니다. 기본 DAO 개체의 Index 속성을 사용하여 현재 인덱스 설정을 지정할 수 있습니다. 현재 인덱스 설정하지 않으면 반환된 레코드의 순서가 정의되지 않습니다.

정방향 전용 스크롤 스냅샷을 MoveFirst 사용하여 또는 MovePrev 멤버 함수를 호출할 수 없습니다.

레코드 집합 개체에서 현재 레코드의 위치를 특정 수의 레코드를 앞으로 또는 뒤로 이동하려면 다음을 호출합니다 Move.

관련 정보는 DAO 도움말의 "Move 메서드" 및 "MoveFirst, MoveLast, MoveNext, MovePrevious 메서드" 항목을 참조하세요.

CDaoRecordset::Open

레코드 집합에 대한 레코드를 검색하려면 이 멤버 함수를 호출해야 합니다.

virtual void Open(
    int nOpenType = AFX_DAO_USE_DEFAULT_TYPE,
    LPCTSTR lpszSQL = NULL,
    int nOptions = 0);

virtual void Open(
    CDaoTableDef* pTableDef,
    int nOpenType = dbOpenTable,
    int nOptions = 0);

virtual void Open(
    CDaoQueryDef* pQueryDef,
    int nOpenType = dbOpenDynaset,
    int nOptions = 0);

매개 변수

nOpenType
다음의 값 중 하나입니다.

  • dbOpenDynaset 양방향 스크롤이 있는 다이나셋 형식 레코드 집합입니다. 기본값입니다.

  • dbOpenTable 양방향 스크롤이 있는 테이블 형식 레코드 집합입니다.

  • dbOpenSnapshot 양방향 스크롤이 있는 스냅샷 형식 레코드 집합입니다.

lpszSQL
다음 중 하나를 포함하는 문자열 포인터입니다.

  • NULL 포인터입니다.

  • 하나 이상의 tabledef 및/또는 querydefs(쉼표로 구분)의 이름입니다.

  • SQL SELECT 문(선택적으로 SQL WHERE 또는 ORDERBY 절 포함)입니다.

  • 통과 쿼리입니다.

nOptions
아래에 나열된 옵션 중 하나 이상 기본값은 0입니다. 가능한 값은 다음과 같습니다.

  • dbAppendOnly 새 레코드만 추가할 수 있습니다(dynaset 형식 레코드 집합만 해당). 이 옵션은 말 그대로 레코드만 추가할 수 있음을 의미합니다. MFC ODBC 데이터베이스 클래스에는 레코드를 검색하고 추가할 수 있는 추가 전용 옵션이 있습니다.

  • dbForwardOnly 레코드 집합은 앞으로만 스크롤되는 스냅샷입니다.

  • dbSeeChanges 다른 사용자가 편집 중인 데이터를 변경하는 경우 예외를 생성합니다.

  • dbDenyWrite 다른 사용자는 레코드를 수정하거나 추가할 수 없습니다.

  • dbDenyRead 다른 사용자는 레코드를 볼 수 없습니다(테이블 형식 레코드 집합만 해당).

  • dbReadOnly 레코드만 볼 수 있습니다. 다른 사용자가 수정할 수 있습니다.

  • dbInconsistent 일관되지 않은 업데이트가 허용됩니다(다이나셋 형식 레코드 집합에만 해당).

  • dbConsistent 일관된 업데이트만 허용됩니다(dynaset 형식 레코드 집합만 해당).

참고 항목

상수 dbConsistent 이며 dbInconsistent 상호 배타적입니다. 하나 또는 다른 하나를 사용할 수 있지만 지정된 인스턴스 Open에서는 둘 다 사용할 수 없습니다.

pTableDef
CDaoTableDef 개체에 대한 포인터입니다. 이 버전은 테이블 형식 레코드 집합에만 유효합니다. 이 옵션을 CDaoDatabase 사용하는 경우 생성 CDaoRecordset 에 사용되는 포인터는 사용되지 않습니다. 대신 tabledef가 있는 데이터베이스가 사용됩니다.

pQueryDef
CDaoQueryDef 개체에 대한 포인터입니다. 이 버전은 dynaset 형식 및 스냅샷 형식 레코드 집합에만 유효합니다. 이 옵션을 CDaoDatabase 사용하는 경우 생성 CDaoRecordset 에 사용되는 포인터는 사용되지 않습니다. 대신 querydef가 있는 데이터베이스가 사용됩니다.

설명

호출 Open하기 전에 레코드 집합 개체를 생성해야 합니다. 이 작업을 수행하는 방법은 여러 가지입니다.

  • 레코드 집합 개체를 생성할 때 이미 열려 있는 개체에 포인터를 CDaoDatabase 전달합니다.

  • 레코드 집합 개체를 생성할 때 열려 있지 않은 개체에 포인터를 CDaoDatabase 전달합니다. 레코드 집합은 개체를 CDaoDatabase 열지만 레코드 집합 개체가 닫히면 닫지 않습니다.

  • 레코드 집합 개체를 생성할 때 NULL 포인터를 전달합니다. 레코드 집합 개체는 Microsoft Access의 이름을 가져오기 위해 호출 GetDefaultDBName 합니다. 열 MDB 파일입니다. 그런 다음 레코드 집합은 개체를 CDaoDatabase 열고 레코드 집합이 열려 있는 한 계속 엽니다. 레코드 집합 CDaoDatabase 을 호출 Close 하면 개체도 닫힙니다.

    참고 항목

    레코드 집합이 개체를 CDaoDatabase 열면 비클러스터형 액세스 권한이 있는 데이터 원본이 열립니다.

lpszSQL 매개 변수를 사용하는 버전의 Open 경우 레코드 집합이 열리면 여러 가지 방법 중 하나로 레코드를 검색할 수 있습니다. 첫 번째 옵션은 DFX 함수를 .에 두는 것입니다 DoFieldExchange. 두 번째 옵션은 멤버 함수를 호출하여 동적 바인딩을 사용하는 것입니다 GetFieldValue . 이러한 옵션은 개별적으로 또는 함께 구현할 수 있습니다. 결합된 경우 호출할 때 SQL 문을 직접 전달해야 합니다 Open.

개체를 CDaoTableDef 전달하는 두 번째 버전을 Open 사용하는 경우 결과 열을 사용하여 DFX 메커니즘을 통해 DoFieldExchange 바인딩하고 동적으로 GetFieldValue바인딩할 수 있습니다.

참고 항목

테이블 형식 레코드 집합에 대한 개체만 CDaoTableDef 사용하여 호출 Open 할 수 있습니다.

개체를 CDaoQueryDef 전달하는 세 번째 버전의 Open 개체를 사용하면 해당 쿼리가 실행되고 결과 열을 통해 바인딩하고 DFX 메커니즘을 통해 DoFieldExchange 바인딩하고/또는 통해 동적으로 GetFieldValue바인딩할 수 있습니다.

참고 항목

dynaset 형식 및 스냅샷 형식 레코드 집합에 대해서만 개체를 사용하여 CDaoQueryDef 호출 Open 할 수 있습니다.

매개 변수를 사용하는 lpszSQL 첫 번째 버전의 Open 경우 다음 표에 표시된 조건에 따라 레코드가 선택됩니다.

lpszSQL 매개 변수의 값 선택한 레코드는 다음을 통해 결정됩니다. 예시
NULL 에 의해 반환된 GetDefaultSQL문자열입니다.
하나 이상의 tabledef 및/또는 querydef 이름의 쉼표로 구분된 목록입니다. 에 표시되는 DoFieldExchange모든 열 "Customer"
SELECT column-list FROM table-list 지정된 tabledef 및/또는 querydef의 지정된 열입니다. "SELECT CustId, CustName

FROM Customer"

일반적인 절차는 NULL을 Open전달하는 것입니다. 이 경우 Open ClassWizard가 파생 클래스를 만들 CDaoRecordset때 생성하는 재정의 가능한 멤버 함수인 호출GetDefaultSQL입니다. 이 값은 ClassWizard에서 지정한 tabledef 및/또는 querydef 이름을 제공합니다. 대신 lpszSQL 매개 변수에서 다른 정보를 지정할 수 있습니다.

전달하는 Open 것이 무엇이든 간에 쿼리에 대한 최종 SQL 문자열을 생성한 다음(전달한 lpszSQL 문자열에 SQL WHEREORDERBY 절이 추가될 수 있음) 쿼리를 실행합니다. 호출Open한 후 호출 GetSQL 하여 생성된 문자열을 검사할 수 있습니다.

레코드 집합 클래스의 필드 데이터 멤버는 선택한 데이터의 열에 바인딩됩니다. 레코드가 반환되면 첫 번째 레코드가 현재 레코드가 됩니다.

필터 또는 정렬과 같은 레코드 집합에 대한 옵션을 설정하려면 레코드 집합 개체를 생성한 m_strFilter 후 호출Open하기 전에 설정합니다m_strSort. 레코드 집합이 이미 열려 있는 후 레코드 집합의 레코드를 새로 고치려면 다음을 호출합니다 Requery.

dynaset 형식 또는 스냅샷 형식 레코드 집합을 호출 Open 하거나 데이터 원본이 연결된 테이블을 나타내는 SQL 문 또는 tabledef를 참조하는 경우 형식 인수에 사용할 dbOpenTable 수 없습니다. 이 경우 MFC에서 예외를 throw합니다. tabledef 개체가 연결된 테이블을 나타내는지 여부를 확인하려면 CDaoTableDef 개체를 만들고 GetConnect 멤버 함수를 호출합니다.

동일한 레코드를 dbSeeChanges 편집하거나 삭제할 때 컴퓨터의 다른 사용자 또는 다른 프로그램에서 변경한 내용을 트래핑하려는 경우 플래그를 사용합니다. 예를 들어 두 사용자가 동일한 레코드를 편집하기 시작하면 멤버 함수를 호출 Update 하는 첫 번째 사용자가 성공합니다. Update 두 번째 사용자가 호출하면 a가 CDaoException throw됩니다. 마찬가지로, 두 번째 사용자가 레코드를 삭제하기 위해 호출 Delete 을 시도하고 첫 번째 사용자가 CDaoException 이미 변경한 경우 발생합니다.

일반적으로 사용자가 업데이트하는 동안 이를 CDaoException 가져오는 경우 코드는 필드의 내용을 새로 고치고 새로 수정된 값을 검색해야 합니다. 삭제 과정에서 예외가 발생하면 코드에서 사용자에게 새 레코드 데이터를 표시하고 데이터가 최근에 변경되었음을 나타내는 메시지를 표시할 수 있습니다. 이 시점에서 코드는 사용자가 여전히 레코드를 삭제하려고 한다는 확인을 요청할 수 있습니다.

앞으로만 스크롤 옵션(dbForwardOnly)을 사용하여 애플리케이션이 ODBC 데이터 원본에서 열린 레코드 집합을 단일 패스할 때 성능을 향상시킵니다.

관련 정보는 DAO 도움말의 "OpenRecordset 메서드" 항목을 참조하세요.

CDaoRecordset::Requery

이 멤버 함수를 호출하여 레코드 집합을 다시 빌드(새로 고침)합니다.

virtual void Requery();

설명

레코드가 반환되면 첫 번째 레코드가 현재 레코드가 됩니다.

레코드 집합에 사용자 또는 다른 사용자가 데이터 원본에 추가하는 추가 및 삭제가 반영되도록 하려면 호출 Requery하여 레코드 집합을 다시 빌드해야 합니다. 레코드 집합이 다이나셋인 경우 사용자 또는 다른 사용자가 기존 레코드에 적용한 업데이트를 자동으로 반영합니다(추가는 아님). 레코드 집합이 스냅샷인 경우 추가 및 삭제뿐만 아니라 다른 사용자의 편집 내용도 반영하도록 호출 Requery 해야 합니다.

dynaset 또는 스냅샷의 경우 매개 변수 값을 사용하여 레코드 집합을 다시 빌드하려는 경우 호출 Requery 합니다. 를 호출Requery하기 전에 설정하여 m_strSort 새 필터 또는 정렬을 m_strFilter 설정합니다. 호출 Requery하기 전에 매개 변수 데이터 멤버에 새 값을 할당하여 새 매개 변수를 설정합니다.

레코드 집합을 다시 빌드하는 데 실패하면 레코드 집합이 닫힙니다. 호출 Requery하기 전에 멤버 함수를 호출 CanRestart 하여 레코드 집합을 다시 쿼리할 수 있는지 여부를 확인할 수 있습니다. CanRestart 는 성공한다고 Requery 보장하지 않습니다.

주의

호출한 후에만 호출 Requery Open합니다.

참고 항목

호출 Requery 은 DAO 책갈피를 변경합니다.

호출이 0을 반환하는 경우 다이나셋 형식 또는 스냅샷 형식 레코드 집합을 호출 Requery CanRestart 할 수 없으며 테이블 형식 레코드 집합에서 사용할 수도 없습니다.

호출 Requery후 둘 다 IsBOF IsEOF 0이 아닌 값을 반환하는 경우 쿼리는 레코드를 반환하지 않으며 레코드 집합에 데이터가 포함되지 않습니다.

관련 정보는 DAO 도움말의 "Requery 메서드" 항목을 참조하세요.

CDaoRecordset::Seek

이 멤버 함수를 호출하여 현재 인덱스에 대해 지정된 조건을 충족하는 인덱싱된 테이블 형식 레코드 집합 개체에서 레코드를 찾고 해당 레코드를 현재 레코드로 만듭니다.

BOOL Seek(
    LPCTSTR lpszComparison,
    COleVariant* pKey1,
    COleVariant* pKey2 = NULL,
    COleVariant* pKey3 = NULL);

BOOL Seek(
    LPCTSTR lpszComparison,
    COleVariant* pKeyArray,
    WORD nKeys);

매개 변수

lpszComparison
다음 문자열 식 중 하나: "<", "<=", "=", ">=", 또는 ">".

pKey1
값이 인덱스의 첫 번째 필드에 해당하는 COleVariant 에 대한 포인터입니다. 필수입니다.

pKey2
값이 COleVariant 인덱스의 두 번째 필드에 해당하는 포인터(있는 경우)입니다. 기본값은 NULL입니다.

pKey3
값이 COleVariant 인덱스의 세 번째 필드에 해당하는 포인터(있는 경우)입니다. 기본값은 NULL입니다.

pKeyArray
변형 배열에 대한 포인터입니다. 배열 크기는 인덱스의 필드 수에 해당합니다.

nKeys
인덱스의 필드 수인 배열의 크기에 해당하는 정수입니다.

참고 항목

키에 와일드카드를 지정하지 않습니다. 와일드카드는 Seek 일치하는 레코드를 반환하지 않습니다.

Return Value

일치하는 레코드가 발견되면 0이 아니고, 그렇지 않으면 0입니다.

설명

두 번째(배열) 버전을 Seek 사용하여 4개 이상의 필드 인덱스를 처리합니다.

Seek 는 테이블 형식 레코드 집합에서 고성능 인덱스 검색을 사용하도록 설정합니다. 를 호출Seek하기 전에 호출 SetCurrentIndex 하여 현재 인덱스 설정해야 합니다. 인덱스가 고유하지 않은 키 필드 또는 필드를 Seek 식별하는 경우 조건을 충족하는 첫 번째 레코드를 찾습니다. 인덱스 설정하지 않으면 예외가 throw됩니다.

UNICODE 레코드 집합을 만들지 않는 경우 개체는 COleVariant 명시적으로 ANSI로 선언되어야 합니다. 이 작업은 COleVariant::COleVariant(lpszSrc, vtSrc ) 형식의 생성자(ANSI)로 설정된 VT_BSTRT vtSrc를 사용하거나 vtSrc가 설정된 SetString(lpszSrc, vtSrcVT_BSTRT) 함수를 사용하여 COleVariant 수행할 수 있습니다.

호출 Seek할 때 하나 이상의 키 값과 비교 연산자("", "<=", "<=", "=", ">=" 또는 ">")를 전달합니다. Seek는 지정된 키 필드를 검색하고 lpszComparisonpKey1지정된 조건을 충족하는 첫 번째 레코드를 찾습니다. 발견 Seek 되면 0이 아닌 값을 반환하고 해당 레코드를 현재 레코드로 만듭니다. Seek 일치 Seek 항목을 찾지 못하면 0을 반환하고 현재 레코드는 정의되지 않습니다. DAO를 직접 사용하는 경우 NoMatch 속성을 명시적으로 확인해야 합니다.

"=", ">=" 또는 ">" Seek 이면 lpszComparison 인덱스의 시작 부분에서 시작됩니다. lpszComparison이 "<" 또는 "<="인 Seek 경우 인덱스의 끝에서 시작하여 끝에 중복 인덱스 항목이 없는 한 뒤로 검색합니다. 이 경우 인 Seek 덱스 끝에 있는 중복 인덱스 항목 중 임의의 항목에서 시작합니다.

를 사용할 Seek때는 현재 레코드가 될 필요가 없습니다.

특정 조건을 충족하는 다이너셋 형식 또는 스냅샷 형식 레코드 집합에서 레코드를 찾으려면 찾기 작업을 사용합니다. 특정 조건을 충족하는 레코드뿐만 아니라 모든 레코드를 포함하려면 이동 작업을 사용하여 레코드에서 레코드로 이동합니다.

연결된 테이블을 다이나셋 형식 또는 스냅샷 형식 레코드 집합으로 열어야 하므로 연결된 테이블을 호출 Seek 할 수 없습니다. 그러나 설치 가능한 ISAM 데이터베이스를 직접 열도록 호출 CDaoDatabase::Open 하는 경우 성능이 느려질 수 있지만 해당 데이터베이스의 테이블을 호출 Seek 할 수 있습니다.

관련 정보는 DAO 도움말의 "Seek 메서드" 항목을 참조하세요.

CDaoRecordset::SetAbsolutePosition

레코드 집합 개체의 현재 레코드의 상대 레코드 번호를 설정합니다.

void SetAbsolutePosition(long lPosition);

매개 변수

lPosition
레코드 집합에서 현재 레코드의 서수 위치에 해당합니다.

설명

호출 SetAbsolutePosition 을 사용하면 다이나셋 형식 또는 스냅샷 형식 레코드 집합의 서수 위치에 따라 현재 레코드 포인터를 특정 레코드에 배치할 수 있습니다. GetAbsolutePosition을 호출하여 현재 레코드 번호를 확인할 수도 있습니다.

참고 항목

이 멤버 함수는 dynaset 형식 및 스냅샷 형식 레코드 집합에만 유효합니다.

기본 DAO 개체의 AbsolutePosition 속성 값은 0부터 시작합니다. 0의 설정은 레코드 집합의 첫 번째 레코드를 나타냅니다. 채워진 레코드 수보다 큰 값을 설정하면 MFC가 예외를 throw합니다. 멤버 함수를 호출 GetRecordCount 하여 레코드 집합에서 채워진 레코드 수를 확인할 수 있습니다.

현재 레코드가 삭제되면 AbsolutePosition 속성 값이 정의되지 않고 MFC가 참조되는 경우 예외를 throw합니다. 새 레코드가 시퀀스의 끝에 추가됩니다.

참고 항목

이 속성은 서로게이트 레코드 번호로 사용할 수 없습니다. 책갈피는 여전히 지정된 위치를 유지하고 반환하는 권장 방법이며 책갈피를 지원하는 모든 유형의 레코드 집합 개체에 현재 레코드를 배치하는 유일한 방법입니다. 특히 지정된 레코드의 위치는 이전 레코드가 삭제될 때 변경됩니다. ORDERBY 절을 사용하여 SQL 문으로 만들지 않는 한 레코드 집합 내의 개별 레코드 순서가 보장되지 않으므로 레코드 집합이 다시 만들어지면 지정된 레코드의 절대 위치가 동일하다는 보장도 없습니다.

관련 정보는 DAO 도움말의 "AbsolutePosition 속성" 항목을 참조하세요.

CDaoRecordset::SetBookmark

지정된 책갈피가 포함된 레코드에 레코드 집합을 배치하려면 이 멤버 함수를 호출합니다.

void SetBookmark(COleVariant varBookmark);

매개 변수

varBookmark
특정 레코드의 책갈피 값을 포함하는 COleVariant 개체입니다.

설명

레코드 집합 개체를 만들거나 열 때 각 레코드에는 이미 고유한 책갈피가 있습니다. 개체에 값을 호출 GetBookmark 하고 저장하여 현재 레코드의 책갈피를 COleVariant 검색할 수 있습니다. 나중에 저장된 책갈피 값을 사용하여 호출 SetBookmark 하여 해당 레코드로 돌아갈 수 있습니다.

참고 항목

Requery를 호출하는 경우 DAO 책갈피가 변경됩니다.

UNICODE 레코드 집합을 만들지 않는 경우 개체를 COleVariant 명시적으로 ANSI로 선언해야 합니다. 이 작업은 COleVariant::COleVariant(lpszSrc, vtSrc ) 형식의 생성자(ANSI)로 설정된 VT_BSTRT vtSrc를 사용하거나 vtSrc가 설정된 SetString(lpszSrc, vtSrcVT_BSTRT) 함수를 사용하여 COleVariant 수행할 수 있습니다.

관련 정보는 DAO 도움말의 "책갈피 속성" 및 책갈피 속성" 항목을 참조하세요.

CDaoRecordset::SetCacheSize

이 멤버 함수를 호출하여 캐시할 레코드 수를 설정합니다.

void SetCacheSize(long lSize);

매개 변수

lSize
레코드 수를 지정합니다. 일반적인 값은 100입니다. 0으로 설정하면 캐싱이 꺼집니다. 설정은 5~1,200개의 레코드여야 합니다. 캐시는 상당한 양의 메모리를 사용할 수 있습니다.

설명

캐시는 애플리케이션이 실행되는 동안 데이터가 다시 요청될 경우 서버에서 가장 최근에 검색된 데이터를 보유하는 로컬 메모리의 공간입니다. 데이터 캐싱은 dynaset 형식 레코드 집합 개체를 통해 원격 서버에서 데이터를 검색하는 애플리케이션의 성능을 향상시킵니다. 데이터가 요청되면 Microsoft Jet 데이터베이스 엔진은 서버에서 데이터를 검색하는 대신 먼저 요청된 데이터에 대한 캐시를 확인하므로 시간이 더 걸립니다. ODBC 데이터 원본에서 제공되지 않는 데이터는 캐시에 저장되지 않습니다.

연결된 테이블과 같은 모든 ODBC 데이터 원본에는 로컬 캐시가 있을 수 있습니다. 캐시를 만들려면 원격 데이터 원본에서 레코드 집합 개체를 열고, 해당 함수와 SetCacheStart 멤버 함수를 호출 SetCacheSize 한 다음, 이동 작업 중 하나를 사용하여 멤버 함수를 호출 FillCache 하거나 레코드를 단계별로 실행합니다. 멤버 함수의 SetCacheSize lSize 매개 변수는 애플리케이션이 한 번에 사용할 수 있는 레코드 수를 기반으로 할 수 있습니다. 예를 들어 화면에 표시할 데이터의 원본으로 레코드 집합을 사용하는 경우 lSize 매개 변수를 20으로 전달 SetCacheSize 하여 한 번에 20개의 레코드를 표시할 수 있습니다.

관련 정보는 DAO 도움말의 "CacheSize, CacheStart 속성" 항목을 참조하세요.

CDaoRecordset::SetCacheStart

이 멤버 함수를 호출하여 캐시할 레코드 집합의 첫 번째 레코드 책갈피를 지정합니다.

void SetCacheStart(COleVariant varBookmark);

매개 변수

varBookmark
캐시할 레코드 집합에서 첫 번째 레코드의 책갈피를 지정하는 COleVariant입니다.

설명

멤버 함수의 varBookmark 매개 변수에 대해 레코드의 SetCacheStart 책갈피 값을 사용할 수 있습니다. 현재 레코드로 캐시를 시작하려는 레코드를 만들고 SetBookmark를 사용하여 해당 레코드에 대한 책갈피를 설정하고 책갈피 값을 멤버 함수의 SetCacheStart 매개 변수로 전달합니다.

Microsoft Jet 데이터베이스 엔진은 캐시 범위 내의 레코드를 캐시에서 요청하고 서버에서 캐시 범위를 벗어난 레코드를 요청합니다.

캐시에서 검색된 레코드는 다른 사용자가 원본 데이터에 동시에 변경한 내용을 반영하지 않습니다.

캐시된 모든 데이터를 강제로 업데이트하려면 lSize 매개 변수를 SetCacheSize 0으로 전달하고 원래 요청한 캐시 크기로 다시 호출 SetCacheSize 한 다음 멤버 함수를 FillCache 호출합니다.

UNICODE 레코드 집합을 만들지 않는 경우 개체를 COleVariant 명시적으로 ANSI로 선언해야 합니다. 이 작업은 COleVariant::COleVariant(lpszSrc, vtSrc ) 형식의 생성자(ANSI)로 설정된 VT_BSTRT vtSrc를 사용하거나 vtSrc가 설정된 SetString(lpszSrc, vtSrcVT_BSTRT) 함수를 사용하여 COleVariant 수행할 수 있습니다.

관련 정보는 DAO 도움말의 CacheSize, CacheStart 속성 항목"을 참조하세요.

CDaoRecordset::SetCurrentIndex

이 멤버 함수를 호출하여 테이블 형식 레코드 집합에 인덱스 설정

void SetCurrentIndex(LPCTSTR lpszIndex);

매개 변수

lpszIndex
설정할 인덱스의 이름을 포함하는 포인터입니다.

설명

기본 테이블의 레코드는 특정 순서로 저장되지 않습니다. 인덱스 설정은 데이터베이스에서 반환되는 레코드의 순서를 변경하지만 레코드가 저장되는 순서에는 영향을 주지 않습니다. 지정된 인덱스가 이미 정의되어 있어야 합니다. 존재하지 않는 인덱스 개체를 사용하려고 하거나 Seek를 호출할 때 인덱스가 설정되지 않은 경우 MFC는 예외를 throw합니다.

CDaoTableDef::CreateIndex를 호출하고 CDaoTableDef::Append를 호출한 다음 레코드 집합을 다시 열어 기본 tabledef의 Indexes 컬렉션에 새 인덱스를 추가하여 테이블에 대한 새 인덱스를 만들 수 있습니다.

테이블 형식 레코드 집합에서 반환된 레코드는 기본 tabledef에 대해 정의된 인덱스에서만 정렬할 수 있습니다. 다른 순서로 레코드를 정렬하려면 CDaoRecordset::m_strSort 저장된 SQL ORDERBY 절을 사용하여 다이나셋 형식 또는 스냅샷 형식 레코드 집합을 열 수 있습니다.

관련 정보는 DAO 도움말의 "Index 개체" 항목 및 정의 "현재 인덱스"를 참조하세요.

CDaoRecordset::SetFieldDirty

이 멤버 함수를 호출하여 레코드 집합의 필드 데이터 멤버에 변경되거나 변경되지 않은 것으로 플래그를 지정합니다.

void SetFieldDirty(
    void* pv,
    BOOL bDirty = TRUE);

매개 변수

pv
레코드 집합 또는 NULL에 있는 필드 데이터 멤버의 주소를 포함합니다. NULL이면 레코드 집합의 모든 필드 데이터 멤버에 플래그가 지정됩니다. (C++ NULL은 데이터베이스 용어의 Null과 동일하지 않습니다. 이는 "값이 없음"을 의미합니다.)

bDirty
필드 데이터 멤버에 "더티"(변경됨)로 플래그를 지정하려면 TRUE입니다. 그렇지 않으면 필드 데이터 멤버에 "clean"(변경되지 않음)으로 플래그를 지정해야 하는 경우 FALSE입니다.

설명

필드를 변경되지 않은 것으로 표시하면 필드가 업데이트되지 않습니다.

프레임워크는 변경된 필드 데이터 멤버를 표시하여 DAO DFX(레코드 필드 교환) 메커니즘을 통해 데이터 원본의 레코드에 기록되도록 합니다. 필드 값을 변경하면 일반적으로 필드가 자동으로 더러워지므로 직접 호출 SetFieldDirty 할 필요가 거의 없지만 필드 데이터 멤버에 있는 값에 관계없이 열이 명시적으로 업데이트되거나 삽입되도록 할 수도 있습니다. DFX 메커니즘은 PSEUDONULL의 사용도 사용합니다. 자세한 내용은 CDaoFieldExchange::m_nOperation 참조하세요.

이중 버퍼링 메커니즘을 사용하지 않는 경우 필드 값을 변경해도 필드가 자동으로 더티로 설정되지 않습니다. 이 경우 필드를 더티로 명시적으로 설정해야 합니다. m_bCheckCacheForDirtyFields 포함된 플래그는 이 자동 필드 검사를 제어합니다.

참고 항목

Edit 또는 AddNew를 호출한 후에만 이 멤버 함수를 호출합니다.

함수의 첫 번째 인수에 NULL을 사용하면 함수가 매개 변수 필드CDaoFieldExchange가 아닌 모든 outputColumn 필드에 적용됩니다. 예를 들어 호출

SetFieldDirty(NULL);

은 필드만 outputColumn NULL 로 설정합니다.매개 변수 필드는 영향을 받지 않습니다.

매개 변수사용하려면 다음과 같이 작업하려는 개별 매개 변수의 실제 주소를 제공해야 합니다.

SetFieldDirty(&m_strParam);

즉, 필드와 outputColumn 마찬가지로 모든 매개 변수 필드를 NULL로 설정할 수 없습니다.

SetFieldDirty 는 .를 통해 DoFieldExchange구현됩니다.

CDaoRecordset::SetFieldNull

이 멤버 함수를 호출하여 레코드 집합의 필드 데이터 멤버를 Null(특히 값 없음) 또는 Null이 아닌 것으로 플래그를 지정합니다.

void SetFieldNull(
    void* pv,
    BOOL bNull = TRUE);

매개 변수

pv
레코드 집합 또는 NULL에 있는 필드 데이터 멤버의 주소를 포함합니다. NULL이면 레코드 집합의 모든 필드 데이터 멤버에 플래그가 지정됩니다. (C++ NULL은 데이터베이스 용어의 Null과 동일하지 않습니다. 이는 "값이 없음"을 의미합니다.)

bNull
필드 데이터 멤버에 값이 없는 것으로 플래그가 지정될 경우 0이 아닌 값(Null)입니다. 필드 데이터 멤버가 Null이 아닌 것으로 플래그를 지정해야 하는 경우 그렇지 않으면 0입니다.

설명

SetFieldNull 는 메커니즘에 바인딩된 DoFieldExchange 필드에 사용됩니다.

레코드 집합에 새 레코드를 추가하면 모든 필드 데이터 멤버가 처음에 Null 값으로 설정되고 "더티"(변경됨)로 플래그가 지정됩니다. 데이터 원본에서 레코드를 검색할 때 해당 열에 이미 값이 있거나 Null입니다. 필드 Null 을 만드는 것이 적절하지 않은 경우 CDaoException 이 throw됩니다.

예를 들어 이중 버퍼링 메커니즘을 사용하는 경우 현재 레코드의 필드를 값 SetFieldNull 이 없는 것으로 구체적으로 지정하려면 bNull을 TRUE로 설정하여 Null로 플래그를 지정합니다. 필드가 이전에 Null로 표시되어 있고 이제 값을 제공하려는 경우 새 값을 설정합니다. 을 사용하여 Null 플래그 SetFieldNull를 제거할 필요가 없습니다. 필드가 Null일 수 있는지 여부를 확인하려면 IsFieldNullable을 호출 합니다.

이중 버퍼링 메커니즘을 사용하지 않는 경우 필드 값을 변경해도 필드가 더티 및 비 Null로 자동으로 설정되지 않습니다. 더티 필드와 Null이 아닌 필드를 구체적으로 설정해야 합니다. m_bCheckCacheForDirtyFields 포함된 플래그는 이 자동 필드 검사를 제어합니다.

DFX 메커니즘은 PSEUDONULL을 사용합니다. 자세한 내용은 CDaoFieldExchange::m_nOperation 참조하세요.

참고 항목

Edit 또는 AddNew를 호출한 후에만 이 멤버 함수를 호출합니다.

함수의 첫 번째 인수에 NULL을 사용하면 함수가 필드의 매개 변수 필드CDaoFieldExchange가 아닌 필드에만 outputColumn 적용됩니다. 예를 들어 호출

SetFieldNull(NULL);

은 필드만 outputColumn NULL 로 설정합니다.매개 변수 필드는 영향을 받지 않습니다.

CDaoRecordset::SetFieldValue

서수 위치 또는 문자열 값을 변경하여 필드 값을 설정하려면 이 멤버 함수를 호출합니다.

virtual void SetFieldValue(
    LPCTSTR lpszName,
    const COleVariant& varValue);

virtual void SetFieldValue(
    int nIndex,
    const COleVariant& varValue);

void SetFieldValue(
    LPCTSTR lpszName,
    LPCTSTR lpszValue);

void SetFieldValue(
    int nIndex,
    LPCTSTR lpszValue);

매개 변수

lpszName
필드 이름을 포함하는 문자열에 대한 포인터입니다.

varValue
필드 내용의 값을 포함하는 COleVariant 개체에 대한 참조입니다.

nIndex
레코드 집합의 Fields 컬렉션에서 필드의 서수 위치를 나타내는 정수입니다(0부터 시작).

lpszValue
필드 내용의 값을 포함하는 문자열에 대한 포인터입니다.

설명

GetFieldValue사용하여 SetFieldValue DoFieldExchange 메커니즘을 사용하여 열을 정적으로 바인딩하는 대신 런타임에 필드를 동적으로 바인딩합니다.

UNICODE 레코드 집합을 만들지 않는 경우 매개 변수를 포함하지 COleVariant 않는 형식 SetFieldValue 을 사용하거나 개체를 COleVariant 명시적으로 ANSI로 선언해야 합니다. 이 작업은 COleVariant::COleVariant(lpszSrc, vtSrc ) 형식의 생성자(ANSI)로 설정된 VT_BSTRT vtSrc를 사용하거나 vtSrc가 설정된 SetString(lpszSrc, vtSrcVT_BSTRT) 함수를 사용하여 COleVariant 수행할 수 있습니다.

관련 정보는 DAO 도움말의 "필드 개체" 및 "값 속성" 항목을 참조하세요.

CDaoRecordset::SetFieldValueNull

이 멤버 함수를 호출하여 필드를 Null 값으로 설정합니다.

void SetFieldValueNull(int nIndex);
void SetFieldValueNull(LPCTSTR lpszName);

매개 변수

nIndex
0부터 시작하는 인덱스로 조회할 레코드 집합의 필드 인덱스입니다.

lpszName
이름별로 조회할 레코드 집합의 필드 이름입니다.

설명

C++ NULL은 Null과 동일하지 않습니다. 즉, 데이터베이스 용어에서 "값이 없음"을 의미합니다.

관련 정보는 DAO 도움말의 "필드 개체" 및 "값 속성" 항목을 참조하세요.

CDaoRecordset::SetLockingMode

이 멤버 함수를 호출하여 레코드 집합에 대한 잠금 유형을 설정합니다.

void SetLockingMode(BOOL bPessimistic);

매개 변수

bPessimistic
잠금 유형을 나타내는 플래그입니다.

설명

비관적 잠금이 적용되면 편집 중인 레코드가 포함된 2K 페이지는 멤버 함수를 호출 Edit 하는 즉시 잠깁니다. 이동 또는 찾기 작업이나 멤버 함수를 Close 호출 Update 할 때 페이지가 잠금 해제됩니다.

낙관적 잠금이 적용되면 레코드가 멤버 함수로 업데이트되는 동안에만 레코드가 포함된 2K 페이지가 Update 잠깁니다.

페이지가 잠겨 있으면 다른 사용자가 같은 페이지에서 레코드를 편집할 수 없습니다. 0이 아닌 값을 호출 SetLockingMode 하고 전달하는 경우 다른 사용자가 이미 페이지가 잠겨 있으면 호출 Edit할 때 예외가 throw됩니다. 다른 사용자는 잠긴 페이지에서 데이터를 읽을 수 있습니다.

다른 사용자가 페이지를 잠그는 동안 0 값으로 호출 SetLockingMode 하고 나중에 호출 Update 하면 예외가 발생합니다. 다른 사용자가 변경한 내용을 확인하고 변경 내용을 손실하려면 현재 레코드의 책갈피 값을 사용하여 멤버 함수를 호출 SetBookmark 합니다.

ODBC 데이터 원본을 사용하는 경우 잠금 모드는 항상 낙관적입니다.

CDaoRecordset::SetParamValue

이 멤버 함수를 호출하여 런타임에 레코드 집합의 매개 변수 값을 설정합니다.

virtual void SetParamValue(
    int nIndex,
    const COleVariant& varValue);

virtual void SetParamValue(
    LPCTSTR lpszName,
    const COleVariant& varValue);

매개 변수

nIndex
querydef의 Parameters 컬렉션에 있는 매개 변수의 숫자 위치입니다.

var
설정할 값입니다. 은 비고를 참조하세요.

lpszName
값을 설정할 매개 변수의 이름입니다.

설명

매개 변수는 레코드 집합의 SQL 문자열의 일부로 이미 설정되어 있어야 합니다. 이름 또는 컬렉션의 인덱스 위치로 매개 변수에 액세스할 수 있습니다.

개체로 COleVariant 설정할 값을 지정합니다. 개체에서 원하는 값 및 형식을 설정하는 방법에 대한 자세한 내용은 COleVariant 클래스를 참조하세요COleVariant. UNICODE 레코드 집합을 만들지 않는 경우 개체를 COleVariant 명시적으로 ANSI로 선언해야 합니다. 이 작업은 COleVariant::COleVariant(lpszSrc, vtSrc ) 형식의 생성자(ANSI)로 설정된 VT_BSTRT vtSrc를 사용하거나 vtSrc가 설정된 SetString(lpszSrc, vtSrcVT_BSTRT) 함수를 사용하여 COleVariant 수행할 수 있습니다.

CDaoRecordset::SetParamValueNull

이 멤버 함수를 호출하여 매개 변수를 Null 값으로 설정합니다.

void SetParamValueNull(int nIndex);
void SetParamValueNull(LPCTSTR lpszName);

매개 변수

nIndex
0부터 시작하는 인덱스로 조회할 레코드 집합의 필드 인덱스입니다.

lpszName
이름별로 조회할 레코드 집합의 필드 이름입니다.

설명

C++ NULL은 Null과 동일하지 않습니다. 즉, 데이터베이스 용어에서 "값이 없음"을 의미합니다.

CDaoRecordset::SetPercentPosition

이 멤버 함수를 호출하여 레코드 집합의 레코드 비율에 따라 레코드 집합 개체의 현재 레코드의 대략적인 위치를 변경하는 값을 설정합니다.

void SetPercentPosition(float fPosition);

매개 변수

fPosition
0부터 100까지의 숫자입니다.

설명

dynaset 형식 또는 스냅샷 형식 레코드 집합으로 작업하는 경우 먼저 호출 SetPercentPosition하기 전에 마지막 레코드로 이동하여 레코드 집합을 채웁니다. 레코드 집합을 완전히 채우기 전에 호출 SetPercentPosition 하는 경우 이동 크기는 GetRecordCount 값으로 표시된 대로 액세스하는 레코드 수를 기준으로 합니다. 를 호출 MoveLast하여 마지막 레코드로 이동할 수 있습니다.

호출 SetPercentPosition하면 해당 값에 해당하는 대략적인 위치에 있는 레코드가 현재 상태가 됩니다.

참고 항목

현재 레코드를 레코드 집합의 특정 레코드로 이동하는 호출 SetPercentPosition 은 권장되지 않습니다. 대신 SetBookmark 멤버 함수를 호출합니다.

관련 정보는 DAO 도움말의 "PercentPosition 속성" 항목을 참조하세요.

CDaoRecordset::Update

또는 Edit 멤버 함수를 호출한 후 이 멤버 함수를 AddNew 호출합니다.

virtual void Update();

설명

이 호출은 또는 Edit 작업을 완료 AddNew 하는 데 필요합니다.

둘 다 AddNew 데이터 Edit 원본에 저장하기 위해 추가되거나 편집된 데이터가 배치되는 편집 버퍼를 준비합니다. Update 는 데이터를 저장합니다. 변경된 것으로 표시되거나 검색된 필드만 업데이트됩니다.

데이터 원본이 트랜잭션을 지원하는 경우 트랜잭션의 일부(및 해당 AddNew Edit 또는 호출)를 호출할 수 있습니다Update.

주의

먼저 호출하거나 호출하지 않고 호출 Update Update AddNew EditCDaoException하면 . 호출 AddNew 하거나 EditMoveNext를 호출하기 전에 호출 Update 하거나 레코드 집합 또는 데이터 원본 연결을 닫아야 합니다. 그렇지 않으면 알림 없이 변경 내용이 손실됩니다.

레코드 집합 개체가 다중 사용자 환경에서 비관적으로 잠겨 있는 경우 레코드는 업데이트가 완료될 때까지 사용되는 시간 Edit 에서 잠긴 상태로 유지됩니다. 레코드 집합이 낙관적으로 잠겨 있으면 레코드가 잠겨 있고 데이터베이스에서 업데이트되기 직전에 미리 편집된 레코드와 비교됩니다. 호출 EditUpdate 한 이후 레코드가 변경되면 작업이 실패하고 MFC가 예외를 throw합니다. 로 잠금 모드 SetLockingMode를 변경할 수 있습니다.

참고 항목

낙관적 잠금은 ODBC 및 설치 가능한 ISAM과 같은 외부 데이터베이스 형식에서 항상 사용됩니다.

관련 정보는 DAO 도움말의 "AddNew 메서드", "CancelUpdate 메서드", "Delete 메서드", "LastModified 속성", "Update 메서드" 및 "EditMode 속성" 항목을 참조하세요.

참고 항목

CObject 클래스
계층 구조 차트
CDaoTableDef 클래스
CDaoWorkspace 클래스
CDaoDatabase 클래스
CDaoQueryDef 클래스