Recordset プロパティ

対象

ComboBox オブジェクト

Form オブジェクト

ListBox オブジェクト

Report オブジェクト

フォーム、レポート、リスト ボックス コントロール、コンボ ボックス コントロールのレコード ソースを表す ADO の Recordset オブジェクトまたは DAO の Recordset オブジェクトを参照します。値の取得および設定が可能です。

expression.Recordset

expression 必ず指定します。このトピックの [対象] の一覧のオブジェクトのうちの 1 つを返すオブジェクト式を指定します。

解説

このプロパティは、DAO の ODBCDirect レコードセットのタイプに使用することはできません。

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

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

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

レコードセットの種類

SQL データに基づく

Access データに基づく

ADO

取得/設定

取得/設定

DAO

N/A

取得/設定

次の使用例では、フォームとレコードセットを開き、フォームの 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 オブジェクトと一緒に使います。たとえば、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)。

フォームがレコードセットに連結しているときに [フォーム フィルタ] コマンドを使うと、エラーが発生します。

使用例

次の使用例では、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
' フィールド名を表示します。
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 サポートの担当者におつなぎいたします。

×