에너지 관점 스터디:에관스

컴활 1급 · Access 폼·컨트롤

RecordSource·ControlSource·RowSource는 무엇의 원본인지 먼저 보면 바로 구분됩니다

두음 암기는 `레폼·컨값·로목`입니다. RecordSource는 폼·보고서의 레코드, ControlSource는 컨트롤에 표시할 값, RowSource는 콤보 상자·목록 상자에 펼쳐질 목록입니다.

재미 문장은 `레폼이 큰 장부를 펴고, 컨값이 한 칸을 쓰고, 로목이 고를 줄을 세운다`입니다. 시험장에서는 큰 장부·한 칸·선택 목록으로 번역하세요.

결론부터 말하면 폼 전체가 어느 테이블·쿼리를 볼지는 RecordSource, 텍스트 상자 하나가 어느 필드·식을 보여 줄지는 ControlSource, 콤보 상자의 드롭다운 후보가 어디서 올지는 RowSource입니다. Microsoft Learn도 이 세 속성을 각각 폼의 데이터 원본, 컨트롤에 나타날 데이터, 목록에 공급할 행 데이터로 구분합니다.

컴활 1급 Access RecordSource ControlSource RowSource를 폼 전체 레코드 컨트롤 값 선택 목록으로 비교한 인포그래픽
RecordSource는 폼 전체 레코드, ControlSource는 컨트롤 한 칸의 값, RowSource는 콤보·목록 상자의 선택 후보를 정합니다.
작성에관스 컴활 1급 학습팀 발행2026년 8월 7일 수정2026년 8월 7일 주제Access 폼·컨트롤

핵심 포인트

이 글에서 먼저 챙길 것

  • RecordSource는 폼·보고서 전체가 사용할 테이블, 쿼리 또는 SQL 문입니다.
  • ControlSource는 개별 컨트롤에 연결할 필드 이름이나 계산식을 정합니다.
  • RowSource는 콤보 상자·목록 상자에 보일 후보 목록을 정하며 RowSourceType과 함께 봅니다.
  • 콤보 상자에서는 ControlSource와 RowSource가 동시에 존재할 수 있고 역할은 저장 칸과 선택 후보로 다릅니다.
  • 속성 이름을 외우기보다 대상 개체가 폼인지, 한 컨트롤인지, 목록 컨트롤인지 먼저 확인합니다.

본문

컴활 1급 공부 기준을 더 구체적으로 보기

이 글이 필요한 사람

컴활 1급 데이터베이스 실기에서 폼 속성 시트와 컨트롤 속성 시트를 오가다가 레코드 원본·컨트롤 원본·행 원본을 바꿔 쓰는 사람에게 맞는 글입니다.

기존 `데이터베이스 객체 역할` 글은 테이블·쿼리·폼·보고서의 큰 역할을 맡고, `Me·Forms! 참조` 글은 프로시저에서 현재 폼과 다른 열린 폼을 가리키는 경로를 맡습니다. 이 글은 세 Source 속성의 대상과 입력값만 좁게 다룹니다.

특히 콤보 상자에는 ControlSource와 RowSource가 함께 보여서 둘을 같은 원본으로 오해하기 쉽습니다. 저장되는 값과 펼쳐지는 후보를 따로 보는 것이 핵심입니다.

두음 암기부터 잡으세요: 레폼·컨값·로목

`레폼`은 RecordSource가 폼·보고서의 전체 레코드를 정한다는 뜻입니다. `컨값`은 ControlSource가 텍스트 상자 같은 한 컨트롤의 값을 정한다는 뜻입니다. `로목`은 RowSource가 콤보·목록 상자의 목록을 정한다는 뜻입니다.

영문 Source 앞의 단어를 번역하면 더 쉽습니다. Record는 레코드 집합, Control은 화면의 한 컨트롤, Row는 목록에 늘어설 행입니다.

시험 직전에는 `전체 레코드 -> 한 칸 값 -> 선택 목록` 순서로 말해 보세요. 세 속성을 개체 크기 순서로 놓으면 이름이 비슷해도 섞이지 않습니다.

