Report.Recordset プロパティ (Access)

指定したオブジェクトのレコード ソースを 表す ADO Recordset オブジェクトまたは DAO Recordset オブジェクトを取得または設定します。 読み取り/書き込 みオブジェクト。

構文

Recordset

Report オブジェクトを表 す変数

注釈

Recordset プロパティ は、フォーム、レポート、リスト ボックス コントロール、またはコンボ ボックス コントロールで参照されるデータを提供する Recordset オブジェクトを返します。 たとえば、クエリに基づくフォームで Recordset プロパティを使って参照を行うことと、同じクエリを使って Recordset オブジェクトの複製を作成することは同じです。 ただし、 RecordsetClone プロパティと異なり、フォームの Recordset プロパティによって返されるレコードセットでどのレコードがカレントかを変更すると、フォームのカレント レコードにも反映されます。

注意

レポートを ADO レコードセットにバインドすることはできません。 DAO を使用するか、一時テーブルに ADO レコードセットをダンプしてから、その一時テーブルをレポートにバインドします。

Recordset プロパティの値の取得と設定が可能かどうかは、このプロパティで定義されるレコードセットの種類 (ADO または DAO) とデータの種類 (Access または SQL) によって決まります。

レコードセットの種類 SQL データに基づく Access データベース エンジンによって保存されたデータに基づく
ADO 読み取り/書き込み 読み取り/書き込み
DAO N/A 読み取り/書き込み

次の使用例では、フォームとレコードセットを開き、フォームの Recordset プロパティを新しく作成した Recordset オブジェクトに設定して、フォームをレコードセットに連結します。

Global rstSuppliers As ADODB.Recordset 
Sub MakeRW()      
    DoCmd.OpenForm "Suppliers" 
    Set rstSuppliers = New ADODB.Recordset 
    rstSuppliers.CursorLocation = adUseClient 
    rstSuppliers.Open "Select * From Suppliers", _ 
         CurrentProject.Connection, adOpenKeyset, adLockOptimistic      
    Set Forms("Suppliers").Recordset = rstSuppliers 
End Sub

Recordset プロパティ を使用して 、次の操作を行います。

  • フォームで直接サポート されていない Recordset オブジェクトでメソッドを使用します。 たとえば、 Recordset プロパティと ADO の Find メソッドまたは DAO の Find メソッドをカスタム ダイアログで使って、レコードを検索できます。

  • 複数のフォームに影響を与える一連の編集を処理するトランザクション (ロールバック可能) をラップします。

    フォームの Recordset プロパティを変更すると、" RecordSource /レコードソース"、" RecordsetType /レコードセット"、および " RecordLocks /レコードロック" の各プロパティも変更されます。 また、" Filter /フィルター"、" FilterOn /フィルター適用"、" OrderBy /並べ替え"、および " OrderByOn /並べ替え適用" などのデータ関連プロパティは無効になります。

    フォームのレコードセットの Requery メソッドを呼び出す ( Forms(0).Recordset.Requery) と、フォームが非連結になります。 レコードセットにバインドされたフォームのデータを更新するには、フォーム の RecordSource プロパティをそれ自体に設定します。 Forms(0).RecordSource = Forms(0).RecordSource

  • 複数のフォームを共通のデータ セットにバインドします。 これにより複数のフォームと同期をとることができます。 例:

      Set Me.Recordset = Forms!Form1.Recordset
    

注意

フォームがレコードセットにバインドされている場合は、[フォームでフィルター] コマンドを使用すると エラーが発生 します。

次の使用例では、Recordset プロパティを使って、現在のフォームから Recordset オブジェクトのコピーを新規作成し、[イミディエイト] ウィンドウにフィールド名を表示します。

Sub Print_Field_Names() 
    Dim rst As DAO.Recordset, intI As Integer 
    Dim fld As Field 
 
    Set rst = Me.Recordset 
    For Each fld in rst.Fields 
        ' Print field names. 
        Debug.Print fld.Name 
    Next 
End Sub

次の使用例は 、Recordset プロパティと Recordset オブジェクトを使用して、フォームの現在のレコードとレコードセットを同期します。 コンボ ボックスで会社名が選択されたとき、 FindFirst メソッドでその会社のレコードを検索し、見つかったレコードをフォームに表示します。

Sub SupplierID_AfterUpdate() 
    Dim rst As DAO.Recordset 
    Dim strSearchName As String 
 
    Set rst = Me.Recordset 
    strSearchName = CStr(Me!SupplierID) 
    rst.FindFirst "SupplierID = " & strSearchName 
    If rst.NoMatch Then 
        MsgBox "Record not found" 
    End If 
    rst.Close 
End Sub

次のコードは、別の条件下で、 Recordset プロパティが示すレコードセットの種類を判断します。

Sub CheckRSType() 
    Dim rs as Object 
 
    Set rs=Forms(0).Recordset 
    If TypeOf rs Is DAO.Recordset Then 
        MsgBox "DAO Recordset" 
    ElseIf TypeOf rs is ADODB.Recordset Then 
        MsgBox "ADO Recordset" 
    End If 
End Sub

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。