Northwind Developer Edition의 직원에 대해 알아보려면 아래 항목을 선택합니다.
직원에게는 목록 및 세부 정보 양식으로 작동하는 하나의 분할 양식이 있습니다.
직원을 사용하여 새 직원을 추가하고 기존 직원에 대한 정보를 업데이트합니다.
리본에서 직원 탭을 선택하여 직원 목록 양식 frmEmployeeList에 직원을 표시합니다. 이 형식은 다음과 같은 기능이 있는 분할 양식입니다.
-
양식의 맨 위 부분은 한 직원의 단일 보기입니다.
-
양식의 아래쪽 부분은 모든 직원의 데이터시트 보기입니다.
-
어느 부분에서든 직원을 선택하면 분할 양식의 다른 부분에 있는 해당 직원에게 포커스가 설정됩니다.
-
분할 양식의 어느 부분에서든 Employees를 추가, 편집 또는 삭제할 수 있습니다.
-
데이터시트 보기 파트와 함께 분할 폼을 사용하면 폼의 레코드 원본에 여러 레코드가 있다고 가정합니다.
분할 양식의 잠재적 성능 영향
대부분의 개발자는 필터링되지 않은 테이블이나 쿼리를 폼의 레코드 원본으로 로드 하지 않는 것을 선호합니다. 폼을 단일 레코드로 필터링하면 테이블에서 폼으로 전송할 데이터의 양이 최소화됩니다. 로컬 Access 테이블을 사용하면 필터링된 레코드 원본을 로드하는 것과 필터링되지 않은 작은 레코드 원본의 차이는 거의 눈에 띄지 않을 수 있습니다. 그러나 Access 테이블이 SQL Server 같은 원격 서버 기반 데이터베이스로 대체되면 이 성능이 손실됩니다.
Northwind의 직원 테이블은 크게 증가해서는 안 되므로 필터링되지 않은 레코드 원본의 후보입니다. 그러나 수천 개의 레코드로 증가할 수 있는 주문 세부 정보와 같은 다른 테이블에 바인딩된 양식은 필터링되지 않은 레코드 원본의 후보가 아닙니다.
직원 편집
분할 양식에서 레코드를 추가하거나 편집할 때 사용자는 폼 보기 또는 데이터시트 보기에 값을 입력할 수 있습니다. 일부 필드는 필수 필드이고 일부는 선택 사항입니다. 양식은 필수 필드에 값이 있는지 확인합니다. 아래 필수 필드 유효성 검사를 참조하세요.
조회 테이블, 값 목록 및 드롭다운 컨트롤
-
타이틀 드롭다운은 항목을 미리 선택된 타이틀 목록으로 제한합니다. 타이틀은 Titles라는 조회 테이블에 있습니다.
-
일부 예상 선택 항목은 이미 조회 테이블에 저장되어 있지만 사용자는 콤보박스 또는 드롭다운 컨트롤에 대한 기본 액세스 동작을 사용하여 조회 테이블에 새 타이틀을 추가할 수 있습니다.
-
제목 콤보 상자의 List 제한 속성은 예로 설정되고 Titles의 편집 양식은 목록 항목 편집 양식 속성에서 식별됩니다. 양식의 드롭다운을 선택하면 아래쪽 가장자리에 편집 아이콘이 표시됩니다.
-
편집 아이콘을 클릭하면 타이틀 편집 양식 인 frmEmployeeTitles가 열립니다. 그러면 승인된 타이틀 목록을 변경하거나 추가할 수 있습니다.
참고:대부분의 프로덕션 환경에서는 타이틀 편집 또는 추가가 향상된 권한을 가진 사용자로 제한됩니다.
조회 필드 Self-Referential
직원 함수는 Self-Referential ID 필드의 개념을 보여 줍니다. 직원의 감독자 지정을 지원하기 위해 테이블에는 다른 직원에 대한 EmployeeID 가 있는 SupervisorID필드가 있습니다. 감독자를 지정하기 위해 다른 직원의 EmployeeID 가 이 필드에 입력됩니다. 액세스는 이 관계에 대한 참조 무결성을 적용합니다.
SupervisorID는 직원 양식에서 드롭다운 또는 콤보 상자로 구현됩니다. rowsource는 Employee 테이블에서 필터링된 레코드 집합입니다. 자체 참조이므로 쿼리는 선택한 직원의 EmployeeID를 제외해야 합니다. 예를 들어 Employee Karen Finster의 SupervisorID 행 원본에는 Karen의 EmployeeID가 포함되지 않습니다. 그녀는 자신의 감독자가 될 수 없습니다.
첨부 파일 필드 및 컨트롤
직원 사진은 테이블의 첨부 파일 필드에 저장됩니다. 첨부 파일 필드에 대한 기본 액세스 동작을 사용하여 새 이미지를 추가하거나 기존 이미지를 변경합니다.
참고: Access의 기능을 설명하기 위해 Employee 테이블에 첨부 파일 필드를 포함했습니다. 포함된 이미지는 accdbs 의 크기를 증가하므로 모범 사례로 간주되지 않습니다. 프로덕션 애플리케이션에서 구현하기 전에 환경을 신중하게 평가합니다. 기본 설정 대안은 모든 이미지를 저장하는 네트워크 폴더와 첨부 파일 필드가 아닌 이미지 경로가 포함된 테이블의 텍스트 필드에 있는 링크입니다.
관련 정보가 있는 하위 폼
직원 양식의 오른쪽에 있는 주문 하위 폼은 직원이 처리한 최근 주문(있는 경우)을 표시합니다. 하위 폼은 데이터시트 보기에서 가장 오래된 순서로 정렬된 순서를 나열합니다. 해당 직원의 기존 주문을 편집하려면 Orders 하위 폼에서 하이퍼링크된 주문 ID #을 클릭합니다.
직원 양식의 레코드 원본
qryEmployees라는 쿼리는 형식의 레코드를 반환합니다. 일반적으로 테이블이 아닌 쿼리를 사용하는 것이 모범 사례로 간주됩니다. 쿼리는 한 테이블에서만 레코드를 반환합니다. 또한 반환된 레코드 수를 제한하기 위해 쿼리를 매개 변수화할 수 있습니다.
-
이 쿼리의 Select 절은 와일드카드 '*'를 사용하여 Employee 테이블의 모든 필드를 반환합니다.
-
쿼리에서 계산된 두 필드는 FirstName LastName 및 LastName, FirstName을 반환합니다.
컨트롤의 계산 값
참고: 계산된 필드는 테이블에 저장 되지 않습니다 . 그러나 폼의 레코드 원본에서 사용할 수 있습니다.
Employee 양식의 대부분의 컨트롤은 사용 이므로 마우스 또는 탭을 사용하여 선택할 수 있으며 편집할 수 있도록 잠겨 있지 않습니다 .
기본 제공 액세스 동작 외에도 양식의 VBA 하위 및 함수, 양식에 대한 컨트롤 및 독립 실행형 모듈에서는 직원에게 필요한 기본 논리를 수행합니다. 다음 섹션에서는 함수 및 해당 함수를 구현하는 코드에 대해 설명합니다.
기본 제공 제어 작업
폼의 레코드 선택기 기본 동작:
-
폼 의 왼쪽에 있는 레코드 선택기를 단일 보기로 클릭하면 편집 내용이 있는 현재 레코드가 저장됩니다. 레코드 선택기를 마우스 왼쪽 단추로 클릭하여 저장하면 적절한 VBA 하위 및 함수가 트리거됩니다.
-
폼의 왼쪽에 있는 레코드 선택기를 마우스 오른쪽 단추로 클릭하면 레코드 잘라내기, 복사 또는 붙여넣기 등의 작업을 수행할 수 있는 메뉴가 나타납니다. 레코드를 삭제하거나 자르면 아래에 설명 된 EmployeeCanBeDeleted 함수가 트리거됩니다.
-
이 기본 동작을 사용할 수 있도록 폼에 레코드 선택기를 사용하도록 설정해야 합니다.
폼의 레코드에 대한 참조 무결성
참조 무결성은 관련 테이블에 자식 레코드가 있는 직원을 삭제하지 못하도록 합니다. 따라서 사용자가 자식 레코드가 있는 레코드를 삭제하려고 하면 Access에서 오류가 발생합니다. Northwind Employee 양식 Access는 참조 무결성과 관련된 일반 기본 오류 메시지를 사용자 지정 메시지로 대체합니다.
폼의 삭제 프로시저의 코드는 오른쪽 클릭 메뉴에서 레코드를 잘라내거나 삭제 키를 사용하여 레코드를 삭제하려는 시도에 응답합니다.
Private Function, EmployeeCanBeDeleted는 주문, 구매 주문, 직원 및 직원 권한 테이블에서 해당 직원의 관련 레코드를 확인합니다.
검색된 경우 이 함수는 기본 오류 메시지를 표시하지 않으며 고객 양식에서 고객이 삭제할 수 없는 이유를 사용자에게 알리기 위해 사용하는 것과 동일한 일반 대화 상자를 사용하여 레코드를 삭제 할 수 없는 이유를 사용자에게 알립니다.
유효성 검사
직원은 유효성 검사 및 표준 오류 처리를 구현합니다. 컨트롤에 대한 유효성 검사에는 두 가지 유형이 있습니다.
-
필수 필드
-
표준 형식
필수 필드 유효성 검사
모든 직원에게 다음 세 개의 필드가 필요합니다.
-
First Name
-
Last Name
-
Job Title
이 개발자 버전에서 폼의 업데이트 전 이벤트는 필수 필드의 유효성을 검사합니다. 사용자가 값 유효성 검사가 없는 하나 이상의 필수 필드에 대한 값 없이 직원 레코드를 저장하려고 하면 저장이 취소되고 값이 없는 필수 필드가 강조 표시됩니다. Northwind의 Employee 양식에서 필수 필드 유효성 검사는 개별 컨트롤이 아닌 폼의 Before Update 이벤트에 의해 처리됩니다.
Employee 양식의 Before Update 이벤트는 세 개의 필수 필드에 대한 값이 있는지 확인합니다. 새 직원 또는 편집된 직원 레코드를 저장하면 양식의 Before Update 이벤트가 발생합니다. 이 이벤트는 필요한 값의 존재 또는 부재에 대해 검사 응답하는 Public Functions를 호출합니다.
modValidation 모듈에는 다음 함수가 포함되어 있습니다.
-
ValidateForm
-
IsValidForm
-
HighlightInvalidControls
-
HighlightControl
-
ValidateForm_RemoveHighlights
새 직원 관리
직원 추가 단추를 클릭하면 다음을 수행하려면 Private Sub btnNewEmployee_Click 실행됩니다.
-
현재 레코드를 저장하고
-
폼의 포커스를 새 레코드
로 설정 '
쿼리 선택에서 와일드카드 및 명명된 필드
qryEmployees의 SELECT 절은 와일드카드 문자 "*"를 사용하여 테이블의 모든 필드를 선택합니다. 와일드카드 쿼리 디자인에는 기본 테이블의 새로 추가된 필드가 자동으로 포함되며, 특정 필드 목록으로는 불가능합니다. 반면에 특정 필드를 나열하여 반환된 레코드 집합 을 표시 전용 양식에 필요한 필드로만 제한할 수 있습니다.
적절한 디자인 선택
디자인은 요구 사항에 적합한 접근 방식을 기반으로 해야 합니다. 가능할 경우 기본 설정은 일반적으로 향후 유지 관리가 필요할 가능성이 가장 낮은 접근 방식(예: 와일드카드 접근 방식)으로 이동합니다.
조회 테이블에 바인딩된 ComboBoxes - 두 가지 방법
직원의 감독자 같은 관련 항목은 양식의 드롭다운 또는 콤보박스에 표시됩니다. 해당 필드가 SupervisorID (외래 키 필드)에 바인딩되어 있으므로 폼의 레코드 원본 쿼리에는 SupervisorID에 대한 외래 키만 필요합니다. 콤보 상자에는 해당 텍스트 값도 표시됩니다.
숨겨진 ID 열과 표시되는 Description 열이 있는 2열 콤보박스는 이 작업을 수행합니다. 직원 양식에서 감독자 콤보박스는 간단한 2열 쿼리에 바인딩됩니다. 감독자의 RowSource 속성을 참조하세요.
그러나 경우에 따라 조회 테이블에 별도의 기본 키가 없으므로 텍스트 값 자체가 기본 키입니다.
직원 직위와 같이 가능한 값 목록이 작고 매우 안정적인 경우 종종 닫힌 도메인이라고 합니다. 타이틀에 대한 값을 변경하거나 추가하는 것은 일반적이지 않습니다. 닫힌 도메인 조회 테이블은 단일 열 쿼리 접근 방식의 후보입니다.
Employee 양식에서 타이틀 콤보박스는 타이틀의 한 열 쿼리에 바인딩됩니다. Titles의 RowSource 속성을 참조하세요.
-
분할 양식에 대해 자세히 알아보기
-
참조 무결성에 대해 자세히 알아보기
-
Northwind 2.0 Developer Edition: All topics
-
Northwind 2.0 Developer Edition: 알아야 할 사항