세 속성은 적용 대상부터 다릅니다

RecordSource는 주로 폼과 보고서에 적용합니다. 그 폼이나 보고서가 어떤 레코드 집합을 바탕으로 화면과 출력을 구성할지 정합니다.

ControlSource는 텍스트 상자, 콤보 상자처럼 값을 표시하거나 입력받는 개별 컨트롤에 적용합니다. RowSource는 선택 후보를 여러 행으로 보여 주는 콤보 상자와 목록 상자에서 봅니다.

문제 지시문에 `폼의 레코드 원본`, `텍스트 상자의 컨트롤 원본`, `콤보 상자의 행 원본`이 나오면 한글 속성명만 보지 말고 대상 개체까지 함께 표시하세요. 대상이 정해지면 속성도 거의 자동으로 결정됩니다.

RecordSource는 폼 전체 레코드의 출발점입니다

Microsoft Learn에 따르면 폼의 RecordSource에는 테이블 이름, 쿼리 이름 또는 SQL 문을 설정할 수 있습니다. 예를 들어 고객 폼의 RecordSource가 고객 테이블이면 폼은 그 테이블의 레코드 집합을 바탕으로 움직입니다.

RecordSource에 포함되지 않은 필드는 그 폼의 바인딩된 컨트롤이 바로 사용할 수 없습니다. 먼저 폼 전체 원본에 필요한 필드가 들어 있는지 보고, 그다음 ControlSource로 한 필드를 연결하는 순서입니다.

VBA에서는 `Me.RecordSource = "고객"`처럼 현재 폼의 원본을 바꿀 수 있습니다. Microsoft Learn은 열린 폼의 RecordSource를 변경하면 기본 데이터가 자동으로 다시 쿼리된다고 설명합니다.

ControlSource는 컨트롤 한 칸에 표시할 필드나 식입니다

ControlSource에 필드 이름을 넣으면 그 컨트롤은 해당 필드에 바인딩됩니다. 화면에 필드 값이 보이고, 편집 가능한 상태에서 값을 바꾸면 연결된 필드의 값도 바뀔 수 있습니다.

ControlSource에는 `=[수량]*[단가]` 같은 식도 넣을 수 있습니다. Microsoft Learn 기준으로 식 결과를 표시하는 계산 컨트롤의 값은 데이터베이스 필드에 직접 저장되지 않습니다.

ControlSource가 비어 있으면 비바운드 컨트롤입니다. 따라서 `필드 이름 -> 바운드`, `=로 시작하는 식 -> 계산`, `빈값 -> 비바운드` 세 상태를 함께 기억하세요.

RowSource는 콤보·목록 상자에 펼쳐질 후보입니다

RowSource는 콤보 상자나 목록 상자가 어떤 행을 후보로 보여 줄지 정합니다. 테이블 이름, 쿼리 이름, SQL 문 또는 직접 입력한 값 목록이 들어갈 수 있습니다.

RowSource만 보지 말고 RowSourceType도 함께 봐야 합니다. Microsoft Learn은 Table/Query일 때 테이블·쿼리·SQL 문, Value List일 때 세미콜론으로 구분한 값 목록을 사용한다고 설명합니다.

예를 들어 부서 콤보 상자의 RowSource가 부서목록 쿼리라면 드롭다운에는 그 쿼리가 돌려준 부서들이 나타납니다. 이것은 폼 전체 레코드를 정하는 RecordSource와 다른 범위입니다.

콤보 상자에서는 저장 칸과 선택 후보를 분리하세요

콤보 상자의 ControlSource는 사용자가 고른 결과를 어느 필드에 연결할지 정합니다. RowSource는 사용자가 고를 수 있는 후보들이 어디서 오는지 정합니다.

예를 들어 ControlSource가 부서코드이고 RowSource가 `SELECT 부서코드, 부서명 FROM 부서`라면 콤보 상자는 부서 목록을 펼치고, 선택된 행의 바운드 열 값을 현재 레코드의 부서코드 필드에 연결합니다.

