책 내용 질문하기
엑세스의 이벤트 프로시저 하위폼에 있는 컨트롤명에 대해서
도서
2026 한 권으로 끝내는 시나공 컴활 1급 필기+실기 (컴퓨터활용능력 1급)
페이지
428
조회수
122
작성일
2026-05-11
작성자
안*진
첨부파일

영상에서 설명해주신대로 그 폼에 있는 컨트롤명으로 조건을 지정하는 것이 아니라 그 폼의 하위폼에 해당하는 컨트롤명으로 조건을 지정할때, 프로시저에서는 [forms]![그 폼][그 폼의 하위폼]![컨트롤명](프로시저이기에 문자 취급, 날짜 취급해야한다.) 이런 식으로 조건을 작성해야 한다.라는 것은 이해가 되는데요.
만약에 매크로에서 openreport를 사용하여 필드명이 그 폼의 하위폼에 해당하는 컨트롤명이랑 같은 것만을 이라는 형식으로 문제가 나오면 아까와 같이 [필드명]=[forms]![그 폼][그 폼의 하위폼]![컨트롤명](메크로이기에 문자취급, 날짜 취급 안 해야한다.) 이런 식으로 지정하면 될까요?
그리고 만약에 d~함수에서 그폼의 하위 폼에 해당하는 컨트롤명에 해당하는 필드명에 해당하는 ~ 과 같은 형식으로 나오면 ex) dsum("필드","테이블 or 쿼리","필드=그폼의 하위폼의 컨트롤명") 이런 식으로 앞서 프로시저와 매크로와는 다르게 그냥 하위폼에 있는 컨트롤명으로 지정해줘도 될까요?
질문이 많네요;;

답변
2026-05-12 09:22:52

안녕하세요.

예, 맞습니다.

1. 매크로(OpenReport)에서의 하위 폼 참조

매크로의 Where 조건문에서 하위 폼의 컨트롤을 참조할 때, 실장님이 생각하신 방향이 맞습니다. 하지만 문법을 아주 조금만 더 정교하게 다듬어야 합니다.

올바른 형식: [필드명] = [Forms]![기본폼명]![하위폼컨트롤명].Form![컨트롤명]

주의사항: .Form 추가: 기본 폼 안에 있는 것은 '하위 폼' 자체가 아니라 하위 폼을 담고 있는 '그릇(컨트롤)'입니다. 그 그릇 안에 담긴 실제 폼의 컨트롤을 부르려면 반드시 중간에 .Form을 써주어야 엑셀이 "아, 그릇 안에 있는 폼으로 들어가라는 거구나!"라고 알아듣습니다.

구분 기호 : 말씀대로 매크로 작성기(필드 작성기)를 이용할 때는 문자(')나 날짜(#) 구분 기호를 직접 쓰지 않아도 엑셀이 자동으로 인식하는 경우가 많습니다.

2. 도메인 함수(DSum, DLookup 등)에서의 참조

결론부터 말씀드리면 "도메인 함수도 프로시저와 마찬가지로 전체 경로를 다 써주는 것이 원칙"입니다.

잘못된 예: DSum("필드", "테이블", "필드 = [하위폼컨트롤명]") (← 엑셀이 이 컨트롤이 어디에 붙어 있는지 찾지 못해 오류가 납니다.)

올바른 예: DSum("필드", "테이블", "필드 = " & [Forms]![기본폼]![하위폼컨트롤].Form![컨트롤])

즐거운 하루 되세요.

  • 관리자
    2026-05-12 09:22:52

    안녕하세요.

    예, 맞습니다.

    1. 매크로(OpenReport)에서의 하위 폼 참조

    매크로의 Where 조건문에서 하위 폼의 컨트롤을 참조할 때, 실장님이 생각하신 방향이 맞습니다. 하지만 문법을 아주 조금만 더 정교하게 다듬어야 합니다.

    올바른 형식: [필드명] = [Forms]![기본폼명]![하위폼컨트롤명].Form![컨트롤명]

    주의사항: .Form 추가: 기본 폼 안에 있는 것은 '하위 폼' 자체가 아니라 하위 폼을 담고 있는 '그릇(컨트롤)'입니다. 그 그릇 안에 담긴 실제 폼의 컨트롤을 부르려면 반드시 중간에 .Form을 써주어야 엑셀이 "아, 그릇 안에 있는 폼으로 들어가라는 거구나!"라고 알아듣습니다.

    구분 기호 : 말씀대로 매크로 작성기(필드 작성기)를 이용할 때는 문자(')나 날짜(#) 구분 기호를 직접 쓰지 않아도 엑셀이 자동으로 인식하는 경우가 많습니다.

    2. 도메인 함수(DSum, DLookup 등)에서의 참조

    결론부터 말씀드리면 "도메인 함수도 프로시저와 마찬가지로 전체 경로를 다 써주는 것이 원칙"입니다.

    잘못된 예: DSum("필드", "테이블", "필드 = [하위폼컨트롤명]") (← 엑셀이 이 컨트롤이 어디에 붙어 있는지 찾지 못해 오류가 납니다.)

    올바른 예: DSum("필드", "테이블", "필드 = " & [Forms]![기본폼]![하위폼컨트롤].Form![컨트롤])

    즐거운 하루 되세요.

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