Microsoft Access Club >ADO入門講座 >このページ >次頁 < 前項  サイト内検索
 

Supportメソッドの利用 : ADO入門講座



ADOには、 指定したRecordsetオブジェクトが特定の種類の機能(レコードセットが編集可能であるか、新規レコードの追加が可能であるか)をサポートするかどうか、Supportメソッドを用いて調べることができます。

  • サポートしている場合 → SupportメソッドはTrueを返します。
  • サポートしていない場合 → SupportメソッドはFalseを返します。

構文

Recordset.Support(CursorOptions)
引数 意味 指定
Recordset

Recordsetオブジェクトを表わすオブジェクト変数

省略不可
CursorOptions

機能のサポート別に定数が用意されています

省略不可。

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

サンプルプロシージャ

Supportメソッドを用いるために、サブルーチン用のプロシージャを作成します。なお、このプロシージャは汎用的に作成していますので、他のプロシージャから簡単に呼び出せます。

Sub ADOSupport(myRecordset As Object) ' --- A

    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
    
    MsgBox strMsg

End Sub
解説
  1. 引数にRecordsetオブジェクトを指定します。そのため、引数のデータ型をオブジェクト型にしています。

プロシージャで実行

利用方法は、下記のようなプロシージャにCall関数で呼び出します。

Sub ADORecordsetSupport()

    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Set cn = CurrentProject.Connection
    Set rs = New ADODB.Recordset
    
    rs.Open "T_売り上げ管理", cn, adOpenKeyset, adLockOptimistic
    
    Call ADOSupport(rs) ' --- A
    
    Do Until rs.EOF
        Debug.Print rs!売上日, rs!社員名, rs!性別, Fix(rs!売上額 * 1.05)
        rs.MoveNext
    Loop
    
    rs.Close: Set rs = Nothing
    cn.Close: Set cn = Nothing

End Sub
解説
  1. Call関数でサブルーチン関数ADOSupportを呼び出す方法を取ります。引数にRecordsetオブジェクトを指定します。

結果

実行すると、下記のようなメッセージボックスが表示されます。

 

2004/09/04

ページの先頭へ 前ページへ戻る


Supportメソッドの利用 : ADO入門講座


 

-Microsoft Access Club-

注目のモンスター専用サーバーからお買い得プランまで幅広くそろえています。cPanel、PLESK、WEBMINまでお任せ下さい。
注目のモンスター専用サーバーからお買い得プランまで幅広い。
cPanel、PLESK、WEBMINまでお任せ下さい。