Dlookup, Dsum, Davg("필드","원본","조건")
원본은 테이블이나 쿼리를 의미함
꼭 전부 따옴표를 붙여주기!
| 용어 | 역할 | 쉽게 비유 |
|---|---|---|
| 테이블(Table) | 데이터를 저장하는 기본 표 | 엑셀의 시트 |
| 필드(Field) | 테이블의 열 → 데이터의 속성/종류 | 엑셀 시트의 열 제목 |
| 레코드(Record) | 테이블의 행 → 한 건의 데이터 | 엑셀 시트의 한 줄 |
| 쿼리(Query) | 테이블에 있는 데이터를 가져오거나 가공하는 도구 | 엑셀의 필터, 수식, 피벗테이블 같은 기능 |
Q1. 본문의 ‘txt씨앗명’ 컨트롤에는 씨앗코드가 ‘txt씨앗코드’에 해당하는 씨앗명이 표시되도록 설정하시오.
A1. Dlookup("씨앗명","씨앗","씨앗코드 = txt씨앗코드")
Q2. 씨앗코드가 ‘txt씨앗코드’에 해당하는 입고수량의 합계가 표시되도록 설정하시오.
A2. DSum("입고수량","씨앗입고","씨앗코드=txt씨앗코드")
속성시트 - 폼 - 기타 - 모달
폼이 로드 될 때 다른 개체들이 선택되지 않도록 관련 속성을 설정 -> 모달 예!
같은 문자를 여러 번 반복해서 만든 문자열을 반환하는 함수
String(number, character)
반복할 횟수, 반복할 문자. 문자는""로 감쌀 것
DateAdd(interval, number, date)
| 인수 | 설명 |
|---|---|
| interval | 더하거나 뺄 단위 (문자열) |
| number | 더하거나 뺄 숫자 (음수면 빼기) |
| date | 기준이 되는 날짜/시간 |
interval(단위) 코드
| 코드 | 의미 | 예시 |
|---|---|---|
"yyyy" | 연도 | 1년 후 |
"q" | 분기 | 1분기 후 |
"m" | 월 | 2개월 후 |
"y" | 일(연도 기준) | 5일 후 |
"d" | 일(월·연도 무관) | 10일 후 |
"w" | 요일(일주일 단위) | 1주 후 |
"ww" | 주(연도 기준) | 3주 후 |
"h" | 시 | 5시간 후 |
"n" | 분 | 30분 후 |
"s" | 초 | 10초 후 |
날짜 이후는 크거나 같다(>=)
조건에 따라 값을 다르게 반환하는 함수(CASE WHEN 같은 역할)
IIf(조건, 참일 때 값, 거짓일 때 값)
괄호를 쓰지 않는다!
값 Mod 나눌값
인덱스 번호를 기준으로 여러 값 중 하나를 선택해서 반환하는 함수
choose는 1부터 시작!
Choose(index, 값1, 값2, 값3, ...)
REPLACE(문자, 고칠문자, 새문자)
DATEPART("날짜형식",날짜)
[필드명] = [forms]![현재폼명]![컨트롤명]
‘txt전화번호’ 컨트롤에 연결된 전화번호가 * 형태로 표시 되도록 암호화하기 위해 입력마스크를 설정하시오.
데이터 - 입력마스크 - password
access의 조건 : 필드명 = 컨트롤명
예제
" 이름 = ' " & txt검색 & " ' "(문자일경우 작은따옴표, 컨트롤에 들어가는 값을 반드시 문자라는 뜻)
- 문자는 ''
- 날짜는 ##
- 숫자는 아무것도 붙이지 말 것
필드 = 데이터베이스의 "열"
레코드 = 데이터베이스의 "행"
컨트롤 = 폼/보고서에서 데이터(필드 값)를 표시하거나 조작하는 "도구"
txt검색, cmd해제 ...
me.filter = 조건
me.filteron = true
me.recordsource = "select * from 테이블 where 조건 "
‘최고주문량(cmd최고주문량)’ 버튼을 클릭하면 ‘수량’의 값이 10이상 20이하인 값만 검색되도록 하시오.
‘txt월조회’ 컨트롤에 입고일자의 월을 입력하고 ‘조회(cmd조회)’ 단추를 클릭하면 입고일자의 월에 해당하는 레코드만 조회되는 이벤트 프로시저를 구현하시오.
‘txt최소수량’ 컨트롤에는 입고수량의 최소값을 입력하고 ‘txt최대수량’ 컨트롤에는 입고수량의 최대값을 입력한 후 ‘검색(cmd검색)’ 단추를 클릭하면 입고수량의 최소수량과 최대수량 사이의 레코드가 조회되도록 이벤트 프로시저를 구현하시오
me.recordsetclone.findfirst "조건"
me.bookmark = me.recordsetclone.bookmark
| 구분 | 목적 | 비유 | 기억 키워드 |
|---|---|---|---|
| RecordSource | 데이터 집합 바꾸기 | 책을 통째로 갈아치움 | 소스(Source) = 재료 바꾸기 |
| RecordsetClone + Bookmark | 현재 데이터에서 이동 | 책 페이지 넘김 | 북마크(Bookmark) = 위치 표시 |
me.orderby = "필드명 "
me.orderbyon = true
=, " 붙이는거 잊지말기...
docmd.applyfilter, "조건"
docmd.openform "폼이름", acnormal
docmd.openform "폼이름", acnormal,,"조건"
docmd.openform "폼이름", acpreview,,"조건" -> 인쇄미리보기
docmd.gotorecord acDataForm, "폼이름", acNewRec
acNewRec : 새로운 레코드로 이동
dim aa
aa = msgbox(내용, ybYesNo, "")
if aa = vbYes then
do cmd.close
end if
if txt구매수량 <= 1 then
msgbox "내용"
end if ~ ..
vbyesnocancel
acSaveYes -> 자동저장(저장여부 묻지않음)
txt이름.setFocus
txt이름.FontBold = True
requery메서드 쓰라는게 이거임!
docmd.runsql " ~~~ "
여기서는 "text주소" 이런 따옴표 안함
insert into 테이블명(필드명, 필드명 ...) values(값1, 값2, ..)
docmd.runsql "insert into ~ ..."
예시
DoCmd.RunSQL "insert into 회원 values ( text고객ID, text이름,text전화번호,text우편번호,text주소, text이메일)"
Me.Requery # 바로실행하라는 의미
update 테이블명 set 필드명 = 값
delete from 테이블명 where 조건식
| 구분 | DoCmd | Me. |
|---|---|---|
| 역할 | Access에 **"명령"**을 내리는 것 | 현재 열려 있는 폼/보고서 자기 자신을 조작 |
| 의미 | "Do Command" → Access에 시켜서 실행 | "나(Me)" → 지금 실행 중인 개체의 속성/메서드 |
| 사용 범위 | 다른 폼, 보고서, DB 전체에 적용 가능 | **현재 개체(폼/보고서)**에만 적용 |
| 예시 | DoCmd.OpenForm "폼이름" → 다른 폼 열기 | Me.Filter = "조건" → 지금 보고 있는 폼에 필터 적용 |
me
- 필터
Me.Filter = "조건"
Me.FilterOn = True- 레코드 소스
Me.RecordSource = "SELECT * FROM 테이블 WHERE 조건"- 레코드셋 클론 + 북마크 (특정 레코드로 이동)
Me.RecordsetClone.FindFirst "조건"
Me.Bookmark = me.RecordsetClone.Bookmark- 정렬
Me.OrderBy = "필드명"
Me.OrderByOn = True- 컨트롤 포커스/속성 변경
txt이름.SetFocus
txt이름.FontBold = True
docmd
- 필터 적용
DoCmd.ApplyFilter , "조건"- 폼/보고서 열기
DoCmd.OpenForm "폼이름", acNormal
DoCmd.OpenForm "폼이름", acNormal, , "조건"
DoCmd.OpenForm "폼이름", acPreview, , "조건" ' 인쇄 미리보기- 레코드 이동
DoCmd.GoToRecord acDataForm, "폼이름", acNewRec- SQL 실행
DoCmd.RunSQL "INSERT INTO ... "
바꿀이름명: 원래이름
바꿀이름 뒤에 : 딱붙이고, 원래 이름 앞에 한 칸 띄우는게 포인트!
주소지: REPLACE([주소],"서울특별시","서울시")
주소는 원래 있던 필드니까 []로 씌워주기!
첫글자가 a~d로 시작 -> 조건 LIKE "[A-D]*"
[], *, "", LIKE 모두 중요함!
쿼리 만들때 조건에 들어가는 IN은 []안함
EX) 씨앗명이 양귀비와 메밀꽃
=> 조건 IN("양귀비","메밀꽃")
개수, 합계, 요약, 최대/최소는 요약에 들어가서 해야함!
조건에 []를 이용해서 적기!
Like "" & [검색할 씨앗명의 일부를 입력하시오] & ""
<씨앗> 테이블의 씨앗코드에는 존재하지만 <주문> 테이블의 씨앗코드에는 존재하지 않는 자료를 조회하는 쿼리를 작성하시오.
조인속성