StayInSync 속성 예제(VB)
이 예제에서는 StayInSync 속성을 통해 계층적 Recordset의 행에 쉽게 액세스하는 방법을 보여 줍니다.
외부 루프는 각 작성자의 이름과 성, 상태 및 ID를 표시합니다. 각 행에 대해 추가된 레코드 집합은 Fields 컬렉션에서 검색되고 부모 레코드 집합이 새 행으로 이동할 때마다 StayInSync 속성에 의해 rstTitleAuthor에 자동으로 할당됩니다. 내부 루프는 추가된 레코드 집합의 각 행에서 4개 필드를 표시합니다.
'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