วันนี้เรามาพูดถึงวิธีการบางอย่างของวัตถุ Recordset
1. วิธีการ AddNew จะสร้างเรกคอร์ดใหม่ที่สามารถอัพเดตออบเจ็กต์ Recordset ได้
recordset.AddNew FieldList ค่า
ตัวเลือกรายการฟิลด์ ชื่อเดียว ชุดชื่อ หรือตำแหน่งลำดับของฟิลด์ในระเบียนใหม่
ค่าเป็นทางเลือก ค่าเดียวหรือชุดสำหรับเขตข้อมูลในระเบียนใหม่ หาก Fields เป็นอาร์เรย์ ค่าจะต้องเป็นอาร์เรย์ที่มีจำนวนสมาชิกเท่ากัน มิฉะนั้นจะเกิดข้อผิดพลาด ลำดับของชื่อฟิลด์จะต้องตรงกับลำดับของค่าฟิลด์ในแต่ละอาร์เรย์
เรามักจะ
rs.เพิ่มใหม่
฿("xx")=xx
฿("xx")=xx
อาร์เอสอัปเดต
โปรดทราบว่าในโหมดอัพเดตทันที (ผู้ให้บริการเขียนการเปลี่ยนแปลงไปยังแหล่งข้อมูลพื้นฐานทันทีเมื่อมีการเรียกใช้เมธอด Update) การเรียกเมธอด AddNew โดยไม่มีพารามิเตอร์จะตั้งค่าคุณสมบัติ EditMode เป็น adEditAdd ผู้ให้บริการแคชการเปลี่ยนแปลงค่าฟิลด์ในเครื่อง เรียกวิธีการอัปเดตเพื่อส่งผ่านระเบียนใหม่ไปยังฐานข้อมูล และรีเซ็ตคุณสมบัติ EditMode เป็น adEditNone หากพารามิเตอร์ Fields และ Values ถูกส่งผ่าน ADO จะส่งบันทึกใหม่ไปยังฐานข้อมูลทันที (โดยไม่เรียก Update) และค่าคุณสมบัติ EditMode จะไม่เปลี่ยนแปลง (adEditNone)
คุณอาจถามว่าอะไรคือความแตกต่างระหว่างการใช้วิธี AddNew ของ ADO ใน ASP และการใช้คำสั่ง "Insert into..." โดยตรง วิธีไหนดีกว่ากัน? คำตอบ: วิธีการ AddNew ของ ADO จะห่อหุ้มคำสั่ง "Insert into" เท่านั้น ดังนั้น เมื่อดำเนินการกับข้อมูลจำนวนมาก การใช้คำสั่ง SQL โดยตรงจะช่วยเพิ่มความเร็วในการเข้าถึงข้อมูลได้อย่างมาก เนื่องจากจะช่วยลด "เวลาการแปล"
2. วิธีการลบจะลบบันทึกปัจจุบันหรือกลุ่มบันทึก
recordset.Delete AffectRecords
AffectRecords ค่า AffectEnum กำหนดจำนวนของเรกคอร์ดที่ได้รับผลกระทบจากเมธอด Delete ค่านี้สามารถเป็นหนึ่งในค่าคงที่ต่อไปนี้
AdAffectCurrent ค่าเริ่มต้น ลบเฉพาะบันทึกปัจจุบัน
AdAffectGroup จะลบบันทึกที่ตรงตามการตั้งค่าคุณสมบัติตัวกรองปัจจุบัน หากต้องการใช้ตัวเลือกนี้ คุณสมบัติตัวกรองจะต้องตั้งค่าเป็นค่าคงที่ที่กำหนดไว้ล่วงหน้าที่ถูกต้องค่าใดค่าหนึ่ง
adAffectAll จะลบบันทึกทั้งหมด
adAffectAllChapters ลบบันทึกเซ็ตย่อยทั้งหมด
การใช้โหมดการอัปเดตทันทีจะทำให้เกิดการลบในฐานข้อมูลทันที มิฉะนั้นบันทึกจะถูกทำเครื่องหมายเพื่อลบออกจากแคช และการลบจริงจะเกิดขึ้นเมื่อมีการเรียกใช้วิธีการอัปเดต
3. วิธีการอัปเดตจะบันทึกการเปลี่ยนแปลงทั้งหมดที่ทำกับบันทึกปัจจุบันของวัตถุ Recordset
recordset.Update เขตข้อมูล ค่า
ช่องข้อมูลเป็นทางเลือก ประเภทตัวแปร แสดงถึงชื่อเดียว หรืออาร์เรย์ประเภทตัวแปร แสดงถึงชื่อและตำแหน่งหมายเลขซีเรียลของฟิลด์ (หนึ่งรายการขึ้นไป) ที่ต้องแก้ไข
ค่าเป็นทางเลือก ประเภทตัวแปรซึ่งแสดงถึงค่าเดียว หรืออาร์เรย์ประเภทตัวแปรซึ่งแสดงถึงค่าฟิลด์ (เดี่ยวหรือหลายค่า) ในบันทึกใหม่
หากคุณต้องการยกเลิกการเปลี่ยนแปลงใด ๆ ที่ทำกับบันทึกปัจจุบันหรือละทิ้งบันทึกที่เพิ่มใหม่ คุณต้องเรียกใช้เมธอด CancelUpdate
4. วิธีการยกเลิกการอัปเดต
ชุดระเบียน CancelUpdate
ใช้วิธีการ CancelUpdate เพื่อยกเลิกการเปลี่ยนแปลงใด ๆ ในระเบียนปัจจุบันหรือละทิ้งระเบียนที่เพิ่มใหม่ การเปลี่ยนแปลงระเบียนปัจจุบันหรือระเบียนใหม่ไม่สามารถยกเลิกได้หลังจากเรียกใช้วิธีการ Update แล้ว หากมีการเพิ่มระเบียนใหม่เมื่อมีการเรียกใช้วิธี CancelUpdate ระเบียนปัจจุบันก่อนที่จะเรียกใช้ AddNew จะกลายเป็นระเบียนปัจจุบันอีกครั้ง หากไม่มีการเปลี่ยนแปลงระเบียนปัจจุบันหรือมีการเพิ่มระเบียนใหม่ การเรียกเมธอด CancelUpdate จะทำให้เกิดข้อผิดพลาด
5. วิธีการค้นหาจะค้นหาชุดระเบียนเพื่อหาระเบียนที่ตรงตามเกณฑ์ที่ระบุ หากเป็นไปตามเกณฑ์ ตำแหน่งชุดระเบียนจะถูกตั้งค่าในระเบียนที่พบ มิฉะนั้น ตำแหน่งจะถูกตั้งค่าที่ส่วนท้ายของชุดระเบียน
ค้นหา (เกณฑ์, ข้ามแถว, ค้นหาทิศทาง, เริ่มต้น)
เกณฑ์ สตริงที่มีคำสั่งที่ระบุชื่อคอลัมน์ ตัวดำเนินการเปรียบเทียบ และค่าสำหรับการค้นหา
SkipRows ตัวเลือกที่เป็นค่าจำนวนเต็มยาว ซึ่งมีค่าเริ่มต้นเป็นศูนย์ ซึ่งระบุออฟเซ็ตของแถวปัจจุบันหรือเริ่มบุ๊กมาร์กเพื่อเริ่มการค้นหา
searchDirection Optional SearchDirectionEnum ที่ระบุว่าการค้นหาควรเริ่มต้นที่แถวปัจจุบันหรือแถวถัดไปที่ถูกต้อง ค่าของมันสามารถเป็น adSearchForward หรือ
adSearchBackward ไม่ว่าการค้นหาจะสิ้นสุดที่จุดเริ่มต้นหรือจุดสิ้นสุดของชุดระเบียนจะถูกกำหนดโดยค่า searchDirection
start ตัวเลือกเสริม บุ๊กมาร์กแบบต่างๆ ใช้เป็นตำแหน่งเริ่มต้นของการค้นหา
เกณฑ์ "ตัวดำเนินการเปรียบเทียบ" สามารถเป็น ">" (มากกว่า), "<" (น้อยกว่า), "=" (เท่ากับ), ">=" (มากกว่าหรือเท่ากับ), "<=" (น้อยกว่า หรือเท่ากับ), " <>"
(ไม่เท่ากับ) หรือ "like" (การจับคู่รูปแบบ) ค่าในเกณฑ์อาจเป็นสตริง หมายเลขทศนิยม หรือวันที่ ค่าสตริงคั่นด้วยเครื่องหมายคำพูดเดี่ยว (เช่น "state = 'WA'")
ค่าวันที่คั่นด้วย "#" (สัญลักษณ์ตัวเลข) (เช่น "start_date > #7/22/97#")
ควรสังเกตว่าการค้นหาไม่รองรับหลายฟิลด์ แต่สามารถทำได้โดยใช้ตัวกรอง ไม่อนุญาตให้ใช้ "name='abc'"AND "city='sh'"
6. วิธีการย้ายจะย้ายตำแหน่งของระเบียนปัจจุบันในวัตถุ Recordset
recordset.Move NumRecords เริ่มต้น
NumRecords นิพจน์จำนวนเต็มยาวที่มีลายเซ็นซึ่งระบุจำนวนระเบียนที่จะย้ายจากตำแหน่งระเบียนปัจจุบัน
เริ่มตัวเลือก สตริง หรือประเภทตัวแปร ที่ใช้ในการคำนวณบุ๊กมาร์ก ยังสามารถเป็นหนึ่งในค่าต่อไปนี้:
AdBookmark ค่าเริ่มต้นปัจจุบัน เริ่มจากบันทึกปัจจุบัน
AdBookmarkFirst เริ่มต้นด้วยบันทึกแรก
AdBookmarkLast เริ่มจากบันทึกล่าสุด
สิ่งที่ควรทราบคือ:
(1) หากพารามิเตอร์ NumRecords มากกว่าศูนย์ ตำแหน่งบันทึกปัจจุบันจะเลื่อนไปข้างหน้า (ไปยังจุดสิ้นสุดของชุดบันทึก) ถ้า NumRecords น้อยกว่าศูนย์ ตำแหน่งบันทึกปัจจุบันจะถูกย้ายไปข้างหลัง (ไปยังจุดเริ่มต้นของชุดระเบียน)
(2) การเรียกเมธอด Move จากวัตถุ Recordset ที่ว่างเปล่าจะสร้างข้อผิดพลาด
(3) หากการเรียก Move ย้ายตำแหน่งบันทึกปัจจุบันไปก่อนหน้าบันทึกแรก ADO จะวางบันทึกปัจจุบันก่อนบันทึกแรกของชุดบันทึก (BOF เป็น True) ความพยายามที่จะย้อนกลับเมื่อคุณสมบัติ BOF เป็น True อยู่แล้วจะทำให้เกิดข้อผิดพลาด ถ้าการเรียก Move ย้ายตำแหน่งบันทึกปัจจุบันหลังบันทึกส่วนท้าย ADO จะวางระเบียนปัจจุบันไว้หลังบันทึกส่วนท้ายของชุดระเบียน (EOF เป็น True) ความพยายามที่จะก้าวไปข้างหน้าเมื่อแอตทริบิวต์ EOF เป็น True อยู่แล้วจะทำให้เกิดข้อผิดพลาด
7. วิธีการ MoveFirst, MoveLast, MoveNext และ MovePrevious จะย้ายไปยังบันทึกแรก สุดท้าย ถัดไป หรือก่อนหน้าในวัตถุ Recordset ที่ระบุ และทำให้บันทึกเป็นบันทึกปัจจุบัน
ชุดระเบียน{MoveFirst |. MoveLast |.
สิ่งที่ควรทราบคือ:
(1) ใช้เมธอด MoveNext เพื่อย้ายระเบียนปัจจุบันไปข้างหน้าทีละระเบียน (ไปที่ด้านล่างของชุดระเบียน) ถ้าระเบียนสุดท้ายเป็นระเบียนปัจจุบันและเรียกใช้เมธอด MoveNext ADO จะตั้งค่าระเบียนปัจจุบันหลังระเบียนส่วนท้ายของชุดระเบียน (EOF เป็น True) ความพยายามที่จะก้าวไปข้างหน้าเมื่อแอตทริบิวต์ EOF เป็น True อยู่แล้วจะทำให้เกิดข้อผิดพลาด
(2) ใช้เมธอด MovePrevious เพื่อย้ายตำแหน่งบันทึกปัจจุบันไปข้างหลังหนึ่งระเบียน (ไปทางด้านบนของชุดระเบียน) วัตถุชุดระเบียนต้องสนับสนุนการเลื่อนเคอร์เซอร์แบบย้อนกลับ มิฉะนั้น การเรียกเมธอดจะสร้างข้อผิดพลาด ถ้าระเบียนแรกเป็นระเบียนปัจจุบันและเรียกใช้เมธอด MovePrevious ADO จะตั้งค่าระเบียนปัจจุบันก่อนระเบียนแรกของชุดระเบียน (BOF เป็น True) เมื่อแอตทริบิวต์ BOF เป็น True การย้อนกลับจะทำให้เกิดข้อผิดพลาด
8. วิธีการโคลนสร้างวัตถุชุดระเบียนที่ซ้ำกันซึ่งเหมือนกับวัตถุชุดระเบียนที่มีอยู่ ระบุหรือไม่ก็ได้ว่าเรพลิกาเป็นแบบอ่านอย่างเดียว
ตั้งค่า rstDuplicate = rstOriginal.Clone
ตัวแปรวัตถุ rstDuplicate ที่ระบุวัตถุ Recordset ที่ซ้ำกันที่ถูกสร้างขึ้น
ตัวแปรวัตถุ rstOriginal ระบุวัตถุ Recordset ที่จะคัดลอก
ใช้วิธี Clone เพื่อสร้างสำเนาหลายชุดของวัตถุ Recordset ซึ่งมีประโยชน์หากคุณต้องการเก็บบันทึกปัจจุบันหลายรายการไว้ในกลุ่มบันทึกที่กำหนด การใช้วิธี Clone มีประสิทธิภาพมากกว่าการสร้างและเปิดวัตถุ Recordset ใหม่ที่มีคำจำกัดความเดียวกันกับคำจำกัดความเริ่มต้น
กล่าวคือ
rs.open exec,conn,1,1
rs2.open ผู้บริหาร, conn,1,1
มันควรจะเขียนใหม่แบบนี้
rs.open exec,conn,1,1
rs2=rs.clone
ควรสังเกตว่า:
(1) บันทึกปัจจุบันของสำเนาที่สร้างขึ้นใหม่จะถูกตั้งค่าเป็นบันทึกแรก
(2) การปิดชุดระเบียนต้นฉบับไม่ได้ปิดสำเนา และการปิดสำเนาจะไม่ปิดชุดระเบียนต้นฉบับหรือสำเนาอื่นใด
9. วิธีการปิดจะปิดวัตถุที่เปิดอยู่และวัตถุที่เกี่ยวข้อง
วัตถุปิด
สิ่งที่ควรทราบคือ:
(1) ใช้วิธีการปิดเพื่อปิดวัตถุชุดระเบียนเพื่อนำออกใช้ทรัพยากรระบบที่เกี่ยวข้องทั้งหมด การปิดวัตถุจะไม่ลบออกจากหน่วยความจำ คุณสามารถเปลี่ยนการตั้งค่าคุณสมบัติและ
เปิดอีกครั้งในภายหลังได้ หากต้องการลบอ็อบเจ็กต์ออกจากหน่วยความจำโดยสมบูรณ์ ให้ตั้งค่าตัวแปรอ็อบเจ็กต์เป็น Nothing
(2) หากคุณกำลังแก้ไขในโหมดอัพเดตทันที การเรียกเมธอด Close จะทำให้เกิดข้อผิดพลาด และคุณควรเรียกเมธอด Update หรือ CancelUpdate ก่อน
10. วิธีการเปิด ทำไมเราถึงพูดคำนี้สุดท้าย? เนื่องจากวิธีการแอตทริบิวต์ก่อนหน้านี้ไม่ชัดเจน เราจะไม่เข้าใจพารามิเตอร์ CursorType
ชุดระเบียน Open Source, ActiveConnection, CursorType, LockType, Options
วัตถุชุดระเบียนสามารถเชื่อมต่อกับวัตถุคำสั่งผ่านคุณสมบัติแหล่งที่มา พารามิเตอร์ Source อาจเป็นชื่ออ็อบเจ็กต์ Command, คำสั่ง SQL, ชื่อตารางข้อมูลที่ระบุ หรือ Stored Procedure ถ้าละเว้นพารามิเตอร์นี้ ระบบจะใช้คุณสมบัติแหล่งที่มาของวัตถุชุดระเบียน
ActiveConnection
Recordset สามารถเชื่อมต่อกับวัตถุการเชื่อมต่อผ่านคุณสมบัติ ActiveConnection ActiveConnection ที่นี่อาจเป็นวัตถุการเชื่อมต่อหรือสตริงของพารามิเตอร์สตริงที่มีข้อมูลการเชื่อมต่อ
ฐานข้อมูล
(ConnectionString)CursorType
พารามิเตอร์ CursorType ของวิธีการ Open ของอ็อบเจ็กต์ Recordset บ่งชี้ว่าเคอร์เซอร์ประเภทใดที่ข้อมูลจะเริ่มต้นด้วย รวมถึง adOpenForwardOnly, adOpenKeyset, adOpenDynamic และ ad
OpenStatic ซึ่งมีคำอธิบายดังต่อไปนี้:
---------- ------- ----------------------------------------------- -----
คำอธิบายค่าคงที่คงที่
- -------------------------------------------- ---------- ----------
adOpenForwardOnly 0 ค่าเริ่มต้น เริ่มเคอร์เซอร์ที่สามารถเลื่อนไปข้างหน้าเท่านั้น (ไปข้างหน้าเท่านั้น)
adOpenKeyset 1 เริ่มเคอร์เซอร์ประเภทชุดคีย์
adOpenDynamic 2 เริ่มเคอร์เซอร์ประเภทไดนามิก
adOpenStatic 3 เริ่มเคอร์เซอร์ประเภทคงที่
-------------------------------------------------- -------------------------------------------------- -----------
ประเภทเคอร์เซอร์ด้านบนจะส่งผลโดยตรงต่อคุณสมบัติและวิธีการทั้งหมดของออบเจ็กต์ Recordset รายการต่อไปนี้จะอธิบายความแตกต่างระหว่างสิ่งเหล่านี้
คุณสมบัติชุดระเบียน adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic
AbsolutePage ไม่รองรับ ไม่รองรับ อ่านและเขียนได้ อ่านและเขียนได้
AbsolutePosition ไม่รองรับ ไม่รองรับ อ่านและเขียนได้ อ่านและเขียนได้
BOF อ่านอย่างเดียว อ่านอย่างเดียว อ่านอย่างเดียว
CursorType อ่าน-เขียน อ่าน-เขียน อ่าน-เขียน อ่าน-เขียน
EOF อ่านอย่างเดียว อ่าน -อย่างเดียว อ่านอย่างเดียว
ตัวกรอง อ่านและเขียน อ่านและเขียน อ่านและเขียน อ่านและเขียน
LockType อ่านและเขียน อ่านและเขียน อ่านและเขียน อ่านและเขียน
PageCount ไม่รองรับ ไม่รองรับ อ่านอย่างเดียว อ่านเท่านั้น
ขนาดหน้า อ่านและเขียน อ่านและเขียน อ่านและเขียน อ่าน เขียน
RecordCount ไม่รองรับ ไม่รองรับ อ่านอย่างเดียว อ่านอย่างเดียว
เพิ่มใหม่ รองรับ รองรับ รองรับ รองรับ
CancelBatch รองรับ รองรับ รองรับ รองรับ รองรับ CancelUpdate รองรับ
รองรับ
รองรับ รองรับ ปิด รองรับ รองรับ รองรับ รองรับ รองรับ
ลบ รองรับ รองรับ รองรับ รองรับ รองรับ รองรับ รองรับ รองรับ
ย้าย ไม่รองรับ รองรับ รองรับ รองรับ รองรับ
MoveFirst รองรับ รองรับ รองรับ รองรับ
MoveLastไม่รองรับ รองรับ
รองรับ รองรับMoveNext การสนับสนุน สนับสนุน สนับสนุน สนับสนุน สนับสนุน
MovePrevious ไม่สนับสนุน สนับสนุน สนับสนุน สนับสนุน
เปิด สนับสนุน สนับสนุน สนับสนุน สนับสนุน
อัปเดต สนับสนุน สนับสนุน สนับสนุน สนับสนุน
updatebatch สนับสนุน สนับสนุน สนับสนุน สนับสนุน
------ ---------------------- -------------------------------- ---------
พารามิเตอร์ LockType ของวิธีการเปิดของวัตถุ Recordset บ่งชี้ว่าชนิดล็อคจะถูกละเว้น ระบบจะใช้คุณสมบัติ LockType ของวัตถุ Recordset เป็นค่าเริ่มต้น พารามิเตอร์ LockType ประกอบด้วย adLockReadOnly, adLockPrssimistic, adLockOptimistic และ adLockBatchOptimistic ฯลฯ ซึ่งมีคำอธิบายดังนี้:
คำอธิบายค่าคงที่
--------------------------- ------ --------------------------------
adLockReadOnly 1 ค่าเริ่มต้น วัตถุ Recordset จะเริ่มต้นในการอ่าน -โหมดเท่านั้นและไม่สามารถเรียกใช้เมธอด AddNew, Update และ Delete
adLockPrssimistic 2 ได้ เมื่อมีการอัพเดตแหล่งข้อมูล ระบบจะล็อคการกระทำของผู้ใช้รายอื่นชั่วคราวเพื่อรักษาความสอดคล้องของข้อมูล
adLockOptimistic 3 เมื่อมีการอัพเดตแหล่งข้อมูล ระบบจะไม่ล็อคการกระทำของผู้ใช้รายอื่น และผู้ใช้รายอื่นสามารถเพิ่ม ลบ และแก้ไขข้อมูลได้
adLockBatchOptimistic 4 เมื่อมีการอัปเดตแหล่งข้อมูล ผู้ใช้รายอื่นจะต้องเปลี่ยนแอตทริบิวต์ CursorLocation เป็น adUdeClientBatch เพื่อเพิ่ม ลบ หรือแก้ไขข้อมูล
สิ่งที่ควรทราบคือ:
หากแหล่งข้อมูลไม่ส่งคืนเรกคอร์ด ผู้ให้บริการจะตั้งค่าทั้งคุณสมบัติ BOF และ EOF เป็น True และไม่ได้กำหนดตำแหน่งเรกคอร์ดปัจจุบัน หากประเภทเคอร์เซอร์อนุญาต ข้อมูลใหม่ยังคงสามารถเพิ่มลงในวัตถุ Recordset ที่ว่างเปล่าได้