이벤트 프로시저를 작성할때 어떤 경우는 예를 들어 [제조사] 이렇게 []를 쓰고 어떤 경우는 그냥제조사 이렇게 쓰던데 무슨 경우에 따라 나뉘나요? 뭐 txt제품코드, cmb조회 이런거는[] 안쓰는 것 같았는데 오늘 where 조건문에 [제품코드] like "*" & [forms]![제품별조회]![txt제품코드] & "*" 이렇게 쓰길래 아닌것 같아서요
안녕하세요.
핵심은 [ ]가 “필드에만 붙는 기호”가 아니라, 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제품코드에는 []를 안 붙이고, 제품코드에는 붙인다라는 규칙은 아닙니다. 어디에서 그 이름을 참조하느냐에 따라 표현 방식이 달라진다고 이해하시면 됩니다.즐거운 하루 되세요.