자격증 ⁺₊

컴활1급 실기 Access 문제3 조회 및 출력 기능 구현 정리

by ₊⁺우산이끼⁺₊ 2022. 8. 16.
반응형

컴활 1급 실기 액세스 문제3 정리본입니다. 프로시저 함수 관련해서는 강의를 한 번 듣는게 좋습니다. 정리된 것만 보면 뭔소린지 헷갈릴 것 같아요. 솔직히 저도 이해 안 되는 건 문제랑 답을 통으로 외워버려서;😅 쉬운게 나오길 기대합시다.

문제3 조회 및 출력 기능 구현 (20점)

1. 보고서 작성 (15점) -3점짜리 5문제

해당 그룹 내에서 일련번호가 표시되도록 설정해라 ▶컨트롤 원본 =1
    -이 그룹을 중심으로 누적되도록 ▶누적합계 '그룹'
    -합계가 전체 레코드를 대상으로 누적되도록 ▶누적합계 '모두'

*최근 날짜부터 = 내림차순

폼이 로드될 때 00필드 기준으로 오름차순 정렬 ▶데이터 탭 - 정렬 기준

선 만들기: 디자인 탭에서 선택해서 문제 이미지처럼 그림. 높이 0으로 바꾸면 -자 모양으로

 

2. 이벤트 프로시저 (5점) -5점짜리 1문제

속성 시트 - 이벤트 탭 - 해당되는 이벤트 오른쪽 끝의 … 클릭 - 코드 작성기 선택

*사용해야 하는 속성과 함수는 문제에서 제시된다.
*들여쓰기 해도 되고 안 해도 됨. 헷갈리면 하는 게 좋음.

● 자주 사용되는 조건절: "필드이름= ' "& txt필드이름 &"'"

● If문
If 조건 Then
실행내용
ElseIf 조건 Then
실행내용
Else
실행내용
End If

 

● 정렬
Me.OrderBy = "필드명 asc/desc"
Me.OrderByOn = True

*asc는 오름차순, desc는 내림차순. 둘 중 하나만 입력.

 

● 메시지 박스
MsgBox "출력내용", "버튼 종류", "메시지상자이름(생략 가능)"

*버튼 종류
vbYesNo : 예, 아니오 둘 다
vbYes : 예를 누른 경우
vbOKOnly : 확인 버튼만(기본값)

※ Docmd를 이용한 메시지 박스 출력
(예) 버튼 종류가 vbYesNo일 때, '예'를 누르면 저장여부를 묻지 않고 저장한 후 폼을 종료.
a = MsgBox("폼을 정말로 종료하겠습니까?", vbYesNo, "폼종료")
If a = vbYes Then
    DoCmd.Close , , acSaveYes
End If

*a는 변수이므로 다른 문자로 해도 상관없음.

○ 메시지 상자에 물품명 표시
Msgbox "물품명은 " & dlookup("물품명","물품","txt물품코드=물품코드") & "입니다."

 

● 폼 열기
DoCmd.OpenForm "폼이름", 보기형태(acNormal 기본값으로 생략가능), 필터이름(생략), "조건절"

 

● GotoRecord, SetFocus

(예)봉사내역관리 폼의 입력 단추를 클릭하면 새 레코드가 추가, 추가된 레코드의 봉사내용 컨트롤로 포커스 이동
Docmd.GotoRecord acDataForm, "봉사내역관리", acNewRec
txt봉사내용.SetFocus

 

● Filter
:조건에 맞는 레코드 추출하기 (Me = 현재 폼)

Me.Filter = 조건식
Me.FilterOn = True

문자 :  Me.filter = "제품명 = '" & txt제품명 & "'"
숫자 :  Me.filter = "제품명 = " & txt점수 
날짜 :  Me.filter = "날짜 = # " & txt날짜 & "#"
식 :  Me.filter = "식 = ___"

*먼저 작은따옴표를 붙이고, 컨트롤을 구분하기 위해 &를 붙임.

○조건이 두 개 이상인 경우 and, or 사용
문자 : Me.Filter = "년도 = '" & txt년도 & "' AND 월 = '" & txt월 & "'"
숫자 : Me.Filter = "년도 =" & txt년도 & " AND 월=" & txt월

○입력된 값을 포함하는 경우 (일부를 입력)
문자 : Me.Filter = "물품명 like '*" & txt조회 & "*'"
(별표 앞뒤에 작은 따옴표 붙이기)

(예) 콤보 상자에서 특정 값 선택하고 버튼을 누르면 'cmb환자코트' 컨트롤에서 선택한 환자의 자료만 표시할 것.
Me.Filter = "환자코드 = '" & cmb환자코드 & "'"
Me.FilterOn = True

 

● RecordSource
숫자 : Me.recordsource = "select * from 테이블/쿼리 where 코드 = " & txt코드
문자 : Me.recordsource = "select * from 테이블/쿼리 where 코드 = '" & txt코드 & "'" 

특정 문자 포함:  Me.recordsource = "select * from 폼/레코드원본 where 코드 like '*" & txt컨트롤이름 & "*'"

○ 정렬까지 해야 하는데 문제에 Recordsource만 있고 Orderby가 없을 때
Me.RecordSource = "select * from 원본테이블 where 조건문 order by 필드"

(예)<학과관리>폼에서 'txt조회'에 학과명을 포함하는 글자를 입력한 다음 '조회(cmd조회)' 버튼을 클릭하면 해당하는 자료가 조회. [학교명] 기준으로 오름차순 정렬
데이터 원본: 학과종합
Me.recordsource = "select * from 학과종합 where 학과명 like '*" & txt조회 & "*' order by 학교명"

 

● RecordsetClone, Bookmark

RecordsetClone : 어떤 데이터를 첫 번째를 찾아서 가져옴.
Bookmark : 폼에 가져오는 함수

(예) txt조회 컨트롤에 조회할 제품명을 입력한 후 cmd조회 단추를 클릭하면 입력된 '제품명'과 동일한 제품의 주문 정보만 표시
Me.RecordsetClone.FindFirst "제품명='" & txt조회 & "'"
Me.Bookmark = Me.RecordsetClone.Bookmark

 

● 기타 함수

새 래코드 추가
▶DoCmd.GoToRecord adDataForm, "폼 이름", acNewRec

포커스 이동
▶컨트롤이름.SetFocus

컨트롤 공백 처리
▶txt조회 = ""

 

● RunSQL

삽입/업데이트/삭제

Docmd.runsql insert into 테이블(필드1, 필드2, …) values(1, 값2, …)
Me.Requery

Docmd.runsql update 테이블명 set 필드= where 조건문
Me.requery

Docmd.runsql delete from 테이블명 where 조건문

반응형

댓글