책 내용 질문하기
2025 시나공 컴퓨터활용능력 1급 실기 총정리 (ver. 2021) 함수, 코드 작성 시 테이블/쿼리 이름의 형식 문의
도서
2025 시나공 컴퓨터활용능력 1급 실기 총정리 (ver. 2021)
페이지
362,367
조회수
54
작성일
2026-08-10
작성자
박*혁
첨부파일

362페이지의 문제2-1-3에 관한 질문이면서 공부 과정에서 전반적으로 헷갈렸던 부분에 대한 질문입니다.


dsum을 사용하는 과정에서 저는 계산개체, 범위 및 조건에 쓰이는 테이블/쿼리의 이름을dsum([총주차수], [건물주차현황], [주차장유형]=[txt주차장유형번호])와 같이 세 인수 모두 중괄호로 묶어 표현했습니다. 하지만 답지는 dsum("총주차수", "건물주차현황", "[주차장유형]=[txt주차장유형번호]")와 같이 표현되었고, 실제로 제가 쓴 답엔 오류가 발생했습니다.


공부를 하면서 전반적으로 느낀 점은 쿼리나 테이블의 이름을 함수나 코드에 적을 때 중괄호로 묶어야한다고 느꼈지만, 중간중간 유형이나 문제를 풀다보면 갑자기 큰따옴표로 묶거나, 그냥 이름만 적어서 표현하는 문제들도 많이 접한 것 같습니다.


가장 먼저 첨부한 문제의 답에 대한 풀이가 궁금하고, 그 다음으로는 정확히 언제 [중괄호]로 묶고, 언제 "큰따옴표"로 묶고, 언제 그냥 이름만 적는 것인지 함수와 프로시저 코드 두가지 경우에 대해서 설명해주셨으면 좋겠습니다.


감사합니다

답변
2026-08-11 10:16:43

안녕하세요.

먼저 용어부터 하나 정리하면, 질문하신 [ ]중괄호가 아니라 대괄호입니다.
핵심은 [ ]" "의 역할이 완전히 다르다는 것입니다.

1. DSum에서는 왜 " "를 사용하나요?

정답:

=DSum("총주차수","건물주차현황","[주차장유형]=[txt주차장유형번호]")

DSum의 구조는

DSum(계산할 필드, 테이블/쿼리, 조건)

인데, 이 세 인수는 기본적으로 이름이나 조건식을 '문자열' 형태로 함수에 전달합니다. 그래서 큰따옴표를 사용합니다.

즉,

"총주차수"

‘총주차수라는 이름의 필드를 찾아라’,

"건물주차현황"

‘건물주차현황이라는 이름의 테이블/쿼리에서 찾아라’라는 의미입니다.

따라서

DSum([총주차수],[건물주차현황],...)

처럼 쓰면 Access는 이를 문자열로 된 이름이 아니라 현재 식에서 직접 참조해야 하는 개체나 필드로 해석하려 하기 때문에 오류가 발생합니다.


2. 그런데 조건 안에는 왜 다시 [ ]가 나오나요?

다음 부분을 보면

"[주차장유형]=[txt주차장유형번호]"

바깥의 " "DSum에 조건식 전체를 문자열로 전달하기 위한 것입니다.

그 문자열 안의

[주차장유형]
[txt주차장유형번호]

는 각각 필드와 컨트롤의 이름을 명확하게 표시하는 대괄호입니다.

즉, 층을 나눠 생각하면 쉽습니다.

" [주차장유형] = [txt주차장유형번호] "
↑                                      ↑
└──── 조건식 전체를 문자열로 전달 ────┘

  [주차장유형] → 필드 이름
  [txt주차장유형번호] → 컨트롤 이름

3. [ ], " ", 아무것도 없는 경우의 차이

이렇게 구분하시면 가장 쉽습니다.

표현의미
[ ]필드·컨트롤·개체 이름을 명확히 표시[금액], [txt조회]
" "문자열 자체"서울", "금액"
그냥 이름Access/VBA가 이름임을 알 수 있을 때금액, txt조회

예를 들어 일반 Access 식에서는

=[수량]*[단가]

처럼 실제 필드를 직접 참조하므로 [ ]를 사용합니다.

반면 DSum에서는

=DSum("금액","매출현황",...)

처럼 **‘금액’이라는 필드 이름과 ‘매출현황’이라는 테이블 이름을 문자열로 넘겨야 하므로 " "**를 사용합니다.


4. VBA 프로시저에서는?

VBA에서도 원리는 같습니다.

실제 컨트롤 값을 직접 사용할 때는

txt과목명

처럼 그냥 씁니다.

문자 자체를 전달할 때는

DoCmd.OpenReport "성적보고서"

처럼 " "를 사용합니다. 여기서 "성적보고서"보고서 이름을 문자열로 전달하는 것입니다.

조건식을 VBA에서 만들어 전달할 때는 조금 더 복잡해집니다.

DoCmd.OpenReport "성적보고서", acViewPreview, , _
                 "[학과명]='" & txt학과명 & "'"

여기서는

"[학과명]='"    → 조건식의 문자 부분
txt학과명        → 컨트롤의 실제 값
&                → 둘을 연결

입니다.

예를 들어 txt학과명컴퓨터공학과가 들어 있다면 최종적으로 만들어지는 조건은

[학과명]='컴퓨터공학과'

가 됩니다.

