영어로 읽기

다음을 통해 공유


CRecordView 클래스

컨트롤에 데이터베이스 레코드를 표시하는 뷰입니다.

구문

class AFX_NOVTABLE CRecordView : public CFormView

멤버

보호된 생성자

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

공용 메서드

이름 설명
CRecordView::IsOnFirstRecord 현재 레코드가 연결된 레코드 집합의 첫 번째 레코드인 경우 0이 아닌 레코드를 반환합니다.
CRecordView::IsOnLastRecord 현재 레코드가 연결된 레코드 집합의 마지막 레코드이면 0이 아닌 값을 반환합니다.
CRecordView::OnGetRecordset 에서 파생된 클래스의 개체에 대한 포인터를 CRecordset반환합니다. ClassWizard는 이 함수를 재정의하고 필요한 경우 레코드 집합을 만듭니다.
CRecordView::OnMove

보호된 메서드

속성 설명
CRecordView::OnMove 현재 레코드가 변경된 경우 데이터 원본에서 업데이트한 다음 지정된 레코드(다음, 이전, 첫 번째 또는 마지막)로 이동합니다.

설명

보기는 개체에 직접 연결된 양식 보기입니다 CRecordset . 보기는 대화 상자 템플릿 리소스에서 만들어지고 대화 상자 템플릿의 CRecordset 컨트롤에 개체의 필드를 표시합니다. 이 개체는 CRecordView DDX(대화 상자 데이터 교환)와 RFX(레코드 필드 교환)를 사용하여 폼의 컨트롤과 레코드 집합의 필드 간에 데이터 이동을 자동화합니다. CRecordView 또한 첫 번째, 다음, 이전 또는 마지막 레코드로 이동하기 위한 기본 구현과 현재 보기에 있는 레코드를 업데이트하기 위한 인터페이스를 제공합니다.

참고

ODBC(Open Database Connectivity) 클래스가 아닌 DAO(Data Access Objects) 클래스를 사용하는 경우 CDaoRecordView 클래스를 대신 사용합니다. 자세한 내용은 개요: 데이터베이스 프로그래밍 문서를 참조하세요.

레코드 보기를 만드는 가장 일반적인 방법은 애플리케이션 마법사를 사용하는 것입니다. 애플리케이션 마법사는 기본 시작 애플리케이션의 일부로 레코드 뷰 클래스와 연결된 레코드 집합 클래스를 모두 만듭니다. 애플리케이션 마법사를 사용하여 레코드 뷰 클래스를 만들지 않으면 나중에 ClassWizard를 사용하여 만들 수 있습니다. 단일 양식만 필요한 경우 애플리케이션 마법사 접근 방식이 더 쉽습니다. ClassWizard를 사용하면 나중에 개발 프로세스에서 레코드 보기를 사용하도록 결정할 수 있습니다. ClassWizard를 사용하여 레코드 뷰와 레코드 집합을 별도로 만든 다음 연결하면 레코드 집합 클래스와 레코드 집합의 이름을 보다 효율적으로 제어할 수 있으므로 가장 유연한 방법입니다. H/. CPP 파일. 이 방법을 사용하면 동일한 레코드 집합 클래스에 여러 레코드 뷰를 사용할 수도 있습니다.

최종 사용자가 레코드 보기에서 레코드로 쉽게 이동할 수 있도록 애플리케이션 마법사는 첫 번째, 다음, 이전 또는 마지막 레코드로 이동하기 위한 메뉴(및 선택적으로 도구 모음) 리소스를 만듭니다. ClassWizard를 사용하여 레코드 뷰 클래스를 만드는 경우 메뉴 및 비트맵 편집기를 사용하여 이러한 리소스를 직접 만들어야 합니다.

레코드에서 레코드로 이동하기 위한 기본 구현에 대한 자세한 내용은 레코드 뷰 사용 및 IsOnLastRecord 문서를 참조 IsOnFirstRecord 하세요.

CRecordView 는 레코드 보기에서 사용자 인터페이스를 업데이트할 수 있도록 레코드 집합에서 사용자의 위치를 추적합니다. 사용자가 레코드 집합의 양쪽 끝으로 이동하면 레코드 보기에서 메뉴 항목 또는 도구 모음 단추와 같은 사용자 인터페이스 개체를 사용하지 않도록 설정하여 동일한 방향으로 더 멀리 이동할 수 없습니다.

