< 출처 : korea.internet.com, 지은이 : 최현진 >
RecordChangeComplete 이벤트
RecordChangeComplete 이벤트는 레코드가 하나 이상 변경된 후에 발생하며, 구문은 다음과 같다.
RecordChangeComplete adReason, cRecords, pError, adStatus, pRecordset |
매개변수는 다음과 같다.
매개변수 | 설명 |
adReason | EventReasonEnum 값이다. 이 이벤트를 발생시킨 원인을 나타낸다. adReason의 값은 adRsnAddNew, adRsnDelete, adRsnUpdate, adRsnUndoUpdate, adRsnUndoAddNew, adRsnUndoDelete, adRsnFirstChange가 될 수 있다. |
cRecords | 영향을 받은 레코드의 수를 나타내며, 데이터 형식은 Long이다. |
pError | Error 개체이다. adStatus의 값이 adStatusErrorsOccurred일 때 발생한 오류를 설명한다. 그렇지 않을 경우에는 설정되지 않는다. |
adStatus | EventStatusEnum 상태값이다. 이 매개변수는 이벤트를 발생시킨 작업이 성공하면 adStatusOK로 설정되고 작업이 실패하면 adStatusErrorsOccurred로 설정된다.RecordChangeComplete가 어떤 값을 반환하기 전에 이 매개변수를 adStatusUnwantedEvent로 설정하여 계속되는 통지(Notification)를 막을 수 있다. |
pRecordset | 이 이벤트가 발생한 Recordset 개체를 나타낸다. |
Update, Delete, CancelUpdate, AddNew, UpdateBatch 및 CancelBatch와 같은 Recordset 개체의 작업으로 인해 행에서 처음으로 변경된 필드에 대해 RecordChangeComplete 이벤트가 발생할 수 있다.
[예제]
다음 예제는 Pubs 데이터베이스의 Authors 테이블을 Recordset 개체로 생성하고, Update 메서드를 사용해서 RecordChangeComplete 이벤트를 발생시키는 예이다.
01.
<font size=
"2"
>
Private
Sub
adoRs_RecordChangeComplete( _
02.
ByVal
adReason
As
ADODB.EventReasonEnum, _
03.
ByVal
cRecords
As
Long
,
ByVal
pError
As
ADODB.
Error
, _
04.
adStatus
As
ADODB.EventStatusEnum, _
05.
ByVal
pRecordset
As
ADODB.Recordset)
06.
07.
MsgBox
"RecordChangeComplete"
08.
End
Sub
09.
10.
Private
Sub
cmdRecordChangeComplete_Click()
11.
Dim
strConn
As
String
12.
13.
strConn =
"Provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User Id=sa;Password=;"
14.
15.
Set
adoRs =
New
ADODB.Recordset
16.
17.
adoRs.CursorType = adOpenKeyset
18.
adoRs.LockType = adLockOptimistic
19.
adoRs.Open
"Authors"
, strConn, , , adCmdTable
20.
21.
adoRs!au_id =
"999-99-9997"
22.
adoRs!au_fname =
"Chris"
23.
adoRs!au_lname =
"Choi"
24.
adoRs!contract = 1
25.
adoRs.Update
26.
27.
adoRs.Close
28.
Set
adoRs =
Nothing
29.
End
Sub
30.
</font>
RecordsetChangeComplete 이벤트
RecordsetChangeComplete 이벤트는 Recordset 개체가 변경된 후에 발생하며, 구문은 다음과 같다.
RecordsetChangeComplete adReason, pError, adStatus, pRecordset |
매개변수는 다음과 같다.
매개변수 | 설명 |
adReason | EventReasonEnum 값이다. 이 이벤트를 발생시킨 원인을 나타낸다. adReason의 값은 adRsnReQuery, adRsnReSync, adRsnClose, adRsnOpen이 될 수 있다. |
pError | Error 개체이다. adStatus의 값이 adStatusErrorsOccurred일 때 발생한 오류를 설명한다. 그렇지 않을 경우에는 설정되지 않는다. |
adStatus | EventStatusEnum 상태값이다. 이 매개변수는 이벤트를 발생시킨 작업이 성공하면 adStatusOK로 설정되고 작업이 실패하면 adStatusErrorsOccurred로 설정된다.RecordsetChangeComplete가 어떤 값을 반환하기 전에 이 매개변수를 adStatusUnwantedEvent로 설정하여 계속되는 통지(Notification)를 막을 수 있다. |
pRecordset | 이 이벤트가 발생한 Recordset 개체를 나타낸다. |
Requery 및 Open 같은 Recordset 개체의 작업으로 인해 RecordsetChangeComplete 이벤트가 발생할 수 있다.
Provider가 Bookmark를 지원하지 않는 경우 Provider에서 새 행이 검색될 때마다 RecordsetChange 이벤트 통지(Notification)이 발생한다. 이 이벤트가 발생하는 빈도는 RecordsetCacheSize 속성에 따라 결정된다.
[예제]
다음 예제는 Pubs 데이터베이스의 Authors 테이블을 Recordset 개체로 생성하고, Update 메서드를 사용해서 RecordsetChangeComplete 이벤트를 발생시키는 예이다.
01.
<font size=
"2"
>
Private
Sub
adoRs_RecordsetChangeComplete( _
02.
ByVal
adReason
As
ADODB.EventReasonEnum, _
03.
ByVal
pError
As
ADODB.
Error
, _
04.
adStatus
As
ADODB.EventStatusEnum, _
05.
ByVal
pRecordset
As
ADODB.Recordset)
06.
07.
MsgBox
"RecordsetChangeComplete"
08.
End
Sub
09.
10.
Private
Sub
cmdRecordsetChangeComplete_Click()
11.
Dim
strConn
As
String
12.
13.
strConn =
"Provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User Id=sa;Password=;"
14.
15.
Set
adoRs =
New
ADODB.Recordset
16.
17.
adoRs.CursorType = adOpenKeyset
18.
adoRs.LockType = adLockOptimistic
19.
adoRs.Open
"Authors"
, strConn, , , adCmdTable
20.
21.
adoRs!au_fname =
"Chris"
22.
adoRs.Update
23.
24.
adoRs.Close
25.
Set
adoRs =
Nothing
26.
End
Sub
27.
</font>
WillChangeField 이벤트
WillChangeField 이벤트는 보류 중인 작업이 Recordset 개체에 있는 하나 이상의 Field 개체 값을 변경하기 전에 발생하며, 구문은 다음과 같다.
WillChangeField cFields, Fields, adStatus, pRecordset |
매개변수는 다음과 같다.
매개변수 | 설명 |
cFields | Fields 컬렉션에 있는 Field 개체의 개수를 나타내며, 데이터 형식은 Long이다. |
Fields | 보류 중인 변경 내용을 가진 Field 개체를 포함하는 Variant 배열이다. |
adStatus | EventStatusEnum 상태값이다. 이 매개변수는 이벤트를 발생시킨 작업이 성공하면 adStatusOK로 설정되고, 이 메서드가 보류 중인 작업의 취소를 요청할 수 없으면 adStatusCantDeny로 설정된다.WillChangeField가 어떤 값을 반환하기 전에 이 매개변수를 adStatusCancel로 설정하여 보류 중인 작업의 취소를 요청할 수 있다. |
pRecordset | 이 이벤트가 발생한 Recordset 개체를 나타낸다. |
Recordset 개체의 Value 및 필드와 값 배열 매개변수를 가진 Update 작업으로 인해 WillChangeField 이벤트가 발생할 수 있다.
[예제]
다음 예제는 Pubs 데이터베이스의 Authors 테이블을 Recordset 개체로 생성하고, AddNew 메서드를 사용해서 새로운 레코드를 추가할 때 필드의 값이 변경되기 전에 WillChangeField 이벤트가 발생하는 예이다.
01.
<font size=
"2"
>
Private
Sub
adoRs_WillChangeField( _
02.
ByVal
cFields
As
Long
,
ByVal
Fields
As
Variant
, _
03.
adStatus
As
ADODB.EventStatusEnum, _
04.
ByVal
pRecordset
As
ADODB.Recordset)
05.
06.
MsgBox
"WillChangeField"
07.
End
Sub
08.
09.
Private
Sub
cmdWillChangeField_Click()
10.
Dim
strConn
As
String
11.
12.
strConn =
"Provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User Id=sa;Password=;"
13.
14.
Set
adoRs =
New
ADODB.Recordset
15.
16.
adoRs.CursorType = adOpenKeyset
17.
adoRs.LockType = adLockOptimistic
18.
adoRs.Open
"Authors"
, strConn, , , adCmdTable
19.
20.
adoRs.AddNew
21.
adoRs!au_id =
"999-99-9997"
22.
adoRs!au_fname =
"Chris"
23.
adoRs!au_lname =
"Choi"
24.
adoRs!contract = 1
25.
adoRs.Update
26.
27.
adoRs.Close
28.
Set
adoRs =
Nothing
29.
End
Sub
30.
</font>
WillChangeRecord 이벤트
WillChangeRecord 이벤트는 Recordset 개체에서 하나 이상의 레코드가 변경되기 전에 발생하며, 구문은 다음과 같다.
WillChangeRecord adReason, cRecords, adStatus, pRecordset |
매개변수는 다음과 같다.
매개변수 | 설명 |
adReason | EventReasonEnum 값이다. 이 이벤트를 발생시킨 원인을 나타낸다. adReason의 값은 adRsnAddNew, adRsnDelete, adRsnUpdate, adRsnUndoUpdate, adRsnUndoAddNew, adRsnUndoDelete, adRsnFirstChange가 될 수 있다. |
cRecords | 영향을 받은 레코드의 수를 나타내며, 데이터 형식은 Long이다. |
adStatus | EventStatusEnum 상태값이다. 이 매개변수는 이벤트를 발생시킨 작업이 성공하면 adStatusOK로 설정되고, 이 메서드가 보류 중인 작업의 취소를 요청할 수 없으면 adStatusCantDeny로 설정된다.WillChangeRecord가 어떤 값을 반환하기 전에 이 매개변수를 adStatusCancel로 설정하여 이 이벤트를 발생시킨 작업의 취소를 요청할 수 있다. |
pRecordset | 이 이벤트가 발생한 Recordset 개체를 나타낸다. |
Update, Delete, CancelUpdate, AddNew, UpdateBatch 및 CancelBatch와 같은 Recordset 개체의 작업으로 인해 행에서 처음으로 변경된 필드에 대해 WillChangeRecord 이벤트가 발생할 수 있다. Recordset 개체의 CursorType은 이벤트를 발생시킨 원인을 한다.
WillChangeRecord 이벤트 중에는 Recordset 개체의 Filter 속성이 adFilterAffectedRecords로 설정된다. 이벤트를 처리하는 동안 이 속성을 변경해서는 안된다.
[예제]
다음 예제는 Pubs 데이터베이스의 Authors 테이블을 Recordset 개체로 생성하고, Update 메서드를 사용해서 WillChangeRecord 이벤트를 발생시키는 예이다.
01.
<font size=
"2"
>
Private
Sub
adoRs_WillChangeRecord( _
02.
ByVal
adReason
As
ADODB.EventReasonEnum, _
03.
ByVal
cRecords
As
Long
, _
04.
adStatus
As
ADODB.EventStatusEnum, _
05.
ByVal
pRecordset
As
ADODB.Recordset)
06.
07.
MsgBox
"WillChangeRecord"
08.
End
Sub
09.
10.
Private
Sub
cmdWillChangeRecord_Click()
11.
Dim
strConn
As
String
12.
13.
strConn =
"Provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User Id=sa;Password=;"
14.
15.
Set
adoRs =
New
ADODB.Recordset
16.
17.
adoRs.CursorType = adOpenKeyset
18.
adoRs.LockType = adLockOptimistic
19.
adoRs.Open
"Authors"
, strConn, , , adCmdTable
20.
21.
adoRs!au_id =
"999-99-9997"
22.
adoRs!au_fname =
"Chris"
23.
adoRs!au_lname =
"Choi"
24.
adoRs!contract = 1
25.
adoRs.Update
26.
27.
adoRs.Close
28.
Set
adoRs =
Nothing
29.
End
Sub
30.
</font>
WillChangeRecordset 이벤트
WillChangeRecordset 이벤트는 보류 중인 작업이 Recordset 개체를 변경하기 전에 발생하며, 구문은 다음과 같다.
WillChangeRecordset adReason, adStatus, pRecordset |
매개변수는 다음과 같다.
매개변수 | 설명 |
adReason | EventReasonEnum 값이다. 이 이벤트를 발생시킨 원인을 나타낸다. adReason의 값은 adRsnReQuery, adRsnReSync, adRsnClose, adRsnOpen이 될 수 있다. |
adStatus | EventStatusEnum 상태값이다. 이 매개변수는 이벤트를 발생시킨 작업이 성공하면 adStatusOK로 설정되고, 이 메서드가 보류 중인 작업의 취소를 요청할 수 없으면 adStatusCantDeny로 설정된다.WillChangeRecordset이 어떤 값을 반환하기 전에 이 매개변수를 adStatusCancel로 설정하여 보류 중인 작업의 취소를 요청할 수 있다. |
pRecordset | 이 이벤트가 발생한 Recordset 개체를 나타낸다. |
Requery 및 Open 같은 Recordset 개체의 작업으로 인해 WillChangeRecordset 이벤트가 발생할 수 있다.
[예제]
다음 예제는 Pubs 데이터베이스의 Authors 테이블을 Recordset 개체로 생성하고, Update 메서드를 사용해서 WillChangeRecordset 이벤트를 발생시키는 예이다.
01.
<font size=
"2"
>
Private
Sub
adoRs_WillChangeRecordset( _
02.
ByVal
adReason
As
ADODB.EventReasonEnum, _
03.
adStatus
As
ADODB.EventStatusEnum, _
04.
ByVal
pRecordset
As
ADODB.Recordset)
05.
06.
MsgBox
"WillChangeRecordset"
07.
End
Sub
08.
09.
Private
Sub
cmdWillChangeRecordset_Click()
10.
Dim
strConn
As
String
11.
12.
strConn =
"Provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User Id=sa;Password=;"
13.
14.
Set
adoRs =
New
ADODB.Recordset
15.
16.
adoRs.CursorType = adOpenKeyset
17.
adoRs.LockType = adLockOptimistic
18.
adoRs.Open
"Authors"
, strConn, , , adCmdTable
19.
20.
adoRs!au_fname =
"Chris"
21.
adoRs.Update
22.
23.
adoRs.Close
24.
Set
adoRs =
Nothing
25.
End
Sub
26.
</font>
WillMove 이벤트
WillMove 이벤트는 보류 중인 작업이 Recordset 개체에서 현재 위치를 변경하기 전에 발생하면, 구문은 다음과 같다.
WillMove adReason, adStatus, pRecordset |
매개변수는 다음과 같다.
매개변수 | 설명 |
adReason | EventReasonEnum 값이다. 이 이벤트를 발생시킨 원인을 나타낸다. adReason의 값은 adRsnMoveFirst, adRsnMoveLast, adRsnMoveNext, adRsnMovePrevious, adRsnMove, adRsnRequery가 될 수 있다. |
adStatus | EventStatusEnum 상태값이다. 이 매개변수는 이벤트를 발생시킨 작업이 성공하면 adStatusOK로 설정되고, 이 메서드가 보류 중인 작업의 취소를 요청할 수 없으면 adStatusCantDeny로 설정된다.WillMove가 어떤 값을 반환하기 전에 이 매개변수를 adStatusCancel로 설정하여 보류 중인 작업의 취소를 요청할 수 있다 |
pRecordset | 이 이벤트가 발생한 Recordset 개체를 나타낸다. |
이 이벤트는 Open, Move, MoveFirst, MoveLast, MoveNext, MovePrevious, Bookmark, AddNew 및 Resync와 같은 Recordset 개체의 작업으로 인해 발생할 수 있으며, Filter, Index, AbsolutePage 및 AbsolutePosition 속성으로 인해 발생할 수도 있다.
또한, 하위 Recordset 개체에 연결된 Recordset 이벤트가 있고 상위 Recordset 개체가 이동한 경우에도 이 이벤트는 발생할 수 있다.
[예제]
다음 예제는 Pubs 데이터베이스의 Employee 테이블을 Recordset 개체로 생성하고, Move 메서드를 사용해서 WillMove 이벤트를 발생시키는 예이다.
01.
<font size=
"2"
>
Private
Sub
adoRs_WillMove( _
02.
ByVal
adReason
As
ADODB.EventReasonEnum, _
03.
adStatus
As
ADODB.EventStatusEnum, _
04.
ByVal
pRecordset
As
ADODB.Recordset)
05.
06.
MsgBox
"WillMove"
07.
End
Sub
08.
09.
Private
Sub
cmdWillMove_Click()
10.
Dim
strConn
As
String
11.
12.
strConn =
"Provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User Id=sa;Password=; "
13.
14.
Set
adoRs =
New
ADODB.Recordset
15.
adoRs.Open
"SELECT fName, lName, hire_date FROM Employee ORDER BY lName"
, strConn, , , adCmdText
16.
17.
adoRs.Move 10
18.
19.
adoRs.Close
20.
Set
adoRs =
Nothing
21.
End
Sub
22.
</font>