Cách khai báo biến recordset

Access cho Microsoft 365 Access 2021 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Xem thêm...Ít hơn

Áp dụng cho

Đối tượng ComboBox

Đối tượng Form

Đối tượng ListBox

Đối tượng Report

Trả về hoặc đặt đối tượng Recordset ADO hoặc Recordset DAO thể hiện nguồn bản ghi cho biểu mẫu, báo cáo, điều khiển hộp danh sách hoặc điều khiển hộp tổ hợp đã xác định. Đọc/ghi.

expression.Recordset

biểu thức Bắt buộc. Một biểu thức trả về một trong các đối tượng trong danh sách Áp dụng Cho.

Ghi chú

Thuộc tính Recordset sẽ trả về đối tượng tập bản ghi cung cấp dữ liệu được duyệt trong biểu mẫu, báo cáo, điều khiển hộp danh sách hoặc điều khiển hộp tổ hợp. Nếu biểu mẫu dựa trên truy vấn, chẳng hạn như tham chiếu đến thuộc tính Recordset tương đương với việc tạo bản sao đối tượng Recordset bằng cách sử dụng cùng truy vấn. Tuy nhiên, không giống như sử dụng thuộc tính RecordsetClone, việc thay đổi bản ghi hiện đang trong tập bản ghi được trả về bởi thuộc tính Recordset của biểu mẫu sẽ đồng thời thiết lập bản ghi hiện tại của biểu mẫu.

Thuộc tính này chỉ khả dụng bằng cách sử dụng mã Visual Basic for Applications [VBA].

Hành vi đọc/ghi của thuộc tính Recordset được xác định theo loại tập bản ghi [ADO hoặc DAO] và kiểu dữ liệu [Access hay SQL] có trong tập bản ghi được xác định bởi thuộc tính.

Loại Recordset

Dựa theo dữ liệu SQL

Dựa theo dữ liệu Access

ADO

Đọc/Ghi

Đọc/Ghi

DAO

Không áp dụng

Đọc/Ghi

Ví dụ sau đây sẽ mở ra một biểu mẫu, mở ra một tập bản ghi, rồi kết ghép biểu mẫu với tập bản ghi bằng cách đặt thuộc tính Recordset của biểu mẫu vào đối tượng Recordset mới được tạo.

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

Sử dụng thuộc tính Recordset:

  • Để liên kết nhiều biểu mẫu với một tập hợp dữ liệu chung. Điều này cho phép đồng bộ hóa nhiều biểu mẫu. Ví dụ:

    Set Me.Recordset = Forms!Form1.Recordset

  • Để sử dụng các phương pháp với đối tượng Recordset không được hỗ trợ trực tiếp trên biểu mẫu. Ví dụ: bạn có thể sử dụng thuộc tính Recordset với các phương pháp Tìm ADO hoặc Tìm DAO trong hộp thoại tùy chỉnh để tìm kiếm bản ghi.

  • Để ngắt dòng giao dịch [vốn có thể được quay lui] xung quanh một tập hợp các chỉnh sửa có ảnh hưởng đến nhiều biểu mẫu.

Việc thay đổi thuộc tính Recordset của biểu mẫu cũng có thể thay đổi các thuộc tính RecordSource, RecordsetTypeRecordLocks. Ngoài ra, một số thuộc tính liên quan đến dữ liệu có thể bị thay thế, ví dụ: các thuộc tính Filter, FilterOn, OrderByOrderByOn.

Gọi phương pháp Requery thuộc tập bản ghi của biểu mẫu [ví dụ: Forms[0].Recordset.Requery] có thể khiến biểu mẫu bị ngắt liên kết. Để làm mới dữ liệu trong một biểu mẫu được liên kết với tập bản ghi, hãy đặt thuộc tính RecordSource của biểu mẫu thành chính biểu mẫu đó [Forms[0].RecordSource = Forms[0].RecordSource].

Khi một biểu mẫu được liên kết với tập bản ghi, lỗi sẽ xảy ra nếu bạn sử dụng lệnh Lọc theo Biểu mẫu.

Ví dụ

Ví dụ sau sử dụng thuộc tính Recordset để tạo bản sao mới cho đối tượng Recordset từ biểu mẫu hiện tại, rồi in tên của trường vào cửa sổ Gỡ lỗi.

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

Ví dụ tiếp theo sử dụng thuộc tính Recordset và đối tượng Recordset để đồng bộ hóa một tập bản ghi với bản ghi hiện tại của biểu mẫu. Khi tên công ty được chọn từ hộp tổ hợp, phương pháp FindFirst sẽ được sử dụng để định vị bản ghi cho công ty đó, giúp biểu mẫu hiển thị bản ghi tìm được.

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

Mã sau sẽ giúp xác định loại tập bản ghi được thuộc tính Recordset trả về theo nhiều điều kiện khác nhau.

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

Cần thêm trợ giúp?

Chủ Đề