계층적 레코드 집합의 행 액세스 (예제)Accessing Rows in a Hierarchical Recordset (Example)

다음 예에서는 계층적 레코드 집합의 행에 액세스 하는 데 필요한 단계를 보여 줍니다.The following example shows the steps necessary to access rows in a hierarchical Recordset:

  1. 작성자 및 테이블의 레코드 집합 개체는 author ID로 연결 됩니다.Recordset objects from the authors and titleauthor tables are related by author ID.

  2. 외부 루프에는 각 저자의 성과 이름, 상태 및 식별이 표시 됩니다.The outer loop displays each author's first and last name, state, and identification.

  3. 각 행에 대해 추가 된 레코드 집합Fields 컬렉션에서 검색 되 고 rstTitleAuthor 에 할당 됩니다.The appended Recordset for each row is retrieved from the Fields collection and assigned to rstTitleAuthor.

  4. 내부 루프는 추가 된 레코드 집합 의 각 행에서 4 개의 필드를 표시 합니다.The inner loop displays four fields from each row in the appended Recordset.

StayInSync 속성은 설명을 위해 false 로 설정 되므로 외부 루프의 각 반복에서 챕터 변경을 명시적으로 확인할 수 있습니다.The StayInSync property is set to false for purposes of illustration, so that you can see the chapter change explicitly in each iteration of the outer loop. 코드 예제를 보다 효율적으로 만들기 위해 2 단계에서 첫 번째 줄 앞의 3 단계에서 할당을 이동 하 여 할당이 한 번만 수행 되도록 할 수 있습니다.To make the code example more efficient, you can move the assignment in step 3 before the first line in step 2, so that the assignment is performed only once. 그런 다음 StayInSync 속성을 true 로 설정 하 여 rst 가 새 행으로 이동할 때마다 rstTitleAuthor 가 암시적으로 해당 챕터로 자동 변경 되도록 합니다.Then set the StayInSync property to true, so that rstTitleAuthor will implicitly and automatically change to the corresponding chapter whenever rst moves to a new row.

예제Example

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

참고 항목See Also

데이터 셰이핑 개요 필드 개체 필드 컬렉션 (ado) 공식 셰이프 문법 OLE DB 용 Microsoft 데이터 셰이핑 서비스 (ado 서비스 공급자) 레코드 집합 개체 (ado) 필요한 공급자 데이터 셰이핑 셰이프 추가 절 셰이프 명령 Visual Basic for Applications 함수Data Shaping Overview Field Object Fields Collection (ADO) Formal Shape Grammar Microsoft Data Shaping Service for OLE DB (ADO Service Provider) Recordset Object (ADO) Required Providers for Data Shaping Shape APPEND Clause Shape Commands in General Shape COMPUTE Clause Visual Basic for Applications functions