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

컴활 1급 · Access 조건 문자열

컴활 1급 도메인 함수 조건식: 따옴표·날짜 #·& 연결

두음 암기는 `문따·날샵·숫그냥`입니다. 비교할 값이 텍스트면 따옴표, 날짜 리터럴이면 #, 정수형 숫자면 값 구분자 없이 조건 문자열에 넣습니다.

따옴표 개수를 세기 전에 연결된 결과를 먼저 쓰세요. 숫자 필드의 조건은 [상품번호]=7, 텍스트 필드의 조건은 [도시]='서울', 날짜 필드의 조건은 [주문일]=#10/14/2026#처럼 완성되어야 합니다.

Criteria 자체를 만드는 바깥 큰따옴표와 텍스트 값을 감싸는 안쪽 따옴표는 역할이 다릅니다. 앞자리 0이 있는 코드, 값 안의 작은따옴표, 날짜의 월·일 순서까지 확인하면 단순 암기에서 놓치는 오류를 찾을 수 있습니다.

문따·날샵·숫그냥으로 Access Criteria의 텍스트 따옴표, 날짜 #, 숫자 값과 필드 대괄호를 구분한 인포그래픽
완성 조건 문자열의 기본 구분자입니다. 앞자리 0, 값 안의 인용부호, 날짜 순서와 & 연결은 본문 예제로 보완합니다.
작성에관스 컴활 1급 학습팀 발행2026년 10월 14일 수정2026년 10월 14일 주제Access 조건 문자열

핵심 포인트

이 글에서 먼저 챙길 것

  • Criteria는 WHERE라는 단어를 제외한 조건 문자열입니다. 사용한 필드는 해당 Domain 안에 있어야 합니다.
  • 숫자처럼 보이는 007도 필드가 텍스트형이면 '007'로 비교합니다. 이름이 아니라 자료형을 보세요.
  • 변수나 컨트롤 값을 연결할 때 &는 문자열 바깥, 값 구분자는 완성 문자열 안에 남깁니다.
  • 날짜 리터럴은 #으로 감싸고 VBA에서 날짜를 연결할 때는 미국식 월/일/년 순서를 명확히 합니다.
  • O'Brien처럼 값에 작은따옴표가 있으면 단순한 작은따옴표 감싸기만으로는 부족합니다.

본문

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

Criteria는 완성된 조건 문자열 한 덩어리입니다

DLookup("[단가]", "상품", "[상품번호]=7")에서 세 번째 인수는 [상품번호]=7이라는 조건 문자열입니다. WHERE [상품번호]=7처럼 WHERE까지 넣는 자리가 아닙니다. Expr·Domain·Criteria의 선택 자체는 기존 함수 인수 가이드에서 확인하고, 여기서는 마지막 문자열만 따로 봅니다.

또한 조건에 사용한 상품번호 필드는 상품이라는 Domain 안에 있어야 합니다. 바깥 폼에 같은 이름의 컨트롤이 있다고 해서 Domain의 필드가 저절로 생기지는 않습니다. 먼저 왼쪽은 비교 대상 필드, 오른쪽은 비교할 값으로 구분하세요.

바깥 큰따옴표와 안쪽 값 따옴표를 구분하세요

VBA 식 "[도시]='서울'"의 바깥 큰따옴표는 하나의 문자열을 만듭니다. 실제 Criteria의 내용은 [도시]='서울'이며, 이 안에 남는 작은따옴표가 서울을 텍스트 값으로 표시합니다. 바깥 표시까지 실제 내용에 그대로 남는다고 생각하지 마세요.

반대로 "[상품번호]=7"도 바깥 큰따옴표가 있지만 7은 숫자 값입니다. Criteria가 문자열이라는 사실과 그 문자열 안에서 비교하는 값이 텍스트라는 사실은 다릅니다. 이 두 층을 나누어 보면 숫자 조건의 큰따옴표 때문에 혼동하지 않습니다.

숫자처럼 보이는 회원코드 007은 자료형부터 확인합니다

