適用對象
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 屬性可能會一併變更 RecordSource、RecordsetType 和 RecordLocks 屬性。 此外,某些與資料相關的屬性可能會遭到覆寫,例如 Filter、FilterOn、OrderBy 和 OrderByOn 屬性。
呼叫表單 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