(Access) 的 Report.Recordset 屬性

會傳回或設定代表指定物件之記錄來源的 ADO Recordset 或 DAO Recordset 物件。 讀/寫 物件

語法

運算式記錄

表達 代表 Report 物件的變數。

註解

Recordset屬性會傳回Recordset物件,該物件提供在表單、報表、清單方塊控制項或下拉式方塊控制項中流覽的資料。 如果表單為基礎的查詢,例如,參照 Recordset 屬性相當於使用相同的查詢來複製 資料 。 不過,不同於使用 記錄集 ] 屬性,變更的記錄目前表單的 Recordset 屬性所傳回的資料錄集中也會將目前記錄的表單。

注意事項

您無法將報表系結至 ADO 記錄集。 您必須使用 DAO,否則傾印 ADO 記錄集的暫存的資料表,並再將報表繫結到該暫存的資料表。

Recordset 屬性的讀/寫行為取決於錄集中 (ADO 或 DAO) 的類型及屬性識別記錄集所包含的 (Access 或 SQL) 的資料類型。

記錄集類型 基於 SQL 資料 基於 Access 資料庫引擎所儲存的資料
ADO 可讀寫的。 可讀寫的。
DAO 不適用 可讀寫的。

下列範例會開啟表單、 開啟記錄集,並再將表單資料錄集繫結表單的 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 尋找 或 DAO 尋找 方法,在 [自訂] 對話方塊中的尋找記錄。

  • 將交易 (包裝在一組會影響多個表單的編輯) 復原。

    變更表單的 Recordset 屬性可能也會變更的 記錄來源記錄集類型 ,然後 RecordLocks 屬性。 此外,某些資料相關的屬性可能會覆寫,範例、 篩選FilterOn排序順序 ,和 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 支援與意見反應