상품번호가 정수형이고 변수 intId가 7이면 "[상품번호]=" & intId의 연결 결과는 [상품번호]=7입니다. 비교값 주변에 텍스트용 따옴표나 날짜용 #을 넣지 않습니다. 이 글의 숫자 연결 예제는 정수 값으로 제한합니다.

회원코드가 텍스트형이며 값이 007이라면 [회원코드]='007'로 비교합니다. 숫자 7로 바꾸면 앞자리 0을 보존한 코드라는 의미를 잃습니다. 필드 이름에 번호·코드가 들어 있다는 이유로 숫자형이라고 추정하지 말고 문제의 자료형을 확인하세요.

텍스트 변수를 연결하면 작은따옴표가 양쪽에 남아야 합니다

strCity의 값이 서울일 때 "[도시]='" & strCity & "'"는 [도시]='서울'이 됩니다. 첫 문자열에 여는 작은따옴표, 마지막 문자열에 닫는 작은따옴표를 넣습니다. 변수는 그 사이에서 실제 값으로 평가됩니다.

이 글의 strCity·intId·dtOrder는 VBA 변수 예제입니다. 폼 컨트롤 값을 가져올 때는 실행 위치에 맞는 참조로 바꾸어야 합니다. "[도시]='strCity'"처럼 변수 이름까지 따옴표 안에 고정하면 서울이 아니라 strCity라는 글자를 비교하게 됩니다.

&는 문자열 바깥에서 연결하고 AND는 내용 안에 둡니다

"[도시]='" & strCity & "' AND [상품번호]=" & intId에서 strCity=서울, intId=7이라면 최종 결과는 [도시]='서울' AND [상품번호]=7입니다. &는 세 조각을 연결하는 연산자이고 AND는 데이터베이스가 읽을 조건 문구입니다.

따라서 "& strCity &"를 큰따옴표 안에 넣으면 변수 계산이 아니라 그 글자 자체가 남습니다. 또 AND 앞뒤의 공백을 빠뜨려 값과 다음 필드가 붙지 않았는지도 봅니다. 먼저 실제 결과 문자열을 써 보면 어느 기호가 남아야 하는지 분명해집니다.

날짜 #은 완성된 리터럴의 양쪽을 감쌉니다

고정 날짜 예제는 "[주문일]=#10/14/2026#"입니다. 바깥 큰따옴표가 문자열을 만들고 그 안의 두 #이 날짜 리터럴을 구분합니다. 이 예제의 날짜는 2026년 10월 14일이며 시험 일정 정보가 아닙니다.

날짜 변수 dtOrder를 그대로 글자로 연결하면 지역 설정에 따라 월·일 순서가 달라질 수 있습니다. Microsoft는 VBA에서 SQL 문자열에 날짜를 연결할 때 미국식 날짜 표현을 사용하도록 안내합니다. #이 있다는 것만 확인하고 날짜 내용의 순서를 놓치지 마세요.

Month·Day·Year로 날짜 내용을 분명히 만들 수 있습니다

"[주문일]=#" & Month(dtOrder) & "/" & Day(dtOrder) & "/" & Year(dtOrder) & "#"는 날짜 부분을 월/일/년 순서로 구성하는 VBA 예제입니다. dtOrder가 유효한 날짜 값이고 2026년 10월 14일이라면 결과는 [주문일]=#10/14/2026#입니다.

이 예제는 날짜 부분만 비교할 때의 문자열 작성 연습입니다. Null이나 유효하지 않은 값, 시간까지 저장된 필드를 하루 전체로 검색하는 문제는 추가 처리가 필요합니다. 날짜 비교 기호가 =인지 >=·<인지도 지시문에 맞게 따로 확인하세요.

O'Brien은 따옴표 개수만 맞춰도 오류가 날 수 있습니다

strName이 O'Brien이면 "[성]='" & strName & "'"의 결과는 [성]='O'Brien'입니다. 값 안의 작은따옴표가 경계 기호와 충돌하므로 단순한 작은따옴표 감싸기를 그대로 쓰면 문제가 생깁니다.

