使用 Microsoft 登入
登入或建立帳戶。
您好:
選取其他帳戶。
您有多個帳戶
選擇您要用來登入的帳戶。

適用對象

ComboBox 物件

Form 物件

ListBox 物件

Report 物件

傳回或設定 ADO Recordset 或 DAO 代表指定表單、報表、清單方塊控制項或下拉式方塊控制項之記錄來源的 Recordset 物件。 讀/寫。

expression.Recordset

運算式 必要。 傳回 [套用至] 清單中其中一個對象的表達式。

備註

Recordset 屬性會傳回 Recordset 物件,這個物件會提供使用者在表單、報表、清單方塊控制項或下拉式方塊控制項中瀏覽的資料。 如果表單是以查詢為依據,例如,參照 Recordset 屬性相當於使用相同查詢複製 Recordset 物件。 不過,不像使用 RecordsetClone 屬性,變更表單的 Recordset 屬性所傳回 Recordset 中的目前記錄,也會設定表單的目前記錄。

此屬性只能在使用 Visual Basic for Applications (VBA) 程式碼時取得。

Recordset 屬性的讀/寫行為是由以下項目的類型所決定:Recordset (ADO 或 DAO) 以及屬性所識別 Recordset 中包含的資料 (Access 或 SQL)。

Recordset 類型

依據 SQL 資料

依據 Access 資料

ADO

讀/寫

讀/寫

DAO

不適用

讀/寫

下列範例開啟了表單和 Recordset,然後將表單繫結至 Recordset (將表單的 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 屬性可能會一併變更 RecordSourceRecordsetTypeRecordLocks 屬性。 此外,某些與資料相關的屬性可能會遭到覆寫,例如 FilterFilterOnOrderByOrderByOn 屬性。

呼叫表單 Recordset 的 Requery 方法 (例如 Forms(0).Recordset.Requery) 可能會將表單取消繫結。 若要重新整理繫結至 Recordset 的表單資料,請將表單的 RecordSource 屬性設為其本身的值 (Forms(0).RecordSource = Forms(0).RecordSource)。

將表單繫結至 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 物件將 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 屬性在其他情況下所傳回的 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 管理員將能夠收集這些資料。 隱私權聲明。

感謝您的意見反應!

×