StayInSync 属性示例 (VB)
此示例演示 StayInSync 属性如何帮助访问分层 Recordset 中的行。
外部循环显示每个作者的名字和姓氏、国家和身份。 每当父 Recordset 移动到新行时,将从 Fields 集合中检索每行追加的 Recordset,并将其通过 StayInSync 属性自动分配给 rstTitleAuthor。 内部循环显示追加记录集中每行的四个字段。
'BeginStayInSyncVB
Public Sub Main()
On Error GoTo ErrorHandler
Dim Cnxn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim rstTitleAuthor As New ADODB.Recordset
Dim strCnxn As String
' Open the connection with Data Shape attributes
Set Cnxn = New ADODB.Connection
strCnxn = "Provider=MSDataShape;Data Provider='sqloledb';Data Source='MySqlServer';" & _
"Initial Catalog='Pubs';Integrated Security='SSPI';"
Cnxn.Open strCnxn
' Create a recordset
Set rst = New ADODB.Recordset
rst.StayInSync = True
rst.Open "SHAPE {select * from Authors} " & _
"APPEND ( { select * from titleauthor} AS chapTitleAuthor " & _
"RELATE au_id TO au_id) ", Cnxn, , , adCmdText
Set rstTitleAuthor = rst("chapTitleAuthor").Value
Do Until rst.EOF
Debug.Print rst!au_fname & " " & rst!au_lname & " " & _
rst!State & " " & rst!au_id
Do Until rstTitleAuthor.EOF
Debug.Print rstTitleAuthor(0) & " " & rstTitleAuthor(1) & " " & _
rstTitleAuthor(2) & " " & rstTitleAuthor(3)
rstTitleAuthor.MoveNext
Loop
rst.MoveNext
Loop
' Clean up
rst.Close
Cnxn.Close
Set rst = Nothing
Set Cnxn = Nothing
Exit Sub
ErrorHandler:
' Clean up
If Not rst Is Nothing Then
If rst.State = adStateOpen Then rst.Close
End If
Set rst = Nothing
If Not Cnxn Is Nothing Then
If Cnxn.State = adStateOpen Then Cnxn.Close
End If
Set Cnxn = Nothing
If Err <> 0 Then
MsgBox Err.Source & "-->" & Err.Description, , "Error"
End If
End Sub
'EndStayInSyncVB