ComboBox.Recordset プロパティ (Access)
指定したオブジェクトのレコード ソースを表す ADO Recordset オブジェクトまたは DAO Recordset オブジェクトを設定または返します。 読み取り/書き込み オブジェクト。
構文
式。レコード
式ComboBox オブジェクトを表す変数。
注釈
Recordset プロパティは、フォーム、レポート、リスト ボックス コントロール、またはコンボ ボックス コントロールで参照されるデータを提供する Recordset オブジェクトを返します。 たとえば、クエリに基づくフォームで Recordset プロパティを使って参照を行うことと、同じクエリを使って Recordset オブジェクトの複製を作成することは同じです。 ただし、 RecordsetClone プロパティと異なり、フォームの Recordset プロパティによって返されるレコードセットでどのレコードがカレントかを変更すると、フォームのカレント レコードにも反映されます。
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 のサポートおよびフィードバックを参照してください。