상세 컨텐츠

본문 제목

[컴활 1급 Access 벼락치기] 한 번에 정리하는 일반함수&데이터베이스함수

자격증/벼락치기 Series

by IT개미 데이터 2020. 12. 18. 17:17

본문

728x90

함수[Function]

  • 엑세스 함수는 엑셀 함수와 약간의 차이가 있음
  • #은 숫자값이 없으면 아무 표시 안함
    0은 숫자값이 없으면 0으로 표시
  • 필드명은 반드시 [ ]안에 작성
IIF(조건,참일 때 값, 거짓일 때 값) 엑셀의 IF와 유사[Immediate IF]
COUNT() Count(*) : Null값을 포함한 전체 레코드의 개수
Count([필드명]) : Null값을 제외한 레코드의 개수
SUM() 합계를 구하는 함수
    ex1> =SUM([납입액])
FORMAT(계산값, 형식) 계산값을 정해진 형식으로 출력하는 함수
    ex1> =FORMAT(SUM([납입액]),"소계는 #,###원입니다.")
    ex2> =FORMAT(NOW(), "yyyy년 m월 dd일 hh시")
    ex3> =FORMAT(COUNT(*), "#건")
    ex4> =FORMAT([Page], "000페이지")
    ex5> =FORMAT(COUNT(*), "총 0명입니다.")
            ="총" & FORMAT(COUNT(*),"0") & "명입니다.)
WEEKDAY(날짜, 타입) 형식에 맞는 날짜의 요일의 숫자를 출력하는 함수
    타입 : 1,2,3
            1 : 일(1)부터 시작[일(1), 월(2)...]
            2 : 월(1)부터 시작[월(1), 화(2)...]
            3 : 월(0)부터 시작[월(0), 화(1)...]
Choose(조건,1일 때 출력값, 2일때 출력값....) 조건에서 출력되는 값이 1일 때, 2일 때 .... 각각 다른 값을 출력하는 함수
    ex1>Choose(Weekday([입사일],2),"월요일","화요일","수요일","목요일","금요일","토요일","일요일")
나누어질 대상 MOD 나눌 수 '나누어질 대상'을 '나눌 수'로 나누었을 때 나머지를 구하는 함수 
엑셀과 약간 다름[엑셀 : MOD(나누어질 대상, 나눌 수)]
    ex1> =IIF([Page] Mod 2 = 0, [Page] & "/" & [Pages])
         짝수 페이지 일때만 페이지 표시[2/27, 4/27]
SWITCH(조건1,값1,조건2,값2...) 조건에 해당하는 값을 출력하는 함수
InStr(시작위치, [필드명],"찾을 문자") 주어진 필드의 데이터를 시작위치에서부터 "찾을 문자"의 위치번호를 출력하는 함수
    처음부터 찾는다면 시작위치 생략 가능
    단, 찾을 문자가 없는 경우 0을 출력
    ex1> InStr([필드명]," ")=0
        공백이 없는 데이터만 찾는다는 의미
    ex2> InStr([이름], "이")>=1
         "이"라는 문자가 하나라도 있는 문자열을 찾는다는 의미
NOW() 오늘 날짜 및 시간을 출력하는 함수
DATE() 오늘 날짜만 출력하는 함수
DateAdd("날짜 형식",경과한 날짜,날짜) 해당 날짜로부터 날짜 형식에 해당하는 경과한 날짜 계산
    ex1> '납품일자'필드에서 10년을 더해 나타내시오.
           DateAdd("yyyy",10,[납품일자])
DateDiff("날짜 형식",날짜1,날짜2) 날짜1에서 날짜2까지 사이의 날수를 날짜 형식에 맞게 출력
    ex1> '납품일자'필드에서 오늘까지 경과한 날수를 일수로 나타내시오.
           DateDiff("d",[납품일자],Date())

    ♣ DateAdd, DateDiff함수의 날짜 형식 : yyyy(년), m(월), d(일), y(1년 기준 일), w(요일), ww(1년 기준 주)

# 날짜 형식

더보기
년 표시 형식 월 표시 형식 일 표시형식
yy 20 m 7 d 7
yyyy 2020 mm 07 dd 07
    mmm JUL ddd MON