레코드 뷰 및 레코드 집합 클래스를 선언하고 사용하는 방법에 대한 자세한 내용은 레코드 뷰 문서의 "레코드 뷰 디자인 및 만들기"를 참조하세요. 레코드 뷰의 작동 방식 및 사용 방법에 대한 자세한 내용은 레코드 뷰 사용 문서를 참조하세요.

상속 계층 구조

CObject

CCmdTarget

CWnd

CView

CScrollView

CFormView

CRecordView

요구 사항

헤더: afxdb.h

CRecordView::CRecordView

파생된 CRecordView형식의 개체를 만들 때는 생성자의 폼 중 하나를 호출하여 뷰 개체를 초기화하고 뷰의 기반이 되는 대화 상자 리소스를 식별합니다.

explicit CRecordView(LPCTSTR lpszTemplateName);
explicit CRecordView(UINT nIDTemplate);

매개 변수

lpszTemplateName
대화 상자 템플릿 리소스의 이름인 null로 끝나는 문자열을 포함합니다.

nIDTemplate
대화 상자 템플릿 리소스의 ID 번호를 포함합니다.

설명

리소스를 이름으로 식별하거나(문자열을 생성자에 인수로 전달) 또는 ID로 식별할 수 있습니다(부호 없는 정수를 인수로 전달). 리소스 ID를 사용하는 것이 좋습니다.

참고

파생 클래스 는 자체 생성자를 제공해야 합니다 . 파생 클래스의 생성자에서 아래 예제와 같이 리소스 이름 또는 ID를 사용하여 생성자를 CRecordView::CRecordView 인수로 호출합니다.

CRecordView::OnInitialUpdate를 호출UpdateDataDoDataExchange합니다. 이 초기 호출은 DoDataExchange CRecordView ClassWizard에서 만든 필드 데이터 멤버에 CRecordset 컨트롤을 간접적으로 연결합니다. 이러한 데이터 멤버는 기본 클래스 CFormView::OnInitialUpdate 멤버 함수를 호출할 때까지 사용할 수 없습니다.

참고

ClassWizard를 사용하는 경우 마법사는 값을 CRecordView::IDD정의 enum 하고, 클래스 선언에 지정하고, 생성자의 멤버 초기화 목록에서 사용합니다.

예시

CMyRecordView::CMyRecordView()
   : CRecordView(CMyRecordView::IDD)
{
   m_pSet = NULL;
   // TODO: add construction code here

}

CRecordView::IsOnFirstRecord

이 멤버 함수를 호출하여 현재 레코드가 이 레코드 뷰와 연결된 레코드 집합 개체의 첫 번째 레코드인지 여부를 확인합니다.

BOOL IsOnFirstRecord();

Return Value

현재 레코드가 레코드 집합의 첫 번째 레코드인 경우 0이 아닌 경우 그렇지 않으면 0입니다.

설명

이 함수는 ClassWizard에서 작성한 기본 명령 업데이트 처리기의 고유한 구현을 작성하는 데 유용합니다.

사용자가 첫 번째 레코드로 이동하는 경우 프레임워크는 첫 번째 또는 이전 레코드로 이동하기 위해 가지고 있는 모든 사용자 인터페이스 개체를 사용하지 않도록 설정합니다.

CRecordView::IsOnLastRecord

이 멤버 함수를 호출하여 현재 레코드가 이 레코드 뷰와 연결된 레코드 집합 개체의 마지막 레코드인지 여부를 확인합니다.

BOOL IsOnLastRecord();

Return Value

현재 레코드가 레코드 집합의 마지막 레코드이면 0이 아닌 경우 그렇지 않으면 0입니다.

설명

이 함수는 ClassWizard가 레코드에서 레코드로 이동하기 위한 사용자 인터페이스를 지원하기 위해 작성하는 기본 명령 업데이트 처리기의 고유한 구현을 작성하는 데 유용합니다.

주의

