ASP การบรรยายที่ 7: ASP และฐานข้อมูล (2)
ผู้เขียน:Eve Cole
เวลาอัปเดต:2009-05-30 19:55:02
ในการบรรยายครั้งก่อน เราได้เรียนรู้วิธีสร้างการเชื่อมต่อกับฐานข้อมูลและดึงข้อมูลจากฐานข้อมูล เนื้อหาวันนี้คือการเพิ่มข้อมูลใหม่ลงในฐานข้อมูล แก้ไข และลบข้อมูลในฐานข้อมูล
1. วิธีที่ 1 สำหรับการเพิ่มข้อมูลใหม่ลงในฐานข้อมูล: ใช้คำสั่ง SQL เช่น wuf50.asp
เพื่อให้ขั้นตอนในอนาคตง่ายขึ้น ส่วนที่เชื่อมต่อกับฐานข้อมูล Access จะถูกวางไว้ในไฟล์นี้จะไม่มีการอธิบายเมื่อจำเป็นในอนาคต
<% 'AdoAccess.asp
ตัวเลือกที่ชัดเจน
การตอบกลับหมดอายุ = 0
'ส่วนที่ 1: การสร้างการเชื่อมต่อ
ดิมซีเอ็นน์, StrCnn
ตั้งค่า Cnn = Server.CreateObject("ADODB.Connection")
StrCnn = "ผู้ให้บริการ = Microsoft.Jet.OLEDB.4.0; แหล่งข้อมูล = C:InetpubhomeaspNorthwind.mdb"
Cnn.เปิด StrCnn
-
โปรแกรม wuf50.asp
<% @LANGUAGE = VBScript %>
<!--#include file="AdoAccess.asp"-->
<% ' wuf50.asp
'ส่วนที่ 2: เพิ่มข้อมูลใหม่โดยใช้วัตถุ Execute of Connection
หรี่ StrSQL, rsTest
StrSQL = "INSERT INTO shipper (ชื่อบริษัท, หมายเลขโทรศัพท์) VALUES('wu''feng','0571-7227298')"
Cnn.ดำเนินการ StrSQL
-
<HTML>
<ร่างกาย>
<% 'ส่วนที่ 3: แสดงชุดบันทึกที่ได้รับบนเบราว์เซอร์
ตั้งค่า rsTest = Cnn.Execute("เลือก * จากผู้ให้บริการ")
ทำในขณะที่ไม่ใช่ rsTest.EOF
การตอบสนองเขียน rsTest(0) & " " & rsTest(1) & " " & rsTest(2) & " " & "<BR>"
rsTest.MoveNext
วนซ้ำ
ตอนที่ 4: ทำความสะอาดสนามรบ
ซีเอ็น.ปิด
ตั้งค่า rsTest = ไม่มีเลย: ตั้งค่า Cnn = ไม่มีเลย
-
</ร่างกาย>
</HTML>
โปรดทราบประเด็นต่อไปนี้:
1. เมื่อใช้คำสั่ง SQL เพื่อเพิ่มข้อมูลลงในฐานข้อมูล Access คุณต้องใช้แทรกลงใน เมื่อต้องการเพิ่มข้อมูลลงในฐานข้อมูล SQL Server เพียงใช้แทรก
2. รูปแบบของการเพิ่มข้อมูลโดยใช้คำสั่ง SQL เป็นไปตามตัวอย่างข้างต้น โปรดทราบว่าจะต้องเพิ่ม 'wu''feng' ในคำสั่งเนื่องจากคำสั่ง SQL ใช้ ' เป็นตัวคั่นของสตริง
3. ด้วยการรวมตัวอย่างนี้กับสิ่งที่คุณเรียนรู้ก่อนหน้านี้ คุณจะสามารถเพิ่มข้อมูลจากฟอร์ม HTML ได้
4. โปรดทราบว่าในตัวอย่างนี้จะมีฟิลด์ที่มีประเภทข้อมูลเป็นการกำหนดหมายเลขอัตโนมัติ เช่น "รหัสผู้จัดส่ง" ดังนั้นคุณจึงไม่จำเป็นต้องคำนึงถึงวิธีเขียนโค้ดเพื่อให้ได้ตัวเลขที่เพิ่มขึ้น
วิธีที่ 2: ใช้เมธอด Addnew ของวัตถุ Recordset เช่น wuf51.asp
<% @LANGUAGE = VBScript %>
<!--#include file="AdoAccess.asp"-->
<!--#include file="adovbs.inc"-->
<% ' wuf51.asp
'ส่วนที่ 2: เพิ่มข้อมูลใหม่โดยใช้วิธี AddNew ของวัตถุ Recordset
หรี่ StrSQL, rsTest
ตั้งค่า rsTest = server.CreateObject("ADODB.Recordset")
rsTest.CursorType = adOpenKeySet 'adOpenDynamic
'หากไม่มีประโยคต่อไปนี้ ฐานข้อมูลจะไม่ได้รับอนุญาตให้อัปเดต เพราะเหตุใด?
rsTest.LockType = adLockOptimistic
rsTest.Open "ผู้จัดส่ง",Cnn ,,,adCmdTable
rsTest เพิ่มใหม่
rsTest("ชื่อบริษัท") = "wu'feng"
rsTest("โทรศัพท์") = "0571-7227298"
rsTest.อัปเดต
-
<HTML>
<ร่างกาย>
<% 'ส่วนที่ 3: แสดงชุดบันทึกที่ได้รับบนเบราว์เซอร์
'ย้ายตัวชี้ฐานข้อมูลไปยังระเบียนแรกในตาราง
ถ้าไม่ใช่ rsTest.EOF <> 0 แล้ว
Response.Write "มี [" & rsTest.RecordCount & "] ชิ้นส่วนของข้อมูลในตาราง" & "<Br><Br>"
rsTest.MoveFirst
สิ้นสุดถ้า
ทำในขณะที่ไม่ใช่ rsTest.EOF
การตอบสนองเขียน rsTest(0) & " " & rsTest(1) & " " & rsTest(2) & " " & "<BR>"
rsTest.MoveNext
วนซ้ำ
ตอนที่ 4: ทำความสะอาดสนามรบ
ซีเอ็น.ปิด
ตั้งค่า rsTest = ไม่มีเลย: ตั้งค่า Cnn = ไม่มีเลย
-
</ร่างกาย>
</HTML>
วิเคราะห์:
1. เหตุใดจึงต้องตั้งค่า rsTest.LockType = adLockOptimistic
คุณสมบัติ LockType ของวัตถุ Recordset มีค่าที่เป็นทางเลือกสี่ค่า:
adLockReadOnly - ค่าเริ่มต้น ซึ่งระบุว่าชุดระเบียนถูกเปิดในโหมดอ่านอย่างเดียว ดังนั้นข้อมูลจึงไม่สามารถเปลี่ยนแปลงได้ ในกรณีนี้ จะเกิดข้อผิดพลาดเมื่อใช้วิธีการ AddNew
adLockPessimistic - การล็อกบันทึกแบบอนุรักษ์นิยม (รายการต่อรายการ) ใช้วิธีการล็อกบันทึกของแหล่งข้อมูลทันทีเมื่อทำการแก้ไข ในขณะนี้ ผู้ใช้รายอื่นไม่สามารถเข้าถึงข้อมูลได้
adLockOptimistic - เปิดการล็อคบันทึก (รายการต่อรายการ) บันทึกจะถูกล็อคเมื่อมีการเรียกใช้วิธีการอัปเดตเท่านั้น ลองคิดดูว่าคุณสมบัตินี้คล้ายกับคุณสมบัติ Lock and Unlock ของ Application object ที่เราพูดถึงหรือไม่?
adLockBatchOptimistic - การอัปเดตแบตช์แบบเปิด ใช้เพื่ออัปเดตข้อมูลเป็นกลุ่มซึ่งสอดคล้องกับวิธี UpdateBatch
อย่างไรก็ตาม เรามาพูดถึงแอตทริบิวต์ CursorType ที่กล่าวถึงในการบรรยายครั้งก่อน ซึ่งมีสี่ค่าด้วย:
adOpenForwardOnly - เคอร์เซอร์ไปข้างหน้าเท่านั้น ค่าเริ่มต้น สามารถเลื่อนไปข้างหน้าในเรคคอร์ดเท่านั้น ซึ่งช่วยประหยัดทรัพยากรและปรับปรุงประสิทธิภาพ
adOpenStatic - เคอร์เซอร์แบบคงที่ สำเนาคงที่ของคอลเลกชันบันทึกที่สามารถใช้เพื่อค้นหาข้อมูลหรือสร้างรายงาน นอกจากนี้ การเพิ่มเติม การเปลี่ยนแปลง หรือการลบที่ทำโดยผู้ใช้รายอื่นจะไม่สามารถมองเห็นได้ ขอแนะนำให้ใช้เพียงเคอร์เซอร์สองตัวนี้ใน ASP
adOpenKeyset - เคอร์เซอร์ชุดคีย์ เคอร์เซอร์ชุดคีย์นั้นคล้ายคลึงกับเคอร์เซอร์แบบไดนามิก ยกเว้นว่าจะถูกห้ามไม่ให้ดูบันทึกที่เพิ่มโดยผู้ใช้รายอื่น และห้ามมิให้เข้าถึงบันทึกที่ถูกลบโดยผู้ใช้รายอื่นจะยังคงมองเห็นได้
adOpenDynamic - เคอร์เซอร์แบบไดนามิก สามารถดูการเพิ่มเติม การเปลี่ยนแปลง และการลบที่ทำโดยผู้ใช้รายอื่น อนุญาตให้มีการเคลื่อนไหวทุกประเภทภายในชุดบันทึก
สิ่งที่แน่นอนก็คือคำอธิบายที่เป็นนามธรรมนั้นค่อนข้างจะกว้างใหญ่ และฉันก็ยังไม่ค่อยเข้าใจมันนัก
(1) หากคุณดึงข้อมูลเพียงใช้ค่าเริ่มต้น
(2) หากคุณใช้วิธีการอัปเดตเพื่ออัปเดตชิ้นส่วนข้อมูล ให้ใช้ adLockOptimistic สำหรับแอตทริบิวต์ LockType และใช้ adLockBatchOptimistic หากคุณใช้วิธี UpdataBatch เพื่ออัปเดตข้อมูลเป็นชุด
(3) หากมีการดำเนินการเขียนไปยังฐานข้อมูล โดยปกติแล้วจะใช้ adOpenKeyset สำหรับแอตทริบิวต์ CursorType ก็เพียงพอแล้ว
แล้วไงล่ะ? แม้ว่าคุณจะยังไม่เข้าใจ แต่คุณก็สามารถใช้งานได้
2. หากคุณไม่เชี่ยวชาญด้านฐานข้อมูล มักจะเป็นประโยชน์หากใช้ rsTest.MoveFirst เพื่อย้ายตัวชี้ไปที่บันทึกแรกก่อนที่จะแสดงเอาต์พุต อย่างไรก็ตาม หากไม่มีข้อมูลในฐานข้อมูล จะไม่สามารถใช้เมธอด MoveFirst ได้ ดังนั้นให้ใช้แอ็ตทริบิวต์ rsTest.EOF เพื่อพิจารณาว่ามีข้อมูลในฐานข้อมูลก่อนใช้งานหรือไม่
3. คุณสมบัติ RecordCount (เพื่อให้ได้จำนวนระเบียนในชุดระเบียน) สามารถใช้ได้เฉพาะเมื่อตั้งค่าประเภทเคอร์เซอร์เป็น adOpenKeyset หรือ adOpenStatic
2. ปรับเปลี่ยนข้อมูลที่มีอยู่ในฐานข้อมูล วิธีที่ 1: ใช้คำสั่ง SQL ตัวอย่างเช่น wuf52.asp โดยพื้นฐานแล้วโปรแกรมจะคล้ายกับ wuf50.asp มีเพียงส่วนสำคัญเท่านั้นที่แสดงไว้ที่นี่
'ส่วนที่ 2: แก้ไขข้อมูลโดยใช้วิธีการดำเนินการของวัตถุการเชื่อมต่อ
หรี่ StrSQL, rsTest
StrSQL = "อัปเดตโทรศัพท์ผู้ให้บริการ SET = '(503) 555-3188' โดยที่โทรศัพท์ LIKE '%99%'"
Cnn.ดำเนินการ StrSQL
ในการแก้ไขข้อมูล คุณไม่จำเป็นต้องใช้ INSERT INTO...VALUES แต่ใช้คำสั่ง UPDATE...SET ส่วนคำสั่ง WHERE หมายถึงการเปลี่ยนหมายเลขโทรศัพท์ที่มีสตริง "99" ("LIKE" และ "% " มักใช้ในการสืบค้นแบบคลุมเครือ) ถึง (503) 555-3188 หากไม่มีการกำหนดเงื่อนไข หมายเลขโทรศัพท์ทั้งหมดในตารางจะเปลี่ยนไป
วิธีที่ 2: ใช้วิธีการอัปเดตของวัตถุชุดระเบียน โปรแกรม wuf53.asp (คล้ายกับโปรแกรม wuf51.asp)
'ส่วนที่ 2: แก้ไขข้อมูลโดยใช้วิธีการอัปเดตของวัตถุ Recordset
หรี่ StrSQL, rsTest
ตั้งค่า rsTest = server.CreateObject("ADODB.Recordset")
rsTest.LockType = adLockOptimistic
StrSQL = "เลือกนามสกุล, ชื่อ, วันเดือนปีเกิดจากพนักงาน WHERE วันเกิด = #55-03-04#"
rsTest.เปิด StrSQL, Cnn,,,adCmdText
rsTest("ชื่อ") = "ภาษาจีน"
rsTest.อัปเดต
วิเคราะห์:
1. ในคำสั่ง SQL ถ้าฐานข้อมูลเป็นฐานข้อมูล Access วันที่ควรอยู่ใน #55-03-04# ดังในตัวอย่างนี้ ถ้าเป็นฐานข้อมูล SQL Server วันที่ควรอยู่ใน '55-03 -04'.
2. ใน rsTest.Open StrSQL, Cnn,,,adCmdText เนื่องจากพารามิเตอร์ตัวแรกคือคำสั่ง SQL พารามิเตอร์ตัวที่ห้าจึงเป็น adCmdText คุณสามารถละเว้นพารามิเตอร์ตัวที่ห้าได้ แต่การเพิ่มจะทำให้การทำงานของสคริปต์มีประสิทธิภาพมากขึ้น
3. เมื่อใช้วิธีที่หนึ่ง คุณสามารถอัปเดตระเบียนทั้งหมดที่ตรงตามเงื่อนไข (หลายระเบียนหรือหนึ่งระเบียน) ได้ในคราวเดียว แต่การอัปเดตในวิธีที่สองสามารถแก้ไขได้เฉพาะระเบียนปัจจุบันเท่านั้น (ระเบียนแรกที่ตรงตามเงื่อนไข)
3. ลบข้อมูลในฐานข้อมูล วิธีที่ 1: ใช้คำสั่ง SQL กิจวัตร wuf55.asp
'ส่วนที่ 2: ใช้คำสั่ง SQL เพื่อลบข้อมูล
หรี่ StrSQL, rsTest
StrSQL = "ลบจากผู้ให้บริการ WHERE หมายเลขโทรศัพท์ = '0571-7227298'"
Cnn.ดำเนินการ StrSQL
วิธีที่ 2: ใช้วิธีการลบของวัตถุชุดระเบียน กิจวัตร wuf56.asp
'ส่วนที่ 2: ใช้วิธีการลบของวัตถุ Recordset เพื่อลบข้อมูล
หรี่ StrSQL, rsTest
ตั้งค่า rsTest = server.CreateObject("ADODB.Recordset")
rsTest.LockType = adLockOptimistic
StrSQL = "SELECT * จากผู้ให้บริการ WHERE หมายเลขโทรศัพท์ = '0571-7227298'"
rsTest.เปิด StrSQL, Cnn,,,adCmdText
ในขณะที่ไม่ใช่ rsTest.EOF
rsTest ลบ
rsTest.MoveNext
เวนด์
ถ้ามีหลายเรกคอร์ดในชุดเรกคอร์ดที่ตรงตามเงื่อนไข คุณต้องใช้การวนซ้ำ มิฉะนั้น วิธีการลบจะลบเฉพาะเรกคอร์ดปัจจุบัน นั่นคือเรกคอร์ดแรกที่ตรงตามเงื่อนไข
4.ความรู้ที่เป็นประโยชน์อื่นๆ
1. การอัปเดตข้อมูลเป็นชุด ด้านบนเราได้พูดถึงวิธีใช้วิธีอัปเดตของออบเจ็กต์ Recordset เพื่ออัปเดตข้อมูล อันที่จริง ออบเจ็กต์ Recordset สามารถรองรับการอัปเดตได้สองประเภท: การอัปเดตทันทีและการอัปเดตแบบกลุ่ม
ด้วยการอัปเดตทันที การเปลี่ยนแปลงข้อมูลทั้งหมดจะถูกเขียนไปยังแหล่งข้อมูลปัจจุบันทันทีเมื่อมีการเรียกใช้วิธีการอัปเดต
การอัปเดตเป็นชุดช่วยให้ผู้ให้บริการสามารถแคชการเปลี่ยนแปลงไปยังหลายระเบียน จากนั้นใช้วิธี UpdateBatch เพื่อถ่ายโอนไปยังฐานข้อมูลในการโทรครั้งเดียว เมื่ออัพเดตหลายเรคคอร์ด การอัพเดตแบบแบตช์จะมีประสิทธิภาพมากกว่าการอัพเดตทันที
ค่าเริ่มต้นคือโหมดอัพเดตทันที หากต้องการใช้โหมดการอัพเดตเป็นชุด ให้ใช้เคอร์เซอร์ไคลเอนต์ เช่น wuf54.asp
<% @LANGUAGE = VBScript %>
<!--#include file="AdoAccess.asp"-->
<!--#include file="adovbs.inc"-->
<% ' wuf54.asp
'ส่วนที่ 2: โหมดการอัปเดตแบบแบตช์
หรี่ StrSQL, rsTest
ตั้งค่า rsTest = server.CreateObject("ADODB.Recordset")
rsTest.CursorLocation = adUseClient 'ใช้ประเภทเคอร์เซอร์ไคลเอนต์
rsTest.LockType = adLockBatchOptimistic
StrSQL = "SELECT * จากผู้ให้บริการโดยที่โทรศัพท์ LIKE '%99%'"
rsTest.เปิด StrSQL, Cnn,,,adCmdText
rsTest.MoveFirst
ในขณะที่ไม่ใช่ rsTest.EOF
rsTest("ชื่อบริษัท") = "ภาษาจีน"
rsTest.MoveNext
เวนด์
rsTest.UpdateBatch
-
<HTML>
<ร่างกาย>
<% 'ส่วนที่ 3: แสดงชุดบันทึกที่ได้รับบนเบราว์เซอร์
rsTest คำขอ
ทำในขณะที่ไม่ใช่ rsTest.EOF
การตอบสนองเขียน rsTest(0) & " " & rsTest(1) & " " & rsTest(2) & " " & "<BR>"
rsTest.MoveNext
วนซ้ำ
ตอนที่ 4: ทำความสะอาดสนามรบ
ซีเอ็น.ปิด
ตั้งค่า rsTest = ไม่มีเลย: ตั้งค่า Cnn = ไม่มีเลย
-
</ร่างกาย>
</HTML>
สังเกต:
1) rsTest.CursorLocation = adUseClient มีสองค่า ส่วนอีกค่าคือ adUseServer (ค่าเริ่มต้น) สำหรับผู้เริ่มต้น ประเภทเคอร์เซอร์ของอ็อบเจ็กต์ Recordset ถือเป็นส่วนที่ยาก ฉันจะไม่แนะนำโดยละเอียดที่นี่เพื่อหลีกเลี่ยงไม่ให้สับสนมากขึ้นเรื่อยๆ โปรดค่อยๆ สำรวจในการประมวลผลจริง (ลองเพิ่มเติม)
2) rsTest.Requery: ใช้เมธอด Requery เพื่อรีเฟรชเนื้อหาทั้งหมดของอ็อบเจ็กต์ Recordset ของแหล่งข้อมูล การเรียกเมธอดนี้เทียบเท่ากับการเรียกเมธอด Close และ Open อย่างต่อเนื่อง
2. เรียนรู้การใช้คุณสมบัติตัวกรองของวัตถุชุดระเบียน
<% @LANGUAGE = VBScript %>
<!--#include file="AdoAccess.asp"-->
<!--#include file="adovbs.inc"-->
<% ' wuf57.asp
'ส่วนที่ 2: การใช้คุณสมบัติตัวกรองของวัตถุชุดระเบียน
หรี่ StrSQL, rsTest
ตั้งค่า rsTest = server.CreateObject("ADODB.Recordset")
rsTest.CursorType = adOpenStatic
rsTest.LockType = adLockOptimistic
rsTest.Open "ผู้จัดส่ง",Cnn ,,,adCmdTable
'กรองบันทึกที่ตรงตามเกณฑ์ออก ในขณะที่บันทึกอื่นๆ จะถูกกรองออก
rsTest.Filter = "ชื่อบริษัท = 'wu''feng'"
ถ้า rsTest.EOF แล้ว 'หากไม่มีบันทึกดังกล่าว ให้เพิ่มเข้าไป'
rsTest เพิ่มใหม่
rsTest("ชื่อบริษัท") = "wu'feng"
rsTest("โทรศัพท์") = "0571-7227298"
rsTest.อัปเดต
มิฉะนั้น 'หากมีเรกคอร์ดที่ตรงตามเงื่อนไข ให้แก้ไขเรกคอร์ดแรกที่ตรงตามเงื่อนไข
rsTest("โทรศัพท์") = "(571) 7227298"
rsTest.อัปเดต
สิ้นสุดถ้า
-
<HTML>
<ร่างกาย>
<% 'ส่วนที่ 3: แสดงชุดบันทึกที่ได้รับบนเบราว์เซอร์
'โปรดเปรียบเทียบความแตกต่างระหว่างใช่และไม่ใช่อย่างระมัดระวังในประโยคต่อไปนี้
'rsTest.Filter="" 'ใช้เพื่อล้างแอตทริบิวต์ตัวกรอง
rsTest.MoveFirst
ทำในขณะที่ไม่ใช่ rsTest.EOF
การตอบสนองเขียน rsTest(0) & " " & rsTest(1) & " " & rsTest(2) & " " & "<BR>"
rsTest.MoveNext
วนซ้ำ
ตอนที่ 4: ทำความสะอาดสนามรบ
ซีเอ็น.ปิด
ตั้งค่า rsTest = ไม่มีเลย: ตั้งค่า Cnn = ไม่มีเลย
-
</ร่างกาย>
</HTML>
3. นอกเหนือจากสองวิธีที่แนะนำข้างต้นแล้ว คุณยังสามารถใช้คำสั่ง SQL และวิธีการ Excute ของอ็อบเจ็กต์ Command เพื่อรักษาฐานข้อมูลได้อีกด้วย ตัวอย่าง wuf58.asp
<% @LANGUAGE = VBScript %>
<!--#include file="AdoAccess.asp"-->
<!--#include file="adovbs.inc"-->
<% ' wuf58.asp
'ส่วนที่ 2: ดูแลรักษาฐานข้อมูลโดยใช้คำสั่ง SQL และวิธีการ Excute ของอ็อบเจ็กต์ Command
หรี่ StrSQL, rsTest, cmdChange
StrSQL = "INSERT INTO shipper (ชื่อบริษัท, หมายเลขโทรศัพท์) VALUES('wu''feng','0571-7227298')"
'สร้างวัตถุคำสั่ง
ตั้งค่า cmdChange =server.CreateObject("ADODB.Command")
ตั้งค่า cmdChange.ActiveConnection = Cnn
cmdChange.CommandText = StrSQL
cmdChange.Execute
-
<HTML>
<ร่างกาย>
<% 'ส่วนที่ 3: แสดงชุดบันทึกที่ได้รับบนเบราว์เซอร์
ตั้งค่า rsTest = server.CreateObject("ADODB.Recordset")
rsTest.Open "ผู้จัดส่ง", Cnn, , , adCmdTable
ทำในขณะที่ไม่ใช่ rsTest.EOF
การตอบสนองเขียน rsTest(0) & " " & rsTest(1) & " " & rsTest(2) & " " & "<BR>"
rsTest.MoveNext
วนซ้ำ
ตอนที่ 4: ทำความสะอาดสนามรบ
ซีเอ็น.ปิด
ตั้งค่า rsTest = ไม่มีเลย: ตั้งค่า Cnn = ไม่มีเลย
-
</ร่างกาย>
</HTML>
การบรรยายนี้จะแนะนำวิธีการดูแลรักษาข้อมูลสามวิธีเป็นหลัก ผู้เริ่มต้นจะต้องเชี่ยวชาญสองวิธีแรกเท่านั้น โดยทั่วไป พยายามใช้คำสั่ง SQL เพื่อแก้ปัญหา ซึ่งง่ายและชัดเจน ข้อได้เปรียบที่ใหญ่ที่สุดของการใช้อ็อบเจ็กต์ Recordset คือคุณสามารถใช้คุณสมบัติจำนวนมากและประเภทเคอร์เซอร์ที่หลากหลายได้ และคุณมีตัวเลือกมากขึ้น ยังนำความยากลำบากมาสู่การใช้งานอีกด้วย สิ่งสำคัญคือต้องสำรวจให้มากขึ้นและทดลองให้มากขึ้น