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メソッドをサポートします。 |