Microsoft가 안내하는 다른 구성법 중 하나는 Chr$(34)로 큰따옴표를 연결하는 것입니다. "[성]=" & Chr$(34) & strName & Chr$(34)는 [성]="O'Brien"을 만듭니다. 이 예제는 값 안에 큰따옴표가 없다는 전제입니다. 임의 입력에 모든 인용부호가 섞인 경우까지 안전하다는 뜻은 아니며 실제 입력 처리에서는 별도 검증·매개변수 쿼리 등을 검토해야 합니다.

대괄호는 필드명, 따옴표와 #은 비교값입니다

완성 조건 [도시]='서울'에서 [도시]는 Domain의 필드이고 '서울'은 텍스트 값입니다. [주문일]=#10/14/2026#에서는 [주문일]이 필드, # 사이 내용이 날짜입니다. 기호의 종류를 왼쪽과 오른쪽으로 나누어 표시하세요.

공백이나 특수문자가 들어 있는 필드명은 대괄호로 구분합니다. 다만 대괄호로 감쌌다고 없는 필드명이나 다른 테이블의 필드가 해결되지는 않습니다. 필드명이 틀린 것인지 값 구분자가 틀린 것인지를 별도 오류로 분류하세요.

복합 조건과 Null 조건은 기호 외에 뜻도 봅니다

([도시]='서울' OR [도시]='부산') AND [상태]='완료'는 두 도시 중 하나에 속하면서 완료인 레코드를 찾는 조건입니다. AND는 둘 다, OR는 둘 중 하나라는 요구를 나타냅니다. 여러 조건을 섞을 때는 의도한 묶음을 괄호로 보여 주세요.

[탈퇴일] Is Null은 날짜가 입력되지 않은 레코드를 찾습니다. [탈퇴일]=Null이나 [탈퇴일]='Null'로 바꾸지 마세요. 빈 문자열과 Null도 서로 다릅니다. Null 대체값과 DCount 반환값 전체는 기존 Null 처리·함수 선택 가이드의 범위입니다.

오류를 찾는 네 단계: 자료형·값·최종 문장·Domain

1단계는 필드와 비교값의 자료형을 확인하는 것입니다. 2단계는 변수·컨트롤에 들어 있는 실제 값을 확인합니다. 3단계는 연결 결과를 한 줄로 적어 따옴표·#·공백·AND/OR를 점검합니다. 4단계는 사용한 필드가 Domain 안에 있는지 확인합니다.

함수 Criteria와 쿼리 디자인의 조건 행도 구분하세요. 조건 행은 이미 선택한 필드에 대한 값·연산자를 입력하지만, 도메인 함수의 Criteria는 비교할 필드명까지 포함한 문자열입니다. 입력 위치를 보지 않고 같은 조각을 그대로 옮기지 마세요.

직접 만든 연습문제 7개

아래는 실제 기출이 아닌 자체 연습입니다. VBA 변수의 값은 문제에 적힌 그대로라고 가정하고, 먼저 연결된 문자열이나 수정한 조건을 쓰세요. 답은 다음 섹션에 따로 두었습니다.

1. strCity=서울일 때 "[도시]='" & strCity & "'"의 최종 문자열은 무엇인가요?

2. 정수 변수 intId=7일 때 "[상품번호]=" & intId의 최종 문자열은 무엇인가요?

3. 회원코드는 텍스트형이고 값은 007입니다. [회원코드]=7과 [회원코드]='007' 중 어느 조건이 자료형과 값을 그대로 반영하나요?

4. 주문일을 2026년 10월 14일과 비교할 날짜 리터럴을 미국식 월/일/년으로 쓰세요. 필드명까지 포함한 완성 조건을 적으세요.

5. strName=O'Brien이며 값 안에 큰따옴표는 없습니다. "[성]=" & Chr$(34) & strName & Chr$(34)의 최종 문자열은 무엇인가요?

6. 서울 또는 부산에 속하면서 상태가 완료인 레코드를 찾는 조건을 도시 묶음에 괄호를 넣어 쓰세요.

7. [탈퇴일]=Null을 날짜가 입력되지 않은 레코드를 찾는 조건으로 수정하세요.

