Web/ASP & ASP.NET2009. 4. 10. 23:42

< 출처 : 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>
Posted by Huikyun