แนะนำ: ASP Instance Tutorial: FileSystemObject Object ไฟล์ที่ระบุโดยวัตถุ FilesystemObject มีอยู่หรือไม่? ตัวอย่างนี้แสดงให้เห็นถึงวิธีการสร้างวัตถุ FileSystemObject ก่อนจากนั้นใช้วิธี FileeExists เพื่อตรวจสอบว่ามีไฟล์อยู่หรือไม่ รหัสของตัวอย่างนี้มีดังนี้: ต่อไปนี้เป็นเนื้อหาอ้างอิง: HTML Body %Set Fs = Server.createObject (Script.FilesYstemObject) ถ้า (fs.f
เกี่ยวกับปรากฏการณ์ของจำนวนลบในระหว่างการเพจชุดบันทึกฉันเชื่อว่าหลายคนพบปัญหานี้ บางครั้ง Baidu และ Google ยังไม่ได้รับการแก้ไข ให้ฉันสรุปตอนนี้
ตัวเลขเชิงลบส่วนใหญ่เกี่ยวข้องกับประเภทเคอร์เซอร์ (เพื่อความสะดวกของตัวอย่างสมมติว่ามีไฟล์ที่ conn.asp เชื่อมโยงฐานข้อมูลและรวมอยู่ด้วย) ตอนนี้ให้ตัวอย่างรหัสมีดังนี้:
-
SQL = SELECT * จากชื่อตารางที่มีเงื่อนไขตามเงื่อนไขโดย id desc 'คำสั่งซื้อตามเงื่อนไขที่นี่สามารถเขียนใหม่ได้ตามความต้องการของคุณ
ตั้งค่า rs = conn.execute (sql) '=== ให้ความสนใจกับประโยคนี้ ===
Rs.Pagesize = 10 '=== ตั้งค่าจำนวนระเบียนต่อหน้าเป็น 10 ===
Page = request.QueryString (หน้า)
ถ้าหน้า = แล้วหน้า = 1
ถ้าไม่ใช่ isnumeric (หน้า) แล้วหน้า = 1
หน้า = CLNG (หน้า)
ถ้าหน้า <1 แล้วหน้า = 1
ถ้าหน้า> rs.pagecount แล้ว page = vrs.pagecount
rs.absolutePage = หน้า
สลัว C
C = 1
ทำในขณะที่ไม่ใช่ rs.eof และ c <= rs.pagecount
'เนื้อหาเอาต์พุต
C = C+1
Rs.Movenext
วง
'สร้างลิงค์ไปยังหน้า
-
ตามรหัสด้านบนวัตถุ RecordSet ประกอบด้วยรหัสโดยตรง: Set Rs = Conn.execute (SQL) หลังจากใช้ประโยคนี้เคอร์เซอร์เริ่มต้นของวัตถุ RecordSet คือ 0 นั่นคือเคอร์เซอร์สามารถเลื่อนไปข้างหน้าเท่านั้นและประเภทการล็อคคือ 0 ซึ่งบ่งชี้ว่ามันถูกล็อคแบบอ่านอย่างเดียวและไม่สามารถอัปเดตวัตถุ RecordSet ได้
ดังนั้นหากมีจำนวนลบเกิดขึ้นระหว่างการเพจตรวจสอบว่าวัตถุชุดบันทึกถูกเขียนในรูปแบบข้างต้นหรือไม่และเขียนเป็น:
ตั้งค่า rs = server.createObject (adodb.recordset)
Rs.Open SQL, Conn, 1,3
ข้างต้นหมายความว่าเคอร์เซอร์คือ 1 ซึ่งสามารถก้าวไปข้างหน้าและข้างหลังได้ ประเภทล็อคคือ 3 ซึ่งสามารถอัปเดตหลายระเบียนในแบทช์
โดยทั่วไปจะไม่มีปัญหาตามวิธีการข้างต้น แต่สำหรับการประกันตามหลักการของการเพจชุดบันทึกมันคือการได้รับจำนวนบันทึกตามการอ่านบันทึกทั้งหมดดังนั้นก่อนอื่นให้เคอร์เซอร์เลื่อนไปรอบ ๆ และเพิ่มสองประโยคต่อไปนี้หลังจากระดับ Rs.pagesize = 10: 10: 10:
เคอร์เซอร์ Rs.Movelast 'ย้ายไปที่สุดท้าย
เคอร์เซอร์ Rs.MoveFirst 'เคลื่อนไปด้านหน้า
เป็นที่ทราบกันดีว่าหลักการการแบ่งหน้าของ Recordset คือการอ่านระเบียนในฐานข้อมูลทั้งหมดก่อนที่จะได้รับค่าของ Rs.RecordCount (บันทึกทั้งหมด) วิธีการปนเปื้อนนี้ค่อนข้างง่าย แต่มีข้อเสียร้ายแรง เมื่อมีบันทึกจำนวนมากในฐานข้อมูลตามหลักการการแบ่งหน้ามันจะครอบครองทรัพยากรของระบบจำนวนมากและสิ้นเปลืองมาก ขอแนะนำไม่ให้ใช้วิธีนี้ในการเขียนโปรแกรมจริง ตอนนี้ฉันจะให้ความคิดแก่คุณซึ่งสามารถทำการประมวลผล pagination ในคำสั่ง SQL Query และอ่านจำนวนเร็กคอร์ดคงที่ในแต่ละครั้งดังนี้:
เริ่มใช้ N Records จากบันทึก M ในตารางฐานข้อมูลและใช้คำหลักด้านบน: โปรดทราบว่าหากมีทั้งด้านบนและคำสั่งซื้อโดยในคำสั่ง SELECT คุณจะเลือกจากชุดผลลัพธ์ที่เรียงลำดับ:
เลือก *
จาก (เลือกด้านบน n *
จาก (เลือกด้านบน (M + N - 1) * จากลำดับชื่อตารางตามลำดับโดย id desc) t1) t2
สั่งซื้อโดย id desc
หากคุณใช้คำสั่ง SQL ข้างต้นเพื่อ paginate จะมีข้อผิดพลาดน้อยลงและสิ่งที่สำคัญที่สุดคือคุณมีประสิทธิภาพที่สูงขึ้น
แบ่งปัน: ASP Instance Tutorial: Form Collection หมายเหตุสำหรับคอลเลกชันแบบฟอร์ม: เนื่องจากการสอนอินสแตนซ์ ASP นี้เกี่ยวกับรหัสของแบบฟอร์มฉันจะไม่ถ่ายภาพหน้าจอเพื่อบันทึกปัญหา! ทุกคนทดสอบผลการดำเนินการของตัวอย่างด้วยตัวเอง! แอปพลิเคชันแบบง่ายของการรวบรวมแบบฟอร์มตัวอย่างนี้แสดงให้เห็นว่าคอลเลกชันฟอร์มสามารถดึงค่าจากแบบฟอร์มได้อย่างไร แบบฟอร์มนี้ใช้วิธีการโพสต์ซึ่งหมายความว่าข้อความที่ส่งไม่สามารถมองเห็นได้สำหรับผู้ใช้และสำหรับข้อความที่ส่ง