다른 질문 답에서 정답만 같으면 상관없다하셨는데 []로 했을 때는 되고 ""로 했을 때는 되지 않습니다.
이 차이가 왜 생기는지 알고 싶습니다
안녕하세요.
좋은 질문입니다. 이 경우는 '정답만 같으면 된다'가 적용되지 않는 예외입니다.
핵심은 []와 ""의 역할이 완전히 다르기 때문입니다.
1. []는 "필드나 컨트롤을 참조"하는 기호입니다.
예를 들어,
[txt학번]
은 현재 폼의 txt학번 컨트롤 값을 의미합니다.
또는
[학번]
은 테이블의 학번 필드를 의미합니다.
즉, Access가 실제 값을 가져와 계산합니다.
2. ""는 "문자열"입니다.
예를 들어,
"학번=Left(txt학번,7)"
은 단순한 문자열입니다.
하지만 DLookUp의 세 번째 인수는 원래 문자열 형태의 조건식을 요구합니다.
즉,
DLookUp(필드, 테이블, 조건식)
에서 조건식은
"학번=1001"
처럼 문자열이어야 합니다.
Access는 이 문자열을 다시 해석하여 검색을 수행합니다.
왜 아래 수식은 안 될까요?
DLookUp("성명","학생",[학번]=Left([txt학번],7))
Access는 먼저
[학번]=Left([txt학번],7)
을 계산합니다.
즉,
1001 = 1001
처럼 계산하여 결과가
True
또는
False
가 됩니다.
그러면 DLookUp은
DLookUp("성명","학생", True)
를 실행하게 되는데, 세 번째 인수는 문자열이어야 하므로 올바른 조건식이 아닙니다.
반대로 이 수식은 가능한 이유
DLookUp("성명","학생","학번=Left(txt학번,7)")
세 번째 인수 전체가 문자열입니다.
DLookUp은 내부에서
학번=Left(txt학번,7)
이라는 문자열을 조건식으로 다시 해석하여 검색합니다.
그럼 언제 []와 ""를 바꿔도 결과만 같으면 인정되나요?
예를 들어
=[가격]*0.1
과
=[가격]/10
처럼 같은 값을 계산하는 식은 결과만 같으면 대부분 인정됩니다.
하지만 DLookUp, DSum, DCount 같은 도메인 함수의 세 번째 인수는 '조건식 문자열'이라는 문법 자체가 정해져 있으므로, []를 사용한 일반 비교식으로는 대체할 수 없습니다.
즉, 이번 사례는 결과의 문제가 아니라 함수의 문법(인수 형식)의 문제이기 때문에 채점 프로그램뿐 아니라 Access 자체에서도 서로 같은 식으로 취급하지 않습니다.
즐거운 하루 되세요.
-
관리자2026-07-31 09:23:53
안녕하세요.
좋은 질문입니다. 이 경우는 '정답만 같으면 된다'가 적용되지 않는 예외입니다.
핵심은
[]와""의 역할이 완전히 다르기 때문입니다.1.
[]는 "필드나 컨트롤을 참조"하는 기호입니다.예를 들어,
[txt학번]은 현재 폼의
txt학번컨트롤 값을 의미합니다.또는
[학번]은 테이블의
학번필드를 의미합니다.즉, Access가 실제 값을 가져와 계산합니다.
2.
""는 "문자열"입니다.예를 들어,
"학번=Left(txt학번,7)"은 단순한 문자열입니다.
하지만 DLookUp의 세 번째 인수는 원래 문자열 형태의 조건식을 요구합니다.
즉,
DLookUp(필드, 테이블, 조건식)에서 조건식은
"학번=1001"처럼 문자열이어야 합니다.
Access는 이 문자열을 다시 해석하여 검색을 수행합니다.
왜 아래 수식은 안 될까요?
DLookUp("성명","학생",[학번]=Left([txt학번],7))Access는 먼저
[학번]=Left([txt학번],7)을 계산합니다.
즉,
1001 = 1001처럼 계산하여 결과가
True또는
False가 됩니다.
그러면 DLookUp은
DLookUp("성명","학생", True)를 실행하게 되는데, 세 번째 인수는 문자열이어야 하므로 올바른 조건식이 아닙니다.
반대로 이 수식은 가능한 이유
DLookUp("성명","학생","학번=Left(txt학번,7)")세 번째 인수 전체가 문자열입니다.
DLookUp은 내부에서
학번=Left(txt학번,7)이라는 문자열을 조건식으로 다시 해석하여 검색합니다.
그럼 언제
[]와""를 바꿔도 결과만 같으면 인정되나요?예를 들어
=[가격]*0.1과
=[가격]/10처럼 같은 값을 계산하는 식은 결과만 같으면 대부분 인정됩니다.
하지만 DLookUp, DSum, DCount 같은 도메인 함수의 세 번째 인수는 '조건식 문자열'이라는 문법 자체가 정해져 있으므로,
[]를 사용한 일반 비교식으로는 대체할 수 없습니다.즉, 이번 사례는 결과의 문제가 아니라 함수의 문법(인수 형식)의 문제이기 때문에 채점 프로그램뿐 아니라 Access 자체에서도 서로 같은 식으로 취급하지 않습니다.
즐거운 하루 되세요.