CompareBookmarks, exemple de méthode (VB)
Cet exemple illustre la méthode CompareBookmarks. La valeur relative des signets est rarement nécessaire, sauf si un signet particulier est a quelque chose de spécial.
Désignez une ligne aléatoire d’un Recordset dérivé de la table Auteurs comme cible d’une recherche. Affichez ensuite la position de chaque ligne par rapport à cette cible.
'BeginCompareBookmarksVB
'To integrate this code
'replace the data source and initial catalog values
'in the connection string
Public Sub Main()
On Error GoTo ErrorHandler
' recordset and connection variables
Dim rstAuthors As ADODB.Recordset
Dim Cnxn As ADODB.Connection
Dim strSQLAuthors As String
Dim strCnxn As String
' comparison variables
Dim count As Integer
Dim target As Variant
Dim result As Long
Dim strAnswer As String
Dim strTitle As String
strTitle = "CompareBookmarks Example"
' Open a connection
Set Cnxn = New ADODB.Connection
strCnxn = "Provider='sqloledb';Data Source='MySqlServer';" & _
"Initial Catalog='Pubs';Integrated Security='SSPI';"
Cnxn.Open strCnxn
' Open recordset as a static cursor type recordset
Set rstAuthors = New ADODB.Recordset
strSQLAuthors = "SELECT * FROM Authors"
rstAuthors.Open strSQLAuthors, Cnxn, adOpenStatic, adLockReadOnly, adCmdText
count = rstAuthors.RecordCount
Debug.Print "Rows in the Recordset = "; count
' Exit if an empty recordset
If count = 0 Then Exit Sub
' Get position between 0 and count -1
Randomize
count = (Int(count * Rnd))
Debug.Print "Randomly chosen row position = "; count
' Move row to random position
rstAuthors.Move count, adBookmarkFirst
' Remember the mystery row
target = rstAuthors.Bookmark
count = 0
rstAuthors.MoveFirst
' Loop through recordset
Do Until rstAuthors.EOF
result = rstAuthors.CompareBookmarks(rstAuthors.Bookmark, target)
If result = adCompareNotEqual Then
Debug.Print "Row "; count; ": Bookmarks are not equal."
ElseIf result = adCompareNotComparable Then
Debug.Print "Row "; count; ": Bookmarks are not comparable."
Else
Select Case result
Case adCompareLessThan
strAnswer = "less than"
Case adCompareEqual
strAnswer = "equal to"
Case adCompareGreaterThan
strAnswer = "greater than"
Case Else
strAnswer = "in error comparing to"
End Select
'show the results row-by-row
Debug.Print "Row position " & count & " is " & strAnswer & " the target."
End If
count = count + 1
rstAuthors.MoveNext
Loop
' clean up
rstAuthors.Close
Cnxn.Close
Set rstAuthors = Nothing
Set Cnxn = Nothing
Exit Sub
ErrorHandler:
' clean up
If Not rstAuthors Is Nothing Then
If rstAuthors.State = adStateOpen Then rstAuthors.Close
End If
Set rstAuthors = 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
'EndCompareBookmarksVB
Voir aussi
CompareBookmarks, méthode (ADO)
CompareEnum
Recordset, objet (ADO)