보이는 열과 저장되는 열이 다를 수 있으므로 BoundColumn과 ColumnWidths 같은 속성도 결과 확인에 영향을 줍니다. 하지만 Source 문제의 첫 판단은 `ControlSource는 저장될 필드, RowSource는 펼쳐질 후보`입니다.

속성 시트 입력값을 실제 개체 이름으로 읽으세요

RecordSource와 RowSource에는 테이블·쿼리 이름 또는 SQL 문이 들어갈 수 있어 겉모습이 비슷합니다. 값의 모양보다 지금 선택한 개체가 폼인지 콤보 상자인지 먼저 확인해야 합니다.

ControlSource에는 폼의 RecordSource에 들어 있는 필드 이름이나 계산식이 자주 들어갑니다. 화면에 보이는 레이블 캡션과 실제 필드·컨트롤 이름이 다를 수 있으므로 속성 시트의 이름을 기준으로 읽으세요.

디자인 보기에서 개체를 잘못 선택하면 전혀 다른 속성 시트가 열립니다. 폼 선택기, 텍스트 상자, 콤보 상자를 차례로 클릭해 현재 선택 개체 이름과 데이터 탭의 속성을 함께 확인하는 습관이 필요합니다.

프로시저 코드에서도 같은 역할 구분을 유지합니다

VBA에서 `Me.RecordSource`는 현재 폼의 레코드 원본 속성입니다. `Me!txt합계.ControlSource`는 특정 텍스트 상자의 값 원본이고, `Me!cbo부서.RowSource`는 콤보 상자의 목록 원본입니다.

점과 느낌표 경로는 기존 Me·Forms 참조 글의 범위입니다. 여기서는 마지막에 붙은 속성 이름이 어느 개체의 무엇을 바꾸는지만 확인하세요.

RowSource를 바꾼 뒤 목록 내용이 즉시 기대와 다르면 실제 SQL·쿼리 결과와 RowSourceType을 먼저 확인합니다. 필요하면 해당 컨트롤의 Requery 동작도 문제 파일에서 검토하되, 무조건 전체 폼 원본을 바꾸지 마세요.

시험 직전에는 오류 제거 순서를 6줄로 남기세요

첫째, 두음은 `레폼·컨값·로목`입니다. 둘째, 폼·보고서 전체 레코드는 RecordSource입니다. 셋째, 컨트롤 한 칸의 필드·식은 ControlSource입니다.

넷째, 콤보·목록 상자의 후보 목록은 RowSource입니다. 다섯째, RowSource는 RowSourceType과 함께 봅니다. 여섯째, 콤보 상자의 ControlSource는 저장 칸이고 RowSource는 선택 후보입니다.

마지막으로 현재 선택한 개체가 폼인지, 텍스트 상자인지, 콤보 상자인지 확인하세요. 개체 대상과 Source 역할이 맞으면 속성 이름 문제는 빠르게 정리됩니다.

FAQ

자주 묻는 질문

RecordSource와 ControlSource의 차이는 무엇인가요?

RecordSource는 폼·보고서 전체가 사용할 테이블·쿼리·SQL 레코드 집합입니다. ControlSource는 그 원본 안의 특정 필드나 계산식을 개별 컨트롤에 연결합니다.

ControlSource와 RowSource는 콤보 상자에서 어떻게 다른가요?

ControlSource는 선택 결과가 연결될 현재 레코드의 필드이고, RowSource는 드롭다운에 표시할 선택 후보 목록입니다. 저장 칸과 고를 목록의 차이입니다.

RowSource에는 무엇을 입력할 수 있나요?

RowSourceType이 Table/Query이면 테이블 이름, 쿼리 이름 또는 SQL 문을 사용할 수 있습니다. Value List이면 세미콜론으로 구분한 직접 값 목록을 사용합니다.

ControlSource가 비어 있으면 어떻게 되나요?

필드나 식에 연결되지 않은 비바운드 컨트롤이 됩니다. 필드 이름이면 바운드 컨트롤, =로 시작하는 식이면 계산 컨트롤로 구분할 수 있습니다.