นำไปใช้กับ
|
วัตถุ 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 NextEnd 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.CloseEnd 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 IfEnd Sub