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
. GetFieldValue 및 SetFieldValue를 사용하는 DFX 메커니즘을 사용하지 않고 데이터베이스에서 열의 동적 바인딩을 구현할 수도 있습니다.
관련 정보는 DAO 도움말의 "Recordset 개체" 항목을 참조하세요.
상속 계층 구조
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
호출하고 호출 Update
CancelUpdate
하지 않은 경우 변경한 후 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을 전달하면 레코드 집합 클래스CDaoRecordset
를 CDaoDatabase
파생한 경우 지정한 데이터 원본 정보를 사용하여 개체가 생성되고 연결됩니다.
설명
직접 사용 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
하기 전에 새 레코드로 스크롤하지 않으면 CDaoException을 throw합니다.
트랜잭션을 사용하고 CDaoWorkspace::Rollback 멤버 함수를 호출하는 경우 레코드를 삭제 취소할 수 있습니다. 기본 테이블이 연계 삭제 관계의 기본 테이블인 경우 현재 레코드를 삭제하면 외세의 테이블에 있는 하나 이상의 레코드도 삭제할 수 있습니다. 자세한 내용은 DAO 도움말의 "cascade delete" 정의를 참조하세요.
와 Edit
달리 AddNew
호출 뒤에는 호출 Delete
이 Update
수행되지 않습니다.
관련 정보는 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
에서 잠긴 상태로 유지됩니다. 레코드 집합이 낙관적으로 잠겨 있으면 레코드가 잠겨 있고 데이터베이스에서 업데이트되기 직전에 미리 편집된 레코드와 비교됩니다. 호출 Edit
Update
한 이후 레코드가 변경되면 작업이 실패하고 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
는 가상 함수이므로 재정의하고 고유한 구현을 추가할 수 있습니다. , FindLast
및 FindPrev
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을 반환합니다.
첫 번째 레코드가 현재 레코드이고 호출 MovePrev
IsBOF
하는 경우 이후 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을 반환합니다.
호출 MoveNext
IsEOF
할 때 마지막 레코드가 현재 레코드인 경우 이후 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
.를 호출합니다IsEOF
Requery
.
참고 항목
레코드 집합 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
.를 호출합니다IsEOF
Requery
.
참고 항목
현재 레코드가 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
.를 호출합니다IsEOF
Requery
.
참고 항목
현재 레코드가 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
.를 호출합니다IsEOF
Requery
.
참고 항목
현재 레코드가 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
.를 호출합니다IsEOF
Requery
.
참고 항목
현재 레코드가 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 WHERE 및 ORDERBY 절이 추가될 수 있음) 쿼리를 실행합니다. 호출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
는 지정된 키 필드를 검색하고 lpszComparison 및 pKey1로 지정된 조건을 충족하는 첫 번째 레코드를 찾습니다. 발견 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 포함된 플래그는 이 자동 필드 검사를 제어합니다.
함수의 첫 번째 인수에 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 참조하세요.
함수의 첫 번째 인수에 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
Edit
CDaoException
하면 . 호출 AddNew
하거나 Edit
MoveNext를 호출하기 전에 호출 Update
하거나 레코드 집합 또는 데이터 원본 연결을 닫아야 합니다. 그렇지 않으면 알림 없이 변경 내용이 손실됩니다.
레코드 집합 개체가 다중 사용자 환경에서 비관적으로 잠겨 있는 경우 레코드는 업데이트가 완료될 때까지 사용되는 시간 Edit
에서 잠긴 상태로 유지됩니다. 레코드 집합이 낙관적으로 잠겨 있으면 레코드가 잠겨 있고 데이터베이스에서 업데이트되기 직전에 미리 편집된 레코드와 비교됩니다. 호출 Edit
Update
한 이후 레코드가 변경되면 작업이 실패하고 MFC가 예외를 throw합니다. 로 잠금 모드 SetLockingMode
를 변경할 수 있습니다.
참고 항목
낙관적 잠금은 ODBC 및 설치 가능한 ISAM과 같은 외부 데이터베이스 형식에서 항상 사용됩니다.
관련 정보는 DAO 도움말의 "AddNew 메서드", "CancelUpdate 메서드", "Delete 메서드", "LastModified 속성", "Update 메서드" 및 "EditMode 속성" 항목을 참조하세요.
참고 항목
CObject 클래스
계층 구조 차트
CDaoTableDef 클래스
CDaoWorkspace 클래스
CDaoDatabase 클래스
CDaoQueryDef 클래스