次の方法で共有


Report.Recordset プロパティ (Access)

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

構文

レコード

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

注釈

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

注:

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

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

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

次の使用例では、フォームとレコードセットを開き、フォームの 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 のサポートおよびフィードバックを参照してください。