폼완성

도메인 집계 함수

Dlookup, Dsum, Davg("필드","원본","조건")
원본은 테이블이나 쿼리를 의미함
꼭 전부 따옴표를 붙여주기!

용어역할쉽게 비유
테이블(Table)데이터를 저장하는 기본 표엑셀의 시트
필드(Field)테이블의 → 데이터의 속성/종류엑셀 시트의 열 제목
레코드(Record)테이블의 → 한 건의 데이터엑셀 시트의 한 줄
쿼리(Query)테이블에 있는 데이터를 가져오거나 가공하는 도구엑셀의 필터, 수식, 피벗테이블 같은 기능
  • 필드 : 가져올 필드명(열이름), 출력할 값 의미
    필드를 쓸 때는 무조건 대괄호!
    표시 예 : 씨앗명 금계국의 총 입고수량이 10인 경우 → 금계국 총입고수량 10개
    =[씨앗명] & " 총입고수량 " & DSum("입고수량","씨앗입고","씨앗코드=txt씨앗코드") & "개"
  • 원본 : 값을 찾을 원본(테이블명 또는 쿼리명)
  • 조건 : 찾을 조건

Q1. 본문의 ‘txt씨앗명’ 컨트롤에는 씨앗코드가 ‘txt씨앗코드’에 해당하는 씨앗명이 표시되도록 설정하시오.

A1. Dlookup("씨앗명","씨앗","씨앗코드 = txt씨앗코드")

Q2. 씨앗코드가 ‘txt씨앗코드’에 해당하는 입고수량의 합계가 표시되도록 설정하시오.

A2. DSum("입고수량","씨앗입고","씨앗코드=txt씨앗코드")

모달

속성시트 - 폼 - 기타 - 모달
폼이 로드 될 때 다른 개체들이 선택되지 않도록 관련 속성을 설정 -> 모달 예!

함수

string

같은 문자를 여러 번 반복해서 만든 문자열을 반환하는 함수

String(number, character)
반복할 횟수, 반복할 문자. 문자는""로 감쌀 것

dateadd

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초 후

날짜 이후는 크거나 같다(>=)

iif

조건에 따라 값을 다르게 반환하는 함수(CASE WHEN 같은 역할)
IIf(조건, 참일 때 값, 거짓일 때 값)

mod

괄호를 쓰지 않는다!
값 Mod 나눌값

choose

인덱스 번호를 기준으로 여러 값 중 하나를 선택해서 반환하는 함수
choose는 1부터 시작!
Choose(index, 값1, 값2, 값3, ...)

REPLACE

REPLACE(문자, 고칠문자, 새문자)

DATEPART

DATEPART("날짜형식",날짜)

매크로

조건

[필드명] = [forms]![현재폼명]![컨트롤명]

보고서

암호화

‘txt전화번호’ 컨트롤에 연결된 전화번호가 * 형태로 표시 되도록 암호화하기 위해 입력마스크를 설정하시오.

데이터 - 입력마스크 - password

이벤트 프로시저

access의 조건 : 필드명 = 컨트롤명

예제
" 이름 = ' " & txt검색 & " ' "(문자일경우 작은따옴표, 컨트롤에 들어가는 값을 반드시 문자라는 뜻)

  • 문자는 ''
  • 날짜는 ##
  • 숫자는 아무것도 붙이지 말 것

필드 = 데이터베이스의 "열"
레코드 = 데이터베이스의 "행"

컨트롤 = 폼/보고서에서 데이터(필드 값)를 표시하거나 조작하는 "도구"
txt검색, cmd해제 ...

filter

me.filter = 조건
me.filteron = true

recordsource

me.recordsource = "select * from 테이블 where 조건 "

  • ‘최고주문량(cmd최고주문량)’ 버튼을 클릭하면 ‘수량’의 값이 10이상 20이하인 값만 검색되도록 하시오.

  • ‘txt월조회’ 컨트롤에 입고일자의 월을 입력하고 ‘조회(cmd조회)’ 단추를 클릭하면 입고일자의 월에 해당하는 레코드만 조회되는 이벤트 프로시저를 구현하시오.

  • ‘txt최소수량’ 컨트롤에는 입고수량의 최소값을 입력하고 ‘txt최대수량’ 컨트롤에는 입고수량의 최대값을 입력한 후 ‘검색(cmd검색)’ 단추를 클릭하면 입고수량의 최소수량과 최대수량 사이의 레코드가 조회되도록 이벤트 프로시저를 구현하시오

bookmark

me.recordsetclone.findfirst "조건"
me.bookmark = me.recordsetclone.bookmark

  • ‘txt찾기’ 컨트롤에 씨앗명의 일부를 입력하고 ‘찾기(cmd찾기)’ 단추를 클릭하면 입력된 값을 포함하는 첫 번째 레코드로 이동하는 이벤트 프로시저를 구현하시오.

recordSource vs recordSetClone

구분목적비유기억 키워드
RecordSource데이터 집합 바꾸기책을 통째로 갈아치움소스(Source) = 재료 바꾸기
RecordsetClone + Bookmark현재 데이터에서 이동책 페이지 넘김북마크(Bookmark) = 위치 표시

orderby

me.orderby = "필드명 "
me.orderbyon = true
=, " 붙이는거 잊지말기...

applyfilter

docmd.applyfilter, "조건"

openform/report

docmd.openform "폼이름", acnormal
docmd.openform "폼이름", acnormal,,"조건"
docmd.openform "폼이름", acpreview,,"조건" -> 인쇄미리보기

gotorecord

docmd.gotorecord acDataForm, "폼이름", acNewRec
acNewRec : 새로운 레코드로 이동

msgbox

dim aa
aa = msgbox(내용, ybYesNo, "")

if aa = vbYes then
do cmd.close
end if

if txt구매수량 <= 1 then
msgbox "내용"
end if ~ ..

vb

vbyesnocancel
acSaveYes -> 자동저장(저장여부 묻지않음)

setfocus

txt이름.setFocus
txt이름.FontBold = True

sql구조

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 vs me

구분DoCmdMe.
역할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 "" & [검색할 씨앗명의 일부를 입력하시오] & ""

불일치쿼리

<씨앗> 테이블의 씨앗코드에는 존재하지만 <주문> 테이블의 씨앗코드에는 존재하지 않는 자료를 조회하는 쿼리를 작성하시오.

조인속성

0개의 댓글