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 のサポートおよびフィードバックを参照してください。