상위 문서: Microsoft Access
관련 문서: SQL/문법
1. 개요
액세스에서 유효성 검사 규칙, 컨트롤의 데이터 원본, 쿼리 where 조건문 등에서 주로 사용되는 함수를 모아놓은 문서다.Microsoft Access 명령이 SQL이므로 문법 문서도 참고할 수 있다.
2. 연산자와 예약어
- like: 함수처럼 보이지만 함수가 아니며 =과 같은 우선순위를 가지는 연산자로 조회 속성에서 특정 값을 포함하는 검색식을 세울 때 만능 문자와 같이 쓴다. 회원명 like *txt이름* 또는 회원명 like "*" & txt이름 & "*" 이렇게 쓰면 회원명은 반드시 txt이름에 쓰여진 값을 포함하는 내용만 취급한다는 의미다.
- and, or: 그리고, 또는.
- not: 부정
- <>: 다름
- is null: 값이 없다는 뜻. 액셀 프로시저에서 x = " "라고 쓰듯이 여기서는 x is null로 표현한다. 주로 쿼리 조건절에서 사용한다.
- 날짜에서 ddd는 Mon, Tue, Fri 식으로, dddd는 Monday, Friday 식으로 표시된다. 금, 일은 aaa, 금요일, 일요일은 aaaa로 쓴다.
- [page]와 [pages]: 보고서에서만 쓸 수 있는 예약어로 [page]는 현재 페이지, [pages]는 전체 페이지 쪽수를 의미한다.
- &: 액셀과 마찬가지로 두 개 이상의 문자와 값을 이어서 보여준다.
- 모든 함수 인수는 문자열이나 조건을 쓸 때는 " "로 묶으며 날짜는 # #,조건 안에 문자열은 ' '로 묶는다. 숫자는 그대로 쓴다.
3. 계산 함수
- between 숫자 and 숫자: 두 숫자 사이의 값을 범위로 정한다는 뜻.
- mod: 액셀의 mod와는 다르게 f(a, b) 형식이 아니다. 나머지를 구할 때 쓴다. 9 mod 4 = 1이다.
- sum([필드]): 주어진 필드값들의 합계를 구한다.
- avg([필드]): 필드값들 평균. 여기선 average가 아닌 avg란 것에 주의.
- count([필드]): 개수 구하기. 레코드 자체를 센다면 count(*)이라 쓴다.
- max([필드]): 최댓값. 최솟값은 min([필드])다.
- dsum("필드이름", "테이블이름", "조건"): 특정 테이블에서 어떤 필드값의 합을 계산하되, 특정 조건을 민족하는 레코드만 계산 대상에 넣는다. 합이 아닌 평균, 개수, 최대, 최소값을 구하려면 dsum 대신 davg, dcount, dmax, dmin과 같이 쓴다. 쓰는 형식은 아래의 dlookup 함수와 같다. 엑셀은 필드와 테이블의 위치가 바뀌었다고 생각하면 이해가 쉽다.
4. 일반 함수
- Dlookup("필드이름", "테이블이름", "조건"): 특정 테이블에서 조건에 맞는 필드를 표시하는 함수. 가령 회원정보라는 테이블에 대해 폼에서 텍스트 상자 txt이름에 쓰인 이름과 같은 회원명의 전화번호를 추출한다면 표시하려는 컨트롤 원본은 dlookup("전화번호", "회원정보", "회원명=txt이름") 과 같이 써주면 된다. 홍길동이라는 이름만 빼내려면 dlookup("전화번호", "회원정보", "회원명= '홍길동' ") 식으로 조건을 쓸 때 ' '를 붙여주자.
- format(식, "형식"): 식을 특정한 형식으로 보여주는 함수. 액셀의 text 함수와 같다. 예를 들어 count(*) = 132이면 format(count(*), "■ 총 개수 "":"" [1] #개 ■")로 쓸 때 ■ 총 개수: 132개 ■와 같이 표시되는 격. 통화 기호 ₩를 써주려면 반드시 ₩₩ 또는 \\ 식으로 두번 써야 한다.
- iif("조건", 참일 때 값, 거짓일 때 값): 엑셀과 똑같지만 if가 아닌 iif이므로 주의하자.
- switch("조건1", 값1, "조건2", 값2, ...): 조건1이 참이면 값1을, 조건2가 참이면 값2를 나타낸다.
- in(인수, 인수, 인수 ... ): 액셀의 or함수와 비슷하다. In ("A", "B", "C")는 A 또는 B 또는 C라는 의미다.
- choose(인수, 값1, 값2, ...): 인수가 1이면 값1을, 인수가 2이면 값2를 내놓는다.
5. 날짜 함수
- now(): 현재 날짜와 시간을 알려주는 함수로 액셀과 똑같다.
- Date(): 위의 now()와는 다르게 날짜만 나타낸다. 엑셀 today()와 비슷하다. 시간만 나타내려면 time()을 해준다.
- year(인수): 인수를 날짜값으로 읽어서 그 날짜의 연도만 보여주는 함수. 월만 보여주려면 month(인수)를 쓴다.
- datediff("단위", 시작일, 종료일): 시작일과 종료일의 차이를 나타낸다. 단위가 무엇이냐에 따라 년월일만큼 차이가 나는데 예를 들어 datediff("m", [가입일], date())이라 쓰면 가입일에서 오늘까지 몇 달이 걸렸는 지를 쓰는 것이요, 단위에서 m대신 yyyy를 쓰면 몇 년이 지났는지를 쓰는 것이다. 마찬가지로 "d"를 사용한다면 며칠이 지났는지를 의미한다.
- dateadd("단위", 숫자, 날짜): 특정 날짜에 특정 숫자를 단위만큼 더하라. 곧 dateadd("yyyy",5,date())는 오늘로 부터 5년이 지난 해를 계산해준다.
- datepart("단위", 날짜): 입력한 날짜를 주어진 단위로 바꿔준다.
- dateserial(년, 월, 일): dateserial(2015,8,5)=2015년 8월 5일.
6. 문자 함수
- Len("문자열"): 이 필드에 저장된 레코드 문자열 길이를 나타내는 함수다. 유효성 검사 규칙에 len([회원명]) >= 2와 같이 적으면 회원명 필드의 모든 레코드는 반드시 2글자 이상이어야 한단 뜻이다.
- Instr("문자열", "문자"): 어떤 문자열에서 내가 정한 글자가 몇 번째 자리에 있는지 알려주는 함수. 예를 들어 instr("대한민국", "민")=3이다. 종종 문제에서 특정 필드에 공백을 입력하지 못하게 하란 지시가 있는데 바로 이럴 때 데이터 유효성 검사 규칙 칸에 instr([필드명], " ")=0처럼 써주면 된다.
- ucase("문자열"): 문자열을 모두 대문자로. 액셀의 upper()와 같다. 입력 마스크에서는 >를 쓰면 그 뒤에 모든 문자가 대문자로 변한다.
- lcase("문자열"): 문자열을 모두 소문자로 한다. 엑셀 Lower()와 같다.
- left(인수, 숫자) / right(인수, 숫자): 액셀과 똑같이 문자(인수)의 왼/오른쪽에서 몇 번째 자리까지 있는 문자 데이터를 뽑아낸다. 예를들어 left(League of Legends,6)=League이다.
- string(표시개수, 표시문자): 어떤 문자를 정해진 수만큼 반복하라는 뜻.
- lenb("문자열"): 해당 문자열 바이트 값을 표시한다.
- trim("문자열"): 엑셀과 똑같이, 들어있는 문자열 바깥쪽 공백을 없앤다.
- ltrim("문자열") / rtrim("문자열"): trim과 다르게, 왼쪽/오른쪽 공백만 없애준다.
- replace("문자1", "문자2", "문자3"): 문자1에 있는 글자 중, 문자2에 있는 글자를 찾아서 문자3으로 바꾼다. 예를 들어 replace("홍길동", "길", "정") 으로 하면 홍정동으로 나온다.
7. 매크로 함수
- msgbox: 메세지를 표시하는 함수. 프로시저와는 달리 매크로에서는 아주아주 간단한 메세지 창만 뜨도록 되어있다. 내용과 타이틀 두 가지로 나뉘어져 있으니 주의할 것.
- Applyfilter: 필터를 적용시키는 함수로 프로시저 filter와 다른 점은 조건을 지정할 때 필드명='txt필드' 가 아닌 [필드명]=[forms]![폼이름]![txt필드] 와 같이 써줘야 한다. 아래 나머지 매크로 함수도 모두 동일하다.
- Openform / Openreport: 폼을 연다. 조회 조건을 지정하려면 필터 이름이 아닌 where문에 써야 한다.
- gotorecord: 특정 레코드(이전, 다음, 처음, 마지막, 새 레코드 등등)으로 간다.
- Close: 해당 개체를 닫는다.
8. 입력 마스크
- 입력마스크는 ① ; ② ; ③ 과 같은 형식으로 작성된다.
①은 정의문자, ②은 기호저장(0은 저장, 1과 생략은 저장X), ③표시문자(기본설정은 _) - 정의문자
0: 필수요소 숫자
9: 선택요소 숫자나 공백
#: 선택요소 숫자나 공백, ±사용 가능
L: 필수요소 문자
?: 선택요소 문자
A: 필수요소 문자·숫자
a: 선택요소 문자·숫자
&: 필수요소 모든문자·공백
C: 선택요소 모든문자·공백
<>: 이후의 문자를 모두 소·대문자로 변환
₩: 바로 다음에 오는 문자가 그대로 표시
[1] 콜론이나 샵(#)같은 특수 문자들은 형식 안에서 특정한 역할을 하는데 이들을 문자 그대로 화면에 나타내려면 큰 따옴표를 양 옆에 2개씩 해줘야 한다.