CDaoRecordset::Open

 

게시: 2016년 4월

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

구문

      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
    다음 중 하나를 포함 하는 문자열 포인터.

    • A NULL 포인터.

    • 하나 이상의 테이블 정의 및 쿼리 정의 (쉼표로 구분 된) 이름입니다.

    • SQL는 선택 문 (옵션으로 SQL 또는 순서BY 절).

    • 통과 쿼리 합니다.

  • nOptions
    중 하나를 아래 나열 된 옵션입니다. 기본값은 0입니다. 다음과 같은 값을 사용할 수 있습니다.

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

    • dbForwardOnly 스크롤 스냅샷 앞 으로만 이동 가능한 레코드 집합입니다.

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

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

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

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

    • dbInconsistent (다이너셋 형식 레코드 집합에만 해당) 일관성 없는 업데이트를 허용 합니다.

    • dbConsistent 만 일관 되 게 업데이트 (다이너셋 형식 레코드 집합에만 해당) 허용 됩니다.

    참고

    상수 dbConsistentdbInconsistent 상호 배타적입니다.하나를 사용 하거나 다른 있지만의 지정 된 인스턴스에서 두 열려.

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

  • pQueryDef
    에 대 한 포인터는 CDaoQueryDef 개체입니다. 이 버전은 다이너셋 형식 및 스냅숏 형식 레코드 집합에 대해서만 유효합니다. 이 옵션을 사용 하는 경우는 CDaoDatabase 포인터를 만드는 데 사용 되는 CDaoRecordset 사용 되지 않습니다. 대신 쿼리 정의에 있는 데이터베이스를 사용 합니다.

설명

호출 하기 전에 열려, 레코드 집합 개체를 생성 해야 합니다. 다음과 같은 여러 가지 방법으로 이 작업을 수행할 수 있습니다.

  • 레코드 집합 개체를 생성 하는 경우에 대 한 포인터를 전달 된 CDaoDatabase 이미 열려 있는 개체입니다.

  • 레코드 집합 개체를 생성 하는 경우에 대 한 포인터를 전달 된 CDaoDatabase 열려 있는 개체입니다. 레코드 집합을 여는 CDaoDatabase 개체를 있지만 recordset 개체를 닫으면 종료 됩니다.

  • Recordset 개체를 생성할 때 전달 된 NULL 포인터. 레코드 집합 개체 호출 GetDefaultDBName Microsoft Access의 이름을 가져옵니다.MDB 파일을 엽니다. 다음 레코드 집합을 여는 CDaoDatabase 개체 및 레코드 집합이 열려 있을 때 열 유지 합니다. 호출 하면 닫기 는 레코드 집합에 있는 CDaoDatabase 개체도 닫힙니다.

    참고

    레코드 집합을 열 때의 CDaoDatabase 개체, 비독점적 권한으로 데이터 원본을 엽니다.

버전에 대 한 사용 하 여 lpszSQL 매개 변수를 레코드 집합 열기 후 일부의 레코드를 검색할 수 있습니다. 첫 번째 옵션 DFX 함수를 갖고 있는 것을 DoFieldExchange. 호출 하 여 동적 바인딩을 사용 하는 것이 두 번째 옵션은 GetFieldValue 멤버 함수입니다. 이러한 옵션은 개별적으로 또는 조합 하 여 구현할 수 있습니다. 결합 하는 경우 SQL 문에서 자신에 대 한 호출을 전달 해야 합니다 열려.

두 번째 버전을 사용 열기 전달 위치에 CDaoTableDef 개체에서 결과 열을 통해 바인딩할 사용할 수 DoFieldExchange 및 DFX 메커니즘 있으며 바인딩을 통해 동적으로 GetFieldValue.

참고

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

세 번째 버전을 사용 열려 전달 위치에 CDaoQueryDef 개체를 쿼리 수 실행 및 결과 열을 통해 바인딩할 수 있습니다 DoFieldExchange 및 DFX 메커니즘 있으며 바인딩을 통해 동적으로 GetFieldValue.

참고

만 호출할 수 있습니다 열려 를 사용 하는 CDaoQueryDef 다이너셋 형식 및 스냅숏 형식 레코드 집합에 대 한 개체.

첫 번째 버전에 대 한 열려 사용 하는 lpszSQL 매개 변수를 레코드는 다음 표에 표시 된 선택된 기준에.

lpszSQL 매개 변수 값

레코드 선택에 의해 결정 됩니다.

예제

NULL

반환 문자열 GetDefaultSQL.

 

하나 이상의 테이블 정의 및 쿼리 정의 이름을 쉼표로 구분 된 목록.

모든 열에 표시 되는 DoFieldExchange.

"Customer"

선택 열 목록 FROM 테이블 목록

지정 된 열에서 지정 된 tabledef(s) 및 querydef(s).

"SELECT CustId, CustName

FROM Customer"

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

어떤 전달, 열려 쿼리의 최종 SQL 문자열을 만듭니다 (문자열 SQL 있을 수 있습니다 위치순서BY 절을 추가 하는 lpszSQL 문자열을 전달 하면) 다음 쿼리를 실행 하 고. 호출 하 여 생성 된 문자열을 검사할 수 있습니다 GetSQL 호출 열려.

레코드 집합 클래스의 필드 데이터 멤버를 선택 하는 데이터의 열에 바인딩됩니다. 모든 레코드를 반환 하는 경우 첫 번째 레코드가 현재 레코드가 됩니다.

레코드 집합을 필터링 하거나, 정렬 등의 옵션을 설정 하려면 설정 m_strSort 또는 m_strFilter 를 호출 하기 전에 있지만 레코드 집합 개체를 생성 한 후 열려. 원하면 후 레코드 집합에 레코드를 새로 고치려면 레코드 집합이 이미 열려, 호출 Requery.

호출 하는 경우 열려 다이너셋 형식 또는 스냅숏 형식 recordset에서 또는 SQL 문 또는 연결된 된 테이블을 나타내는 tabledef에 데이터 소스를 참조 하는 경우 사용할 수 없습니다 dbOpenTable 의 형식 인수입니다. 이렇게 하면 MFC 예외를 throw 합니다. 만들 tabledef 개체는 연결 된 테이블을 나타내는지 여부를 확인 하는 CDaoTableDef 호출 및 개체의 GetConnect 멤버 함수.

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

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

앞 으로만 스크롤 옵션을 사용 (dbForwardOnly) 열 ODBC 데이터 원본에서 응용 프로그램을 레코드 집합에 한 번 통과 하면 성능을 향상 시킬 수 있습니다.

관련된 정보를 보려면 DAO 도움말의 "OpenRecordset 메서드" 항목을 참조 하십시오.

요구 사항

헤더: afxdao.h

참고 항목

CDaoRecordset Class
계층 구조 차트
CDaoRecordset::Close
CDaoRecordset::CDaoRecordset