책 내용 질문하기
이벤트 프로시저
도서
2026 시나공 컴퓨터활용능력1급 실기 기본서
페이지
0
조회수
35
작성일
2026-09-04
작성자
권*산
첨부파일

이벤트 프로시저를 작성할때 어떤 경우는 예를 들어 [제조사] 이렇게 []를 쓰고 어떤 경우는 그냥제조사 이렇게 쓰던데 무슨 경우에 따라 나뉘나요? 뭐 txt제품코드, cmb조회 이런거는[] 안쓰는 것 같았는데 오늘 where 조건문에 [제품코드] like "*" & [forms]![제품별조회]![txt제품코드] & "*" 이렇게 쓰길래 아닌것 같아서요

답변
2026-09-04 15:50:08

안녕하세요.

핵심은 [ ]가 “필드에만 붙는 기호”가 아니라, Access에서 이름(식별자)을 명확하게 구분해 주는 기호라는 점입니다. 그래서 필드명뿐 아니라 폼, 컨트롤 이름에도 붙을 수 있습니다.

예를 들어 질문하신 조건문을 나누어 보면 이해하기 쉽습니다.

"[제품코드] Like '*' & [Forms]![제품별조회]![txt제품코드] & '*'"

각각의 의미는 다음과 같습니다.

  • [제품코드] → 현재 레코드 원본의 필드명

  • [Forms] → 열려 있는 폼들을 가리키는 Access의 Forms 컬렉션

  • [제품별조회]폼 이름

  • [txt제품코드] → 그 폼에 있는 컨트롤 이름

txt제품코드에도 [ ]를 사용할 수 있습니다. txt라서 대괄호를 안 쓰는 것이 아닙니다.

반면 VBA 이벤트 프로시저에서 현재 폼의 컨트롤을 직접 사용할 때는 보통 이렇게 작성합니다.

txt제품코드 = ""
cmb조회 = "전체"

또는 좀 더 명시적으로

Me.txt제품코드 = ""
Me.cmb조회 = "전체"

처럼 씁니다. 이때는 VBA가 txt제품코드를 현재 폼의 컨트롤 이름으로 바로 인식하기 때문에 [txt제품코드]라고 쓸 필요가 없습니다.

필드도 이름이 단순하면 대괄호를 생략할 수 있습니다.

제품코드

[제품코드]

가 Access 식에서 모두 인식될 수 있습니다. 다만 공백·특수문자가 들어가거나 예약어와 겹치는 이름은 [ ]가 필요합니다.

예를 들어

[제품 코드]    ← 공백이 있으므로 [ ] 필요
[판매 금액]
[Date]         ← 예약어와 충돌할 수 있어 [ ] 사용 권장

따라서 컴활 문제에서는 이렇게 생각하시면 가장 편합니다.

VBA에서 컨트롤을 직접 조작할 때

txt제품코드
cmb조회
Me.txt제품코드

조건식·SQL 등 Access의 식 안에서 필드나 폼/컨트롤을 참조할 때

[제품코드]
[Forms]![제품별조회]![txt제품코드]

처럼 [ ]를 자주 사용합니다.

그리고 질문하신

[Forms]![제품별조회]![txt제품코드]

에서 !도 중요합니다. 이것은 쉽게 말해 “Forms 컬렉션에 있는 제품별조회 폼의 txt제품코드 컨트롤”을 찾아가는 Access식의 참조 방식입니다.

따라서 txt제품코드에는 []를 안 붙이고, 제품코드에는 붙인다라는 규칙은 아닙니다. 어디에서 그 이름을 참조하느냐에 따라 표현 방식이 달라진다고 이해하시면 됩니다.

즐거운 하루 되세요.

  • 관리자
    2026-09-04 15:50:08

    안녕하세요.

    핵심은 [ ]가 “필드에만 붙는 기호”가 아니라, Access에서 이름(식별자)을 명확하게 구분해 주는 기호라는 점입니다. 그래서 필드명뿐 아니라 폼, 컨트롤 이름에도 붙을 수 있습니다.

    예를 들어 질문하신 조건문을 나누어 보면 이해하기 쉽습니다.

    "[제품코드] Like '*' & [Forms]![제품별조회]![txt제품코드] & '*'"

    각각의 의미는 다음과 같습니다.

    • [제품코드] → 현재 레코드 원본의 필드명

    • [Forms] → 열려 있는 폼들을 가리키는 Access의 Forms 컬렉션

    • [제품별조회]폼 이름

    • [txt제품코드] → 그 폼에 있는 컨트롤 이름

    txt제품코드에도 [ ]를 사용할 수 있습니다. txt라서 대괄호를 안 쓰는 것이 아닙니다.

    반면 VBA 이벤트 프로시저에서 현재 폼의 컨트롤을 직접 사용할 때는 보통 이렇게 작성합니다.

    txt제품코드 = ""
    cmb조회 = "전체"

    또는 좀 더 명시적으로

    Me.txt제품코드 = ""
    Me.cmb조회 = "전체"

    처럼 씁니다. 이때는 VBA가 txt제품코드를 현재 폼의 컨트롤 이름으로 바로 인식하기 때문에 [txt제품코드]라고 쓸 필요가 없습니다.

    필드도 이름이 단순하면 대괄호를 생략할 수 있습니다.

    제품코드

    [제품코드]

    가 Access 식에서 모두 인식될 수 있습니다. 다만 공백·특수문자가 들어가거나 예약어와 겹치는 이름은 [ ]가 필요합니다.

    예를 들어

    [제품 코드]    ← 공백이 있으므로 [ ] 필요
    [판매 금액]
    [Date]         ← 예약어와 충돌할 수 있어 [ ] 사용 권장

    따라서 컴활 문제에서는 이렇게 생각하시면 가장 편합니다.

    VBA에서 컨트롤을 직접 조작할 때

    txt제품코드
    cmb조회
    Me.txt제품코드

    조건식·SQL 등 Access의 식 안에서 필드나 폼/컨트롤을 참조할 때

    [제품코드]
    [Forms]![제품별조회]![txt제품코드]

    처럼 [ ]를 자주 사용합니다.

    그리고 질문하신

    [Forms]![제품별조회]![txt제품코드]

    에서 !도 중요합니다. 이것은 쉽게 말해 “Forms 컬렉션에 있는 제품별조회 폼의 txt제품코드 컨트롤”을 찾아가는 Access식의 참조 방식입니다.

    따라서 txt제품코드에는 []를 안 붙이고, 제품코드에는 붙인다라는 규칙은 아닙니다. 어디에서 그 이름을 참조하느냐에 따라 표현 방식이 달라진다고 이해하시면 됩니다.

    즐거운 하루 되세요.

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