영어로 해당 일의 요일 표시
    mmmm JULY dddd MONDAY
영어로 해당 일의 요일 표시
        aaa
한글로 해당 일의 요일 표시
        aaaa 월요일
한글로 해당 일의 요일 표시
  • AM/PM   : AM/PM으로 표시
    AMPM    : 오전/오후로 표시
  • hh : 시
    nn : 분
    ss : 초

 

특수 연산자를 이용한 질의

IN * 필드의 값이 IN 연산자의 인수로 지정된 값에 해당하는 레코드만 검색하는 것
* OR연산자를 수행한 결과와 동일[값1 OR 값2 OR .....]
* WHERE 필드/식 IN(값1, 값2..)
BETWEEN * 필드의 값이 Between 연산자의 범위로 지정된 값 이내에 포함되는 레코드만 검색하는 것
* AND연산자를 수행한 결과와 동일
* WHERE 필드/식 BETWEEN 값1 AND 값2
LIKE * 대표 문자를 이용해 필드의 값의 일부와 일치하는 레코드만 검색
* WHERE 필드/식 LIKE '문자 패턴'
     ex1> LIKE"*포함될 문자*"
            Like와 *를 함께 사용할 경우 문자열에 포함되는 문자열을 쉽게 찾을 수 있음
NOT * 필드의 값이 NOT 다음에 기술한 연산자의 결과에 포함되지 않는 레코드만 검색
* WHERE 필드/식 NOT 다른 연산자

※ 엑세스/프로시저에서 대소문자 설정

  엑셀 엑세스/프로시저
대문자 UPPER UCASE
소문자 LOWER LCASE

 

 

 

 

데이터베이스함수

  • =함수명("계산할 필드명", "테이블/쿼리", "조건")
DCOUNT 지정한 조건에 맞는 데이터베이스 필드에서 숫자를 포함한 셀의 수를 구함
    ex> =DLOOKUP("출력할 필드명", "활용할 테이블명", "조건")
            출력할 필드명은 일반적으로 *로 설정
DCOUNTA 지정한 조건에 맞는 데이터베이스 필드에서 비어있지 않은 셀의 수를 구함
DLOOKUP 지정한 조건에 맞는 데이터베이스 필드에서 특정 필드 값을 추출
    ex> =DLOOKUP("출력할 필드명", "활용할 테이블명", "조건")
DSUM 지정한 조건에 맞는 데이터베이스 필드에서 합계를 구함
DSTDEV 데이터베이스 필드의 값들로부터 표본집단의 표준편차를 구함
DGET 데이터베이스에서 찾는 조건에 맞는 레코드가 하나인 경우, 그 레코드를 추출

 

※ DSUM,IIF함수를 활용해 아래 조건에 맞는 결과가 나타나도록 설정하시오

  • 100,000~1,000,000사이의 '금액'의 합이 10,000,000이상 'VVIP', 1,000,000이상 'VIP', 그외는 'PREMIUM'이 나타나도록 설정하시오 
  • 컨트롤 원본 선택
  • =IIF(DSUM("금액", "테이블명/쿼리명","금액>=100000 AND 금액<=1000000")>=10000000, "VVIP",IIF(DSUM("금액", "테이블명/쿼리명","금액>=100000 AND 금액<=1000000")>=1000000, "VIP","PREMIUM")

       ★ IIF[Immediate if]는 엑셀의 IF와 동일

 

※ DLOOKUP함수를 활용해 아래 조건에 맞는 결과가 나타나도록 설정하시오

  • 컨트롤 원본 선택

    ex1>

  • <사원>테이블을 이용해 본문의 'Txt입사일'에는 사번에 해당하는 입사일이 표시되도록 설정
  • =DLOOKUP("입사일","사원","사번=Txt사번")

   ex2>

  • <사원>테이블을 이용해 사번이 'Txt사번'에 해당하는 입사일이 표시되도록 설정
        → ex1과 같은 말!!!
  • =DLOOKUP("입사일","사원","사번=Txt사번")

 

 

 

 

 

728x90

관련글 더보기

댓글 영역