Recordset 屬性

適用對象

ComboBox 物件

Form 物件

ListBox 物件

Report 物件

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

expression.Recordset

必須要有 expression。傳回「適用對象」清單中其中一個物件的運算式。

備註

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
擴展您的技能
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與其中一位 Office 支援專員連絡以深入了解您的意見。

×