정답·해설: 경계 기호와 내용이 각각 맞는지 보세요

1번은 [도시]='서울'입니다. 텍스트 값 양쪽에 작은따옴표가 남습니다. 2번은 [상품번호]=7입니다. 정수 숫자에는 텍스트용 값 구분자가 필요 없습니다.

3번은 [회원코드]='007'입니다. 숫자처럼 보이는 코드도 텍스트형이라는 전제를 지킵니다. 4번은 [주문일]=#10/14/2026#입니다. 날짜 리터럴의 양쪽 #과 월/일/년 순서를 함께 확인합니다.

5번은 [성]="O'Brien"입니다. 큰따옴표가 값을 감싸고 작은따옴표는 이름의 일부로 남습니다. 인용부호가 어떤 역할인지 확인해야 하며, 이 예제를 모든 임의 입력의 안전 처리로 일반화하지 않습니다.

6번은 ([도시]='서울' OR [도시]='부산') AND [상태]='완료'입니다. 7번은 [탈퇴일] Is Null입니다. 맞힌 문제도 문자열을 변수식으로 되돌려 어디에서 연결해야 하는지 한 번 더 설명해 보세요.

시험 직전 다섯 줄 요약과 참고 자료

1. 문따·날샵·숫그냥은 완성 문자열 속 값 구분자입니다. 2. Criteria를 감싸는 바깥 큰따옴표와 값 안의 따옴표는 서로 다른 층입니다. 3. 변수는 바깥에서 &로 연결하고 텍스트 구분자·날짜 #은 결과 안에 남깁니다.

4. 값 안의 인용부호, 텍스트 코드의 앞자리 0, 날짜 월·일 순서를 확인합니다. 5. AND/OR·Null·Domain 필드는 문장 뜻까지 대조합니다. 틀린 문자열만 다시 만들고 DB 심화 단원에서 관련 개념을 복습하세요.

DLookup·DCount의 Criteria와 인용부호 구성법은 Microsoft Learn, 미국식 날짜 연결은 Microsoft의 날짜 형식 안내, 복합·Null 조건과 입력 위치는 Microsoft Support의 쿼리 기준 예제로 대조했습니다. 예제는 직접 작성했으며 실제 Access 실행·기출·출제 빈도 검증을 주장하지 않습니다.

FAQ

자주 묻는 질문

DLookup 조건식의 큰따옴표와 작은따옴표는 왜 같이 있나요?

바깥 큰따옴표는 Criteria 문자열을 만들고, 그 내용 안의 작은따옴표는 텍스트 비교값을 감쌉니다. "[도시]='서울'"의 실제 문자열 내용은 [도시]='서울'입니다. 문자열 자체의 자료형과 비교값의 자료형을 구분하세요.

DCount 날짜 조건에 #만 넣으면 충분한가요?

날짜 리터럴 양쪽에 #을 넣고 내용의 월·일 순서와 비교 연산자도 확인해야 합니다. VBA에서 날짜를 연결할 때는 미국식 월/일/년 표현을 명확히 만드세요. 시간·Null 등 추가 조건은 별도로 처리해야 합니다.

숫자처럼 보이는 코드 007에도 따옴표가 필요한가요?

필드가 텍스트형이면 필요합니다. [회원코드]='007'처럼 코드의 자료형과 앞자리 0을 유지합니다. 필드 이름이나 화면 모양만으로 숫자형을 추정하지 말고 문제에 제시된 자료형부터 확인하세요.

DLookup에서 이름에 작은따옴표가 있으면 어떻게 하나요?

O'Brien을 단순히 작은따옴표로 감싸면 값 내부 기호가 경계와 충돌할 수 있습니다. 큰따옴표를 만드는 Chr$(34) 등 공식 문서의 다른 구성법을 검토하세요. 값에 큰따옴표까지 있으면 그 예제만으로 안전하다고 볼 수 없습니다.

무료 학습 도구

시간과 점수 감각을 바로 확인하세요

모의고사 전에는 시간 배분을, 채점 후에는 예상 점수를 확인하세요.