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

컴활 1급 · 데이터베이스 함수 구분

컴활 1급 DLookup·DCount·DSum은 값 조회·개수·합계로 먼저 구분합니다

두음 암기는 '룩값·카개·썸합·식도조'입니다. DLookup은 값 하나 조회, DCount는 레코드 개수, DSum은 숫자 합계를 구하고 공통 인수는 식·도메인·조건입니다.

외우기용 문장은 '룩이는 값을 보고, 카운트는 개수를 세고, 썸은 합친 뒤 식당 도메인 조건표를 본다'입니다. 시험장에서는 필요한 결과를 값·개수·합계 중 하나로 고른 뒤 Expr, Domain, Criteria 순서로 식을 읽으세요.

결론부터 말하면 세 함수의 문법 뼈대는 `D함수(Expr, Domain, Criteria)`로 같고 첫 글자 뒤의 역할만 다릅니다. 특정 필드 값 하나면 DLookup, 조건을 만족하는 레코드 수면 DCount, 숫자 필드의 합이면 DSum을 선택합니다.

컴활 1급 Access DLookup DCount DSum을 값 조회 개수 합계와 Expr Domain Criteria 인수로 비교한 인포그래픽
DLookup은 값 하나, DCount는 레코드 개수, DSum은 숫자 합계를 구하며 세 함수 모두 Expr·Domain·Criteria 구조를 공유합니다.
작성에관스 컴활 1급 학습팀 발행2026년 8월 5일 수정2026년 8월 5일 주제데이터베이스 함수 구분

핵심 포인트

이 글에서 먼저 챙길 것

  • DLookup은 지정한 도메인에서 조건에 맞는 특정 필드 값 하나를 반환합니다.
  • DCount는 조건에 맞는 레코드 수를 세며 전체 행을 셀 때는 Expr에 `*`를 사용할 수 있습니다.
  • DSum은 조건에 맞는 레코드의 숫자 필드 또는 숫자 식을 합산합니다.
  • 세 함수는 Expr·Domain·Criteria 구조를 공유하며 Criteria는 SQL WHERE에서 WHERE를 뺀 문자열처럼 작성합니다.

본문

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

이 글이 필요한 사람

컴활 1급 데이터베이스 실기에서 `DLookup`, `DCount`, `DSum`이 한 문제에 섞이면 함수 이름은 알지만 무엇을 골라야 할지 멈추거나, 조건식의 따옴표와 연결 연산자에서 자주 틀리는 사람에게 맞는 글입니다.

기존 데이터베이스 객체 가이드는 테이블·쿼리·폼·보고서의 역할을, DB 빠른 공부 가이드는 학습 순서를, 프로시저 참조 가이드는 Me와 Forms! 경로를 맡습니다. 이 글은 도메인 함수 세 개의 선택과 공통 인수·조건식만 좁게 다룹니다.

두음 암기부터 잡으세요: 룩값·카개·썸합·식도조

'룩값'은 DLookup이 값 하나를 찾고, '카개'는 DCount가 개수를 세며, '썸합'은 DSum이 합계를 낸다는 뜻입니다. '식도조'는 세 함수가 공유하는 Expr·Domain·Criteria를 식·도메인·조건으로 번역한 말입니다.

재미 문장 '룩이는 값을 보고, 카운트는 개수를 세고, 썸은 합친 뒤 식당 도메인 조건표를 본다'를 말한 뒤 지시문에서 결과 단어를 표시하세요. 조회·표시이면 DLookup, 몇 건·개수이면 DCount, 총액·합계이면 DSum입니다.

함수 이름부터 외우려고 하면 조건식에서 다시 막힙니다. 먼저 결과 종류를 고르고, 두 번째로 도메인이 테이블인지 쿼리인지 찾고, 마지막에 조건을 문자열로 완성하는 순서를 고정하세요.

세 함수의 공통 뼈대는 Expr·Domain·Criteria입니다

Microsoft Learn이 안내하는 구문은 `DLookup(Expr, Domain, Criteria)`, `DCount(Expr, Domain, Criteria)`, `DSum(Expr, Domain, Criteria)`입니다. 세 함수 모두 첫째 인수는 계산하거나 반환할 식, 둘째는 레코드 집합, 셋째는 범위를 제한하는 조건입니다.

Expr에는 보통 `[단가]`, `[주문번호]`, `[수량]*[단가]`처럼 필드나 계산식을 문자열로 넣습니다. Domain에는 `상품`, `주문내역`처럼 테이블 이름이나 매개 변수가 필요 없는 쿼리 이름을 문자열로 넣습니다.

