Доступ к строкам в иерархическом наборе записей (пример)
В следующем примере показаны шаги, необходимые для доступа к строкам в иерархическом наборе записей:
Объекты recordset из таблиц авторов и titleauthor связаны по идентификатору автора.
Внешний цикл отображает имя и фамилию, состояние и идентификацию каждого автора.
Добавленный набор записей для каждой строки извлекается из коллекции Fields и назначается rstTitleAuthor.
Внутренний цикл отображает четыре поля из каждой строки в добавленном наборе записей.
Свойство StayInSync имеет значение false для иллюстрации, чтобы вы могли явно видеть изменение главы в каждой итерации внешнего цикла. Чтобы сделать пример кода более эффективным, можно переместить назначение на шаге 3 перед первой строкой на шаге 2, чтобы назначение выполнялось только один раз. Затем присвойте свойству StayInSyncзначение true, чтобы rstTitleAuthor неявно и автоматически изменял соответствующую главу при каждом перемещении rst в новую строку.
Пример
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)Formal Shape GrammarMicrosoft Data Shaping Service for OLE DB (ADO Service Provider)Recordset Object (ADO)Requiredproviders for Data ShapingShape Clause AppendShape Shape Commands in GeneralShape COMPUTE Clause ClauseVisual Basic для приложений functions