Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: Access 2013, Office 2013
En el ejemplo siguiente, se muestran los pasos necesarios para obtener acceso a filas de un objeto Recordset jerárquico:
Los objetos Recordset de las tablas authors y titleauthor están relacionados por identificador de autor.
El bucle externo muestra el nombre y apellido, el estado y la identificación de cada autor.
El objeto Recordset anexado para cada fila se recupera de la colección Fields y se asigna a rstTitleAuthor.
El bucle interno muestra cuatro campos de cada fila en el objeto Recordset anexado.
Nota:
La propiedad StayInSync se establece en FALSE para fines ilustrativos, por lo que puede ver el cambio de capítulo explícitamente en cada iteración del bucle externo. Sin embargo, el ejemplo será más eficiente si la asignación en el paso 3 se traslada antes de la primera línea del paso 2, para que la asignación sólo se realice una vez. Establezca la propiedad StayInSync en TRUE, de modo que rstTitleAuthor cambie implícita y automáticamente al capítulo correspondiente cada vez que rst se mueva a una nueva fila.
Ejemplo
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;" & _
"User Id=MyUserName;Password=MyPassword;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