Criteria는 선택 인수이며 SQL의 WHERE 절과 비슷하지만 `WHERE`라는 단어는 쓰지 않습니다. 예를 들어 `[지역] = '서울'`이 조건 부분이며, 조건에 사용하는 필드는 Domain 안에 존재해야 합니다.

DLookup은 조건에 맞는 필드 값 하나를 조회합니다

DLookup은 다른 테이블이나 쿼리에서 특정 조건에 맞는 필드 값 하나를 가져올 때 사용합니다. Microsoft Learn은 폼이나 보고서의 레코드 원본에 없는 필드 값을 표시하는 대표 용도로 설명합니다.

예를 들어 상품코드가 7인 상품의 단가를 찾는다면 `=DLookup("[단가]", "상품", "[상품코드] = 7")`처럼 읽습니다. Expr은 반환할 단가, Domain은 상품 테이블, Criteria는 상품코드 7입니다.

조건을 생략하거나 여러 레코드가 조건에 맞으면 원하는 행을 보장할 수 없습니다. Microsoft 문서도 기본 키처럼 결과를 고유하게 만드는 조건을 권장하므로, 값 하나를 찾을 때는 고유한 조건인지 확인하세요.

DCount는 레코드 개수를 세고 Null 함정을 확인합니다

DCount는 지정한 도메인에서 조건에 맞는 레코드 수를 반환합니다. 주문 상태가 완료인 건수를 세면 `=DCount("*", "주문", "[상태] = '완료'")`처럼 작성할 수 있습니다.

Expr에 특정 필드를 넣으면 그 필드가 Null인 레코드는 세지 않습니다. 전체 레코드 수가 목적이라면 `*`를 사용하거나 Null이 없는 기본 키 필드를 사용하는 편이 안전합니다.

쿼리 안에서 전체 레코드 수를 집계하는 문제라면 일반 Count가 더 적합할 수 있습니다. DCount는 폼의 계산 컨트롤, 매크로, 모듈처럼 현재 레코드 원본 밖의 도메인을 조건으로 세야 할 때 역할이 선명합니다.

DSum은 조건에 맞는 숫자 필드의 합계를 구합니다

DSum은 지정한 도메인의 숫자 필드 또는 숫자 계산식 합계를 반환합니다. 고객번호 7의 주문금액 합계라면 `=DSum("[주문금액]", "주문", "[고객번호] = 7")`처럼 읽습니다.

Expr에는 합산할 숫자 필드를 넣거나 `[수량]*[단가]`처럼 도메인 안의 필드로 계산식을 만들 수 있습니다. 개수를 구하는 DCount와 달리 결과가 몇 행인지가 아니라 그 행들의 숫자 값을 더합니다.

조건에 맞는 레코드가 없거나 도메인에 레코드가 없으면 DSum은 Null을 반환할 수 있습니다. 계산 컨트롤에서 0을 표시해야 한다면 `Nz(DSum(...), 0)`처럼 Null 처리 필요 여부를 함께 봅니다.

숫자·문자·날짜 조건은 구분 기호가 다릅니다

숫자 조건은 `"[상품코드] = 7"`처럼 숫자 자체를 조건 문자열 안에 둡니다. 숫자를 폼 컨트롤에서 가져오면 `"[상품코드] = " & [txt상품코드]`처럼 문자열 바깥에서 값을 연결합니다.

문자 조건은 조건 값에 작은따옴표가 필요합니다. 고정값은 `"[지역] = '서울'"`, 컨트롤 값은 `"[지역] = '" & [txt지역] & "'"`처럼 최종 조건 문자열 안에 문자 구분 기호가 남도록 만듭니다.

날짜 조건은 Access 식에서 `#` 구분 기호를 사용합니다. 컨트롤 값을 붙일 때는 `"[주문일] >= #" & [txt기준일] & "#"`처럼 최종 조건식에 날짜 구분 기호가 포함되는지 확인하세요.

폼 컨트롤을 붙일 때는 완성된 조건 문자열을 상상합니다

조건식에서 가장 흔한 실수는 따옴표 개수를 눈으로만 세는 것입니다. Microsoft Learn은 폼 컨트롤 식을 문자열과 분리해 먼저 평가한 뒤 `&`로 이어 붙이는 방식을 안내합니다.

