계층적 레코드 집합에서 행에 액세스(예제)
다음 예제에서는 계층적 Recordset의 행에 액세스하는 데 필요한 단계를 보여 줍니다.
authors 및 titleauthor 테이블의 Recordset 개체는 작성자 ID별로 관련됩니다.
외부 루프는 각 작성자의 이름과 성, 상태 및 ID를 표시합니다.
각 행에 대해 추가된 Recordset은 Fields 컬렉션에서 검색되고 rstTitleAuthor에 할당됩니다.
내부 루프는 추가된 Recordset의 각 행에서 4개 필드를 표시합니다.
StayInSync 속성은 설명 목적으로 false로 설정되므로 외부 루프의 각 반복에서 장이 명시적으로 변경되는 것을 볼 수 있습니다. 코드 예제를 보다 효율적으로 만들기 위해 3단계의 할당을 2단계의 첫 번째 줄 앞으로 이동하여 할당이 한 번만 수행되도록 할 수 있습니다. 그런 다음, rstTitleAuthor가 암시적으로 자동으로 rst가 새 행으로 이동할 때마다 해당 장으로 변경되도록 StayInSync 속성을 true로 설정합니다.
예시
Sub datashape()
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim rstTitleAuthor As New ADODB.Recordset
cnn.Provider = "MSDataShape"
cnn.Open "Data Provider=MSDASQL;" & _
"Data Source=SRV;Integrated Security=SSPI;Database=Pubs"
' STEP 1
rst.StayInSync = FALSE
rst.Open "SHAPE {select * from authors} " & _
"APPEND ({select * from titleauthor} " & _
"RELATE au_id TO au_id) AS chapTitleAuthor", _
cnn
' STEP 2
While Not rst.EOF
Debug.Print rst("au_fname"), rst("au_lname"), _
rst("state"), rst("au_id")
' STEP 3
Set rstTitleAuthor = rst("chapTitleAuthor").Value
' STEP 4
While Not rstTitleAuthor.EOF
Debug.Print rstTitleAuthor(0), rstTitleAuthor(1), _
rstTitleAuthor(2), rstTitleAuthor(3)
rstTitleAuthor.MoveNext
Wend
rst.MoveNext
Wend
End Sub
참고 항목
데이터 셰이핑 개요Field 개체Fields 컬렉션(ADO)공식적인 셰이프 문법OLE DB의 Microsoft 데이터 셰이핑 서비스(ADO 서비스 공급자)Recordset 개체(ADO)데이터 셰이프에 필요한 공급자셰이프 APPEND 절일반적인 셰이핑 명령셰이프 COMPUTE 절Visual Basic for Applications 기능