다음을 통해 공유


계층적 레코드 집합의 행 액세스(예)

다음 예제에서는 계층적 Recordset행에 액세스하는 데 필요한 단계를 보여 줍니다.

  1. Recordset작성자타이틀 작성자 테이블의 개체는 작성자 ID별로 관련됩니다.

  2. 외부 루프는 각 작성자의 이름과 성, 상태 및 ID를 표시합니다.

  3. 각 행에 대해 추가된 Recordset에서 Fields 컬렉션이 검색되어 rstTitleAuthor에 할당됩니다.

  4. 내부 루프는 추가된 Recordset각 행의 4개의 필드를 표시합니다.

StayInSync 속성은 설명 목적으로 false로 설정되어 외부 루프의 각 반복에서 장이 명시적으로 변경되는 것을 볼 수 있습니다. 코드 예제를 보다 효율적으로 만들기 위해 2단계의 첫 번째 줄 앞에 3단계의 할당을 이동하여 할당이 한 번만 수행되도록 할 수 있습니다. 그런 다음 StayInSync 속성을 true로 설정하여, rst가 새 행으로 이동할 때마다 rstTitleAuthor가 암시적으로 자동으로 해당 장으로 변경되도록 합니다.

예시

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

참고 자료

Data Shaping OverviewField ObjectFields Collection(ADO)공식 셰이프 문법Microsoft Data Shaping Service for OLE DB(ADO Service Provider)Recordset 개체 (ADO)데이터 셰이핑에 필요한 공급자셰이프 APPEND 절일반 셰이프 명령셰이프 COMPUTE 절Visual Basic for Applications 함수