study/ADO 2012. 5. 2. 13:33

액세스 VBA 강좌_ADO_레코드가 나란히 하고 교환

   

■ Contents

   

   

1. Sorting 하고 교환을 실행할 수 있는 레코드셋

Recordset 오브젝트의 CursorLocation속성의 값이 adUseClient의 경우 Sort속성을 사용하고 레코드를 Sorting 하고 바꾸는 것이 가능하다.그러나 adUseServer이 설정되고 있는 Recordset 오브젝트로는 Sort속성을 설정할 수 없다.Access 데이터베이스에 포함되는 테이블이나 쿼리를 이용하고 작성한 Recordset 오브젝트는 CursorLocation속성의 값이 adUseServer이 되고 레코드를 Sorting 하고 바꾸지 않는다.레코드를 Sorting 하고 바꾼 경우는 Recordset 오브젝트를 열기 전에 CursorLocation속성의 값을 설정하시오.다음과 같이 기술하면 테이블이나 쿼리 기초에 레코드를 Sorting 하고 바꾸는 Recordset 오브젝트를 작성하는 것이 가능하다.

   

【예】RS.CursorLocation = adUseClient

RS.Open "학생 명부",connection,adOpenKeyset,adLockOptimistic

2. Sort속성

【서식】recordset.Sort = sortorder

recordset:열려 있는 Recordset 오브젝트
sortorder:Sorting 하고 바꾸고 순서

Sort속성에 설정하는 값은 Sorting 하고 교환에 사용하는 필드 이름과 비견할 수 있고 바꾼 순서를 표현하는 키워드로 구성되는 문장이다.오름차순으로 Sorting 하고 바꾸는 경우는 ASC키워드,강순으로 Sorting 하고 바꾸는 경우는 DESC키워드를 이용한다.특별히 지정하지 않는 경우에는 오름차순으로 Sorting 하고 바꾼다(ASC이 기정 치).필드 이름과 키워드의 사이에는 공백이 필요하다.

   

【예】RS.Sort ="학적 번호 ASC"

【사용 예】

Public Sub Sorting 하고 교환()
Dim CN As ADODB.Connection
Dim RS As ADODB.Recordset

'접속
Set CN = CurrentProject.Connection

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

'Sorting 하고 바꾸고
RS.Sort = "입학 일 DESC"

'확인
Do Until RS.EOF
Debug.Print RS!성명, RS!입학 일
RS.MoveNext
Loop

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

3. 복수의 필드에서 Sorting 하고 바꾼다.

복수의 필드에서 Sorting 하고 바꿀 때는, Sorting 하고 바꾼 순서를 콤마(,)으로 단락을 짓고 지정한다.이 경우 먼저 지정한 Sorting을 하고 교환이 우선된다.

   

【예】RS.Sort ="클래스 ASC,학적 번호 ASC"

   

4. Sorting 하고 교환을 해제한다 .

Sort속성에 길이 0의 문자 열("")을 대입하려면 지정한 Sorting을 하고 바꾼 순서를 해제하고 기초의 레코드를 되돌리는 것이 가능하다.

【사용 예】

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

'접속
Set CN = CurrentProject.Connection

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

'Sorting 하고 바꾸고
RS.Sort = "입학 일 DESC"
Do Until RS.EOF
Debug.Print RS!성명, RS!입학 일
RS.MoveNext
Loop

Debug.Print

'해제
RS.Sort = ""
Do Until RS.EOF
Debug.Print RS!성명, RS!입학 일
RS.MoveNext
Loop

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