นำไปใช้กับ
วัตถุ ComboBox |
วัตถุ Form |
วัตถุ ListBox |
วัตถุ Report |
ส่งกลับหรือตั้งค่าวัตถุ ชุดระเบียน ADO หรือ ชุดระเบียน DAO ที่แสดงถึง แหล่งข้อมูลระเบียน สําหรับฟอร์ม รายงาน ตัวควบคุมกล่องรายการ หรือตัวควบคุมกล่องคําสั่งผสมที่ระบุ อ่าน/เขียน
นิพจน์. Recordset
นิพจน์ จำเป็น นิพจน์ที่ส่งกลับวัตถุใดวัตถุหนึ่งในรายการ นําไปใช้กับ
ข้อสังเกต
คุณสมบัติ Recordset จะส่งกลับวัตถุ recordset ที่ให้ข้อมูลที่ถูกเรียกดูในฟอร์ม รายงาน ตัวควบคุมกล่องรายการ หรือตัวควบคุมกล่องคําสั่งผสม ถ้าฟอร์มยึดตามคิวรี ตัวอย่างเช่น การอ้างถึงคุณสมบัติ Recordset เทียบเท่ากับการโคลนวัตถุ Recordset โดยใช้คิวรีเดียวกัน อย่างไรก็ตาม ไม่เหมือนกับการใช้คุณสมบัติ RecordsetClone การเปลี่ยนว่าระเบียนใดเป็นระเบียนปัจจุบันในชุดระเบียนที่ส่งกลับโดยคุณสมบัติ Recordset ของฟอร์มจะเป็นการตั้งค่าระเบียนปัจจุบันของฟอร์มด้วย
คุณสมบัตินี้จะพร้อมใช้งานได้โดยการใช้โค้ด Visual Basic for Applications (VBA)
ลักษณะการทำงานในการอ่าน/เขียนของคุณสมบัติ Recordset จะถูกกำหนดโดยชนิดของชุดระเบียน (ADO หรือ DAO) และชนิดของข้อมูล (Access หรือ SQL) ที่มีอยู่ในชุดระเบียนที่ระบุตามคุณสมบัติ
ชนิด ชุดข้อมูล |
ยึดตามข้อมูล SQL |
ยึดตามข้อมูล Access |
ADO |
อ่าน/เขียน |
อ่าน/เขียน |
DAO |
ไม่มี |
อ่าน/เขียน |
ตัวอย่างต่อไปนี้จะเปิดฟอร์ม เปิดชุดระเบียน และผูกฟอร์มเข้ากับชุดระเบียนนั้นด้วยการตั้งค่าคุณสมบัติ 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 หรือ DAO ในกล่องโต้ตอบแบบกําหนดเองสําหรับการค้นหาระเบียน
-
เมื่อต้องการวนธุรกรรม (ที่สามารถย้อนกลับได้) รอบชุดการแก้ไขที่มีผลกระทบต่อฟอร์มหลายฟอร์ม
การเปลี่ยนแปลงคุณสมบัติ Recordset ของฟอร์มอาจเปลี่ยนแปลงคุณสมบัติ RecordSource, RecordsetType และ RecordLocks นอกจากนี้ คุณสมบัติบางอย่างที่เกี่ยวข้องกับข้อมูลอาจถูกแทนที่ ตัวอย่างเช่น คุณสมบัติ Filter, FilterOn, OrderBy และ OrderByOn
การเรียกเมธอด Requery ของชุดระเบียนของฟอร์ม (ตัวอย่างเช่น Forms(0).Recordset.Requery) อาจทําให้ฟอร์มไม่ถูกผูก เมื่อต้องการรีเฟรชข้อมูลในฟอร์มที่ผูกกับชุดระเบียน ให้ตั้งค่าคุณสมบัติ RecordSource ของฟอร์มเป็นตัวเอง (Forms(0).RecordSource = Forms(0).RecordSource)
เมื่อฟอร์มถูกผูกไว้กับชุดระเบียน ข้อผิดพลาดจะเกิดขึ้นถ้าคุณใช้ตัวกรองตามคำสั่งฟอร์ม
ตัวอย่าง
ตัวอย่างต่อไปนี้ใช้คุณสมบัติ 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