이 글이 필요한 사람
Access 콤보 상자나 목록 상자 문제에서 표/쿼리, 값 목록, 필드 목록이 자꾸 섞이는 수험생을 위한 정리입니다.
세 설정값은 모두 목록을 만든다는 점은 같지만, RowSource에 적는 내용과 화면에 표시되는 결과가 다릅니다.
RecordSource·ControlSource·RowSource 자체의 비교가 필요하면 관련 글을 함께 보고, 이 글에서는 RowSourceType 세 유형만 확실히 구분하세요.
컴활 1급 · 컴활 1급 실전 판단
두음 암기는 `표값필`입니다. 표/쿼리는 레코드, 값 목록은 직접 적은 값, 필드 목록은 필드 이름을 보여 줍니다.
RowSourceType은 `RowSource를 어떤 방식으로 해석할지` 정하고, RowSource에는 실제 테이블·쿼리·SQL 또는 세미콜론으로 구분한 값을 적습니다.
시험에서는 속성 이름만 외우지 말고 `RowSource에 무엇을 적었는가`와 `목록에 무엇이 보이는가`를 함께 확인하면 세 유형을 빠르게 가를 수 있습니다.
핵심 포인트
본문
Access 콤보 상자나 목록 상자 문제에서 표/쿼리, 값 목록, 필드 목록이 자꾸 섞이는 수험생을 위한 정리입니다.
세 설정값은 모두 목록을 만든다는 점은 같지만, RowSource에 적는 내용과 화면에 표시되는 결과가 다릅니다.
RecordSource·ControlSource·RowSource 자체의 비교가 필요하면 관련 글을 함께 보고, 이 글에서는 RowSourceType 세 유형만 확실히 구분하세요.
`표값필`을 `표는 레코드, 값은 직접, 필드는 이름`으로 풀어 말합니다.
표/쿼리는 데이터 행, 값 목록은 직접 입력한 고정 항목, 필드 목록은 원본의 필드명이 목록에 나타납니다.
세 단어만 외우고 끝내지 말고 `원본-표시 결과` 두 칸으로 다시 설명할 수 있어야 선지에 적용할 수 있습니다.
RowSourceType은 Access가 RowSource를 읽는 방법을 정하는 속성입니다. 대표 설정값은 `Table/Query`, `Value List`, `Field List`입니다.
RowSource에는 RowSourceType에 맞는 실제 내용을 적습니다. 같은 문자열이라도 RowSourceType이 무엇인지에 따라 목록을 채우는 방식이 달라집니다.
따라서 문제에서 `어떻게 해석하는가`를 물으면 RowSourceType, `무엇을 원본으로 쓰는가`를 물으면 RowSource를 먼저 확인합니다.
RowSourceType을 `Table/Query`로 설정하면 RowSource에 테이블명, 쿼리명 또는 SQL 문을 지정합니다.
예를 들어 RowSource가 `EmployeeList`라는 저장 쿼리이거나 `SELECT Department FROM tblDepartments` 같은 SQL 문이면 그 결과 레코드가 목록의 항목이 됩니다.
선지에 `테이블이나 쿼리의 실제 데이터`, `SELECT 문의 실행 결과`가 보이면 표/쿼리를 먼저 고릅니다.
RowSourceType을 `Value List`로 설정하면 RowSource에 표시할 항목을 세미콜론으로 구분해 직접 입력합니다.
예를 들어 `서울;부산;대구`처럼 값의 수가 적고 자주 바뀌지 않는 목록에 알맞습니다.
테이블이나 쿼리에서 값을 읽는 것이 아니므로 `고정 선택지`, `직접 나열`, `세미콜론`이 핵심 단서입니다.
RowSourceType을 `Field List`로 설정하면 RowSource에는 테이블명, 쿼리명 또는 SQL 문을 지정합니다.
표/쿼리와 원본 표기는 비슷하지만 목록에는 레코드 값이 아니라 해당 원본의 필드 이름이 나타납니다.
`사원명·부서명이라는 필드 안의 데이터`와 `사원명·부서명이라는 필드 이름 자체`를 구분하는 것이 가장 중요한 함정입니다.
표/쿼리: RowSource에는 테이블·쿼리·SQL을 적고, 목록에는 그 결과 레코드가 나타납니다.
값 목록: RowSource에는 세미콜론으로 구분한 항목을 직접 적고, 목록에는 입력한 값이 그대로 나타납니다.
필드 목록: RowSource에는 테이블·쿼리·SQL을 적지만, 목록에는 원본의 필드 이름이 나타납니다.
Microsoft Learn 문서상 콤보 상자의 AddItem 메서드를 사용하려면 해당 컨트롤의 RowSourceType이 `Value List`로 설정되어 있어야 합니다.
따라서 `목록에 새 항목을 코드로 추가한다`는 선지와 `Table/Query`가 함께 나오면 먼저 제약 위반을 의심합니다.
AddItem의 인수와 RemoveItem·Requery의 세부 차이는 별도 메서드 가이드에서 다룹니다.
1. Field List를 필드에 저장된 데이터 값 목록으로 해석하지 않습니다.
2. SELECT 문은 값 목록이 아니라 Table/Query의 RowSource로 사용할 수 있습니다.
3. RowSourceType이 원본 문자열이고 RowSource가 해석 방식이라는 식으로 두 속성의 역할을 뒤집지 않습니다.
1단계. 목록에 레코드 값이 보이는지, 직접 적은 값이 보이는지, 필드명이 보이는지 확인합니다.
2단계. RowSource가 테이블·쿼리·SQL인지, 세미콜론으로 구분한 값인지 분류합니다.
3단계. 두 단서가 가리키는 RowSourceType을 고릅니다.
4단계. AddItem이 나오면 Value List 조건까지 마지막으로 확인합니다.
`RowSource = 사원목록`이고 사원 레코드가 보인다: Table/Query입니다.
`RowSource = 정규직;계약직;인턴`처럼 직접 적은 선택지가 보인다: Value List입니다.
`RowSource = 사원`인데 사번·성명·부서 같은 열 이름이 항목으로 보인다: Field List입니다.
1. 표/쿼리 = 테이블·쿼리·SQL의 결과 레코드.
2. 값 목록 = 세미콜론으로 직접 적은 고정 항목.
3. 필드 목록 = 원본의 데이터가 아니라 필드 이름.
4. RowSourceType은 해석 방식, RowSource는 실제 원본이나 항목 문자열.
5. AddItem을 쓰려면 RowSourceType이 Value List여야 합니다.
질문 1. `서울;부산;대구`를 RowSource에 직접 적었다면? 정답: Value List입니다.
질문 2. 테이블의 레코드가 목록에 나타난다면? 정답: Table/Query입니다.
질문 3. 테이블의 열 이름이 목록 항목이라면? 정답: Field List입니다.
질문 4. AddItem을 사용하려면 어떤 조건이 필요한가요? 정답: RowSourceType이 Value List여야 합니다.
Microsoft Learn의 ComboBox.RowSourceType 문서에서 Table/Query, Value List, Field List의 의미를 확인했습니다.
ComboBox.RowSource 문서에서 각 유형에 입력하는 RowSource와 SQL·세미콜론 사용 방식을 확인했습니다.
ComboBox.AddItem 문서에서 AddItem의 Value List 제약을 확인했으며, 이 글은 해당 공식 범위 안에서만 설명합니다.
FAQ
표/쿼리는 테이블·쿼리·SQL의 결과 레코드를, 값 목록은 RowSource에 직접 적은 고정 값을, 필드 목록은 지정한 원본의 필드 이름을 표시합니다.
RowSourceType은 RowSource를 해석하는 방식이고, RowSource는 실제 테이블명·쿼리명·SQL 문 또는 세미콜론으로 구분한 값 문자열입니다.
그렇습니다. 다만 Table/Query는 결과 레코드를 표시하고 Field List는 그 원본의 필드 이름을 표시한다는 점이 다릅니다.
Microsoft Learn 문서 기준으로 콤보 상자나 목록 상자의 AddItem을 사용하려면 RowSourceType이 Value List여야 합니다. Table/Query 데이터 변경 후 목록을 다시 읽게 하는 작업과 구분해야 합니다.