시험 대비용으로 가장 간단히 기억하면

일반 계산식에서 필드/컨트롤 직접 참조 → [필드명]
DLookup, DSum, DCount 등의 필드명·테이블명 → "필드명", "테이블명"
D함수의 조건 → "조건식"
VBA에서 개체 이름을 인수로 전달 → "보고서명", "폼명"
VBA에서 컨트롤의 실제 값을 사용 → txt과목명처럼 직접 사용

따라서 이번 문제의 DSum에서는 세 인수를 모두 [ ]로 묶는 것이 아니라, 세 인수 모두 기본적으로 문자열로 전달하고 그 조건 문자열 안에서 필요한 필드·컨트롤을 [ ]로 표현한다고 이해하시면 가장 정확합니다.

  • 관리자
    2026-08-11 10:16:43

    안녕하세요.

    먼저 용어부터 하나 정리하면, 질문하신 [ ]중괄호가 아니라 대괄호입니다.
    핵심은 [ ]" "의 역할이 완전히 다르다는 것입니다.

    1. DSum에서는 왜 " "를 사용하나요?

    정답:

    =DSum("총주차수","건물주차현황","[주차장유형]=[txt주차장유형번호]")
    

    DSum의 구조는

    DSum(계산할 필드, 테이블/쿼리, 조건)
    

    인데, 이 세 인수는 기본적으로 이름이나 조건식을 '문자열' 형태로 함수에 전달합니다. 그래서 큰따옴표를 사용합니다.

    즉,

    "총주차수"
    

    ‘총주차수라는 이름의 필드를 찾아라’,

    "건물주차현황"
    

    ‘건물주차현황이라는 이름의 테이블/쿼리에서 찾아라’라는 의미입니다.

    따라서

    DSum([총주차수],[건물주차현황],...)
    

    처럼 쓰면 Access는 이를 문자열로 된 이름이 아니라 현재 식에서 직접 참조해야 하는 개체나 필드로 해석하려 하기 때문에 오류가 발생합니다.


    2. 그런데 조건 안에는 왜 다시 [ ]가 나오나요?

    다음 부분을 보면

    "[주차장유형]=[txt주차장유형번호]"
    

    바깥의 " "DSum에 조건식 전체를 문자열로 전달하기 위한 것입니다.

    그 문자열 안의

    [주차장유형]
    [txt주차장유형번호]
    

    는 각각 필드와 컨트롤의 이름을 명확하게 표시하는 대괄호입니다.

    즉, 층을 나눠 생각하면 쉽습니다.

    " [주차장유형] = [txt주차장유형번호] "
    ↑                                      ↑
    └──── 조건식 전체를 문자열로 전달 ────┘
    
      [주차장유형] → 필드 이름
      [txt주차장유형번호] → 컨트롤 이름
    

    3. [ ], " ", 아무것도 없는 경우의 차이

    이렇게 구분하시면 가장 쉽습니다.

    표현의미
    [ ]필드·컨트롤·개체 이름을 명확히 표시[금액], [txt조회]
    " "문자열 자체"서울", "금액"
    그냥 이름Access/VBA가 이름임을 알 수 있을 때금액, txt조회

    예를 들어 일반 Access 식에서는

    =[수량]*[단가]
    

    처럼 실제 필드를 직접 참조하므로 [ ]를 사용합니다.

    반면 DSum에서는

    =DSum("금액","매출현황",...)
    

    처럼 **‘금액’이라는 필드 이름과 ‘매출현황’이라는 테이블 이름을 문자열로 넘겨야 하므로 " "**를 사용합니다.


    4. VBA 프로시저에서는?

    VBA에서도 원리는 같습니다.

    실제 컨트롤 값을 직접 사용할 때는

    txt과목명
    

    처럼 그냥 씁니다.

    문자 자체를 전달할 때는

    DoCmd.OpenReport "성적보고서"
    

    처럼 " "를 사용합니다. 여기서 "성적보고서"보고서 이름을 문자열로 전달하는 것입니다.

    조건식을 VBA에서 만들어 전달할 때는 조금 더 복잡해집니다.

    DoCmd.OpenReport "성적보고서", acViewPreview, , _
                     "[학과명]='" & txt학과명 & "'"
    

    여기서는

    "[학과명]='"    → 조건식의 문자 부분
    txt학과명        → 컨트롤의 실제 값
    &                → 둘을 연결
    

    입니다.

    예를 들어 txt학과명컴퓨터공학과가 들어 있다면 최종적으로 만들어지는 조건은

    [학과명]='컴퓨터공학과'
    

    가 됩니다.

    시험 대비용으로 가장 간단히 기억하면

    일반 계산식에서 필드/컨트롤 직접 참조 → [필드명]
    DLookup, DSum, DCount 등의 필드명·테이블명 → "필드명", "테이블명"
    D함수의 조건 → "조건식"
    VBA에서 개체 이름을 인수로 전달 → "보고서명", "폼명"
    VBA에서 컨트롤의 실제 값을 사용 → txt과목명처럼 직접 사용

    따라서 이번 문제의 DSum에서는 세 인수를 모두 [ ]로 묶는 것이 아니라, 세 인수 모두 기본적으로 문자열로 전달하고 그 조건 문자열 안에서 필요한 필드·컨트롤을 [ ]로 표현한다고 이해하시면 가장 정확합니다.

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.