예를 들어 숫자 컨트롤의 현재 값이 7이면 `"[상품코드] = " & Forms!상품조회!txt상품코드`가 최종적으로 `[상품코드] = 7`이 되어야 합니다. 문자 값이 서울이면 최종 문자열은 `[지역] = '서울'`이 되어야 합니다.

시험에서 식이 길어지면 Expr, Domain, Criteria 세 덩어리로 먼저 자르고, Criteria만 종이에 최종 결과 형태로 한 번 써 보세요. 조건 문자열이 정상적인 WHERE 절처럼 읽히면 따옴표와 연결 위치도 확인하기 쉬워집니다.

Null과 0은 같은 결과가 아닙니다

DLookup은 조건에 맞는 레코드가 없으면 Null을 반환합니다. DSum도 합산할 레코드가 없으면 Null을 반환할 수 있습니다. 반면 DCount는 셀 레코드가 없으면 개수 결과가 0이 됩니다.

화면에 빈값 대신 0을 표시해야 하는 계산이라면 Nz를 사용할 수 있습니다. 다만 모든 Null을 무조건 0으로 바꾸기보다 지시문이 값 없음과 숫자 0을 같은 의미로 처리해도 되는지 먼저 확인해야 합니다.

DLookup 결과가 Null이라면 먼저 조건 필드가 Domain에 있는지, 조건 문자열이 올바른지, 실제로 일치하는 레코드가 있는지 봅니다. DCount가 예상보다 작으면 Expr로 지정한 필드의 Null 여부도 확인하세요.

자주 틀리는 함정은 함수보다 인수 역할 뒤바꾸기입니다

첫째, 값 하나를 찾아야 하는데 DCount를 쓰거나 개수를 세는데 DLookup을 쓰는 함정입니다. 지시문의 결과가 값·개수·합계 중 무엇인지 먼저 표시하면 막을 수 있습니다.

둘째, Domain에 필드 이름을 넣고 Expr에 테이블 이름을 넣는 함정입니다. 첫째 인수는 무엇을 반환·계산하는지, 둘째 인수는 어느 레코드 집합인지로 번역하세요. 셋째, Criteria에 WHERE를 직접 넣거나 문자·날짜 구분 기호를 빠뜨리는 함정입니다.

넷째, DLookup에서 여러 행이 맞는데도 원하는 값이 나온다고 가정하는 함정입니다. 값 하나를 안정적으로 찾으려면 기본 키나 고유한 조건을 사용하고, DCount 전체 행은 `*`, DSum은 숫자 식이라는 마지막 차이를 확인하세요.

시험 직전에는 6줄만 남기세요

첫째, DLookup은 값 하나입니다. 둘째, DCount는 레코드 개수입니다. 셋째, DSum은 숫자 합계입니다. 넷째, 공통 인수는 Expr·Domain·Criteria입니다.

다섯째, Criteria는 WHERE 없는 조건 문자열이며 숫자는 그대로, 문자는 작은따옴표, 날짜는 `#`로 구분합니다. 여섯째, DCount 전체 행은 `*`, DLookup·DSum의 결과 없음은 Null 가능성을 확인합니다.

마지막으로 '룩값·카개·썸합·식도조'를 보지 않고 풀어 말하세요. 함수 이름보다 결과 종류와 세 인수 역할이 바로 나오면 실전 식도 훨씬 빨리 읽힙니다.

FAQ

자주 묻는 질문

DLookup, DCount, DSum의 차이는 무엇인가요?

DLookup은 조건에 맞는 특정 필드 값 하나, DCount는 조건에 맞는 레코드 수, DSum은 조건에 맞는 숫자 필드나 계산식의 합계를 반환합니다.

Access 도메인 함수의 Expr, Domain, Criteria는 무엇인가요?

Expr은 반환하거나 계산할 필드·식, Domain은 테이블이나 쿼리 이름, Criteria는 범위를 제한하는 조건 문자열입니다. Criteria는 SQL WHERE 절에서 WHERE를 뺀 형태로 생각하면 됩니다.

DCount에서 전체 레코드 수는 어떻게 세나요?

Expr에 `*`를 쓰면 Null 필드가 있는 레코드까지 포함한 전체 레코드 수를 셀 수 있습니다. Null이 없는 기본 키 필드를 사용해도 됩니다.

DLookup 조건에 폼의 텍스트 값을 넣을 때 왜 작은따옴표가 필요한가요?

Criteria는 완성된 조건 문자열이어야 하므로 문자 값은 작은따옴표로 구분해야 합니다. 최종 문자열이 `[지역] = '서울'`처럼 만들어지는지 확인하면 됩니다.