メイン コンテンツへスキップ
サポート
Microsoft アカウントでサインイン
サインインまたはアカウントを作成してください。
こんにちは、
別のアカウントを選択してください。
複数のアカウントがあります
サインインに使用するアカウントを選択してください。

適用対象

ComboBox オブジェクト

Form オブジェクト

ListBox オブジェクト

Report オブジェクト

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

expression.Recordset

expression 必ず指定します。 [適用先] リスト内のいずれかのオブジェクトを返す式。

解説

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

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。

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

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?
[送信] を押すと、Microsoft の製品とサービスの改善にフィードバックが使用されます。 IT 管理者はこのデータを収集できます。 プライバシーに関する声明。

フィードバックをいただき、ありがとうございます。

×