Recordset プロパティ

適用対象

ComboBox オブジェクト

Form オブジェクト

ListBox オブジェクト

Report オブジェクト

指定されたフォーム、レポート、リスト ボックス コントロール、コンボ ボックス コントロールに対してレコード ソースを表す ADO Recordset または DAO Recordset オブジェクトを返すか、設定します。読み取り/書き込み。

expression.Recordset

expression は必須です。「適用対象」の一覧のオブジェクトのうちの 1 つを返す式です。

解説

Recordset プロパティは、フォーム、レポート、リスト ボックス コントロール、コンボ ボックス コントロールで閲覧されているデータを提供するレコードセット オブジェクトを返します。フォームがたとえばクエリに基づく場合、Recordset プロパティを参照することは、同じクエリを利用して Recordset オブジェクトを複製することと等しくなります。ただし、RecordsetClone プロパティの使用とは異なり、フォームの Recordset プロパティによって返されるレコードセットで現行のレコードを変更すると、フォームの現行レコードも設定されます。

このプロパティは、Visual Basic for Applications (VBA) コードを使用する場合にのみ利用できます。

Recordset プロパティの読み取り/書き込み動作は、レコードセットの種類 (ADO または DAO) とプロパティによって特定されるレコードセットに含まれるデータの種類 (Access または SQL) によって決定されます。

Recordset 種類

SQL データに基づく

Access データに基づく

ADO

読み取り/書き込み

読み取り/書き込み

DAO

該当なし

読み取り/書き込み

次の例では、フォームの Recordset プロパティを新しく作成された Recordset オブジェクトに設定することで、フォームが開き、レコードセットが開き、レコードセットにフォームがバインドされます。

Global rstSuppliers As ADODB.RecordsetSub MakeRW()DoCmd.OpenForm "Suppliers"Set rstSuppliers = New ADODB.RecordsetrstSuppliers.CursorLocation = adUseClientrstSuppliers.Open "Select * From Suppliers", _CurrentProject.Connection, adOpenKeyset, adLockOptimisticSet Forms("Suppliers").Recordset = rstSuppliersEnd Sub

次の場合に、Recordset プロパティを使用します。

  • 一般的なデータ セットに複数のフォームをバインドする。これにより、複数のフォームを同期できます。次に例を示します。

    Set Me.Recordset = Forms!Form1.Recordset

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

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

フォームの Recordset プロパティを変更すると、RecordSourceRecordsetTypeRecordLocks プロパティも変更されることがあります。また、FilterFilterOnOrderByOrderByOn プロパティなど、一部のデータ関連プロパティがオーバーライドされることがあります。

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

フォームがレコードセットにバインドされているとき、Filter by Form コマンドを使用するとエラーが発生します。

次の例では、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 Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×