Supportメソッドの利用
Sub レコードセットの機能調査() Dim myCon As New ADODB.Connection, myRS As New ADODB.Recordset Dim FileName As String FileName = ThisWorkbook.Path & "\mdb\2-sampleDB.mdb" myCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FileName myRS.Open "社員", myCon, adOpenStatic, adLockReadOnly 'レコードセットの機能を調査するプロシージャ呼び出し Call ADOSupport(myRS) myRS.Close: Set myRS = Nothing myCon.Close: Set myCon = Nothing End Sub
Sub ADOSupport(myRecordset As Object)
'レコードセットの機能を調査する
Dim strMsg As String
If myRecordset.Supports(adApproxPosition) Then
strMsg = "OK : AbsolutePositionプロパティとAbsolutePageプロパティをサポートします。"
Else
strMsg = "NO : AbsolutePositionプロパティとAbsolutePageプロパティをサポートしていません。"
End If
If myRecordset.Supports(adAddNew) Then
strMsg = strMsg & vbNewLine & _
"OK : 新規レコードを追加するAddNewメソッドをサポートします。"
Else
strMsg = strMsg & vbNewLine & _
"NO : 新規レコードを追加するAddNewメソッドをサポートしません。"
End If
If myRecordset.Supports(adBookmark) Then
strMsg = strMsg & vbNewLine & _
"OK : 特定のレコードへのアクセスを確保するBookmarkプロパティをサポートします。"
Else
strMsg = strMsg & vbNewLine & _
"NO : 特定のレコードへのアクセスを確保するBookmarkプロパティをサポートしません。"
End If
If myRecordset.Supports(adDelete) Then
strMsg = strMsg & vbNewLine & _
"OK : レコードを削除する Delete メソッドをサポートします。"
Else
strMsg = strMsg & vbNewLine & _
"NO : レコードを削除する Delete メソッドをサポートしません。"
End If
If myRecordset.Supports(adFind) Then
strMsg = strMsg & vbNewLine & _
"OK : Recordset 内の行の位置を確認するFindメソッドをサポートします。"
Else
strMsg = strMsg & vbNewLine & _
"NO : Recordset 内の行の位置を確認するFindメソッドをサポートしません。"
End If
If myRecordset.Supports(adIndex) Then
strMsg = strMsg & vbNewLine & _
"OK : インデックスに名前を付けるIndexプロパティをサポートします。"
Else
strMsg = strMsg & vbNewLine & _
"NO : インデックスに名前を付けるIndexプロパティをサポートしません。"
End If
If myRecordset.Supports(adMovePrevious) Then
strMsg = strMsg & vbNewLine & _
"OK : カレントレコードの位置を後方に移動するMoveFirst、" & _
"MovePrevious、Move、GetRowsメソッドをサポートします。"
Else
strMsg = strMsg & vbNewLine & _
"NO : カレントレコードの位置を後方に移動するMoveFirst、" & _
"MovePrevious、Move、GetRowsメソッドをサポートしません。"
End If
If myRecordset.Supports(adSeek) Then
strMsg = strMsg & vbNewLine & _
"OK : Recordset 内の行に割り当てるSeekメソッドをサポートします。"
Else
strMsg = strMsg & vbNewLine & _
"NO : Recordset 内の行に割り当てるSeekメソッドをサポートしません。"
End If
If myRecordset.Supports(adUpdate) Then
strMsg = strMsg & vbNewLine & _
"OK : 既存のデータを変更するUpdateメソッドをサポートします。"
Else
strMsg = strMsg & vbNewLine & _
"NO : 既存のデータを変更するUpdateメソッドをサポートしません。"
End If
Debug.Print strMsg
End Sub
Supportメソッド
ADOには、指定したRecordsetオブジェクトが特定の種類の機能(レコードセットが編集可能であるか、新規レコードの追加が可能であるか)をサポートするかどうか、Supportメソッドを用いて調べることができる。
Recordset.Support(CursorOptions)
| 引数 | 内容 |
|---|---|
| Recordset | Recordsetオブジェクトを表わすオブジェクト変数 (省略不可) |
| CursorOptions | 機能のサポート別に定数が用意されています (省略不可) |
| 定数 | 説明 |
|---|---|
| adApproxPosition | AbsolutePosition プロパティと AbsolutePageプロパティをサポートします。 |
| adAddNew | 新規レコードを追加する AddNewメソッドをサポートします。 |
| adBookmark | 特定のレコードへのアクセスを確保する Bookmarkプロパティをサポートします。 |
| adDelete | レコードを削除する Deleteメソッドをサポートします。 |
| adFind | Recordset 内の行の位置を確認する Findメソッドをサポートします。 |
| adIndex | インデックスに名前を付ける Indexプロパティをサポートします。 |
| adMovePrevious | ブックマークを使用せずにカレントレコードの位置を後方に移動するMoveFirst、MovePrevious メソッドおよび Move、またはGetRows メソッドをサポートします。 |
| adSeek | Recordset 内の行に割り当てる Seekメソッドをサポートします。 |
| adUpdate | 既存のデータを変更する Updateメソッドをサポートします。 |
