< 출처 : 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 이벤트를 발생시키는 예이다.
Private Sub adoRs_RecordChangeComplete( _
ByVal adReason As ADODB.EventReasonEnum, _
ByVal cRecords As Long, ByVal pError As ADODB.Error, _
adStatus As ADODB.EventStatusEnum, _
ByVal pRecordset As ADODB.Recordset)
MsgBox "RecordChangeComplete"
End Sub
Private Sub cmdRecordChangeComplete_Click()
Dim strConn As String
strConn = "Provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User Id=sa;Password=;"
Set adoRs = New ADODB.Recordset
adoRs.CursorType = adOpenKeyset
adoRs.LockType = adLockOptimistic
adoRs.Open "Authors", strConn, , , adCmdTable
adoRs!au_id = "999-99-9997"
adoRs!au_fname = "Chris"
adoRs!au_lname = "Choi"
adoRs!contract = 1
adoRs.Update
adoRs.Close
Set adoRs = Nothing
End Sub
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 이벤트를 발생시키는 예이다.
Private Sub adoRs_RecordsetChangeComplete( _
ByVal adReason As ADODB.EventReasonEnum, _
ByVal pError As ADODB.Error, _
adStatus As ADODB.EventStatusEnum, _
ByVal pRecordset As ADODB.Recordset)
MsgBox "RecordsetChangeComplete"
End Sub
Private Sub cmdRecordsetChangeComplete_Click()
Dim strConn As String
strConn = "Provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User Id=sa;Password=;"
Set adoRs = New ADODB.Recordset
adoRs.CursorType = adOpenKeyset
adoRs.LockType = adLockOptimistic
adoRs.Open "Authors", strConn, , , adCmdTable
adoRs!au_fname = "Chris"
adoRs.Update
adoRs.Close
Set adoRs = Nothing
End Sub
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 이벤트가 발생하는 예이다.
Private Sub adoRs_WillChangeField( _
ByVal cFields As Long, ByVal Fields As Variant, _
adStatus As ADODB.EventStatusEnum, _
ByVal pRecordset As ADODB.Recordset)
MsgBox "WillChangeField"
End Sub
Private Sub cmdWillChangeField_Click()
Dim strConn As String
strConn = "Provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User Id=sa;Password=;"
Set adoRs = New ADODB.Recordset
adoRs.CursorType = adOpenKeyset
adoRs.LockType = adLockOptimistic
adoRs.Open "Authors", strConn, , , adCmdTable
adoRs.AddNew
adoRs!au_id = "999-99-9997"
adoRs!au_fname = "Chris"
adoRs!au_lname = "Choi"
adoRs!contract = 1
adoRs.Update
adoRs.Close
Set adoRs = Nothing
End Sub
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 이벤트를 발생시키는 예이다.
Private Sub adoRs_WillChangeRecord( _
ByVal adReason As ADODB.EventReasonEnum, _
ByVal cRecords As Long, _
adStatus As ADODB.EventStatusEnum, _
ByVal pRecordset As ADODB.Recordset)
MsgBox "WillChangeRecord"
End Sub
Private Sub cmdWillChangeRecord_Click()
Dim strConn As String
strConn = "Provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User Id=sa;Password=;"
Set adoRs = New ADODB.Recordset
adoRs.CursorType = adOpenKeyset
adoRs.LockType = adLockOptimistic
adoRs.Open "Authors", strConn, , , adCmdTable
adoRs!au_id = "999-99-9997"
adoRs!au_fname = "Chris"
adoRs!au_lname = "Choi"
adoRs!contract = 1
adoRs.Update
adoRs.Close
Set adoRs = Nothing
End Sub
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 이벤트를 발생시키는 예이다.
Private Sub adoRs_WillChangeRecordset( _
ByVal adReason As ADODB.EventReasonEnum, _
adStatus As ADODB.EventStatusEnum, _
ByVal pRecordset As ADODB.Recordset)
MsgBox "WillChangeRecordset"
End Sub
Private Sub cmdWillChangeRecordset_Click()
Dim strConn As String
strConn = "Provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User Id=sa;Password=;"
Set adoRs = New ADODB.Recordset
adoRs.CursorType = adOpenKeyset
adoRs.LockType = adLockOptimistic
adoRs.Open "Authors", strConn, , , adCmdTable
adoRs!au_fname = "Chris"
adoRs.Update
adoRs.Close
Set adoRs = Nothing
End Sub
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 이벤트를 발생시키는 예이다.
Private Sub adoRs_WillMove( _
ByVal adReason As ADODB.EventReasonEnum, _
adStatus As ADODB.EventStatusEnum, _
ByVal pRecordset As ADODB.Recordset)
MsgBox "WillMove"
End Sub
Private Sub cmdWillMove_Click()
Dim strConn As String
strConn = "Provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User Id=sa;Password=; "
Set adoRs = New ADODB.Recordset
adoRs.Open "SELECT fName, lName, hire_date FROM Employee ORDER BY lName", strConn, , , adCmdText
adoRs.Move 10
adoRs.Close
Set adoRs = Nothing
End Sub