วันนี้เรามาพูดถึงคุณสมบัติของวัตถุ Recordset กันดีกว่า
1. คุณลักษณะ CursorType
AdOpenForwardOnly: เคอร์เซอร์ไปข้างหน้าเท่านั้น ค่าเริ่มต้น เช่นเดียวกับเคอร์เซอร์แบบคงที่ ยกเว้นว่าสามารถเลื่อนไปข้างหน้าผ่านเรคคอร์ดเท่านั้น ใช้เพื่อปรับปรุงประสิทธิภาพเมื่อจำเป็นต้องมีการเคลื่อนไหวทางเดียวในชุดระเบียนเท่านั้น (ตามชื่อที่แสดง เคอร์เซอร์นี้สามารถเลื่อนไปข้างหน้าเท่านั้น อย่างไรก็ตาม เนื่องจากฟังก์ชันการทำงานที่จำกัด จึงมีประสิทธิภาพมากเมื่อใช้กับทรัพยากรระบบ)
AdOpenKeyset: เคอร์เซอร์ชุดคีย์ แม้ว่าจะไม่สามารถเข้าถึงบันทึกที่ถูกลบโดยผู้ใช้รายอื่นจากชุดบันทึกของคุณ แต่เคอร์เซอร์ชุดคีย์จะคล้ายกับเคอร์เซอร์แบบไดนามิก ยกเว้นว่าบันทึกที่เพิ่มโดยผู้ใช้รายอื่นจะไม่สามารถดูได้ ข้อมูลที่เปลี่ยนแปลงโดยผู้ใช้รายอื่นยังคงสามารถเห็นได้ (เคอร์เซอร์ชุดคีย์ช่วยให้คุณเห็นการเปลี่ยนแปลงที่ทำโดยผู้ใช้รายอื่นตั้งแต่ถูกสร้างขึ้น แต่คุณไม่สามารถดูบันทึกที่เพิ่มหรือลบโดยผู้ใช้รายอื่น)
AdOpenDynamic: เคอร์เซอร์แบบไดนามิก สามารถดูการเพิ่มเติม การเปลี่ยนแปลง และการลบที่ทำโดยผู้ใช้รายอื่น อนุญาตให้ย้ายทุกประเภทภายในชุดระเบียน ยกเว้นการดำเนินการบุ๊กมาร์กที่ผู้ให้บริการไม่รองรับ (เคอร์เซอร์ประเภทนี้มีประสิทธิภาพและใช้ทรัพยากรระบบมากที่สุด เคอร์เซอร์แบบไดนามิกสามารถดูการเปลี่ยนแปลงทั้งหมดในคอลเลกชันบันทึกที่พวกเขาบันทึกไว้ ผู้ใช้ที่ใช้เคอร์เซอร์แบบไดนามิกสามารถดูการแก้ไข การเพิ่มเติม และการลบที่ทำโดยผู้ใช้รายอื่น หากผู้ให้บริการข้อมูลนั้น อนุญาตให้เคอร์เซอร์ประเภทนี้สนับสนุนการมองเห็นนี้โดยการดึงข้อมูลจากแหล่งข้อมูลในช่วงเวลาปกติจะต้องใช้ทรัพยากรจำนวนมากอย่างไม่ต้องสงสัย)
AdOpenStatic: เคอร์เซอร์แบบคงที่ สำเนาคงที่ของคอลเลกชันบันทึกที่สามารถใช้เพื่อค้นหาข้อมูลหรือสร้างรายงาน นอกจากนี้ การเพิ่มเติม การเปลี่ยนแปลง หรือการลบที่ทำโดยผู้ใช้รายอื่นจะไม่สามารถมองเห็นได้ (เคอร์เซอร์คลาสแบบคงที่เป็นเพียงสแน็ปช็อตของข้อมูล กล่าวคือ จะไม่สามารถมองเห็นการเปลี่ยนแปลงที่ทำกับชุดระเบียนโดยผู้ใช้รายอื่นนับตั้งแต่ถูกสร้างขึ้น ด้วยเคอร์เซอร์ประเภทนี้ คุณสามารถนำทางไปข้างหน้าและข้างหลังได้ เนื่องจากความเรียบง่าย ความต้องการทรัพยากรน้อยกว่าไดนามิก!)
หมายเหตุ: เมื่อเปิด RecordSet แล้ว คุณจะไม่สามารถเปลี่ยนคุณสมบัติ CursorType ได้ อย่างไรก็ตาม ถ้าคุณปิด RecordSet ก่อน เปลี่ยนคุณสมบัติ CursorType แล้วเปิด RecordSet อีกครั้ง คุณยังคงสามารถเปลี่ยนชนิดของเคอร์เซอร์ได้อย่างมีประสิทธิภาพ!
2. คุณลักษณะ LockType ในแอปพลิเคชันฐานข้อมูลใดๆ ที่สามารถแก้ไขได้โดยผู้ใช้หลายคนในเวลาเดียวกัน คุณต้องจัดการกับสถานการณ์ที่อาจเกิดขึ้นเมื่อมีผู้ใช้หลายคนทำงานในบันทึกเดียวกันในเวลาเดียวกัน เมื่อสิ่งนี้เกิดขึ้น ความสมบูรณ์ของข้อมูลจะถูกบุกรุก เนื่องจากผู้ใช้รายหนึ่งอาจเขียนทับการเปลี่ยนแปลงของผู้อื่นโดยไม่รู้ตัวเมื่อบันทึกการเปลี่ยนแปลงของตนเอง เมื่อถึงเวลานั้นคุณจะรู้สึกเหมือนไม่ได้ทำอะไรเลย เพื่อจัดการกับสถานการณ์นี้ ADO ช่วยให้คุณสามารถกำหนดชนิดของการควบคุมเหตุการณ์ที่เกิดขึ้นพร้อมกันได้เมื่อมีการอัปเดตวัตถุ RecordSet และวิธีการล็อกระเบียนโดยผู้ใช้ในขณะที่เขาหรือเธอกำลังแก้ไข สิ่งนี้ถูกกำหนดโดยแอตทริบิวต์ LockType คุณลักษณะนี้มีสี่ค่า:
adLockReadonly: ค่าเริ่มต้น อ่านอย่างเดียว ข้อมูลไม่สามารถเปลี่ยนแปลงได้ (นี่คือค่าเริ่มต้นของ RecordSet หากคุณตั้งค่าวิธีการล็อคเป็นค่านี้ คุณจะไม่สามารถอัปเดต Recordset ได้)
adLockPessimistic: การล็อกบันทึกแบบอนุรักษ์นิยม (รายการต่อรายการ) ผู้ให้บริการดำเนินการที่จำเป็นเพื่อให้แน่ใจว่าการแก้ไขเรคคอร์ดทำได้สำเร็จ โดยทั่วไปโดยการล็อคเรคคอร์ดในแหล่งข้อมูลทันทีเมื่อทำการแก้ไข (หากตั้งค่าเป็นการล็อคประเภทนี้ บันทึกจะถูกล็อคและสามารถเข้าถึงได้โดยผู้ใช้ที่แก้ไขระหว่างเวลาที่เริ่มต้นการแก้ไขและเมื่อส่งการอัปเดตบันทึกไปยังผู้ให้บริการข้อมูลเท่านั้น!)
adLockOptimistic: เปิดการล็อคบันทึก (บันทึกต่อบันทึก) ผู้ให้บริการใช้การล็อคแบบเปิด การล็อคบันทึกเฉพาะเมื่อมีการเรียกวิธีการอัพเดตเท่านั้น (บันทึกจะถูกล็อคเฉพาะในขณะที่ข้อมูลถูกส่งไปยังผู้ให้บริการข้อมูลเท่านั้น)
adlockBatchOptimistic: การอัปเดตแบตช์แบบเปิด ใช้สำหรับโหมดการอัพเดตเป็นชุดซึ่งตรงข้ามกับโหมดการอัพเดตทันที (ชุดระเบียนที่ตั้งค่าเป็นโหมดการล็อกประเภทนี้จะเรียกว่าโหมดการอัปเดตเป็นชุดของชุดระเบียน ซึ่งสามารถเร่งความเร็วในการอัปเดตชุดระเบียนเพื่อแก้ไขข้อมูลได้ แต่เนื่องจากมีการอัปเดตหลายระเบียนพร้อมกัน จึงจะยัง ทำให้ปัญหาที่เกี่ยวข้องกับการเข้าถึงพร้อมกันแย่ลง!)
3 คุณสมบัติ AbsolutePage
แอ็ตทริบิวต์ AbsolutePage กำหนดหมายเลขหน้าของเพจที่มีเรกคอร์ดปัจจุบัน ใช้แอททริบิวต์ PageSize เพื่อแบ่งออบเจ็กต์ Recordset ออกเป็นเพจลอจิคัล จำนวนเรกคอร์ดในแต่ละหน้าคือ PageSize (ยกเว้นว่าหน้าสุดท้ายอาจมีน้อยกว่า PageSize จำนวนบันทึก) จะต้องสังเกตที่นี่ว่าผู้ให้บริการข้อมูลบางรายไม่สนับสนุนคุณลักษณะนี้ ดังนั้นโปรดใช้ด้วยความระมัดระวัง
เช่นเดียวกับคุณสมบัติ AbsolutePosition คุณสมบัติ AbsolutePage จะเริ่มต้นด้วย 1 ถ้าระเบียนปัจจุบันเป็นแถวแรกของ Recordset AbsolutePage จะเป็น 1 คุณสามารถตั้งค่าคุณสมบัติ AbsolutePage เพื่อย้ายไปยังแถวแรกของเรคคอร์ดบนเพจที่ระบุได้
4. คุณลักษณะ AbsolutePosition หากคุณต้องการกำหนดตำแหน่งของตัวบ่งชี้ปัจจุบันในชุดระเบียน คุณสามารถใช้คุณลักษณะ AbsolutePosition ได้
ค่าของแอตทริบิวต์ AbsolutePosition คือตำแหน่งของตัวบ่งชี้ปัจจุบันที่สัมพันธ์กับการซื้อขายครั้งแรก เริ่มต้นจาก 1 นั่นคือ AbsolutePosition ของการซื้อขายครั้งแรกคือ 1
โปรดทราบว่าเมื่อเข้าถึง RecordSet ไม่มีการรับประกันว่า RecordSet จะปรากฏในลำดับเดียวกันทุกครั้ง
เมื่อต้องการเปิดใช้งาน AbsolutePosition คุณต้องตั้งค่าให้ใช้เคอร์เซอร์ไคลเอนต์ (ตัวชี้): rs.CursorLocation=3
5. แอตทริบิวต์ PageCount ใช้แอตทริบิวต์ PageCount เพื่อกำหนดจำนวน "เพจ" ของข้อมูลที่วัตถุชุดระเบียนรวมอยู่ "หน้า" ที่นี่คือชุดของบันทึกข้อมูลที่มีขนาดเท่ากับการตั้งค่าของคุณสมบัติ PageSize แม้ว่าจำนวนระเบียนในหน้าสุดท้ายจะน้อยกว่าค่าของ PageSize แต่หน้าสุดท้ายก็ถือเป็นหน้าของ จำนวนหน้า ต้องสังเกตว่าผู้ให้บริการข้อมูลบางรายไม่รองรับคุณลักษณะนี้
6. แอตทริบิวต์ PageSize
แอตทริบิวต์ PageSize เป็นกุญแจสำคัญในการกำหนดวิธีการแสดงเพจเมื่อ ADO เข้าถึงฐานข้อมูล คุณสามารถใช้เพื่อกำหนดจำนวนระเบียนที่ก่อตัวเป็น "เพจ" แบบลอจิคัล ตั้งค่าและสร้างขนาดเพจที่อนุญาตให้ย้ายไปยังเรกคอร์ดแรกของเพจโลจิคัลอื่นโดยใช้คุณสมบัติ AbsolutePage คุณสมบัติ PageSize สามารถตั้งค่าได้ตลอดเวลา
7. คุณลักษณะ RecordCount นี่เป็นคุณลักษณะที่ใช้กันทั่วไปและมีความสำคัญเช่นกัน เรามักใช้แอตทริบิวต์ RecordCount เพื่อค้นหาว่าวัตถุ Recordset มีกี่ระเบียน ใช้คุณสมบัติ RecordCount เพื่อกำหนดจำนวนระเบียนในวัตถุ Recordset คุณสมบัตินี้จะส่งกลับ –1 เมื่อ ADO ไม่สามารถระบุจำนวนระเบียนได้ หรือหากผู้ให้บริการหรือชนิดเคอร์เซอร์ไม่สนับสนุน RecordCount การอ่านคุณสมบัติ RecordCount บน Recordset ที่ปิดจะสร้างข้อผิดพลาด ประเภทเคอร์เซอร์ของวัตถุ Recordset ส่งผลต่อว่าสามารถกำหนดจำนวนระเบียนได้หรือไม่ คุณสมบัติ RecordCount ส่งคืน -1 สำหรับเคอร์เซอร์แบบส่งต่อเท่านั้น จำนวนจริงสำหรับเคอร์เซอร์แบบคงที่หรือชุดคีย์ และ -1 หรือจำนวนจริงสำหรับเคอร์เซอร์แบบไดนามิก ขึ้นอยู่กับแหล่งข้อมูล
8. คุณลักษณะ BOF และ EOF โดยปกติแล้วเราจะเขียนโค้ดในโปรแกรม ASP เพื่อตรวจสอบคุณลักษณะ BOF และ EOF เพื่อที่จะทราบตำแหน่งของ RecordSet ที่ระบุโดยตัวบ่งชี้ในปัจจุบัน การใช้คุณลักษณะ BOF และ EOF ทำให้เราสามารถทราบได้ว่า วัตถุชุดระเบียนประกอบด้วยระเบียนหรือทราบว่าแถวระเบียนที่ถูกย้ายเกินช่วงของวัตถุชุดระเบียนหรือไม่
ถ้าตำแหน่งของระเบียนปัจจุบันอยู่ก่อนแถวแรกของวัตถุชุดระเบียน คุณสมบัติ BOF จะส่งกลับค่าจริง มิฉะนั้นจะส่งกลับค่าเท็จ
หากตำแหน่งของเรกคอร์ดปัจจุบันอยู่หลังแถวสุดท้ายของออบเจ็กต์ Recordset คุณสมบัติ EOF จะส่งกลับค่าจริง มิฉะนั้นจะส่งกลับค่าเท็จ
(ทั้ง BOF และ EOF เป็น True ซึ่งบ่งชี้ว่าไม่มีระเบียนในชุดระเบียน)
9. คุณลักษณะ Filter ระบุเงื่อนไขการกรองสำหรับข้อมูลในชุดระเบียน ใช้คุณลักษณะ Filter เพื่อเลือกบล็อกระเบียนในวัตถุ Recordset ที่กรองแล้ว จะกลายเป็นเคอร์เซอร์ปัจจุบัน
ซึ่งจะส่งผลต่อคุณสมบัติอื่นๆ ตามค่าที่ส่งคืนของเคอร์เซอร์ปัจจุบัน เช่น AbsolutePosition, AbsolutePage, RecordCount และ PageCount เนื่องจากการตั้งค่าคุณสมบัติ Filter เป็นค่า
เฉพาะ
จะย้ายระเบียนปัจจุบันไปยังระเบียนแรกที่ตรงกับค่าใหม่
ฉันคิดว่าแอตทริบิวต์นี้ค่อนข้างมีประโยชน์ บางครั้ง หลังจากที่เราเปิด Recordset และทำการตัดสินใจบางอย่าง เราต้องการกรองระเบียน นั่นคือ ปรับคำสั่ง SQL ใหม่หรือไม่ ไม่ เราใช้แอตทริบิวต์ Filter เพื่อกรอง เป็นต้น
rs.open exec,conn,1,1
ถ้า .... แล้ว rs.filter="name='xxx'"
แทน
rs.open exec,conn,1,1
ถ้า...แล้ว
฿.ปิด
exec=exec&" โดยที่ชื่อ = 'xxx'"
rs.open exec,conn,1,1
สิ้นสุดถ้า
จริงๆ แล้ว Filter ต้องใช้ในหลายที่ครับ จะถูกกล่าวถึงในทักษะ ASP ในอนาคต คุณยังคิดเกี่ยวกับมันได้อีกด้วย
พรุ่งนี้เราจะพูดถึงวิธีการของวัตถุ Recordset ต่อไป