이 함수의 결과는 뷰가 사용자가 레코드 집합을 지나갈 때까지 레코드 집합의 끝을 검색할 수 없다는 점을 제외하고 안정적입니다. 레코드 뷰가 다음 또는 마지막 레코드로 이동하기 위해 사용자 인터페이스 개체를 사용하지 않도록 설정해야 함을 알리기 전에 사용자는 마지막 레코드를 넘어야 합니다. 사용자가 마지막 레코드를 지나서 마지막 레코드(또는 이전)로 다시 이동하는 경우 레코드 보기는 레코드 집합에서 사용자의 위치를 추적하고 사용자 인터페이스 개체를 올바르게 사용하지 않도록 설정할 수 있습니다. IsOnLastRecord 은 ID_RECORD_LAST 명령을 처리하는 구현 함수 OnRecordLast를 호출한 CRecordset::MoveLast후 신뢰할 수 없는 경우도 있습니다.

CRecordView::OnGetRecordset

레코드 뷰와 연결된 파생 개체에 대한 포인터 CRecordset를 반환합니다.

virtual CRecordset* OnGetRecordset() = 0;

Return Value

개체를 CRecordset성공적으로 만든 경우 파생 개체에 대한 포인터입니다. 그렇지 않으면 NULL 포인터입니다.

설명

레코드 집합 개체를 생성하거나 가져오고 포인터를 반환하려면 이 멤버 함수를 재정의해야 합니다. ClassWizard를 사용하여 레코드 뷰 클래스를 선언하면 마법사에서 기본 재정의를 작성합니다. ClassWizard의 기본 구현은 레코드 뷰에 저장된 레코드 집합 포인터(있는 경우)를 반환합니다. 그렇지 않은 경우 ClassWizard로 지정한 형식의 레코드 집합 개체를 생성하고 해당 멤버 함수를 Open 호출하여 테이블을 열거나 쿼리를 실행한 다음 개체에 대한 포인터를 반환합니다.

자세한 내용 및 예제는 레코드 뷰: 레코드 뷰 사용 문서를 참조하세요.

CRecordView::OnMove

이 멤버 함수를 호출하여 레코드 집합의 다른 레코드로 이동하고 레코드 뷰의 컨트롤에 해당 필드를 표시합니다.

virtual BOOL OnMove(UINT nIDMoveCommand);

매개 변수

nIDMoveCommand
다음 표준 명령 ID 값 중 하나입니다.

  • ID_RECORD_FIRST 레코드 집합의 첫 번째 레코드로 이동합니다.

  • ID_RECORD_LAST 레코드 집합의 마지막 레코드로 이동합니다.

  • ID_RECORD_NEXT 레코드 집합의 다음 레코드로 이동합니다.

  • ID_RECORD_PREV 레코드 집합의 이전 레코드로 이동합니다.

Return Value

이동에 성공하면 0이 아닌 경우 이동 요청이 거부된 경우 그렇지 않으면 0입니다.

설명

기본 구현은 레코드 뷰와 연결된 개체의 CRecordset 적절한 Move 멤버 함수를 호출합니다.

기본적으로 OnMove 사용자가 레코드 보기에서 변경한 경우 데이터 원본의 현재 레코드를 업데이트합니다.

애플리케이션 마법사는 첫 번째 레코드, 마지막 레코드, 다음 레코드 및 이전 레코드 메뉴 항목을 사용하여 메뉴 리소스를 만듭니다. 도킹 가능한 도구 모음 옵션을 선택하면 애플리케이션 마법사는 이러한 명령에 해당하는 단추가 있는 도구 모음도 만듭니다.

레코드 집합의 마지막 레코드를 지나면 레코드 보기가 마지막 레코드를 계속 표시합니다. 첫 번째 레코드를 뒤로 이동하면 레코드 뷰에 첫 번째 레코드가 계속 표시됩니다.

주의

레코드 집합에 레코드가 없는 경우 호출 OnMove 은 예외를 throw합니다. 해당 이동 작업 전에 적절한 사용자 인터페이스 업데이트 처리기 함수OnUpdateRecordFirstOnUpdateRecordLastOnUpdateRecordNextOnUpdateRecordPrev 호출하여 레코드 집합에 레코드가 있는지 여부를 확인합니다.

참고 항목

CFormView 클래스
계층 구조 차트
CRecordset 클래스
CFormView 클래스