该范例使用 Supports 方法,显示用不同游标类型打开的记录集所支持的选项。运行该过程需要 DisplaySupport 过程。
Public Sub SupportsX() Dim aintCursorType(4) As Integer Dim rstTitles As ADODB.Recordset Dim strCnn As String Dim intIndex As Integer ' 打开连接。 strCnn = "Provider=sqloledb;" & _ "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; " ' 使用 CursorType 常量填充数组。 aintCursorType(0) = adOpenForwardOnly aintCursorType(1) = adOpenKeyset aintCursorType(2) = adOpenDynamic aintCursorType(3) = adOpenStatic ' 使用每个 CursorType 和优化锁定打开记录集, ' 然后调用 DisplaySupport 过程显示所支持的选项。 For intIndex = 0 To 3 Set rstTitles = New ADODB.Recordset rstTitles.CursorType = aintCursorType(intIndex) rstTitles.LockType = adLockOptimistic rstTitles.Open "titles", strCnn, , , adCmdTable Select Case aintCursorType(intIndex) Case adOpenForwardOnly Debug.Print "ForwardOnly cursor supports:" Case adOpenKeyset Debug.Print "Keyset cursor supports:" Case adOpenDynamic Debug.Print "Dynamic cursor supports:" Case adOpenStatic Debug.Print "Static cursor supports:" End Select DisplaySupport rstTitles rstTitles.Close Next intIndexEnd SubPublic Sub DisplaySupport(rstTemp As ADODB.Recordset) Dim alngConstants(11) As Long Dim booSupports As Boolean Dim intIndex As Integer ' 用游标选项常量填充数组。 alngConstants(0) = adAddNew alngConstants(1) = adApproxPosition alngConstants(2) = adBookmark alngConstants(3) = adDelete alngConstants(4) = adFind alngConstants(5) = adHoldRecords alngConstants(6) = adMovePrevious alngConstants(7) = adNotify alngConstants(8) = adResync alngConstants(9) = adUpdate alngConstants(10) = adUpdateBatch For intIndex = 0 To 10 booSupports = _ rstTemp.Supports(alngConstants(intIndex)) If booSupports Then Select Case alngConstants(intIndex) Case adAddNew Debug.Print " AddNew" Case adApproxPosition Debug.Print " AbsolutePosition and AbsolutePage" Case adBookmark Debug.Print " Bookmark" Case adDelete Debug.Print " Delete" Case adFind Debug.Print " Find" Case adHoldRecords Debug.Print " Holding Records" Case adMovePrevious Debug.Print " MovePrevious and Move" Case adNotify Debug.Print " Notifications" Case adResync Debug.Print " Resyncing data" Case adUpdate Debug.Print " Update" Case adUpdateBatch Debug.Print " batch updating" End Select End If Next intIndexEnd Sub