study/ADO

액세스 VBA 강좌_ADO_레코드 이동

emily-photo 2012. 5. 2. 13:37

   

■ Contents

   

   

1. BOF속성과 EOF속성

ADO의 Recorsset 오브젝트로 참조할 수 있는 레코드는 1개 뿐이다.이 레코드를 최신 레코드라고 부른다.Recorsset 오브젝트를 작성한 직후에는 앞 레코드가 최신 레코드이다.아래그림은 레코드셋속에서 최신 레코드가 이동할 수 있는 범위이다.앞 레코드보다도 전에 이동하면 BOF속성의 값은 True가 된다.또,최종 레코드보다도 뒤에 이동하면 EOF속성의 값은 True이 된다.

BOF

BOF=True

앞 레코드

BOF=False

EOF=False

최종 레코드

  

EOF

EOF=True

레코드셋에 레코드가 1개도 포함되어 있지 않는 경우는 다음의 그림과 같이 되고 있다.레코드셋의 BOF속성과 EOF속성은 어느 쪽도 True이 되어 있다.최신 레코드를 이동하는 것은 불가능하다.

BOF

BOF=True

EOF

EOF=True

   

2. 최신 레코드를 이동한다 .

【서식】recorsset.MoveFirst :앞 레코드에 이동
recorsset.MovePrevious ;1개 전(앞)의 레코드에 이동
recorsset.MoveNext     :다음의 레코드에 이동
recorsset.MoveLast     :최종 레코드에 이동

recorsset:열려 있는 Recorsset 오브젝트

Recorsset 오브젝트의 CursorType속성의 값이 adOpenForwardOnly,LockType속성의 값이 adLockReadOnly의 경우 이 레코드셋은 앞 레코드에서 최종 레코드 방향만큼 스크롤 가능하다.MoveLast 방법,MovePrevious 방법은 실행할 수 없다.

【사용 예】

Public Sub MoveCurrentRec()
Dim CN As ADODB.Connection
Dim RS As ADODB.Recordset

'접속
Set CN = CurrentProject.Connection

'레코드셋을 취득
Set RS = New ADODB.Recordset
RS.Open "학생 명부", CN, adOpenKeyset, adLockOptimistic

'참조
Do Until RS.EOF
Debug.Print RS!학적 번호, RS!성명
RS.MoveNext
Loop

'종료
RS.Close: Set RS = Nothing
CN.Close: Set CN = Nothing
End Sub

3. Bookmark속성

Recorsset 오브젝트를 작성하면 ,각 레코드에는 자동적으로 고유의 값(이 값을북마크라고 부른다)이 붙이진다.이것에 따라 각 레코드를 식별하는 것이 가능히다.Bookmark 속성은 설정·참조가 가능하고 이것을 사용하고 최신 레코드의 위치를 보존하고 그 레코드에 언제라도 돌아오는 것이 가능하다.북마크는 Recorsset 오브젝트의 Bookmark속성으로 관리되고 있다.

【서식】value = recordset.Bookmark (Bookmark속성의 참조)
recordset.Bookmark= value (Bookmark속성의 설정)

recordset:열려 있는 Recorsset 오브젝트
value:북마크(Variant 형태)

【사용 예】

Public Sub MoveBookmark()
Dim CN As ADODB.Connection
Dim RS As ADODB.Recordset
Dim bmark As Variant

'접속
Set CN = CurrentProject.Connection

'레코드셋을 취득
Set RS = New ADODB.Recordset
RS.Open "학생 명부", CN, adOpenKeyset, adLockOptimistic

'북마크
bmark = RS.Bookmark
Debug.Print RS!학적 번호, RS!성명

RS.MoveLast
Debug.Print RS!학적 번호, RS!성명

RS.Bookmark = bmark
Debug.Print RS!학적 번호, RS!성명

'종료
RS.Close: Set RS = Nothing
CN.Close: Set CN = Nothing
End Sub

   

  

   

<http://www.msaccess.co.kr/onlinele/list/basic/recordeset/ado/ado_8.htm>에서 삽입