นำไปใช้กับ
วัตถุ ComboBox |
---|
วัตถุ Form |
วัตถุ ListBox |
วัตถุ Report |
ส่งกลับค่าหรือตั้งค่าวัตถุ Recordset ADO หรือ Recordset DAO ที่แทนถึง แหล่งข้อมูลระเบียน สำหรับฟอร์มที่ระบุ รายงาน ตัวควบคุมกล่องรายการ หรือตัวควบคุมกล่องคำสั่งผสม อ่าน/เขียน
นิพจน์ 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 ของฟอร์มอาจเปลี่ยนคุณสมบัติ RecordSourceRecordsetType และRecordLocks ได้ นอกจากนี้ คุณสมบัติบางอย่างที่เกี่ยวข้องกับข้อมูลอาจถูกแทนที่ ตัวอย่างเช่น คุณสมบัติ FilterFilterOnOrderByและ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