이벤트 프로시저
데이터베이스의 특정 개체에 설정된 이벤트가 발생할 때 자동으로 수행되는 프로시저
데이터 주요 이벤트
이벤트 |
이벤트 속성 |
발생시기 |
BeforeUpdate |
Before Update |
컨트롤이나 레코드의 데이터가 업데이트되기 전에 발생 |
AfterUpdate |
After Update |
컨트롤이나 레코드의 데이터가 업데이트된 후 발생 |
BeforeInsert |
Before Insert |
새 레코드에 첫 문자열을 입력할 때 발생[레코드가 만들어지기 전] |
AfterInsert |
After Insert |
새 레코드가 추가된 후에 발생 |
Current |
On Current |
포커스가 임의의 레코드로 이동되어 그 레코드가 현재 레코드가 되거나 폼이 새로 고쳐지거나 다시 질의될 때 발생 |
Charge |
On Charge |
텍스트 상자의 내용이나 콤보 상자의 텍스트 부분이 바뀔 때, 탭 컨트롤에서 다른 페이지로 이동할 때 발생 |
Delete |
On Delete |
레코드를 삭제할 때, 삭제를 확인해서 실제로 삭제되기 전에 발생 |
마우스 주요 이벤트
이벤트 |
이벤트 속성 |
발생 시기 |
Click |
On Click |
컨트롤을 마우스 왼쪽 단추로 클릭하거나 폼에서 컨트롤의 바깥쪽을 클릭할 경우 발생 |
DbClick |
On Dbl Click |
컨트롤을 마우스 왼쪽 단추로 두 번 클릭할 때 발생함 |
Mouse Down |
On Mouse Down |
포인터가 폼이나 컨트롤에 있는 동안 마우스 단추를 누를 때 발생 |
창의 주요 이벤트
이벤트 |
이벤트 속성 |
발생시기 |
Open |
On Open |
폼을 열어 레코드를 처음으로 표시하기 전이나 보고서를 열어 인쇄하기 전에 발생 |
Close |
On Close |
폼이나 보고서를 닫아 화면에서 사라질 때 발생 |
Load |
On Load |
폼을 열어 레코드들이 표시될 때 발생 Current이벤트 전에 발생하고 Open이벤트 후에 발생 |
Resize |
On Resize |
폼의 크기가 바뀔 때와 폼이 처음으로 표시될 때 발생 |
Unload |
On Unload |
폼이 닫히고 레코드가 언로드될 때 이 폼이 화면에 사라지기 전에 발생 Close이벤트 전에 발생 |
포커스 이벤트
이벤트 |
이벤트 속성 |
발생시기 |
Activate |
On Activate |
폼이나 보고서가 활성화될 때 발생 |
Deactivate |
On Deactivate |
Access의 활성 창이 다른 창으로 바뀔 때, 다른 창이 활성 창이 되기 전에 발생 |
Enter |
On Enter |
폼의 다른 컨트롤에서 특정 컨트롤로 포커스가 실제로 옮겨질 때 발생 |
Exit |
On Exit |
같은 폼에서 한 컨트롤이 다른 컨트롤로 포커스를 읽기 전에 발생 |
GotFocus |
On Got Focus |
즉, 컨트롤이나 폼에 포커스가 옮겨갈때 이벤트 발생 → 폼은 사용 가능한 컨트롤이 없는 폼
|
LostFocus |
On Lost Focus |
폼이나 컨트롤이 포커스를 잃을 때 발생 |
주요 프로시저 속성
속성명 |
설명 |
RecordSource |
레코드원본 설정 |
MSGBOX"출력될 메시지" MSGBOX("출력될 메시지", 버튼옵션,"메시지창 명") |
출력될 메시지 입력 * 버튼 옵션 : vbYesNo, 변수를 사용할 경우, 어떤 버튼을 눌렀는지 저장됨 |
gotorecord(개체타입, "개체명", 이동할 위치) |
레코드 위치 이동 * 개체 타입 : acDataForm * 이동할 위치 : acNewRec, acLast, acFirst |
|
|
ME 개체[Access 개체]
현재 폼에서 자신의 폼을 제어할 때 사용
Filter |
* 조건을 사용해 데이터를 filter할 때 사용 RecordSource와 유사 * 데이터 형식이 텍스트 형식일 때는 작은 따옴표 사용 숫자일 때는 그냥 쓰면 됨!! * 숫자일 때 "필드명 = " & 컨트롤명 문자열일 때 "필드명 = '" & 컨트롤명 &"'" 날짜형일 때 "필드명 =#" & 컨트롤명 &"#" 문자열 일부와 일치 "필드명 like '*" & 컨트롤명 & "*'" ex1> Me.Filter = "지역코드 = '"& cmb지역조회 & "'" Me.FilterOn = True ex2> 'txt조회'컨트롤에 입력된 부서코드에 해당하는 자료들만 표시 Me.Filter = "부서코드 = '"& txt조회 & "'" Me.FilterOn = True |
RecordSource |
* 시트에서 불러온 데이터를 콤보상자나 목록상자의 목록값에 배정할 때 사용 Column은 열의 번호를 이용해 해당 열의 데이터를 가져올 때 사용 * Me.RecordSource = "select 필드명 from 테이블명 where 조건" Me.RecordSource = "테이블명" ex1> Me.RecordSource = "select * from 요금명 where 요금코드 = '" & cmb조회 & "'" |
Recordsetclone.FindFirst |
* 폼의 레코드를 복사해 조건에 맞는 첫번째 자료를 찾음 ex1> Me.Recordsetclone.FindFirst "조건" ex2> Me.Recordsetclone.FindFirst "학번 = '" & txt조회 & "'" |
bookmark |
* 북마크를 설정 ex1> Me.Bookmark = Me.RecordsetClone.Bookmark → 현재 폼의 북마크에 찾아놓은 복사레코드의 북마크 대입 |
Orderby |
* 해당 필드를 오름차순 혹은 내림차순으로 정렬할 때 사용 ex1> Me.Orderby = "해당 필드명 desc/asc" Me.OrderbyOn = True |
DoCmd 개체[Access 개체]
Microsoft Access 매크로 함수를 Visual Basic에서 실행하기 위한 개체
OpenReport |
작성된 보고서를 호출하는 매크로 함수를 수행 ex1> DoCmd.OpenReport "보고서명", 여는방법, 필터이름(생략 시 공백),"조건" |
OpenForm |
작성된 폼을 호출하는 매크로 함수를 수행 ex1> DoCmd.OpenForm "폼 명", 여는방법, 필터이름(생략 시 공백),"조건" ex2> DoCmd.OpenForm "폼 명"
|
OpenQuery |
작성된 쿼리를 호출하는 매크로 함수를 수행 ex1> DoCmd.OpenQuery "쿼리 명" ex2> DoCmd.OpenQuery "명단추가" |
RunSQL |
SQL문을 실행하는 매크로 함수를 수행 * 검색 : SELECT 필드명 FROM 테이블명 WHERE 조건 * 갱신 : UPDATE 테이블명 SET 변경내용 WHRE 조건 * 삭제 : DELETE 필드명 FROM 테이블명 WHERE 조건 * 추가 : INSERT INTO 테이블(필드1, 필드2) VALUES(값1, 값2)
ex1> DoCmd.RunSQL "DELETE * FROM "명단1" |
RunCommand |
액세스 내부에서 제공하는 명령을 실행시키는 매크로 함수를 수행 |
RunMacro |
매크로를 실행하는 매크로 함수를 수행 |
OutputTo |
데이터베이스 개체를 엑셀, 텍스트 등으로 내보내는 매크로 함수를 수행 |
Close |
활성화되어 있는 데이터베이스 개체를 닫는 매크로 함수를 수행 |
Quit |
액세스를 종료하는 매크로 함수를 수행 |
Requery |
개체의 데이터를 수정한 후 그 결과를 반영 |
ApplyFilter |
조건을 사용해 데이터를 filter할 때 사용 ex1> Docmd.ApplyFilter 필터이름, "조건" ex2> Docmd.ApplyFilter ,"학번 ='" & txt조회 & "'" |
폼의 컨트롤 경로
- 현재 폼 : [컨트롤명]
- 외부 폼 : [FORMS]![외부폼 명]![컨트롤명]
- 하위 폼 : [하위폼 명].FORM![컨트롤명]
프로시저 설정
방법1. 이벤트 프로시저 활용
- 해당 폼/레이블의 속성 시트에서 이벤트 탭 클릭
- 문제에서 주어진 이벤트에서 [...]아이콘 클릭
- 매크로 작성기/식 작성기/코드 작성기 중 코드 작성기 선택
방법2. 프로시저 켜서 직접 작성
- 프로시저 단축키[Alt + F11]
- 해당 폼 클릭해서 프로시저 작성
※ 폼 가동시 테이블이 레코드원본으로 설정되도록 프로시저 설정
- 폼 시트 속성 : 폼의 빈공간 더블클릭 혹은 단축키[F4]
- 이벤트 탭에서 Load의 [...]아이콘 선택
- 코드 작성기 선택
- Private Sub Form_Load()
Me.RecordSource = "select 필드명 from 테이블명 where 조건"
End Sub
→ 보통 폼/보고서의 레코드소스를 지정할 땐 필드명에 *를 사용
- Private Sub Form_Load()
Me.RecordSource = "테이블명"
End Sub
- ex1> 폼이 가동되면 '상품정보'테이블이 레코드 원본으로 설정되도록 프로시저를 작성하시오.
Private Sub Form_Load()
Me.RecordSource = "select * from 상품정보"
End Sub
※ 폼 가동시 컨트롤이 보이지 않도록 프로시저 설정
[해당 컨트롤과 연계된 레이블 상자도 표시되지 않도록 설정]
- 폼 시트 속성 : 폼의 빈공간 더블클릭 혹은 단축키[F4]
- 이벤트 탭에서 Load의 [...]아이콘 선택
- 코드 작성기 선택
- Private Sub Foam_Load()
컨트롤명.Visible = False
End Sub
※ 폼 가동시 새로운 레코드가 나타나도록 프로시저 설정
- 폼 시트 속성 : 폼의 빈공간 더블클릭 혹은 단축키[F4]
- 이벤트 탭에서 Load의 [...]아이콘 선택
- 코드 작성기 선택
지정된 컨트롤에 포커스가 위치하도록 이벤트 프로시저를 작성하시오.
DoCmd 개체와 GoToRecord, SetFocus 메서드를 이용하시오.
- Private Sub Foam_Load()
DoCmd.GoToRecord acDataForm, "폼 명". acNewRec
지정된 컨트롤명.SetFocus
End Sub
※ 폼 가동시 'txt날짜' 컨트롤 값이 비어있다면 오늘날짜가 나오도록 프로시저 설정
- 폼 시트 속성 : 폼의 빈공간 더블클릭 혹은 단축키[F4]
- 이벤트 탭에서 Load의 [...]아이콘 선택
- 코드 작성기 선택
ISNULL, DATE함수 사용
- Private Sub Foam_Load()
If ISNULL(txt날짜) Then
txt날짜 = date()
End If
End Sub
※ 폼 가동시 커서를 이동시키고 탭정지 되지 않는 프로시저 설정
- 폼 시트 속성 : 폼의 빈공간 더블클릭 혹은 단축키[F4]
- 이벤트 탭에서 Load의 [...]아이콘 선택
- 코드 작성기 선택
'txt프로그램명'컨트롤로 커서를 이동시키고 'txt요일'컨트롤은 탭정지되지 않도록 하시오.
SetFocus,TabStop함수 사용
- Private Sub Foam_Load()
txt프로그램명.SetFocus
txt요일.TapStop = False
End Sub
※ 폼 활성화(Activate)될 때, 컨트롤에 포커스가 위치하도록 프로시저 설정
- 폼 시트 속성 : 폼의 빈공간 더블클릭 혹은 단축키[F4]
- 이벤트 탭에서 On Activate의 [...]아이콘 선택
- 코드 작성기 선택
SetFocus 메서드를 이용하시오.
글꼴 크기를 77로 지정하시오.
- Private Sub Foam_Activate()
컨트롤명.SetFocus
컨트롤명.FontSize = 77
End Sub
※ 컨트롤 더블클릭 시 메시지 상자가 나타나도록 프로시저 설정
- 해당 컨트롤 시트 속성 : 컨트롤 더블클릭 혹은 단축키[F4]
- 이벤트 탭에서 On Dbl Click의 [...]아이콘 선택
- 코드 작성기 선택
ex1>
- 비만도 = {(몸무게/키)/2}^2
비만도가 0.05이상이면 "비만입니다" 그 외는 "비만이 아닙니다"로 나타내시오
- Private Sub 컨트롤명_DblClick(Cancel As Integer)
비만도 = ((몸무게 / 키) / 2) ^ 2
If 비만도 >= 0.05 Then
MsgBox "비만입니다"
Else
MsgBox "비만이 아닙니다"
End If
End Sub
※ 컨트롤 클릭 시 폼을 실행하도록 프로시저 설정
[단, 예(Y) 단추 클릭시 폼이 종료되도록 설정]
- 해당 컨트롤 시트 속성 : 컨트롤 더블클릭 혹은 단축키 [F4]
- 이벤트 탭에서 On Click의 [...]아이콘 선택
- 코드 작성기 선택
- 컨트롤에 외부폼의 컨트롤 내용이 표시되도록 하시오
레이블1는 컨트롤명1과 바운드 시키시오.
레이블2(ex> 999999-0000000) 뒷자리는 "*******"로 나타내시오
- Private Sub 컨트롤명_Click()
DoCmd.OpenForm "폼 명"
[Forms]![폼 명]![레이블1명] = 컨트롤1명
[Forms]![폼 명]![레이블2명] = Left(컨트롤2명,7) & "*******"
End Sub
※ 컨트롤 클릭 시 DoCmd객체의 메서드를 이용해 쿼리를 실행하는 프로시저 설정
[현재 폼의 Recalc 메서드를 실행]
- 해당 컨트롤 시트 속성 : 컨트롤 더블클릭 혹은 단축키 [F4]
- 이벤트 탭에서 On Click의 [...]아이콘 선택
- 코드 작성기 선택
- Private Sub 컨트롤명_Click()
DoCmd.OpenQuery "쿼리명"
Me.Recalc
End Sub
※ 컨트롤 클릭시 보고서를 '인쇄 미리보기'형태로 여는 프로시저 설정
['컨트롤2'에 입력된 필드에 해당하는 자료만 표시하시오.]
- 해당 컨트롤 시트 속성 : 컨트롤 더블클릭 혹은 단축키 [F4]
- 이벤트 탭에서 On Click의 [...]아이콘 선택
- 코드 작성기 선택
- Private Sub 컨트롤명_Click()
DoCmd.OpenReport "보고서명", acViewPreview, "필드명 = '" & 컨트롤2명 & "'"
End Sub
- 날짜 중 조회날짜(txt날짜)에 입력된 해당 월의 소비 내역만 표시하시오
- Private Sub 컨트롤명_Click()
DoCmd.OpenReport "보고서명", acViewPreview, "MONTH(날짜) = " & MONTH(txt날짜)
End Sub
※ 버튼 컨트롤 클릭시 조회 기능 수행하는 프로시저 설정
[조회 날짜(txt날짜)에 입력된 날짜에 대한 소비내역만 표시하시오.]
- 해당 버튼 컨트롤 시트 속성 : 컨트롤 더블클릭 혹은 단축키 [F4]
- 이벤트 탭에서 On Click의 [...]아이콘 선택
- 코드 작성기 선택
Filter, FilterOn 속성 사용
- Private Sub 버튼 컨트롤명_Click()
Me.Filter = "날짜 = #" & txt날짜 & "#"
Me.FilterOn = True
End Sub
- '찾기' 버튼 클릭시 필터 기능 적용, '해제'버튼 클릭시 필터 기능 해제되도록 설정하시오.
'txt조회' 컨트롤에 입력된 내용과 일부가 일치하는 제품 레코드 정보를 찾아 표시
- Private Sub '찾기'버튼 컨트롤명_Click()
Me.Filter = "제품명 like '*" & txt조회 & "*'"
Me.FilterOn = True
End Sub
Private Sub '해제'버튼 컨트롤명_Click()
Me.FilterOn = False
End Sub
- '조회' 버튼 클릭시 '납품일자'필드의 년과 월을 각각 'txt년도','txt월' 컨트롤과 비교해 둘다 일치하는 자료가 추출되는 프로시저를 작성하시오.
Filter,FilterOn 속성 사용
- Private Sub '조회'버튼 컨트롤명_Click()
Me.Filter = "YEAR(납품일자) = " & txt년도 & "AND MONTH(납품일자) = " & txt월
Me.FilterOn = True
End Sub
- 'cmd조회'에 선택된 문자와 동일한 요금코드만 조회하시오.
요금명 테이블과 RecordSource 속성 이용
- Private Sub 컨트롤명_Click()
Me.RecordSource = "select * from 요금명 where 요금코드 = '" & cmb조회 & "'"
End Sub
- '봉사내역' 버튼(cmb봉사내역)을 클릭하면 'txt조회'컨트롤에 입력된 학번 정보를 보여주는 프로지저 작성.
정확한 학번을 입력하는 경우에만 조회 가능[ApplyFilter를 사용하시오.]
- Private Sub cmb봉사내역_Click()
Docmd.ApplyFilter ,"학번 ='" & txt조회 & "'"
End Sub
※ 컨트롤 클릭 시 예/아니오 메시지 상자가 나타나도록 프로시저 설정
[단, 예(Y) 단추 클릭시 폼이 종료되도록 설정]
- 해당 컨트롤 시트 속성 : 컨트롤 더블클릭 혹은 단축키 [F4]
- 이벤트 탭에서 On Click의 [...]아이콘 선택
- 코드 작성기 선택
ex1>
- "작업을 종료할까요"라는 메시지 창이 나타나도록 하시오.
- Private Sub 컨트롤명_Click()
If MsgBox("작업을 종료할까요?", vbYesNo) = vbYes Then
DoCmd.Close acForm, "폼명", acSavePrompt
Else
DoCmd.CancelEvent
End If
End Sub
☆☆ ex2>
- "오후 4:44:44 작업을 종료할까요?"를 나타내시오
예 클릭시 해당 폼 종료되도록 하시오.
메시지창 명은 없음
- Private Sub 컨트롤명_Click()
aa = MsgBox(TIME & "작업을 종료할까요?", vbYesNo,"")
if aa= vbYes Then
DoCmd.Close
End If
End Sub
- 앞에 변수를 지정할 경우, 어떤 버튼을 눌렸는지 저장됨
→ ex1에서 acSavePrompt를 해준것과 같은 효과
→ ex1방식보다 더 쉽게 작성 가능
※ 컨트롤 클릭시 값 메시지 출력 후 현재 폼을 닫는 이벤트 프로시저 설정
- 해당 컨트롤 시트 속성 : 컨트롤 더블클릭 혹은 단축키 [F4]
- 이벤트 탭에서 On Click의 [...]아이콘 선택
- 코드 작성기 선택
현재 폼의 이름 뒤에 "작업을 종료합니다."문자열을 추가해서 표시하시오
폼이름은 폼의 속성을 이용하시오.
- Private Sub 컨트롤명_Click()
MsgBox Form.Name & "작업을 종료합니다."
DoCmd.Close
End Sub
※ 컨트롤 클릭시 값 업데이트 프로시저 설정
[DOCMD, RUNSQL, REQUERY를 이용하여 해당필드 값에 77%를 더한 값을 업데이트하시오]
- 해당 컨트롤 시트 속성 : 컨트롤 더블클릭 혹은 단축키 [F4]
- 이벤트 탭에서 On Click의 [...]아이콘 선택
- 코드 작성기 선택
- Private Sub 컨트롤명_Click()
DoCmd.RunSQL "update 테이블명 set 필드명 = 필드명*1.77"
Me.Requery
End Sub
→ Me대신 DoCmd를 써도 무방
ex2>
- '사원'테이블의 주민번호 중 8번째 자리가 1이면 '남', 2이면 '여'를 성별 필드에 업데이트하시오.
DoCmd,RunSQL, MID함수를 사용하시오
- Private Sub 컨트롤명_Click()
DoCmd.RunSQL "update 사원 set 성별 = "남" where mid(주민등록번호,8,1) = "1"
DoCmd.RunSQL "update 사원 set 성별 = "여" where mid(주민등록번호,8,1) = "2"
End Sub
※ 컨트롤에서 목록을 선택하면(Change 이벤트) '제품코드'가 일치하는 제품 정보 표시되는 프로시저 설정
- 해당 컨트롤 시트 속성 : 컨트롤 더블클릭 혹은 단축키 [F4]
- 이벤트 탭에서 On Resize의 [...]아이콘 선택
- 코드 작성기 선택
- 수행될 기능 : <제품별조회>폼의 'cmb코드'에서 목록 선택
'cmb코드'컨트롤 첫 번째 필드에 '제품코드'필드가 지정되어 있음
- Private Sub cmb코드_Change()
Me.Filter = "제품코드 = '" & cmb코드.Column(0) & "'"
Me.FilterOn = True
End Sub
- 수행될 기능 : 추가적으로 폼 가동시 기본적으로 'd1'이 'cmb코드'에 나타나게 하시오.
[단, 바운드가 되지 않도록 유의하시오.]
- Private Sub Form_load()
cmb코드 = "d1"
End Sub
※ 폼의 크기가 조절될 때 기능이 수행되도록 프로시저 설정
[현재 폼의 Recalc 메서드를 실행]
- 해당 컨트롤 시트 속성 : 컨트롤 더블클릭 혹은 단축키 [F4]
- 이벤트 탭에서 On Resize의 [...]아이콘 선택
- 코드 작성기 선택
- 수행될 기능 : 해당 필드를 기준으로 내림차순/오름차순 정렬[OrderBy 및 OrderByOn 속성 이용]
- Private Sub Form_Resize()
Me.Orderby = "해당 필드명 desc/asc"
Me.OrderbyOn = True
End Sub
※ 'Cmb학과명' 콤보상자에서 특정값을 선택(BeforeUpdate)하면 'txt교수번호'컨트롤에 교수번호가 표시되도록 프로시저 설정
[Column속성을 사용한 이벤트 프로시저로 작성하시오]
- 이 문제는 '교수번호'
- 해당 콤보상자 시트 속성 : 컨트롤 더블클릭 혹은 단축키 [F4]
- 이벤트 탭에서 Before Update의 [...]아이콘 선택
- 코드 작성기 선택
- Private Sub 콤보상자명_BeforeUpdate(Cancel As Integer)
표시될 컨트롤명 = 콤보상자명.Column(컬럼 위치)
End Sub
→ 단, 컬럼 위치는 0부터 시작
- Private Sub 콤보상자명_BeforeUpdate(Cancel As Integer)
txt교수번호 = Cmb학과명.Column(1)
End Sub
→ Column(0)은 학과명
※ 컨트롤이 포커스를 얻으면 확인 메시지 상자가 나타나도록 프로시저 설정
- 해당 컨트롤 시트 속성 : 컨트롤 더블클릭 혹은 단축키 [F4]
- 이벤트 탭에서 GotFocus의 [...]아이콘 선택
- 코드 작성기 선택
직무역량(txt직무역량)이 90점 이상이면 다음과 같이 MsgBox를 표시하시오.
메시지는 "국내연수" 메시지 이름은 "확인"으로 설정하시오.
- Private Sub 컨트롤명_GotFocus()
If txt직무역량 >=90 Then
MsgBox "국내연수", vbOKOnly, "확인"
End If
End Sub
매크로[MACRO]
응용 프로그램에서 반복적인 작업을 수행할 때, 이를 하나의 명령어로 저장하여 사용자가 같은 작업 수행시 간단하게 처리할 수 있도록 하는 기능
- 액세스에서 매크로란 테이블, 쿼리, 폼, 보고서 등 액세스의 각 개체들을 효율적으로 자동화하기 위해 사용
- 매크로 함수는 주로 컨트롤의 이벤트에 연결하여 사용
- 한 개의 매크로 창에서 이름을 갖는 여러 개의 매크로를 작성하고 관리하는 "그룹 매크로" 기능 제공
→ 그룹으로 지정된 매크로를 실행시 가장 처음에 지정한 매크로부터 차례로 실행됨
→ "그룹 매크로 이름.매크로 이름"처럼 그룹 매크로와 매크로를 마침표(.)로 구분
→ 하나의 매크로 그룹에 여러 개의 매크로 생성 가능
(하나의 매크로에 여러 개의 매크로 함수 지정 가능)
- 데이터베이스 파일이 열릴 때 자동으로 실행되는 자동매크로 설정 가능
→ 매크로 이름란에 "AutoExec"입력
→ 자동 실행 매크로가 실행되지 않게 하려면 Shift키를 누른 채 데이터베이스 파일을 오픈
- 매크로를 사용한 보고서 작성 시, 해당 보고서에 없는 컨트롤은 전체경로를 함께 입력해야함!
현재 폼 : [컨트롤명]
외부 폼 : [FORMS]![외부폼 명]![컨트롤명]
하위 폼 : [하위폼 명].FORM![컨트롤명]
※ 컨트롤 단추 클릭 시 해당 폼을 실행하는 매크로 작성
- 단추 컨트롤 속성시트[더블클릭 or F4]
- 이벤트 탭에서 On Click의 [...]아이콘 클릭
- 매크로 작성기 선택
- 해당 폼을 실행하는 경우이므로 OpenForm함수 추가
보기 형식이 폼인지 확인할 것
※ 컨트롤 단추 클릭 시 해당 폼을 닫는 매크로 작성
- 단추 컨트롤 속성시트[더블클릭 or F4]
- 이벤트 탭에서 On Click의 [...]아이콘 클릭
- 매크로 작성기 선택
- 해당 폼을 닫을 경우이므로 CloseWindow함수 추가
※ 해당 폼에 새 레코드 입력할 수 있도록 포커스를 이동시키는 매크로 작성
- 단추 컨트롤 속성시트[더블클릭 or F4]
- 이벤트 탭에서 On Click의 [...]아이콘 클릭
- 매크로 작성기 선택
- GoToRecord함수 추가
개체 유형 : 폼
개체 이름 : 폼명
레코드 : 새레코드
※ 레코드는 이전, 다음, 첫, 마지막,새 레코드, 이동 중 선택 가능
※ 컨트롤 단추 클릭 시 해당 테이블을 엑셀 통합문서(.xlsx)로 내보내는 매크로 작성[내보낸 후 자동실행]
- 단추 컨트롤 속성시트[더블클릭 or F4]
- 이벤트 탭에서 On Click의 [...]아이콘 클릭
- 매크로 작성기 선택
- 테이블을 내보내는 경우이므로 ExportWithFormatting함수 추가
개체 유형 : 테이블
개체 이름 : 테이블명
출력 형식 : Excel 통합문서(*.xlsx)
자동 시작 : 예
2020/12/17 - [자격증/컴활 1급] - [개미의 걸음 3과목 데이터베이스 일반] 처리② 매크로 작성
※ 컨트롤 단추에 매크로 생성하여 지정
- 단추 컨트롤 속성시트[더블클릭 or F4]
이벤트 탭에서 On Click의 [...]아이콘 클릭
매크로 작성기 선택
→ 이 방식은 사용 못함!![해당 레이블에 매크로가 포함되므로]
문제에서 매크로를 생성해서 지정해라고 했음!!!
- [만들기 → 매크로 및 코드]에서 매크로 선택
- OpenReport에서 보고서 이름, 보기 형식, 주어진 조건에 맞는 식을 문제에서 주어진 대로 입력
보고서 이름 : 출발지별통행내역
보기 형식 : 인쇄 미리 보기
where조건문: [입구ID] = Forms![영업소이용관리]![cmb지역조회]
- where조건문 작성시 아래의 식요소, 식 범주, 식값을 활용하면 쉽게 설정 가능
- 창 종료하며 매크로명 설정
- 레이블 속성시트의 이벤트 탭에서 On Click에서 해당 매크로명 선택
※ 컨트롤 단추 클릭하면 보고서를 미리보기 형태로 여는 매크로 구현[매크로 이름을 설정하시오]
- 단추 컨트롤 속성시트[더블클릭 or F4]
이벤트 탭에서 On Click의 [...]아이콘 클릭
매크로 작성기 선택
→ 이 방식은 사용 못함!![해당 레이블에 매크로가 포함되므로]
문제에서 매크로 이름을 설정해라고 했음!!!
- [만들기 → 매크로 및 코드]에서 매크로 선택
<요금보고서>를 '미리보기'의 형태로 여시오
'Cmb조회'에 입력된 요금코드에 해당하는 정보만을 출력하시오.
매크로이름은 '요금출력'으로 설정하시오.
- OpenReport에서 보고서 이름, 보기 형식, 주어진 조건에 맞는 식을 문제에서 주어진 대로 입력
보고서 이름 : 요금보고서
보기 형식 : 인쇄 미리 보기
where조건문: [요금코드] = Forms![요금명]![cmb조회]
- where조건문 작성시 아래의 식요소, 식 범주, 식값을 활용하면 쉽게 설정 가능
- 창 종료하며 매크로명 설정
매크로 이름 : 요금출력
- 레이블 속성시트의 이벤트 탭에서 On Click에서 해당 매크로명 선택
※ 폼의 크기가 조절될 때 기능이 수행되도록 매크로 작성[매크로 이름은 '초기화'라고 지정]
- [만들기 → 매크로 및 코드]에서 매크로 선택
- 수행될 기능 : 모든 레코드를 표시하되 오름차순 정렬하시오.[SortAscending 사용]
'txt이름' 컨트롤을 포커스로 이동시키시오.'
- 매크로 함수 : ShowAllRecords
- 매크로 함수 : RunMenuCommand
명 령 : SortAscending
- 매크로 함수 : GotoControl
컨트롤 이름 : txt이름
댓글 영역