คุณสมบัติ Recordset

สิ่งสำคัญ:  บทความนี้เป็นการแปลด้วยเครื่อง โปรดดู ข้อจำกัดความรับผิดชอบ โปรดดูบทความฉบับภาษาอังกฤษ ที่นี่ เพื่อใช้อ้างอิง

นำไปใช้กับ

วัตถุ ComboBox

วัตถุ Form

วัตถุ ListBox

วัตถุ Report

ส่งกลับหรือตั้งค่าวัตถุ ADO Recordset หรือวัตถุ DAO Recordset ที่แสดงแหล่งข้อมูลระเบียน สำหรับฟอร์ม รายงาน ตัวควบคุมกล่องรายการ หรือตัวควบคุมกล่องคำสั่งผสมที่ระบุ โดยคุณสมบัตินี้สามารถอ่านเขียนได้

expression.Recordset

expression จำเป็นต้องมี เป็นนิพจน์ที่ส่งกลับวัตถุใดวัตถุหนึ่งในรายการ 'นำไปใช้กับ'

ข้อสังเกต

คุณสมบัติ Recordset จะส่งกลับวัตถุชุดระเบียนที่ให้ข้อมูลที่กำลังถูกเรียกดูในฟอร์ม รายงาน ตัวควบคุมกล่องรายการ หรือตัวควบคุมกล่องคำสั่งผสม ถ้าฟอร์มถูกยึดตามแบบสอบถาม ตัวอย่างเช่น การอ้างถึงคุณสมบัติ Recordset เป็นค่าที่มีการสร้างใหม่ซึ่งเหมือนกับของวัตถุ Recordset โดยใช้แบบสอบถามเดียวกัน อย่างไรก็ตาม จะแตกต่างกับการใช้คุณสมบัติ RecordsetClone เนื่องจากการเปลี่ยนแปลงระเบียนปัจจุบันที่อยู่ในชุดระเบียนซึ่งถูกส่งกลับโดยคุณสมบัติ Recordset ของฟอร์ม สามารถตั้งค่าระเบียนปัจจุบันของฟอร์มได้เช่นกัน

คุณสมบัตินี้จะพร้อมใช้งาน โดยใช้ Visual Basic for Applications (VBA) โค้ดเท่านั้น

ลักษณะการทำงานที่สามารถอ่านเขียนได้ของคุณสมบัติ Recordset จะกำหนดตามชนิดของชุดระเบียน (ADO หรือ DAO) และชนิดของข้อมูล (Access หรือ SQL) ที่อยู่ในชุดระเบียนตามที่คุณสมบัติดังกล่าวได้ระบุไว้

ชุดระเบียน ชนิด

ยึดตามข้อมูล SQL

ยึดตามข้อมูล Access

ADO

แบบอ่าน/เขียน

แบบอ่าน/เขียน

DAO

N/A

แบบอ่าน/เขียน

ตัวอย่างต่อไปนี้เปิดฟอร์ม เปิดชุดระเบียน แล้วผูกฟอร์มเข้ากับชุดระเบียนด้วยการตั้งค่าคุณสมบัติ 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 ของฟอร์มอาจเป็นการเปลี่ยนแปลงคุณสมบัติของ แหล่งระเบียนชนิดของชุดข้อมูล และ ล๊อกระเบียน นอกจากนี้ คุณสมบัติของข้อมูลที่เกี่ยวข้องอาจถูกเขียนทับได้ ตัวอย่างเช่น คุณสมบัติ ตัวกรองเมื่อใช้ตัวกรองลำดับตาม และ เมื่อใช้การจัดลำดับตาม

การเรียกเมธอด Requery ของชุดระเบียนของฟอร์ม (ตัวอย่างเช่น Forms(0).Recordset.Requery) อาจเป็นสาเหตุให้ฟอร์มกลายเป็นฟอร์มที่ถูกผูก เมื่อต้องการฟื้นฟูข้อมูลในฟอร์มที่ถูกผูกให้เป็นชุดระเบียน ให้ตั้งค่าคุณสมบัติ RecordSource ของฟอร์มดังกล่าวให้กับฟอร์มเอง (Forms(0).RecordSource = Forms(0).RecordSource)

เมื่อฟอร์มผูกกับชุดระเบียนจะมีข้อผิดพลาดเกิดขึ้นถ้าคุณใช้คำสั่ง กรองตามฟอร์ม

ตัวอย่าง

ตัวอย่างต่อไปนี้ใช้คุณสมบัติ Recordset เพื่อสร้างสำเนาใหม่ของวัตถุ Recordset จากฟอร์มปัจจุบันแล้วพิมพ์ชื่อของเขตข้อมูลในหน้าต่าง Debug

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

หมายเหตุ: ข้อจำกัดความรับผิดชอบของการแปลด้วยเครื่อง: บทความนี้มีการแปลด้วยระบบคอมพิวเตอร์โดยไม่มีการดำเนินการโดยบุคคล Microsoft จัดให้มีการแปลด้วยเครื่องนี้เพื่อช่วยให้ผู้ใช้ที่ไม่ได้พูดภาษาอังกฤษสามารถใช้ประโยชน์จากเนื้อหาเกี่ยวกับผลิตภัณฑ์ บริการและเทคโนโลยีของ Microsoft เนื่องจากบทความมีการแปลด้วยเครื่อง อาจมีข้อผิดพลาดด้านคำศัพท์ ไวยากรณ์หรือรูปประโยค

ขยายทักษะของคุณ
สำรวจการฝึกอบรม
รับฟีเจอร์ใหม่ก่อนใคร
เข้าร่วม Office Insider

ข้อมูลนี้เป็นประโยชน์หรือไม่

ขอบคุณสำหรับคำติชมของคุณ!

ขอขอบคุณสำหรับคำติชมของคุณ! เราคิดว่าอาจเป็นประโยชน์ที่จะให้คุณได้ติดต่อกับหนึ่งในตัวแทนฝ่ายสนับสนุน Office ของเรา

×